
Das folgende MWE liefert die gewünschten Ergebnisse. Aber gibt es eine bessere Möglichkeit, diese Ausrichtung zu erreichen als die folgende raise=-0.3ex
:
Ohne das raise=-0.3ex
ist die Artikelnummer nicht mit dem Text ausgerichtet:
Code:
\documentclass{article}
\usepackage{enumitem}
\usepackage[export]{adjustbox}
\fboxsep=0pt
\newadjustboxenv{MyAdjustbox}{valign=t, raise=-0.3ex}%
\begin{document}
\begin{enumerate}
\item
\begin{MyAdjustbox}
\fbox{%
\begin{minipage}[t]{\linewidth}
Some text that takes up several lines, so we need to adjust the
item number to align with the top baseline.
\end{minipage}%
}%
\end{MyAdjustbox}%
\end{enumerate}%
\end{document}
Antwort1
Ich denke, dass es sich hier um zwei verschiedene Probleme handelt. Das Hauptproblem ergibt sich aus der Nutzung einer minipage
Umgebung.
Die erste Zeile im Material innerhalb der Fbox enthält kein Material, das größer als Großbuchstaben ist. Da dieses Material in ein eingeschlossen ist
minipage
, wird der ungenutzte vertikale Leerraum, der für Symbole wie(
und benötigt)
wird, entfernt. Im Gegensatz dazu ist das Aufzählungssymbolnichteingeschlossen in einminipage
, und daher wird seine Grundlinie gewählt, ohne das implizite zu entfernen\strut
. Wenn man\strut
in der ersten Zeile des ein einfügt\fbox
, entfällt der größte Teil der Notwendigkeit einer vertikalen Anpassung.Um die Grundlinien des Partikels „1.“ vor dem
\fbox
und des Materials innerhalb des vollständig auszurichtenminipage
, muss man auch eine Anpassung (Wortspiel beabsichtigt) für die Dicke der Linie (angegeben durch den Parameter\fboxrule
; Standardwert:\arrayrulewidth
, normalerweise0.4pt
) vornehmen, die die Fbox umgibt. Und da der Wert von\fboxsep
im Allgemeinen ungleich Null ist, schlage ich vor, den folgenden Code zu verwenden\newadjustboxenv{MyAdjustbox}{valign=t, raise=\fboxrule+\fboxsep}
anstelle
\newadjustboxenv{MyAdjustbox}{valign=t, raise=-0.3ex}
Mit diesen beiden Anpassungen (noch ein Wortspiel – autsch!) erhalte ich diesen Screenshot:
\documentclass{article}
\usepackage{enumitem}
\usepackage[export]{adjustbox}
\fboxsep=0pt
\newadjustboxenv{MyAdjustbox}{valign=t, raise=\fboxrule+\fboxsep}
\begin{document}
\begin{enumerate}
\item
\begin{MyAdjustbox}
\fbox{%
\begin{minipage}{\linewidth}\strut%
Some text that takes up several lines, so we need
to adjust the item number to align with the top
baseline.
\end{minipage}%
}%
\end{MyAdjustbox}%
\end{enumerate}%
\end{document}
Antwort2
Die Option valign=t
ruft adjustbox
nicht die innere obere Grundlinie ab, wie dies bei der [t]
Option „Miniseite“ oder „Tabelle“ der Fall ist.adjustbox
berechnet eine Höhe, die die aktuelle Schriftgröße des Textes berücksichtigt: standardmäßig valign=t
wird die Höhe auf die Höhe des aktuellen eingestellt \strutbox
.
Das bedeutet, dass der Wert je nach Text in der ersten Zeile im Verhältnis zur Zahl zu hoch oder zu niedrig sein kann. Im ersten Fall kann man ihn mit dem Code von Mico „reparieren“, im zweiten Fall gibt es jedoch keine einfache Lösung.
Meiner Meinung nach adjustbox
ist dies die falsche Umgebung für solche Boxen. Es ist nützlich zum Ausrichten von Bildern, die keine eigene Grundlinie haben, aber nicht für Textboxen.
\documentclass{article}
\usepackage{enumitem}
\usepackage[export]{adjustbox}
\newadjustboxenv{MyAdjustbox}{valign=t}
\begin{document}
\begin{enumerate}
\item
\begin{MyAdjustbox}%too high
\begin{minipage}[t]{\linewidth}
aaaa
\end{minipage}%
\end{MyAdjustbox}
\item \begin{MyAdjustbox}%too low
\begin{minipage}[t]{\linewidth}
$\int\limits_1^3 f(x) $
\end{minipage}%
\end{MyAdjustbox}
\end{enumerate}
\end{document}