PageRenderTime 61ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/doc/German/userguide-de/userguide-de.t2t

http://txt2tags.googlecode.com/
Unknown | 1863 lines | 1243 code | 620 blank | 0 comment | 0 complexity | 69056791580169b49ae3f04526d4a962 MD5 | raw file
Possible License(s): GPL-2.0, GPL-3.0, WTFPL
  1. Txt2tags Benutzerhandbuch
  2. Aurelio, %%mtime(%c)
  3. άbersetzung von Andreas Deininger
  4. %!target: html
  5. %!options: --toc --toc-level 2 --css-sugar
  6. %%!options: -o ../../../web/userguide/userguide.html
  7. % TRANSLATOR:
  8. % - Don't worry about the PDF cover page
  9. % - Don't worry about PDF at all, translate and check on HTML
  10. % - Don't worry about the images
  11. % TRANSLATOR uncomment the next line
  12. %%!options: -o benutzerhandbuch.html
  13. % TRANSLATOR uncomment the next line to use images on the same folder
  14. %!preproc: IMGPATH img-lowres
  15. % TRANSLATOR:
  16. % You can take new screenshots and make new images for the program
  17. % interface and "first conversion" section. Remember to send them
  18. % to the author!
  19. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  20. %%% activate those lines when converting to HTML for PDF generation
  21. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  22. %%% htmldoc does TOC
  23. %!options(html): --no-toc --no-css-sugar -o userguide-pdf.html
  24. %%% mask the 'nopdf' marks so they will not be removed
  25. %!preproc(html): ^%nopdf %yespdf
  26. %%% removing first header, htmldoc ignores all until next <H1> (cool!)
  27. %!postproc(html): '<H1>Txt2tags Benutzerhandbuch</H1>' ''
  28. %%% imagens are in the same dir
  29. %!preproc: IMGPATH .
  30. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  31. % normalizing common text
  32. %!preproc: CONFAREA Konfigurationsbereich
  33. %!preproc: HEADAREA Kopfbereich
  34. %!preproc: BODYAREA Textbereich
  35. %!preproc: MARKPROP **Eigenschaften:**
  36. %!preproc: MARKCONT **Enthδlt:**
  37. %!preproc: MARKDESC **Beschreibung:**
  38. %!preproc: MARKSYN **Syntax:**
  39. %!preproc: MARKDET **Details:**
  40. %!preproc: NOMARKS Markierungen werden NICHT ausgewertet
  41. %!preproc: NOMACRO Makros werden NICHT ausgewertet
  42. %!preproc: URLMARKUP http://txt2tags.org/markup.html
  43. % activate the areas disabled on the PDF version
  44. %!preproc(html): ^%nopdf ''
  45. % remove separator lines and strong lines
  46. %!preproc(html): '^ *--------*' ''
  47. %!preproc(html): '^ *========*' ''
  48. % highlight NEW topic on TOC
  49. %%!postproc(html): '(<LI>.*Makros beherrschen lernen</A>)$' '\1 <b>[NEU!]</b>'
  50. %%% Little clean up for less large tables
  51. %!postproc: /pessoal/sourceforge.net ''
  52. % border for all images
  53. %!postproc: '(<IMG [^>]*BORDER)="0"' '\1="1"'
  54. %%% Embedded CSS code (ugly not?)
  55. %
  56. %!postproc(html): ^<HEAD>$ '<HEAD>\n<STYLE TYPE="text/css">\n@#@'
  57. %!postproc(html): (@#@)$ 'body {background-color:#ddeeff; color:black; \n\1'
  58. %!postproc(html): (@#@)$ ' margin:3em; text-align:justify;} \n\1'
  59. %!postproc(html): (@#@)$ '#header {text-align:center;} \n\1'
  60. %!postproc(html): (@#@)$ '.toc {border:1px solid black;padding:9px;\n\1'
  61. %!postproc(html): (@#@)$ ' background-color:white;} \n\1'
  62. %!postproc(html): (@#@)$ '.toc li{list-style-type: none;} \n\1'
  63. %!postproc(html): (@#@)$ 'a {text-decoration:none;}\na:hover {color:red;}\n\1'
  64. %!postproc(html): (@#@)$ 'a:visited {color:purple;}\ndl {margin:1em;} \n\1'
  65. %!postproc(html): (@#@)$ '#body h1 {text-align:center; color:white; \n\1'
  66. %!postproc(html): (@#@)$ ' background-color:blue; padding:8px;} \n\1'
  67. %!postproc(html): (@#@)$ 'h2 {padding-top:20px;}\nhr {border-style:none;}\n\1'
  68. %!postproc(html): (@#@)$ 'code {background-color:lightblue;} \n\1'
  69. %!postproc(html): (@#@)$ 'blockquote {border:1px solid black;padding:9px;\n\1'
  70. %!postproc(html): (@#@)$ ' background-color:white;} \n\1'
  71. %!postproc(html): (@#@)$ 'table {border-style:solid; border-color:black;}\n\1'
  72. %!postproc(html): (@#@)$ 'th {background-color:lightblue; padding:.5em;} \n\1'
  73. %!postproc(html): (@#@)$ 'td {border-style:none; background-color:white;}\n\1'
  74. %!postproc(html): (@#@)$ 'pre {border-style:solid; border-width:1px 1px; \n\1'
  75. %!postproc(html): (@#@)$ ' background-color:lightblue; padding:8px; \n\1'
  76. %!postproc(html): (@#@)$ ' border-color:black;} \n\1'
  77. %!postproc(html): @#@$ </STYLE>
  78. % 26/Nov/2003: revised by anamimts
  79. % 26/Jun/2004: updated to v2, new embedded CSS
  80. % 17/Jul/2004: revised by anamimts
  81. % 01/Nov/2004: updated to v2.0 and 2.1, new chapters, PDF version
  82. % TODO Mastering Options [option-help], [option-css-sugar], ...
  83. ========================================================================
  84. %nopdf "Hallo! Hier kommt das txt2tags Benutzerhandbuch. Sie finden hier alle
  85. %nopdf Informationen zum Textkonvertierunsgwerkzeug txt2tags. Die neuste
  86. %nopdf Version ist stets erhδltlich bei http://txt2tags.org/userguide/.
  87. %nopdf Fόr ergδnzende Informationen besuchen sie bitte
  88. %nopdf [die txt2tags Webseite http://txt2tags.org]. Viel Spaί!"
  89. %nopdf
  90. %nopdf [Download PDF-Version http://txt2tags.org/userguide/benutzerhandbuch.pdf]
  91. ========================================================================
  92. %nopdf%**Dieses Benutzerhandbuch enthδlt:**
  93. %%toc
  94. ========================================================================
  95. = Teil I - Einfόhrung in txt2tags =[Einfuehrung]
  96. == Die ersten Fragen, die sich ihnen stellen ==[Erste-Fragen]
  97. Dieses Kapitel bietet einen άberblick όber txt2tags, in dem das Programm, dessen Zweck und dessen Mφglichkeiten vorgestellt werden
  98. ------------------------------------------------------------------------
  99. === Worum handelt es sich? ===
  100. Txt2tags ist ein Werkzeug zur Textformatierung und -konvertierung.
  101. Txt2tags konvertiert ein ASCII-Text Datei mit einigen wenigen Auszeichnungen zu jedem der unterstόtzten Ausgabeformate:
  102. - HTML Dokument
  103. - XHTML Dokument
  104. - SGML Dokument
  105. - LaTeX Dokument
  106. - UNIX man page
  107. - Magic Point Prδsentation
  108. - MoinMoin Seite
  109. - PageMaker 6.0 Dokument
  110. - ASCII-Text (keine Auszeichnungen)
  111. ------------------------------------------------------------------------
  112. === Wieso sollte ich txt2tags benutzen? ===
  113. txt2tags kann fόr sie sehr nόtzlich sein, wenn sie:
  114. - Dokumente in verschiedenen Formaten verφffentlichen mόssen
  115. - fόr das Update von Dokumenten in verschiedenen Formaten verantwortlich sind
  116. - technische Dokumentationen oder Handbόcher verfassen mόssen
  117. - nicht wissen, wie sie ein Dokument in einem bestimmten Format schreiben sollen
  118. - keinen speziellen Editor fόr ein bestimmtes Format besitzen
  119. - mit einem einfachen Texteditor ihre Dokumente aktualisieren wollen
  120. Die hauptsδchliche Motivation hinter all dem ist:
  121. - Sparen sie Zeit, schreiben sie **Inhalte** und vergessen Sie die **Formatierung**
  122. ------------------------------------------------------------------------
  123. === Was zeichnet txt2tags gegenόber δhnlichen Werkzeugen aus? ===
  124. Txt2tags wird sehr geradlinig erweitert, basierend auf grundlegenden Konzepten.
  125. Das sind die wichtigsten Merkmale:
  126. | //Quellcode gut lesbar// | Txt2tags Auszeichnungen sind sehr einfach und in natόrlicher Weise gehalten.
  127. | //Erzeugtes Dokument lesbar// | Ebenso wie der Quellcode ist auch das erzeugte Dokument gut lesbar, mit Einrόckungen und kurzen Zeilenlδngen.
  128. | //Konsistente Auszeichnungen// | Txt2tags Auszeichnungen sind sehr spezifisch, sie eignen sich fόr alle Arten von Dokumenten und kφnnen dennoch nicht mit den eigentlichen Inhalten des Dokuments verwechselt werden.
  129. | //Konsistente Regeln// | Ebenso einfach wie die Auszeichnungen selbst sind auch die Regeln, wie die Auszeichnungen miteinander verknόpft sind, es gibt keine "Ausnahmen" oder "Spezialfδlle".
  130. | //Einfache Strukturen// | Alle unterstόtzten Formatierungen sind **einfach**, ohne zusδtzlich Optionen oder sonstige komplizierte Schalter. Eine Auszeichnung ist lediglich eine Auszeichnung, ohne jegliche Optionen.
  131. | //Einfach zu erlernen// | Aufgrund der einfachen Auszeichnungen und da der Quellcode lesbar ist, weist txt2tags eine flache, benutzerfreundliche Lernkurve auf.
  132. | //Hόbsche Beispiele// | Die **Bespieldateien**, welche in dem Paket enthalten sind, geben reale Beispiele fόr einfache und auch komplexe Dokumente, die fόr und mit txt2tags geschrieben wurden.
  133. | //Wertvolle Werkzeuge// | Die **Syntax-Dateien**, welche in dem Paket enthalten sind (fόr die Editoren vim, emacs, nano and kate), unterstόtzen sie beim Verfassen fehlerfreier Dokumente.
  134. | //Drei Benutzerschnittstellen// | Es existieren eine sehr benutzerfreundliche **grafische Tk-Oberflδche**, eine **Webschnittstelle**, um das Programm im Inter- oder Intranet zu nutzen und eine **Kommandozeilen Version** des Programms fόr fortgeschrittene Benutzer sowie fόr das Skripting.
  135. | //Skripting// | άber den mδchtigen Kommandozeilen-Modus kφnnen erfahrene Benutzer bestimmte Aufgaben **automatisieren** sowie konvertierte Dateien **nachtrδglich verδndern**.
  136. | //Download und Aufruf / mehrere Plattformen// | Txt2tags ist ein einfaches **Python Skript**. Es braucht nicht kompiliert zu werden und benφtigt keine zusδtzlichen Module. Insofern lδuft es problemlos auf *NIX, Linux, Windows und Macintosh Computern.
  137. | //Regelmδίige Updates// | Das Programm hat eine aktive Mailingliste, όber die Benutzer Korrekturen und Verbesserungen vorschlagen kφnnen. Der Autor selbst nutzt das Programm ausgiebig sowohl beruflich als auch privat, insofern wird die Entwicklung nicht kurzfristig eingestellt werden.
  138. ------------------------------------------------------------------------
  139. === Muss ich fόr das Programm bezahlen? ===
  140. || Definitiv NEIN! |
  141. Es ist frei, GPL, Open Source, Public Domain,
  142. //<setzen sie hier ihr Lieblings-Schlagwort ein>//.
  143. Sie kφnnen das Programm kopieren, benutzen, verδndern, verkaufen und es sogar als das ihrige verφffentlichen. Fragen des Copyrights und der Softwarelizenzierung sind fόr den Autor von nachrangiger Bedeutung.
  144. ------------------------------------------------------------------------
  145. == Unterstόtzte Auszeichnungsstrukturen ==[Strukturen]
  146. Nachfolgend eine Aufzδhlung aller von txt2tags unterstόtzten Strukturen.
  147. - Kopfbereich (Titel des Dokuments, Name des Autors, Datum)
  148. - Abschnittstitel (nummeriert oder nicht nummeriert)
  149. - Absδtze
  150. - Schriftarten
  151. - fett
  152. - kursiv
  153. - unterstrichen
  154. - Schreibmaschinenschrift (fόr Originaltext)
  155. - Originaltext innerhalb eines Absatzes
  156. - einzelne Originaltext-Zeile
  157. - Originaltext-Bereich (mehrere Zeilen umfassend)
  158. - Bereich fόr ein Zitat
  159. - Verknόpfungen
  160. - URL/Internet Verknόpfungen
  161. - E-Mail Verknόpfungen
  162. - lokale Verknόpfungen
  163. - benannte Verknόpfungen
  164. - Listen
  165. - Aufzδhlungslisten
  166. - nummerierte Listen
  167. - Definitionslisten
  168. - horizontale Trennlinien
  169. - Bilder (ausgerichtet)
  170. - Tabellen (mit oder ohne Rahmen, ausgerichtet, όber mehrere Spalten hinweg)
  171. - Spezielle Auszeichnung fόr rohen Text (wird nicht geparst)
  172. - Spezielles Makro fόr das aktuelle Datum (mit flexibler Formatierung)
  173. - Kommentare (fόr Notizen, Aufgabenlisten, Fehlerbeschreibungen etc.)
  174. ------------------------------------------------------------------------
  175. == Unterstόtzte Ausgabeformate ==[Zielformate]
  176. : **HTML**
  177. Jeder weiί was HTML ist. (Hinweis: Internet)
  178. Txt2tags erzeugt standardkonforme HTML Dokumente, die ansprechend aussehen und deren Quelltext gut lesbar ist. Es nutzt KEIN Javascript, keine Frames und auch keine sonstigen όberflόssigen Formatierungstechniken, die fόr einfache, technische orientierte Dokumente auch gar nicht gebraucht werden. Falls gewόnscht, kann allerdings eine getrennte CSS-Datei genutzt werden. Txt2tags erzeugt Code konform zum "//HTML 4.0 Transitional//"-Standard.
  179. Seit Version 2.0 ist der von txt2tags erzeugte HTML-Code 100% standardkonform, dies kann mit dem [W3C-Validator http://validator.w3.org/] όberprόft werden.
  180. : **XHTML**
  181. Dies ist die neue HTML-Generation mit einem strikteren Regelwerk, so mόssen etwa alle Tags, die geφffnet wurden, auch wieder geschlossen werden. Dadurch kann der Code einfacher geparst und verstanden werden. Von Aufgabenzweck her gesehen kann es grob generalisierend auch als HTML angesehen werden. Txt2tags erzeugt Code konform zum "//XHTML 1.0 Transitional//"-Standard.
  182. Seit Version 2.0 ist der von txt2tags erzeugte XHTML-Code 100% standardkonform, dies kann mit dem [W3C-Validator http://validator.w3.org/] όberprόft werden.
  183. : **SGML**
  184. Dies ist ein verbreitetes Dokumentenformat fόr welches mit den [sgmltools http://www.sgmltools.org] mδchtige Anwendungen zur Konvertierung bereitstehen. Aus einer SGML-Datei kφnnen HTML-, PDF-, Postscript-, info, LaTeX, Lyx, RTF- sowie XML-Dokumente erzeugt werden. Die sgml2*-Werkzeuge erzeugen dabei automatisch Inhaltsverzeichnisse und kφnnen einzelnen Abschnitte auf getrennten Seiten anordnen (sgml2html).
  185. Txt2tags erzeugt SGML Dateien die vom Systemtyp her linuxdoc Quellen gleichen, diese sind dafόr geeignet, unmittelbar mit sgml2* Werkzeugen konvertiert zu werden, hierfόr werden keine zusδtzlichen Katalogdateien benφtigt und auch sonst sind keine weiteren Anforderungen seitens des SGML-Standards vonnφten.
  186. : **LATEX**
  187. Dieses im akademischem Bereich bevorzugte Dokumentenformat ist leistungsfδhiger als sie es zu trδumen wagen. Komplette Bόcher, komplizierte Formeln und jeder noch so komplexe Text kann in LaTeX verfasst werden. Aber seien sie darauf gefasst sich ihre Haare auszuraufen, wenn sie versuchen, die Auszeichnungen per Hand zu schreiben ...
  188. Txt2tags erzeugt kompilierfδhige LaTeX Quelldateien und όbernimmt dabei all die komplexen Maskierungsaufgaben und die sonstigen Ausnahmen. Sie als Autor mόssen sich nur noch um den Text selbst kόmmern.
  189. : **LOUT**
  190. Δhnlich leistungsstark wie LaTeX, aber mit einer einfacheren Syntax, welche ein "@"-Zeichen anstelle des "\"-Zeichens verwendet und in den meisten Fδllen ohne das Setzen von Klammern auskommt. Der Ansatz "Alles ist ein Objekt" macht die Auszeichnung sehr viel weniger komplex.
  191. Txt2tags erzeugt gebrauchsfertige Lout Dateien, welche mittels des "lout"-Kommandos zu Postscript- oder PDF-Dateien konvertiert werden kφnnen.
  192. : **MAN**
  193. UNIX man pages blieben όber all die Jahre bestehen. Dokumentenformate kommen und gehen, man pages bleiben im Gegensatz dazu in Gebrauch, sie sind nicht zu verdrδngen.
  194. Es gibt andere Werkzeuge um man Dokumente zu erzeugen, aber txt2tags hat
  195. einen entscheidenden Vorteil: ein einziger Quelltext, vielerlei Zielformate. So kφnnen die Inhalte der man-page genau so gut in eine HTML-Seite, eine Magic Point- Prδsentation, etc. konvertiert werden.
  196. : **MGP**
  197. [Magic Point http://www.mew.org/mgp] ist ein sehr praktisches Prδsentationswerkzeug (δhnlich Microsoft PowerPoint), die einzelnen Folien werden dabei mittels einer Auszeichnungssprache definiert. Auf diese Weise kφnnen komplexe Prδsentationen in einem Editor erzeugt werden (etwa mittels vi/emacs/notepad).
  198. Txt2tags erzeugt gebrauchsfertige .mgp Dateien, in denen bereits alle notwendigen Kopfzeilen fόr Schriften und fόr das generelle Erscheinungsbild definiert sind, Unterstόtzung fόr Akzente nach ISO-8859 inbegriffen.
  199. **BONUS 1:** von txt2tags erzeugte .mgp Dateien nutzen XFree86 Type1
  200. Schriftarten! Dies bedeutet, dass sie keine zusδtzlichen TrueType Schriftart-Dateien fόr ihre Prδsentation benφtigen.
  201. **BONUS 2:** die Farbdefinitionen fόr die Schriftarten sind so gewδhlt, dass selbst auf Systemen, auf denen nur eine geringe Farbtiefe zur Verfόgung steht (gestartet mit ``startx -- -bpp 8``), die Prδsentation dennoch ansprechend aussieht!
  202. Das Schlόsselprinzip: Konvertieren und benutzen. Keine aufwδndigen Anpassungen oder sonstigen Anforderungen sind vonnφten.
  203. : **MOIN**
  204. Sie wissen nicht was [MoinMoin http://moin.sourceforge.net] ist?
  205. Es ist ein [WikiWiki http://www.c2.com/cgi/wiki]!
  206. Die Moin Syntax ist nicht sonderlich adrett, insbesondere da stδndig
  207. ``{{{'''''Klammern und Hochzeichen'''''}}}``, hinzugefόgt werden mόssen. Auch hier bietet txt2tags mit seinen einfachen Auszeichnungen eine universelle Lφsung: ein Quelltext, vielerlei Zielformate.
  208. : **PM6**
  209. I wette sie wussten das noch nicht, aber tatsδchlich hat Adobe PageMaker 6.0 eine eigene Auszeichnungssprache! Schriftarten und -stile, Farbtabellen und die meisten anderen, όber Mausklick auswδhlbaren Eigenschaften sind in dieser Auszeichnungssprache verfόgbar. Der Import eines solchen Texts erfolgt όber den Menόpunkt "Import tagged text". Ein Hinweis am Rande: es handelt sich um ein <HTML "δhnliches"> Auszeichnungsformat.
  210. Txt2tags erzeugt all diese Auszeichnungen und definiert zusδtzlich einen umfangreichen, funktionierenden Kopfbereich, in dem Absatzformate und -formatierungen gesetzt werden. Dies ist dabei der aufwδndigere Teil. **ACHTUNG:** Keine Zeilenumbrόche! Jeder Abschnitt muss eine einzelne Zeile umfassen.
  211. Anmerkung des Autors:
  212. //Mein gesamtes, in portugiesisch verfasstes [Buch όber regulδre Ausdrόcke http://guia-er.sf.net]//
  213. //wurde im Editor VI geschrieben, mit txt2tags in das PageMaker-Format konvertiert und ging anschlieίend in//
  214. //Druck.//
  215. : **TXT**
  216. TXT ist Text. Der einzig wahre Formatierungs-Typ.
  217. Obwohl die txt2tags Auszeichnungen sehr intuitiv und unauffδllig sind, kφnnen sie entfernt werden, indem die Quelldatei in reinen ASCII-Text konvertiert wird.
  218. Titelzeilen sind dabei unterstrichen, und der Text ist mehr oder weniger der gleiche wie in der Quelltext-Datei.
  219. ------------------------------------------------------------------------
  220. == άbersicht όber die je nach Zielformaten unterstόtzten Strukturen ==[unterstuetzte-Strukturen]
  221. || Struktur | html | xhtml | sgml | tex | lout | man | mgp | moin | pm6 | txt |
  222. | Kopfzeile | J | J | J | J | J | J | J | N | N | J |
  223. | Abschnittstitel | J | J | J | J | J | J | J | J | J | J |
  224. | Absδtze | J | J | J | J | J | J | J | J | J | J |
  225. | fett | J | J | J | J | J | J | J | J | J | - |
  226. | kursiv | J | J | J | J | J | J | J | J | J | - |
  227. | unterstrichen | J | J | - | J | J | - | J | J | J | - |
  228. | Schreibmaschine | J | J | J | J | J | - | J | J | J | - |
  229. | Originaltextzeile | J | J | J | J | J | J | J | J | J | - |
  230. | Originaltextbereich | J | J | J | J | J | J | J | J | J | - |
  231. | Zitate | J | J | J | J | J | J | J | J | J | J |
  232. | Internet Verknόpfungen | J | J | J | - | - | - | - | J | - | - |
  233. | E-Mail Verknόpfung | J | J | J | - | - | - | - | J | - | - |
  234. | lokale Verknόpfungen | J | J | J | N | N | - | - | J | - | - |
  235. | benannte Verknόpfungen | J | J | J | - | - | - | - | J | - | - |
  236. | Aufzδhlungslisten | J | J | J | J | J | J | J | J | J | J |
  237. | Nummerierte Listen | J | J | J | J | J | J | J | J | J | J |
  238. | Definitionslisten | J | J | J | J | J | J | N | N | N | J |
  239. | Trennlinien | J | J | - | J | J | - | J | J | N | J |
  240. | Bilder | J | J | J | J | J | - | J | J | N | - |
  241. | Tabellen | J | J | J | J | N | J | N | J | N | N |
  242. || Extras | html | xhtml | sgml | tex | lout | man | mgp | moin | pm6 | txt |
  243. | Bilder ausrichten | J | J | N | N | J | - | J | N | N | - |
  244. | Tabellenzellen ausrichten | J | J | J | J | N | J | N | J | N | N |
  245. | mehrspaltige Zellen | J | J | N | N | N | N | N | N | N | N |
  246. || | Legende
  247. | **J** | //Unterstόtzt//
  248. | **N** | //Nicht unterstόtzt (eventuell in zukόnftigen Versionen)//
  249. | **-** | //Nicht unterstόtzt (in diesem Zielformat nicht mφglich)//
  250. % | **?** | //Nicht unterstόtzt (Ungewiss, ob eine Realisierung mφglich ist)//
  251. ------------------------------------------------------------------------
  252. == Die drei Benutzerschnittstellen: GUI, Web und die Kommandozeile ==[Schnittstellen]
  253. Da die unterschiedlichen Nutzergruppen verschiedene Bedόrfnisse haben und in verschiedenen Umgebungen arbeiten, ist txt2tags sehr flexibel bezόglich der Art und Weise, wie es aufgerufen werden kann.
  254. Es existieren drei Benutzerschnittstellen fόr das Programm, jede davon mit mit ihren eigenen Mφglichkeiten und jeweils fόr einen anderen Zweck gedacht.
  255. - **GUI**: in Tk verfasst, eine Fensteroberflδche zum Anklicken fόr txt2tags .
  256. - **Web**: in PHP verfasst, gestattet es den Benutzers txt2tags in einem Webbrowser ablaufen zu lassen,wodurch die clientseitige Installation von txt2tags όberflόssig wird.
  257. - **Kommandozeile**: in Python verfasst, ist dies das Herzstόck des Programms. Alle Optionen sind όber die Optionsschalter der Kommandozeile konfigurierbar.
  258. ------------------------------------------------------------------------
  259. === Graphische Tk Schnittstelle ===[GUI]
  260. Seit Version 1.0 steht eine hόbsche graphische Oberflδche zur Verfόgung, welche unter Linux, Windows, Mac und anderen Systeme lauffδhig ist.
  261. Das Programm erkennt automatisch, ob ihr System zur Anzeige der graphischen Schnittstelle fδhig ist, und startet diese, falls der Aufruf ohne jegliches Argument erfolgt. Der Aufruf der graphischen Schnittstelle kann auch όber den Aufruf mit der ``--gui``-Option erzwungen werden. Falls irgendwelche Ressourcen fehlen sollten, teilt das Programm ihnen dies mit.
  262. **Hinweis:** Das Tkinter-Modul ist zwingend erforderlich. Da dieses jedoch bereits standardmδίig in der Python-Distribution enthalten ist, besitzen sie es eventuell schon.
  263. Die Schnittstelle ist ziemlich einfach und intuitiv:
  264. [IMGPATH/gui.png]
  265. + Sie lokaliseren die Quelldatei auf ihrem Datentrδger und deren Optionen werden geladen.
  266. + Falls die Quelle dann noch leer sein sollte, mόssen sie eine auswδhlen.
  267. + Zusδtzlich gibt es noch Optionen, die sie gegebenenfalls auswδhlen kφnnen, wobei jedoch keine dieser Optionen zwingend benφtigt wird.
  268. + Zuletzt, drόcken Sie die Schaltflδche "Umwandlung starten!".
  269. Sehr praktisch kann es sein, die Option "//Ausgabe an Bildschirm leiten//" auszuwδhlen. Hierdurch kφnnen sie den erzeugten Code in einem separatem Fenster όberprόfen, dabei wird zunδchst noch keine Datei gespeichert. Wenn der erzeugte Code dann ihren Vorstellungen entspricht, kφnnen sie diese Option wieder abwδhlen und die Datei wird gespeichert.
  270. Die voreingestellten Farben der Schnittstelle kφnnen in der Datei ``~/.txt2tagsrc`` geδndert werden, zur Einstellung muss dabei der Parameter ``%!guicolors`` gesetzt werden. Ein Beispiel:
  271. ```
  272. % nutze benutzerdefinierte Farben fόr die graphische Schnittstelle
  273. % (Hintergrund1, Vordergrund1, Hintergrund2, Vordergrund2)
  274. %!guicolors: blue white brown yellow
  275. ```
  276. ------------------------------------------------------------------------
  277. === Webschnittstelle ===
  278. Die Webschnittstelle ist im Internet verfόgbar όber die Adresse
  279. http://txt2tags.org/online.php. Dort kφnnen sie dass Programm sofort austesten und nutzen, noch bevor sie es dann eventuell herunterladen.
  280. [IMGPATH/web.png]
  281. Sie kφnnen die Webschnittstelle auch in ihrem Intranet zur Verfόgung stellen, dadurch brauchen sie dann txt2tags nicht lokal auf allen Rechnern in ihrem Intranet installieren.
  282. ------------------------------------------------------------------------
  283. === Kommandozeile als Schnittstelle ===[Kommandozeile]
  284. Fόr erfahrene Kommandozeilenbenutzer sollte die Ausgabe von --help genόgen:
  285. ```
  286. Usage: txt2tags [OPTIONEN] [Quelldateiname.t2t ...]
  287. -t, --target Typ des Zieldokuments festlegen. Derzeit unterstόtzt:
  288. html, xhtml, sgml, tex, lout, man, mgp, moin, pm6, txt
  289. -i, --infile=DATEI DATEI als Quellcodedatei festlegen ('-' fόr STDIN)
  290. -o, --outfile=DATEI DATEI as the Ausgabedatei festlegen ('-' fόr STDOUT)
  291. -n, --enum-title Titelzeilen fortlaufend nummerieren (1, 1.1, 1.1.1, etc)
  292. -H, --no-headers unterdrόcke Kopfzeile, Titel und Fuίzeile
  293. --headers Kopf-, Fuί- und Titelzeilen anzeigen (Voreinstellung: EIN)
  294. --encoding Zeichensatz des Zieldokuments (utf-8, iso-8859-1, etc)
  295. --style=DATEI DATEI zur Definition des Dokumentenstils benutzen (δhnlich HTML CSS)
  296. --css-sugar CSS-freundliche Auszeichnungen fόr HTML and XHTML-Zieldokumente einfόgen
  297. --css-inside CSS-Stilinformationen innerhalb des HTML/XHTML Kopfbereichs einfόgen
  298. --mask-email E-Mail-Adressen verbergen. x@y.z wird umgewandelt in <x (a) y z>
  299. --toc Inhaltsverzeichnis hinzufόgen
  300. --toc-only lediglich das Inhaltsverzeichnis ausgeben
  301. --toc-level=N maximale Nummerierungstiefe im Inhaltsverzeichnis einstellen
  302. --rc benutzerdefinierte Einstellungsdatei ~/.txt2tagsrc laden (Voreinstellung: EIN)
  303. --gui Aufruf der graphischen Tk-Schnittstelle
  304. -q, --quiet stiller Modus, jegliche Ausgaben werden unterdrόckt (auίer Fehlermeldungen)
  305. -v, --verbose Statusmeldungen wδhrend der Konvertierung ausgeben
  306. -h, --help diese Hilfeinformation anzeigen und Programm beenden
  307. -V, --version Programmversion anzeigen und Programm beenden
  308. --dump-config alle gefundenen Konfigurationsquellen ausgeben
  309. Abschalten von einzelnen Optionen:
  310. --no-outfile, --no-infile, --no-style, --no-encoding, --no-headers
  311. --no-toc, --no-toc-only, --no-mask-email, --no-enum-title, --no-rc
  312. --no-css-sugar, --no-css-inside, --no-quiet
  313. Beispiel:
  314. txt2tags -t html --toc meineDatei.t2t
  315. Per Voreinstellung wird die Ausgabe der Konvertierung in der Datei 'meineDatei.<target>' gespeichert.
  316. Benutzen sie --outfile um den Namen der Ausgabedatei festzulegen.
  317. Wird als Eingabedatei '-' angeben, liest das Programm von STDIN.
  318. Wird als Eingabedatei '-' angegeben, erfolgt die Ausgabe nach STDOUT.
  319. ```
  320. ==== Beispiele ====
  321. Vorausgesetzt, sie haben eine Quelldatei ``Datei.t2t``, los geht's mit der Konvertierung!.
  322. | **Konvertierung nach HTML** | ``$ txt2tags -t html Datei.t2t``
  323. | **Das gleiche, mit Umleitung** | ``$ txt2tags -t html -o - Datei.t2t > Datei.html``
  324. | | .
  325. | **inkl. Inhaltsverzeichnis** | ``$ txt2tags -t html --toc Datei.t2t``
  326. | **und die Titel nummeriert** | ``$ txt2tags -t html --toc --enum-title Datei.t2t``
  327. | | .
  328. | **kurze Inhaltsόbersicht** | ``$ txt2tags --toc-only Datei.t2t``
  329. | **diese dann noch nummeriert?** | ``$ txt2tags --toc-only --enum-title Datei.t2t``
  330. | | .
  331. | **Einzeiler gelesen von STDIN** | ``$ echo -e "\n**bold**" | txt2tags -t html --no-headers -``
  332. | **Test der E-Mail Maskierung** | ``$ echo -e "\njohn.wayne@farwest.com" | txt2tags -t txt --mask-email --no-headers -``
  333. | **Nachbearbeitung mittels sed** | ``$ txt2tags -t html -o- Datei.t2t | sed "s/<BODY .*/<BODY BGCOLOR=green>/" > datei.html``
  334. : //Anmerkung//
  335. Seit Version 1.6 kann mit Hilfe der ``%!preproc`` and ``%!postproc`` Konfigurationsfilter eine Vor- und Nachbearbeitung vorgenommen werden.
  336. ========================================================================
  337. = Teil II - Ok, I mφchte das Programm. Wie geht's weiter? =[Installation]
  338. Laden sie das Programm einfach herunter und installieren sie es auf ihrem Rechner.
  339. == Herunterladen & Installieren von Python ==[download-python]
  340. Zunδchst mόssen sie den Python-Interpreter herunterladen und auf Ihrem System installieren. Sollte Python bereits installiert sein, όberspringen sie diesen Schritt.
  341. Python ist eine der tollsten Programmiersprachen die derzeit verfόgbar sind, und ist fόr
  342. Windows, Linux, UNIX, Macintosh, und andere Systeme verfόgbar. Sie kφnnen es sich von der [Python Webseite http://www.python.org]. herunterladen. Auf derselben Seite finden sie auch Hinweise zur Installation. Txt2tags lδuft mit Python ab der Version 1.5 (oder neuer).
  343. Falls sie sich nicht sicher sind, ob auf ihrem System Python installiert ist, φffnen sie eine Konsole (tty, xterm, MSDOS) und geben sie am Kommandoprompt ``python`` ein. Falls Python nicht installiert sein sollte, wird sie ihre System darauf aufmerksam machen.
  344. == Download von txt2tags ==[Download-txt2tags]
  345. Der offizielle Ort fόr die txt2tags-Distribution ist die Website des Programms, aufrufbar via http://txt2tags.org/src.
  346. Alle zum Programm gehφrigen Dateien finden sich in einem tarball (.tgz Datei), die Dateien kφnnen mit den meisten gebrδuchlichen Pack-Programmen (einschlieίlich Winzip) aus dem tarball entpackt werden
  347. Besorgen sie sich stets die **neueste** Version (wobei die neuste Version stets auch die hφchste Versionsnummer aufweist).
  348. Die frόheren Versionen verbleiben lediglich zu Dokumentationszwecken auf der Seite.
  349. == Installation von txt2tags ==[Installation-txt2tags]
  350. Da es sich bei txt2tags um ein gewφhnliches Python-Skript handelt, muss txt2tags nicht gesondert installiert werden.
  351. Die einzige Datei, die sie brauchen, um das Programm zu nutzen ist, das txt2tags-Skript selbst. Bei allen anderen Dateien in der Download-Archivdatei handelt es sich entweder um Dokumentationsdateien, Werkzeuge oder Beispieldateien.
  352. Die sicherste Art und Weise, txt2tags ablaufen zu lassen besteht darin, es όber den Python-Compiler aufzurufen:
  353. ``` Eingabeprompt$ python txt2tags
  354. Wenn sie txt2tags auf ihrem Rechner als einzeln aufrufbares Programm "installieren" wollen, kopieren (oder verknόpfen) sie das txt2tags-Skript in ein Verzeichnis, welches in der Umgebungsvariable PATH enthalten ist und stellen sie sicher, dass ihr System weiί, mit welchem Programm ihre Datei aufzurufen ist.
  355. : **UNIX/Linux**
  356. Markieren sie das Skript als ausfόhrbar (``chmod a+x txt2tags``) und kopieren sie das Programm in ein Verzeichnis, das Bestandteil ihrer Umgebungsvariable PATH ist (``cp txt2tags /usr/local/bin``)
  357. : **Windows**
  358. Benennen sie das Skript txt2tags nach txt2tags.py um
  359. (``ren txt2tags txt2tags.py``) und kopieren sie es in ein Verzeichnis, das Bestandteil ihrer Umgebungsvariable PATH ist
  360. (``copy txt2tags.py C:\WINNT``)
  361. Falls sie die graphische Benutzerschnittstelle des Programms nutzen wollen, kφnnen sie fόr das Programm anschlieίend ein Symbol auf ihrem Desktop anlegen.
  362. === Spezielle Pakete fόr Windows-Benutzer ===
  363. Fόr txt2tags sind auch zwei .EXE-Dateien verfόgbar, mit denen das Programm auf Windows-Rechnern mit nur wenigen Mausklicks installiert werden kann:
  364. - Das bloίe txt2tag-Skript fόr all diejenigen, die den Python-Interpreter bereits installiert haben
  365. - Die 'Stand-alone'-Version, welche keinen Python-Interpreter benφtigt (eine abgespeckte Python-Installationsdatei ist in diese Version integriert)
  366. Besuchen Sie bitte die //txt2tags-Windows// Webseite um diese Pakete herunterzuladen:
  367. http://txt2tags-win.sf.net
  368. == Installation von Dateien zum Hervorheben der Programmsyntax fόr Texteditoren ==[Editor-syntax]
  369. Txt2tags wird mit sehr nόtzlichen Dateien zum Hervorheben der Programmsyntax ausgeliefert, solche Dateien sind dabei fόr die folgenden Texteditoren verfόgbar:
  370. - Vim (www.vim.org)
  371. - Emacs (www.emacs.org)
  372. - Nano (www.nano-editor.org)
  373. - Kate (http://kate.kde.org)
  374. άber diese Dateien zum Hervorheben der Programmsyntax wird der Editor όber alle txt2tags-Regeln und Auszeichnungen informiert, dies unterstόtzt den Benutzer dabei, fehlerfreie Dokumente zu verfassen. Da die Auszeichnungen farbig hervorgehoben werden, sehen sie unmittelbar, ob sie die Auszeichnungsmarken in ihren Texten korrekt eingesetzt haben.
  375. | [IMGPATH/Kate.png] |
  376. | Beispieldatei, geφffnet im Editor Kate
  377. Fόr jeden Editor erfolgt die Installation dieser Dateien zum Hervorheben der Programmsyntax unterschiedlich, lesen sie vor der Installation bitte die Kopfzeilen der jeweiligen Syntax-Datei sowie die Dokumentation zu ihrem Editor.
  378. ========================================================================
  379. = Teil III - Verfassen und Konvertieren ihres ersten Dokuments =[Ihr-erstes-Dokument]
  380. == άberprόfung der Werkzeuge ==
  381. Um ihre erste Textumwandlung erfolgreich vornehmen zu kφnnen, brauchen sie drei Dinge: txt2tags, einen Texteditor und einen Webbrowser.
  382. + Stellen Sie sicher, dass txt2tags auf ihrem Rechner installiert und funktionsfδhig ist.
  383. - **Kommandozeilenschnittstelle:** Rufen Sie "txt2tags" auf der Kommandozeile auf, und sie sollten eine Meldung erhalten, die eine "Fehlende Eingabedatei" anmahnt. Falls der Aufruf von txt2tags fehlschlδgt, versuchen sie "python /Pfad/zu/txt2tags" oder auch "/Pfad/zu/Python
  384. /Pfad/zu/txt2tags" (falls Python nicht Bestandteil ihrer Umgebungsvariable PATH ist).
  385. - **Graphische Schnittstelle:** Klicken sie auf das Programmsymbol um die graphische Benutzerschnittstelle zu starten.
  386. + Starten sie einen Texteditor mit dem sie gut vertraut sind. Hierbei kann **jeder** Texteditor genutzt werden, angefangen vom guten alten vi όber MS-Word bis hin zum Texteditor aus der OpenOffice-Suite. Erstellen sie ein neues, leeres Dokument, das sie dann als ihr erstes txt2tags-Dokument verfassen.
  387. + Starten Sie den von ihnen bevorzugten Webbrowser, sie brauchen ihn, um das Resultat der Konvertierung des von ihnen verfassten Dokuments in eine HTML-Seite zu όberprόfen.
  388. ------------------------------------------------------------------------
  389. == Schreiben sie den Kopfbereich des Dokuments ==
  390. + Wechseln sie zu ihrem Texteditor und tippen sie auf der ersten Zeile den Titel ihres Dokuments: //Mein erstes Dokument//
  391. + Fόgen sie nun einen Untertitel hinzu, indem sie auf der zweiten Zeile den folgenden Text einfόgen:
  392. //Ein Test von txt2tags//
  393. + Anschlieίend kφnnen sie auf der dritten Zeile das Datum der Abfassung vermerken, wie etwa: //Freitag, 26. August 2005//
  394. Falls alles glatt gelaufen ist, sollten sie jetzt ein dreizeiliges Dokument mit folgendem Inhalt vor sich sehen:
  395. ```
  396. Mein erstes Dokument
  397. Ein Test von txt2tags
  398. Freitag, 26. August 2005
  399. ```
  400. Dies ist zwar nur ein kleiner Teil des gesamten Dokuments, wir kφnnen diesen Teil jedoch bereits konvertieren und anschlieίend die Ergebnisse όberprόfen.
  401. Speichern sie dazu das Dokument unter dem Namen ``Test.txt``. Merken sie sich dabei, in welchen Ordner sie die Datei abspeichern, sie benφtigen diese Information in Kόrze wieder.
  402. ------------------------------------------------------------------------
  403. == Die erste Umwandlung eines Dokuments - GUI Schnittstelle ==
  404. Falls sie txt2tags όber die Kommandozeilenschnittstelle bedienen wollen, όberspringen sie bitte diesen Schritt und befolgen sie die Anweisungen im nδchsten Abschnitt.
  405. Falls jedoch nach dem Aufruf von txt2tags die graphische Schnittstelle erscheint, folgen sie diesen Schritten:
  406. [IMGPATH/erste-Konvertierung.png]
  407. + Klicken sie auf die mit "Blδttern" beschriftete Schaltflδche und wδhlen sie das Dokument ``Test.txt``, welches sie soeben erstellt und gespeichert haben (sicher haben sie sich den Ordner gemerkt, in dem sie das Dokument abgespeichert haben!).
  408. + Zurόck am Ausgangsschirm wδhlen sie "HTML Seite" in der mit "Wδhlen Sie das Format des Zieldokuments" beschrifteten Auswahlbox.
  409. + Klicken sie auf die Schaltflδche "Wandlung starten!".
  410. [IMGPATH/erste-Konvertierung-fertig.png]
  411. Nun wird ein Fenster erscheinen, welches sie darόber informiert, dass die Datei erfolgreich konvertiert wurde.
  412. Beachten sie dabei, dass die erzeugte HTML-Seite in demselben Ordner gespeichert wurde wie die fόr die Konvertierung benutzte Quelldatei, die Datei weist dabei die Endung "html" auf.
  413. ------------------------------------------------------------------------
  414. == Die erste Umwandlung eines Dokuments - Kommandozeile ==
  415. Falls sie txt2tags όber die graphische Schnittstelle bedienen wollen, befolgen sie bitte nicht diesen Schritt sondern folgen sie den Anweisungen im vorherigen Abschnitt.
  416. Falls sie jedoch txt2tags όber die Kommandozeile bedienen wollen, wechseln sie in den Ordner, in welchen sich das von ihnen erstellte Dokument abgespeichert haben und tippen dort das folgende Kommando ein:
  417. ``` txt2tags --target html Test.txt
  418. Beachten sie dabei bitte, dass Leerzeichen zwischen den einzelnen Bestandteilen des Kommandos, nicht aber innerhalb des Textpassage "--target" erlaubt sind, da es sich bei letzterer um eine Option handelt. Dieser Option folgt der Text "html", hierόber wird dem Programm mitgeteilt, in welches Format ihre Quelldatei konvertiert werden soll. Der letzte Bestandteil des Kommandos schlieίlich ist der Dateiname des Quelldokuments.
  419. Nach vollendeter Konvertierung wird die resultierende Datei unter dem Namen ``Test.html`` abgespeichert, wobei das Programm die folgende Mitteilung ausgibt:
  420. "//txt2tags erzeugte Test.html//". Sollte das nicht der Fall sein, erscheint eine entsprechende Meldung, der sie entnehmen kφnnen, welcher Fehler sich bei der Eingabe des Kommandos auf der Kommandozeile eingeschlichen hat. Lesen sie solche Meldungen sorgfδltig durch!
  421. Hier folgt ein Beispiel dafόr, wie sich das Ganze am Bildschirm prδsentiert:
  422. ```
  423. prompt$ txt2tags --target html Test.txt
  424. txt2tags erzeugte Test.html
  425. prompt$
  426. ```
  427. ------------------------------------------------------------------------
  428. == άberprόfung des Resultats ==
  429. Φffnen sie die Datei ``Test.html`` in einem Webbrowser um zu όberprόfen, ob alles korrekt dargestellt wird.
  430. [IMGPATH/Ergebnis-erste-Konvertierung.png]
  431. Da ist das Resultat! Sie haben lediglich 3 kurze Textzeilen eingeben, und txt2tags hat den Rest erledigt und dabei sowohl den HTML-Kopfbereich (inklusive Dateiinformationen) erstellt als auch die Ausrichtung, Grφίe, Erscheinungsbild und Abstδnde fόr den Text adδquat festgelegt. Wie sie sehen kφnnen, erscheint der Titel ihres Texts auch in der Titelzeile des Browsers.
  432. || Sie schreiben den Text, txt2tags erledigt den Rest ;) |
  433. Hinweis: Sie kφnnen auf von txt2tags erzeugte Dokumente auch CSS-Stylesheets anwenden, dadurch kann das Erscheinungsbild der Seite 100%-ig von ihnen festgelegt werden.
  434. ------------------------------------------------------------------------
  435. == Verfassen des Dokuments ==
  436. Zurόck im Texteditor ist nun der nδchste Schritt die Eingabe der eigentlichen Inhalte des Dokuments. Sie kφnnen hierbei in Klartext schreiben, so wie sie das normalerweise beim Verfassen von E-Mail-Nachrichten auch tun. Sie werden sehen, dass txt2tags Abschnitte und Aufzδhlungen
  437. automatisch erkennt, sie mόssen sie gar nicht besonders auszeichnen.
  438. Und dann wieder: speichern sie ihr Dokument, wandeln es um und όberprόfen sie das Ergebnis.
  439. Das ist der Entwicklungszyklus eines Dokuments in txt2tags. Sie konzentrieren sich ganz auf die Inhalte des Dokuments und sind mit ihrem Dokument schneller fertig als wenn sie ein mit Funktionen όberladenes Textverarbeitungsprogramm benutzt hδtten. Keine Mausklicks, keine Menόs, Fenster oder sonstige Ablenkungen.
  440. Vergleichen sie doch einfach die folgenden Inhalte der Quelldatei ``Test.txt``, welche in Klartext verfasst wurde, mit der bei der Konvertierung erzeugten HTML-Seite:
  441. ```
  442. Mein erstes Dokument
  443. Ein Test von txt2tags
  444. Freitag, 26. August 2005
  445. Gut, probieren wir halt mal dieses sagenhafte txt2tags Werkzeug.
  446. Eigentlich weiί ich gar nicht was ich schreiben soll.
  447. Mmmmmm, I weiί was jetzt was ich tun werde:
  448. - Mich zuerst duschen
  449. - Dann eine Pizza essen
  450. - Mich schlafen legen
  451. ```
  452. [IMGPATH/Ergebnis-erste-Konvertierung-komplett.png]
  453. Sie kφnnen eine ganze Homepage erstellen, ohne auch nur das geringste Wissen όber HTML zu besitzen! Sie brauchen keinerlei Auszeichnungsmarken einfόgen. Und der Clou, dieselbe Quelldatei kann auch in jedes andere der von txt2tags unterstόtzten Formate umgewandelt werden.
  454. Neben dem Klartext versteht txt2tags einige ganz einfache Auszeichnungsmarken, welche sie nutzen kφnnen, falls sie eine andere Textformatierung oder -struktur benφtigen, wie etwa Fett- oder Kursivschrift, Titel, Bilder, Tabellen und anderes mehr. Hier zwei einfache Beispiele: ``**zeichnet fettgedruckte Passagen aus**`` und ``== kann fόr Titel genutzt werden ==``. Die Auszeichnungen lernen sie am besten mittels der [Demonstration von txt2tags Auszeichnungen http://txt2tags.org/markup.html].
  455. =======================================================================
  456. = Teil IV - Die Konzepte von txt2tags beherrschen lernen =[Konzepte]
  457. == Die Bereiche eines .t2t Dokuments ==[Bereiche]
  458. Mit txt2tags ausgezeichnete Dateien sind in drei Bereiche aufgeteilt. Jeder Bereich hat einen anderen Zweck und besitzt seine eigenen Regeln. Es handelt sich dabei um:
  459. : //HEADAREA//
  460. Dies ist der Platz fόr den Titel des Dokuments, zusδtzlich kφnnen hier die Autoren, die Version und der Zeitpunkt der Abfassung des Dokuments angegeben werden. (optional)
  461. : //CONFAREA//
  462. Dies ist der richtige Platz fόr im gesamten Dokument gόltige Einstellungen sowie fόr das Verhalten des Parsers beeinflussende Anweisungen. (optional)
  463. : //BODYAREA//
  464. Dies ist der Platz fόr den Inhalt des Dokuments. (wird benφtigt)
  465. Wie man aus der obigen Aufzδhlung ersehen kann, sind die ersten beiden Bereiche nicht zwingend erforderlich, insofern ist der //BODYAREA// der einzige Bereich, fόr den Text eingegeben werden muss.
  466. Die Abgrenzung der einzelnen Bereiche untereinander erfolgt nach speziellen Regeln, die wir im Detail im nδchsten Kapitel kennenlernen werden. Zunδchst wollen wir uns erstmal mit einer graphischen Darstellung der einzelnen Bereiche eines Dokuments zufrieden geben:
  467. ```
  468. _____________
  469. | |
  470. | KOPFBEREICH | 1. Zunδchst der Kopfbereich
  471. | |
  472. | KONFIG | 2. Anschlieίend die Einstellungen
  473. | |
  474. | TEXT | 3. Und schlieίlich der Text des Dokuments,
  475. | |
  476. | ... | der sich bis zum Ende erstreckt
  477. | ... |
  478. |___________ _|
  479. ```
  480. Hier bereits ein Kurzόberblick darόber, wie die einzelnen Bereiche definiert sind:
  481. | **Kopfbereich** | Die ersten drei Zeilen der Datei, oder eine Leerzeile als erste Zeile falls kein Kopfbereich erforderlich ist.
  482. | **CONFAREA** | Beginnt direkt im Anschluss an den Kopfbereich (zweite oder vierte Zeile) und endet mit Beginn des //Textkφrpers//.
  483. | **Textkφrper** | Die erste gόltige Textzeile (keine Kommentar- oder Parameterzeile) nach dem //HEADAREA//.
  484. === Komplettes Beispiel ===
  485. ```
  486. Der Titel meines tollen Dokuments
  487. Dr. Andreas Deininger
  488. Letzte Aktualisierung: %%mtime(%c)
  489. %! Target : html
  490. %! Style : fancy.css
  491. %! Encoding: iso-8859-1
  492. %! Options : --toc --enum-title
  493. Hallo! Dies ist mein Test-Dokument.
  494. Es endet bereits hier.
  495. ```
  496. ------------------------------------------------------------------------
  497. == HEADAREA ==[Kopfbereich]
  498. Positionierung:
  499. - Eindeutig festgelegte Position: Die **ersten 3 Zeilen** der Datei. Nicht mehr und nicht weniger
  500. - Eindeutig festgelegte Position: Die **erste Zeile** der Datei falls es sich dabei um eine Leerzeile handelt. Dies bedeutet dann, dass auf den Kopfbereich verzichtet wird.
  501. Der HEADAREA ist der einzige Bereich, dessen Position eindeutig anhand der Zeilennummern festgelegt ist: es handelt sich dabei um die ersten drei Zeilen der Quelldatei.
  502. Diese Zeilen kφnnen mit beliebigen Inhalten gefόllt werden, der Typ der Informationen ist nirgends statisch festgeschrieben.
  503. Dennoch wird sich fόr die meisten Dokumente ein Aufbau der HEADAREAs in der folgenden Art anbieten:
  504. - //1. Zeile//: Titel des Dokuments
  505. - //2. Zeile//: Name des Autors und/oder seine E-Mail-Adresse
  506. - //3. Zeile//: Version des Dokuments und/oder Zeitpunkt der Abfassung (hierfόr bietet sich das ``%%date``-Makro an)
  507. Denken sie daran, dass die ersten drei Zeilen des Quelldokuments zugleich auch die
  508. ersten drei Zeilen des Zieldokuments darstellen, welche abgesetzt und gegenόber dem Textkφrper stark hervorgehoben dargestellt werden (z. B. durch die Schriftgrφίe, Fettschrift). Falls das Dokument einen seitenorientierten Aufbau besitzt, wird der Kopfbereich alleinstehend zentriert auf der ersten Seite des Dokuments wiedergegeben.
  509. ==== Weniger (oder gar keine) Kopfzeilen ====
  510. Gelegentlich wird der Fall auftreten, dass der Autor des Dokuments weniger als drei Zeilen fόr den Kopfbereich benφtigt, etwa wenn er lediglich den Titel des Dokuments und/oder das Datum der Abfassung angeben mφchte.
  511. Lassen sie in solch einem Fall die zweite und/oder dritte Zeile ihres Dokuments einfach leer (Leerzeile) und es wird entsprechend auch kein Text im Kopf des Zieldokuments angegeben werden. Denken sie jedoch daran, dass diese Leerzeilen, auch wenn sie keinen Inhalt tragen, dennoch als ein Teil des Kopfbereich zδhlen, so dass der der Textkφrper des Dokuments nach wie vor frόhestens **nach** der dritten Zeile beginnen kann.
  512. Der Titel (die erste Zeile) ist das einzige Element im Kopfbereich des Dokuments, das zwingend angegeben werden muss. Falls sie die erste Zeile des Dokuments leer lassen und damit den Titel quasi auslassen, teilen sie txt2tags mit, dass das Dokument **keinen Kopfbereich** besitzt. Dies bedeutet dann zugleich, dass der //BODYAREA// direkt anschlieίend beginnen kann, in diesem speziellen Fall also bereits auf der zweiten Zeile des Dokuments.
  513. Der Verzicht auf die Angabe von Kopfzeilen ist besonders dann nόtzlich, wenn sie dem Dokument nach der Konvertierung eine eigene, von ihnen angepasst gestaltete Titelseite hinzufόgen mφchten. Gewφhnlich wird die Kommandozeilenoption ``--no-headers`` fόr diese Art der angepassten Dokumentgestaltung verwendet.
  514. ==== Auf den Punkt gebracht ====
  515. || In Kurzform: "Kopfzeilen sind lediglich durch ihre __Position__ definiert, nicht όber ihren Inhalt" |
  516. Platzieren sie beliebigen Text auf der ersten Zeile ihres Dokuments, und er wird auch im konvertierten Dokument auf der ersten Zeile erscheinen. Dasselbe gilt auch fόr die auf der zweiten und der dritten Dokumentenzeile platzierten Kopfzeilen.
  517. ------------------------------------------------------------------------
  518. == CONFAREA ==[config-area]
  519. Positionierung:
  520. - Beginnt direkt im Anschluss an den HEADAREA
  521. - Beginnt auf der **vierten Zeile** der Datei falls ein **Kopfbereich** angegeben wurde
  522. - Beginnt auf der **zweiten Zeile** der Datei falls **kein Kopfbereich** angegeben wurde
  523. - Endet mit dem Beginn des BODYAREAs
  524. - Ein Leerzeile, eine Kommentarzeile oder eine Zeile in der keine Einstellung festgelegt wird beendet automatisch den CONFAREA
  525. Der CONFAREA ist optional. Ein gewφhnlicher Benutzer kann viele txt2tags-Dateien verfassen ohne dass er όberhaupt weiί, dass ein CONFAREA existiert, ein erfahrener Benutzer aber wird dessen Mδchtigkeit und die όber seine Nutzung gebotene Flexibilitδt zu schδtzen wissen.
  526. Der CONFAREA kann dazu genutzt werden, dokumentenspezifische Einstellungen zu speichern, so dass diese bei der Konvertierung des Dokuments nicht jedesmal όber die Kommandozeile explizit als Kommandozeilenoptionen mit angegeben werden mόssen. Auf diese Art und Weise kφnnen zum Beispiel das Zielformat fόr die Konvertierung sowie die Kodierung der Datei festgelegt werden.
  527. Fόr weitergehende Informationen zu diesem Thema lesen sie bitte den Abschnitt [Einstellungen #Einstellungen-Ueberblick] .
  528. ----------------------------------------------------------------
  529. == BODYAREA ==[body-area]
  530. Positionierung:
  531. - Beginnt mit der ersten gόltigen Textzeile innerhalb der Datei
  532. - Zeilen innerhalb des Kopfbereichs, Zeilen welche Einstellungen enthalten sowie Kommentarzeilen sind **keine** gόltigen Textzeilen
  533. - Endet zugleich mit dem Ende der Datei (EOF)
  534. Jeglicher Text auίerhalb des Kopfbereichs und des CONFAREAs zδhlt zum BODYAREA.
  535. Der Textkφrper enthδlt die Inhalte des Dokuments sowie alle Auszeichnungen und -strukturen, welche von txt2tags erkannt werden. Innerhalb des Textkφrpers kφnnen auch Kommentare, etwa fόr //Aufgabenlisten (TODOs)// oder fόr sonstige, nur fόr den Verfasser bestimmte Notizen niedergeschrieben werden.
  536. Sie kφnnen die Kommandozeilenoption ``--no-headers`` benutzen, um nur den Textkφrper des Dokuments zu konvertieren, der Kopfbereich wird dann unterdrόckt. Dies ist nόtzlich, wenn die Informationen des Kopfbereichs in einer separaten Datei hintergelegt sind, an diese Datei kann dann der konvertierte Textkφrper angehδngt werden.
  537. ----------------------------------------------------------------
  538. == Einstellungen ==[Einstellungen-Ueberblick]
  539. Einstellungen sind spezielle Konfigurationsangaben, όber welche das Ergebnis der Konvertierung beeinflusst werden kann. Solche Einstellungen mόssen im CONFAREA des Quelldokuments platziert werden. Ihre Syntax lautet:
  540. || %! Schlόsselwort : Wert |
  541. Liste aller gόltigen Schlόsselwφrter:
  542. || Schlόsselwort | Beschreibung |
  543. | Target | Definiert das Zielformat in welches das Dokument beim Fehlen von Kommandozeilenoptionen konvertiert wird.
  544. | Options | Definiert voreingestellt Optionen, welche bei der Konvertierung genutzt werden. Das Format ist dasselbe wie dasjenige von Kommandozeilenoptionen.
  545. | Style | Definiert das Aussehen des Dokuments. Damit kann einer HTML/XHTML-Datei eine CSS-Datei zugeordnet oder in einem LaTeX-Dokument ein Paket geladen werden.
  546. | Encoding | Definiert die Kodierung bzw. den Zeichensatz des Dokument. Findet immer dann Anwendung, wenn das Dokument Umlaute, mit Akzenten versehene Buchstaben oder andere nicht ASCII-Zeichen enthδlt.
  547. | PreProc | Eingabefilter. Definiert Regeln fόr das "Suchen und Ersetzen" welche auf das Quelldokument angewendet werden.
  548. | PostProc | Ausgabefilter. Definiert Regeln fόr das "Suchen und Ersetzen" welche auf das bereits konvertierte Dokument angewendet werden.
  549. Beispiel:
  550. ```
  551. %! Target : html
  552. %! Options : --toc --toc-level 3
  553. %! Style : fancy.css
  554. %! Encoding: iso-8859-1
  555. %! PreProc : "HPM" "Hans-Peter Mόller"
  556. %! PostProc: '<BODY.*?>' '<BODY bgcolor="yellow">'
  557. ```
  558. -----------------------------------------------------------------------
  559. == Kommandozeilenoptionen ==[Options]
  560. Der schnellste Weg, das in txt2tags vordefinierte Verhalten abzuδndern besteht darin, die verfόgbaren Kommandozeilenoptionen zu nutzen. Diese Optionen sind dabei allerdings nur dann verfόgbar, wenn txt2tags auf der Kommandozeile aufgerufen wird, nicht aber wenn die graphische Schnittstelle oder die Webschnittstelle benutzt wird.
  561. Wie andere Systemwerkzeuge auch, akzeptiert das Programm eine Reihe von vordefinierten Optionen. Eine Option wird angegeben entweder όber einen Trennstrich gefolgt von einem Buchstaben oder όber zwei Trennstriche gefolgt von einem oder mehreren Wφrtern, Beispiele hierfόr sind ``-t`` bzw. ``--target``. Und da wir schon bei der Option target sind: dies ist die einzige Option, deren Angabe zwingend erforderlich ist, alle anderen sind optional.
  562. Zu den am hδufigsten genutzen Optionen zδhlen ``--outfile``, όber welche der Name der Ausgabedatei bestimmt werden kann, ``--toc``, welche die automatische Erzeugung eines Inhaltsverzeichnisses bewirkt und ``--encoding``, όber welche die Kodierung bzw. der Zeichensatz des Dokuments bestimmt werden kann. Die meisten Optionen kφnnen abgeschaltet werden, indem ihrem Name die Zeichenkette "no-" vorangestellt wird, zum Beispiel: ``--no-encoding`` and ``--no-toc``.
  563. Alternativ kφnnen sie die von ihnen gewόnschten Optionen fόr eine bestimmte Quelldatei auch innerhalb des CONFAREAs dieser Datei angeben, hierzu mόssen sie dort die ``%!options``-Einstellungen nutzen. Bei diesem Vorgehen brauchen sie dann die Optionen nicht nochmals auf der Kommandozeile eingeben.
  564. Beispiel: ``%!options: --toc -o MeinDokument.html``. Eine Ausnahme stellt die Angabe des Zielformats dar, bei der Einstellung dieses Parameters innerhalb der Quelldatei kommt eine andere Zeichenkette zum Einsatz: ``%!target: html``.
  565. Verwenden sie die Option ``--help``, um eine komplette Liste aller in txt2tags verfόgbaren Optionen angezeigt zu bekommen.
  566. -----------------------------------------------------------------------
  567. == Benutzerdefinierte Konfigurationsdatei (RC-Datei) ==[rc]
  568. Die benutzerdefinierte Konfigurationsdatei (auch rc-Datei genannt, abgeleitet von __r__esource __c__ontrol) dient als zentraler Ort zur Speicherung von Einstellungen, die bei ALLEN Konvertierungen Berόcksichtigung finden. Anstelle dieselben Einstellungen in jeder von ihnen verfassten .t2t-Datei wiederholen, schreiben sie diese einfach einmal in ihre benutzerdefinierte Konfigurationsdatei. Die dort notierten Einstellungen werden dann zukόnftig bei jeder Konvertierung angewandt, egal ob sie mit txt2tags bereits bestehende oder neu erstellte Quelldateien bearbeiten.
  569. Abhδngig vom verwendeten Betriebssystem sind sowohl fόr den Dateinamen als auch fόr das Verzeichnis, in welchem die benutzerdefinierte Konfigurationsdatei abgespeichert wird, unterschiedliche Werte zu wδhlen. Alternativ kann der Speicherort dieser Datei vom Benutzer auch όber eine Umgebungsvariable deklariert werden.
  570. || | Speicherort fόr die RC Datei |
  571. | Windows: | ``%HOMEPATH%\_t2trc``
  572. | Linux und andere: | ``$HOME/.txt2tagsrc``
  573. | benutzerdefiniert: | Umgebungsvariable ``T2TCONFIG``
  574. Das Format der Einstellungen ist dabei identisch mit denjenigen, welche sie bereits zur Angabe von Einstellungen innerhalb des CONFAREAs von .t2t-Dateien kennengelernt haben. Ein Beispiel fόr eine solche benutzerdefinierte Konfigurationsdatei findet sich im txt2tags-Tarball im Verzeichnis ``doc/txt2tagsrc``.
  575. Beispiel:
  576. ```
  577. % Meine Konfigurationsparameter
  578. %%% HTML-Tags stets CSS-freundlich auszeichnen
  579. %!options(html): --css-sugar
  580. %%% Voreingestellte Nummerierungstiefe fόr Inhaltsverzeichnisse anpassen (fόr alle Zielformate)
  581. %!options: --toc-level 4
  582. %%% ISO-8859-1 als Standardkodierung von txt2tags-Dokumenten festlegen
  583. %!options: --encoding iso-8859-1
  584. ```
  585. Jede nicht leere Zeile, die keinen Kommentar und auch keine gόltige Einstellungsoptionen enthδlt, fόhrt zur Ausgabe einer Fehlermeldung, wenn txt2tags aufgerufen wird. Seien sie insofern bitte vorsichtig, wenn sie diese Datei bearbeiten.
  586. Txt2tags wendet beim Konvertierungsvorgang fόr jegliche Quelldateien automatisch die Inhalte der benutzerdefinierten Konfigurationsdatei an. Um bei der Konvertierung einer einzelnen Datei dieses Verhalten auίer Kraft zu setzen, existiert die Kommandozeilenoption ``--no-rc``.
  587. == Konfigurationsquellen und die Reihenfolge ihrer Anwendung ==[Konfigurationsquellen]
  588. Es existieren drei Mφglichkeiten, txt2tags darόber zu informieren, welche Optionen und Einstellungen bei der Konvertierung Berόcksichtigung finden sollen. Diese werden in der folgenden Reihenfolge gelesen und angewandt:
  589. + Einstellungen, welche in der benutzerdefinierten Konfigurationsdatei vorgenommen wurden (RC)
  590. + Einstellungen im CONFAREA des Quelldokuments
  591. + Kommandozeilenoptionen
  592. Txt2tags liest zunδchst die benutzerdefinierte Konfigurationsdatei ein (sofern vorhanden) und wendet die dort gefundenen Einstellungen auf das Quelldokument an.
  593. Danach wird der CONFAREA der Quelldatei nach dort getδtigten Einstellungen durchsucht. Falls dort solche Einstellungen gefunden werden, werden diese ebenfalls angewandt, wobei ggf. bereits in der benutzerdefinierten Konfigurationsdatei gemachte Einstellungen όberschrieben werden. Schlieίlich finden auch noch die auf der Kommandozeile angegebenen Einstellungsparameter Anwendung, wobei diesen Einstellungen nochmals hφhere Prioritδt eingerδumt wird.
  594. Wurde also etwa die Kodierung fόr das Quelldokument in allen drei Konfigurationsquellen definiert, so wird der an der Kommandozeile fόr die Dokumentenkodierung angegebene Wert benutzt werden.
  595. -----------------------------------------------------------------------
  596. == Das %!include Kommando ==[include]
  597. Das ``include``-Kommando kann dazu genutzt werden, die Inhalte einer externen Datei in den Textbereich des Quelldokuments einzufόgen. Es handelt sich hierbei nicht um eine Konfigurationseinstellung sondern um ein Kommando, welches nur innerhalb des BODYAREAs des Dokuments gόltig ist.
  598. Mit Hilfe des ``include``-Kommandos kann ein groίes Dokument in mehrere kleinere Teildokumente (etwa als Kapitel innerhalb eines Buchs) aufgeteilt werden, oder aber es kann der gesamte Inhalt einer externen Datei in das Quelldokument eingefόgt werden. Ein Beispiel:
  599. ```
  600. Mein erstes Buch
  601. Dr. Andreas Deininger
  602. Erste Auflage
  603. %!include: Einleitung.t2t
  604. %!include: Kapitel1.t2t
  605. %!include: Kapitel2.t2t
  606. ...
  607. %!include: Kapitel9.t2t
  608. %!include: Nachwort.t2t
  609. ```
  610. An die ``%!include``-Zeichenkette wird einfach der Dateiname der einzufόgenden Datei angehδngt. Die (optionale) explizite Beschrδnkung der Einfόgeaktion auf ein spezifisches Ausgabeformat wird ebenfalls unterstόtzt, so dass auch dieses Kommando gόltig ist:
  611. ``` %!include(html): Datei.t2t
  612. Beachten sie, dass όber die include-Anweisung der BODYAREA einer Datei in das Quelldokument eingefόgt wird. Sowohl Kopf- als auch CONFAREA der einzufόgenden Datei werden ignoriert. Dadurch kφnnen sie die eingefόgte Datei sowohl alleinstehend als auch im Gesamtzusammenhang des Hauptdokuments konvertieren.
  613. Zusδtzlich gibt es noch drei weitere Arten, Dokumente zu integrieren:
  614. - Einfόgung als Originaltext
  615. - Einfόgung als Rohtext
  616. - Einfόgung als Auszeichnungen enthaltender Text
  617. Wird die externe Datei als **Originaltext** eingefόgt, so bleibt die Originalformatierung (incl. Abstδnde der Zeichen untereinander) erhalten, genauso, wie wenn der Text innerhalb von txt2tags als Originaltextbereich ausgezeichnet worden wδre (mittels ```). Mφchten sie den Text auf diese Art und Weise einfόgen, umschlieίen sie die externe Textdatei mit zwei einfachen, rόckwδrts geneigten Hochzeichen:
  618. ``` %!include: ``/etc/fstab``
  619. Wird die externe Datei als **Rohtext** eingefόgt, so wird die Textdatei gleichsam unbesehen eingefόgt, das heiίt, der Text wird nicht auf spezifische txt2tags-Auszeichnungen untersucht (geparst), genauso, wie wenn der Text innerhalb von txt2tags als Rohtextbereich ausgezeichnet worden wδre (mittels """). Mφchten sie den Text auf diese Art und Weise einfόgen, umschlieίen sie die externe Textdatei mit zwei geraden hochgestellten Anfόhrungszeichen:
  620. ``` %!include: ""Klasse_Text.txt""
  621. Und schlieίlich gibt es noch die Mφglichkeit Text als **Auszeichnungen enthaltenden Text** einzufόgen, der Inhalt des einzufόgenden Dokuments wird dabei direkt in das resultierende Dokument durchgereicht, dabei wird der Text weder auf spezifische txt2tags-Auszeichnungen hin untersucht (geparst) noch werden irgendwelche Ersetzungen vorgenommen. Somit kφnnen zusδtzliche in txt2tags oder anderweitiger Syntax ausgezeichnete Textteile zu ihrem Dokument hinzugefόgt werden. Als nόtzlich kann sich das etwa erweisen wenn sie Informationen im Kopf-oder Fuίbereich hinzufόgen wollen oder falls sie Text mit einer komplizierten Syntax einfόgen wollen, welche nicht von txt2tags unterstόtzt wird:
  622. ``` %!include(html): ''Fussbereich.html''
  623. Beachten Sie, dass der Dateiname mit zwei einfachen geraden Hochzeichen umschlossen ist. Da der Text bereits geparst ist, mόssen sie explizit das Zielformat angeben, um Fehler zu vermeiden (hier: html).
  624. -----------------------------------------------------------------------
  625. == Das %!includeconf Kommando ==[includeconf]
  626. Das ``includeconf``-Kommando dient dazu, Konfigurationen, welche in einer externen Datei definiert wurden, in das aktuelle Dokument mit aufzunehmen. Dieses Kommando ist nur innerhalb des CONFAREAs des Quelldokuments gόltig.
  627. Dieses Kommando ist etwa dann nόtzlich, wenn dieselben Konfigurationseinstellungen von mehreren Dateien geteilt werden sollen, sie kφnnen die Konfigurationsoptionen gleichsam zentralisieren. Bei jeder Datei, innerhalb welcher diese zentral abgelegten Konfigurationseinstellungen Anwendung finden sollen, ist dann innerhalb des CONFAREAs ``includeconf`` aufzurufen. Ein Beispiel:
  628. ```
  629. Mein erstes Dokument
  630. Andreas Deininger
  631. September, 2005
  632. %!includeconf: config.t2t
  633. Hallo, dies ist mein erstes Dokument.
  634. ```
  635. Das Format fόr Einstellungen innerhalb der externen Konfigurationsdatei ist dasselbe wie dasjenige das bei [benutzerdefinierten Konfigurationsdateien #rc] Anwendung findet.
  636. =======================================================================
  637. = Teil V - Auszeichnungen beherrschen lernen =[Auszeichnungen]
  638. άbersicht όber alle txt2tags Auszeichnungen:
  639. || Grundlegende Auszeichnungen | ``...............`` | Schriftstile | ``...............`` |
  640. | //Kopfbereich// | Erste 3 Zeilen | //Fett// | ""**Wφrter**""
  641. | //Titel// | = Wφrter = | //Kursiv// | ""//Wφrter//""
  642. | //Nummerierte Titel// | + Wφrter + | //Unterstrichen// | ""__Wφrter__""
  643. | //Abschnitt// | Wφrter | //Schreibmaschine// | ""``Wφrter``""
  644. || Text Blocks | ``...............`` | Andere | ``...............`` |
  645. | //Zitat// | <TAB>Wφrter | //Trennlinie// | ------------...
  646. | //Aufzδhlung// | - Wφrter | //Dicke Linie// | ============...
  647. | //Nummerierte Aufzδhlung// | + Wφrter | //Verknόpfungen// | ""[Angabe URL]""
  648. | //Definitionsliste// | : Wφrter | //Bild// | ""[Bilddatei.jpg]""
  649. | //Originaltextzeile// | ``` Wφrter | //Kommentar// | % Kommentare
  650. | //Originaltextbereich// | ""```\n Zeilen \n```"" | //Rohtext// | """"Wφrter""""
  651. | //Rohtextzeile// | """"""" Wφrter | //Tabelle// | ""| Zelle 1 | Zelle 2 | Zelle 3...""
  652. | //Rohtextbereich// | """""""\n Zeilen \n""""""" | //Anker// | = Marke =[Anker]
  653. Allgemeine Regeln:
  654. - Die ersten drei Zeilen eines Dokuments zδhlen als **Kopfzeilen**, etwaige Auszeichnungen werden nicht ausgewertet.
  655. - Der Text einer **Titelzeile** wird von "=" oder "+"-Zeichen umschlossen. Je mehr Zeichen, umso tiefer wird der Titel eingruppiert.
  656. - Bei **Schriftstilen** sind keine Leerzeichen zwischen den Markierungszeichen und dem Inhalt erlaubt.
  657. - Das **Kommentarzeichen** "%" muss ganz am Anfang der Zeile (in deren erster Spalte) stehen.
  658. - Die Dateinamen von **Bildern** mόssen die Endung GIF, JPG, PNG (oder δhnlich) aufweisen.
  659. - Die einzigen **mehrere Zeilen** umfassenden **Markierungen** sind Originaltext- und Rohtextbereiche.
  660. - Auszeichnungen innerhalb von Originaltext- oder Rohtextbereichen werden **nicht** interpretiert.
  661. - **(Dicke) Trennlininen** mόssen mindestens 20 Zeichen umfassen.
  662. - Die **Nummerierungstiefe** von Zitaten und Aufzδhlungen wird όber deren Einrόckung definiert.
  663. - Die **Titelzeile einer Tabelle** wird όber zwei || am Beginn der Zeile gekennzeichnet.
  664. ------------------------------------------------------------------------
  665. %- MARKPROP Mehrzeilig, Leerzeichen, Ausrichtung, Verschachtelt
  666. %- MARKCONT Makros, Schriftstile, Zitate, Aufzδhlungen, Tabellen, Originaltext, Rohtext, Trennlinien, Verknόpfungen, Bilder, Kommentare
  667. %-----------------------------------------------------------------------
  668. == Kopfzeilen ==[Auszeichnung-Kopfzeile]
  669. - MARKDESC Zeichnet den Kopfbereich des Dokuments aus
  670. - MARKPROP Mehrzeilig, Leerzeichen, !Ausrichtung, !Verschachtelt
  671. - MARKCONT Makros
  672. - MARKSYN
  673. - Die ersten 3 Zeilen der Quelldatei.
  674. - Falls sie gar keinen Kopfbereich angeben mφchten, lassen sie die erste Zeile des Quelldokuments leer.
  675. Passend fόr Einzeiler auf der Komandozeile oder bei selbstdefiniertem Kopfbereich.
  676. - Lassen sie die zweite und dritte Zeile des Quelldokuments leer, falls sie diese Teile des Kopfbereichs weglassen mφchten.
  677. - MARKDET
  678. - NOMARKS
  679. - Die ersten drei Zeilen des Quelldokuments sind auch die ersten drei Zeilen im Zieldokument, wobei diese Zeichenketten stark vom sich anschlieίenden Textkφrper abgehoben werden und ggf. sogar alleine auf einer separaten Titelseite platziert werden (falls das Zielformat dies zulδsst).
  680. - Generell kφnnen beliebige Inhalte fόr den Kopfbereich gewδhlt werden, auf den einzelnen Zeilen wird wird keine spezifische, statisch festgelegte Information benφtigt. Fόr die meisten Dokumente wird sich dennoch folgendes anbieten:
  681. - Zeile 1: Titel des Dokuments
  682. - Zeile 2: Name des Autor und/oder dessen E-Mail Adresse
  683. - Zeile 3: Erstellungsdatum und/oder Version des Dokuments (der richtige Platz fόr ""%%mtime"")
  684. ------------------------------------------------------------------------
  685. == Titelzeilen, Nummerierte Titelzeilen ==[Auszeichnung-Titel]
  686. - MARKDESC Zeichnet Abschnittstitel aus (nummeriert oder nicht nummeriert)
  687. - MARKPROP Mehrzeilig, Leerzeichen, !Ausrichtung, !Verschachtelt
  688. - MARKCONT Rohtext
  689. - MARKSYN
  690. - Hinweis: Falls die Abschnittstitel nummeriert werden sollen, ersetzen sie bei all den im folgenden aufgefόhrten Regeln das Zeichen "=" durch "+"
  691. - Jeweils gleich viele Gleichheitszeichen vor und hinter dem Abschnittstitel, ``=wie hier in Abschnittstitel I=``
  692. - Je mehr Zeichen angeben werden, umso tiefer wird der Abschnitt eingeordnet: ``=Titel=``, ``==Untertitel==``,
  693. ``===Titel unterhalb eines Untertitels===``, ...
  694. - Bei der Untergliederung sind maximal 5 Ebenen mφglich, ``=====wie hier=====``
  695. - Sind vor und hinter dem Titel nicht gleich viele "=" oder "+"-Zeichen angegeben, handelt es sich nicht um einen Abschnittstitel, ``=wie hier===``
  696. - Innerhalb einer Auszeichnung sind beliebig viele Leerzeichen erlaubt, ``= wie hier =``
  697. - Abschnittstiteln kann ein Textanker hinzugefόgt werden ``=wie hier=[Anker]``. Um auf einen solchen Anker zu verweisen, definieren sie eine ``[lokale Verknόpfung #Anker]``
  698. - Der Name des Ankers darf ausschlieίlich Buchstaben und Zahlen sowie die Zeichen "-" und "_" enthalten (A-Za-z0-9_-). Sonderzeichen im Namen des Ankers sind **nicht** erlaubt.
  699. - MARKDET
  700. - NOMARKS
  701. - NOMACRO
  702. ------------------------------------------------------------------------
  703. == Abschnitt ==[Auszeichnung-Abschnitt]
  704. - MARKDESC Zeichnet einen Textabschnitt aus
  705. - MARKPROP Mehrzeilig, Leerzeichen, !Ausrichtung, !Verschachtelt
  706. - MARKCONT Makros, Schriftstile, Rohtext, Verknόpfungen, Bilder, Kommentare
  707. - MARKSYN
  708. - Abschnitte sind Gruppen von Zeilen, die durch Leerzeilen voneinander getrennt sind
  709. - Ein Abschnitt kann auch durch andere Blockauszeichnungen, wie durch das Ende einer Aufzδhlung, eines Zitates, einer Tabelle oder eines Originaltextbereichs beendet werden
  710. ------------------------------------------------------------------------
  711. == Kommentar ==[Auszeichnung-Kommentar]
  712. - MARKDESC Wird zur Auszeichnung von Text benutzt, der nicht im Zieldokument erscheinen soll
  713. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, !Verschachtelt
  714. - MARKCONT -
  715. - MARKSYN
  716. - Eine Kommentarzeile beginnt mit einem Prozentzeichen in der ersten Spalte, ``% wie hier``
  717. - KEINE vorangehenden Leerzeichen erlaubt
  718. - MARKDET
  719. - Als Kommentar ausgezeichneter Text taucht im umgewandelten Text nicht auf.
  720. - Keine Auszeichnung als Block mφglich, jede einzelne Kommentarzeile muss mit einem %-Zeichen beginnen
  721. - Nόtzlich zur Erinnerung an noch anstehende Aufgaben (TODO), zum Markieren von Fehlern oder fόr Anmerkungen, etwa von einem Herausgeber
  722. ------------------------------------------------------------------------
  723. == Fett, Kursiv, Unterstrichen ==[Auszeichnung-Schriftstil]
  724. - MARKDESC Wird genutzt um fetten/kursiven/unterstrichenen Text innerhalb eines Abschnitts, einer Tabelle, einer Aufzδhlung oder eines Zitats einzufόgen
  725. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, Verschachtelt
  726. - MARKCONT Makros, Schriftstile, Rohtext, Verknόpfungen, Bilder
  727. - MARKSYN
  728. - Zwei Sternchen umschlieίen fetten Text, ``**wie hier**``
  729. - Zwei Schrδgstriche umschlieίen kursiven Text, ``//wie hier//``
  730. - Zwei Unterstriche umschlieίen unterstrichenen Text, ``__wie hier__``
  731. - Zwischen den Auszeichnungen und den auszuzeichnenden Inhalten sind keine Leerzeichen erlaubt:
  732. ``** so etwas ** ist ungόltig``
  733. - MARKDET
  734. - innerhalb einer mit einem Schriftstil ausgezeichneten Textphrase sind keine Zeilenumbrόche erlaubt, die Textpassage ist auf einer einzelnen Zeile der Quelldatei zu platzieren
  735. - Makros innerhalb einer Schriftstil-Auszeichnung sind erlaubt: ``**%%date**``
  736. - Schriftstile kφnnen ineinander verschachtelt werden:
  737. ``""**__so__ //etwa//**""``
  738. ------------------------------------------------------------------------
  739. == Schreibmaschinenschrift ==[Auszeichnung-Schreibmaschine]
  740. - MARKDESC Fόgt Text in Schreibmaschinenschrift innerhalb eines Abschnittes, einer Tabelle, einer Aufzδhlung oder eines Zitats ein
  741. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, !Verschachtelt
  742. - MARKCONT -
  743. - MARKSYN
  744. - von zwei Hochzeichen umschlossen, ````wie hier zu sehen````
  745. - Die Hochzeichen mόssen direkt an den Inhalt anschlieίen (keine Leerzeichen erlaubt!):
  746. ```` So etwas `` ist ungόltig``
  747. - MARKDET
  748. - NOMARKS
  749. - NOMACRO
  750. - Der gesamte Text, der in Schreibmaschinenschrift gesetzt werden soll, muss sich auf einer einzigen Zeile befinden, es sind keine Zeilenumbrόche innerhalb der Textphrase erlaubt
  751. - In manchen Zielformaten bleiben die Abstδnde zwischen den Zeichen erhalten, in anderen werden aufeinanderfolgende Leerzeichen zu einem einzigen verschmolzen
  752. - Sie kφnnen den Text in Schreibmaschinenschrift auch fett auszeichnen, indem sie ihn in die entsprechenden Zeichen einschlieίen:
  753. ``""**``Schreibmaschine fett ``**""``. Dies ist genauso mit den anderen Schriftstilen mφglich:
  754. etwa ``""//``kursiv``//""`` und ``""__``unterstrichen``__""``.
  755. ---------------------------------------------------------------------
  756. == Originaltext-Zeile, Originaltext-Bereich ==[Auszeichnung-Originaltext]
  757. - MARKDESC Damit kann Programm-Code oder andersweitig formatierter Text eingefόgt werden, hierbei bleiben die Wortabstδnde und die Zeilenumbrόche erhalten, die Ausgabe erfolgt in Schreibmaschinenschrift
  758. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, !Verschachtelt
  759. - MARKCONT -
  760. - MARKSYN **Originaltext-Zeile:**
  761. - Eine Originaltext-Zeile beginnt mit drei aufeinanderfolgenden einfachen Anfόhrungszeichen, gefolgt von einem Leerzeichen, an welches sich der Originaltext anschlieίt, ``""```"" etwa so``
  762. - Die einfachen Anfόhrungszeichen mόssen sich direkt am Zeilenanfang befinden, es sind keine vorangehenden Leerzeichen erlaubt
  763. - MARKSYN **Originaltext-Bereich:**
  764. - Eine Zeile mit genau drei aufeinanderfolgenden einfachen Anfόhrungszeichen ```````, gefolgt von
  765. Textzeilen, gefolgt von einer weiteren Zeile genau drei aufeinanderfolgenden einfachen Anfόhrungszeichen ```````
  766. - Vor und nach den Auszeichnungsmarken sind KEINE Leerzeichen erlaubt.
  767. - MARKDET
  768. - NOMARKS
  769. - NOMACRO
  770. - Falls das Ende der Quelldatei (EOF) erreicht wird, wird ein ggf. geφffneter Originaltext-Bereich geschlossen.
  771. ---------------------------------------------------------------------
  772. == Trennlinien, Dicke Trennlinien ==[Auszeichnung-Trennlinie]
  773. - MARKDESC Zeichnet eine Trennlinie oder eine dicke Trennlinie aus
  774. - MARKPROP !Mehrzeilig, Leerzeichen, !Ausrichtung, !Verschachtelt
  775. - MARKCONT -
  776. - MARKSYN
  777. - Die Auszeichnung einer Trennlinie kann entweder mittels Strichen "-" oder Unterstrichen "_" vorgenommen werden
  778. - Fόr dicke Trennlinien wird das Gleichheitszeichen "=" verwendet
  779. - Fόr eine Linie sind mindestens 20 Striche/Unterstriche/Gleichheitszeichen erforderlich
  780. - Am Anfang und am Ende der Linie kφnnen Leerzeichen platziert werden
  781. - Jegliche andere Zeichen innerhalb der Zeile heben die Auszeichnung als Linie auf
  782. - MARKDET
  783. - Falls das Zielformat keine Trennlinien unterstόtzt, wird stattdessen eine Kommentarzeile ausgegeben
  784. - Eine dicke Trennlinie fόhrt bei unterschiedlichen Zielformaten zu unterschiedlichem Verhalten:
  785. - Eine dickere Trennlinie
  786. - Eine Pause bei Prδsentationsformaten, wie etwa bei Magic Point
  787. - Ein Seitenumbruch in seitenorientierten Ausgabeformaten, wie etwa bei LaTeX
  788. ---------------------------------------------------------------------
  789. == Verknόpfungen, Benannte Verknόpfungen ==[Auszeichnung-Verknuepfung]
  790. - MARKDESC Dient zur Auszeichnung eines entfernten (Internet) Links oder einer lokalen Verknόpfung
  791. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, !Verschachtelt
  792. - MARKCONT Makros, Rohtext, Bilder
  793. - MARKSYN
  794. - Jede gόltige Internet URL, FTP-, News- oder E-Mail Adresse wird erkannt und automatisch umgewandelt.
  795. - Die Angabe des Protokolls (http, https, ftp) ist optional, ``www.wiedies.com``
  796. - Fόr eine Verknόpfung kann ein Name angeben werden: ``[Klicken sie hier www.url.com]``
  797. - Auch ein Bild kann auf eine Verknόpfung verweisen: ``[[Bild.jpg] www.url.com]``
  798. - Makros innerhalb der Verknόpfungsadresse sind erlaubt: ``[siehe Quelldatei %%infile]``
  799. - Makros innerhalb des Verknόpfungsnamens sind erlaubt: ``[Spiegelung von %%outfile www.url.com]``
  800. % - Schriftstile innerhalb des Verknόpfungsnamens sind erlaubt: ``[**Klicken** sie hier www.url.com]``
  801. - Alle Spezifikationen fόr einen einzelnen Link innerhalb der Quelldatei mόssen sich auf einer Zeile befinden, Zeilenumbrόche sind hier nicht erlaubt
  802. - MARKDET
  803. - Falls das Zielformat keine Verknόpfungen unterstόtzt, erfolgt die Auszeichnung mittels Unterstreichung
  804. ---------------------------------------------------------------------
  805. == Zitate ==[Auszeichnung-Zitat]
  806. - MARKDESC Dient zur Auszeichnung eines Zitats (als eingerόckte Zeile)
  807. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, Verschachtelt
  808. - MARKCONT Makros, Schriftstile, Zitate, Rohtext, Trennlinien, Verknόpfungen, Bilder, Kommentare
  809. - MARKSYN
  810. - Eine Zeile, die mit einem Tabulatorzeichen (TAB) beginnt
  811. - Mehrere Tabulatorzeichen am Zeilenanfang erhφhen die Tiefe der Einrόckung fόr das Zitat
  812. - Aufzδhlungen und Tabellen innerhalb von Zitaten sind nicht erlaubt
  813. - MARKDET
  814. - Falls das Ende der Quelldatei (EOF) erreicht wird, wird ein ggf. geφffnetes Zitat abgeschlossen.
  815. - Manche Zielformate unterstόtzen die Verschachtelung von Zitaten nicht, in diesem Fall werden die untergeordneten Zitate entsprechend auf die Ebene verschoben, auf der sich das aόίerste Zitat befindet.
  816. - Fόr die Tiefe der Verschachtelung von Zitaten gibt es kein Limit. Allerdings ist bei manchen Zielformaten die Verschachtelungstiefe beschrδnkt, Zitate unterhalb der tiefstmφglichen Ebene werden auf diese Ebene hochgestuft.
  817. ---------------------------------------------------------------------
  818. == Aufzδhlungen, Nummerierte Aufzδhlungen, Definitionslisten ==[Auszeichnung-Aufzaehlung]
  819. - MARKDESC Dient dazu, den Beginn eines Aufzδhlungspunkts innerhalb einer Aufzδhlung auszuzeichnen
  820. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, Verschachtelt
  821. - MARKCONT Makros, Schriftstile, Aufzδhlungen, Tabellen, Originaltext, Rohtext, Trennlinien, Verknόpfungen, Bilder, Kommentare
  822. - MARKSYN
  823. - Eine Zeile, welche mit einem Strich/Pluszeichen/Punkt beginnt, gefolgt von genau einem Leerzeichen
  824. - Das erste Zeichen einer Aufzδhlung kann KEIN Leerzeichen sein (Ausnahme: Definitionslisten)
  825. - άber ggf. vorhandene Leerzeichen am Zeilenanfang (gewφhnliche Leerzeichen, keine Tabulatorzeichen) wird die Nummerierungstiefe der Aufzδhlung festgelegt (Verschachtelung)
  826. - Tiefer eingruppierte Aufzδhlungen werden beendet, falls ein hφher angeordneter Aufzδhlungspunkt (von der Elternaufzδhlung aus gesehen) oder ein leerer Aufzδhlungspunkt folgt.
  827. - Mittels zweier aufeinanderfolgender Leerzeilen kφnnen alle geφffneten Aufzδhlungen geschlossen werden
  828. - MARKDET
  829. - Auch falls das Ende der Quelldatei (EOF) erreicht wird, werden alle ggf. geφffneten Aufzδhlungen abgeschlossen.
  830. - Aufzδhlungen kφnnen auch gemischt werden, so ist etwa eine Definitionsliste innerhalb einer nummerierten Aufzδhlung problemlos mφglich.
  831. - Manche Zielformate unterstόtzen die Verschachtelung von Aufzδhlungen nicht, in diesem Fall werden alle Unterpunkte der Aufzδhlung auf die erste (oberste) Aufzδhlungsebene hochgestuft.
  832. - Grundsδtzlich besteht keine Beschrδnkung hinsichtlich der maximal mφglichen Tiefe von Aufzδhlungen. Bei einzelnen Zielformaten kφnnen jedoch durchaus Beschrδnkungen vorliegen, in diesem Fall werden diejenigen Aufzδhlungen, welche tiefer als die maximal zulδssige Tiefe ausgezeichnet sind, auf das tiefstmφgliche Niveau hochgestuft.
  833. ---------------------------------------------------------------------
  834. == Bilder ==[Auszeichnung-Bild]
  835. - MARKDESC Markiert ein Bild
  836. - MARKPROP Mehrzeilig, !Leerzeichen, Ausrichtung, !Verschachtelt
  837. - MARKCONT Makros
  838. - MARKSYN
  839. - Der Name der Bilddatei, von eckigen Klammern umgeben, ``[meinbild.jpg]``
  840. - Dem Namen der Bilddatei muss als Erweiterung das Bildformat angehδngt sein, etwa PNG, JPG, GIF, ... (sowohl Groί- als auch Kleinschreibung erlaubt)
  841. - Symbole im Namen der Bilddatei sind erlaubt, ``[meinbild!~1.jpg]``
  842. - Makros im Namen der Bilddatei sind erlaubt, ``[report-%%date(%Y-%m-%d).png]``
  843. - Leerzeichen im Namen der Bilddatei sind NICHT erlaubt, ``[wie hier.jpg]``
  844. - Leerzeichen nach der φffnenden oder vor der schlieίenden Klammer sind NICHT erlaubt, ``[ meinbild.jpg ]``
  845. - MARKDET
  846. - Falls im Zielformat keine Bilder unterstόtzt werden, wird der Name der Bilddatei innerhalb (runder Klammern) wiedergegeben.
  847. - άber die Position der Markierung des Bildes auf der Zeile wird die Ausrichtung des Bildes definiert:
  848. - ``[LINKS.jpg]`` blablablabla
  849. - blablablabla ``[ZENTRIERT.jpg]`` blablablabla
  850. - blablablabla ``[RECHTS.jpg]``
  851. ---------------------------------------------------------------------
  852. == Tabellen ==[Auszeichnung-Tabelle]
  853. - MARKDESC Dient zur Auszeichnung einer Tabellenzeile mit einer beliebigen Anzahl von Spalten
  854. - MARKPROP Mehrzeilig, Leerzeichen, Ausrichtung, !Verschachtelt
  855. - MARKCONT Makros, Schriftstile, Rohtext, Verknόpfungen, Bilder, Kommentare
  856. - MARKSYN
  857. - Ein vorangestelltes "|"-Zeichen zeichnet eine Tabellenzeile aus
  858. - Zwei vorangestellte "||"-Zeichen zeichnen eine Zeile als Titelzeile einer Tabelle aus
  859. - Dem ersten "|"-Zeichen vorangestellte Leerzeichen fόhren zu einer zentrierten Anordnung der Tabelle innerhalb des Textflusses
  860. - Einzelne Zellen der Tabelle werden durch die Zeichenkette " | " (Leerzeichen "|"-Zeichen Leerzeichen) voneinander getrennt
  861. - Wird am Ende der ersten Tabellenzeile das "|"-Zeichen angegeben, so wird fόr die Tabelle eine Umrandung ausgeben
  862. - Abschlieίende "|"-Zeichen am Ende aller folgenden Tabellenzeilen werden ignoriert und dienen damit lediglich der besser optischen Darstellung der Tabelle
  863. - Wird eine Tabellenzelle mit mehr als einem "|"-Zeichen abgeschlossen, so erstreckt sich diese Zelle όber mehrere Spalten:
  864. "||" fόr 2 Spalten, "|||" fόr 3 Spalten (und so weiter)
  865. - Die Anordnung der Leerzeichen innerhalb einer Tabellenzelle bestimmt deren horizontale Ausrichtung
  866. - Beispiel: ``| Zeile | einer | Tabelle | mit | sechs | Spalten |``
  867. - MARKDET
  868. - Alle zu einer Zeile der Tabelle gehφrigen Daten mόssen auf einer einzigen Zeile der Quelldatei angeordnet sein, innerhalb einer Tabellenzeile sind keine Zeilenumbrόche erlaubt
  869. - Zielformate mit spaltenorientierter Ausrichtung (wie SGML und LaTeX) nutzen die Ausrichtung der ersten Tabellenzeile als Voreinstellung fόr alle sich anschlieίenden Tabellenzeilen
  870. - Jede nicht als Tabellenzeile ausgezeichnete Textzeile schlieίt eine geφffnete Tabelle ab, die einzige Ausnahme hiervor stellen Kommentarzeilen dar
  871. - Die Anzahl der Zellen ist variabel, verschiedene Zeilen einer Tabelle kφnnen eine unterschiedliche Anzahl an Zellen aufweisen
  872. - Derzeit gibt es keine Mφglichkeit, innerhalb einzelner Spalten mehrere Zeilen zu einer einzigen Tabellenzelle zusammenzufassen.
  873. - Falls das Zielformat die Darstellung von Tabellen nicht unterstόtzt, werden die als Tabelle ausgezeichneten Zeilen als ein Originaltextbereich behandelt
  874. ---------------------------------------------------------------------
  875. == Rohtext, Rohtextzeilen, Rohtextbereich ==[Auszeichnung-Rohtext]
  876. - MARKDESC Wird genutzt um beliebigen Text vor dem Parsen zu "schόtzen", Auszeichnungen und Makros innerhalb des Rohtextes werden nicht expandiert.
  877. - MARKPROP Mehrzeilig, !Leerzeichen, !Ausrichtung, !Verschachtelt
  878. - MARKCONT -
  879. - MARKSYN **Rohtext:**
  880. - Text umgeben von zwei Anfόhrungszeichen, ``""""wie hier""""``
  881. - Anfόhrungszeichen und Text direkt aneinander (keine Leerzeichen)
  882. - MARKSYN **Rohtextzeile:**
  883. - Eine Zeile mit rohem Text beginnt mit drei aufeinanderfolgenden Anfόhrungszeichen, ``""" wie hier``
  884. - Die Anfόhrungszeichen mόssen sich unmittelbar am Zeilenanfang befinden, Leerzeichen davor sind nicht erlaubt
  885. - Ein Leerzeichen nach den Anfόhrungszeichen trennt diese vom nachfolgenden Text ab
  886. - MARKSYN **Rohtextbereich:**
  887. - Ein Bereich mit rohem Text beginnt mit einer Zeile mit drei aufeinanderfolgenden Anfόhrungszeichen, daran kφnnen sich beliebig viele weitere Textzeilen anschlieίen. Abgeschlossen wird der Bereich durch eine Zeile mit drei aufeinanderfolgenden Anfόhrungszeichen
  888. - Leerzeichen vor oder nach den Markierungen sind NICHT erlaubt
  889. - MARKDET
  890. - NOMARKS
  891. - NOMACRO
  892. - Falls das Ende der Quelldatei (EOF) erreicht wird, wird ein ggf. geφffneter Rohtextbereich abgeschlossen.
  893. =======================================================================
  894. = Teil VI - Makros beherrschen lernen =[Makros]
  895. Makros sind fόr spezielle Zwecke definierte Schlόsselwφrter, die wδhrend der Konvertierung expandiert werden. Sie werden benutzt, um dynamische Informationen, wie etwas das aktuelle Datum oder Informationen όber das Quelldokument in dieses einzufόgen.
  896. Ein Makro wird όber die beiden Zeichen ``%%`` ausgezeichnet denen der Name des Makros folgt, ein Beispiel ist ``%%date``.
  897. Einige Makros erkennen optionale Formatierungsanweisungen, welche innerhalb von Klammern unmittelbar nach dem Makronamen wiedergegeben werden, etwa in der Form ``%%date(%Y-%m-%d)``. In solch einer Zeichenkette zur Formatierung kann herkφmmlicher Text mit speziellen Formatierungsanweisungen gemischt werden, letztere werden όber ein Prozentzeichen eingeleitet, dem ein einzelnes Zeichen als eigentliche Formatierungsanweisung folgt. Falls keine zusδtzliche Formatierungsanweisung angeben wird, wird eine sinnvolle, vorgegebene Einstellung genutzt.
  898. || Makroname | Wird expandiert nach ... | Voreinstellung |
  899. | ""%%date"" | Das aktuelle Datum | %Y%m%d
  900. | ""%%mtime"" | Der Zeitpunkt der letzten Δnderung der Quelldatei | %Y%m%d
  901. | ""%%infile"" | Der Pfad des Quelldokuments | %f
  902. | ""%%outfile"" | Der Pfad der bei der Konvertierung erzeugten Datei | %f
  903. | ""%%toc"" | Das Inhaltsverzeichnis des Dokuments (Table of Contents) | -
  904. Generelle Regeln:
  905. - Beim Namen des Makros wird nicht zwischen Groί- und Kleinschreibung unterschieden, insofern sind ``%%date``, ``%%DaTe`` und
  906. ``%%DATE`` identisch
  907. - Makros sind sowohl im Kopfbereich als auch im Textbereich des Dokuments gόltig. Eine Ausnahme stellt das Makro %%toc dar, welches lediglich im BODYAREA erlaubt ist
  908. - Wird im CONFAREA ein Makro angegeben, wird όber dieses Makro automatisch der BODYAREA eingeleitet
  909. - Ein Makro kann an jeder beliebigen Stelle innerhalb einer Zeile platziert werden, und es sind beliebig viele Makros innerhalb einer Zeile erlaubt
  910. (eine Ausnahme stellt %%toc dar, das nur dann gόltig ist, wenn es separat in einer Zeile angegeben wird)
  911. - Makros kφnnen auch innerhalb der Auszeichnungen fόr Verknόpfungen und Bilder benutzt werden (auίer %%toc)
  912. - Innerhalb von Titeln, von Originaltext- und Rohtextbereichen auftretende Makros werden nicht expandiert
  913. Komplettes Beispiel (expandierte Makros sind in Fettschrift wiedergegeben):
  914. Das ist das Benutzerhandbuch zu txt2tags, konvertiert ins Zielformat **%%outfile(%e)**
  915. mit Hilfe von txt2tags aus der Quelldatei **%%infile**. Die Umwandlung wurde
  916. durchgefόhrt am **%%date(%d. %B %Y um %X)**, wobei die letzte Δnderung am Quelldokument
  917. am **%%mtime(%d. %B %Y um %X)** vorgenommen wurde. Sowohl die Quelldatei
  918. als auch die erzeugte Datei befinden sich im Verzeichnis **%%infile(%D)**.
  919. -----------------------------------------------------------------------
  920. == %%date ==[Makro-date]
  921. Das ``%%date`` Makro wird zum aktuellen Datum und der aktuellen Uhrzeit expandiert.
  922. Es ist sehr nόtzlich um im Kopf- oder Fuίbereich das Datum wiederzugeben, an dem das Dokument erstellt wurde.
  923. Um den Zeitpunkt der letzten Δnderung des Quelldokuments wiederzugeben, benutzen sie bitte das [""%%mtime"" Makro #Makro-mtime].
  924. Das ""%%date""-Makro akzeptiert etliche Formatierungsanweisungen. Die komplette Liste kann auf der [Python Webseite http://www.python.org/doc/current/lib/module-time.html] abgerufen werden. Die gebrδuchlichsten Anweisungen sind nachfolgend aufgefόhrt:
  925. || Anweisung | Beschreibung |
  926. | %a | Name des Wochentags (Kurzform), gemδί der aktuellen Lokale.
  927. | %A | Name des Wochentags (Langform), gemδί der aktuellen Lokale.
  928. | %b | Name des Monats (Kurzform), gemδί der aktuellen Lokale.
  929. | %B | Name des Monats (Langform), gemδί der aktuellen Lokale.
  930. | %c | Reprδsentation von Datum und Uhrzeit gemδί der aktuellen Lokale.
  931. | %d | Tag des Monats angegeben als Dezimalzahl [01,31].
  932. | %H | Stunde, angegeben als Dezimalzahl (24-Stunden Anzeige) [00,23].
  933. | %I | Stunde, angegeben als Dezimalzahl (12-Stunden Anzeige) [01,12].
  934. | %m | Monat angegeben als Dezimalzahl [01,12].
  935. | %M | Minute angegeben als Dezimalzahl [00,59].
  936. | %p | Das Δquivalent zu AM bzw. PM, gemδί der aktuellen Lokale.
  937. | %S | Sekunde angegeben als Dezimalzahl [00,61]. (1)
  938. | %x | Reprδsentation des Datums gemδί der aktuellen Lokale.
  939. | %X | Reprδsentation der Uhrzeit gemδί der aktuellen Lokale.
  940. | %y | Jahresangabe als Dezimalzahl (zweistellig, ohne Angabe des Jahrhunderts).
  941. | %Y | Jahresangabe als Dezimalzahl (vierstellig, einschlieίlich Angabe des Jahrhunderts).
  942. | %% | Das "%"-Zeichen selbst.
  943. Beispiele:
  944. || Makro | --> | Resultate fόr den Zeitpunkt %%date(%d. %B %Y um %H:%M) |
  945. | ""%%date(Konvertiert am: %c)"" | --> | %%date(Konvertiert am: %c)
  946. | ""%%date(%d. %B %Y)"" | --> | %%date(%d. %B %Y)
  947. | ""%%date(%I:%M %p)"" | --> | %%date(%I:%M %p)
  948. | ""%%date(Dieser Wochentag ist ein %A im Monat %B.)"" | --> | %%date(Dieser Wochentag ist ein %A im Monat %B.)
  949. -----------------------------------------------------------------------
  950. == %%mtime ==[Makro-mtime]
  951. Das ``%%mtime`` Makro wird zum Zeitpunkt der letzten Δnderung des Quelldokuments expandiert. Dieses Makro ist hilfreich um anzugeben, wann die Datei das letzte Mal geδndert wurde. Dieses Makro ist eine "Schwester" des [""%%date""-Makros #Makro-date] und kann daher mit genau denselben Formatierungsanweisungen wie dieses aufgerufen werden.
  952. Hier ein Beispiel: das Quelldokument fόr dieses Benutzerhandbuch wurde zuletzt geδndert am **%%mtime(%c)**. Diese Datumsangabe wurde mittels des Makros ``%%mtime(%c)`` erzeugt.
  953. -----------------------------------------------------------------------
  954. == %%infile ==[Makro-infile]
  955. Das ``%%infile`` Makro wird expandiert zur Angabe des Speicherorts der Quelldatei im Dateisystem.
  956. Es ist sehr nόtzlich, um auf HTML-Seiten Verknόpfungen der Art "//siehe die Quelle dieser Datei//" zu erzeugen. Wenn sie solche Verknόpfungen erzeugen, kφnnen sie damit Anfδnger unterstόtzen und ihnen Hilfestellung leisten, da diese dann ihren Quellcode als Vorlage fόr ihre eigene Seite verwenden kφnnen.
  957. Dieses Makro akzeptiert die folgenden Formatierungsanweisungen:
  958. || %<Zeichen> | Beschreibung | Ausgabe fόr den Quelltext dieses Benutzerhandbuchs |
  959. | %f | Dateiname | %%infile(%f)
  960. | %F | Dateiname (ohne Erweiterung) | %%infile(%F)
  961. | %e | Dateinamenerweiterung | %%infile(%e)
  962. | %p | Absoluter Dateipfad | %%infile(%p)
  963. | %d | Pfad der Datei (nur Verzeichnisse) | %%infile(%d)
  964. | %D | Pfad der Datei (nur das Elternverzeichnis) | %%infile(%D)
  965. | %% | Das "%"-Zeichen selbst | %%infile(%%)
  966. Beispiele:
  967. || Quelltext | --> | Wird expandiert nach |
  968. | Das Elternverzeichnis dieses Handbuchs ist ""%%infile(%D)"". | --> | Das Elternverzeichnis dieses Handbuchs ist %%infile(%D). |
  969. | Ich benutzte die Dateinamenerweiterung ""%%infile(%e)"". | --> | Ich benutzte die Dateinamenerweiterung %%infile(%e). |
  970. | ""[Siehe Quelldatei %%infile]"" | --> | [Siehe Quelldatei %%infile]
  971. | Nach XHTML konvertiert trage ich den Namen ""%%infile(%F)"".xhtml | --> | Nach XHTML konvertiert trage ich den Namen %%infile(%F).xhtml
  972. Hinweis: Dieses Makro wird zur Zeichenkette "-" expandiert, falls von der Standardeingabe (STDIN) eingelesen wird.
  973. -----------------------------------------------------------------------
  974. == %%outfile ==[Makro-outfile]
  975. Das ``%%infile`` Makro wird expandiert zur Angabe des Speicherorts der Zieldatei im Dateisystem.
  976. Es ist sehr nόtzlich, um den Dateinamen innerhalb des Kopf- oder Textbereichs des Dokuments wiederzugeben.
  977. Dieses Makro ist eine "Schwester" des [""%%infile""-Makros #Makro-infile] und kann daher mit genau denselben Formatierungsanweisungen wie dieses aufgerufen werden.
  978. Beispiele:
  979. || Quelltext | --> | Wird expandiert nach |
  980. | Sie lesen gerade die Datei ""%%outfile"". | --> | Sie lesen gerade die Datei %%outfile.
  981. | txt2tags -t ""%%outfile(%e)"" -i ""%%infile"" -o ""%%outfile"" | --> | txt2tags -t %%outfile(%e) -i %%infile -o %%outfile
  982. Hinweis: Dieses Makro wird zur Zeichenkette "-" expandiert, falls auf die Standardausgabe (STDOUT) ausgegeben wird.
  983. -----------------------------------------------------------------------
  984. == %%toc ==[Makro-toc]
  985. Das ``%%toc`` Makro wird zu einem Inhaltsverzeichnis fόr das Dokument expandiert.
  986. Es ist sehr nόtzlich, um die genaue Stelle anzugeben, an der das Inhaltsverzeichnis wiedergegeben werden soll.
  987. Sie kφnnen dieses Makro auch mehrmals innerhalb eines Dokuments nutzen und dabei zum Beispiel das Inhaltsverzeichnis ein zweites Mal am Ende des Dokuments wiedergeben. Dieses Benutzerhandbuch nutzt das Makro ""%%toc"" um das Inhaltsverzeichnis wie gewόnscht zu positionieren.
  988. Im Unterschied zu allen anderen Makros erwartet das ""%%toc""-Makro keine Formatierungsanweisungen und folgt auch sonst anderen Regeln:
  989. - Es ist lediglich im BODYAREA des Dokuments gόltig
  990. - Es muss alleinstehend auf einer einzelnen Zeile verwendet werden (dabei sind vorangehende und sich anschlieίende Leerzeichen erlaubt)
  991. - Es erlangt nur Wirksamkeit in Verbindung mit der Kommandozeilenoption --toc, wird diese nicht angeben, wird das Makro ignoriert
  992. - Wird innerhalb des Dokuments das Makro %%toc angetroffen, wird die voreingestellte automatische Positionierung/Formatierung des Inhaltsverzeichnisses deaktiviert.
  993. =======================================================================
  994. = Teil VII - Einstellungen beherrschen lernen =[Einstellungen]
  995. Einstellungen sind spezielle, im CONFAREA des Quelldokuments aufgefόhrte Konfigurationsanweisungen, welche den Umwandlungsprozess beeinflussen kφnnen. Die Angabe solcher Einstellungen ist nicht zwingend erforderlich. Der gewφhnliche Benutzer kann sehr gut auch ohne sie auskommen. Aber Achtung: ihr Gebrauch kann sόchtig machen, wenn man einmal angefangen hat, sie zu benutzen, kann man nicht mehr davon ablassen, dies immer wieder zu tun :)
  996. Zeilen, in denen Einstellungen definiert werden sind //spezielle Kommentarzeilen//, welche zusδtzlich durch ein vorangestelltes Ausrufezeichen ("!") ausgezeichnet sind, dadurch unterscheiden sie sich von herkφmmlichen Kommentarzeilen. Die Syntax einer Einstellungen selbst ist zugleich einfach und doch variabel, sie setzt sich zusammen aus einem Schlόsselwort und einem Wert, wobei beide durch einen Doppelpunkt voneinander getrennt werden (":").
  997. || %! Schlόsselwort : Wert |
  998. Details der Syntax:
  999. - Das Ausrufezeichen muss dem Kommentarzeichen unmittelbar folgen ("%!"), zwischen den beiden Zeichen ist kein Leerzeichen erlaubt.
  1000. - Die Leerzeichen vor und nach dem Schlόsselwort und dem Trennzeichen sind allesamt optional und kφnnen auch weggelassen werden.
  1001. - Weder bei der Angabe des Schlόsselwortes noch bei Definition des dazugehφrigen Werts wird zwischen Groί- und Kleinschreibung unterschieden
  1002. Regeln:
  1003. - Einstellungen erlangen nur innerhalb des CONFAREAs Gόltigkeit, werden sie dagegen im Textkφrper des Dokuments angetroffen, werden sie als gewφhnliche Kommentare angesehen.
  1004. - Falls dasselbe Schlόsselwort mehr als einmal innerhalb des CONFAREAs auftaucht, so wird derjenige Wert benutzt, der als letztes angegeben wurde. Ausnahme: Eine Ausnahme stellen die Einstellungen 'options', 'preproc' und 'postproc' dar, diese sind kumulativ.
  1005. - Enthδlt eine Zeile mit einer Einstellung ein ungόltiges Schlόsselwort, so wird die Zeile als gewφhnliche Kommentarzeile angesehen.
  1006. - Derart definierten Einstellungen wird Vorrang gegenόber Angaben aus einer benutzerdefinierten Konfigurationsdatei eingerδumt, sie selbst kφnnen jedoch mittels Kommandozeilenoptionen auίer Kraft gesetzt werden.
  1007. -----------------------------------------------------------------------
  1008. == %!Target ==[Einstellung-target]
  1009. άber die Einstellung ``target`` kann das Zielformat fόr die Konvertierung des Dokuments voreingestellt werden:
  1010. ``` %!target: html
  1011. Der Benutzer kann dann einfach den folgenden Befehl aufrufen:
  1012. ``` $ txt2tags Datei.t2t
  1013. Dadurch wird die Konvertierung in das innerhalb des Dokuments spezifizierte Zielformat vorgenommen.
  1014. Fόr die Einstellung ``target`` kann kein optionales Zielformat angegeben werden, dies wδre auch vφllig widersinnig, wie das folgende (ungόltige!) Beispiel unmittelbar aufzeigt ``%!target(tex): html``.
  1015. -----------------------------------------------------------------------
  1016. == %!Options ==[Einstellung-options]
  1017. Bei jeder Konvertierung eines Dokuments eine lange Anweisung auf der Kommandozeile anzugeben ist stupide und zugleich anfδllig fόr Fehler. Die Einstellung ``Options`` erlaubt es dem Benutzer daher, alle fόr die Konvertierung genutzten Optionen zusammen mit dem Quelldokument abzuspeichern. Auf diese Art und Weise wird sichergestellt, dass das Dokument immer auf die gleiche Art und Weise, also immer mit denselben Optionen konvertiert wird.
  1018. Sie schreiben dazu die Optionen (ohne Fehler in ihrer Syntax!) genau so, wie sie sie auch an der Kommandozeile angeben wόrden, lassen aber den "txt2tags" Programmaufruf am Beginn der Anweisung, den Schalter fόr die Angabe des Zielformats und den Dateinamen fόr die Quelldatei am Ende der Anweisung einfach weg.
  1019. Ein Beispiel: sie haben bislang immer das folgende Kommando benutzt, um ihr Dokument umzuwandeln:
  1020. ``` $ txt2tags -t html --toc --toc-level 2 --enum-title Datei.t2t
  1021. Wenn sie jetzt die folgenden Einstellungen innerhalb ihres Quelldokuments platzieren, kφnnen sie sich zukόnftig die Angabe all dieser Optionen auf der Kommandozeile sparen:
  1022. ```
  1023. %!target: html
  1024. %!options(html): --toc --toc-level 2 --enum-title
  1025. ```
  1026. Da die benφtigte Kommandozeilenanweisung jetzt nur noch "``txt2tags Datei.t2t``" lautet, brauchen sie jetzt zur Konvertierung den von ihnen bevorzugten Texteditor gar nicht mehr verlassen, sie kφnnen jetzt wδhrend der Bearbeitung des Quelltexts zwischendurch gelegentlich die Umwandlung anstoίen. In vi lautet die dafόr erforderliche Befehlsfolge:
  1027. ``` :!txt2tags %
  1028. -----------------------------------------------------------------------
  1029. == %!Encoding ==[Einstellung-encoding]
  1030. Die Einstellung "Encoding" wird bei der Verfassung von Texten in anderen Sprachen als in Englisch benφtigt oder immer dann, wenn Umlaute, Buchstaben mit Akzenten oder andere lδnderspezifische Detailfunktionen genutzt werden sollen. In diesem Fall muss fόr das Zieldokument der //Zeichensatz// angepasst werden (falls erlaubt).
  1031. Die fόr die Einstellung "Encoding" gόltigen Werte tragen denselben Namen wie diejenigen Werte, die als Zeichensatz fόr ein HTML Dokument gόltig sind, wie etwa //iso-8859-1// oder //koi8-r//. Falls sie unschlόssig sind, welche Kodierung sie benutzen sollen, kann ihnen evtl. diese [vollstδndige (und lange!) Liste http://www.iana.org/assignments/character-sets] Hilfestellung bieten.
  1032. LaTeX benutzt Aliasnamen fόr die Kodierung des Dokuments. Dies stellt jedoch fόr Benutzer von txt2tags kein Problem dar, da txt2tags die Namen intern umsetzt. Einige Beispiele:
  1033. || txt2tags/HTML | > | LaTeX |
  1034. | windows-1250 | >>> | cp1250 |
  1035. | windows-1252 | >>> | cp1252 |
  1036. | ibm850 | >>> | cp850 |
  1037. | ibm852 | >>> | cp852 |
  1038. | iso-8859-1 | >>> | latin1 |
  1039. | iso-8859-2 | >>> | latin2 |
  1040. | koi8-r | >>> | koi8-r |
  1041. Falls txt2tags den Wert fόr die Kodierung nicht kennt, wird er unverδndert weitergegeben, insofern kann der Benutzer auch selbstdefinierte Kodierungen angeben und nutzen.
  1042. -----------------------------------------------------------------------
  1043. == %!PreProc ==[Einstellung-preproc]
  1044. Bei den PreProc-Einstellungen handelt es sich um einen Eingabefilter, der auf das Quelldokument angewandt wird. Es handelt sich dabei um einen Such- und Ersetzungsvorgang, der durchgefόhrt wird, direkt nachdem die Zeile von der Quelldatei eingelesen wurde, noch bevor die Datei auf jegliche txt2tags-spezifische Auszeichnungen untersucht wurde.
  1045. PreProc-Einstellungen sind nόtzlich, um Abkόrzungen fόr immer wiederkehrend genutzten Text zu definieren, wie etwa:
  1046. ```
  1047. %!preproc HPM "Hans-Peter Mόller"
  1048. %!preproc ERSCHEINUNGS_DATUM "12. August 2005"
  1049. %!preproc PάNKTCHEN "[Bilder/winzig/blauer_punkt.png]"
  1050. ```
  1051. Der Benutzer kann dann eine Textzeile der folgenden Art und Weise schreiben:
  1052. ``` Hallo, meine Name ist HPM. Heute ist der ERSCHEINUNGS_DATUM.
  1053. Und txt2tags wird diese Linie so "zu Gesicht bekommen":
  1054. ``` Hallo, meine Name ist Hans-Peter Mόller. Heute ist der 12. August 2005.
  1055. Der PreProc-Filter agiert dabei, nachdem der Autor das Dokument verfasst hat, aber noch bevor die eigentliche Konvertierung von txt2tags stattfindet. So gesehen ist es eine erste Konvertierung noch bevor die "richtige" Konvertierung stattfindet. Das Verhalten entspricht dabei demjenigen eines externen Sed- oder Perl-Filter, aufgerufen auf folgende Art und Weise:
  1056. ``` $ cat Datei.t2t | preproc-script.sh | txt2tags -
  1057. Das von der txt2tags-Kernkomponente durchgefόhrte Parsen des Dokuments beginnt erst, nachdem alle mittels PreProc-Einstellungen definierten Ersetzungsvorgδnge durchgefόhrt wurden.
  1058. -----------------------------------------------------------------------
  1059. == %!PostProc ==[Einstellung-postproc]
  1060. Bei den PostProc-Einstellungen handelt es sich um einen Ausgabefilter, der auf das bereits konvertierte Dokument angewandt wird. Es handelt sich dabei um einen Such- und Ersetzungsvorgang, der durchgefόhrt wird, nachdem txt2tags den Text auf spezifische Auszeichnungen hin untersucht und deren Verarbeitung abgeschlossen hat.
  1061. PreProc-Einstellungen sind nόtzlich, um kleinere Verbesserungen oder Korrekturen am erzeugten Dokument vorzunehmen, etwa indem erzeugte Auszeichnungen geδndert oder ergδnzt werden oder indem zusδtzlicher Text hinzugefόgt wird. Einige kleine Beispiele:
  1062. ```
  1063. %!postproc(html): '<BODY.*?>' '<BODY BGCOLOR="green">'
  1064. %!postproc(tex) : "\\newpage" ""
  1065. ```
  1066. Wδhrend όber die Filter-Einstellungen in der ersten Zeile die Hintergrundfarbe eines HTML-Dokuments geδndert wird, dient der zweite Filter dazu, Seitenumbrόche innerhalb eines LaTeX-Dokuments zu entfernen.
  1067. PostProc-Filter arbeiten dabei analog zu externen Sed- oder Perl-Filter, aufgerufen auf folgende Art und Weise:
  1068. ``` $ txt2tags -t html -o- Datei.t2t | postproc-script.sh > Datei.html
  1069. Bevor Pre- und PostProc-Filter eingefόhrt wurden, war es όblich, kleine Skripte anzuwenden, um die Resultate der txt2tags-Konvertierung individuell anzupassen. Diese Skripte waren in der Tat eine Aneinanderreihung von vielen einzelnen sed- (oder sed-δhnlicher) Kommandos, um Aktionen der Art "Ersetze dies mit jenem" durchzufόhren. Jetzt kφnnen all diese Zeichenketten zur Textersetzung zusammen mit dem Text des Dokuments abgespeichert werden. Als zusδtzliches Plus kφnnen zur Mustersuche innerhalb der Filter Regulδre Ausdrόcke verwendet werden, da Python die hierfόr erforderliche Funktionalitδt zur Verfόgung stellt.
  1070. -----------------------------------------------------------------------
  1071. == %!Style ==[Einstellung-style]
  1072. - Nόtzlich bei der Konvertierung in die Zielformate HTML oder XHTML, der jeweiligen Ausgabedatei wird dadurch eine CSS-Datei zur Definiton des Dokumentenstils zugeordnet
  1073. - Nόtzlich auch bei der Konvertierung in das Zielformat LaTeX, bestimmt in diesem Fall ein Paket, welches mittels des ``\usepackage``-Kommandos geladen wird
  1074. - Derselbe Effekt kann auch όber die Kommandozeilenoption ``--style`` erzielt werden
  1075. - Die --style Option hat hφhere Prioritδt als %!style. Werden beide mit sich widersprechenden Optionen eingesetzt, erhδlt --style den Vorrang
  1076. -----------------------------------------------------------------------
  1077. == Einstellungen ausschlieίlich fόr ein spezifisches Zielformat ==[Einstellung-specific]
  1078. Alle Einstellungen (Ausnahme: %!target) kφnnen so definiert werden, dass sie nur bei der Konvertierung in ein spezifisches Zielformat Anwendung finden. Hierzu dient die Syntax ``%!Schlόsselformat(Zielformat): Wert``. Damit kann der Benutzer fόr unterschiedliche Zielformate unterschiedliche Einstellungen vornehmen.
  1079. Als besonders nόtzlich erweist sich diese Art der Auszeichnung bei der Nutzung von Pre- und Postproc-Filtern. Gleichwohl kφnnen auch alle anderen Einstellungen zielformatspezifisch definiert werden. Derart kφnnen zum Beispiel unterschiedliche Dokumentstile fόr HTML und LaTeX-Dokumente definiert werden:
  1080. ```
  1081. %!style(html): fancy.css
  1082. %!style(tex) : amssymb
  1083. ```
  1084. Zielformatspezifische Einstellungen sind sehr nόtzlich, um das zu konvertierende Dokument individuell anzupassen:
  1085. ```
  1086. %!target: sgml
  1087. %!options(sgml): --toc
  1088. %!options(html): --style foo.css
  1089. %!options(txt ): --toc-only --toc-level 2
  1090. ```
  1091. In diesem Beispiel wurde SGML als Ausgabeformat voreingestellt, das erzeugte SGML-Dokument enthδlt dabei ein Inhaltsverzeichnis. Falls der Benutzer den Befehl ``txt2tags -t html Datei.t2t`` absetzt, finden lediglich die auf der dritten Zeile fόr das HTML-Zielformat definierten Einstellungen Anwendung, insofern wird die bei der Konvertierung erzeugte HTML-Datei mit der Datei "foo.css" assoziiert sein und kein Inhaltsverzeichnis besitzen.
  1092. -----------------------------------------------------------------------
  1093. == Details fόr PreProc and PostProc Filter ==[Filter-Details]
  1094. - Filter bieten die Mφglichkeit des "Suchens und Ersetzen" innerhalb der Datei (analog zum Programm sed)
  1095. - Filter folgen nicht dem Schema, dass (beim Auftreten mehrere gleichartiger Einstellungen) die zuletzt gefundene Einstellung genutzt wird, sondern sie kφnnen kumulativ angewendet werden. Folglich ist die Anzahl der Filter unbegrenzt hoch, sie kφnnen so viele Filter definieren, wie von ihnen benφtigt werden. Die einzelnen Filter werden dabei genau in der Reihenfolge angewandt, in der sie angegeben wurden.
  1096. - Im Unterschied zu den anderen Einstellungen kφnnen daher sowohl Filter, die spezifisch fόr ein Zielformat definiert wurden als auch generische, fόr alle Zielformate definierte Filter bei einem Dokument Anwendung finden. Demonstriert wird dies durch das folgende Beispiel: bei der Konvertierung zu einem HTML-Dokument werden beide nachfolgend aufgefόhrten Filter Anwendung finden:
  1097. ```
  1098. %!postproc : dieses jenes
  1099. %!postproc(html): dieses anderes
  1100. ```
  1101. - Ein Filter muss genau ZWEI Argumente erhalten
  1102. - Spezielle Escape-Sequenzen wie ``\n`` (Zeilenumbruch) und ``\t`` (Tabulatorzeichen) werden interpretiert
  1103. - Um Textpassagen zu lφschen, ersetzen sie diese einfach mit einer leeren Zeichenkette
  1104. ``` %!postproc: "unerwόnschte Zeichenkette" ""
  1105. - Um Probleme zu vermeiden sollten sie immer dann, wenn sie PostProc-Filter nutzen um Tags auszutauschen, explizit ein Zielformat angeben: ``%!PostProc(Zielformat): <dieses> <jenes>``
  1106. - PREproc wird angewandt direkt nachdem die Zeile gelesen wurde, und POSTproc kommt zum Tagen, nachdem alle Elemente geparst wurden. Dies entspricht der folgenden Befehlszeile (UUOC vorausgehend):
  1107. ``` $ cat Datei.t2t | preproc.sh | txt2tags | postproc.sh
  1108. - Der erste Teil des Filters, όber welchen das Ziel der Suche angegeben wird, wird nicht als gewφhnliche Zeichenkette eingelesen, sondern als Muster fόr einen regulδren Ausdruck angesehen. Machen sie sich keine Sorgen, wenn sie nicht wissen was regulδre Ausdrucke sind, sie mόssen dies nicht unbedingt wissen. Beachten sie aber in jedem Fall, dass sie, wenn sie bestimmte spezielle Zeichen innerhalb eines regulδren Ausdrucks einsetzen wollen, sie diese "maskieren" mόssen um sie nutzen zu kφnnen. Um ein Zeichen zu maskieren, mόssen sie diesem einen umgekehrten Schrδgstrich "\" voranstellen. Hier folgt eine Aufzδhlungen all derjenigen Zeichen, fόr die solch eine Maskierung vorgenommen werden muss:
  1109. ``` \* \+ \. \^ \$ \? \( \) \{ \[ \| \\
  1110. - Pythons regulδre Ausdrόcke sind verfόgbar! Diese sind δhnlich zu denen, die in Perl Verwendung finden (PCRE). Beispiel: Verwandle bei einer HTML-Konvertierung alle φffnenden und schlieίenden "B" Auszeichnungen zu "STRONG"-Marken:
  1111. ``` %!postproc(html): '(</?)B>' '\1STRONG>'
  1112. - Die Argumente fόr den Filter kφnnen auf dreierlei Art und Weise όbergeben werden:
  1113. + Als einzelnes Word, wie etwa FOO (keine Leerzeichen)
  1114. + Als von doppelten Anfόhrungszeichen umschlossene Zeichenkette, wie etwa "FOO"
  1115. + Als von einfachen Anfόhrungszeichen umschlossene Zeichenkette, wie etwa 'FOO'
  1116. - Falls Ihr Muster doppelte Anfόhrungszeichen enthδlt, schόtzen sie diese mit einfachen Anfόhrungszeichen (und umgekehrt). Einige korrekte Beispiele:
  1117. ```
  1118. %!postproc: MUSTER ERSETZUNG
  1119. %!postproc: "MUSTER" "ERSETZUNG"
  1120. %!postproc: 'MUSTER' 'ERSETZUNG'
  1121. %!postproc: MUSTER "ERSETZUNG"
  1122. %!postproc: "MUSTER" 'ERSETZUNG'
  1123. ```
  1124. =======================================================================
  1125. = Teil VIII - Schwarze Magie =[Schwarze-Magie]
  1126. Diese Kapitel kann Neulingen wirklich nicht empfohlen werden. Hier wird aufgezeigt, wie man mit txt2tags-Filtern unter Einsatz von komplexen Mustern und regulδren Ausdrόcken seltsam anmutende Dinge realisiert.
  1127. **ACHTUNG!** Die im folgenden beschriebenen Praktiken werden NICHT empfohlen und kφnnen sogar Schδden hervorrufen. Im Extremfall kann es wδhrend des Konvertierungsprozesses sogar zum Verlust von Text aus dem Quelldokument kommen, welcher dann im Zieldokument nicht mehr auftaucht. Nutzen sie diese Dinge wirklich nur wenn sie sie unbedingt benφtigen und nur dann, wenn sie wirklich wissen, was sie tun.
  1128. || Ein Filter ist zwar ein sehr mδchtiges, zugleich aber auch gefδhrliches Werkzeug! |
  1129. || Bei falsch definierten Filtern kφnnen sich unerwartete Resultate einstellen! |
  1130. Behalten Sie das bitte immer im Gedδchtnis.
  1131. -----------------------------------------------------------------------
  1132. == Einfόgen von mehreren Zeilen mittels %!PostProc (wie etwa von CSS-Regeln) ==[Nachbearbeitung-mehrzeilig]
  1133. Soll in einem Filter das Muster zur Ersetzung mehrere Zeilen umfassen, so kann dies durch die Verwendung des Zeichen ``\n``, welches einen Zeilenumbruch darstellt, realisiert wird.
  1134. Dies kann zum Beispiel nόtzlich sein, wenn nur einige wenige CSS_Regeln in ein HTML-Zieldokument eingefόgt werden sollen, ohne dafόr eine eigene Datei anzulegen:
  1135. ```
  1136. %!postproc: <HEAD> '<HEAD>\n<STYLE TYPE="text/css">\n</STYLE>'
  1137. %!postproc: (</STYLE>) 'body { margin:3em ;} \n\1'
  1138. %!postproc: (</STYLE>) 'a { text-decoration:none ;} \n\1'
  1139. %!postproc: (</STYLE>) 'pre,code { background-color:#ffffcc ;} \n\1'
  1140. %!postproc: (</STYLE>) 'th { background-color:yellow ;} \n\1'
  1141. ```
  1142. Alle Filter sind dabei an den ersten Filter gebunden und ersetzen die Zeichenkette, welche dieser eingefόgt hat. Auf diese Art und Weise wird die Zeichenkette "<HEAD>" verwandelt in:
  1143. ```
  1144. <HEAD>
  1145. <STYLE TYPE="text/css">
  1146. body { margin:3em ;}
  1147. a { text-decoration:none ;}
  1148. pre,code { background-color:#ffffcc ;}
  1149. th { background-color:yellow ;}
  1150. </STYLE>
  1151. ```
  1152. -----------------------------------------------------------------------
  1153. == Nutzung von %!PreProc um Inhalte spezifisch nur in einem bestimmten Ausgabeformat zu erzeugen ==[Zielformat-spezifische-Inhalte]
  1154. Manchmal besteht die Notwendigkeit, eine Textpassage immer nur dann einzufόgen, wenn in ein spezifisches Zielformat konvertiert wird und sie andernfalls wegzulassen. Dieses seltsam anmutende Verhalten kann όber die Nutzung von PreProc mittels eines Tricks implementiert werden.
  1155. Der Ausgangspunkt besteht dabei darin, den zusδtzlichen Text im Quelldokument zunδchst als Kommentar auszuzeichnen. Die Auszeichnung erfolgt dabei aber in einer Weise, dass ein zielformatspezifischer Filter diese Zeilen wieder in "normalen" Text zurόck umwandelt.
  1156. Falls sie zum Beispiel ein zusδtzlichen Abschnitt eingeben mφchten, der allerdings nur in einem HTML-Zieldokument erscheint, geben sie diesen Text als "speziellen" Kommentar ein, und zwar auf folgende Art und Weise:
  1157. ```
  1158. %html% Diese HTML-Seite wurde mit [txt2tags http://txt2tags.org] erstellt.
  1159. %html% Die dazugehφrige Quelltextdatei finden sie [here source.t2t].
  1160. ```
  1161. Da diese beiden Zeilen mit dem Zeichen ``%`` beginnen, handelt es sich um Kommentarzeilen, die normalerweise ignoriert werden. Nun fόgen sie der Quelldatei jedoch noch einen speziellen Filter hinzu:
  1162. ``` %preproc(html): '^%html% ' ''
  1163. Dieser erkennt und entfernt die Kommentarauszeichnung am Zeilenanfang, dadurch werden Zeilen quasi "aktiviert", es handelt sich um keine Kommentarzeilen mehr. Da es sich um einen zielformatspezifischen Filter handelt, wird dieser nur bei der Konvertierung in ein HTML-Dokument angewandt.
  1164. -----------------------------------------------------------------------
  1165. == Δndern von txt2tags-Auszeichnungen mittels %!PreProc ==[Erzeugen-Auszeichnungen]
  1166. Falls sie ein Profi im Umgang mit regulδren Ausdrόcken sind, kφnnen sie sogar die Syntax fόr das Quelldokument anpassen und dabei die vordefinierten Auszeichnungen dergestalt modifizieren, dass sie diese in einer fόr sie mφglicherweise einfacher erscheinenden Weise einzetzen kφnnen.
  1167. Hier ein Beispiel: das Tabulatorzeichen am Zeilenanfang wird von txt2tags als eine Auszeichnung fόr ein Zitat interpretiert. Falls der Benutzer dieses Verhalten nicht mag oder sein Texteditor nicht gut mit Tabulatorzeichen klarkommt, kann er die Auszeichnung fόr ein Zitat umdefinieren. Nehmen wir an, er mφchte Zitate zukόnftig durch die Zeichenkette ">>> " am Zeilenanfang auszeichnen, so kann er dies όber einen einfachen Filter erreichen:
  1168. ``` %!PreProc: '>>> ' '\t'
  1169. Im Quelldokument erscheinen jetzt Zitatpassagen in folgender Form:
  1170. ```
  1171. >>> Dies ist ein Zitat.
  1172. >>> Der Benutzer hat hierfόr diese eigenartigen Auszeichnung definiert.
  1173. >>> Diese Auszeichnung wird jedoch von Preproc-Filtern zu Tabulatorzeichen zurόckkonvertiert.
  1174. ```
  1175. Bevor das Parsen des Text beginnt, wird die seltsame ">>> "-Auszeichnung zu einem Tabulatorzeichen konvertiert und txt2tags erkennt diese dann als Auszeichnungen fόr eine Zitatpassage.
  1176. **ACHTUNG!** άber den extremen Einsatz von PreProc Regeln kann letztlich die gesamte Syntax der Auszeichnungszeichen verδndert werden, wobei sich durchaus auch Konflikte zwischen einzelnen Auszeichnungen ergeben kφnnen Seien sie daher wirklich sehr vorsichtig, wenn sie so etwas implementieren mφchten.
  1177. =======================================================================
  1178. = Teil IX - Die Chronik von txt2tags =[Chronik]
  1179. Im Juli 2001 erschien die erste φffentliche Version von txt2tags, sie trug die Versionsnummer 0.1. Aber die Ursprόnge liegen mehr als ein Jahr zurόck ...
  1180. Dieses Kapitel gibt einen άberblick όber die Entwicklung des Werkzeugs, angefangen von ganz vorne bis hin zur aktuellen Version.
  1181. == Januar 1999: Vorgeschichte ==[Chronik-1999-1]
  1182. Vom Autor:
  1183. //"Meine allerersten Versuche, ein Werkzeug fόr die Textkonvertierung zu erstellen begannen bereits 1999, in Form eines sehr einfachen und wenig leistungsfδhigen Bourne Shell Skripts, das speziell ausgezeichneten Text in eine HTML-Seite umwandelt. Ja, ein weiteres txt2html-Werkzeug. Irgendwann muss doch irgendjemand sowas schon mal gemacht haben ... In aller Kόrze, das Werkzeug erkannte nur einfache Auszeichnungen wie ``*bold*``, ``/italic/``, ``_under_``, und maskierte die klassischen ``< & >`` Spezialzeichen von HTML. Nicht besonders eindrucksvoll, aber hey! ich war damals jung ;)"//
  1184. == Juni 1999: Immer noch Vorgeschichte ==[Chronik-1999-2]
  1185. % scripts/antigos/txt2sgml-bash/txt2sgml 25/06/1999
  1186. Der Autor mφchte noch etwas mehr sagen:
  1187. //"Einige Monate vergingen, und eine groίe Hyphe um SGML hatte bei der Firma, fόr die ich arbeitete (Conectiva) um sich gegriffen. Daher wurde txt2html in ein txt2sgml-Skript umgewandelt. Zu dieser Zeit habe ich ernsthaft versucht alles όber SED* zu lernen, insofern war txt2sgml ein 110-zeiliges Bourne Shell-Skript mit sehr viel SED-Code integriert."//
  1188. * **SED:** UNIX Stream EDitor - ein automatisches Textbearbeitungswerkzeug
  1189. Diese verbesserte SGML-Version unterstόtzte bereits mehr Strukturen, wie etwa Aufzδhlungen oder die Auszeichnung als Originaltext. Anhand der folgenden Beispieldatei kφnnen sie den Ursprung der txt2tags-Aufzeichnungen erkennen:
  1190. ```
  1191. * Das war eine fettgedruckte Zeile (FETT zeilenorientiert angewandt? Nun gut ...)
  1192. --
  1193. - Nicht nummerierte Aufzδhlungen waren den Aufzδhlungen in txt2tags bereits sehr δhnlich
  1194. - aber man benutzte -- um eine Liste anzufangen oder abzuschlieίen
  1195. --
  1196. =----------------------
  1197. Originaltext wurde durch das Muster =-- abgetrennt.
  1198. Die zusδtzlichen Striche ------- waren mehr kosmetischer Natur.
  1199. =----------------------
  1200. ```
  1201. Noch nicht sehr eindrucksvoll, aber der groίe Schritt kommt jetzt ...
  1202. == August 2000: Jetzt keine Vorgeschichte mehr ==[Chronik-2000]
  1203. % verde666.org/sed/programas/txt2*/txt2sgml.sed 20000816 - 20010514
  1204. Wieder spricht der Autor:
  1205. //"Ein Jahr verging, und zu diesem Zeitpunkt war ich wirklich in SED verliebt. Das txt2sgml.sh Shellskript wurde umgeschrieben und wurde dabei zu einem reinem, 350 Zeilen umfassenden SED-Skript. Etliche praktische Funktionalitδten wurden hinzugefόgt wie etwa Unterabschnitte, Erkennung von URLs und Aufzδhlungen innerhalb von Aufzδhlungen. Ich habe dieses Skript viel benutzt und verbessert, fast ein ganzes Jahr lang."//
  1206. Eine Beispieldatei txt2sgml.sed:
  1207. ```
  1208. * Sieh an, da sind diese drei ersten magischen Zeilen
  1209. * Der Titel des Dokuments / Autor / Datum
  1210. * Aber damals benφtigten sie diese Sternchen am Anfang
  1211. HAUPTάBERSCHRIFT
  1212. Kapitelangaben wurden όber Zeilen komplett in Groίbuchstaben gemacht.
  1213. Abschnitte wurden durch vorangestellte Leerzeichen gekennzeichnet.
  1214. Jedes einzelne Leerzeichen reprδsentierte eine Gliederungsebene fόr das Kapitel.
  1215. Auszeichnung fόr Schriftstile: *fett*, **betont**, "kursiv" und `Schreibmaschine`.
  1216. - Aufzδhlung
  1217. + Aufzδhlung eine Ebene tiefer
  1218. = und eine Aufzδhlung noch eine Ebene tiefer
  1219. (ausgezeichnet όber das '=', nicht durch Einrόckung)
  1220. Zwei Leerzeilen schlossen eine Aufzδhlung ab. Verknόpfungen wie www.beispiel.de
  1221. und E-Mail-Adressen wurden όber regulδre Ausdrόcke automagisch erkannt.
  1222. Und es gab eine seltsame Auszeichnung fόr Bilder:
  1223. %%image: path/to/image.jpg
  1224. ```
  1225. == Mai 2001: Umsetzung in Python und die Idee mehrerer Zielformate ==[Chronik-2001-1]
  1226. Raten sie mal wer spricht:
  1227. //"Ich habe angefangen, mein [Buch όber Regulδre Ausdrόcke http://guia-er.sf.net] zu schreiben und verfasste den Text in einem Format, das fόr die Konvertierung mit txt2sgml.sed bestimmt war. Auf diese Art und Weise konnte ich es nach SGML konvertieren (und anschlieίend nach HTML, wofόr ich das Programm sgml2html benutzte) und dann sofort im Browser όberprόft, wie das Buch denn so aussah. Da 'sofort' und 'sgml2html' jedoch nicht so recht zusammenpassten, habe ich das SED-Skript in ein Werkzeug namens txt2html.sed umgewandelt, mit dem ich direkt HTML erzeugen konnte. [...] Der Verleger nutzte Adobe PageMaker Software um seine Bόcher zu formatieren und das stellte fόr einen Linux-Fan, wie ich es bin ein Problem dar. Glόcklicherweise habe ich festgestellt, dass PageMaker eine HTML-δhnliche Sprache fόr die Auszeichnung seiner Dokumente besitzt, insofern wandelte ich mein Skript sukzessive in ein Konvertierungswerkzeug namens txt2pagemaker.sed um. Letztendlich hatte ich dann drei δhnliche SED-Skripte um mein Dokument nach SGML, HTML und ins PageMaker-Format umzuwandeln. Und einige weitere Shellskripte waren fόr die Erzeugung des Inhaltsverzeichnisses und fόr die Nachbearbeitung des umgewandelten Texts zustδndig. Mitten wδhrend ich das Buch schrieb, kam mir die Idee, alle diese Hilfsmittel in einem einzigen Werkzeug zu vereinen, und ich wδhlte mir Python als Programmiersprache dafόr aus. TXT2TAGS war geboren."//
  1228. == Juli 2001: 0.x Serie: Erstes φffentliches Erscheinen von txt2tags ==[Chronik-2001-2]
  1229. % v0.1 26 Jul 2001
  1230. Ja, er ists:
  1231. //"Die Herausgabe des gedruckten Buchs (31. Juli) und die Verφffentlichung der allerersten Version 0.1 von txt2tags (26. Juli) lagen zeitlich sehr nahe beieinander, es handelte sich nur um Tage. Beide hingen sehr stark voneinander aber und wurden zusammen entwickelt. Neben SHML, HTML und PageMaker wurden noch weitere Zielformate fόr diese Version implementiert: MoinMoin, Magic Point und gewφhnlicher Text. Mehr als ein Jahr lang folgten weitere Versionen in der 0.x Series und das Programm begann zu wachsen: UNIX Man Page als neues Zielformat, das ""%%date""-Makro, Unterstόtzung von Tabellen, eine Webschnittstelle, intelligente Ausrichtung von Bildern sowie die Erzeugung eines Inhaltsverzeichnisses. In Version 0.2 wurde ein Shell-Skript als Umhόllung hinzugefόgt, mit welchem die Dateioperation durchgefόhrt und die Kommandozeilenoptionen verarbeitet wurden. Ich habe das so gemacht, da ich mich mit der Shell sehr gut auskannte, in Python aber vφllig unbedarft war. Es sollte bis zur Version 0.9 dauern, ehe txt2tags wieder zu 100% aus Python Code bestand."//
  1232. == September 2002: 1.x Serie: Wachstum ==[Chronik-2002]
  1233. Geben sie das Mikrophon jetzt nicht endlich ab?
  1234. //"Die Idee von txt2tags hat sich als gut erwiesen. Ich habe mich entschieden, die Sache ernst zu nehmen. Der nδchste Schritt bestand darin, das Programm weiterzuverbreiten und andere darόber zu informieren: Dokumentation! Die Webseite des Programm wurde gestartet, Mailing-Listen (Englisch und Portugiesisch) wurden eingerichtet und das Benutzerhandbuch wurde begonnen. Die Anzahl der Benutzer stieg und viele Anregungen kamen. Ja, ich denke es funktioniert. Hier die neuen Mφglichkeiten, die zur 1.x-Serie hinzugefόgt wurden: Graphische Schnittstelle (GUI), Kompatibilitδt zu Windows & Mac, LaTeX als Zielformat, %!style, include Kommandos sowie die mδchtigen Pre- und Postproc-Filter zur Vor- und Nachbearbeitung des Dokuments."//
  1235. == Juli 2004: 2.x Serie: Reifeprozess ==[Chronik-2004]
  1236. Ok, ich gebe das Mikrofon weiter:
  1237. //"Wachstum ist schwierig und manchmal auch seltsam. Erinnern sie sich dass ich sagte, dass ich ein Python-Neuling war? Nun, ich wurde besser, aber es hatten sich viele alte Fehler angehδuft, insofern war ein grφίere άberarbeitung des Programmquelltexts unvermeidbar. Die neue Version war bei einigen Auszeichnungen nicht abwδrtskompatibel, weswegen ein Skript fόr das Upgrade δlterer Versionen erstellt wurde. Es dauerte eine ganze Weile, aber schlieίlich wurde Version 2.0 verφffentlicht. Diese brachte jede Menge neuer Funktionen, mit wie XHTML als Zielformat, HTML-Code der gemδί W3C-Standards validiert werden kann, i18n, und eine RC Datei. Ein Team von άbersetzern hat sich eingestellt und das Programm und auch die dazugehφrige Dokumentation wurden in viele Sprachen όbersetzt. Lout als Zielformat wurde hinzugefόgt, und es kamen neue Makros hinzu://
  1238. //""%%mtime"", ""%%infile"", ""%%outfile"", and ""%%toc"".//
  1239. //Wird fortgesetzt ..."//
  1240. ========================================================================
  1241. The End.
  1242. %nopdf([Quelltext einsehen userguidede.t2t])
  1243. [../../img/t2tpowered.png]