{\phantom{X}} 有时高于 X

{\phantom{X}} 有时高于 X

为什么{\vphantom{X}}^2( %8) 高于其他任何选项?具体来说,为什么它高于%5%6%7。如果我使用小写字符代替 X,则此行为正常。

\documentclass{minimal}
\begin{document}
  \fbox{$X$}%1
  \fbox{${X}$}%2
  \fbox{$\vphantom{X}$}%3
  \fbox{${\vphantom{X}}$}%4

  \fbox{$X^2$}%5
  \fbox{${X}^2$}%6
  \fbox{$\vphantom{X}^2$}%7
  \fbox{${\vphantom{X}}^2$}%8
\end{document}

在此处输入图片描述

答案1

为了同样的原因

\documentclass{article}
\begin{document}
\fbox{${\vphantom{X}}^{\rlap{\vrule height0pt depth0.1pt width 2cm}2}$}%
\fbox{${\kern0ptX}^2$}
\end{document}

生产

在此处输入图片描述

该规则只是为了表明高度相同。

实际上应该比较的是

\fbox{${\vphantom{X}}^{\rlap{\vrule height0pt depth0.1pt width 2cm}2}$}%
\fbox{$\hbox{$X$}^2$}

产生相同的输出。

当 TeX 必须向一个框添加上标时(并且括号中包含多个数学字符的子公式算作一个框),它不知道将上标附加到哪个字符,只知道框的高度。

\vphantom{X}数学模式下,TeX 会用 构建一个框\setbox0=\hbox{$X$},然后设置\wd0=0pt并执行\box0。除了设置宽度外,它与执行 相同\hbox{$X$}

将上标字段附加到单个数学字符是不同的,因为现在 TeX 对该对象有了更多的了解。

让我们研究一个更简单的案例

\documentclass{article}
\begin{document}

\showoutput

$\vphantom{X}^2$

${\vphantom{X}}^2$

\end{document}

日志文件的相关内容如下

....\mathon
....\hbox(6.83331+0.0)x0.0
....\hbox(4.51111+0.0)x4.48613, shifted -3.62892
.....\OT1/cmr/m/n/7 2
....\mathoff

....\mathon
....\hbox(6.83331+0.0)x0.0
.....\hbox(6.83331+0.0)x0.0
....\hbox(4.51111+0.0)x4.48613, shifted -4.36111
.....\OT1/cmr/m/n/7 2
....\mathoff

如果我们\showlists在两个结束$字符前添加,我们得到

### math mode entered at line 6
\mathchoice
D\mathord
D.\hbox(6.83331+0.0)x0.0
T\mathord
T.\hbox(6.83331+0.0)x0.0
S\mathord
S.\hbox(4.78334+0.0)x0.0
s\mathord
s.\hbox(3.41667+0.0)x0.0
\mathord
^\fam0 2

对于第一个公式

### math mode entered at line 8
\mathord
.\mathchoice
.D\mathord
.D.\hbox(6.83331+0.0)x0.0
.T\mathord
.T.\hbox(6.83331+0.0)x0.0
.S\mathord
.S.\hbox(4.78334+0.0)x0.0
.s\mathord
.s.\hbox(3.41667+0.0)x0.0
^\fam0 2

对于第二个公式。两者的区别很微妙:在第一种情况下,上标附加到空\mathord原子上,在第二种情况下,上标附加到整个盒子上。

答案2

这只是用我自己的话来总结 egreg 的详细分析。

其效果是两种事物的结合。

首先,TeX 可以将上标应用于字符或框。字符:它知道得更多,可以将上标放在更好的位置。框:它只知道该框的尺寸“(括号中包含多个数学字符的子公式算作一个框)”。这解释了%5%6%8

\documentclass{minimal}
\begin{document}
  \fbox{$X^2$}%
  \fbox{${X}^2$}%
  \fbox{${XX}^2$}
\end{document}

在此处输入图片描述

其次,在 后面直接写上标,\vphantom某种程度上不适用于\vphantom。这解释了%7

\documentclass{minimal}
\begin{document}
  \fbox{$\vphantom{\rule{1pt}{30pt}}^2$}
  \fbox{$\vphantom{\rule{1pt}{30pt}}{}^2$}
  \fbox{${\vphantom{\rule{1pt}{30pt}}}^2$}
\end{document}

在此处输入图片描述

相关内容