LaTeX/ Fehler und Warnungen

Aus Wikibooks


Während LaTeX ein Dokument bearbeitet, beschreibt es die einzelnen Verarbeitungsschritte. Sollte LaTeX dabei auf eine Eingabe stoßen, welche nicht interpretiert werden kann, wird eine Fehlermeldung ausgegeben. Für nicht ganz so schlimme Fehler werden Warnungen angezeigt.

Keine Panik, wenn du eine Fehlermeldung siehst: Häufige Fehler sind sich bei Befehlen zu vertippen, geschwungene Klammern zu vergessen, einen Schrägstrich statt einem Backslash zu schreiben oder unabsichtlich Sonderzeichen zu verwenden. Fehler sind im Editor schnell gefunden und korrigiert und mit einem erneuten ausführen von LaTeX kann man überprüfen, ob alles korrigiert wurde. Ein paar der häufigsten Fehler werden in den nächsten Abschnitten beschrieben.

Fehlermeldungen[Bearbeiten]

Der Aufbau einer Fehlermeldung ist immer der gleiche. Fehlermeldungen beginnen mit einem Rufzeichen am Anfang der Zeile und einer Beschreibung des Fehlers, gefolgt von einer weiteren Zeile, welche mit einer Zahl beginnt. Diese Zahl wiederum bezieht sich auf die Zeilennummer in dem Dokument, welches LaTeX gerade bearbeitet hat, als der Fehler aufgetreten ist. Im Beispiel wird gezeigt, dass der Befehl \tableofcontents falsch geschrieben wurde:

! Undefined control sequence.
l.20 \tableofcotnetns

Wenn LaTeX einen solchen Fehler findet, zeigt es die Fehlermeldung und pausiert. Um fortzusetzen, muss einer der folgenden Buchstaben eingegeben werden:

Buchstabe Bedeutung
x (exit) Höre sofort auf und beende das Programm
q (quietly) Fahre fort, so weit es geht und nerve mich nicht mit weiteren Fehlermeldungen
e (editor) Stoppe das Programm aber positioniere den Text in meinem Editor an der Stelle, an der du den Fehler gefunden hast (funktioniert aber nur, wenn ein Editor verwendet wird, mit dem LaTeX kommunizieren kann (z.B. Kile))
h (help) Zeige mir Hilfe dazu an
i (input) (gefolgt von einer Korrektur) bedeutet, dass die Korrektur statt dem Fehler eingegeben und fortgefahren werden soll (Das ist allerdings nur eine temporäre Korrektur, damit das Dokument verarbeit werden kann. Der Fehler muss im Editor händisch ausgebessert werden)
r (run) laufe im "non-stop" Modus; ignoriere jeden Fehler bis sich zu viele ansammeln und die Verarbeitung fehl schlägt (100 Fehler)

Manche Systeme (Emacs ist ein Beispiel) verwenden LaTeX von sich aus in einem "non-stop" Modus, so dass diese immer das ganze Dokument abarbeiten, ohne Rücksicht auf Fehler, oder bis ein Limit erreicht wird.

Warnungen[Bearbeiten]

Warnungen beginnen nicht mit einem Rufzeichen, sie sind nur Kommentare von LaTeX über Etwas, dass überprüft gehört. Dazu zählen z.B. zu lange oder kurze Zeilen (meistens hervorgerufen durch z.B. unübliche Silbentrennung), zu kurz oder lang geratene Seiten und andere typografische Feinheiten (die meisten davon kannst du vorerst ignorieren). Im Gegensatz zu anderen Systemen, welche versuchen uneinheitliche Abschnitte im Text zu verstecken (meistens vergeblich) indem sie sich beim Zeichenabstand einmischen, nimmt LaTeX den Standpunkt ein, dass der Autor oder Editor in der Lage sein soll beizutragen. Es ist zwar möglich, dass LaTeX's Parameter so eingestellt werden, dass die Abstände ausreichend locker gesetzt werden und so gut wie nie eine Warnung über schlecht passende Zeilen oder Seiten kommt, allerdings wird dadurch das Problem nur hinausgezögert, bis Beschwerden von den Lesern oder Verlagen kommen.

Beispiele[Bearbeiten]

Nur eine kleine Auswahl von Fehlermeldungen wird hier erwähnt, welchen Anfänger am ehesten begegnen. Falls du eine weitere Fehlermeldung findest, die nicht hier angeführt ist und du nicht weißt, was du tun sollst, Frage um Hilfe.

Die meisten Fehlermeldungen sind selbsterklärend, aber die Stelle an der LaTeX den Fehler entdeckt und meldet kann durchaus später im Dokument sein, als die Stelle, an welcher der Fehler tatsächlich ist. Hast du z.B. die schließende geschwungene Klammer bei italics vergessen, dann wird LaTeX dies erst melden, wenn etwas anderes auftaucht, das nicht passieren kann bevor die Klammer geschlossen wurde (z.B. das Ende des Dokuments!). Manche Fehler können nur von Menschen korrigiert werden, die den Text lesen und verstehen können wie das Dokument aussehen soll.

Neulinge sollten sich die Liste mit den Sonderzeichen anschauen. Wenn man beginnt LaTeX zu lernen passieren sehr viele Fehler, weil unabsichtlich ein spezielles Zeichen getippt wird, obwohl dieses gar nicht gemeint war. Nach ein paar Tagen gewöhnt man sich an die spezielle Schreibweise und die Fehlermeldungen verschwinden.

Folgende Beispiele können je nach verwendetem Compiler leicht anders aussehen als hier dargestellt, sind aber von Inhalt und Bedeutung gleich.

Too many }'s[Bearbeiten]

Zu viele }

! Too many }'s.
l.12 \date September 2010}

Der Grund, warum LaTeX meint, dass hier zu viele } seien ist, weil hier die öffnende geschwungene Klammer nach dem \date Befehl und vor dem Wort September fehlt. Somit wird die schließende geschwungene Klammer als eine zuviel angesehen (was ja der Fall ist). Da auch noch Anderes nach dem \date Befehl kommen kann, als ein Datum zwischen geschwungenen Klammern, weiß LaTeX nicht, dass du eine öffnende Klammer vergessen hast, bis es eine Schließende findet!

Undefined control sequence[Bearbeiten]

Undefinierter Befehl

! Undefined control sequence.
l.13 \dtae
{September 2010}

In diesem Beispiel beschwert sich LaTeX, dass es den Befehl ("control sequence") \dtae nicht kennt. Offensichtlich wurde er falsch geschrieben, allerdings kann nur ein Mensch dies erkennen. LaTeX weiß nur, dass \dtae kein Befehl ist, den es kennt: er ist undefiniert. Tippfehler sind die häufigste Fehlerquelle. Wenn dein Editor drop-down Menüs zum Einfügen von häufigen Befehlen und Umgebungen hat, nutze diese!

Runaway argument[Bearbeiten]

Vorauseilendes Argument

Runaway argument?
{September 2010 \maketitle
! Paragraph ended before \date was complete.
<to be read again> 
\par 
l.15

Bei diesem Fehler wurde die schließende geschwungene Klammer vom \date Befehl ausgelassen. Dies ist das Gegenteil vom "too many }'s" Fehler. \maketitle versucht eine Titelseite zu formatieren, während LaTeX noch auf mehr Text für den \date Befehl wartet! Da \maketitle einen neuen Absatz auf der Titelseite erstellt, wird die fehlende schließende geschwungene Klammer bemerkt und LaTeX beschwert sich, dass der vorherige Absatz beendet wurde, obwohl \date noch nicht fertig ist.

Underfull hbox[Bearbeiten]

Zu wenig gefüllte horizontale Box

Underfull \hbox (badness 10000) in paragraph at lines 29--31

Mit dieser Warnung teilt LaTeX mit, dass es die Zeile nicht weit genug strecken kann ohne die Abstände größer zu machen, als das derzeit erlaubte Maximum. Die Schwere (badness 0-10000) zeigt an, wie schlimm der jeweilige Fall ist. In diesem Beispiel ist es bei den Zeilen 29-31 sehr schlimm (badness 10000) und es sollte eventuell etwas verändert werden, wenn das Schriftbild zu stark gestört wird.

Underfull \hbox (badness 1394) in paragraph at lines 28--30
[][]\LY1/brm/b/n/10 Bull, RJ: \LY1/brm/m/n/10
Ac-count-ing in Busi-
[94]

Die Schwere von 1394, wie in diesem zweiten Beispiel, kann wahrscheinlich ignoriert werden. Auch hier werden die Zeilen im Dokument angezeigt, wo eine "underfull hbox" gefunden wurde. Die Zahl in den eckigen Klammern ist die Seitenzahl, auf welcher die zu kurzen Zeilen gedruckt wurden. Der durch Schrägstriche separierte Code gibt die auf der jeweiligen Zeile verwendete Schriftart, Formatierung und Größe an. Dies kann fürs erste ignoriert werden.

Häufig passiert eine "underfull hbox" dann, wenn mit der Entertaste der Absatz beendet und gleich danach mit \\ ein Zeilenumbruch erzwungen wird. Normalerweise ignoriert TeX Zeilenumbrüche, indem Absätze mit Flatterrand beendet werden. In diesem Fall ist es notwendig den Zeilenumbruch eine Zeile nach oben ans Ende des vorherigen Satzes zu setzen.

Overfull hbox[Bearbeiten]

Überfüllte horizontale Box

Overfull \hbox (12.46959pt too wide) in paragraph at lines 32--33
[]\T1/cmr/m/n/10.95 Fehlermeldung: over-full hbox er-stellt mit fol-gen-dem, lan-gen Satz: Es ist ganz schön schwie-

"Overfull \hbox" bedeutet, dass die Ausgabe über den Seitenrand geht. Die betreffende Codezeile (in diesem Beispiel 32-33) geht über den rechten Rand der Seiten hinaus und wird möglicherweise nicht korrekt dargestellt oder gedruckt werden. Die Zeile sollte so angepasst werden, dass sie auf zwei oder mehr Zeilen ausgedehnt werden kann.

[101]
Overfull \hbox (9.11617pt too wide) in paragraph at lines 860--861
[]\LY1/brm/m/n/10 Windows, \LY1/brm/m/it/10 see
\LY1/brm/m/n/10 X Win-

Im zweiten Beispiel ist die Zeile um 9pt zu lang. Die gewählte Trennstelle, welche den Fehler minimiert, wird am Ende der Zeile gezeigt (Win-). Zeilennummern und Seitenzahl in eckiger Klammer wird ebenfalls angezeigt. In diesem Beispiel sind 9pt zu viel, um sie zu ignorieren (über 3mm) und sollte somit händisch korrigiert werden (z.B. durch Änderung der Silbentrennung) oder die Einstellung der Flexibilität wird geändert.

Falls das "overfull" Wort einen Schrägstrich beinhaltet, wie z.B. input/output, sollte es richtig gesetzt werden mit input\slashoutput. Die Verwendung von \slash hat den gleichen Effekt wie das / Zeichen, mit dem Unterschied, dass es auch am Ende einer Zeile stehen kann und die folgenden Wörter am Anfang der nächsten Zeile. Das / Zeichen wird normalerweise in Einheiten, wie mm/jahr verwendet, welche nicht über mehrere Zeilen gebrochen werden sollten.

Missing package[Bearbeiten]

Fehlendes Paket

! LaTeX Error: File `tets.sty' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: sty)
Enter file name:

Mit dem \usepackage Befehl soll LaTeX ein bestimmtes Paket verwenden, weshalb es nach einer Datei mit diesem angegebenen Namen und dem Dateityp .sty sucht. In diesem Fall wurde der Name des Testpakets falsch geschrieben und kann daher leicht korrigiert werden. Falls der Name des Pakets richtig, aber das Paket nicht am Computer installiert ist, muss es runtergeladen und installiert werden, bevor weitergemacht werden kann. Für den Fall, dass du nicht die gesamte Installation des Computers beeinflussen willst, kann die notwendige .sty Datei aus dem Internet heruntergeladen und im selben Ordner wie das LaTeX-Dokument gespeichert werden.

Package babel Warning: No hyphenation patterns were loaded for the language X[Bearbeiten]

Paket "Babel" Warnung: Es wurden keine Silbentrennungen für Sprache X geladen

Package babel Warning: No hyphenation patterns were loaded for
(babel)                the language `Latin'
(babel)                I will use the patterns loaded for \language=0 instead.

Obwohl dies eine Warnung vom Babel-Paket ist und nicht direkt von LaTeX, ist es ein häufiger Fehler, welcher eventuell Probleme mit merkwürdigen Silbentrennungen (Hyphenation) im Dokument verursachen kann. Falsche Trennregeln können das Aussehen des Dokumentes verschlechtern.
Ein mögliches Anwendungsbeispiel:

\usepackage[latin]{babel}

Die Lösung ist nicht schwierig: Einfach die verwendete Sprache in deiner LaTeX-Distribution installieren (siehe auch Lokalisation).

Vielen herzlichen Dank an Alle, die sich an der Übersetzung dieser Seite beteiligt haben. Mitwirkende an dieser Übersetzung sind in der Seitenhistorie dieser Seite vermerkt. Falls Sie Spaß daran gefunden haben und weitere Seiten übersetzen wollen, finden Sie hier weitere.