下列的这个问题,并通过聊天获得一些支持,我决定深入研究下标的内部结构(并且可能至少使用根号继续该系列)。
所以问题是:TeX 如何决定将下标向下移动多少?此外,还使用了哪些与字体相关的特性,以及它们如何影响其他公式?
答案1
我将继续执行问题中描述的步骤上文提到的。
我将在这里报告与其他答案相同的步骤,以使这个答案也自成一体。
步骤 0-符号和定义
任何符号字体(即 TeX 语言中的字体系列 2)必须至少有 22 个参数,分为三种不同的“样式”,以便 TeX 排版公式。这些“样式”大致可以分为“text”表示“显示样式”,“text 样式”及其狭窄版本(参见 TeXBook),“script”表示“script 样式”(狭窄和标准)和“scriptscript”(狭窄和标准)。TeXBook 详细描述了如何确定使用哪种样式以及如何确定从主公式到上标/下标的正确样式切换。
无论如何,这些参数被称为fontdimenZ
Z,其中 Z 是数字(如前所述,范围从 1 到 22),并将识别我们必须使用哪个参数。
笔记:仅有的家庭2在这里使用,我们不关心家庭3除了一种情况,稍后将详细说明
现在采取严肃的措施:
步骤 1 - 确定特定角色转移v
这是根据以下因素确定的数量什么上标附加到。v
设置为:
- 0 如果我们将下标附加到单个字符,
- 0 如果假定的“数学列表”(大致是一组数学符号)由一个普通符号组成,除了重音原子外没有下标或上标(该列表实际上从未制作过)
d+SUBfontdimen19
当它被附加到另一种类型的数学列表(实际上是任何其他情况)时,其中:d
是为列表构建的框的深度SUBfontdimen19
是fontdimen19
必须设置下标的样式
这意味着a_2
将有 a v
= 0,而{(a}_2
不会,因为数学列表包含多个字符。
第 2 步 - 确定基于高度的偏移s
调用h
下标的高度,s=h-(4/5)|fontdimen5|
步骤 3 - 确定无上标的移位p
如果没有上标,则降档为p=max(v,fontdimen16,s)
。即使下一步,也会计算此因子
步骤 4 - 下标/上标组合因子k
如果存在上标,则为下标计算一个新的暂定移位:k=max(p,fontdimen17)
,然后继续进行计算
步骤 4a - 下标/上标组合微调
这次需要绕道而行fontfamily3,其中我们取r=fontdimen8
,代表默认规则厚度。
如果“暂定”降档字符与上标之间的距离为,≥4r
则降档有效,我们已完成。否则,将调整降档以获得间距4r
,然后计算继续进行步骤 4b。
步骤 4b - 校正系数q
q=(4/5)|fontdimen5|-k+d
。如果大于 0,则|k|=|k|+q
上标将向上移动相同的量q
。然后所有内容都会排版。
参数之间的互连以及其他公式排版
这里我将简单详细说明这些参数如何与其他公式排版计算交织在一起,以便能够仅使用和调整所需的参数。请注意,这完全忽略了家族 3,因为该参数使用非常广泛,所以不能为此目的而触及该家族 3
fontdimen16
,,仅在这些计算中专门使用fontdimen17
,fontdimen19
实际上是下标参数。fontdimen5
表示“x 高度”,因此被广泛使用:(1/4) |(fontdimen 5)|
还参与确定部首规则的高度(实际上参与确定被开方数和规则之间允许的最小间隙),当然它还确定部首符号的总高度(用大写 H 来消除与正常高度的歧义,即“H”考虑了深度)。- 在重音原子中,它表示重音原子的最大高度,用于在重音原子后放置字距。