将 \parbox 或 \minipage 垂直居中

将 \parbox 或 \minipage 垂直居中

我不确定我理解得是否正确,但是使用pos=caparbox或 aminipage时,中心线的基线应该与外部文本的基线垂直对齐吗?但是,实际发生的情况是parbox或内的文本minipage低于外部文本。

\documentclass{article}
\begin{document}

llll\parbox[c]{2em}{llll}llll

llll\begin{minipage}[c]{2em}llll\end{minipage}llll

\end{document}

https://www.latex4technics.com/?note=zzvouv

答案1

选项(和c的默认值)不相对于基线居中,而是相对于\parboxminipage公式轴,这是分数线所在的位置,略高于基线。

\parbox当有多条线时,这种情况会被掩盖,但当只有一条线时,这种情况就会变得明显。

我们来做一个实验。

\documentclass{article}

\newsavebox{\testbox}

\begin{document}

$ $ % to activate math

\sbox{\testbox}{\parbox{2em}{ll}}

Height: \the\ht\testbox

Depth: \the\dp\testbox

Formula axis: \the\fontdimen22\textfont2

\end{document}

这将产生

在此处输入图片描述

事实上,5.97223pt 减 2.5pt 等于 3.47223pt,而 0.97221pt 加 2.5pt 等于 3.47221。小数点后第五位数字的差异可以忽略不计,这是 TeX 为了实现机器独立性而进行的四舍五入的结果。

您可以通过将结果框降低公式轴的高度来实现相对于基线的居中:

\documentclass{article}

\makeatletter
\newcommand{\cparbox}[2]{%
  \check@mathfonts
  \raisebox{-\fontdimen22\textfont2}{\parbox{#1}{#2}}%
}
\makeatother

\begin{document}

ll\parbox{2em}{ll}ll

ll\cparbox{2em}{ll}ll

\end{document}

在此处输入图片描述

相关内容