為什麼 adjustmentbox 需要使用 enumitem 調整 raise=-0.3ex ?

為什麼 adjustmentbox 需要使用 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 內材質的第一行沒有高於大寫字母的材質。由於該材料被封裝在 a 中,因此和minipage等符號所需的未使用的垂直空白(),因此刪除了。相比之下,枚舉符號是不是包含在 a 中minipage,因此在不刪除隱式 的情況下選擇其基線\strut。如果\strut在 的第一行插入 a \fbox,則消除了大部分垂直調整的需要。

  • 完全對齊“1”的基線。之前的粒子\fbox和 內的材質,還需要對fbox 周圍的規則的厚度(由參數 給出;預設值:,通常為)minipage進行調整(雙關語) 。而且,由於 的值通常不為零,我建議使用以下程式碼\fboxrule\arrayrulewidth0.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不會像小型頁或表格選項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}

在此輸入影像描述

相關內容