Ich verwende eine KOMA-Script-Klasse und die Option parskip bzw. parskip=true. Wenn ich eine Abbildung oder eine minipage von genau Textbreite habe, erhalte ich die genannte Warnung.

In diesem Minimalbeispiel

\documentclass[parskip=true,draft]{scrartcl}
\begin{document}
\begin{minipage}{\textwidth}%
Inhalt%
\end{minipage}%
\end{document}

kriegt man die Warnung

Overfull \hbox (10.95003pt too wide) in paragraph at lines 3--6

und durch die draft-Option sieht man eine Markierung auf der rechten Seite.

Was verursacht die Überbreite?

gefragt 21 Aug '13, 08:59

Student's gravatar image

Student
5807779104
Akzeptiert-Rate: 82%

@Qrrbrbirlbel Das wäre auch als Antwort passend ;-) hatte meine Antwort schon angefangen - mehr in der Annahme, dass der OP es abstellen wollte als nur die genaue Ursache zu kennen.

(21 Aug '13, 09:36) stefan ♦♦

Die parskip=true- bzw. parskip=full-Option wird vom KOMA-Script-Handbuch (Version 2012-07-22) beschrieben mit

„Absätze werden durch einen vertikalen Abstand von einer Zeile gekennzeichnet, Absatzenden durch einen Leerraum von mind. ein Geviert (1 em) der Grundschrift am Ende der letzten Zeile.“

Genau dieses eine Geviert wird uns hier angezeigt; die minipage ist am Ende nur eine große Box, die TeX nicht trennen kann, wohin also mit dem Em? Die Zeile mit der minipage ist am Ende sogar \textwidth + 1em groß.

Möchtest du diese Absatzendenleerraumkennzeichnung ganz allgemein nicht, kannst du die parskip=full--Option verwenden, Absatzenden nicht kennzeichnet.
Es gibt außerdem noch full+ und full*, die mindestens ein Drittel (+) bzw. mindestens ein Viertel (*) der Zeile als Absatzendenleerraum reserviert.

Gleiches gilt für die half-Variante, nur dass hier eben der Absatzabstand eine halbe Zeile hoch ist.


Intern wird hier von TeX bzw. KOMA-Script über die Zeile

\setparsizes{\z@}{\baselineskip \@plus .1\baselineskip}{1em \@plus 1fil}%

der \parfillskip zu 1em plus 1fil gesetzt (fil bedeutet, dass es auch länger als 1em sein kann).

Um die Warnung zu verhindern (und eben kein \parfillskip zu haben), solltest du \KOMAoptions{parskip=full-} vor der minipage verwenden. Selbstverständlich sollte das am besten in einer Gruppe passieren, damit du nicht nach der minipage manuell wieder in die vorherige Einstellung wechseln musst.

{\KOMAoptions{parskip=full-}
\begin{minipage}{\textwidth}
Inhalt
\end{minipage}\par}

Oder du definierst gleich eine neue Umgebung, die das automatisch macht und unabhängig von der Einstellung full oder half ist, sondern eben nur den \parfillskip ändert.

Code

\documentclass[parskip=true,draft]{scrartcl}
\makeatletter
\newenvironment*{Minipage}{\parfillskip\z@\@plus 1fil\relax\minipage}{\endminipage\par}
\makeatother
\begin{document}
\begin{Minipage}{\textwidth}
Inhalt
\end{Minipage}
\end{document}
Permanenter link

beantwortet 21 Aug '13, 09:51

Qrrbrbirlbel's gravatar image

Qrrbrbirlbel
2.9k3815
Akzeptiert-Rate: 53%

bearbeitet 21 Aug '13, 10:29

Wie bereits von meinen Vorrednern erklärt, werden bei parskip=true, das laut KOMA-Script-Anleitung parskip=full entspricht, Absätze mit einem Mindestleerraum am Ende der letzten Absatzzeile gesetzt. In Deinem Fall ist die minipage die erste und letzte Zeile des Absatzes. Der Leerraum – sowohl der minimale als auch der maximal – am Ende des Absatzes ist durch die Länge \parfillskip gegeben, so wie der Absatzeinzug, also der minimale und maximale Leerraum am Anfang des Absatzes durch \parindent gegeben ist.

Ein schneller Hack, um die letzte Zeile eines Absatzes komplett zu füllen, besteht darin, \parfillskip unmittelbar vor dem Ende der letzten Zeile weg zu nehmen:

\documentclass[parskip=true,draft]{scrartcl}
\begin{document}
\begin{minipage}{\textwidth}%
Inhalt%
\end{minipage}\hspace{-\parfillskip}

\end{document}

Es ist jedoch zu beachten, dass das ggf. auch dazu führt, dass die letzte Zeile des Absatzes auch dann komplett gefüllt wird, wenn dies nicht notwendig wäre:

\documentclass[parskip=true,draft]{scrartcl}
\begin{document}
Sehr kurzer Absatz.\hspace{-\parfillskip}
\end{document}

gedehnter Absatz

Man sollte diesen Hack also wirklich nur dann anwenden, wenn man wirklich die letzte Zeile auf Textbreite ausgedehnt haben will, wie das im Beispiel der minipage der Fall ist. Jedoch kann man auch einfach \parfillskip selbst als mögliche Schrumpfung verwenden:

\documentclass[parskip=true,draft]{scrartcl}
\begin{document}
\begin{minipage}{\textwidth}
Inhalt%
\end{minipage}\hspace{0pt minus \parfillskip}
\end{document}

Gleichzeitig wird die letzte Zeile nicht zwangsweise auf Spaltenbreite gedehnt:

\documentclass[parskip=true,draft]{scrartcl}
\begin{document}
Sehr kurzer Absatz\hspace{0pt minus \parfillskip}
\end{document}

ohne Dehnung

Weitere Tricks wie negative Werte nach plus sind denkbar, führen jedoch zu weit von der ursprünglichen Frage weg.

Desweiteren sei auf die Erklärung zu \setparsizes in Teil II der KOMA-Script-Anleitung hingewiesen. Dort wird das Problem der Boxen, die einzeilige Absätze bilden, ebenfalls angeschnitten.

Permanenter link

beantwortet 24 Aug '13, 12:43

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 24 Aug '13, 12:57

Bei parskip=true (gleichbedeutende Werte: full, on, yes, oder nur parskip ohne Wert) wird das Absatzende durch Leerraum gekennzeichnet (mindestens 1 em). Der Leerraum verursacht hier die Überbreite.

Daher müsste man die Breite der minipage verringern oder den Absatzumbruch vermeiden, oder man ändert das Verhalten der parskip-Option durch:

parskip=full-

Dann wird das Absatzende nicht markiert. Analog verhält sich auch half- mit geringerem Absatzabstand. Die gesamten Optionen stehen im KOMA-Script-Handbuch.

Permanenter link

beantwortet 21 Aug '13, 09:31

stefan's gravatar image

stefan ♦♦
18.3k163148
Akzeptiert-Rate: 50%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×131
×9

gestellte Frage: 21 Aug '13, 08:59

Frage wurde gesehen: 14,626 Mal

zuletzt geändert: 24 Aug '13, 12:57