放置上标的微妙之处:解释 TeX 实际上在做什么

放置上标的微妙之处:解释 TeX 实际上在做什么

从...开始这个问题我尝试研究 TeX 在排版不同下标时实际上在做什么,即它如何决定将上标向上移动多少以使其成为上标。

此外,还涉及哪些与字体相关的特征/尺寸,其中哪一个尺寸可以“安全地”调整(即特定于上标),哪一个尺寸相反地在其他数学排版中共享?

答案1

最好逐步进行。

步骤 0-符号和定义

任何符号字体(即 TeX 语言中的字体系列 2)必须至少有 22 个参数,分为三种不同的“样式”,以便 TeX 排版公式。这些“样式”大致可以分为“text”表示“显示样式”,“text 样式”及其狭窄版本(参见 TeXBook),“script”表示“script 样式”(狭窄和标准)和“scriptscript”(狭窄和标准)。TeXBook 详细描述了如何确定使用哪种样式以及如何确定从主公式到上标/下标的正确样式切换。

无论如何,这些参数被称为fontdimenZZ,其中 Z 是数字(如前所述,范围从 1 到 22),并将识别我们必须使用哪个参数。

笔记:仅有的家庭2在这里使用,我们不关心家庭3除了一种情况,稍后将详细说明

现在采取严肃的措施:

步骤 1 - 确定特定角色转移u

这是根据以下因素确定的数量什么上标附加到。u设置为:

  • 0 如果我们将上标附加到单个字符,
  • 0 如果假定的“数学列表”(大致是一组数学符号)由一个普通符号组成,除了重音原子外没有下标或上标(该列表实际上从未制作过)
  • h-SUPfontdimen18当它被附加到另一种类型的数学列表(实际上是任何其他情况)时,其中:

    • h是为列表构建的框的高度
    • SUPfontdimen18fontdimen18上标必须设置的样式

这意味着a^2将有一个u= 0,而{(a}^2不会,因为数学列表包含多个字符。

第 2 步 - 确定基于风格的转变p

此参数直接取自当前样式排版,并且是:

  • fontdimen13如果公式以显示样式排版

  • fontdimen15如果公式设置为狭窄风格

  • fontdimen14如果公式以任何其他样式设置。

步骤 3 - 确定基于高度的偏移s

作为d上标框的深度,这很简单d+(1/4)|fontdimen5|

步骤 4 - 找到没有下标的高度k(无论如何都要计算)

如果没有下标,上标向上移动的量为k=max(u,p,s)。否则k将以相同方式计算但暂时不会使用。

步骤 5 - 用下标找到高度

这次需要绕道而行fontfamily3,其中我们取r=fontdimen8,代表默认规则厚度。

如果“暂定”上移字符与下标之间的距离为,≥4r则上移有效,我们已完成。否则,下标将向下移动以确保间距4r得到强制执行,然后计算继续进行到步骤 5a。

步骤 5a(不总是这样做,请参阅上一步)- 校正系数q

q=(4/5)|fontdimen5|-k+d。如果大于 0,则k=k+q下标将向上移动相同数量q。所有内容均已排版。


参数之间的互连以及其他公式排版

这里我将简单详细说明这些参数如何与其他公式排版计算交织在一起,以便能够仅使用和调整所需的参数。请注意,这完全忽略了家族 3,因为该参数使用非常广泛,所以不能为此目的而触及该家族 3

  • fontdimen13、、、和仅在这些计算中专门使用fontdimen14,实际上是上标参数。fontdimen15fontdimen18

  • fontdimen5表示“x 高度”,因此被广泛使用:

    1. (1/4) |(fontdimen 5)|还参与确定部首规则中部首的高度(实际上参与确定被开方数和规则之间允许的最小间隙),当然它还确定部首符号的总高度(用大写 H 来消除与正常高度的歧义,即“H”考虑了深度)。
    2. 在重音原子中,它表示重音原子的最大高度,用于在重音原子后放置字距。

相关内容