Overfull Boxes in Latex

Schriftbild, Absätze und Auflistungen einstellen


Kortu

Overfull Boxes in Latex

Beitrag von Kortu »

Hey Leute,
ich habe mal eine kurze Zwischenfrage. Ich schreibe schon einige Zeit mit Latex. Gibt es eigentlich irgendeine Möglichkeit die Overfull Boxes zu vermeiden? Ich habe schon einige unternommen um die Anzahl zu minimieren. Und es hat auch teilweise was gebracht.
\usepackage[T1]{fontenc} %Die nutzung der vollen 8 Bit hat schon geholfen
Neuberechnung des Satzspiegels ziemlich am Ende aller Einstellungen ist auch sehr positiv.
\KOMAoptions{DIV=last}
Zudem scheint es auch von der Schriftart abzuhängen wieviele overfull Boxes von Latex erzeugt und angezeigt werden.

\usepackage{lmodern} erzeugt bei einem 35 seitigen Dokument 5 Overfull Boxes in Tex

\usepackage{mathpazo} hingegen erzeugt beim gleichen Dokument 11 Overfull Boxes.

Ich bin ein kleiner Pedant 8) und hätte gerne 0 Overfull Boxes. Wie kriege ich das hin?

Gruß
Stephan

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Unterschiedliche Schriften laufen unterschiedlich breit und führen damit zu unterschiedlichem Absatzumbruch. Man kann allerdings nicht grundsätzlich sagen, dass eine weit laufende Schrift zu einem schwierigeren Umbruch führt. Tendenziell bedeuten aber weniger Zeichen pro Zeile, dass der Umbruch schwieriger wird.

Zu Deinem Problem. Ich hoffe, Du hast die richtige Sprache eingestellt. Einen deutschen Text sollte man also unbedingt beispielsweise mit
\usepackage[ngerman]{babel}
setzt, damit TeX eine Chance hat die richtigen und möglichst viele Trennstellen zu finden.

Falls Du viele Komposita mit Bindestrich hast, kann es sinnvoll sein, entgegen stilistischer und typografischer Empfehlungen nicht nur am Bindestrich, sondern auch innerhalb der Teile eine Trennung zu erlauben. Bei Verwendung von german, ngerman oder babel mit einer der angegebenen Spracheinstellungen geht das per shortcut:
Bratwurst"=Grillgestänge
würde beispielsweise auch die Trennung »Bratwurst-Grillge- stränge« erlauben. Das ist nicht schön. Eine minimale Textänderung wäre in der Regel besser. Im konkreten Fall ginge auch:
Bratwurst-Grill""gestänge
Dadurch wäre eine Trennung »Bratwurst-Grill- gestänge« erlaubt (aber AFAIK auch obige unschöne, die man dann aber wieder durch \mbox{gestänge} verhindern kann).

Für komplexe, künstliche Wortgebilde kann es auch sinnvoll sein, alle Trennstellen manuell entweder per \hyphenation-Anweisung oder mit \- oder "- anzugeben.

Ich will bei dieser Gelegenheit auch daran erinnern, dass TeX keinen Zeilen- sondern einen Absatzumbruch macht. Das bedeutet, dass der Umbruch des gesamten Absatzes nach verschiedenen Kriterien beurteilt wird. Eine minimale Änderung in Zeile 100 eines Absatzes kann im Extremfall dazu führen, dass der komplette Absatz (auch die 99 Zeilen davor) anders umbrochen werden.

Damit sind wir bei den Parametern. Einer dieser Parameter ist, wieviel Leerraum zwischen den Wörtern eingefügt werden darf. Man sollte hier nicht zu großzügig sein, weil sonst der berüchtigte Lochsatz entsteht (beispielsweise häufig, wenn man einen Absatz in der sloppypar-Umgebung setzt). Für die deutsche Sprache mit ihren langen untrennbaren Sequenzen ist oftmals ein Notfallleerraum eine sinnvolle Lösung. Mit
\setlength{\emergencystretch}{1em}
kann man beispielsweise einstellen, dass notfalls bis zu einem Geviert zusätzlicher Abstand eingebaut werden darf, wenn alle vorherigen Umbruchversuche gescheitert sind. TeX führt dann einen weiteren Lauf im Absatzumbruch durch. Das ist ein großer Unterschied zu dem, was bei sloppypar geschieht (dort gibt sich TeX einfach bereits mit einem schlechteren Umbruch im zweiten Lauf zufrieden). Kurz gesagt macht TeX dann bis zu drei Läufe:
  • Umbruchversuch ohne Trennung
  • Umbruchversuch mit Trennung
  • Umbruchversuch mit Trennung und \emergencystretch
Übrigens: Ich arbeite gerade an einem Buch mit 560, bei dem ich im ersten Durchlauf durchschnittlich mehr als eine overfull \hbox im ersten Durchlauf hatte. Alle overfull-\hbox-Meldungen, bei denen man die Überfüllung nicht oder nur mit Mühe erkennen kann, habe ich ignoriert. Alle anderen wurden durch Textänderung entfernt. Dabei enthalten manche Absätze gleich mehrere Elemente im Bereich einer viertel Zeilenlänge, die nicht getrennt werden dürfen. Das macht Spaß! Ganz besonders lustig wird es, wenn dann jemand in so einem Absatz einen Tippfehler entdeckt und dessen Beseitigung wieder zu Umbruchproblemen führt. Trotzdem: sloppypar oder gar \sloppy (siehe l2tabu) war zur Lösung der Umbruchprobleme nicht erforderlich.

pospiech
Moderator
Moderator
Beiträge: 247
Registriert: Do 3. Jul 2008, 11:40
Wohnort: Hannover
Kontaktdaten:

Beitrag von pospiech »

Markus Darstellung würde ich zusammenfassen mit:
- Trennungen ermöglichen wenn LaTeX sie noch nicht kennt
- Text umformulieren

zusätzlich sollte man beachten, dass man mit der Option "draft" diese Textstellen optisch angezeigt bekommt. Ich habe dabei häufiger festgestellt dass ich diese Overfull Boxen mit dem Auge nicht wahrgenommen hätte.

Matthias

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

pospiech hat geschrieben:Markus Darstellung würde ich zusammenfassen mit:
- Trennungen ermöglichen wenn LaTeX sie noch nicht kennt
- Text umformulieren
Dann würdest Du die Änderung von \emergencystretch aber außen vor lassen. In vielen Dokumenten ist sie aber durchaus gerechtfertigt und führt zu keinem wirklich schlechten Umbruch.
pospiech hat geschrieben:zusätzlich sollte man beachten, dass man mit der Option "draft" diese Textstellen optisch angezeigt bekommt. Ich habe dabei häufiger festgestellt dass ich diese Overfull Boxen mit dem Auge nicht wahrgenommen hätte.
Wenn eine overfull \hbox auch mit geübtem Auge nicht wahrgenommen werden kann, dann ist das ein guter Grund, sie zu ignorieren. draft ist deshalb gut, damit man bei einem raschen Blick nichts übersieht, oder wenn man die gemeldete Stelle einfach nicht findet, aber gerne wissen will. Ein Anhaltspunkt, ob man das überhaupt sehen kann, gibt aber auch die Meldung selbst, in der ja angegeben ist, wie weit der Boxinhalt übersteht. 1 pt sind 1 / 72.27 in, also rund 0,35 mm. Weniger als 1 pt ist deshalb oft schwer zu erkennen. Es gibt natürlich Ausnahmen, beispielsweise wenn die Zeile darüber oder darunter mit demselben Zeichen endet. In dem Fall kann man ca. 1/10 mm noch erkennen.

Aber eigentlich wollte ich noch etwas ganz anderes ergänzen. Das Paket microtype gibt pdfTeX eine weitere Freiheit im Umbruch. Die Schrift einer Zeile kann damit minimal vergrößert oder verkleinert werden. Man wird den Unterschied nicht sehen, aber die oben genannten minimalen overfull \hboxes verschwinden damit komplett.

Kortu

Overfull Boxes und Umbrüche in Latex

Beitrag von Kortu »

Hey,
dank eurer Tipps konnte ich nun die Overfull Boxes minimieren auf 0 Stück. Und das ganz ohne händisches Eingreifen.

Dafür habe ich jetzt 2 underfull Boxes.....hehehehe :lol: perfekt ist es halt nie.

Vielen Dank und noch einen schönen Nachmittag.

Gruß
Kortu

Gast

Beitrag von Gast »

Wollte nur mal einen großen Dank für die Idee mit dem emergency-stretch loswerden. Das hat mein Problem mit den Glossarverweisen (glossaries-Paket) gelöst, bei denen der Zeilenumbruch nie richtig funktioniert hat.
Das Microtype-Paket bringt dann noch das letzte i-Tüpfelchen bei der Randausrichtung. Nochmal vielen Dank.

Skillvsluck

hbox

Beitrag von Skillvsluck »

bei mir passt das bild nicht in die hbox, obwohl es voher gepasst hat..
ich hatte schon öffters probleme mit packages, die es auf meinem computer nicht gab, dafür aber in der schule...
so auch mit dem einfürgen dieses bildes ...
in der schule hat alles problemlos geklappt aber zuhause hieß es plötzlich
"overfull hbox" und ich habe keine lösung dafür finden können!! :(

hier einmal die fehlermeldung..
[Loading MPS to PDF converter (version 2006.09.02).]
)
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
<bild.jpg, id=1, 519.9425pt x 308.15125pt> <use bild.jpg>
Overfull \hbox (93.14989pt too wide) in paragraph at lines 21--22
[]

schon mal danke im vorraus
LG Skillvsluck

Ironoxid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 61
Registriert: So 7. Aug 2011, 05:04
Wohnort: Hohen Neuendorf

Beitrag von Ironoxid »

Hi. Die Informationen sind ja recht spärlich, aber wenn ich deine Fehlermeldung richtig deute, so wird dir mitgeteilt, dass dein Bild grob 18 cm breit und 10 cm hoch ist. Ein Blatt Iso-A4 hat die Maße 21 cm x 29,7 cm. Wenn ich etwas TeXnisch schreibe, so haben meine Zeilen zumeist eine Breite von circa 15 cm. Alles was darüber hinausragt gibt eben die Fehlermeldung Overfull hbox. Das würde sogar dazu passen, da dir ja auch gesagt wird, dass das Objekt um grob 3 cm zu groß ist.

Eine Möglichkeit wäre zu schreiben
\includegraphics[width=\linewidth]{Bild.jpg}
, wodurch die Breite des Bildes auf die Zeilenbreite gesetzt wird. Anstelle von \linwidth könnte man auch direkt einen Wert scheiben. Zum Beispiel width=10cm.
Editor: TeXstudio, Kile

Benutzeravatar
Skillvsluck
Forum-Newbie
Forum-Newbie
Beiträge: 1
Registriert: Mi 26. Sep 2012, 17:36
Wohnort: Riedstadt

Beitrag von Skillvsluck »

Es hat funktioniert..!! :D
Vielen, vielen Dank!! :D

Antworten