Glossar der Begriffe

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.

shell
# 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
BegriffBedeutung und häufige Verwechslung
engineDas ausgeführte Programm (tex, pdftex, xetex, luatex, euptex). Ausgabeformat, Schrifttechnik und Zeichenbehandlung entscheiden sich hier
formatEin vorgeladener Makrobestand (plain TeX, LaTeX, ConTeXt), eingefroren als .fmt-Datei
.fmtDer Format-Abzug, abgelegt unter texmf-var/web2c/<Engine>/ und von fmtutil erzeugt
pdfLaTeXDie Kombination aus der Engine pdftex und dem LaTeX-Format. Ein Programm namens pdfLaTeX gibt es nicht
LaTeX2eDas aktuelle LaTeX seit 1994. Mit schlichtem „LaTeX“ ist normalerweise dieses gemeint
LaTeX3Das 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.

EndungInhalt und Entstehungszeitpunkt
.texDas selbst geschriebene Manuskript. Nur diese Datei gehört in die Versionsverwaltung
.clsEine Klasse, genau einmal per \documentclass geladen
.styEin Paket, beliebig oft per \usepackage geladen
.dtx / .insDas Manuskript des Paketautors und das Rezept, das daraus die .sty erzeugt
.auxNotizen zu Querverweisen, Inhaltsverzeichnis und Zitaten. Deshalb muss zweimal übersetzt werden
.logDas vollständige Protokoll des Laufs. Warnungen wie Missing character stehen manchmal nur hier
.bib / .bblDie 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.

latex
% 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
BegriffBedeutung und häufige Verwechslung
tokenEin Zeichen samt Catcode: TeXs kleinste Einheit. Gleiches Schriftbild, anderer Catcode, anderes Token
catcodeEine Rollennummer von 0 bis 15, mit \catcode änderbar; verbatim entwaffnet damit Befehle
macroEin Name für eine Tokenliste, mit \newcommand definiert. Es ist Ersetzung, kein Funktionsaufruf: Argumente werden unausgewertet eingesetzt
expansionDas Ersetzen eines Makros durch seinen Inhalt. Deshalb wird ein Fehler dort gemeldet, wo expandiert wurde, nicht wo definiert
robust / fragileRobuste 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.

BegriffBedeutung und häufige Verwechslung
boxEin Rechteck mit Breite, Höhe und Tiefe. \hbox setzt nebeneinander, \vbox stapelt. Die Tiefe (unter der Grundlinie) getrennt zu führen ist TeX-typisch
glueDehn- und schrumpfbarer Raum: ein Tripel aus natürlicher Breite, Dehnung und Schrumpfung. Er markiert zugleich eine zulässige Umbruchstelle
kernEine Lücke fester Breite: weder dehnbar noch als Umbruchstelle nutzbar. Dient dem Buchstabenausgleich, etwa den negativen Kerns in \TeX
badnessEin 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)
spDer 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.

BegriffBedeutung und häufige Verwechslung
DVIDevice-independent: ein Zwischenformat, das seine Schriften nur benennt. Anzeigen und Verteilen erfordern eine Umwandlung
PDFDie Endform für Verteilung und Druck: Schriften eingebettet, dazu Lesezeichen, Links und Metadaten
PostScriptEine Seitenbeschreibungssprache, aus DVI mit dvips erzeugt und in der Druckvorstufe weiterhin gebräuchlich
pt / bpTeXs 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
MWEMinimal 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.

BegriffBedeutung und häufige Verwechslung
CTANDas zentrale Paketarchiv (ctan.org), weltweit gespiegelt
TDSTeX Directory Structure: die Konvention, die den Aufbau innerhalb von texmf festlegt. Beim Ablegen von Hand daran halten
texmfDer Baum mit den tatsächlichen Dateien. Es gibt mehrere, und texmf-local hat Vorrang vor texmf-dist
kpathsea / ls-RDie Dateisuchbibliothek und ihr Index. Abfragen mit kpsewhich, Index neu bauen mit mktexlsr
TeX Live / MiKTeXDie beiden Hauptdistributionen. TeX Live erscheint einmal jährlich vollständig, MiKTeX holt fehlende Pakete zur Laufzeit nach
tlmgrDer 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.

BegriffBedeutung und häufige Verwechslung
JFMJapanese Font Metric: die Maßdatei einer japanischen Schrift, mit Zeichenbreiten und Regeln zum Zusammenrücken von Satzzeichen
pTeX / upTeXFür den japanischen Satz erweiterte TeX-Engines; upTeX ist der Nachfolger mit intern auf Unicode umgestellter Darstellung
kinsokuUmbruchverbot: Regeln darüber, welche Zeichen eine Zeile nicht beginnen oder beenden dürfen, in TeX als Penalties ausgedrückt
\xkanjiskipDer Abstand, der automatisch an der Grenze von japanischem und westlichem Text eingefügt wird; standardmäßig etwa ein Viertelgeviert, einstellbar
rubyEine kleine Lesehilfe über dem Grundtext (im Vertikalsatz rechts davon), von einer Klasse oder einem Paket bereitgestellt