Die Begriffe von LaTeX sind nicht deshalb verwirrend, weil die Wörter schwierig wären, sondern weil sie ein alltägliches Gesicht über einer anderen Bedeutung tragen. Ein „Paket“ ist kein npm-Paket, eine „Klasse“ keine objektorientierte Klasse, und „Glue“ ist kein Klebstoff. Besser noch: Die Hauptfiguren dieses Glossars – Engine und Format, Klasse und Paket, Box und Glue und Kern – lassen sich alle am eigenen Rechner überprüfen. Unter TeX Live 2024 erweist sich pdflatex als bloßer symbolischer Link auf pdftex, und latex zeigt auf genau dasselbe pdftex. Dieses Glossar erklärt jeden Begriff dort, wo Neulinge ihn zuverlässig verwechseln.
Engine und Format: Warum pdflatex gleich pdftex ist
Eine Engine ist das Programm, das tatsächlich läuft; ein Format ist ein Block Makros, der in dieses Programm vorgeladen wurde. Das ist keine Abstraktion, sondern im Dateisystem sichtbar. Im bin-Verzeichnis von TeX Live 2024 ist pdflatex ein symbolischer Link auf pdftex, und latex zeigt auf genau dasselbe pdftex. Ebenso xelatex → xetex, lualatex → luahbtex, und platex wie uplatex sind beide euptex. Sechs „LaTeX-Befehle“ sind also in Wahrheit nur vier Binärdateien. Was trennt dann latex von pdflatex? Allein die .fmt-Datei, die beim Start geladen wird – ein vorverdauter Abzug von Makros. latex.fmt misst 8.221.690 Byte, pdflatex.fmt 8.221.444: zwei fast identische Gebilde mit 246 Byte Unterschied.
# TeX Live 2024: six commands, four binaries
$ ls -l latex pdflatex xelatex lualatex platex uplatex
latex -> pdftex
pdflatex -> pdftex
xelatex -> xetex
lualatex -> luahbtex
platex -> euptex
uplatex -> euptex| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
engine | Das ausgeführte Programm (tex, pdftex, xetex, luatex, euptex). Ausgabeformat, Schrifttechnik und Zeichenbehandlung entscheiden sich hier |
format | Ein vorgeladener Makrobestand (plain TeX, LaTeX, ConTeXt), eingefroren als .fmt-Datei |
.fmt | Der Format-Abzug, abgelegt unter texmf-var/web2c/<Engine>/ und von fmtutil erzeugt |
pdfLaTeX | Die Kombination aus der Engine pdftex und dem LaTeX-Format. Ein Programm namens pdfLaTeX gibt es nicht |
LaTeX2e | Das aktuelle LaTeX seit 1994. Mit schlichtem „LaTeX“ ist normalerweise dieses gemeint |
LaTeX3 | Das langjährige Projekt zur Neufassung des Kernels. Es steckt als expl3 bereits im aktuellen LaTeX, und viele Pakete nutzen es |
Klasse und Paket: Was .cls von .sty unterscheidet
Eine Klasse bestimmt, was ein Dokument ist; ein Paket fügt ihm Fähigkeiten hinzu – und ein Dokument nimmt genau eine Klasse, aber beliebig viele Pakete. Das ist der ganze Unterschied. Technisch sind beides Textdateien voller Makrodefinitionen, und zwischen dem Inhalt einer .cls und dem einer .sty besteht kein grundsätzlicher Unterschied. Getrennt werden sie allein durch die Art des Ladens, und die Syntax sagt die Regel offen: \documentclass{article} einmal, \usepackage{...} beliebig oft. Wer also schwankt, ob „zweispaltig“ Sache der Klasse (\documentclass[twocolumn]) oder eines Pakets (multicol) ist, frage sich, ob sich die Art des Dokuments ändert oder nur eine Fähigkeit hinzukommt. Dazu passend: Eine .dtx ist das Manuskript eines Pakets (Quelltext und Dokumentation verschränkt), eine .ins das Rezept, das daraus die .sty herauslöst.
| Endung | Inhalt und Entstehungszeitpunkt |
|---|---|
.tex | Das selbst geschriebene Manuskript. Nur diese Datei gehört in die Versionsverwaltung |
.cls | Eine Klasse, genau einmal per \documentclass geladen |
.sty | Ein Paket, beliebig oft per \usepackage geladen |
.dtx / .ins | Das Manuskript des Paketautors und das Rezept, das daraus die .sty erzeugt |
.aux | Notizen zu Querverweisen, Inhaltsverzeichnis und Zitaten. Deshalb muss zweimal übersetzt werden |
.log | Das vollständige Protokoll des Laufs. Warnungen wie Missing character stehen manchmal nur hier |
.bib / .bbl | Die Literaturdatenbank und die daraus gesetzte Literaturliste |
Makro, Token, Catcode: die Reihenfolge, in der TeX Zeichen liest
TeX liest Zeichen nicht als Zeichen. Es versieht jedes mit einem „Category Code“ (Catcode), einer Rollennummer von 0 bis 15, und arbeitet damit weiter. \ ist 0 (Beginn eines Befehls), { ist 1, } ist 2, $ ist 3, & ist 4, # ist 6, ^ ist 7, _ ist 8, ein Leerzeichen 10, Buchstaben 11, Ziffern und die meisten Symbole 12 („other“), ~ ist 13 (aktiv) und % ist 14 (Kommentar). Ein Zeichen samt Catcode ist ein Token, die kleinste Einheit, mit der TeX umgeht, und ein Makro ist bloß ein Name für eine Tokenliste. Eine Stelle, an der das spürbar wird: Im Dokumenttext hat @ den Catcode 12, ist also ein gewöhnliches Symbol und kann nicht Teil eines Befehlsnamens sein. Interne Befehle wie \@ifnextchar sind aus dem Text daher unerreichbar, und \makeatletter setzt @ vorübergehend auf 11. Innerhalb eines Pakets (.sty) ist es ohnehin 11, weshalb die Beschwörung dort entfällt.
% Ask TeX for the catcode of a character; the answer lands in the log.
\showthe\catcode`\@ % > 12. (in the document body: "other")
\showthe\catcode`\A % > 11. (letter)
\showthe\catcode`\~ % > 13. (active)
\makeatletter
\showthe\catcode`\@ % > 11. (now a letter, so \@ifnextchar works)
\makeatother| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
token | Ein Zeichen samt Catcode: TeXs kleinste Einheit. Gleiches Schriftbild, anderer Catcode, anderes Token |
catcode | Eine Rollennummer von 0 bis 15, mit \catcode änderbar; verbatim entwaffnet damit Befehle |
macro | Ein Name für eine Tokenliste, mit \newcommand definiert. Es ist Ersetzung, kein Funktionsaufruf: Argumente werden unausgewertet eingesetzt |
expansion | Das Ersetzen eines Makros durch seinen Inhalt. Deshalb wird ein Fehler dort gemeldet, wo expandiert wurde, nicht wo definiert |
robust / fragile | Robuste Befehle überstehen Stellen, an denen Inhalt herausgeschrieben und neu gelesen wird (bewegliche Argumente: Überschriften, Fußnoten); fragile zerbrechen. Modernes LaTeX hat die meisten robust gemacht |
Box, Glue, Kern: die drei Bauteile des Satzes
Für TeX besteht eine fertige Seite nicht aus Zeichen oder Absätzen, sondern aus genau drei Dingen: Boxen sowie dem Glue und den Kerns, die den Raum dazwischen füllen. Ein Zeichen ist eine kleine Box mit Breite, Höhe und Tiefe; eine Zeile ist eine Box, die Boxen nebeneinander hält (\hbox); eine Seite ist eine Box, die Zeilen übereinander stapelt (\vbox). Zwischen die Boxen kommt Glue – dehn- und schrumpfbarer Zwischenraum. Er ist keine Breite, sondern ein Tripel aus natürlicher Breite, Dehnung und Schrumpfung: In 10pt Computer Modern misst der Wortzwischenraum natürlich 3,33333pt, mit 1,66666pt Dehnung und 1,11111pt Schrumpfung. Diese Elastizität macht Blocksatz überhaupt möglich und erlaubt TeX, die Enge oder Weite einer Zeile zu bewerten (ihre „badness“). Ein Kern dagegen ist eine starre Lücke, die weder dehnbar noch ein möglicher Zeilenumbruch ist. Deshalb kann \hbox to 60pt{a\kern 10pt b} seine Breite nicht füllen und meldet Underfull \hbox (badness 10000), während dieselbe Box mit dehnbarem Glue lautlos aufgeht.
| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
box | Ein Rechteck mit Breite, Höhe und Tiefe. \hbox setzt nebeneinander, \vbox stapelt. Die Tiefe (unter der Grundlinie) getrennt zu führen ist TeX-typisch |
glue | Dehn- und schrumpfbarer Raum: ein Tripel aus natürlicher Breite, Dehnung und Schrumpfung. Er markiert zugleich eine zulässige Umbruchstelle |
kern | Eine Lücke fester Breite: weder dehnbar noch als Umbruchstelle nutzbar. Dient dem Buchstabenausgleich, etwa den negativen Kerns in \TeX |
badness | Ein Maß dafür, wie stark der Glue gedehnt oder gequetscht werden musste, von 0 bis 10000 (am schlechtesten). Es ist die Zahl in Underfull \hbox (badness 10000) |
sp | Der Scaled Point, TeXs internes Atom: 1pt = 65536sp. Jede Länge wird als solche Ganzzahl gehalten, sodass sich Rundungsfehler nicht aufsummieren |
Was DVI ist: warum „geräteunabhängig“ keine Schriften mitführt
DVI (device-independent) ist die Ausgabe, für die TeX gebaut wurde: eine Liste von Anweisungen, welches Zeichen in welcher Schrift an welche Koordinate gehört – über die Form der Buchstaben steht darin nichts. Misst man den Unterschied, ist er drastisch. Setzt man dasselbe einzeilige Dokument unter TeX Live 2024, so umfasst die DVI aus latex 300 Byte, das PDF aus pdflatex dagegen 17.081 – mehr als das Siebenundfünfzigfache. In der DVI steht fntdef1 27: cmr10: Die Schrift wird nur beim Namen genannt. Fragt man das PDF mit pdffonts ab, meldet CMR10 emb yes sub yes – Umrisse eingebettet und auf die tatsächlich benutzten Zeichen reduziert. Deshalb lässt sich eine DVI allein nicht zuverlässig anzeigen; erst nachdem dvipdfmx oder dvips die Schriften aufgelöst hat, entsteht etwas Verteilbares. Genau diese Leichtigkeit und die Freiheit für die nachgelagerte Stufe halten den japanischen Weg upLaTeX → dvipdfmx bis heute in Gebrauch.
| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
DVI | Device-independent: ein Zwischenformat, das seine Schriften nur benennt. Anzeigen und Verteilen erfordern eine Umwandlung |
PDF | Die Endform für Verteilung und Druck: Schriften eingebettet, dazu Lesezeichen, Links und Metadaten |
PostScript | Eine Seitenbeschreibungssprache, aus DVI mit dvips erzeugt und in der Druckvorstufe weiterhin gebräuchlich |
pt / bp | TeXs pt ist der angloamerikanische Punkt: 1in = 72,26999pt. Der Punkt von PDF und PostScript ist bp (big point), 1bp = 1,00374pt. 72 Punkt je Zoll gelten für bp, nicht für pt |
MWE | Minimal working example: das kleinste Dokument, das den Fehler noch zeigt. Danach wird bei Fragen zuerst gefragt |
CTAN, TDS, texmf, kpathsea: Wo die Dateien tatsächlich liegen
CTAN ist das Lager der Welt, TDS die Regalordnung darin, texmf die lokale Kopie und kpathsea das, was darin sucht – die vier sind Glieder einer Kette. Auf CTAN (Comprehensive TeX Archive Network) gesammelte Pakete werden nach einer gemeinsamen Ablageregel namens TDS (TeX Directory Structure) in einen texmf-Baum ausgepackt: eine .sty nach tex/latex/<Paket>/, ihre Dokumentation nach doc/latex/<Paket>/. Weil diese Regel gilt, liegen Dateien in jeder Distribution am selben Ort. Doch texmf-dist von TeX Live 2024 enthält 276.953 Dateien, und Verzeichnisse bei jedem Lauf zu durchsuchen kommt nicht in Frage. Deshalb liest kpathsea zuerst einen Index namens ls-R. Wenn ein von Hand installiertes Paket trotzdem nicht gefunden wird, ist meist nur dieser Index veraltet – mktexlsr baut ihn neu. Welche Datei tatsächlich benutzt wird, beantwortet kpsewhich article.cls in einer Zeile.
| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
CTAN | Das zentrale Paketarchiv (ctan.org), weltweit gespiegelt |
TDS | TeX Directory Structure: die Konvention, die den Aufbau innerhalb von texmf festlegt. Beim Ablegen von Hand daran halten |
texmf | Der Baum mit den tatsächlichen Dateien. Es gibt mehrere, und texmf-local hat Vorrang vor texmf-dist |
kpathsea / ls-R | Die Dateisuchbibliothek und ihr Index. Abfragen mit kpsewhich, Index neu bauen mit mktexlsr |
TeX Live / MiKTeX | Die beiden Hauptdistributionen. TeX Live erscheint einmal jährlich vollständig, MiKTeX holt fehlende Pakete zur Laufzeit nach |
tlmgr | Der Paketmanager von TeX Live, für Aktualisierungen einzelner Pakete und Nachinstallationen |
Begriffe des japanischen Satzes: JFM, Wabun und Obun, Kinsoku
Japanisches TeX führt ein Vokabular mit sich, dem man beim reinen Westsatz nie begegnet. Im Zentrum steht eine Entwurfsentscheidung: Japanischer und westlicher Text werden als zwei völlig getrennte Ströme behandelt. Engines der pTeX-Familie setzen Kanji und Kana in einer Wabun-Schrift (japanisch) und lateinische Buchstaben in einer Obun-Schrift (westlich) und fügen an der Grenze automatisch einen Viertelgeviert-Abstand ein (\xkanjiskip). Die Maße einer japanischen Schrift beschreibt ein JFM (Japanese Font Metric), das nicht nur Zeichenbreiten festhält, sondern auch, wie weit zusammenzurücken ist, wenn zwei Satzzeichen aufeinandertreffen. Die Regeln, die ein schließendes Komma am Zeilenanfang oder eine öffnende Klammer am Zeilenende verbieten, heißen Kinsoku und werden in TeX als Penalty-Werte ausgedrückt. Ruby (Lesehilfe über dem Grundtext) und Vertikalsatz sind weitere japanische Anforderungen, um die sich Klasse oder Paket kümmern. Die praktische Wahl zwischen diesen Werkzeugen gehört auf die Seiten zum japanischen Satz.
| Begriff | Bedeutung und häufige Verwechslung |
|---|---|
JFM | Japanese Font Metric: die Maßdatei einer japanischen Schrift, mit Zeichenbreiten und Regeln zum Zusammenrücken von Satzzeichen |
pTeX / upTeX | Für den japanischen Satz erweiterte TeX-Engines; upTeX ist der Nachfolger mit intern auf Unicode umgestellter Darstellung |
kinsoku | Umbruchverbot: Regeln darüber, welche Zeichen eine Zeile nicht beginnen oder beenden dürfen, in TeX als Penalties ausgedrückt |
\xkanjiskip | Der Abstand, der automatisch an der Grenze von japanischem und westlichem Text eingefügt wird; standardmäßig etwa ein Viertelgeviert, einstellbar |
ruby | Eine kleine Lesehilfe über dem Grundtext (im Vertikalsatz rechts davon), von einer Klasse oder einem Paket bereitgestellt |