为什么 adjustbox 需要使用 enumitem 对 raise=-0.3ex 进行调整?

为什么 adjustbox 需要使用 enumitem 对 raise=-0.3ex 进行调整?

下面的 MWE 产生了所需的结果。但是,有没有更好的方法来获得这种对齐,而不是raise=-0.3ex

在此处输入图片描述

如果没有raise=-0.3ex,产品编号就不会与文本对齐:

在此处输入图片描述

代码:

\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}

答案1

我认为有两个不同的问题。主要问题源于minipage环境的使用。

  • fbox 中材料的第一行没有高于大写字母的材料。由于该材料被包裹在 中,因此删除了和minipage等符号所需的未使用的垂直空白。相比之下,枚举符号是()不是被包裹在 中minipage,因此它的基线是在不移除隐式 的情况下选择的。如果在 的第一行\strut插入,则大部分垂直调整的需要就被消除了。\strut\fbox

  • 为了完全对齐 之前的“1.”粒子的基线\fbox和 内部的材质minipage,还需要调整(双关语)包围 fbox 的规则的厚度(由参数 给出\fboxrule;默认值:\arrayrulewidth,通常)。而且,由于 的值通常不为零,我建议使用以下代码0.4pt\fboxsep

    \newadjustboxenv{MyAdjustbox}{valign=t, raise=\fboxrule+\fboxsep}
    

    替代

    \newadjustboxenv{MyAdjustbox}{valign=t, raise=-0.3ex}
    

通过这两项调整(又一个双关语 - 哎哟!),我得到了这个截图:

在此处输入图片描述

\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}

答案2

选项valign=t不会像minipage 或 tabular 选项adjustbox那样检索内部顶部基线。[t]adjustbox 计算 考虑当前文本字体大小的高度:默认valign=t将高度设置为当前的高度\strutbox

这意味着,根据第一行的文本,它可能相对于数字过高或过低。您可以使用 Mico 的代码“修复”第一种情况,但对于第二种情况,没有简单的修复方法。

我认为adjustbox这种框不适合于此环境。它对于对齐没有固有基线的图片很有用,但对于文本框则没有用。

\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}

在此处输入图片描述

相关内容