Dokumentation mit MS Word: Syntax-Highlighting

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Jens, wir sind hier in einem Python-Forum ;) Bevor ich mich mit den Feinheiten der jeweiligen Textverarbeitung tagelang auseinandersetze, schreib ich mir ein Script das die Nummerierung erstellt. Dauert 2 Minuten ;) Das hast Du ja letztendlich auch gemacht, oder?

Gruß, mawe
BlackJack

JensP-Anfaenger hat geschrieben:sicher kann man in Word auch eine Zeilennummerierung einfügen,
wenn ich jedoch meinen Code in meine Diplomarbeitsdokumentation einfüge, möchte ich nicht das ganze Dokument durchnummerieren, sondern nur meinen Python-Code.
Wenn ich dann noch zwischen den Code-Zeilen dukumentieren will, wird die automatische Zeilennummerierung weitergeführt!
Meine Zeilennummerierung soll also nur dazu dienen, dass ich in meiner Doku mich auf die unterschiedlichen Zeilen beziehen kann!!!
Und das ist bestimmt weder in OpenOffice noch in Word oder anderen Textverarbeitungssoftwaren möglich!
Das ist in OpenOffice definitiv möglich. Man kann entscheiden welche Absätze numeriert werden und welche nicht. Und nur die Zeilen von numerierten Absätzen werden gezählt. Somit ist es problemlos möglich numerierten Quelltext durch nicht numerierte Dokumentation zu unterbrechen. Und man kann bei jedem numerierten Absatz auch sagen, dass die Numerierung wieder bei 1 anfangen soll, so dass man mehrere Programme/Module in einem Text dokumentieren kann.
JensP-Anfaenger
User
Beiträge: 23
Registriert: Montag 25. April 2005, 08:31
Wohnort: Schleswig-Holstein

Hallo,

ich habe meinen USB-Stick wiedergefunden, jetzt funktioniert die Komunikation zwischen Internet-PC und Arbeits-PC wieder!

Auf jeden Fall könnt ihr hier mein Skript zum Einfügen von Zeilennummerierungen beim *.rtf-File mal sehen:

Die Zeilennummern werden vierstellig dargestellt, also mit 'Nullen' aufgefüllt (funktioniert hier bis 9999 Zeilen).

Code: Alles auswählen

file = 'path to *.rtf-file'
filenew = 'new filename'
f=open(file,'r')
n=open(filenew,'w')
cacheold={}
cachenew={}
line=f.readline()
number=1

while line:
  if number%100==0:
    print 'line number'+str(number)
    
  if (number-1)<10:
    shownum='000'+str(number-1)
  elif (number-1)<100:
    shownum='00'+str(number-1)
  elif (number-1)<1000:
    shownum='0'+str(number-1)
  elif (number-1)<10000:
    shownum=str(number-1)

  cacheold[number]=str(line)
  cachenew[number]='\cf0 '+str(shownum)+'   '+str(line)
  number+=1
  line=f.readline()
  
n.write(cacheold[1])
for x in xrange (2,number-1):
  n.write(cachenew[x])
n.write(cacheold[number-1])

f.close()
n.close()
Also dies Skript ist eigentlich das, nach dem ich gesucht habe.
Damit ist mir dann letztlich egal, was Word oder OpenOffice können oder halt nicht!

Gruß!

Jens
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Jens!

Nana, was soll denn das sein? ;)

Code: Alles auswählen

filename = "blabla.py"
filenew = "new_blabla.py"
old = file(filename, "r")
new = file(filenew, "w")

for number, line in enumerate(old):
    new.write("%04i %s" % (number+1, line))
Geht auch, oder? :)

Gruß, mawe
JensP-Anfaenger
User
Beiträge: 23
Registriert: Montag 25. April 2005, 08:31
Wohnort: Schleswig-Holstein

Hallo mawe,

für ein *.py geht es sicher auch so, aber ich wollte doch gern die rtf-Formatierung erhalten und habe jetzt gleich die aus SciTE so exportiert!
Ich muss mein File aus SciTE als rtf exportieren und kann es mit meinem Skript umwandeln und in Word öffnen, bei deinem müsste ich doch mein Skript speichern, kein Tool drüber laufen lassen und dann das ganze wieder öffnen in SciTE, dann exportieren und jetzt erst mit Word öffnen! Also doch letztlich komplizierter, oder?!

Gruß

Jens
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Jens!

Code: Alles auswählen

new.write(old.readline())
lines = old.readlines()
for number in range(len(lines)-1):
    new.write("\cf0 %04i %s" % (number+1, lines[number]))
new.write(lines[-1])
Besser? Meine Kritik galt ja eigentlich dem if-elif-Konstrukt :)

Gruß, mawe
JensP-Anfaenger
User
Beiträge: 23
Registriert: Montag 25. April 2005, 08:31
Wohnort: Schleswig-Holstein

Hallo mave,

oh ja, das if-elif-... -Konstrukt ist bei dir wirklich schöner gelöst!
Danke für den Tip!

Gruß!

Jens
Antworten