LaTeX-Fehlermeldungen sind so gebaut, dass die ersten Worte nach dem ! verraten, wer sich beschwert. Ein nacktes ! Missing $ inserted. stammt von der TeX-Engine selbst, ! LaTeX Error: vom LaTeX-Kern und ! Package hyperref Error: von dem Paket, das genannt wird. Wer diese Unterscheidung liest, weiß schon nach der ersten Zeile, ob die Korrektur ins eigene Manuskript gehört, in die Ladereihenfolge der Präambel oder in fremdes Fehlerverzeichnis. Diese Seite ist ein Index der Meldungen, die wirklich vorkommen, wörtlich zitiert, jeweils mit dem, was sie tatsächlich bedeuten, und einem Verweis auf die Seite, die sie ausführlich behandelt. Jede hier aufgeführte Meldung wurde auf TeX Live 2024 reproduziert.
Die Worte nach ! nennen den Absender: TeX, LaTeX, ein Paket oder eine Warnung
Eine Zeile, die mit ! beginnt, ist ein Fehler und kann den Build stoppen; eine Zeile ohne ! ist eine Warnung oder ein Hinweis, und der Build läuft weiter. Die Fehler wiederum zerfallen in drei Schichten, und die Worte direkt nach dem ! sagen, welche. Die unterste Schicht ist die TeX-Engine, deren Meldungen gar kein Präfix tragen – ! Missing $ inserted. liest sich seit vierzig Jahren wortgleich, und reines TeX ohne LaTeX gibt denselben Satz aus. Die mittlere Schicht ist der LaTeX-Kern mit ! LaTeX Error: …, die oberste sind Pakete und Klassen mit ! Package X Error: … und ! Class X Error: …. Je höher die Schicht, desto freundlicher die Formulierung; je tiefer, desto näher an dem, woran TeX wirklich hängt. Eine Meldung ohne Präfix bedeutet meist, dass die Syntax des Manuskripts selbst beschädigt ist.
| Form der Zeile | Absender und Auswirkung auf den Build |
|---|---|
! Missing $ inserted. | die TeX-Engine selbst; fehlendes Präfix ist das Kennzeichen, die Manuskriptsyntax ist beschädigt |
! LaTeX Error: ... | der LaTeX-Kern; ein Verstoß gegen LaTeX-Regeln zu Umgebungen, Verweisen oder Präambel |
! Package X Error: ... | das genannte Paket X; dessen Handbuch mit texdoc X zu lesen ist meist der schnellste nächste Schritt |
! Class X Error: ... | die Dokumentklasse X; bei Zeitschriftenklassen meist der Hinweis auf einen Verstoß gegen Formatvorgaben |
LaTeX Warning: ... | eine Kernwarnung; der Build gelingt, der Rückgabewert bleibt 0 – so überleben veraltete Verweise |
Package X Warning: ... | eine Paketwarnung; manche enden mit on input line N, andere bewusst nicht |
Overfull \hbox (...) | direkt vom Absatzbaustein; weder ! noch das Wort Warning steht davor |
Package X Info: ... | nur eine Information; bleibt in der .log und erreicht das Terminal nie, erklärt aber oft ein späteres Scheitern |
Fehler der TeX-Engine: die Meldungen ohne Präfix
Diese Gruppe meldet, dass TeX im Eingabestrom nicht weiterkommt, und die Ursache liegt fast immer bei der Paarung von Klammern, $ oder & oder bei der Schreibweise einer Zahl. Die knappe Formulierung stammt aus einer Zeit, in der es LaTeX noch nicht gab. Der Vorteil: Diese Zeichenketten sind auf jeder Distribution und in Dokumenten jeden Alters gleich und lassen sich daher gut suchen. Das Folgende wurde auf TeX Live 2024 reproduziert.
| Meldung | Was wirklich gemeint ist, und der erste Schritt |
|---|---|
! Undefined control sequence. | der Befehl am rechten Ende der oberen Zeile ist undefiniert: Tippfehler, fehlendes Paket oder eine zu späte Definition |
! Missing $ inserted. | ein nur mathematisches Zeichen steht im Text; _, ^ und \alpha lösen es typischerweise aus |
! Missing } inserted. | etwas endete, während eine { noch offen war; die Ursache liegt vor der gemeldeten Stelle |
! Too many }'s. | eine } zu viel; meist fehlt weiter oben eine { |
! Extra alignment tab has been changed to \cr. | eine Tabellenzeile hat mehr &, als die Spaltenangabe erlaubt; mit der Spaltendefinition abgleichen |
! Misplaced alignment tab character &. | ein & außerhalb jeder Tabelle; für das Zeichen selbst \& schreiben |
! Double subscript. | zwei _ an einem Atom, etwa x_1_2; zusammenfassen als x_{12} |
! Missing number, treated as zero. | an einer Stelle, die eine Länge oder Anzahl erwartet, steht keine Zahl; ein leeres Argument wie \hspace{} ist typisch |
! Illegal unit of measure (pt inserted). | eine Zahl ohne Einheit, etwa in \rule{1}{2pt}; cm, pt oder em ergänzen |
! Paragraph ended before \x was complete. | eine Leerzeile geriet in ein Argument; die Zeile Runaway argument? direkt darüber ist das Erkennungszeichen |
! File ended while scanning use of \x. | die Datei endete, bevor ein Argument geschlossen war – das Endstadium einer fehlenden } |
! Missing \endcsname inserted. | etwas nicht Expandierbares geriet in \csname … \endcsname; ein zusammengesetzter Makroname ist verdächtig |
! TeX capacity exceeded, sorry [...] | in den Klammern steht die erschöpfte Ressource; [grouping levels=255] deutet auf ausufernde Rekursion |
! Emergency stop. | TeX verlangte Eingabe, wo keine möglich ist – typisch bei einer fehlenden Datei im nicht interaktiven Modus |
Fehler des LaTeX-Kerns: alles, was mit ! LaTeX Error: beginnt
Hier geht es um Verstöße gegen LaTeX-Konventionen statt gegen TeX-Syntax, und weil die Formulierung viel konkreter ist, gibt es meist genau eine Korrektur. Nicht zusammenpassende Umgebungen, ein \usepackage an falscher Stelle, ein nur in der Präambel erlaubter Befehl, eine fehlende Datei – jedes davon ist eine Regel, die LaTeX selbst aufgestellt hat. Zu beachten: In der .log folgt auf jede dieser Meldungen ein Hilfeabsatz, der mehr sagt als die eine Zeile im Terminal; reicht der Wortlaut nicht, hilft ein Blick ins Log.
| Meldung | Was wirklich gemeint ist, und der erste Schritt |
|---|---|
! LaTeX Error: File `x.sty' not found. | das Paket ist nicht installiert oder falsch geschrieben; mit kpsewhich x.sty prüfen, mit tlmgr install x nachinstallieren |
! LaTeX Error: Environment x undefined. | das Paket, das die Umgebung definiert, wurde nie geladen; auch die Schreibweise des Namens prüfen |
! LaTeX Error: \begin{x} on input line N ended by \end{y}. | Umgebungen überkreuzen sich statt sich zu verschachteln; N ist die öffnende Zeile, von dort abwärts lesen |
! LaTeX Error: Command \x already defined. | \newcommand traf auf einen bereits vorhandenen Namen; ist Überschreiben gewollt, \renewcommand verwenden |
! LaTeX Error: Missing \begin{document}. | etwas Druckbares stand in der Präambel; ein einziges Nicht-Leerzeichen genügt dafür |
! LaTeX Error: Option clash for package x. | ein zweites Laden verlangte eine Option, die beim ersten fehlte; \PassOptionsToPackage behebt das |
! LaTeX Error: Something's wrong--perhaps a missing \item. | die Liste ist leer, oder vor dem ersten \item steht Text |
! LaTeX Error: There's no line here to end. | \\ steht dort, wo noch keine Zeile begonnen hat, typisch am Absatzanfang oder zu Beginn von center |
! LaTeX Error: Not in outer par mode. | ein Gleitobjekt steht in einem anderen Gleitobjekt oder in einer Box; figure darf nicht in figure oder minipage stehen |
! LaTeX Error: \caption outside float. | \caption steht außerhalb von figure oder table; einbetten oder \captionof verwenden |
! LaTeX Error: Can be used only in preamble. | ein nur in der Präambel erlaubter Befehl wie \usepackage wurde im Textteil verwendet |
! LaTeX Error: \usepackage before \documentclass. | \usepackage steht vor \documentclass; dort funktioniert nur \RequirePackage |
! LaTeX Error: Unknown option `x' for package `y'. | das Paket hat diese Option nie deklariert; Schreibweise und Paketversion prüfen |
! LaTeX Error: Unicode character X (U+NNNN) | das Zeichen hat keine Definition; unter pdfLaTeX betrifft das CJK und Emoji, XeLaTeX und LuaLaTeX nehmen sie an |
Paketfehler: ! Package X Error: ist die Stimme von X
Meldungen dieser Schicht hat das genannte Paket selbst formuliert, dieselben Worte stehen also in dessen Handbuch – texdoc X öffnen und nach der Meldung suchen ist der kürzeste Weg. Sie sind zudem konkret: Diese Umgebung ist hier nicht erlaubt, diese Farbe ist nicht definiert, dieses Paket verträgt sich nicht mit jenem. Die Abhilfe steht oft direkt dabei. Das Folgende wurde auf TeX Live 2024 erzeugt.
| Meldung | Was wirklich gemeint ist, und der erste Schritt |
|---|---|
! Package biblatex Error: Incompatible package 'natbib'. | biblatex und natbib vertragen sich nicht; beides durch \usepackage[natbib=true]{biblatex} ersetzen |
! Package cleveref Error: cleveref must be loaded after hyperref!. | eine Vorgabe zur Ladereihenfolge: cleveref gehört hinter hyperref und auch hinter varioref |
! Package amsmath Error: \begin{split} won't work here. | split steht nie allein; es gehört in equation oder align |
! Package xcolor Error: Undefined color `x'. | der Farbname ist nicht definiert; einen Namenssatz wie dvipsnames laden oder ihn mit \definecolor anlegen |
! Package babel Error: Unknown option 'x'. | der Sprachname ist falsch geschrieben, oder die Sprachdateien fehlen |
! Package pdftex.def Error: File `x.png' not found: using draft setting. | die Bilddatei fehlt; stattdessen wird ein Rahmen gesetzt und der Lauf geht weiter – Pfad und Dateiendung prüfen |
! Package inputenc Error: ... | auf TeX Live 2024 kaum noch anzutreffen: Die UTF-8-Behandlung liegt im Kern, inputenc bleibt wenig zu tun |
Warnungen: Sie stoppen nie den Build, aber wer sie ignoriert, liefert ein falsches PDF
Warnungen stoppen den Build nie und ändern den Rückgabewert nicht von 0, weshalb ein CI-Job den Lauf als Erfolg wertet. Genau das macht sie gefährlich: Ein PDF, dessen Verweise noch ?? zeigen oder dessen Nummern eine Revision hinterherhinken, entsteht hier. Zwei davon sind Anweisungen und keine hinnehmbaren Warnungen: LaTeX Warning: There were undefined references. und Label(s) may have changed. Rerun to get cross-references right. bedeuten schlicht, dass erneut übersetzt werden muss. Ein Build-Skript sollte diese beiden Zeilen erkennen und neu starten – oder die Sache gleich latexmk überlassen.
| Meldung | Was wirklich gemeint ist, und der erste Schritt |
|---|---|
Overfull \hbox (12.3pt too wide) in paragraph at lines 4--5 | eine Zeile ragt über den Satzspiegel hinaus; die Zahl gibt an, wie weit – unter etwa 1 pt lohnt die Jagd nicht |
Underfull \hbox (badness 10000) in paragraph at lines 4--5 | eine Zeile wurde zu locker gedehnt; badness 10000 ist der schlechteste Wert, oft ausgelöst durch ein überflüssiges \linebreak oder \\ |
Overfull \vbox (26.3pt too high) detected at line 4 | der Überlauf ist senkrecht: Eine Box passte nicht mehr auf die Seite |
LaTeX Warning: Reference `x' on page 1 undefined on input line 3. | das Label steht noch nicht in der .aux: entweder ist dies der erste Lauf, oder das \label ist falsch geschrieben |
LaTeX Warning: Citation `x' on page 1 undefined on input line 3. | bibtex oder biber wurde noch nicht ausgeführt, oder der Schlüssel fehlt in der .bib |
LaTeX Warning: Label `x' multiply defined. | dasselbe Label existiert zweimal; jedes \ref darauf kann nur eines treffen |
LaTeX Warning: There were undefined references. | die Zusammenfassung am Laufende; wird damit ausgeliefert, enthält das PDF weiterhin ?? |
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. | die Nummerierung weicht vom vorigen Lauf ab; ein weiterer Durchlauf beseitigt das |
LaTeX Font Warning: Font shape `OT1/cmr/bx/sc' undefined | eine Kombination wie fett plus Kapitälchen existiert nicht; es wird ersetzt, nur das Aussehen ändert sich |
Package hyperref Warning: Token not allowed in a PDF string (Unicode): | Mathematik in einer Überschrift passt nicht in ein PDF-Lesezeichen; mit \texorpdfstring{Formel}{Text} trennen |
Meldungen, die es nicht mehr gibt und nur in veralteten Ratschlägen fortleben
In alten Antworten aus der Suche stehen weiterhin Meldungen, die TeX Live 2024 gar nicht mehr erzeugt; wer dieselbe Zeichenkette nicht sieht, hat deshalb keine kaputte Installation. Am deutlichsten zeigt sich das beim Unicode-Fehler. Früher lautete er ! Package inputenc Error: Unicode character …; seit die UTF-8-Behandlung im Kern liegt, lautet er ! LaTeX Error: Unicode character 日 (U+65E5), gefolgt von not set up for use with LaTeX. in der nächsten Zeile. Und → sowie € scheitern überhaupt nicht mehr – gemessen zerfallen die Zeichen in solche, die pdfLaTeX nun annimmt, und solche, die es weiterhin ablehnt, etwa CJK, Emoji und ≤. Der Optionskonflikt bei xcolor ging denselben Weg, aus einem Grund, den die Seite zu Paketkonflikten erklärt.
- Unicode-Zeichen – die Meldung lautet jetzt
! LaTeX Error: Unicode character 日 (U+65E5)statt! Package inputenc Error:. Unter pdfLaTeX gehen→und€durch, CJK, Emoji und≤weiterhin nicht. - Der Optionskonflikt bei
xcolor– auf\usepackage[dvipsnames]{xcolor}darf\usepackage[table]{xcolor}folgen, ohne dass ein Fehler entsteht, denn xcolor nutzt inzwischen Schlüssel-Wert-Optionen. captionmitsubfigure– der alte Fehler „kann nicht zusammen verwendet werden“ ist verschwunden; die.logvermerkt nur nochPackage caption Info: subfigure package is loaded.subfiguremitsubcaption– beide zu laden erzeugt keinen Fehler. Stattdessen verschluckt der alte Befehl\subfiguredas\begin{subfigure}, und es erscheinen scheinbar unzusammenhängende Fehler wie! Missing number, treated as zero.