Inhaltsverzeichnis

Inhaltsverzeichnis

Wenn ich laufe

\documentclass{article}
\begin{document}
Aaaaaa aaaaa aajcaaaaaa $a:A_{aa}\to a_a$a$\ge$ aaaaaaaaaaaaaaaaaaaaaa 
$a_a\dots\to$
\end{document}

die Build-Ausgabe enthält die folgende Zeile:

LaTeX-Result: 1 Error(s), 0 Warning(s), 1 Bad Box(es), 1 Page(s)

Wenn ich auf „Nächster Fehler“ klicke, verweist es in der Build-Ausgabe auf die Zeile, die im folgenden Absatz mit „!“ beginnt:

Overfull \hbox (1.65294pt too wide) in paragraph at lines 3--4
[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 
! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 $ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[
] [] \OMS/cmsy/m/n/10 !$ 
 []

Wenn ich diesen Fehler nachschlage, sehe ich, dass bei Schriftarten etwas Ähnliches auftritt, der Fehlercode jedoch etwas anders ist.

Ich vermute, dass es etwas mit dem Überlauf von $\to$ am Ende zu tun hat, aber das ist nicht alles, denn ich kann einige der Buchstaben verschieben, ohne die Größe des fehlerhaften Kästchens zu ändern, und so den Fehler beheben.

Kann mir jemand sagen, was die Ursache für diesen Fehler ist?

UPDATE: Laut einem der Kommentare kann es davon abhängen, welches Programm verwendet wird. Ich habe diesen Fehler sowohl bei TeXnicCenter als auch beilatexbase.comaber es wird nicht als Fehler gemeldet.

Antwort1

Kurze Antwort: Dies ist eine Warnung, aber Ihr Herausgeber (TeXnicCenter) hat sie mit einem Fehler verwechselt. Eine längere Antwort folgt.


(Eine vorherige Frage„Unverständlicher Fehler nach dem Eintippen eines einzigen Buchstabens“deckt dies ab, aber ich hatte das Gefühl, dass es sich lohnt, näher darauf einzugehen, also versuche ich es noch einmal.)

Inhaltsverzeichnis

  1. Warum die Ausgabe als Fehler behandelt wird (und wie man das behebt)
  2. So entfernen Sie diese Ausgabe (Beheben der Warnung)
  3. Was die Ausgabe bedeutet

1. Warum die Ausgabe als Fehler behandelt wird

Hier wirken drei Dinge zusammen, die Ihren Redakteur verwirren:

  • TeX druckt Fehlermeldungen in einer neuen Zeile, beginnend mit !␣(a !gefolgt von einem Leerzeichen; wird nur verwendet , um ein Leerzeichen zu kennzeichnen, da es sonst hier nicht sichtbar ist). (Übrigens ist dies nicht wirklich dokumentiert inDas TeXbook—Ich denke, Knuth wollte keine Details der Benutzerinteraktion spezifizieren und erwartete, dass sich diese mit der TeX-Implementierung ändern würden—aber siehe die Beispiele in Kapitel 6 und 27, und auchTeil 6 „Meldung von Fehlern“ §73 InTeX: Das Programm.)

  • Wenn TeX gezwungen ist, eine überfüllte Box zu setzen, druckt es eine Diagnose aus, die die überfüllte Box anzeigt. (Ähnlich verhält es sich mit engen Boxen usw.) Diese Diagnose kann Dinge wie enthalten !, abhängig von den Zeichen, die in der Box vorkommen, und den verwendeten Schriftarten.

  • TeX umbricht Ausgabezeilen standardmäßig auf die Breite max_print_line. In diesem Fall scheint Ihre TeX-Umgebung so eingerichtet zu sein, dass Fehlerausgabezeilen bei genau 120 Zeichen umgebrochen werden, wodurch eine der Zeilen (zufällig) mit einem beginnt !. Sie können diesen Zeilenumbruch ändernwie in der anderen Antwort beschrieben, oder indem Sie TeX einfach mit einem größeren Wert max_print_linein der Shell-Umgebung aufrufen, wie max_print_line=1000 pdflatex ...).

Als Kombination dieser Faktoren wird eine auf 120 Zeichen verkürzte Diagnosemeldung über eine überfüllte Box ausgedruckt, die von Ihrem Editor fälschlicherweise als Fehler interpretiert wird.

Wenn Sie die Zeilenumbruchbreite erhöhen (z. B. max_print_line=10000), vermeiden Sie diese Verwirrung und erhalten stattdessen eine Ausgabe wie diese, bei der die überfüllte Box vollständig in einer Zeile angezeigt wird (und keine Zeile mit einem ) beginnt !):

Overfull \hbox (1.65294pt too wide) in paragraph at lines 3--5
[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 ! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 ^^U$ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[] [] \OMS/cmsy/m/n/10 !$ 

2. So entfernen Sie die Ausgabe

Die Ausgabe (Warnung) bezieht sich auf eine überfüllte Box, d. h. eine Linie ragt etwas weiter hervor als sie sollte. Wie viel weiter? Wir können es visuell erkennen, indem wir daneben einen Textabsatz hinzufügen:

Linie

Merkt man, dass der Pfeil weiter hervorsteht als die Textzeilen darüber? Vielleicht hieran:

mit Linien

Beim Umgang mit überfüllten Feldern haben Sie folgende Optionen (in aufsteigender Reihenfolge des erforderlichen Aufwands und absteigender Reihenfolge der Ästhetik): Sie können das Feld ignorieren, mehr Dehnung zulassen, mehr Umbrüche zulassen oder den Text neu schreiben.

In diesem Fall ist es, wie Sie sehen, nicht viel zu voll (die Warnmeldung lautet 1,65 pt). Wenn Sie es also optisch nicht störend finden, ignorieren Sie es am besten einfach. (Sie können dafür sorgen, dass die Warnung nicht mehr angezeigt wird, indem Sie den Wert \hfuzzauf „save“ 1.66ptoder etwas Größeres erhöhen.)

Andernfalls ist es am besten, den Text neu zu schreiben (da es sich um Mathematik handelt und das Einfügen von Umbrüchen innerhalb der Mathematik schlecht sein kann). Oder wenn Sie sich nicht darum kümmern möchten, können Sie einfach Folgendes setzen \sloppy(siehediese Antwortfür was genau \sloppytut) oder erhöhen \emergencystretch, um einen Zeilenumbruch auf Kosten einer etwas stärkeren Streckung zu erhalten, als TeX standardmäßig verträgt:

mit Stretch

(Um zu vermeiden, dass andere Absätze im Dokument davon betroffen sind, können Sie die Änderungen an \sloppyund/oder \emergencystretchauf nur diesen Absatz beschränken, indem Sie { … }eine Gruppierung verwenden. LaTeX bietet beispielsweise eine sloppyparUmgebung, die genau dies tut.)


3. Was die Ausgabe bedeutet

Die verbleibende Frage istWarumDie Diagnose einer übervollen Box sieht so aus: Was bedeutet diese Ausgabe?

Es handelt sich im Grunde genommen um eine Liste von allem, was TeX in diese Zeile geschrieben hat, einschließlich Verbindungszeichen und Zeichen aus verschiedenen Schriftarten. In einer Zeile mit vielen verschiedenen Schriftarten kann ein Großteil der Ausgabe letztlich von den Schriftarten handeln.

Sie können das Paket verwenden fonttableund

\xfonttable{OT1}{cmr}{m}{n}
\xfonttable{OML}{cmm}{m}{it}
\xfonttable{OMS}{cmsy}{m}{n}

um die in der Ausgabezeile vorkommenden Schriftarten genauer zu verstehen. Dies ist die OT1/cmr/m/nSchriftart:

OT1

und das ist OML/cmm/m/it:

OML

und das ist OMS/cmsy/m/n:

OMS

Wenn also in der Overfull \hboxProtokollzeile gedruckt wird, was die übervolle Hbox war, die gesetzt wurde,

beleidigende Box

als

[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 ! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 ^^U$ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[] [] \OMS/cmsy/m/n/10 !$ 

wir können es wie folgt in Teile aufteilen:

  • []— das ist der Parindent-Kleber
  • \OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $— dies bedeutet einfach „Aaaaaa aaaaa aajcaaaaaa“ in der Schriftart OT1/cmr/m/n/10(siehe oben), mit bedingten Trennungen (potenziellen Silbentrennungsstellen) wie in angegeben aaaaa aa-j-caaaaaa, gefolgt vom Beginn des Mathematikmodus.
  • \OML/cmm/m/it/10 a
  • \OT1/cmr/m/n/10 :– beachten Sie, dass, obwohl wir uns im Mathematikmodus befinden, dies :von der Schriftart OT1 stammt cmr, da es aufrecht usw. sein soll.
  • \OML/cmm/m/it/10 A[]— der Index aaist ein eigenes Kästchen (glaube ich) und wird hier einfach als[]
  • \OMS/cmsy/m/n/10 !— beachten Sie, dass !(Zeichen 33) in OMS/cmsy/m/ndas Zeichen ist. In nicht-Unicode-TeX-Engines (im Wesentlichen pdfTeX im Gegensatz zu XeTeX oder LuaTeX) können Schriftarten höchstens 256 Glyphen haben, daher müssen Zeichen wie an einer Position zwischen 0 und 255 abgebildet werden.
  • \OML/cmm/m/it/10 a[]$a— auch hier wird der Index durch einfach gekennzeichnet[]
  • \OT1/cmr/m/n/10 a$
  • \OMS/cmsy/m/n/10 ^^U$^^Ubezeichnet hier das Zeichen 21 (weil Ues ASCII 85 ist und in TeX ^^bedeutet, 64 zu addieren oder zu subtrahieren), und das Zeichen 21 ist in dieser Schriftart
  • \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $
  • \OML/cmm/m/it/10 a[] []
  • \OMS/cmsy/m/n/10 !$!bedeutet hier wiederum

(Obwohl die Ausgabe dieser überfüllten Kästen für die Zeit, als TeX entwickelt wurde (~1980), gut und für jemanden nützlich war, der das Handbuch sorgfältig gelesen hat, könnte sie heute natürlich verbessert werden, z. B. durch Optionen zum Einfärben der Ausgabe, Konvertieren von Zeichen in Unicode oder Unterdrücken/Umschalten von Schriftinformationen. Leider wurde in derartige Verbesserungen von TeX nicht viel Arbeit gesteckt. Mithilfe von LuaTeX und post_linebreak_filterkonnte ich eine etwas strukturiertere Ausgabe für die Zeile erhalten:Hier. Das ist für typische Anwendungen zu ausführlich, aber ein interaktives System könnte über „Erweitern/Anzeigen“ verfügen, um die tatsächlichen Glyphen der Schriftarten anzuzeigen, anstatt verwirrendes Zeug wie !usw.)

verwandte Informationen