TeX
TeX ([tɛx], im deutschsprachigen Raum auch [tɛç] ), in Eigenschreibweise , ist ein von Donald E. Knuth ab 1977 entwickeltes und 1986 fertiggestelltes Textsatzsystem mit eingebauter Makrosprache (die ebenfalls TeX genannt wird). Im engeren Sinn ist TeX ein einzelnes Programm (auf einem Rechner eine ausführbare Datei bzw. der zugrundeliegende Quellcode), das einfache Textdateien und Zeichensatzdateien einliest und eine binäre Dokumentdatei (gewissermaßen eines Grafikformats, genauer einer Seitenbeschreibungssprache) erzeugt, die von anderen Programmen ausgedruckt, angezeigt oder anderweitig für eine Ausgabe weiterverarbeitet werden kann; die Funktionalität dieses Programms ist seit 1990 „eingefroren“, und heutzutage wird es vorwiegend von Weiterentwicklungen wie pdfTeX emuliert. In einem weiten Sinne besteht das Textsatzsystem TeX aus Weiterentwicklungen dieses Programms, aus Zeichensatzdateien, tausenden Paketen, die als Eingabetexte verwendet werden können, und vielen weiteren Programmen zur Vor-, Nach- und Zwischenbearbeitung (Sortieren von Registereinträgen, Erzeugen des Literaturverzeichnisses aus einer Datenbank, Bildschirmanzeige, …). Der am einfachsten zu erlernende und auch für unterschiedlichste Kombinationen von Anforderungen am besten gepflegte Zugang zu TeX besteht in der Verwendung des Makropakets LaTeX (samt seinen Erweiterungen), sodass für die Masse der Anwender „TeX“ und „LaTeX“ gewissermaßen dasselbe ist.
(TeX) | |
---|---|
Basisdaten | |
Entwickler | Donald E. Knuth |
Erscheinungsjahr | 1978 |
Aktuelle Version | 3.141592653 (Januar 2021) |
Betriebssystem | viele |
Programmiersprache | Web, Pascal, SAIL |
Kategorie | Schriftsatz |
Lizenz | eigene liberale Lizenz |
www.tug.org |
Aussprache und Herkunft
TeX ist eine Abkürzung des altgriechischen τέχνη téchnē („Fähigkeit, Kunstfertigkeit, Handwerk“). Die Buchstaben stehen für die griechischen Buchstaben Tau, Epsilon und Chi (Τ, ε und Χ). In der Darstellung sind diese nicht selten identisch mit lateinischem T, e und X, jedoch unterscheidet sich Letzteres in der Aussprache.
Laut Knuth soll das X als Ach-Laut wie etwa im deutschen Wort ach ausgesprochen werden, also: [tɛχ].[1][2] Dieser Laut ist nach einem vorderen Vokal wie e für viele deutsche Sprecher ungewohnt. Daher hat sich im Deutschen auch die Aussprache [tɛç] eingebürgert – mit Ich-Laut wie in Technik und anderen von téchnē abgeleiteten Wörtern.
Verwendung
TeX kann für alle Arten von Texten verwendet werden, vom kurzen Brief bis zu mehrbändigen Büchern, wobei TeX ursprünglich für längere Texte und wissenschaftliche Arbeiten entwickelt wurde. Viele große wissenschaftliche Verlage nutzen es für den Bücherdruck bzw. Werksatz. Eine besondere Stärke ist der mathematische Formelsatz sowie das erzeugte Schriftbild. Bei letzterem insbesondere der hochwertige Blocksatz.
Technik
Technisch gesehen handelt es sich bei TeX um einen Interpreter, der rund 300 fest eingebaute Befehle (sogenannte primitives) kennt und einen komplexen Mechanismus zur Definition eigener Makros bereitstellt. Aus entsprechenden Quelldateien erstellt TeX sogenannte DVI-Dokumente, neuere Versionen können auch direkt PDF-Dateien erzeugen. Der Textsatz erfolgt absatzweise, wobei nach einem eigenen Optimierungsverfahren alle Zeilenumbrüche (inklusive Worttrennung) im Absatz gleichzeitig bestimmt werden. Ein einfacher Algorithmus bestimmt danach den optimalen Seitenumbruch. Die Optimierungsverfahren arbeiten mit Bewertungspunkten (penalties), anhand derer die möglichen Umbruchpunkte bewertet werden. Zeilen- und Seitenumbruch werden von einer Vielzahl von Parametern, insbesondere Registern und elastischen Längen, gesteuert, die auch im Dokument geändert werden können (genauere Beschreibung erfolgt unten). TeX selbst kommt mit einem Minimum an Ressourcen aus und stellt nur die Grundfunktionen zur Verfügung.
TeX wird durch eine Vielzahl von Softwarepaketen ergänzt, die eine effiziente und komfortable Nutzung von TeX erst ermöglichen. Eine relativ einfache Software-Zusammenstellung, die die wichtigsten allgemeinen Grundbedürfnisse erfüllt, ist das von Donald E. Knuth selbst entwickelte plain TeX, das in Knuths Einführungsbuch The TeXbook ausführlich beschrieben ist. Weitaus bekannter und anwenderfreundlicher ist das ursprünglich von Leslie Lamport entwickelte LaTeX. Darauf aufbauend gibt es mehrere Tausend Zusatzpakete für alle erdenklichen Gebiete. Mit dem Paket hyperref[3] lässt sich beispielsweise ohne großen Zusatzaufwand ein Hypertext erstellen, der die Navigation im Inhaltsverzeichnis und im Index in einem PDF-Leseprogramm sowie Links ins Internet ermöglicht. Das Programm BibTeX ermöglicht die Erstellung und Verwaltung von Quellenangaben in TeX-Texten, MakeIndex erzeugt aus „rohen“ Indexeinträgen der Gestalt (Terminus, Seite) Seitenzahllisten für die jeweiligen Terminus-Einträge. Inzwischen sind moderne utf8-fähige Alternativen zu diesen Werkzeugen entwickelt worden.[4]
„Erweiterungen“, „Formate“, Makros
„Erweiterungen von TeX“ sind folgendermaßen zu unterscheiden:
- Weiterentwicklungen wie pdfTeX, die in einem einzelnen Programm (als Binärdatei) bestehen und die Funktionalität des Programms TeX erweitern (siehe unten);
- Formate im Sinne typischerweise umfangreicher Makrosammlungen wie die genannten plain TeX und LaTeX („Format“ hier nicht zu verwechseln mit „Dateiformat“, mehr folgt);
- Zusatzpakete im Sinne kleinerer Makrosammlungen (Textdateien), die zumeist auf ein einzelnes Format zugeschnitten sind, wie LaTeX-Erweiterungen; das genannte hyperref ist eine solche „LaTeX-Erweiterung“.
Ein Makro ist gekennzeichnet durch einen gewöhnlich mit einem Backslash (umgekehrten Schrägstrich) beginnenden „Befehl“ und eine damit verbundene Ersetzungsregel.[5] Beispielsweise wird unter plain TeX und LaTeX \leavevmode
durch \unhbox\voidb@x
ersetzt. Wenn ein Format als „Makrosammlung“ bezeichnet wird, ist damit eine Sammlung entsprechender Ersetzungsregeln gemeint. Erst durch ein solches Format wird TeX für praktische Anwendungen handhabbar. („Lebensnahe“ Beispiele von Makros findet man unter LaTeX#Aufbau eines Dokuments.)
Ein TeX-Format ist typischerweise folgendermaßen gekennzeichnet:
- durch eine Textdatei, die die Makro-Ersetzungsregeln enthält – für plain TeX/LaTeX enthält die Datei
plain.tex
/latex.ltx
eine Zeile\def\leavevmode{\unhbox\voidb@x}
zur Ersetzung von\leavevmode
; - durch eine Binärdatei mit der Endung
.fmt
(plain.fmt
/latex.fmt
), die TeXs Speicher nach Einlesen der Makrosammlungsdatei darstellt (zusätzlich aber noch Speichergrößenparameter und sprachspezifische Trennregeln enthält); - durch auf das Format zugeschnittene Zusatzpakete (z. B. LaTeX-Erweiterungen) – im „TeX-Archiv“ des Comprehensive TeX Archive Network enthält das Verzeichnis
macros/
[6] Unterverzeichnisse für einzelne Formate, in denen ihrerseits die darauf zugeschnittenen Zusatzpakete aufgelistet sind; - durch verfügbare Anleitungen – es gibt Bücher über plain TeX wie The TeXbook und Bücher über LaTeX und seine Erweiterungen wie Der LaTeX-Begleiter, aber keine Bücher über plain TeX und LaTeX.
Erläuterungen:
- Ein TeX-Format ist ein „Mittelding“ zwischen Textdatei und Binärdatei. Im Prinzip könnte TeX einfach die „Makrosammlungen“ plain.tex bzw. latex.ltx, danach die Zusatzpakete und schließlich die Dateien mit dem Text des darzustellenden Dokuments einlesen. In den Jahren um 1990 nahm das Einlesen und Verarbeiten der Makrodefinitionen jedoch so viele Minuten in Anspruch, dass es sinnvoll war, direkt das aus den Wertzuweisungen resultierende Speicherabbild einzulesen, statt diese für jeden TeX-Lauf aus der Makrosammlungsdatei heraus vornehmen zu lassen.
- Appendix E von The TeXbook führt Beispiele kleinerer TeX-Formate auf. Als Appendix B ist eine „menschenlesbare“ Darstellung von plain.tex abgedruckt (mit technischen Auslassungen).
- Im Gegensatz zu formatspezifischen Zusatzpaketen gibt es durchaus auch solche, die mit verschiedenen Formaten verwendet werden können; solche findet man im „TeX-Archive“ unter
macros/generic/
.[7]
ConTeXt
Neben den TeX-Formaten plain TeX und LaTeX ist auch ConTeXt recht bekannt. Im Vergleich zu LaTeX hat es mehr Funktionen (wie Hypertext-Unterstützung) direkt eingebaut, andererseits sind weniger Zusatzpakete als für LaTeX verfügbar. ConTeXt ist jedoch kein Beispiel eines mit Knuths Programm TeX verwendbaren Formats, es funktioniert nur mit „Binärerweiterungen“ von Knuths TeX, siehe ConTeXt#Mark II und Mark IV.
Beispiel
Das folgende Beispiel zeigt die Schritte, um in plain TeX Text zu setzen.
Zuerst wird eine Textdatei (zum Beispiel Text.tex
) mit dem folgenden Inhalt erstellt:
Hallo
\bye
Der zu setzende Text ist in diesem Fall Hallo
.
Die Anweisung \bye
ist ein TeX-Befehl, der das Ende der Datei angibt und in der Ausgabe nicht erscheint.
Danach gibt man in einem Kommandozeileninterpreter den Befehl
tex Text.tex
ein. TeX erzeugt die Datei Text.dvi
(dvi
steht für „device independent“, also „geräteunabhängig“).
Die Datei Text.dvi
kann (etwa mit dem yap
-Programm der MiKTeX-Distribution oder mit xdvi
unter Unix) auf dem Bildschirm dargestellt werden. Auf dem Bildschirm erscheint eine Druckseite mit dem Wort „Hallo“.
Die dvi
-Datei kann direkt vom Anzeigeprogramm aus ausgedruckt werden oder in ein Druckerformat (etwa PostScript, mit dem dvips
-Programm) umgewandelt werden.
Die Stärke von LaTeX liegt darin, dass für viele übliche Dokumente bereits Schablonen vorliegen, die man verwenden kann. LaTeX ist ein Softwarepaket mit einer Sammlung von Makros, die in der Sprache TeX geschrieben sind.
Geschichte und Hintergrund
Knuth begann mit der Entwicklung des TeX-Systems, weil er mit der schlechter werdenden typografischen Qualität seiner Buchreihe The Art of Computer Programming (TAOCP) unzufrieden war:
Band 1 erschien 1968, Band 2 1969. Die Druckvorlagen wurden mit der Monotype-Technik gesetzt. Diese Art des Formelsatzes war aufwendig. Nach Erscheinen von Band 3 1973 verkaufte Knuths Verleger seine Monotype-Maschinen. Die korrigierten Neuauflagen von Band 1 und 3, die 1975 erschienen, mussten in Europa gesetzt werden, wo noch einige Monotype-Systeme in Gebrauch waren.
Die Neuauflage von Band 2 sollte 1976 mit Fotosatz erstellt werden, doch die Qualität der ersten Proben enttäuschte Knuth (Digital Typography, Kapitel 1). Er hatte 15 Jahre Arbeit in die Reihe gesteckt und wollte sie nur fortsetzen, wenn die Bücher entsprechend gut gesetzt waren. Im Februar 1977 bot sich ein Ausweg, als Knuth im Rahmen einer Bücherevaluierung die Ausgabe eines digitalen Drucksystems mit 1000 dpi Auflösung vorgelegt bekam. Pat Winston hatte damit ein Buch über künstliche Intelligenz geschrieben. Als Knuth dies klar wurde, unterbrach er die Arbeit an Band 4, von dem er die ersten 100 Seiten fertiggestellt hatte, und entschloss sich, selbst die Programme zu schreiben, die er und sein Verleger brauchten, um Band 2 neu zu setzen. Das Design von TeX begann am 5. Mai 1977.
Knuth schätzte die notwendige Arbeit auf wenige Monate ein. Im Mai 1977 schrieb er an seinen Verleger, dass er die ersten Vorlagen im Juli fertig haben würde.
Nach vier Jahren des Experimentierens mit einem Xerox-Satzsystem hatte er noch kein Ergebnis erzielt, das den Fotosatz übertraf. Knuth gab nicht auf und traf bekannte Schriftdesigner, unter anderem Hermann Zapf (der zu der Zeit das hz-Programm entwickelte), von denen er lernte. Nach fünf weiteren Jahren Arbeit hatte er einen Stand erzielt, mit dem er zufrieden war. Die Fertigstellung von TeX wurde am 21. Mai 1986 im Computer Museum, Boston, Massachusetts gefeiert.
In den Büchern der TAOCP-Reihe wollte Knuth bewusst einen Teil des Wissens der Informatik festhalten, von dem er annahm, dass es bereits eine solche Entwicklungsreife erlangt habe, dass dieses Wissen auch in hundert Jahren noch ähnlich dargestellt werde. Daher war es für ihn sehr ärgerlich, dass die typografische Qualität mit den damaligen Techniken von Auflage zu Auflage nachließ. Dass das TeX-Projekt dann fast zehn Jahre seiner Zeit in Anspruch nehmen würde, war nicht geplant.
“Ever since those beginnings in 1977, the TeX research project that I embarked on was driven by two major goals. The first goal was quality: we wanted to produce documents that were not just nice, but actually the best. […] The second major goal was archival: to create systems that would be independent of changes in printing technology as much as possible. When the next generation of printing devices came along, I wanted to be able to retain the same quality already achieved, instead of having to solve all the problems anew. I wanted to design something that would be still usable in 100 years.”
„Seit den Anfängen 1977 war das TeX-Forschungsprojekt, mit dem ich angefangen hatte, von zwei wesentlichen Zielen geprägt. Das erste war die Qualität: Unsere Druckwerke sollten nicht nur ‚ganz nett‘, sondern tatsächlich die besten sein […] Das zweite große Ziel war die Archivierbarkeit: Das System sollte so unabhängig wie möglich von Änderungen in der Drucktechnik sein. Auch mit der nächsten Generation von Druckmaschinen wollte ich die bisherige Ausgabequalität erhalten und nicht all die Probleme von vorn lösen müssen. Ich wollte etwas entwerfen, das noch in 100 Jahren verwendet werden kann.“
Zu den Programmen des TeX-Systems und ihrer Benutzung verfasste Knuth eine fünfbändige Reihe:
- je einen Band für den Quellcode (mit Kommentaren) für das Satzprogramm TeX und den Schriftgenerator Metafont,
- je einen Band mit Benutzeranleitungen für den Einsatz von TeX und METAFONT,
- sowie einen Band mit den METAFONT-Quellprogrammen der Buchstaben der Computer-Modern-Schriften.
Versionsnummer
Die Versionsnummer von TeX nähert sich der Kreiszahl an, indem bei jeder Fehlerkorrektur eine Ziffer angehängt wird. Die aktuelle Versionsnummer ist 3.141592653. Eine Versionsnummer 4 wird es nach Aussage Knuths nicht geben, da er es – obwohl er selbst schon einige Vorschläge für zusätzliche Funktionen für TeX gemacht hat – als wichtiger erachtet, ein stabil laufendes System zu haben, das auch in 100 Jahren noch dieselben Ausgaben liefert wie heute. Dies hinderte Knuth allerdings nicht daran, anlässlich des (also des 32.) Geburtstages von TeX in einer satirischen Rede vor der TeX Users Group das Erscheinen einer neuen Version mit dem Namen „i-TeX*“ zu kolportieren.[8]
Weiterhin hat Knuth verfügt, dass TeX nach seinem Tod von niemandem weiterentwickelt werden soll. Außerdem solle die Versionsnummer zu geändert werden, und alle Programmfehler, die zum Zeitpunkt seines Todes noch vorhanden sein würden, sollten als Features anerkannt werden. Analog nähert sich die Versionsnummer von Metafont der eulerschen Zahl e.[9]
Neuartige Aspekte des TeX-Schriftsatzes
Der von TeX generierte Schriftsatz wies einige Aspekte auf, die zur Zeit des Erscheinens von TeX neuartig oder in anderen Textsatzsystemen von niedrigerer Qualität waren. Einigen dieser Innovationen liegen interessante Algorithmen zu Grunde, die Thema mehrerer Abschlussarbeiten von Knuths Studenten wurden. Bis heute einzigartig sind die Regeln für Abstände in mathematischen Formeln, andere von Knuths Entdeckungen finden inzwischen in verschiedenen Schriftsatzsystemen Verwendung.
Abstände in Formeln
Da das Hauptaugenmerk Knuths bei der Entwicklung von TeX auf hochqualitativem Textsatz für sein Buch The Art of Computer Programming lag, legte er viel Wert auf gut funktionierende Regeln für die Wahl von Abständen in mathematischen Formeln. Als Grundlage verwendete er Werke, die er für Beispielexemplare hochqualitativer mathematischer Typografie hielt: die Bücher, die bei Addison-Wesley, dem Herausgeber von The Art of Computer Programming, gesetzt wurden – besonders die Arbeit von Hans Wolf –, Ausgaben der mathematischen Fachzeitschrift Acta Mathematica um das Jahr 1910 und ein Exemplar der niederländischen Fachzeitschrift Indagationes Mathematicae. Aus der genauen Analyse des Textsatzes in diesen Werken entwickelte Knuth einen Regelsatz für das Setzen von Abständen in TeX.[10] Während TeX nur einige grundlegende Regeln für die Abstandhaltung bereitstellt, hängen die exakten Parameter von der verwendeten Schriftart ab, die zum Formelsatz verwendet wird. Die Regeln für Knuths Computer-Modern-Schriftarten beispielsweise wurden in jahrelanger Arbeit feinabgestimmt und sind jetzt eingefroren. Als er aber andere Schriftarten wie AMS Euler zum ersten Mal verwendete, mussten neue Abstandhaltungsparameter definiert werden.[11]
Worttrennung und Blocksatz
Im Vergleich zu manuellem Schriftsatz lässt sich das Problem des Setzens im Blocksatz mit einem automatisierten System wie TeX prinzipiell leicht lösen. Ein solches System kann automatisch die Wortabstände in einer Zeile anpassen, wenn definiert wurde, an welcher Stelle ein Zeilenumbruch sinnvoll ist. Das eigentliche Problem besteht also darin, die Zeilenumbruchstellen zu finden, die den besten Gesamteindruck erzeugen. Viele Zeilenumbruchsalgorithmen verwenden einen sogenannten First-Fit-Ansatz: Die Zeilenumbrüche werden Zeile für Zeile festgelegt, und es wird kein Zeilenumbruchspunkt mehr geändert, nachdem er einmal festgelegt wurde.[12] Ein solches System kann einen Zeilenumbruchspunkt nicht danach beurteilen, welchen Effekt der Umbruch auf darauf folgende Zeilen hat. Im Gegensatz zu solchen Algorithmen zieht der Total-Fit-Algorithmus, den Knuth und Michael Plass für TeX entwickelten, alle möglichen Zeilenumbruchspunkte in einem Absatz in Betracht und findet die Kombination derer, die insgesamt das bestaussehende Arrangement hervorbringen.
Formal assoziiert der Algorithmus einen badness genannten Wert mit jedem möglichen Zeilenumbruch. Die badness wird erhöht, wenn die Wortabstände zu stark gestreckt oder gestaucht werden müssen, um eine Zeile in die richtige Länge zu bringen. Strafpunkte werden hinzuaddiert, wenn ein Zeilenumbruch besonders unerwünscht ist, beispielsweise wenn ein Wort getrennt werden muss, wenn zwei Zeilen hintereinander mit einer Worttrennung enden oder wenn eine sehr gestreckte Zeile unmittelbar auf eine sehr gestauchte folgt. Der Algorithmus findet dann den Satz von Umbruchpunkten, der eine minimale Summe der Quadrate der Badness-Werte aufweist. Enthält ein Absatz n mögliche Umbruchpunkte, so müssten mit einem naiven Algorithmus 2n mögliche Zeilenumbruchskombinationen überprüft werden. Mit Methoden der dynamischen Programmierung kann die Komplexität auf O(n2) gesenkt werden. Weitere Vereinfachungen (beispielsweise extrem unwahrscheinliche Umbruchstellen gar nicht zu überprüfen – z. B. eine Worttrennung des ersten Wortes eines Absatzes) führen meist zu einer Laufzeit in der Ordnung n. Im Allgemeinen zeigte Michael Plass, dass das Problem, den besten Seitenumbruch zu finden, aufgrund der erhöhten Komplexität durch die Platzierung von Abbildungen und Tabellen NP-vollständig sein kann.[13] Ein ähnlicher Algorithmus wird verwendet, um Seitenumbrüche in Absätzen so zu platzieren, dass Hurenkinder und Schusterjungen verhindert werden.
Der Zeilenumbruchsalgorithmus von TeX wurde von mehreren anderen Programmen aufgenommen, zum Beispiel von Adobe InDesign[14] und dem GNU-Kommandozeilenwerkzeug fmt.[15]
Wenn kein passender Zeilenumbruch gefunden werden kann, versucht TeX, ein Wort zu trennen. Die ursprüngliche Version von TeX verwendete einen Worttrennungsalgorithmus, der Wortpräfixe und -suffixe erkannte, bei Bedarf entfernte und Bindestriche zwischen den zwei Konsonanten einer Buchstabenkombination Vokal–Konsonant–Konsonant–Vokal einfügte, was in der englischen Sprache meistens möglich ist.[16] TeX82 verwendet einen neuen Worttrennungsalgorithmus, der von Frank Liang 1983 entwickelt wurde und Umbruchpunkten in Wörtern Prioritäten zuordnet. Zunächst wird eine Liste von Worttrennungsmustern aus einem großen Korpus getrennter Wörter generiert (solche Korpora enthalten 50.000 Wörter und mehr). Wenn TeX dann beispielsweise eine akzeptable Worttrennungsposition im Wort encyclopedia finden muss, erzeugt es eine Liste der Teilwörter von „.encyclopedia.“ (der Punkt ist ein Sonderzeichen, das Anfang und Ende des Wortes markiert). Diese Liste umfasst alle Teilwörter der Länge 1 (., e, n, c, y usw.), der Länge 2 (.e, en, nc usw.), bis zur Länge 14, dem Wort inklusive der Punkte selbst. TeX sucht in seiner Liste von Trennungsmustern solche Teilwörter heraus, für die es die Erwünschtheit einer Trennung errechnet hat. In unserem Fall werden 11 solcher Muster gefunden:
1c4l4 | 1cy | 1d4i3a | 4edi | e3dia | 2i1a | ope5d | 2p2ed | 3pedi | pedia4 | y1c |
Für jede Wortposition errechnet TeX nun den Maximalwert aus allen passenden Mustern, was hier
- en1cy1c4l4o3p4e5d4i3a
ergibt. Die ungeraden Zahlen markieren mögliche Trennungspositionen; hier ist das Ergebnis also en-cy-clo-pe-di-a. Dieses auf Teilwörtern basierende System erlaubt die Definition sehr allgemeiner Muster wie 2i1a mit niedrigen Umbruchzahlen (gerade oder ungerade), die, wenn notwendig, durch spezifischere (längere) Muster wie 1d4i3a übergangen werden.
Durch geschickte Parameterwahl ist es möglich, Trennmuster so zu erzeugen, dass
- die Anzahl der Elemente möglichst klein ist – 1983 noch von sehr großer Bedeutung
- fast alle möglichen Trennstellen gefunden werden (über 90 %)
- der Algorithmus keine falschen Trennstellen erkennt (im Zusammenspiel mit einer Ausnahmenliste, die vom Benutzer erweitert werden kann)[16][17]
Die Nachteile des Liangschen Algorithmus zeigen sich in Sprachen wie Deutsch, wo es eine praktisch beliebige Anzahl von Komposita gibt, die nicht bei Erzeugung der Trennmuster berücksichtigt werden können und daher oft falsch getrennt werden.
Status und Weiterentwicklungen
Entwicklung abgeschlossen
Die Definition des Befehlsumfangs von TeX steht seit 1990 fest. Knuths Anliegen war es, ein qualitativ hochstehendes Programm zu schaffen; das Programm wird als abgeschlossen betrachtet, es finden nur noch Fehlerkorrekturen statt. Knuth legt Wert darauf, dass echte Weiterentwicklungen (etwa mit einem erweiterten Satz primitiver Befehle) nicht als „TeX“ bezeichnet werden (siehe Lizenz).
In gängigen Distributionen (siehe unten) können mit den Kommandozeilenbefehlen pdftex
bzw. pdflatex
direkt PDF-Dateien erzeugt werden:
pdftex Text.tex
Grafische TeX-Editoren (siehe unten) bieten Frontends für solche Kommandozeilen. Dazu wird pdfTeX verwendet. Dieses Programm hat einen umfangreicheren Befehlssatz als TeX; die ursprünglichen TeX-Befehle sollen ebenso wirken wie mit TeX, so dass das Makropaket LaTeX und seine Erweiterungen auch mit pdfTeX verwendet werden können (pdflatex
). Ebenso kann Knuths Makropaket plain TeX mit pdfTeX verwendet werden (pdftex
), und The TeXbook kann auch hierfür als Referenz herangezogen werden (trifft jedoch hinsichtlich der Zahl der Register nicht mehr zu). – pdfTeX wird heute in gängigen Distributionen auch zur Erzeugung von TeXs ursprünglichem Ausgabeformat DVI verwendet (z. B. per latex
),[20] TeX kommt nur noch für den Kommandozeilenbefehl tex
zum Einsatz. Auf diese Weise hat man Zugriff auf den Befehlssatz von ε-TeX,[21][19] einer Erweiterung von TeX, die pdfTeX vorherging und z. B. eine größere Zahl von Registern als TeX zur Verfügung stellt. Tatsächlich können heute mit pdfTeX noch weitere, früher selbstständige Weiterentwicklungen von TeX emuliert werden. Unter zusätzlicher Verwendung des Pakets microtype[22] ist außerdem eine Verfeinerung von TeXs Zeilenumbruchalgorithmus zugänglich.
Betriebssystemzeichensätze und Unicode
TeX verwendete zunächst ein ganz eigenes System von Zeichensätzen (mit Knuths Metafont erzeugt), konnte dann auch mit PostScript-Schriftarten umgehen. Letzteres ist für Autoren, die das System nicht professionell, sondern für eigene Texte anwenden wollen, anfangs nicht einfach. Die von einem Office-Textverarbeitungsprogramm auf einem Rechner angebotenen Zeichensätze sind nicht zugänglich. Auch die Verwendung von nicht-angelsächsischen Glyphen und noch mehr von nicht-lateinischen Schriftsystemen ist aus der Perspektive von Office-Anwendern etwas unzugänglich. Dies gilt besonders bei Beschränkung auf das Makropaket plain TeX, während LaTeX standardmäßig gut dokumentierte Schnittstellen zur Überwindung dieser Hindernisse bereitstellt. TeXs erste Zeichensätze stellten weniger als 128 Glyphen zur Verfügung, mit LaTeX sind 8-bit-Zeichensätze der üblichen Codierungen inklusive UTF-8 leicht verfügbar.[23] pdfTeX stellt hinsichtlich dieser beiden Punkte keine Verbesserung dar. Natürlicher ist der Zugang zu Schriftarten von außerhalb der TeX-Welt mit XeTeX und LuaTeX, die OpenType verfügbar machen und per Voreinstellung in Unicode kodierte Eingabedateien unterstützen. The TeXbook trifft auf XeTeX[24] und LuaTeX nicht mehr völlig zu.[25]
„TeX“ als „Oberbegriff“
Obwohl nun das von Knuth entwickelte Programm als solches wohl kaum noch verwendet wird, gibt es weiterhin „TeX-Distributionen“ und „TeX-Benutzergruppen“ (wie folgt), im Wesentlichen wird auch das Arbeiten mit den aktuellen Weiterentwicklungen von TeX als Arbeit mit TeX betrachtet und entsprechend bezeichnet. Unter Autoren, die praktisch nur lateinische Schriften verwenden, ist XeTeX wohl noch kaum verbreitet, und reinen Autoren (im Gegensatz zu „TeX-Experten“) ist von diesen unterschiedlichen „Engines“ auch nichts bekannt. Da reine Anwender praktisch ausschließlich Makros aus den Formaten LaTeX und plain TeX und ihren Erweiterungen (und nicht primitive Befehle) verwenden, sind sie von den Unterschieden kaum betroffen. Dass bestimmte Makropakete[26] nur mit Weiterentwicklungen von TeX (vor allem ε-TeX) und nicht mit Knuth’s Programm funktionieren, ist ebenfalls von geringer Relevanz, da Letztere (vor allem pdfTeX) mit gängigen Distributionen geliefert werden und ihre Verwendung (auch in TeX-Editoren) voreingestellt ist.
Benutzergruppen
Rund um TeX haben sich schon sehr früh Benutzergruppen organisiert, als erstes die TeX Users Group (TUG), die international agiert. Später kamen sprachbezogene und regionale Benutzergruppen hinzu wie die Deutschsprachige Anwendervereinigung TeX (DANTE) für den deutschen Sprachraum und GUTenberg für den französischen Sprachraum. Insgesamt gibt es zurzeit etwa zwei Dutzend TeX-Benutzergruppen, die untereinander zusammenarbeiten.
Distributionen
Es gibt viele verschiedene Distributionen von TeX, die untereinander vollständig kompatibel sein sollten. Sie enthalten alle zur Arbeit mit TeX nötigen Programme. Auch optionale Ergänzungen wie LaTeX sind enthalten.
- MiKTeX ist eine TeX-Distribution (Programmsammlung) für Windows, seit 2018 auch für macOS und Linux.
- TeX Live ist eine TeX-Distribution für verschiedene Unices (unter anderem auch Linux), macOS und Windows. Sie wird von den TeX-Anwendervereinigungen erstellt und ist in vielen Linux-Distributionen enthalten.
- teTeX war eine von Thomas Esser erstellte TeX-Distribution für Unix, die seit Mai 2006 nicht mehr weiter entwickelt wird. Thomas Esser empfiehlt Interessenten, sich dem Projekt TeX Live zuzuwenden.
Der Verzeichnisbaum texmf, der durch die verschiedenen aktuellen Installationen erzeugt wird, ist als „TeX Directory Structure“ standardisiert.[27]
Noch umfangreicher als die genannten Distributionen ist die Sammlung von TeX-Versionen und -Erweiterungen im Comprehensive TeX Archive Network (CTAN). So ist TeX Live auf als strikt frei lizenzierte TeX-Zusatzpakete beschränkt, so dass selbst Pakete nicht eingeschlossen sind, die „manuell“ aus dem CTAN heruntergeladen werden können, aber keine hinreichend präzise Lizenz beinhalten. Die andere aktuell relevante Distribution MiKTeX ist dagegen auf mit dem Betriebssystem Windows lauffähige Software beschränkt, während aus dem CTAN auch Pakete heruntergeladen werden können, die ausschließlich auf Unix-artigen Betriebssystemen oder gar nur auf „historischen“/„exotischen“ Betriebssystemen lauffähig sind.[28] Eine frühe Version von AmigaTeX (3.1) für den Amiga von Tomas Rokicki wurde 1987 nach C portiert, kommerziell angeboten und zeichnete sich durch einen umfangreichen Katalog von DD-Disketten aus, die für einen TeX-Lauf ständig gewechselt werde mussten.
Lizenz
Der Quelltext von TeX steht offen zur Verfügung, er kann und soll nach dem Willen von Donald E. Knuth weiterentwickelt werden. Die Ausgabe einer bestimmten Version von TeX soll aber auf allen Plattformen identisch sein. Weiterentwicklungen von anderen Autoren dürfen daher nicht selbst den Namen TeX tragen, sondern müssen anders benannt werden. Obwohl es bisweilen heißt, TeX und LaTeX seien von Knuth bzw. von Leslie Lamport unter Public Domain gestellt worden,[29] ist das also nicht zutreffend.
Die Lizenzbedingungen von TeX dürfen nicht mit denjenigen von LaTeX verwechselt werden – obwohl jene ähnlich sind. Auch die LaTeX Project Public License (LPPL) erlaubt das Kopieren und Verändern des Quelltexts von LaTeX-Paketen nur, solange die geänderten Dateien unter einem anderen Namen verteilt werden als die ursprünglichen Dateien.[30] Die LPPL gilt aber nicht für TeX selbst. Sie ist nur aus der Lizenz, die Knuth für TeX vorgegeben hatte, hervorgegangen.
Unterstützende Tools (Editoren)
Die Arbeit von Autoren oder ihren Schreibkräften mit TeX verläuft so (man betrachte zunächst das kurze #Beispiel): Man gibt eine Passage Quellcode (Text, Befehle zur Formatierung und für spezielle Zeichen wie mathematische Symbole) ein (und speichert die Textdatei ab), lässt dann das TeX-Programm (nicht anders ist die Arbeit etwa mit pdfTeX) mit der neuen Textdateiversion laufen, schließlich schaut man sich das Ergebnis mit einem Previewer (mit MiKTeX etwa yap, mit Linux Evince) an (eventuell erzeugt man noch mit einem weiteren Werkzeug eine PostScript- oder PDF-Version aus der DVI-Datei). Man hat zwei Fenster: eines für die Texteingabe und eines für die Vorschau. Dies ist ganz anders als bei der Arbeit mit einem Office-Programm, wo man Textänderungen direkt im Vorschaufenster vornimmt. Durch die TeX-Befehle unterscheidet sich das Erscheinungsbild des Codes stark von dem des erzeugten Dokuments, was für Bearbeiter eine gewisse Herausforderung darstellt (vgl. LaTeX#Kein WYSIWYG).
Immerhin ist LyX ein Editor für LaTeX, mit dem man Textänderungen in einem Fenster vornimmt, das keine TeX-Befehle zeigt, auch keine echte Vorschau bietet, immerhin eine intuitiv erfassbare Andeutung des Ergebnisses.
Die Arbeitsumgebung mit separaten Fenstern für Ein- und Ausgabe kann unterschiedlich aufwändig gestaltet sein:
- Zum Erstellen der Eingabedateien mit Text und Befehlen genügt im Prinzip ein primitiver Texteditor wie Notepad unter Windows oder Leafpad (oder gar ed in der Konsole) unter Linux. Den TeX-Lauf kann man in der Konsole (Kommandozeile) anstoßen, dann braucht man einen Previewer – diese spartanische Ausstattung genügt für die Arbeit mit TeX, ein spezieller TeX-Editor ist im Prinzip nicht erforderlich. Notepad und Leafpad sind sehr leicht und intuitiv zu bedienen.
- Eine Verbesserung bei dieser Arbeitsweise bedeuten bereits Texteditoren, die Syntaxhervorhebung für verschiedene Programmier- oder Auszeichnungssprachen bieten, darunter für TeX, wie Vim und unter Linux gedit (oder gar nano).[31] Dadurch wird intuitiv erkennbar, welche Codepassagen zu formatierenden Text bilden, im Gegensatz zu TeX-Befehlen, und welche Passagen auskommentiert sind; schließlich helfen sie beim korrekten Schließen von geschweiften Klammern
{
…}
für Makroargumente (typische Fehlerquelle mit aufwändigen Folgen); auch für die Klammerung in mathematischen Formeln, zu deren Formatierung TeX ja besonders gerne verwendet wird. – Vim wird allerdings erst nach längeren Einarbeitungszeiten nützlich, es beruht noch auf „steinzeitlichen“ Vorstellungen von grafischen Nutzerschnittstellen. - Noch ohne eine vollentwickelte grafische Entwicklungsumgebung gibt es eine Vielzahl von Scripts und anderer Werkzeuge, die die Dokumenterzeugung automatisieren, so dass externe Werkzeuge wie BibTeX und MakeIndex bei Bedarf ohne Eingreifen des Bearbeiters „angeworfen“ werden und man gewisse Ähnlichkeiten mit WYSIWYG-Programmen erhält,[32] insbesondere für die Arbeit mit den genannten Texteditoren gedit[33] und Vim;[34][35] eines dieser Werkzeuge ist Rubber.[36] – Für Anfänger sind diese Werkzeuge allerdings kaum zu bewältigen.
- Für die universellen grafischen integrierten Entwicklungsumgebungen Emacs und Eclipse gibt es spezielle TeX-Modi: AUCTeX für Emacs, das Plug-in TeXlipse[37] für Eclipse und LaTeX. Mit AUCTeX sorgt das Paket preview-latex[38] für eine automatische Vorschau von Formeln, Tabellen und Grafiken (in diesen Situationen ist der Quellcode besonders unübersichtlich und die Vorschau wertvoll). – Für Anfänger ist dieser Zugang nicht sinnvoll.
- Es gibt speziell für das Erstellen von TeX-Dokumenten programmierte grafische integrierte Entwicklungsumgebungen, die als „TeX-Editoren“ bezeichnet werden. Außer der Syntaxhervorhebung bieten sie meist eine Hilfe zu den TeX-Befehlen sowie Knöpfchen, um das TeX-Programm oder andere Werkzeuge „in Bewegung zu setzen“. Beispiele sind Kile (für LaTeX) unter Linux, TeXnicCenter und WinEdt unter Microsoft Windows sowie das preisgekrönte TeXShop unter Mac OS X, welches zu dem nun für Windows, Linux und Mac OS X vorliegenden TeXworks inspirierte. Hier wird statt eines externen Previewers ein integrierter eingesetzt, und es gibt (wie auch bei einigen anderen modernen Previewern) eine als inverse search bezeichnete Funktion, von einer Position in der Vorschau zum entsprechenden Quellcode zu springen. – Die Zielsetzung von TeXshop und TeXworks besteht gerade darin, auch Anfängern einen einfachen Zugang zu TeX zu bieten.
- Vgl. Kategorie:TeX-Editor
Eine ausführlichere Darstellung von Entwicklungsumgebungen für LaTeX findet sich unter LaTeX#Entwicklungsumgebungen.
Automatische Erzeugung von formatierten Dokumenten
TeX kann mit Hilfe von TeXML ein anspruchsvolles Layout von in einem XML-Format vorliegenden Daten erzeugen. Damit ist TeX eine Alternative zu XSL-FO.
Literatur
Einführungen
- Victor Eijkhout: TeX by Topic. Neuauflage Auflage. Lehmanns Media, Berlin 2014, ISBN 978-3-86541-590-5 (CTAN [abgerufen am 2. August 2015] Zugriffsmöglichkeiten und weitere Informationen).
- Donald E. Knuth: The TeXbook. Illustrations by Duane Bibby. Addison-Wesley, Reading, MA u. a 1986, ISBN 0-201-13447-0 (Erstausgabe: 1984).
- Norbert Schwarz: Einführung in TeX. 2., überarb. Auflage. Addison-Wesley, Bonn u. a. 1988, ISBN 3-925118-97-7 (ruhr-uni-bochum.de [PDF; 2,4 MB; abgerufen am 2. August 2015] In der „unveränderten“ PDF-Fassung gibt der Verfasser das Erscheinungsjahr der 3. Auflage zuerst mit 1991, dann mit 1988 an).
- Norman Walsh: Making TeX work. O’Reilly Verlag, Sebastopol, CA 1994, ISBN 1-56592-051-1 (Volltext [abgerufen am 2. August 2015]).
Andere
- Donald E. Knuth: Digital Typography. CSLI Publications, Stanford, CA 1999, ISBN 1-57586-010-4 (Sammlung von Aufsätzen, zum Teil über TeX).
- Michael Downes: TeX and LaTeX 2e. In: Notices of the AMS. Band 49, Nr. 11, Dezember 2002, S. 1384–1391 (ams.org [PDF; 822 kB; abgerufen am 26. Juli 2015] 8-seitige Darstellung von TeX, LaTeX und Markup-Arten inklusive historischer Darstellung).
Weblinks
- Plain TeX Quick Reference (PDF; 138 kB)
- Deutschsprachige Anwendervereinigung TeX e. V. (DANTE)
- TeX Users Group (englisch)
- Podcast von CRE zum Thema: TeX und LaTeX
- TTH: the TEX to HTML translator, Department of Nuclear Science and Engineering, Massachusetts Institute of Technology
Einzelnachweise
- How should I pronounce “TeX”? In: TeX Frequently Asked Questions on the Web version 3.22. 27. April 2011, abgerufen am 2. September 2011 (englisch).
- The TeXBook, Donald E. Knuth, Addison-Wesley, 1996
- hyperref – Kurzdarstellung auf CTAN mit Links zu Dokumentation und Downloads.
- Etwa BibLaTeX mit biber und xindy.
- Vgl. Substitution (Logik). Die Ersetzung findet allerdings nicht auf der Ebene eingebener Zeichen statt, sondern in Bezug auf das formale Alphabet der Tokens im Sinne von Kapitel 7 von The TeXbook. Im Beispiel
\leavevmode
wird ein einzelnes Token durch zwei andere Tokens ersetzt, die Darstellung ist im Bemühen, nicht zu technisch zu werden, irreführend. Auch einzelne Zeichen können sich wie Makros verhalten, z. B. die Tilde~
zur Erzeugung eines geschützten Leerzeichens, und das doppelte Anführungszeichen mit ngerman. - tex-archive/macros
- tex-archive/macros/generic
- Donald E. Knuth: An Earthshaking Announcement. (PDF; 243 kB) 28. Juni 2010, abgerufen am 31. Januar 2017 (englisch).
- Donald E. Knuth: The future of TEX and METAFONT. (PDF; 15 kB) 3. Oktober 1990, abgerufen am 7. Oktober 2012 (englisch).
- Donald E. Knuth: Questions and Answers II. In: TUGboat. 17, 1996, S. 355–367. Auch gedruckt als Kapitel 32 von Digital Typography. S. 620.
- Donald E. Knuth: Typesetting Concrete Mathematics. In: TUGboat. 10, 1989, S. 31–36, 342. tug.org (PDF; 584 kB) Auch gedruckt als Kapitel 18 von Digital Typography.
- Michael P. Barnett. Computer Typesetting: Experiments and Prospects. MIT Press, Cambridge, Massachusetts 1965.
- Donald E. Knuth, Michael F. Plass: Breaking Paragraphs Into Lines. In: Software – Practice and Experience. 11, 1981, S. 1119–1184. Auch gedruckt als Kapitel 3 von Digital Typography. S. 67–155.
- Advogato: Interview of Donald E. Knuth. In: TUGboat. 21, 2000, S. 103–110. tug.org (PDF oder advogato.org)
- GNU Project: GNU coreutils manual, version 6.9, 4.1 fmt: Reformat paragraph text. 2006.
- Franklin Mark Liang: Word Hy-phen-a-tion by Com-put-er. Ph.D.-Abschlussarbeit, Department of Computer Science, Stanford University, August 1983.
- The TeXbook. Appendix H: Hyphenation, S. 449–455.
- Eine sehr umfassende Übersicht von Weiterentwicklungen von TeX bietet das CTAN-Paket tex-overview.
- Zu den hauptsächlichen Aussagen in der Folge siehe die TeX-Live-Dokumentation, besonders Abschnitt TeX-Erweiterungen.
- Nach der Kommandozeile „
latex beispiel
“ erscheint die KonsolenausgabeThis is pdfTeX
, die dann angegebene Versionsnummer enthält die Versionsnummer der zugrundeliegenden TeX-Version. - etex auf CTAN. Auf Webseiten wird das Programm zumeist als „e-TeX“ bezeichnet, in seiner PDF-Dokumentation jedoch ε-TeX.
- microtype auf CTAN.
- inputenc auf CTAN.
- Unterschiede von XeTeX zu früheren TeX-Varianten werden im CTAN-Paket XeTeXref beschrieben.
- Vor allem kann
\catcode
nun auf 65536 statt bisher 256 Eingabezeichen angewendet werden, und Makronamen können z. B. aus chinesischen Schriftzeichen zusammengesetzt werden, ähnlich ist das Paket unisugar. - z. B. etoolbox
- TeX Directory Structure unter tug.org.
- Vgl. „systems“-Verzeichnis des CTAN.
- Peter Gordon: Introducing Donald Knuth and Computers & Typesetting. In: TUBboat. Band 7, 1986, Nr. 2, S. 93–95, 94.
- Frank Mittelbach u. a.: Der LaTeX-Begleiter. 2. Auflage. Pearson Studium, 2005, ISBN 3-8273-7166-X, S. 1009.
- tex.nanorc bei wiki.ubuntuusers.de
- Change and show PDF with TeX “immediately,” and link I/O – privat
- gedit LaTeX Plugin auf wiki.gnome.org
- LaTeX (Vim Tips Wiki) auf vim.wikia.com
- tex.vim auf vim.org
- Rubber – a wrapper for LaTeX and friends auf launchpad.net
- TeXlipse auf sourceforge.net
- preview-latex auf CTAN