
O MWE abaixo produz os resultados desejados. Mas existe uma maneira melhor de obter esse alinhamento em vez de raise=-0.3ex
:
Sem o raise=-0.3ex
, o número do item não fica alinhado com o 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}
Responder1
Acho que há duas questões distintas. A principal surge da utilização de um minipage
ambiente.
A primeira linha do material dentro do fbox não possui material mais alto que letras maiúsculas. Como esse material está contido em um
minipage
, o espaço em branco vertical não utilizado necessário para símbolos como(
e)
é removido. Em contraste, o símbolo de enumeração énãoencerrado em aminipage
e, portanto, sua linha de base é escolhida sem remover o implícito\strut
. Se alguém inserir um\strut
na primeira linha do\fbox
, a maior parte da necessidade de ajuste vertical será removida.Para alinhar totalmente as linhas de base do “1”. partícula antes de
\fbox
e o material dentro deminipage
, também é necessário fazer um ajuste (trocadilho intencional) para a espessura da regra (dada pelo parâmetro\fboxrule
; valor padrão:,\arrayrulewidth
geralmente0.4pt
) que envolve o fbox. E, como o valor de\fboxsep
é diferente de zero em geral, sugiro usar o seguinte código\newadjustboxenv{MyAdjustbox}{valign=t, raise=\fboxrule+\fboxsep}
em vez de
\newadjustboxenv{MyAdjustbox}{valign=t, raise=-0.3ex}
Com esses dois ajustes (mais um trocadilho – ai!), recebo esta captura de tela:
\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}
Responder2
A opção valign=t
de adjustbox
não recupera a linha de base superior interna como a [t]
opção de minipágina ou tabular faz.adjustbox
calcula uma altura que leva em consideração o tamanho da fonte do texto atual: por padrão, valign=t
define a altura como a altura do arquivo \strutbox
.
Isso significa que dependendo do texto da primeira linha ele pode ser muito alto ou muito baixo em relação ao número. Você pode "consertar" o primeiro caso com o código do Mico, mas para o segundo caso não há solução fácil.
Na minha opinião adjustbox
é o ambiente errado para essas caixas. É útil para alinhar imagens que não possuem linha de base intrínseca, mas não para caixas 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}