当我使用 Unicode 数学字体时,textstyle 中的分数会偏离 XeTeX 中的数学轴。但在 LuaTeX 中,它与数学轴完美对齐。以下 MWE 应该可以说明这一点。此外,在 displaystyle 中一切都很好。
\ifdefined\directlua
\input luaotfload.sty
\fi
$-{1\over 2}$%
\font\ms="Latin Modern Math:script=math;+ssty=0" at 7pt
\scriptfont0=\ms
$-{1\over 2}$
\bye
在这里您可以看到 XeTeX 和 LuaTeX 的输出:
我该如何解决这个问题?调整\fontdimen
参数就可以了吗?
这不仅发生在普通的 XeTeX 中,也发生在带有软件包的 LaTeX 中unicode-math
。不幸的是,我无法在这里显示并排比较,因为它unicode-math
会立即将数学字体更改为“Latin Modern Math”。
\documentclass{standalone}
\usepackage{unicode-math}
\begin{document}
$-\frac{1}{2}$
\end{document}
从 Herbert 的回复中可以看出,该问题也出现在其他情况下。这里我收集了一份报告类似问题的问题(不完整列表):
- \setbox 包含数学运算,会干扰 XeTeX 中的周围数学模式
- \scriptstyle 影响 \overline
- xelatex + unicode+math + vphantom 中的错误
- xelatex + unicode-math + xits + \vphantom 中有错误吗?
- xelatex + unicode-math + stackengine + \big = ↯
不幸的是,问题并没有完全解决,混乱的 fontdimens 仍然出现在一些地方。
答案1
这似乎在 XeTeX 的开发版本中得到了修复(看起来它与\setbox 包含数学运算,会干扰 XeTeX 中的周围数学模式):