我刚刚使用较新版本的 编译了一份现有文档unicode-math
,发现很多行/分页符都不同。原因似乎是数学模式中下标/上标的大小在unicode-math
0.8e 和 0.8g 版本之间发生了变化。
例如,使用最小文档
\documentclass[12pt]{article}
\usepackage{unicode-math}
\begin{document}
\begin{equation}
x^Ax^Bx^Cx^Dx^Ex^Fx^Gx^Hx^Ix^Jx^Kx^Lx^Mx^Nx^Ox^Px^Qx^Rx^Sx^Tx^Ux^Vx^Wx^Xx^Yx^Z
\end{equation}
\end{document}
unicode-math
0.8e 得出
而unicode-math
0.8g 则
我的问题是,这是有意还是意料之中?在发行说明unicode-math
0.8g, 我懂了
- 更好地使用 LuaTeX 中的脚本样式大小(我认为是一种回归)。
事实上,据我所知,似乎只有 LuaTeX 受到了影响?
答案1
编辑以提供更多详细信息
我设法找到了 v0.8g 中所做的相关更改。具体来说,引入了以下代码um-code-main.dtx
:
\cs_new:Nn \@@_declare_math_sizes:
{
\dim_compare:nF { \fontdimen 10 \g_@@_trial_font == 0pt }
{
\DeclareMathSizes { \f@size } { \f@size }
{ \@@_fontdimen_to_scale:nN {10} \g_@@_trial_font }
{ \@@_fontdimen_to_scale:nN {11} \g_@@_trial_font }
}
}
我们看到unicode-math
包故意地覆盖 处的数学大小声明\normalsize
。这是因为 OpenType 数学字体包含附加参数ScriptPercentScaleDown
( \fontdimen10
) 和ScriptScriptPercentScaleDown
( \fontdimen11
)。对于 OpenType Latin Modern Math,这些分别是70
和50
。
因此,在文章中,第一级和第二级脚本的12pt
预期字体大小(根据新的)分别为和。请注意,LaTeX 内核旧版声明在文本中第一级和第二级脚本分别为和。因此,使用时,您会观察到第一级脚本略大。unicode-math
8.4pt
6pt
8pt
6pt
12pt
unicode-math
12pt
文章中,pdfLaTeX\usepackage{lmodern}
和 XeLaTeX/LuaLaTeX\usepackage{unicode-math}
与 OTF LM Math之间存在更多细微的差别。
在 pdfLaTeX 情况下,text-size、script-size 和 script-script-size 使用的设计大小分别LMMathItalic12
为LMMathItalic8
和LMMathItalic6
。
但是在 XeLaTeX/LuaLaTeX 的情况下\usepackage{unicode-math}
,text-size 使用OTF LM Math 10pt
放大到 的字体12pt
,script-size 使用OTF LM Math 7pt
放大到 的字体8.4pt
,script-script-size 使用OTF LM Math 5pt
放大到 的字体6pt
。
附录
第一级脚本的奇怪8.41483pt
是由于浮点运算顺序不正确造成的。
我有修复了舍入错误(不是为了遵守原始的数学大小声明,因为我认为我们应该使用 OpenType 参数)在@egreg 打开的问题中:
\documentclass[12pt]{article}
\usepackage{unicode-math}
\ExplSyntaxOn
\cs_set:Nn \__um_fontdimen_to_percent:nN
{
\fp_eval:n { \dim_to_decimal:n { 65536 \fontdimen #1 #2 } / 100 }
}
\ExplSyntaxOff
\begin{document}
\begin{equation}
x^Ax^Bx^Cx^Dx^Ex^Fx^Gx^Hx^Ix^Jx^Kx^Lx^Mx^Nx^Ox^Px^Qx^Rx^Sx^Tx^Ux^Vx^Wx^Xx^Yx^Z
\end{equation}
\end{document}
希望此项政策能尽快实施。这已写入源代码unicode-math
。因此不再有舍入错误,是的!