昂首阔步:\strut、\mathstrut 和 \vphantom 之间有什么区别?

昂首阔步:\strut、\mathstrut 和 \vphantom 之间有什么区别?

\strut\mathstrut之间有什么区别\vphantom?我什么时候会更喜欢其中一个,为什么?

答案1

article在默认文档类( 、bookreport)中,每个定义如下:

\strut

\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}

定义\strutbox

\setbox\strutbox\hbox{%
  \vrule\@height.7\baselineskip
        \@depth.3\baselineskip
        \@width\z@}%

\mathstrut

\def\mathstrut{\vphantom(}

使用\mathstrut相当于使用\vphantom(,其中\strut设置零宽度规则 ( \@width\z@),深度.3\baselineskip( \@depth.3\baselineskip) 和高度.7\baselineskip( \@height.7\baselineskip)。请注意,后者依赖于字体,因为它使用\baselineskip。也就是说,它是使用 修改的字体更改选择\fontsize{..}{..}\selectfont,包括使用字体开关,如\small\large等。

我会\strut在文本或数学中使用,\vphantom如果还有其他内容我想要一个特定的高度而不需要水平位移,则使用。例如,当拆分两行具有不同高度但仍想使用可扩展分隔符的数学时,\left.\right特定\mathstrut((引用巴巴拉比顿),“\mathstrut在数学上往往比更好\strut。哪一个更好取决于当地的情况。”

正在加载amsmath重新定义了这些盒子,尽管它们的解释保持不变。

答案2

\strut和命令\mathstrut仅定义一个宽度为零、高度和深度为方便的固定框。最后一个命令用于数学模式。

\vphantom命令允许您创建一个宽度为零、深度和高度与命令参数中的材料相同的框。该\vphantom命令非常适合缩放左右分隔符,如以下示例所示,该示例来自LaTeX 和朋友。该示例需要amsmath。其他命令不那么灵活。

\begin{align*}
f & = g\left( 3^{3^{3}} + \text{\textrm{\ldots}}\right.\\
  & \qquad \left.+ 3\vphantom{3^{3^{3}}} \right)\,.
\end{align*}

相关内容