Wenn eine Kompilierung fehlschlägt, gibt LaTeX eine kryptische Meldung ! … und eine Zeilennummer l.NN aus und hält dann an der Eingabeaufforderung ? an. Wenn du das lesen kannst — plus .log und ein paar Debugging-Befehle — wird aus „es ist kaputt“ ein „hier ist die Stelle zum Reparieren“. Diese Seite behandelt Fehlermeldungen, Logdateien und Debugging.
Fehler lesen
Fehler haben eine feste Form: ! gefolgt von der Meldung (z. B. ! Undefined control sequence), dann l.NN mit der Zeile, in der TeX ins Stolpern kam, umbrochen an der Stelle, bis zu der gelesen wurde. Wichtig: l.NN ist die Stelle, an der LaTeX das Problem *bemerkt*, nicht zwingend seine Ursache — ein fehlendes } kann erst Zeilen später sichtbar werden. Wenn die angezeigte Zeile korrekt aussieht, prüfe also auch darüber. An der ?-Eingabe: Return = weiter versuchen, h = Hilfe, x = beenden, q = still bis zum Ende laufen (alle Fehler sammeln), r = ohne Stopps laufen. (In der Praxis lassen latexmk und ähnliche Werkzeuge ohnehin nonstop laufen; man liest die Fehler danach meist aus .log.)
- Undefined control sequence — Tippfehler oder vergessenes
\usepackage. - Missing $ inserted — ein mathematisches Symbol wurde außerhalb des Mathematikmodus verwendet.
- File
x.stynot found — Paket ist nicht installiert (mittlmgrhinzufügen). - Runaway argument — unausgeglichene
{ }(meist fehlt ein}).
Das Log lesen — .log / texfot
Die Datei .log enthält den gesamten Lauf — alle Fehler und Warnungen (Overfull/Underfull \hbox, undefinierte Verweise, Schrift-Ersetzungen). Da das Log sehr ausführlich ist, reduziert texfot es auf die „interessanten“ Zeilen (siehe „texdoc / texfot …“). Auch wenn ein Build „erfolgreich“ ist, solltest du hier die Warnungen prüfen.
Debugging-Befehle
\show\foo gibt Bedeutung/Definition von \foo aus (und hält bei ? an); \showthe\textwidth gibt den Wert eines Registers oder einer Länge aus. \typeout{...} (LaTeX) und \message{...} (TeX) schreiben eigene Meldungen ins Log/Terminal — praktisch für printf-artiges Debugging. Die schwere Artillerie, \tracingall, schreibt alles, was TeX tut, ins Log (sehr ausführlich; das Paket trace räumt die Ausgabe auf). Damit findest du, wo eine Expansion falsch läuft.
\show\section % \section の定義を表示 / show its meaning
\showthe\textwidth % 長さの値を表示 / show a length’s value
\typeout{ここまで来た} % 自分のメッセージ / your own message
\tracingall % すべてをログへ(非常に冗長)/ trace everything (very verbose)