1 Was ist lEX?
1.1 Die Geburt von TeX T:8X wurde von Donald E. Knuth entwiekelt, einem Professor an der Stanford Univer
sitiit, der intemationalen Ruf als Mathematiker und Informatiker errungen hat. Er besitzt aueh ein flir sein Arbeitsgebiet seltenes Geflihl ftir Asthetik, und seine Sehaffenskraft ist wirklieh phiinomenal1 .
T:8X ist das Nebenprodukt von Knuths monumentalen Untemehmen, The Art of Computer Programming. Diese Reihe von Naehsehlagwerken, die eine ganze Skala von Programmierteehniken und -konzepten abdecken solI, ist eine Conditio sine qua non flir aIle Infonnatiker. Drei Bfu1de sind in den siebziger lahren veroffentlicht worden, und nach einer langen Pause, in der sich Knuth mit elektronisehem Satz beschiiftigte, solI ein vierter folgen. Hier ist, nach Knuths eigenen Worten, die Gesehiehte, wie T:8X geboren wurde2 :
Warum begann ieh 1977 mit der Arbeit an T:8X? Das Ganze fing eigentlieh viel frtiher an, im Zusammenhang mit meinen Btiehem The Art of Computer Programming. leh bereitete gerade eine zweite Ausgabe des 2. Bandes vor. Aber als ieh die Druekfahnen erhielt, sahen diese sehlimm aus - weil sieh die Druekteehnik seit der ersten Ausgabe drastiseh geandert hatte. Die Bucher wurden nun im
1 Dies ist nicht iibertrieben. Wir kennen sein Buch gut, haben einige seiner theoretischen Artikel studiert und verwenden TEX nun schon eine ganze Weile - er ist einfach erstaunlich! The TEXbook [1], veroffentlicht bei Addison-Wesley, wurde von Knuth selbst geschrieben und gesetzt - natiirlich in TEX. Man kann sich keine bessere Darbietung der vielen Talente dieses Mannes vorstellen.
2 Aus "Remarks to celebrate the publication of Computers and Typesetting," GruBwort an das Computer Museum in Boston am 21 Mai 1986. Der gesamte Text kann im TUGboat, 7 (1986), 95-98 [6] nachgelesen werden. (TUGboat ist das Informationsblatt der TEX Users Group in den USA.)
R. Séroul et al., TEX Praxis© Birkhäuser Verlag 1998
2 Kapitel 1. Was ist T 8(?
Fotosatz hergestellt, anstatt mit Bleisatz in Monotype Maschinen, und sie wurden mit Hilfe eines Computers (leider!) anstatt von Hand gesetzt. Das Resultat war eine schlechte Verteilung des Leerraums, besonders im Mathematiksatz, und die Fonts waren im Vergleich zum Original schrecklich. Ich war ziemlich entmutigt und wuBte nicht, was tun. Addison-Wesley bot mir an, alles wieder nach der alten Monotype-Methode zu setzen, aber ich wuBte, daB diese bald aussterben wtirde. Wenn ich dann meinen 4. Band beendigt hatte, wtirde dasselbe Problem wieder auftauchen, und ich wollte kein Buch schreiben, das aussehen wtirde wie die letzten Druckfahnen.
Dann ... erhielten wir Druckfahnen von Pat Winstons Artificial Intelligence, die mit einer neuen Maschine in Stidkalifomien gemacht worden waren, alles diskretisiert mit einem Raster hoher Auflosung ... Die digitale Schrift sah viel besser aus als das, was auf meinen eigenen Druckfahnen zu sehen war . .. Binnen einer Woche, nachdem ich die Druckfahnen von Winstons Buch gesehen hatte, entschied ich mich, alles liegen zu lassen und mich mit digitaler Typographie zu befassen ....
Seit seinen Anfangen im Jahre 1977 verfolgte das TJYC-Projekt, dem ich mich verschrieben hatte, zwei Hauptziele. Das erste war Qualitiit: Wir wollten Dokumente erstellen konnen, die nicht nur ganz gut sind, sondem tatsachlich die besten . .. Urn 1977 gab es einige Systeme, die sehr attraktive Dokumente herstellen konnten. Mein Ziel war es den letzten Schritt zu tun, hin zur besten Qualitat, die je ftir gedruckte Dokumente erreicht wurde.
Es zeigte sich, daB es nicht schwer war, dieses Niveau, was das Formatieren des Textes anbetraf, nach zwei Jahren Arbeit zu erreichen. Zum Beispiel machten wir Experimente mit dem Time-Magazin urn zu zeigen, daB Time, in TJY( gesetzt, viel besser aussieht. Aber es zeigte sich, daB das Design der Schriftarten viel schwieriger war, als ich gedacht hatte: Sieben Jahre brauchte ich, urn eine Schriftgestaltung zu erhalten, mit der ich mich anfreunden konnte.
Das zweite Hauptziel war Archivierbarkeit: ein System, das so weit wie moglich unabhangig von den Fortschritten in der Drucktechnik ist. Ich wollte auch beim Aufkommen einer neue Generation von Druckmaschinen die gleiche, schon erreichte Qualitat erhalten, anstatt dieselben Probleme noch einmallOsen zu mtissen. Ich wollte etwas schaffen, das auch in 100 Jahren noch zu gebrauchen ist. In anderen Worten, mein Ziel war es, daB unsere Nachfahren fahig sein sollen, aus heute gespeicherten Daten auch im Jahre 2086 ein aquivalentes Buch zu produzieren ...
1.2 Wie T EK arbeitet 3
1.2 Wie TEX arbeitet Grob gesprochen fallen Textverarbeitungssysteme in zwei Kategorien:
• WYSIWYG Systeme: what you see is what you get3. Sie sehen am Bildschirm jederzeit, wie das gedruckte Dokument aussehen wird, und was Sie eingeben, hat sofort Wirkung auf das Erscheinungsbild des Dokuments .
• Markup-Systeme, in denen Sie Ihren Text mit Formatierungsanweisungen eingeben. Diese Anweisungen haben zunachst keinen Effekt. Sie mtissen erst ein Programm laufen lassen, welches das endgiiltige Bild, entweder fUr den Bildschirm oder den Drucker, berechnet. In der Sprache der Informatiker: Markup-Systeme mtissen den Quelltext, den Sie eingeben, compilieren.
WYSIWYG Systeme haben den offensichtlichen Vorteil augenblicklichen Feedbacks, aber sie arbeiten nicht sehr prazise: Was in einer Auflosung von 300 Punkten pro Inch akzeptabel ist, fUr eine kurzlebige Publikation wie ein Informationsblatt oder einen Handzettel, ist es nicht mehr ftir ein Buch, das im Fotosatz mit hoher Auflosung produziert wird. Das menschliche Auge ist auBerordentlich empfindlich: Etwas kann Sie am Erscheinungsbild eines Textes storen, ohne daB Sie sagen konnen, was es ist - genauso wie Sie hOren konnen, wenn in einem Orchester jemand falsch spielt, ohne daB Sie den Schuldigen identifizieren konnen. Man lernt im Buchdruck schnell, daB Schonheit, Lesbarkeit und angenehmes Lesen eines Textes von kleinsten Details abhangen: Jedes Element muB genau richtig plaziert werden, bis auf Tausendstel Millimeter. Ftir diese Art Arbeit verschwindet der Vorteil, den ein sofortiges Feedback hat: Feine Details beztiglich Leerraume, Ausrichtung und so weiter sind viel zu klein, urn sie mit der relativ geringen Auflosung des Bildschirms wahrnehmen zu konnen. Und selbst wenn dies nicht der Fall ware, so ware es doch eine monumentale Aufgabe, aIle Details per Hand zu regeln.
Deshalb ist es nicht erstaunlich, daB in der Welt des professionellen Schriftsetzens Markup-Systemen der Vorzug gegeben wird. Diese automatisieren das prazise Plazieren eines jeden Zeichens. Nattirlich ist fUr einen Anfanger dieser Weg weniger attraktiv, weil man nicht direkt das Resultat seiner Eingabe sehen kann, und man ein GefUhl dafUr entwickeln muB, was das System tun wird. Aber Sie konnen heute schon die Vorteile beider Systeme genieBen: indem Sie ein Markup-System zusammen mit einem WYSIWYG
Frontend verwenden; wir werden spater noch tiber solche Frontends fUr TJY( reden.
TJY( wurde in den spaten Siebzigern und fruhen Achtzigern entwickelt, zu einer Zeit, als WYSIWYG System noch nicht we it verbreitet waren. Aber wenn es jetzt tiberarbeitet werden mtiBte, wtirde es immer noch eine Markup-Sprache sein. Urn Ihnen eine Idee zu geben, mit welcher Prazision TJY( arbeitet: Die interne Einheit, mit der TJY( arbeitet, ist ungefiihr ein hundertstel der Wellenlange des sichtbaren Lichtes! (In Zahlen: 1/100.) Mit anderen Worten, jeder Rundungsfehler in den Rechnungen ist fUr das bloBe Auge nicht zu bemerken.
Das Resultat dieser pedantischen Arbeit ist nicht das komplette Bild einer Druckseite, sondern eher eine abstrakte Beschreibung davon. Diese Beschreibung ist unabhangig von
3 Dieses Motto ist nur dann 100% korrekt, wenn Bildschirrn und Drucker die gleiche Aufl6sung und Seitenbeschreibungssprache verwenden.
4 Kapitel 1. Was ist T[5X?
der Maschine, auf der Sie TJYC haben laufen lassen, und vom Drucker, der den Ausdruck erzeugen wird - mit anderen Worten, sie ist vollstandig iibertragbar. Hier ist eine dekodierte Version eines winzigen Teils einer Seite, die das TJYC-Logo enthalt:
level 1: (h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) 109: fntdefl 0: cmrl0---loaded at size 655360 DVI units 130: fntnumO current font is cmrl0 [T] level 2: (h=1784036,v=655360,w=0,x=0,y=0,z=0,hh=113,vv=42) 137: down3 141084 v:=655360+141084=796444, vv:=51 [E] level 2: (h=1784036,v=655360,w=0,x=0,y=0,z=0,hh=113,vv=42) [ X]
1.3 Die guten und die schlechten Nachrichten Ober TEX Die guten Nachrichten
Zunachst einmal produziert TJYC-Dokumente in ungewohnlich hoher Qualitiit, insbesondere im Mathematikmodus. Wie wir schon bemerkten, ist Knuth ein Asthet, und er nahm das Wissen von Generationen von Setzern mit in sein Programm auf. Hier einige Beispiele, die zeigen, wie auBerordentlich sorgfiiltig TJYC Ihren Text behandelt:
• TJYC verwendet Ligaturen automatisch, in bester Schriftsetzer-Tradition. Kombinationen bestimmter Zeichen - fl - werden durch extra designte Sonderzeichen - fi - ersetzt, siehe Abschnitt 2.3.
• TJYC fiihrt automatisch ein Kerning (eine optische Angleichung der Buchstabenabstiinde) durch, d. h. Zeichen, deren Formen zueinander "passen", werden dichter zusammen gesetzt - AV statt A V -, so daB die visuelle Wirkung der Zeichen einheitlich ausfallt.
• TJYC verwendet einen komplizierten Mechanismus fUr den Randausgleich und trennt, wenn notig, Worter. Die Regeln der Silbentrennung seIber konnen geandert werden, so daB TEX verschiedenen Sprachen angepaBt werden kann.
• Das EinfUgen von Leerraum zwischen den verschiedenen Komponenten einer mathematischen Formel wird von TEX nach den traditionellen Regeln der besten, den Mathematiksatz betreibenden Hauser durchgefUhrt. Eine mathematische Formel in TEX einzutippen ist so einfach, natiirlich und logisch, daB man sich dabei ertappt, es urn seiner selbst willen zu tun ...
Ein gut geschriebenes TEX-Dokument ist vermittels Makros formatiert, die angeben, wie jeder Bestandteil gesetzt werden solI. Ein Makro ist ein kurzes Programm, das es Ihnen erspart, die Formatierungsanweisungen explizit eingeben zu miissen. Zum Beispiel konnen Sie mit \footnote eine FuBnote generieren, ohne daB Sie sich Gedanken dariiber machen miissen, wie Sie den Text ans Ende der Seite bewegen oder wie Sie kleine Zahlen iiber der Zeile eingeben. Makros sind in Termen von Basiseinheiten, wie \indent oder \par (fUr Absatze) geschrieben, die den Grundwortschatz von TEX bilden.
1.3 Die guten und die schlechten Nachrichten Ober Tg< 5
Makros machen T}3X enorm flexibel. Urn das Erscheinungsbild eines Dokuments zu iindem, reicht es aus, die Definitionen einiger Makros zu iindem, ohne den Text anzutasten. Es gibt Bemiihungen, Standards flir das Codieren der Strukturen von on-line Dokumenten zu entwickeln. T}3X wird diesen Standards entsprechen konnen, da es eine hohere Dokument-Beschreibungssprache ist.
T}3X Dokumente sind iibertragbar. Ein Dokument, das in T}3X geschrieben wurde, Ihren Text und Ihre Makros zur Formatierung enthiilt, kann ganz mit den druckbaren Zeichen des ASCII-Satzes - also aus dem Bereich 32-126 (sowie dem Wagenriicklaufzeichen)eingegeben werden, selbst wenn es Zeichen aus fremden Alphabeten enthiilt, die einen hoheren Code haben. Falls das Chinesisch flir Sie ist, hier ein Beispiel aus der Praxis: Urn einem Freund irgendwo auf der Welt Ihren Text zu zeigen, schalten Sie einfach Ihr Modem ein, senden den Text und - fertig! Es sind keine spezielle Dekodierungen oder Konvertierungen notig4 . Mit den Computemetzen, die die ganze Erde umspannen, eroffnet die Fiihigkeit, formatierte Texte zu versenden, viele Moglichkeiten. Und selbst der komplizierteste wissenschaftliche Text kann in T}3X geschrieben werden, indem ausschlieBlich ASCII-Zeichen verwendet werden.
Urn nur ein Beispiel zu nennen: Die Datenbank, die von der American Mathematical Society, AMS, unterhalten wird, basiert auf T}3X. Sie enthiilt alle mathematischen Artikel, die auf der Welt verOffentlicht werden. Wenn Sie auf diese Datenbank zugreifen, konnen Sie Abstracts jedes Artikels, der Sie interessiert, erhalten und entweder als T}3X-Quelltext oder formatiert, nach einem T}3X-Lauf, lesen.
T}3X kann auch auf andere Computer iibertragen werden, weil es nicht von den Besonderheiten des Zeichensatzes eines Computers abhiingt und weil seine Berechnungen in einer vollkommen maschinenunabhangigen Weise durchgeflihrt werden. Ein in T}3X geschriebener Text (ignorieren wir einmal die Unterschiede in der Qualitiit der Drucker) hat immer die gleiche Gestalt, ob er nun auf einem Macintosh, einem PC, einer UNIX Workstation, einem IBM GroBrechner oder gar auf einer Cray erstellt worden ist. Wir haben es ausprobiert: Ein Artikel, der auf einem PC der UniversiUit von StraBburg geschrieben worden war, wurde in die USA geschickt, wo der Fotosatz dann problemlos von der AMS erstellt wurde. Das Ergebnis sah aus wie die Korrekturabziige, die auf unserem bescheidenen Matrixdrucker ausgedruckt worden sind.
T}3X erzeugt kein Bild, sondem nur eine Seitenbeschreibung. Urn ein Dokument zu drucken, geben Sie die T}3X-Ausgabedatei an ein Treiberprogramm weiter, das die enthaltene Beschreibung in Befehle umwandeln kann, die der Drucker oder ein anderes Ausgabegeriit versteht. Auf diese Weise ist T}3X auch unabhangig von der Technologie der Drucker; iindert sich die Technologie, muB man nur einen neuen Treiber, ein relativ einfaches Programm, schreiben.
4 1m Idealfall. In der Praxis kann es bei nichtenglischen Texten noch vorkommen, daB einige Zeichen verunstaltet werden, wenn si~ iiber gewisse Netze gehen: Umlaute, das B, aber auch der Backslash sind besonders anfallig. Eine SicherheitsmaBnahme ist es, den gesamten AscII-Zeichensatz am Textanfang oder -ende aufzulisten. Der Empfanger erkennt dann, bei welchen Zeichen Schwierigkeiten auftreten. Auf jedem Fall taucht das Problem heutzutage immer seltener auf.
6 Kapitel 1. Was ist T g<?
T£X ist viel mehr als ein Textverarbeitungssystem - es ist eine Programmiersprache! Es laBt sich leicht Ihren Bedurfnissen anpassen. Sie konnen neue Befehle schaffen oder T£X's Verhalten modifizieren, indem Sie seine Variablen andem. Mit mehr Erfahrung konnen Sie neue Stile definieren oder ausgefeilte Makros fUr spezielle Zwecke schreiben - oder Sie konnen diese Dinge von anderen kopieren. Weil T£X iibertragbar und weitverbreitet ist, durften die meisten Dinge, die Sie benotigen, schon irgendwo geschaffen worden sein; Sie mussen sie nur finden. Das ist nattirlich nicht immer einfach, aber ein guter Startpunkt fUr die Suche ist TUGboat, der T£X Users Group Newsletter.
T£X ist sehr gut erweiterbar - wie wir gesehen haben, hat Knuth auch an die Zukunft gedacht, als er T£X entwickelte. Aus diesem Grunde hat er es in mehreren Schichten aufgebaut, wie eine Zwiebel: In der Mitte sind T£X's ca. 300 ,,Basiseinheiten", die Bausteine von T£X. Die Basiseinheiten sind sehr elementar, sie werden deshalb als "primitivs" bezeichnet. Sie wurden es nicht mogen, sie die ganze Zeit anwenden zu mussen. Ais nachstes kommen Befehle auf hoherer Ebene oder Makros, definiert in einer Format-Datei. Die ublichste Format-Datei heiBt plain. tex, und in ihr sind ca. 600 Befehle definiert. (Kein Grund zur Panik, Sie werden weniger als hundert Befehle kennen mussen, urn selbst ziemlich komplizierte Dokumente zu setzen, und die meisten haben recht naheliegende Namen.) Die Kombination der primitivs mit den Befehlen, die in plain. tex definiert sind, wird allgemein mit Plain-T£X bezeichnet. Dazu konnen Sie noch eins von mehreren Makropaketen verwenden; sie stellen noch benutzerfreundlichere Befehle zur Verfugung, wie etwa \chapter oder \theorem, die ganz die Formatierung ubemehmen5. Und schlieBlich konnen Sie sich Ihre eigenen Befehle schreiben. Sind Sie sehr vertraut mit T£X, so konnen Sie sogar Ihr eigenes Format schreiben, urn Plain-T£X zu erganzen oder ganz zu ersetzen.
TIY( ist sorgfaltig nach Fehlem durchkammt worden. Naturlich wird es wie jedes Programm nie ganz fehlerfrei sein; aber da Knuth einen Preis flir jeden gemeldeten neuen Fehler anbietet, gibt es eine Armee von Fehlersuchenden, die jede Zeile des Codes durchgegangen ist. Die verbleibenden Fehler mussen sehr absonderlich sein und werden wohl kaum spontan auftreten. Wenn Sie einen finden, werden Sie Ihren Preis erhalten und einen Eintrag auf der offiziellen Liste der (frtiheren) Fehler von T£X, die regelmaBig im TUGboat erscheint.
T£X ist Gemeingut, "public domain": Knuth teilt es kostenlos mit der Welt. Sie konnen T£X von irgend jemandem kopieren. Kaufen Sie T£X, so zahlen Sie nur flir die Implementation auf einer bestimmten Maschine und flir die Umgebung, die typischerweise aus Treiber, Texteditor, Previewer und so weiter besteht. Kommerzielle Software, die mit T£X vergleichbar ist, wird fUr das Zehn- oder Zwanzigfache verkauft.
Das T£X-Logo und das Copyright von The T£Xbook gehoren der AMS, die den T£XStandard pflegen muB. Damit sich neue Implementierungen T£X nennen durfen, mussen sie einen sogenannten "torture-Test" uberstehen, der von Knuth selbst geschaffen und jedes Jahr verbessert wurde.
5 Die Pakete sind normalerweise mit dem unterliegendem Format kombiniert, so daB es verschiedene Dialekte von TEX gibt: Jb.TPC, AMS-TEX, und so weiter. Jb.TPC ist wahrscheinlich am bekanntesten und am vollstandigsten.
1.3 Die guten und die schlechten Nachrichten Ober rEX 7
Der Pascal Quelltext von TJ3X wurde, mit allen Erklarungen, als Band B von Computers and Typesetting (es gibt flinf Bande, Band A ist The TJj(book [1)) veroffentlicht. Das ist an sich schon bemerkenswert: Nicht viele Quelltexte haben es in ein Buch geschafft! Falls Sie die Moglichkeit haben, so sehen Sie sich TEX: The Program [2] an. Sie werden sehen, wie innovativ Knuth wieder war: Anstatt eine trockene Auflistung zu prasentieren, verband er Code und Kommentar in einem sehr schOn gesetzten Dokument.
Die schlechten Nachrichten Nun kommen wir zu den Mangeln von TJ3X. Wie Sie sehen werden, konnen die mei
sten umgangen werden, gewohnlich vermittels Erweiterungen oder durch zusatzliche Programme zur Untersttitzung. Diese sind implementationsabhangig und nicht eigentlicher Teil von TJ3X. Dennoch ist es eben erst durch die Starke des Designs von TJ3X moglich, daB es in so viele Richtungen erweiterbar ist.
TJ3X Programmierung ist subtil, und es braucht Zeit, urn sie zu meistem. Keine Sorge: Das ist kein Problem flir gewohnliche Anwender. Ein Makro anzuwenden oder selbst ein einfaches Makro zu definieren, ist nicht schwieriger, als ein Radio einzustellen. Aber komplizierte Makros oder ein Paket zu schreiben, ist eher wie ein Radio zusammenzubauen: keine Aufgabe flir Anfanger.
TJ3X besitzt einen begrenzten Speicherumfang, der flir jede Implementierung festgesetzt ist - also nicht dynamisch wachst. Auf Computem mit wenigstens 4 Megabyte Speicherplatz konnen Sie eine in C geschriebene Version laufen lassen, deren (Speicher-) Grenzen weit genug sind, urn sie als irrelevant zu bezeichnen; aber auf Rechnem mit weniger Speicherplatz konnen Sie, wenn Sie nicht gewisse VorsichtsmaBnahmen treffen, in Schwierigkeiten kommen.
TJ3X verwendet seine eigenen Fonts, die bereit gehalten werden miissen. Das ist nicht eigentlich eine Begrenzung des Designs, weil TJ3X tatsachlich alle Fonts, dessen MetrikInformationen bekannt sind (s. Abschnitt 1.5), verwenden kann; aber bis in die '90er Jahre war es schwierig, diese Informationen fiir Nicht-TJ3X-Fonts zu erhalten. Neuerdings konnen viele Installationen von TJ3X, sowohl auf dem PC wie auch auf groBeren Systemen, PostScript Fonts verwenden. Mit der weiteren Verbreitung von TJ3X, insbesondere auf kleinen Rechnem, ist damit zu rechnen, daB die Zahl der verfiigbaren Fonts schnell anwachsen wird. (Tatslichlich ist dies der Fall. Seit 1992 wurde deshalb ein ganzlich neuer Mechanismus zur Auswahl von Fonts entwickelt. Dieses als NFSS - New Font Selection Scheme - bekannte Verfahren wird in Abschnitt 4.8 vorgestellt.)
TJ3X kann keine schrliggestellten Zeilen und keine Grafik verarbeiten. Es gibt MakroPakete, die einfache Grafikkommandos definieren, aber sie neigen dazu, viel Speicher zu belegen. Giinstiger ist es wohl, einen Notausgang zuverwenden, den Knuth in TJ3X flir solche Situationen eingebaut hat: den \special-Befehl. Dieser Befehl laBt Sie in TJ3X's Ausgabedatei alles einschmuggeln, womit TJ3X seiber nichts anfangen kann, wohl aber die Treiberprogramme: z. B. der Name einer Datei, die eine Grafik enthalt, oder sogar PostScript-Befehle. Natiirlich sind diese Dinge von der Implementierung der Treiber abhangig. Aber gerade die Integration von PostScript-Code ist heute auf nahezu allen Systemen ohne besondere Schwierigkeiten moglich.
8 Kapitel 1. Was ist T EX?
TEX arbeitet nicht interaktiv6• Dies ist wohl die am meisten geauBerte Kritik an TEX. Wie erwiihnt, gibt es Griinde dafiir; es gibt aber auch Wege, diese Schwierigkeit zu umgehen. Es sind jetzt viele benutzerfreundliche Frontends verfiigbar; fiir den Macintosh z. B. bietet das kommerzielle Programm "TEXtures" eine sehr interessante Schnittstelle. Von diesem Programm aus haben Sie Zugriff auf
• einen Multi-Window Texteditor;
• TEX selbst; • einen Previewer, der auf dem Bildschirm zeigt, wie der Ausdruck sein wird; • einen Druckertreiber.
Und Sie konnen sogar von anderen Programmen erstellte PostScript-Grafiken in den Text einfUgen.
Auf pes konnen Sie zu einer Zeit nur ein Programm laufen lassen (zumindest unter DOS): Sie miissen erst eine Datei editieren, dann TEX laufen lassen und sich schlieBlich das Ergebnis mit dem Previewer auf dem Bildschirm ansehen. Sie miissen sich alle Fehler notieren, den Previewer verlassen und Ihren Text erneut editieren, urn ihn zu korrigieren. Dies wiederholen Sie so oft, bis der ProzeB konvergiert. Was gabe man nicht fiir eine Maus und ein Window Interface!
Da Mikrocomputer immer leistungsfahiger werden, werden die drei letzten Mangel, von denen wir sprachen, wahrscheinlich verschwinden. SchlieBlich werden wir auch auf Mikrocomputern sehr benutzerfreundliche Systeme haben, wie sie schon auf Workstations verfiigbar sind. Solche Systeme verwenden einen TEX-"Motor", aber sie arbeiten, als waren sie WYSIWYG Systeme: Sie konnen mit Hilfe der Maus eine mathematische Formel eingeben oder andern, ohne den TEX-Quelltext zu editieren, ja sogar ohne viel iiber TEX zu wissen!
1.4 TEX: FOr wen und wofOr?
TEX ist kein Textverarbeitungssystem. Es wurde fiir einen bestimmten Zweck entworfen: wissenschaftliche Texte zu schreiben. Wissenschaftliche Texte sind, typografisch gesehen, paradox. Sie konnen ungemein haarige Formeln enthalten, sind aber im Seitenlayout sehr einfach: Eine Anzahl von Rechtecken - die Absatze - werden einfach iibereinandergestapelt. Deshalb ist TEX unschlagbar im Mathematiksatz oder fiir naturwissenschaftliche Artikel im allgemeinen; aber es stockt und stottert, wenn es einen Newsletter oder ein kompliziertes Seitenlayout bearbeiten muB.
TEX wurde fiir Naturwissenschaftler von einem Naturwissenschaftler (und Astheten) entworfen. Aber einige seiner Leistungsmerkmalesind auch fUr Geisteswissenschaftler interessant: Akzente in Fremdsprachen, FuBnoten, Indizieren, anpassungsfahige Silbentrennung, Prograrnmiermoglichkeiten. Knuth hat selbst eine Erweiterung von TEX pro-
6 Es gibt aber einen Betriebsmodus, in dem TEX ohne einen Quelltext gestartet wird, Kapitel 13 unter Interaktion mit TEX. AuJ3erdem gibt es Befehle fur die interaktive BeeinfluBung des Ubersetzungslaufs, siehe Kapitel 13 unter dem Stich wort \read
1.5 Arbeiten mit T 8<: ein Uberblick 9
grammiert (die, damit der Standard gewahrt bleibt, nicht TEX sondern tex-xet7 heiBen soll), die sowohl von links nach rechts geschriebenen Texte wie im Deutschen als auch von rechts nach links geschriebenen Texte wie im Arabischen oder Hebraischen setzen konnen solI.
Zusammenfassend laBt sich sagen, daB Knuth sein Wort gehalten hat. Die "scientific community" besitzt jetzt ein professionelles Werkzeug zum Schriftsatz von hoher Qualitat, das jeder bezahlen kann. Mit dem Fortschritt der Technik erwarten wir eine kontinuierliche Evolution der Schnittstellen fUr TEX, wahrend der Kern von TEX derselbe bleiben wird, weil dieser maschinen- und implementierungsunabhangig ist. Die Prazision von TEX's internen Berechnungen garantiert, daB ein Buch, das heute mit TEX hergestellt wird, auch in hundert lahren noch unverandert gedruckt werden kann.
TEX ist das qualitativ hochwertigste wissenschaftliche Schriftsatz-Programm, das es heutzutage auf Mikrocomputern gibt. Es !auft natiirlich auch auf groBeren Rechnern.
Ein letztes Argument fUr TEX: Wie die Erfahrung zeigt, ist das Schreiben eines solchen Programms ein monumentales Unterfangen. Wei 1 der Markt fUr diese Produkte nicht so groB ist, wird es noch eine Weile dauern bis es jemandem gelingt, Knuths Werk zu verdrangen8.
1.5 Arbeiten mit leX: ein Oberblick
Welchen Befehl Sie nun genau eingeben mussen, oder welchen Knopf Sie drucken mussen, urn ein TEX-Dokument zu erstellen, hangt von Ihrem System ab; es sind aber immer drei Schritte, die Sie durchfUhren mussen. Hier erklaren wir die Bedeutung der Schritte; fUr die Details mussen Sie die Dokumentation Ihrer TEX-Implementierung oder Kollegen zu Rate ziehen.
1. Schritt: Den Quelltext vorbereiten Angenommen, Sie wollen einen Brief, einen Artikel oder ein Buch mit TEX erstellen.
Der erste Schritt ist es, den Text mit Hilfe eines Texteditors in eine Datei zu schreiben. Zusammen mit dies em Text geben Sie TEX-Formatierungsbefehle oder Kontrollsequenzen ein:
Text + Datei
Kontroll-Texteditor
auf der )
sequenzen Platte
Sie sollten den Unterschied zwischen einem Texteditor und einem Textverarbeitungssystem kennen. Letzteres ist ein Texteditor zusammen mit einer Software zum Formatieren; diese erlaubt Ihnen, Fonts zu wechseln, zweispaltig zu schreiben, einzuziehen und so weiter. Ein Texteditor schreibt Ihren Text in eine Datei auf Diskette (bzw. Festplatte) und
7 Eine verbreitete Variante des Programms ist unter dem Namen tex--xet (mit --) auf den CTAN-Servern vorhanden.
8 Dieser Aspekt zeigt eine interessante Parallele zwischen TEX und Fortran ...
10 Kapitel 1. Was ist T £X?
zeigt einen Ausschnitt davon auf dem Bildschinn. Der Text wird dabei tiberhaupt nicht fonnatiert.
Wir besprechen diesen Unterschied, wei I viele, die an WYSIWYG Systeme gewohnt sind, sich dessen nicht bewuBt sind: Sie kennen nur Textverarbeitungssysteme. Wo konnen Sie einen Texteditor finden? Fast tiberall. Jedes Textverarbeitungssystem beinhaltet einen Texteditor, den Sie verwenden konnen. Falls Sie das tun, mtissen Sie sicherstellen, daB Sie Ihre Datei mit "save" oder "save text only" speichem, so daB die Fonnatierungsanweisungen des Textverarbeitungssystems nicht mit abgespeichert werden. Falls Sie ohne diese VorsichtsmaBnahme eine Datei an TJ3X weitergeben, erhalten Sie Unsinn, da TJ3X mit den Fonnatanweisungen des Textverarbeitungssystems nichts anfangen kann9.
2. Schritt: Der eigentliche TEX-Lauf TJ3X's Aktionen konnen schematisch folgendennaBen dargestellt werden:
Quelltext Seiten-
(Text + Kontroll-TJ3X
beschreibung )
sequenzen) r (dvi-File)
Font-Metrik
(tfm-File)
Setzt TJ3X Ihren Text, so ersetzt es zuerst die Zeichen in Ihrem Text durch ihre Abmessungen. Einem Zeichen sind drei Dimensionen zugeordnet: Hohe, Tiefe, und Breite lO.
Nattirlich hangen diese GroBen yom Font ab, den Sie verwenden. Ein "a" ist unterschiedlich breit, je nachdem ob es fett gesetzt ist oder nicht. Die Abmessungen der Zeichen sind in einer speziellen Datei, dem tfm-File (TFJ( font metrics), gespeichert. Dieselbe Datei enthalt weitere Infonnationen, z. B. tiber die Ligaturen (sie werden automatisch von TJ3X gesetzt) und Korrekturen in der Kursivschrift (nach einem kursiv geschriebenem Wort wird ein winziger Leerraum eingefligt, so daB es besser aussieht) betreffen.
Nachdem TJ3X einen ganzen Absatz gelesen und in diese Dimensionen umgewandelt hat, addiert, subtrahiert, multipliziert und dividiert TJ3X diese Zahlen mit Vollgas und kommt mit einer abstrakten Beschreibung dessen, wie der Absatz auf der Seite aussehen wird, raus. Diese Beschreibung wird in eine sogenannte dvi-Datei (flir device independent, d. h. gerateunabhangig, die gleiche Datei wird auf allen Ausgabegeraten dargestellt, unabhangig von deren Auflosung) geschrieben.
3. Schritt: Die Ausgabedatei erstellen TJ3X arbeitet nur mit Dimensionen: Es ignoriert vollkommen die Fonn der Zeichen.
Wenn die dvi-Datei erstellt ist, muB ein anderes Programm gestartet werden, urn die
9 Es existieren einige Konverter, mit denen aus mit einem Textverarbeitungssystems formatierten Texten U\Tp<:-Dokumente erstellt werden konnen. Die Umsetzung vom u\TP<: nach TJY( ist durch Redefinition von Makros moglich.
10 Hohe (Tiefe) ist die vertikale Ausdehnung des Zeichens oberhalb (unterhalb) der Grundlinie
1.6 Eine Vorschau 11
Seite wirklich darzustellen: ein Treiber, der die Seite zu einem Drucker schickt, oder ein Previewer, der die Seite auf Ihrem Bildschirm zeigt.
Folgendes passiert dabei:
Seiten- ausgegebene Seite
beschreibung Treiber oder Previewer
(auf dem Schirm )
(dvi-File) r oder auf Papier)
Pixel-
Files
(pk-Files)
Der dvi-Treiber (oder Previewer) sucht in einer anderen Art von Dateien, den sogenannten Pixel Files, nach der Form der Zeichen. Mit dieser Information erzeugt er dann das richtige Pixelmuster auf Ihrem Blatt Papier bzw. Bildschirm.
Dieser Uberblick liber die Arbeitsweise von TEX erkHirt, warum Sie (nicht) jeden beliebigen Font mit TEX verwenden konnen: Sie mlissen die metrischen Informationen in einem tfm-File vorratig haben. Mehr und mehr Fonts werden heutzutage mit tfm-Dateien vertrieben. Es gibt auch Programme, urn tfm-Files flir PostScript-Fonts zu erzeugen -ausgehend von Metrik-Files (afm-Files), die mit diesen Fonts ausgeliefert werden.
1.6 Eine Vorschau Wir haben gerade die Vor- und Nachteile von TEX diskutiert. Es ist nun an der Zeit, daB
Sie es ausprobieren. Dazu sollten Sie einen oder beide der zwei folgenden kurzen Texte in Ihren Computer eingeben. (Lassen Sie den zweiten aus, wenn Sie nicht an Mathematiksatz interessiert sind.)
Vergleichen Sie zuerst den Quelltext mit der Ausgabe. Versuchen Sie die Wirkung jeder control sequence (Kontrollsequenz: das ist ein Wort, das mit einem umgekehrten Schragstrich beginnt) zu erraten. Dann schreiben Sie mit einem Texteditor Ihrer Wahl den ersten Text in eine Datei hobbi t. tex und den zweiten in eine Datei math. tex.
TEX unterscheidet sich von den meisten WYSIWYG Systemen in der Behandlung der zwei "unsichtbaren" Zeichen Leerzeichen und Wagenrlicklauf, die wir im folgenden kurz mit SP (space) und CR (carriage return) bezeichnen. (Die Wagenrlicklauftaste drlicken Sie, wenn Sie im Quelltext eine neue Zeile beginnen wollen.) Normalerweise konnen Sie bei TEX nach Belieben eine neue Zeile beginnen: Auch wenn Sie nur ein Wort pro Zeile schreiben, wird das Ergebnis immer das gleiche bleiben, wei I TEX bei der Formatierung den Rand ausgleicht, so daB alle Zeilen gleich lang sind. Flir TEX hat ein einzelnes CR
die gleiche Wirkung wie ein SP. Mehrere SP in Folge haben die gleiche Wirkung wie ein einziges. Flir den Beispieltext wird es allerdings das Beste sein, wenn Sie ihn wie unten angegeben eintippen, damit Sie Ihre Datei mit der Vorgabe vergleichen konnen, falls Fehler auftreten.
12 Kapite/ 1. Was ist T g<?
Es gibt eine Ausnahme flir die Regel der Aquivalenz von SP und CR: Wenn TJY( mindestens zwei CR hintereinander sieht - also eine oder mehrere Leerzeilen findet - beginnt es automatisch einen neuen Absatz. Sie sollten also auch die Leerzeilen beachten, wenn Sie die Beispieltexte eintippen. (Normalerweise werden Quelltexte aber ohnehin nach der oben beschriebenen Regel erstellt.)
Raben Sie einen oder beide Texte eingegeben, sollten Sie T}3X laufen lassen und die Ausgabe zum Drucker schicken oder auf einem Bildschirmtreibem darstellen lassen. Fur die meisten Implementierungen lautet der Befehl urn die entsprechende Datei, (die hier hobbi t. tex heiBt,) formatieren zu lassen, tex hobbit.
Der Befehl, urn die resultierende dvi-Datei, (die die Seitenbeschreibung des Quelltextes enthalt), drucken zu lassen, ist vollkommen systemabhangig. Sie mussen also jemanden fragen oder in der Dokumentation nachsehen urn zu wissen, was zu tun ist.
Bei der auf PC's sehr verbreiteten emTJY(-Implementation wird z. B. zur Bildschirmdarstellung v hobbit (unter DOS) bzw. dvipm hobbit (unter OS/2) angegeben. Zum Ausdrucken auf einem Laserjet4 kompatiblen Drucker wird prthplj hobbit angegeben. (Fur andere gangige Drucker stehen entsprechende Dateien zur Verfligung.)
Unter Unix ist die Konvertierung nach PostScript-Standard. (Sie ist unter DOS und OS/2 ebenfalls moglich.) Dort wird mit dvips hobbit die Datei hobbit. ps erzeugt, die dann mit ghostview hobbit dargestellt und ausgedruckt werden kann.
Wenn Sie TJY( laufen lassen, konnen Fehlermeldungen erscheinen, die anzeigen, daB in Ihrem Quelltext Druck- oder Satzfehler sind. Anworten Sie auf jede Fehlermeldung mit CR, danach editieren Sie wieder Ihre Datei, urn die Druckfehler zu korrigieren. SchlieBlich wird TJY( ohne Fehlermeldung laufen, und Sie konnen die dvi-Datei zum Drucker schicken und sich dann den Ausdruck ansehen. (Wie Sie vielleicht bemerken, entsprechen die Anfiihrungszeichen im folgendem Text nicht den ublichen deutschen Konventionen. Das Thema Anfiihrungszeichen behandeln wir erst spater, Abschnitt 2.2.)
Erster Text \hsize=115mm
"Guten Morgen!" sagte Bilbo schlie{\ss}lich. "Wir wollen hier keine Abenteuer, vielen Dank! lhr k\" onnt es hinter dem Berg oder jenseits des Wassers versuchen!" Damit meinte er, die Unterhaltung w\" are beendet.
"Was lhr nicht alles unter einem {\it guten Morgen\/} versteht", sagte
Gandalf. "Jetzt meint lhr, da{\ss} lhr mich damit loswerden k\" onntet, da{\ss} es gut w\ II are , wenn ich verschw\" ande."
"Keineswegs, keineswegs, mein bester Herr -- wie hei{\ss}t lhr eigentlich?' ,
"Ja, freilich, mein bester Herr! lch wei{\ss} sehr gut, wie lhr hei{\ss}t, Mister Bilbo Beutlin. Und lhr kennt auch meinen Namen,
1.6 Eine Vorschau
obgleich lhr nicht ahnt, da{\ss} ausgerechnet ich dazu geh \ "ore: lch bin Gandalf, und Gandalf, denkt nur, das bin ich! Reizend, da{\ss} Belladonnas Sohn mich mit einem ,Guten Morgen' wegscheuchen will, als ob ich Kn\"opfe an der T\"ur verkaufte!"
"Gandalf, Gandalf! Du lieber Himmel, doch nicht der wandernde Zauberer, der dem alten Tuk ein Paar magischer Diamantenklammern verehrte, die sich von selbst schlossen und
13
sich niemals ohne Befehl l\"osten? Keiner verst and es wie er, beim Kaffeetrinken solch wunderbare Geschichten \"uber Drachen zu erz\"ahlen, \"uber Kobolde und Riesen, \"uber gerettete Prinzessinen und \"uber das unvorhergesehene Gl\"uck von S\"ohnen armer Witwen \dots\ Der Himmel sei mir gn\"adig, so ein Leben schien aber -- ich meine, lhr habt in dieser Gegend allerhand angerichtet. lch bitte urn Verzeihung, aber ich hatte keine Ahnung, da{\ss} lhr noch immer solchen Unfug macht.' '\footnote *{J. R. R. Tolkien, {\it The Hobbit}. \"Ubersetzt von Walter Scherf}
\bye
"Guten Morgen!" sagte Bilbo schlieBlich. "Wir wollen hier keine Abenteuer, vielen Dank! Ihr konnt es hinter dem Berg oder jenseits des Wassers versuchen!" Damit meinte er, die Unterhaltung ware beendet.
"Was Ihr nicht alles unter einem guten Morgen versteht" , sagte Gandalf. "Jetzt meint Ihr, daB Ihr mich damit loswerden konntet, daB es gut ware, wenn ich verschwande."
"Keineswegs, keineswegs, mein bester Herr - wie heiBt Ihr eigentlich?" "Ja, freilich, mein bester Herr! Ich weiB sehr gut, wie Ihr heiBt, Mister Bilbo
Beutlin. Und Ihr kennt auch meinen Namen, obgleich Ihr nicht ahnt, daB ausgerechnet ich dazu gehore: Ich bin Gandalf, und Gandalf, denkt nUT, das bin ich! Reizend, daB Belladonnas Sohn mich mit einem ,Guten Morgen' wegscheuchen will, als ob ich Knopfe an der Tur verkaufte!"
"Gandalf, Gandalf! Du lieber Himmel, doch nicht der wandernde Zauberer, der dem alten Tuk ein Paar magischer Diamantenklammern verehrte, die sich von selbst schlossen und sich niemals ohne Befehl lost en? Keiner verst and es wie er, beim Kaffeetrinken soleh wunder bare Geschichten uber Drachen zu erzahlen, uber Kobolde und Riesen, uber gerettete Prinzessinen und uber das unvorhergesehene Gluck von Sohnen armer Witwen ... Der Himmel sei mir gnadig, so ein Leben schien aber - ich meine, Ihr habt in dieser Gegend allerhand angerichtet. Ich bitte urn Verzeihung, aber ich hatte keine Ahnung, daB Ihr noch immer solehen Unfug macht.*"
* J. R. R. Tolkien, The Hobbit. Ubersetzt von Walter Scherf
14 Kapitel 1. Was ist T e<?
Zweiter Text
\hsize=115mm
\center1ine{\bf 3. Endomorphismus eines $A$-Modu1s endlichen Typs}
\medskip \noindent Theorem 3.1. {\it Sei $M$ ein $A$-Modu1 end1ichen Typs und $u:M\rightarrow M$ ein Endomorphismus von $M$. Dann gilt: $$ u \hbox{ ist surjektiv }\iff u \hbox{ ist bijektiv.} $$}% Ende der Kursivschrift
Die Richtung $\Leftarrow$ ist k1ar. Wir beweisen die Richtung $\Rightarrow$. Seien $(x_1,x_2,\ldots,x_n)$ Erzeugende von $M$. Da $u$ surjektiv ist, existiert ein $y_i\in M$, so da{\ss}\ $x_i- \hbox{f\"ur $1\le i\le n$}. \leqno(3.1.1) $$ Versieht man $M$ mit der durch $u$ induzierten $A[T]$-Modu1 Struktur, so fo1gt daraus $$ x_i=\sum_{j=1}-n (a_{ij}T)x_j\qquad\hbox{in $M$}. \leqno(3.1.2) $$
Weiter versehen wir den $A[T]$-Modu1 $M-n$ mit der Mat$_n(A[T])$-Modu1 Struktur, die in (2.2.4) beschrieben wurde. Nun ist es 1eicht zu sehen, da{\ss}\ aus (3.1.2) in $M-n$ fo1gt $$ \pmatrix{ 1-Ta_{11} & -a_{12} & \ldots& -a_{1n} \cr -a_{21} & 1-Ta_{22}& \ldots& -a_{2n} \cr \vdots & \vdots & \ddots& \vdots \cr -a_{n1} & -a_{n2} & \ldots& 1-Ta_{nn}\cr }
\pmatrix{x_1 \cr x_2 \cr \vdots \cr x_n \cr} O. \leqno\rm (3.1.3) $$ \bye
1.7 Eine Manteldatei erzeugen 15
3. Endomorphismus eines A-Moduls endlichen Typs
Theorem 3.1. Sei M ein A-Modul endlichen Typs und U : M ---+ M ein Endomo'T'phismus von M. Dann gilt:
u ist sU'T'jektiv -¢::::::} U ist bijektiv.
Die Richtung {::= ist klar. Wir beweisen die Richtung =? Seien (Xl, X2, ... ,Xn )
Erzeugende von M. Da u surjektiv ist, existiert ein Yi E M, so daB Xi = U(Yi). Weil die Xi M generieren, existieren aij E A (1 ::; i ::; n) mit Yi = 2:7=1 aijXj, weshalb
(3.1.1) n
Xi = LaijU(Xj) j=l
fUr 1 ::; i ::; n.
Versieht man M mit der durch u induzierten A[T]-Modul Struktur, so folgt daraus
(3.1.2) n
Xi = L(aijT)xj j=l
inM.
Weiter versehen wir den A[T]-Modul Mn mit der Matn(A[T])-Modul Struktur, die in (2.2.4) beschrieben wurde. Nun ist es leicht zu sehen, daB aus (3.1.2) in Mn folgt
(3.1.3) =~~: ) (~~) = O.
1- ~ann X:n
Einige Variationen Nachdem Sie beide Dateien ohne Fehler haben laufen lassen, sollten Sie die folgenden
Variationen versuchen:
• Ersetzen Sie \hsize=115mm am Dateianfang durch \hsize=3in. Dies andert die Breite der Seite, d. h. die Lange der Zeilen.
• Fiigen Sie \ vsize=5cm an den Dateianfang hinzu. Dies setzt die Hohe der Seite auf fiinf Zentimeter zuriick, so daB Sie einen Seitenumbruch erhalten.
• Fiigen Sie \parindent=25mm oder (ein anderes Mal) \parindent=-25mm am Dateianfang ein. Dies bestimmt den Einzug am Absatzanfang.
• Fiigen Sie \baselineskip=15pt am Dateianfang ein, so bestimmen Sie den Zeilenabstand per Hand. (Ein Punkt, abgekiirzt pt, ist eine im Buchdruck oft verwendete Einheit; 28,5pt entsprechen ungefahr einem Zentimeter.)
• Fiigen Sie \parskip=5pt am Dateianfang ein, urn den Abstand zwischen den Absatzen zu andem.
16 Kapitel 1. Was ist T eX?
1.7 Eine Manteldatei erzeugen
Wenn Sie ein groBes Dokument zu setzen haben, ist es am besten, nicht den ganzen Text in einer Datei unterzubringen, denn groBe Dateien sind recht unhandlich. Eine gute Faustregel ist es, eine Datei auf nicht mehr als 500 Zeilen anwachsen zu lassen. Sie sollten also etwa ein Kapitel oder einen Abschnitt in einer Datei haben.
Angenommen, Ihr Dokument ist auf vier Dateien verteilt, zum Beispiel doc1. tex, ... , doc4. tex. Es ist nicht notwendig, die einzelnen Dateien und die Makro-Datei in einer Datei zu vereinen, urn sie zusammen laufen zu lassen. Stattdessen ist es giinstiger, eine kleine Manteldatei (master file) zu schreiben, die Sie z. B. master. tex nennen. In ihr steht einfach:
\input doc1. tex \input doc2.tex
\input doc3.tex \input doc4.tex \bye
Wenn Sie nun tex master eingeben (oder wie immer Sie Tpc auf Ihrem System zum Laufen bringen), wird Tpc die Dateien doc 1. tex, ... , doc4. tex nacheinander lesen und sich verhalten, als ob die vier eine groBe Datei waren.
Angenommen, Sie wollen auch mehrere Optionen setzen so wie am Ende des letzten Unterkapitels, z. B. \hsize, \ vsize, oder \parindent. Sie ki:innten dies am Anfang jeder der vier Dateien doc1. tex, ... , doc4. tex tun, aber da diese Befehle das ganze Dokument betreffen, ist es das beste, nicht die einzelnen Dateien damit zu belasten - es gibt keinen Grund, warum die Befehle viermal gelesen werden sollten. Stattdessen ki:innen Sie alle in eine Makro-Datei (macro File oder options File oder style File) schreiben und diese z. B. doc. mac nennen. Die Datei sieht dann etwa so aus:
\hsize=4.5in \vsize=6in \parindent=lin
Jetzt fiigen Sie noch \input doc. mac an den Anfang der Manteldatei ein, so daB diese Datei noch vor docl. tex gelesen wird.
1.8 Fehlermeldungen und Warnungen
Probleme bei der Eingabe von Quelltexten
Selten gelingt einem ein Quelltext gleich beim ersten Mal richtig, besonders wenn man ein Anfanger ist. Wenn Tpc einen Fehler entdeckt, wird eine Fehlermeldung auf dem Terminal ausgegeben. Die Fehlermeldung wird ebenfalls in die sogenannte log-Datei geschrieben, so daB Sie sich die Meldungen nicht aufschreiben miissen; Sie ki:innen, nachdem der Tpc-Lauf beendet wurde, in der Datei nachschauen.
TPC unterscheidet zwei Klassen von Problemen: zum einen sind dies syntaktische Fehler, die also fehlerhaft angewendete Tpc-Makros. Oft werden z. B. die ein Argument begrenzenden geschweiften Klammem vergessen. T:W( kann in einer solchen Situation nicht ohne exteme Hilfe weiter arbeiten. Die Ubersetzung wird angehalten. Unten zeigen wir, wie auf diese Fehler reagiert werden kann.
1.8 Fehlermeldungen und Warnungen 17
Weiter gibt es kleinere Probleme, die nicht unmittelbar mit der Abarbeitung und Auswertung von Makros zusammenhangen, sondem die den erzeugten Umbruch (Drucksatz) betreffen. Diese werden als Wamungen bezeichnet.
Wamungen werden auf dem Terminal und in der log-Datei ausgegeben, sie stoppen die Bearbeitung des Quelltextes jedoch nicht, siehe unten.
Fehler und ihre Behandlung Oftmals konnen Sie einen Fehler nicht zur Laufzeit korrigieren, und das Beste ist es
dann, TEX zu sagen, daB es trotz des offensichtlichen Unsinns weitermachen soIl. Dies tun Sie, indem Sie die Eingabetaste driicken, wenn TEX Fragezeichen auf dem Bildschirm ausgibt. Andererseits konnen diese Meldungen Ihnen auch viel Zeit ersparen - wenn Sie nach und nach deren Bedeutungen und Ursachen lemen.
Hier ist eine Fehlermeldung, der Sie anfangs oft begegnen werden:
! Undefined control sequence 1.27 xxxxxx \hvill
yyyyyy ?
Hier stehen xxxxxx und yyyyyy fUr den direkt vor und nach dem Fehler stehenden Text, und TEX sagt, daB es gerade in Zeile 27 einen Befehl \hvill gelesen hat, dessen Bedeutung es nicht kennt. TEX wird den Befehl ignorieren, stoppt aber hier, urn Ihnen die Moglichkeit zu geben, noch etwas zu reparieren.
Das Fragezeichen bedeutet, daB TEX auf Antwort wartet. Hier sind fUnf mogliche Antworten:
• H oder h eintippen (gefolgt von einem CR). TEX bietet Hilfe in Form einer etwas langeren Darstellung des Problems an. Diese Moglichkeit ist oft fUr Anfanger niitzlich.
• Nur CR eingeben (nur die Eingabetaste driicken). Das bedeutet, daB Sie TEX nichts mitzuteilen haben und daB es weitermachen soIl, so gut es kann. Wenn der Fehler nicht schwerwiegende Folgen hat, wird sich TEX im allgemeinen recht schnell wieder fangen, und nachfolgende Absatze sind vom Fehler meistens nicht beeintrachtigt. Aber es gibt Fehler, von denen TEX sich nicht so schnell erholen kann, und Sie miissen dann mehrere Male hintereinander CR eingeben. In diesem Fall konnen Sie sich Arger ersparen, indem Sie Q oder q (fUr "quiet") eintippen, was das gleiche ist, als ob Sie bei allen Fehlermeldungen CR bis ans Ende des Laufes eintippen.
• Text vor yyyyy eingeben. Dies geschieht, indem Sie I oder i gefolgt von dem, was immer Sie auch eingeben wollen, eintippen und mit CR abschlieBen. 1m obigen Beispiel war \hvill ein falsch getipptes \hfill, so daB Sie Ihr urspriingliches Ziel durch die Eingabe von i \hfill erreichen. Achtung: Was Sie interaktiv eingeben, wird nicht in Ihren Quelltext geschrieben! Sie werden dart die Korrektur nicht finden, wenn Sie den Text wieder editieren. Aber die log-Datei enthalt alles, was Sie in TEX eintippen; so konnen Sie also eine lange Definition von dart mit Ihrem Editor in den Quelltext kopieren.
• Die nachste Moglichkeit ist es X oder x (fUr "exit") einzugeben. TEX stoppt dann, aber aIle bisher bearbeiteten Seiten sind in der dvi-Datei gesichert und konnen zu einem Drucker oder Previewer geschickt werden.
18 Kapitel 1. Was ist T EX?
• In extremen Hillen miissen Sie die Unterbrechungs- oder Reset-Taste (auf PC's ist es oft die Tastenkombination CTRL-C) driicken, urn den Lauf abzubrechen, und dann im Quelltext nachsehen, urn zu erraten, was derart schiefgelaufen ist. Gliicklicherweise ist eine solche Situation sehr selten ...
Wie man am \hvill-Beispiel sieht, zeigt TEX die Zeile, in der der Fehler auf tritt, an - oder vielmehr ein Zeilenpaar, da die Zeile, an dem Punkt, wo der Fehler gefunden wird, umgebrochen wird. Fehler kannen nicht nur dann gefunden werden, wenn neues Material eingelesen wird, sondem auch, wenn TEX mit Befehlen arbeitet, die schon eingelesen sind (wie etwa beim "Expandieren von Makros", siehe Kapitel 12). In diesem FaIle werden mehrere Zeilenpaare ausgegeben; nur das letzte Paar gibt an, was gerade eingelesen worden ist. Falls Ihnen die unverstandlichen "Kontextzeilen", die jedesmal, wenn ein Fehler auf tritt, den Bildschirm fiillen, lastig werden, dann beginnen Sie Ihre Datei mit \errorcontextlines=O. Dies wird die Ausgabe aller Kontextzeilen, bis auf die erste (wo die unmittelbare Ursaehe des Problems liegt) und die letzte (die Zeile, iiber die TEX stolperte) unterdriicken. (Bemerkung: TEX -Versionen, die alter als Version 3.0 sind, kennen \errorcontextlines nieht.)
! Runaway argument?
Sie haben mehr als einen Absatz einem Makro (wie etwa \centerline) iibergeben, das nur einen Absatz oder weniger auf einmal verarbeiten kann.
! Missing $ inserted.
TEX ging gerade von alleine in den Mathematikmodus, wei I es etwas fand, das es nur im Mathematikmodus erwartet: einen Exponenten oder einen grieehisehen Buehstaben zum Beispiel. Deshalb tut es so, als ob vor dem Objekt des AnstoBes ein Dollarzeichen stande. Aber Achtung: TEX mag zwar wissen, wann es in den Mathematikmodus wechseln muB, aber nieht, wann es ihn wieder zu verlassen hat! Deshalb werden Sie im allgemeinen eine oder mehrere Overfull \hbox-Meldungen erhalten, weil TEX nun Text im Mathematikmodus setzt und dabei Leerzeiehen ignoriert. Keine Sorge, der Fehler ist im Quelltext schnell behoben, indem Dollarzeiehen an den richtigen Stellen eingefiigt werden.
Warnungen
Haufige treten Wamungen folgender Form auf:
! Overfull \hbox (gefolgt von einer GraBenangabe)
Das ist nieht sehr sehlimm: Das Programm halt nicht einmal an. TEX schreibt gerade auf den Rand, weil es den Text nieht in eine normale Zeile hineinkriegt. Wenn der Uberhang sehr groB ist (in der GraBenordnung von 100 pt oder mehr), sollten Sie nachsehen, ob Sie etwa \line oder \centerline mitten in einem Absatz verwendet haben. Es kann auch sein, daB TEX schon vorher verwirrt wurde und versehentlich in den Mathematikmodus geraten ist.
1.8 Fehlermeldungen und Warnungen 19
Underfull \hbox (oderUnderfull \vbox)
TEX mag weder iiber- (wie im vorigen Beispiel) noch unterbelegte Boxen. Sie konnen auch diese Mitteilungen ignorieren, und machen Sie sich keine Sorgen urn das Seitenlayout; das behandeln wir spater.
Ein Tip: Wenn TEX eine iibervolle Box findet, markiert es diese mit einem dicken vertikalen Balken am rechten Seitenrand. Die Breite des Balkens wird durch den Wert der Variablen \overfullrule bestimmt, so daB Sie diesen unsichtbar machen konnen, indem Sie \overfullrule=Opt am Anfang Ihres Quelltextes eingeben. Sie konnen auch bestimmen, wie streng TEX die Meldung handhabt. Wenn Ihr Text den Seitenrand nur urn einen winzigen Betrag, z.B. Ipt, iiberschreitet, sollten Sie \hfuzz=lpt (das sind etwa 0.3 mm) am Anfang Ihres Quelltextes - oder besser in der Makrodatei, die wir in Abschnitt 1.7 eingefiihrt haben - schreiben.
Entsprechendes gilt fiir die vertikalen Oberschreitungen: Die Wamung
! Overfull \vbox
weist auf eine zu groBe vertikale Box hin. Durch Angabe eines Grenzwertes \ vfuzz=2pt werden nur noch Boxen gemeldet, die diesen Wert iiberschreiten.
Normalerweise sind iibergroBe vertikale Boxen die Ausnahme. Meistens wurde irgendwo weiter yom - z. B. in der Makrodatei - versehentlich eine Definition so ungiinstig verandert, daB diese Wamung auftritt.
Die Eingabe beenden Wenn Ihre Datei nicht mit einem \bye- oder einem \end-Befehl endet, wird TEX diese
abarbeiten und Ihnen dann die Moglichkeit geben, mehr Material einzugeben. TEX fordert Sie durch ein auf dem Bildschirm angezeigtes *-Zeichen zur Eingabe von Text und/oder Befehlen auf. Wenn Sie nichts einzugeben haben, tippen Sie \bye ein. Ein CR an dieser Stelle wiirde TEX ziemlich frustrieren und folgende Fehlermeldung erzeugen:
(Please type a command or say '\end')
Falls die Eingabe von \bye oder \end nicht den Lauf beendet, dann hat die Quelltextdatei TEX in einen konfusen Zustand versetzt. Wie man in diesem Falle TEX stoppt, hangt von Ihrer Maschine ab: Die meisten Betriebssysteme haben ein Dateiendezeichen - auf PC's ist dies oft CTRL-Z (DOS, OS/2, etc.) oder CTRL-D (Linux) -, das Sie eingeben konnen, urn zu signalisieren, daB nun wirklich keine weitere Eingabe mehr erfolgt. Fragen Sie dazu Ihren Systemadministrator, oder konsultieren Sie die Dokumentation Ihres TEX-Systems.