
El MWE a continuación produce los resultados deseados. Pero, ¿existe una mejor manera de obtener esta alineación en lugar de raise=-0.3ex
:
Sin el raise=-0.3ex
, el número de artículo no está alineado con el texto:
Código:
\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}
Respuesta1
Creo que hay dos cuestiones separadas. El principal surge del uso de un minipage
entorno.
La primera fila del material dentro del fbox no tiene material más alto que las letras mayúsculas. Debido a que ese material está encerrado en un
minipage
, el espacio en blanco vertical no utilizado necesario para símbolos como(
y)
, se elimina . Por el contrario, el símbolo de enumeración esnoencerrado en aminipage
y, por lo tanto, se elige su línea de base sin eliminar el implícito\strut
. Si se inserta a\strut
en la primera línea de\fbox
, se elimina la mayor parte de la necesidad de ajuste vertical.Para alinear completamente las líneas de base del "1". partícula antes de
\fbox
y el material dentro deminipage
, también es necesario hacer un ajuste (juego de palabras) para el grosor de la regla (dado por el parámetro\fboxrule
; valor predeterminado:,\arrayrulewidth
generalmente0.4pt
) que rodea el fbox. Y, dado que el valor de\fboxsep
es distinto de cero en general, sugiero usar el siguiente código\newadjustboxenv{MyAdjustbox}{valign=t, raise=\fboxrule+\fboxsep}
en lugar de
\newadjustboxenv{MyAdjustbox}{valign=t, raise=-0.3ex}
Con estos dos ajustes (otro juego de palabras más, ¡ay!), obtengo esta captura de pantalla:
\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}
Respuesta2
La opción valign=t
de adjustbox
no recupera la línea de base superior interna como [t]
lo hace la opción de minipágina o tabular.adjustbox
calcula una altura que tiene en cuenta el tamaño de fuente del texto actual: de forma predeterminada valign=t
establece la altura a la altura del archivo actual \strutbox
.
Esto significa que, dependiendo del texto de la primera línea, puede ser demasiado alto o demasiado bajo en relación con el número. Puedes "reparar" el primer caso con el código de Mico, pero para el segundo caso no hay una solución fácil.
En mi opinión, adjustbox
este tipo de cajas no son el entorno adecuado. Es útil para alinear imágenes que no tienen una línea de base intrínseca, pero no para cuadros de texto.
\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}