====== Ich bekomme die Meldung Overfull \hbox – was kann ich tun? ======
TeX erzeugt manchmal Warnungen der Art:
Overfull \hbox (0.21693pt too wide) in paragraph at lines 14--22
\OT1/cmr/m/n/10 geht es rich-tig los. Stau auf
Was ist das und was kann ich dagegen tun?
Normalerweise deutet das darauf hin, dass TeX eine Zeile nicht richtig umbrechen kann, ohne, dass der Absatz (aus TeX's Sicht) furchtbar schlimm aussieht und zu große Lücken entstehen. Meist passiert das bei schmalen Spalten oder bei Wörtern, die TeX nicht richtig trennen kann. (Siehe auch [[absatzumbruch_in_tex|Wie funktioniert der Absatzumbruch in TeX?]])
Folgender Code verdeutlicht das Problem:
\documentclass[ngerman,draft]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[textwidth=4cm]{geometry}
\begin{document}
Seit zwei Jahren ist meine Arbeit in Düsseldorf. Meine Familie lebt dagegen in
Hamburg. Und dazwischen ich, aber ganz cool. Vollbremskombination aus Ampel
oder Einfädeln oder beides auf einmal. Geht nur mit Tricks. Eben noch kurz auf
die A 52. Schon vielversprechend lebhaft. Hinter dem Breitscheider Kreuz geht
es richtig los. Stau auf der A 3 bis Oberhausen. Danach entspannt es sich auch
nur deshalb, weil enge Baustellen mit rüden Geschwindigkeitsbegrenzungen zum
gleichmäßigen Rollen zwingen. Es wird links überholt, es wird rechts überholt.
Es wird gar nichts mehr, alles steht und macht lange Gesichter.
\end{document}
|{{:overfullhbox1.png?nolink&|}} |
Overfull \hbox (4.44154pt too wide) in paragraph at lines 8--16
[]\T1/cmr/m/n/10 Seit zwei Jah-ren ist mei-|
Overfull \hbox (10.0754pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 ne Ar-beit in D?s-sel-dorf. Mei-|
Overfull \hbox (1.24422pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 Ham-burg. Und da-zwi-schen|
Overfull \hbox (4.63228pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 brems-kom-bi-na-ti-on aus Am-|
Overfull \hbox (4.41011pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 pel oder Ein-f?-deln oder bei-|
Overfull \hbox (1.68855pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 mit Tricks. Eben noch kurz|
Overfull \hbox (6.46516pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 ter dem Breit-schei-der Kreuz|
Overfull \hbox (0.18892pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 geht es rich-tig los. Stau auf|
Overfull \hbox (5.61815pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 ge Bau-stel-len mit r?-den Ge-|
Overfull \hbox (8.24251pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 schwin-dig-keits-be-gren-zun-gen|
Overfull \hbox (6.46516pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 zwin-gen. Es wird links ?ber-|
Overfull \hbox (12.04713pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 holt. Es wird gar nichts mehr,|
|
Die schwarzen Balken zeigen, wo die übervolle Box aufgetreten ist (Option ''draft'' bei ''\documentclass''). Es gibt hier verschiedene Lösungsansätze:
- Worttrennungen überprüfen
- Paket ''microtype'' benutzen
- Andere Schriftart auswählen
- Andere Parameter beim Umbruch benutzen
- Spaltenbreite vergrößern (in manchen Fällen auch verringern)
- Text umformulieren
===== Worttrennungen überprüfen =====
Manchmal besteht das Problem einfach darin, dass TeX gewisse Wörter nicht richtig trennen kann und diese dann über den rechten Rand hinausragen oder einen guten Umbruch verhindern. Leider lässt sich das mit TeXs Bordmitteln relativ schwer überprüfen. Die Meldungen oben zeigen nur die Worttrennungen falls an dieser Stelle die übervolle Box aufgetreten ist. Oft ist aber eine fehlerhafte Trennung in der Nähe verantwortlich für einen schlechten Umbruch. Mit LuaTeX kann das Paket ''showhyphens'' benutzt werden, um alle möglichen Trennungen anzuzeigen, im Beispiel sind Worttrennungen aber kein Problem.
===== Das Paket microtype einbinden =====
Das Paket ''microtype'' aktiviert das sogenannte //HZ-Programm//, mit dem bessere Umbruchpunkte gefunden werden können. Dazu verändert es die Buchstabenbreite in einem gewissen Maß, dass es dem Leser nicht auffällt. Durch diese Veränderung (bis ca. 2 Prozent) kann der Absatz meist so umbrochen werden, dass deutlich weniger schlechte Stellen auftreten. Hier wieder dasselbe Dokument von oben, nur mit ''\usepackage{microtype}'' und ohne die ''draft''-Option, die das microtype Paket wieder ausschaltet':
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[textwidth=4cm]{geometry}
\usepackage{microtype}
\begin{document}
...
\end{document}
|{{:overfullhbox2.png?nolink&|}} |
Overfull \hbox (0.87909pt too wide) in paragraph at lines 8--16
[]\T1/cmr/m/n/10 (-20) Seit zwei Jah-ren ist mei-
Overfull \hbox (6.11137pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) ne Ar-beit in D?s-sel-dorf. Mei-
Overfull \hbox (0.67159pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) brems-kom-bi-na-ti-on aus Am-
Overfull \hbox (0.57607pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) pel oder Ein-f?-deln oder bei-
Overfull \hbox (5.79033pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) schwin-dig-keits-be-gren-zun-gen
Overfull \hbox (2.57335pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) zwin-gen. Es wird links ?ber-
Overfull \hbox (8.35138pt too wide) in paragraph at lines 8--16
\T1/cmr/m/n/10 (-20) holt. Es wird gar nichts mehr,
|
Mit sieben statt zwölf Warnungen schon deutlich besser, aber noch nicht gut genug.
===== Andere Schriftart auswählen =====
Meist lässt sich durch eine andere (schmaler laufende) Schriftart das Problem vollständig beheben. Hier ein beispielhafter Vorspann (Präambel) mit der Schriftart Linux Libertine:
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[textwidth=4cm]{geometry}
\usepackage{libertine}
\usepackage{microtype}
\begin{document}
...
Das Ergebnis ist zwar immer noch nicht gut, aber es geht schon in die richtige Richtung:
|{{:overfullhbox3.png?nolink&|}} |
Overfull \hbox (3.97018pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) ich, aber ganz cool. Voll-brems-
Overfull \hbox (0.155pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) kom-bi-na-ti-on aus Am-pel oder
Overfull \hbox (0.85176pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) Ein-f?-deln oder bei-des auf ein-
Overfull \hbox (5.83018pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) mal. Geht nur mit Tricks. Eben
Overfull \hbox (0.84563pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) noch kurz auf die A 52. Schon
Overfull \hbox (4.21068pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) viel-ver-spre-chend leb-haft. Hin-
Overfull \hbox (20.45653pt too wide) in paragraph at lines 9--17
\T1/LinuxLibertineT-OsF/m/n/10 (-20) dig-keits-be-gren-zun-gen zum gleich-
|
===== Andere Parameter beim Umbruch benutzen =====
Das ist die letzte Stellschraube, an der man drehen kann, ohne den Text oder die Spaltenbreite zu verändern. TeX hat eine Vielzahl an Parametern für den Absatzumbruch. Beispielsweise, wie weit Leerräume zwischen den Wörtern gedehnt werden dürfen. Die Voreinstellung für diese Parameter ist meist //sehr streng//. LaTeX bietet über den Befehl ''\sloppy'' bzw. der Umgebung ''sloppypar'' etwas lockere Parameter für den Umbruch. In unserem Beispiel angewendet ergibt sich dann ein brauchbares Ergebnis:
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[textwidth=4cm]{geometry}
\usepackage{libertine}
\usepackage{microtype}
\begin{document}
\sloppy
Seit zwei Jahren ist meine Arbeit in Düsseldorf. Meine Familie lebt dagegen in
Hamburg. Und dazwischen ich, aber ganz cool. Vollbremskombination aus Ampel
oder Einfädeln oder beides auf einmal. Geht nur mit Tricks. Eben noch kurz auf
die A 52. Schon vielversprechend lebhaft. Hinter dem Breitscheider Kreuz geht
es richtig los. Stau auf der A 3 bis Oberhausen. Danach entspannt es sich auch
nur deshalb, weil enge Baustellen mit rüden Geschwindigkeitsbegrenzungen zum
gleichmäßigen Rollen zwingen. Es wird links überholt, es wird rechts überholt.
Es wird gar nichts mehr, alles steht und macht lange Gesichter.
\end{document}
erzeugt folgende Ausgabe:
{{:overfullhbox4.png?nolink&|}}
Genau das, was erreicht werden sollte! Nicht ganz perfekt, die fünfte Zeile stört ein wenig, aber zumindest keine Zeilen mehr, die über den Rand gehen.