\strut
和\mathstrut
之间有什么区别\vphantom
?我什么时候会更喜欢其中一个,为什么?
答案1
article
在默认文档类( 、book
和report
)中,每个定义如下:
\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*}