考虑这个最小的例子:
\documentclass{report}
\delimitershortfall=0pt
\delimiterfactor=1100
\begin{document}
$$\left(\left(\left(\left(x\right)\right)\right)\right)$$
\end{document}
使用 pdflatex 渲染后的结果为:
由于\delimitershortfall
为零且\delimiterfactor
从 1000 开始(其中 1000 表示不改变计算出的分隔符大小),我会假设分隔符(在本例中为括号)在每个嵌套级别上都会以相同的倍数变大。我在上面添加了红线以表明情况并非如此。括号增长的倍数不是恒定的。深入研究 TeXBook 附录 G 规则 19:
这在一定程度上证实了我的假设:在该示例中,由于分隔符垂直居中于轴,且轴位于高度和深度相交的点,因此高度和深度应均匀分布 1100/1000 的增加,根据第 150 页:
如果你仔细观察本章中的数学排版示例,你会发现大括号和方括号相对于一条略高于基线的不可见水平线是对称的;当分隔符变大时,其高度和深度都会增加相同的量。这条水平线称为公式的轴;
好吧,除了上面的“至少”几个字外,假设得到了证实。TeXBook 说分隔符“至少”增长 max( delta / 1000 * \delimiterfactor
, delta -\delimitershortfall
)。在我看来,这使得规则 19 不明确,因为它没有说明至少有多大,并且示例显示它既不是零,也不是嵌套级别的常数,至少用于 pdfTeX 实现。
所以我的问题是:哪里(在 TeXBook 或其他地方)指定了“至少”,是否有办法更改任何 TeX 原始配置/实现来控制该数量,理想情况下将其设置为零?
(似乎有一些因素会改变至少的数量。例如指定文档类使用 12pt或者包括amsmath
包装改变的数量至少。)
编辑:感谢@david-carlisle 和@egreg 详细指出这一点,以及根据您的理解,TeX 通过 cm 字体请求某个字符(字体大小是多少?)并且不会进一步将该字符缩放到用户所需的大小。
澄清一下:问题标题中的额外空间量是指由 max(..) 项计算的用户所需分隔符大小与 TeX 将渲染的分隔符形状的高度之间的额外高度/空间,在规则 19 中用“至少”一词来描述。我真的希望这是清楚的。所以是的,根据你的回答 @egreg,这个额外的空间是存在的,并且来自 TeX 在这种情况下不会根据需要缩放分隔符的事实。然而,“用高度为... 的分隔符替换当前边界项”这一措辞并不禁止任何缩放。事实上,我永远不会通过阅读该措辞来假设你描述的实现。不过,使用具有不同纵横比的不同分隔符字符是非常聪明的,这样更高的分隔符的宽度就不会变得那么大。
\left
然而,在我看来, and实现的黄金标准\right
是选择字体提供的下一个最大字符,然后将其缩小到与 max(...) 值完全匹配。当前实现导致嵌套分隔符不均匀增长,在我看来这看起来不太好。这是另一个 12pt 的示例,情况更糟:
比较两幅图像,可以发现更糟糕的是,对于不同基本字体大小的相同嵌套级别,“至少”的数量是不同的。
答案1
看一下\delcode
闭括号:
\delcode`\)="029301
当\right)
使用 时,TeX 会查看 的前半部分\delcode
。如果字符(系列"0
和位置"29
)符合 和 所指定的内容\delimitershortfall
,\delimiterfactor
则 TeX 使用该字符。
规范如下。TeX 确定高度H和深度d封装的材料;然后考虑δ作为之间的最大值h−a和d + a(在哪里A是数学轴的高度)。分隔符的高度加上深度必须至少为
最大限度(⌊δ/500⌋ F,2δ − 升)
在哪里F\delimiterfactor
是和的值升是 的值\delimitershortfall
。所选分隔符将向上或向下移动,以使其几何中心位于公式轴上。
否则,它会尝试后半部分(family "3
,slot "01
);如果合适,则使用该字符。否则,TeX 会查看此字符的度量标准是否有规范NEXTLARGER
,并且确实我们发现(来自tftopl cmex10
)
(CHARACTER O 1
(CHARWD R 0.458336)
(CHARHT R 0.039999)
(CHARDP R 1.160013)
(NEXTLARGER O 21)
)
(字符以八进制编号)。是的,有;因此查找的是 slot 中'21
具有
(CHARACTER O 21
(CHARWD R 0.597224)
(CHARHT R 0.039999)
(CHARDP R 1.760019)
(NEXTLARGER O 23)
)
如果需要的话,TeX 可以做得更进一步
(CHARACTER O 23
(CHARWD R 0.7361145)
(CHARHT R 0.039999)
(CHARDP R 2.360025)
(NEXTLARGER O 41)
)
(CHARACTER O 41
(CHARWD R 0.79167)
(CHARHT R 0.039999)
(CHARDP R 2.9600315)
(NEXTLARGER O 61)
)
现在发生了一些不同的事情,因为插槽中的字符'61
有
(CHARACTER O 61
(CHARWD R 0.875003)
(CHARHT R 0.039999)
(CHARDP R 1.760019)
(VARCHAR
(TOP O 61)
(BOT O 101)
(REP O 103)
)
)
在此阶段,如果之前的尝试没有给出合适的结果,则使用指定的顶部、底部和中继器构建适当大小的括号。
因此,没有“额外的垂直空间”需要描述,因为根本没有。而且也没有缩放。中一系列括号的大小呈线性增加;为什么中括号的高度与中第一个括号cmex10
的高度之比与线性增加不一致,应该问 Knuth。cmr10
cmex10