
Einige LaTeX-Befehle akzeptieren mehrere optionale Argumente. Hier sind einige Beispiele:
\makebox[<width>][<pos>]{<text>}
\framebox[<width>][<pos>]{<text>}
\parbox[<pos>][<height>][<contentpos>]{<width>}{<text>}
\raisebox{<lift>}[<height>][<depth>]{<text>}
\begin{minipage}[<pos>][<height>][<contentpos>]{<width>} <content> \end{minipage}
(eigentlich eine Umgebung)
(Aber meine Frage ist ganz allgemein gemeint.)
Es erscheint intuitiv, dass, wenn nur eine echte Teilmenge optionaler Argumente angegeben wird, diese von links beginnend ausgefüllt werden. (<- Beachten Sie, dass sich diese Vermutung als falsch herausstellt!)
Aber ist das Verhalten irgendwo dokumentiert? Kennt jemand Gegenbeispiele?Es gibt keinen Grund a priori, warum alle Befehlehabensich so zu verhalten.
Antwort1
Es gibt keine allgemeine Konvention für die Interpretation fehlender optionaler Argumente. Was du als Beispiele heranziehst, zeigt dies: Es gibt kein „Auffüllen von links“, was auch wenig Sinn machen würde.
In manchen Fällen verhält sich der Befehl anders als die von Ihnen zitierten. Beispielsweise biblatex
haben Zitierbefehle in die Form
\command[prenote][postnote]{keys}
und ein fehlendes zweites optionales Argument führt dazu, dass das erste als interpretiert wird postnote
. Diese Entscheidung trifft der Programmierer.
Dies ist kein „Gegenbeispiel“, da keine allgemeine Regel angegeben werden kann.
Die vier Befehle und die Umgebung, die Sie erwähnen, werden im LaTeX-Handbuch beschrieben, aber die erweiterte Syntax, also das zweite und dritte optionale Argument für \parbox
und minipage
, wird nur im LaTeX Companion beschrieben.
\makebox[wdth][pos]{text}
steht auf Seite 217 des LaTeX-Handbuchs. Das zweite optionale Argument ist nur sinnvoll, wenn das erste angegeben ist; es ist standardmäßigc
und kann auchl
,r
oder seins
. Sie bedeuten „zentriert“, „links“, „rechts“ und „ausbreiten“; die ersten drei sind fast offensichtlich, da sie angeben, wie das Material im Verhältnis zur angegebenen Breite platziert wird; das letzte bedeutet, dass die Zwischenräume im Material gestreckt werden, um die angegebene Breite auszufüllen.\framebox
hat genau die gleiche Syntax wie\makebox
\raisebox{raise_len}[width][depth]{text}
befindet sich auf Seite 219 des LaTeX-Handbuchs. Das zweite optionale Argument zur Angabe der Tiefe der resultierenden Box kann nur verwendet werden, wenn das erste angegeben ist.\parbox[pos][height][inner-pos]{width}{text}
finden Sie auf Seite 866 des LaTeX Companion (zweite Ausgabe). Das LaTeX-Handbuch erwähnt nur das erste optionale Argument.minipage
Die Argumente haben nämlich genau die gleiche Bedeutung.
Was bewirken die optionalen Argumente von \parbox
und minipage
?
Das dritte optionale Argument kann nur angegeben werden, wenn ihm die anderen beiden vorangehen; das zweite nur, wenn ihm das erste vorangeht.
Das erste optionale Argument kann c
(Standard) t
oder sein b
und gibt an, wie die resultierende Box vertikal im Verhältnis zum umgebenden Material ausgerichtet wird. Für t
erfolgt die Ausrichtung in Bezug auf die Grundlinie des ersten Elements in der Box, für b
wird das letzte Element verwendet; c
bedeutet, dass die Box vertikal zentriert ist, halb über der Grundlinie und halb darunter (fast).
Das zweite optionale Argument gibt eine vertikale Dimension für die Box an. Hier ist ein Beispiel: \rod
Zeichnet einfach ein Maßband mit einem Marker für die Grundlinie, der links davon angebracht ist. \fbox
Dies wird verwendet, um die Erweiterung der Box anzuzeigen.
\documentclass{article}
\newcommand{\rod}[2]{%
\leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}
\setlength{\fboxsep}{0pt}
\begin{document}
\rod{2cm}{0pt}
\fbox{\parbox[b][2cm]{.3\textwidth}{
Some text\\
some other text\\
again
}}
\end{document}
c
Für das dritte optionale Argument könnten wir verwenden
\parbox[b][2cm][c]{.3\textwidth}{...}
und wir würden bekommen
Beachten Sie, dass die Erweiterung des Felds gleich bleibt. Nur der Text darin wird so verschoben, dass er in der Mitte des verfügbaren Platzes liegt. Wenn das dritte Argument nicht angegeben wird, ist es standardmäßig gleich dem ersten.
Das letzte optionale Argument kann auch sein s
, aber es muss etwas flexibler Platz bereitgestellt werden. Zum Beispiel
\parbox[b][2cm][s]{.3\textwidth}{
Some text\\[\fill]
some other text\\[\fill]
again
}
würde produzieren
Beachten Sie, dass in keinem der oben genannten Fälle die Tiefe des letzten Elements in der Box hinsichtlich der vertikalen Dimension berücksichtigt wird. Im zweiten Beispiel ist die Boxgenau2 cm in vertikaler Richtung, da der letzte Punkt der Füllkleber ist, der keine Tiefe hat.
Hier ist ein kombiniertes Beispiel für die „obere“ äußere Ausrichtung. Es gelten die gleichen Überlegungen wie zuvor.
\documentclass{article}
\newcommand{\rod}[2]{%
\leavevmode\smash\llap{\vrule height .2pt depth .2pt width 4pt \vrule height #1 depth #2}%
}
\setlength{\fboxsep}{0pt}
\begin{document}
\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm]{.3\textwidth}{
\strut Some text\\
some other text\\
again
}}
\rod{0pt}{2cm}
\fbox{\parbox[t][2cm][b]{.3\textwidth}{
\strut Some text\\
some other text\\
again
}}
\rod{\ht\strutbox}{\dimexpr2cm-\ht\strutbox}
\fbox{\parbox[t][2cm][s]{.3\textwidth}{
\strut Some text\\
some other text\\[\fill]
again
}}
\end{document}