Warum benötigt Adjustbox eine Optimierung von raise=-0.3ex mit Enumitem?

Warum benötigt Adjustbox eine Optimierung von raise=-0.3ex mit Enumitem?

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:

Bildbeschreibung hier eingeben

Ohne das raise=-0.3exist die Artikelnummer nicht mit dem Text ausgerichtet:

Bildbeschreibung hier eingeben

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 minipageUmgebung.

  • 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 ein minipage, und daher wird seine Grundlinie gewählt, ohne das implizite zu entfernen \strut. Wenn man \strutin 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 \fboxund des Materials innerhalb des vollständig auszurichten minipage, muss man auch eine Anpassung (Wortspiel beabsichtigt) für die Dicke der Linie (angegeben durch den Parameter \fboxrule; Standardwert: \arrayrulewidth, normalerweise 0.4pt) vornehmen, die die Fbox umgibt. Und da der Wert von \fboxsepim 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:

Bildbeschreibung hier eingeben

\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=truft adjustboxnicht 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=twird 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 adjustboxist 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}

Bildbeschreibung hier eingeben

verwandte Informationen