默认情况下,^ 和 _ 分别将上标和下标的文本框升高和降低多少?

默认情况下,^ 和 _ 分别将上标和下标的文本框升高和降低多少?

我正在尝试定义一组用于上标和下标的命令,但无法使用字符^_。我能够使用来定义正确的字体大小\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont,但无法计算出文本框升高和降低的默认值。

TeX/LaTeX 如何定义这些值?

答案1

放置下标和上标的算法在 TeX 引擎中是“硬连线”的,并不像您想象的那么简单。首先,对于“简单字符”的下标和上标,如a\alpha或,有一种特殊处理\mathcal{A}。在这种情况下,您还需要一些水平的由字符的斜体校正决定的下标位移:例如,对于 ,下标应该向左移动 F,但对于 ,则不应移动 A

对于“简单字符”,升高和降低的默认值如下。上标(depth of superscript) + (1/4 of the x-height)(暂时!)由和 的最大值增加,其中 x 高度是参数编号 5,是参数编号 k(除非整个公式本身位于下标或上标中)。现在它取决于当前样式(不幸的是,TeX 用户只能通过或 访问):在 k=13 中使用,在“狭窄样式”中使用 k=15,否则使用 k=14。σk\fontdimenσk\fontdimen\textfont2\mathpalette\mathchoice\displaystyle

多少下标降低取决于上标的存在。如果有上标,则下标(暂时!)降低 ,否则降低最大值和 。在下标和上标组合的情况下,需要进行额外的调整(会产生一些不良副作用),例如σ17(height of subscript) - (80% of the x-height)σ16我的这个答案

如果下标或上标是不是附加到“简单字符”但附加到其他核心时,将使用额外的最小移位值:上标至少提高,下标至少降低,其中和 将从中取值,除非整个公式本身位于下标或上标中(在这种情况下应使用)。(height of nucleus) - σ18(depth of nucleus) + σ19σ18σ19\scriptfont2\scriptscriptfont2

我不确定您是否真的想实现这一点...如果想,请查看 TeXbook 附录 G 中的规则 18 了解详情。

答案2

TUGboat 有一篇论文,标题为理解数学排版的美学包含排版算法的所有细节以及所有参数的可视化表示。第二篇论文附录 G 说明还有很多有用的信息。

答案3

TeX 并不关心使用哪些特定字符来输入上标或下标;它只查看 catcode。因此,如果您出于某种原因无法使用^_请为它们的 catcode 分配另一个字符...

\begingroup
\catcode`\.=7 % superscript
\gdef\superscript#1#2{{#1}.{#2}}
\catcode`\.=8 % subscript
\gdef\subscript#1#2{{#1}.{#2}}
\endgroup

$\superscript{x}{2}$ $\subscript{x}{2}$
\bye

也许不幸的是,没有原始控制序列可以复制 catcode 3、4、7 和 8(&、、和在纯 TeX 中)的字符的效果,但那是 1982 年的做法,现在我们只能用它了。$^_

相关内容