我怀疑这可能是 中的一个错误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 问题跟踪器上提出。