部分原因是这个问题是否有“下标”命令?,我开始怀疑\underset
(来自amsmath
)和\underaccent
(来自accents
) 命令是否同样有效。以下代码和相关输出表明这是不是包装情况XITS Math
:
\documentclass{standalone}
\usepackage{amsmath,accents}
\usepackage[no-math]{fontspec}
\usepackage{unicode-math}
\setmathfont[version=cambria]{Cambria Math}
\setmathfont[version=lm]{Latin Modern Math}
\setmathfont[version=asana]{Asana Math}
\setmathfont[version=xits]{XITS Math}
\newcommand\undersetunderaccent{$\underset{x}{A} \ \underaccent{x}{A}$}
\begin{document}
\Huge
\noindent
\mathversion{lm}Latin Modern Math: \undersetunderaccent\\
\mathversion{cambria} Cambria Math: \undersetunderaccent\\
\mathversion{asana} Asana Math: \undersetunderaccent\\
\mathversion{xits} XITS Math: \undersetunderaccent
\end{document}
显然,当数学字体为“XITS Math”时,这两个命令的输出截然不同 [!]。XITS Math 包是否必须加载特殊选项才能抑制此行为,或者我应该计划向 XITS Math 字体的维护者和/或包的维护者发送错误报告unicode-math
?
附加物:(i)我可以使用 TeXLive 2011 和 MiKTeX 2.9(昨天均已更新)生成上述输出;操作系统是 Windows Vista;我系统上的所有数学字体都是最新的。(ii)“XITS Math”的问题不是如果我在 luatlatex 而不是 xelatex 下运行上述示例代码,就会出现这种情况。
答案1
这通常意味着 XeTeX 可以使用多种不同版本的字体。由于 XeTeX 将字体传递给 XDV 驱动程序(通常是 xdvipdfmx)的方式,有时当字体不止一个版本并且它们具有不同的字形 ID 时,引擎和驱动程序会加载不同版本的字体,您就会得到这样的效果。
您可以\XeTeXtracingfonts=1
在文档中使用它,并对其进行编译以xelatex --output-driver="xdvipdfmx -vv" file.tex
查看引擎和驱动程序加载了哪些字体。
更新:如果有人感兴趣的话,这个(长期存在的)问题现在或多或少已经修复了。修复后的 XeTeX 版本应该会随 TeXLive 2012 一起发布。