为什么空下标会应用负空间?

为什么空下标会应用负空间?

在重构文档时,我向其中一个宏添加了一个附加参数,该参数被放置在其下标中。这个决定要求我为其实例之一提供一个空参数,这实际上创建了一个由空{}组组成的下标。

检查diff-pdf显示存在间距差异,但我已经做好了准备——毕竟,这个空组必须放在某个地方,对吧?我当时不是准备好的是间距变成更小。以下是 MWE,显示:

\documentclass[36pt]{memoir}
\begin{document}

\[
M()
\]

\[
M_{}()
\]

\end{document}

在此处输入图片描述

答案1

如果我尝试更简单的例子

\documentclass[extrafontsizes,36pt]{memoir}
\begin{document}

$M()$\par
$M_{}()$

\showoutput

\end{document}

我得到以下信息(仅相关部分)

....\mathon
....\OML/lmm/m/it/36 M
....\kern3.76044
....\OT1/lmr/m/n/36 (
....\OT1/lmr/m/n/36 )
....\mathoff

[...]

....\mathon
....\OML/lmm/m/it/36 M
....\hbox(0.0+0.0)x0.5, shifted 5.39998
....\OT1/lmr/m/n/36 (
....\OT1/lmr/m/n/36 )
....\mathoff

差异是由于在第一种情况下,TeX 在 M 和括号之间插入斜体校正,而如果有下标则不会这样做。

在第二种情况下,仅\scriptspace插入(当原子具有下标或上标字段时,TeX 总是会添加这个空格),默认为 0.5pt,并且不会随着字体大小的改变而改变。

在 10pt 尺寸下,我们得到

....\mathon
....\OML/cmm/m/it/10 M
....\kern1.09026
....\OT1/cmr/m/n/10 (
....\OT1/cmr/m/n/10 )
....\mathoff

[...]

....\mathon
....\OML/cmm/m/it/10 M
....\hbox(0.0+0.0)x0.5, shifted 1.49998
....\OT1/cmr/m/n/10 (
....\OT1/cmr/m/n/10 )
....\mathoff

空间仍然较大,但只有 0.59026pt,除非我们放大输出,否则几乎无法察觉。

在此处输入图片描述

故事的寓意是:除非其他字段非空,否则切勿添加空的下标/上标。

相关内容