使用 unicode-math 的非数学字体会删除 \widetilde 和 \widehat

使用 unicode-math 的非数学字体会删除 \widetilde 和 \widehat

我怀疑这可能是 中的一个错误unicode-math,但你永远不知道。看来,加载任何非数学字体都会破坏\widehat\widetilde。例如,考虑下面的 MWE,我加载 XITS Math 作为我的数学字体,但尝试一些其他字体\mathbfup。除了使用粗体直立数学外,这对我的数学绝对没有影响。但是,即使字体不会因我输入的数学而改变,和\widetilde也会\widehat变得正常\tilde\hat......或完全消失,具体取决于我加载的字体。

这是一个错误,还是我在某个地方做错了什么?

(正如 MWE 所建议的,我正在使用 LuaLaTeX 进行编译。)

% !TeX program=luatex

\documentclass{article}

\usepackage{unicode-math}

\setmathfont{XITS Math}

\begin{document}

$\widetilde X\widehat X$

\setmathfont[range=\mathbfup]{Minion Pro Bold}

$\widetilde X\widehat X$

\setmathfont[range=\mathbfup]{Linux Libertine O Bold}

$\widetilde X\widehat X$

\end{document}

在此处输入图片描述

编辑:使用 XeLaTeX 进行编译,结果却得到以下结果。这让我更加确信某处存在错误。

在此处输入图片描述

答案1

Ulrike Fischer 在回答\sqrt[x]{y} 与 unicode-math 不符在这种情况下也有效:

\documentclass{article}

\usepackage{unicode-math}

\setmathfont{XITS Math}
\setmathfont[range=\mathbfup]{Linux Libertine O Bold}
\setmathfont[range=\int]{XITS Math}

\begin{document}

$\widetilde X\widehat X\mathbf{X}$

\end{document}

请注意,您不应该更改文档内的数学字体。问题是unicode-math最后的加载数学字体。由于 Linux Libertine 不是数学字体,因此它没有一些必要的参数。

在此处输入图片描述

请注意,最后一个字形来自 Linux Libertine。

答案2

日志中警告的重音不存在

Missing character: There is no ̃ (U+0303) in font "MinionProBold:mode=base;scri
pt=latn;language=DFLT;"!

为什么\widetilde要重新定义为使用新\symnum_fam1 分配给bold minion 字体,我不清楚,但你可以再次将其定义回来:

% !TeX program=luatex

\documentclass{article}

\show\widetilde

\usepackage{unicode-math}


\setmathfont{XITS Math}

\begin{document}
\show\widetilde
\show\symoperators
$\widetilde X\widehat X$

\let\oldwidetilde\widetilde
\let\oldwidehat\widehat
\setmathfont[range=\mathbfup]{Minion Pro Bold}
\let\widetilde\oldwidetilde
\let\widehat\oldwidehat

$\widetilde X\widehat X$

\setmathfont[range=\mathbfup]{Linux Libertine O Bold}

$\widetilde X\widehat X$

\end{document}

我认为 unicode-math 并没有真正声称以这种方式支持非数学字体,因此这显然不是一个错误,但无论如何可能值得在 unicode-math 问题跟踪器上提出。

相关内容