XeLaTeX 中 XITS Math 对 \underset 和 \underaccent 命令的奇怪行为

XeLaTeX 中 XITS Math 对 \underset 和 \underaccent 命令的奇怪行为

部分原因是这个问题是否有“下标”命令?,我开始怀疑\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 一起发布。

相关内容