我一直在研究在数学模式下渲染公式所使用的算法。我希望能够复制其中的一些功能,因此我开始寻找字体所需的不同参数。这些额外的数学字体参数在第 477 页进行了讨论书籍。
例如运行tftopl cmbsy10.tfm
,我能够提取此特定字体的额外参数:
(FONTDIMEN
(SLANT R 0.25)
(SPACE R 0.0)
(STRETCH R 0.0)
(SHRINK R 0.0)
(XHEIGHT R 0.430555)
(QUAD R 1.000003)
(EXTRASPACE R 0.0)
(NUM1 R 0.676508)
(NUM2 R 0.393732)
(NUM3 R 0.443731)
(DENOM1 R 0.685951)
(DENOM2 R 0.344841)
(SUP1 R 0.412892)
(SUP2 R 0.362892)
(SUP3 R 0.288889)
(SUB1 R 0.15)
(SUB2 R 0.247217)
(SUPDROP R 0.386108)
(SUBDROP R 0.05)
(DELIM1 R 2.389999)
(DELIM2 R 1.01)
(AXISHEIGHT R 0.25)
)
但是,我在任何 STIX 字体 tfms 或任何 AMS 字体中都找不到这些参数。每个人都使用这些相同的参数吗(可能按设计尺寸缩放)?某些字体是否可能将这些参数存储在其他地方,或者可能在 LaTeX 中修改它们?我无法找到这些问题的任何答案。
答案1
TeXbook 附录 G 中描述的参数取自数学系列 2 和 3 中的字体。如果 (子) 公式以显示或文本样式排版,则值取自\textfont2
和\textfont3
;脚本和 scriptscript 样式使用\scriptfont2
, \scriptfont3,
\scriptscriptfont2 and
\scriptscriptfont3`。
将使用公式末尾的当前字体。
stix
您可以通过以下输入查看使用了哪些内容
\documentclass{article}
\usepackage{stix}
\begin{document}
$a$ \expandafter\show\the\textfont2 \expandafter\show\the\textfont3
\stop
它将显示在终端上(按两次回车键)
> \LS1/stixscr/m/n/10=select font stix-mathscr.
<inserted text> \LS1/stixscr/m/n/10
l.6 $a$ \expandafter\show\the\textfont2
\expandafter\show\the\textfont3
?
> \LS2/stixex/m/n/10=select font stix-mathex.
<inserted text> \LS2/stixex/m/n/10
l.6 ...e\textfont2 \expandafter\show\the\textfont3
?
我们需要排版一个公式,因为在 LaTeX 中数学字体系列只是在最后一刻设置的,以便在同一个文档中允许不同的大小。
如果我们这样做tftopl stix-mathscr
,我们得到
(FAMILY STIXMATHSCRIPT)
(FACE F MRR)
(CODINGSCHEME STIXMATHSCR)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 7425717650)
(SEVENBITSAFEFLAG TRUE)
(FONTDIMEN
(SLANT R 0.0)
(SPACE R 0.0)
(STRETCH R 0.0)
(SHRINK R 0.0)
(XHEIGHT R 0.45)
(QUAD R 1.0)
(EXTRASPACE R 0.0)
(PARAMETER D 8 R 0.58)
(PARAMETER D 9 R 0.48)
(PARAMETER D 10 R 0.48)
(PARAMETER D 11 R 0.7)
(PARAMETER D 12 R 0.48)
(PARAMETER D 13 R 0.4)
(PARAMETER D 14 R 0.35)
(PARAMETER D 15 R 0.275)
(PARAMETER D 16 R 0.25)
(PARAMETER D 17 R 0.35)
(PARAMETER D 18 R 0.375)
(PARAMETER D 19 R 0.05)
(PARAMETER D 20 R 2.4)
(PARAMETER D 21 R 1.0)
(PARAMETER D 22 R 0.25)
)
而tftopl stix-mathex
给出
(FAMILY STIXMATHEXTENSIONS)
(FACE F MRR)
(CODINGSCHEME STIXMATHEX)
(DESIGNSIZE R 10.0)
(COMMENT DESIGNSIZE IS IN POINTS)
(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)
(CHECKSUM O 7636115355)
(SEVENBITSAFEFLAG TRUE)
(FONTDIMEN
(SLANT R 0.0)
(SPACE R 0.0)
(STRETCH R 0.0)
(SHRINK R 0.0)
(XHEIGHT R 0.45)
(QUAD R 1.0)
(EXTRASPACE R 0.0)
(PARAMETER D 8 R 0.066)
(PARAMETER D 9 R 0.15)
(PARAMETER D 10 R 0.15)
(PARAMETER D 11 R 0.3)
(PARAMETER D 12 R 0.6)
(PARAMETER D 13 R 0.1)
)
这些字体是可扩展的,因此对于脚本和脚本样式,您只需缩放值即可。
答案2
我必须发布答案,因为 600 个字符不够。正如 DC 已经指出的那样(参见评论),您可能误解了数学排版的工作原理:我将尝试为您提供简短(且过于简单!)的解释。
没有“这字体是排版公式的常用字体之一:实际上,每个公式可以同时使用几种字体,而且通常都会使用几种字体。按照惯例(或多或少),每个公式至少有四种字体可用,每种字体有三种不同的大小:一种用于“主级”符号,一种用于下标,第三种用于第一级以下的所有下标级。在TeXbook中,这四种字体被称为“系列”,编号从 0 到 3:在 plain TeX 的设置中,以及在 LaTeX 的默认设置中,系列 0 对应于cmr
,系列 1 对应于cmmi
,系列 2 对应于cmsy
,系列 3 对应于cmex
。在使用 NFSS(新字体选择方案)的 LaTeX 中,术语有所不同且更加抽象,但概念完全相同:
0 号家庭对应于
operators
数学组,除其他内容外,还提供十位数字的字符以及运算符名称,如“log”,“sin”,“lim”等;系列 1 对应于
letters
数学组,用于诸如“X”,“是”,“是“…;家庭 2 对应于
symbols
数学组,从中取用“∩”、“∪”或“∈”等字符;系列 3 对应于
largesymbols
数学组,其中包括“∑”之类的字符(两种大小)和各种不断增长的分隔符。
不过,下面我们将坚持使用TeXbook。而这三种尺寸则由三个前缀\textfont
、\scripfont
和来区分\scriptscriptfont
;例如,\textfont1
是主尺寸中变量(字母)使用的字体,\scriptfont0
是第一级下标中出现的数字和运算符名称使用的字体,\scriptscriptfont2
是第二级或更高级下标中出现的符号(如“∩”)使用的字体。让我们举一个典型的例子:给定源代码
$x_{A_{0}\cup B_{i}}$
这 ”X” 将会在\textfont1
, “A”和“乙” 将在 中\scriptfont1
,“0” 将在 中\scripscriptfont0
,“∩” 将在 中\scriptfont2
,而“我” 将位于 中\scriptscriptfont1
。再举一个例子,(内联)公式
$\lim_{x\to0} \frac{\sin x}{x}$
将被排版如下(回想一下,分数的分子和分母是在 中设置的\scriptstyle
):
“lim”这个词在
\textfont0
;变量“的所有出现X” 在
\scriptfont1
;“0” 和单词 “sin” 在
\scriptfont0
;箭头(
\to
)在 内\scriptfont2
。
如果公式以 10 点排版,则正常设置是\textfont0
= cmr10
、\scriptfont0
= cmr7
、\scripscriptfont0
= cmr5
、\textfont1
=cmmi10
等等(例外:第 3 系列只能以 10 点存在,即 ,cmex10
但有些包可以访问其他大小)。
公式中可以使用其他字体:例如,您可能想要使用书法字母。这可以通过定义其他字体系列来实现。单个公式中最多可以使用 16 个不同的字体系列(每个系列有三种大小)。不同的公式可以有不同的 48 个字体组。
现在您将了解到,控制下标位置、数学轴高度等的参数不能绑定到每个字体,而是整个公式的属性:事实上,在公式中,$\frac{1}{x^{\bullet}}$
例如,分子、分母和后者的上标来自三种不同的字体(通常是cmr7
、cmmi7
和cmsy5
)。TeX 引擎假定某些参数必须作为\fontdimen
与系列 2 关联的字体的参数给出,其他参数必须作为\fontdimen
与系列 3 关联的字体的参数给出(值 2 和 3 是“硬连线”到 TeX 本身中的);正在排版的(子)公式的当前样式决定了是否使用它们的\textfont
、\scriptfont
或\scripscriptfont
变体。您可以在第 447 页的表格中找到有关哪些参数取自哪种字体的详细信息TeXbook您在问题中提到:所有以“σ”表示的参数都在与系列 2 相关联的字体中寻找,而以“ξ”表示的参数则假定在与系列 3 相关联的字体中找到。
如需了解更多信息,请参阅TeXbook、第 17 章和附录 G。