当写入 时\[\sum\]
,使用的求和符号比写入 时更大\(\sum\)
。命令如何\sum
找出要使用的大小?
扩展为什么\sum
?我猜它只是另一系列较长命令的简写,不是吗?
答案1
是\sum
大运算符,在数学字体中实现两种大小。数学模式下排版的每个字符或控制序列都有其数学代码,其中包括数学类(Ord 或 Op 或 Bin 或 Rel...)、数学字体系列编号和字体插槽。字符由\mathcode
(或\Umathcode
在 Unicode 引擎中)声明,控制序列由\mathchardef
(或\Umathchardef
在 Unicode 引擎中)声明。在传统 TeX 中\sum
由 声明,在 Unicode 数学中由 声明,或者在 OpTeX 中由 定义,并由 声明。\mathcode
\Umathchardef
\def\sum{∑}
∑
\Umathcode
这意味着它\sum
不是一个复杂的宏,它只是一个数字的等价物,这个数字在打印时被解释为数学码。这个数学码的关键部分是它的类是 Op(大运算符)的信息。当 TeX 打印这样的数学字符时,\textstyle
它会从给定插槽的字体中请求直接字符,但是当打印它时,\displaystyle
TeX 会请求相同的字体和插槽,但此外,它会从字体中请求更大的变体。Unicode 字体允许在单个插槽中拥有更多的字形,因此可以满足这个特殊要求。经典的 TeX 字体在文件中有一个分配tfm
给给定插槽的指针,该指针指向准备更大字形的另一个插槽。
例如,普通 TeX(即传统 TeX)声明\sum
如下:
\mathchardef\sum="1350
第一个数字1
表示它是 Op(大运算符)字符。应使用第三个字体系列(第二个数字)并0x50
使用 slot。Plain TeX 将cmex10
字体注册为第三个字体系列:
\font\tenex=cmex10 % math extension
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
当你跑步时
tftopl cmex10 > cmex10.pl
然后,您可以查看文件cmex10.tfm
中可读形式的度量信息cmex10.pl
。您可以看到,字符O 120
(即插槽的八进制数0x50
)包含此信息:
(CHARACTER O 120
(CHARWD R 1.055559)
(CHARDP R 1.000013)
(NEXTLARGER O 130)
)
是NEXTLAGRER O 130
上面提到的指针。它表示相同类型的较大字形位于八进制 130 号槽,即槽0x58
。您可以运行
tex testfont
Name of the font to test = cmex10
*\table\end
cmex10
文件中有字体表testfont.dvi
。您可以看到0x50
插槽包含较小的求和符号,并0x58
包含其较大的变体。
当使用 Unicode 数学字体时,较大的变体没有特殊的插槽号,但所有替代字形都位于0x2211
由 GSUB 表实现的单个插槽(Unicode 求和符号)中。