Für Absatzboxen hatte ich mal pauschal minipage verwendet, in der Annahme, dass man da nix falsch machen kann. Selbst bei kleinen Sachen, wenn ich z.B. mal einen umbrochenen Text in einem Label an einem Graphen brauchte. Sah für mich analog zu \parbox aus, nur solider.
Dann sagte mir jemand "wozu?" - minipage wäre übertrieben. Meistens würde \parbox reichen, minipage nur für komplexere Inhalte. Vermutlich hat er recht, nun nehme ich \parbox, weniger Fähigkeiten und weniger overhead mögen weniger Probleme bedeuten, wenn es nur um eine Textbox mit Umbruch geht.
Ist \parbox zu verwenden, wenn es ausreicht, der richtige Rat? Doch welchen Fällen muss ich zu minipage greifen?
Ich möchte die Unterschiede in Listenform darstellen. Zu jedem Unterschied wird ein Minimalbeispiel bereitgestellt.
Bereits im ersten Satz ist ein wesentlicher Unterschied genannt worden. minipage ist eine Umgebung und parbox ein Anweisung. Das hat unmittelbar zur Folge, dass Innerhalb von parbox keine Verbatim-Anweisungen funktionieren:
Die Umgebung minipage stellt einen eigenen Fußnotenzähler und Ausgabealgorithmus für Fußnoten zur Verfügung. \parbox hat keinen eigenen Mechanismus hierfür.
Allerdings erlaubt \parbox die Kombination von \footnotemark und \footnotetext
Innerhalb von minipage und parbox werden \parskip und \parindent ignoriert. Allerdings wurde bei minipage der Hook \@minipagerestore eingebaut, der durch den Benutzer geändert werden kann:
Code, hier editierbar zum Übersetzen:
1
2
3
4
5
6
\documentclass{article}
\begin{document}
\fbox{\begin{minipage}{5cm} Text\par Text Text\end{minipage}}
Innerhalb diverser Definitionen des LaTeX-Kernels ist der Test \if@minipage eingebaut worden. Bspw. bei den Anweisungen für Listen, bei der Anweisung \addvspace, \addpenalty. Somit kommt der minipage eine besondere Bedeutung zu. Basierend auf den obigen Test ergeben sich somit Unterschiede, die das nachstehende Beispiel zeigen soll. Der Abstand einer Liste zur obigen Kante wird bei minipage nicht gesetzt. addvspace fügt ebenfalls keinen Abstand hinzu, wenn es als erstes in einer minipage ausgeführt wird.
Die Umgebung minipage setzt zudem den internen Zähler \@listdepth auf 0. Normalerweise können Listen nur bis zur fünften Ebene (start bei 0) verschachtelt werden. Da innerhalb von minipage dieser Zähler auf 0 gesetzt wird, sind also weitere Verschachtelungen möglich.
Der Unterschied zwischen minipage und parbox ist im Schwerpunkt auf Fußnoten und Verbatim einzugrenzen. Solltest du also nur einfachen Text nutzen, macht es keinen Unterschied.
Hervorragende Erklärungen! Der Effekt von \if@minipage ist nützlich anzuwenden in p-Tabellenzellen, die sich wie \parbox verhalten und daher um Listen sonst viel Platz lassen würden.
Vielleicht kannst Du noch hinzufügen, dass innerhalb von minipage die Länge \textwidth die Breite der minipage und nicht die Breite des gesamten Textkörpers ist.
Eine \parbox sollte man immer dann nehmen, wenn man im Prinzip nichts weiter als einen Zeilenumbruch benötigt, den eine normale (horizontale) Box nicht erlaubt. Beispiele wären rotierte Tabellenüberschriften, einzelne Tabellenzellen in l- oder r-Spalten.
Eine minipage sollte man immer dann nehmen, wenn man Dinge benötigt, die in der \parbox nicht möglich sind, beispielsweise \verb oder die verbatim-Umgebung oder eigene Fußnoten.
In Tabellen ist es manchmal hilfreich, wenn man einzelnen p-Spalten vorgaukelt, dass sie durch eine minipage definiert wurden: