使用 setmathfont 范围选择单个字形会修改其他字形

使用 setmathfont 范围选择单个字形会修改其他字形

如何在不影响任何其他字形的情况下更改仅用于一个字形的字体?

我最近从 pdfLaTeX 切换到 XeLaTeX、fontspec 和 unicode-math。

我使用 TeX Gyre Pagella 作为我的主要数学字体,但我不喜欢空集的字形,所以我想使用 Asana Math 的字形来表示这个符号。

我正在尝试按照其手册第 4.1 节的规定,使用 unicode-math 的范围功能来实现这一点:

\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\setmathfont{Asana-Math.otf}[range={\emptyset}]
\begin{document}
$\emptyset\mathbb N\BbbN$
\end{document}

这并没有给出我预期的结果:

第一个代码的结果

空集符号仍然来自 Pagella,\mathbb字母表已更改为 Asana 的字母表。

将范围更改为[range={\varnothing}]确实给出了正确的空集符号(我觉得很奇怪,但它有效!)但仍然有意想不到的后果:

第二个代码的结果

我尝试将范围更改为[range=up/{\varnothing}]表明我只想影响 upshape 字体,但这无法编译:

! Undefined control sequence.
\l__um_alphabet_tl ->\varnothing 

l.5 ...ont{Asana-Math.otf}[range=up/{\varnothing}]

注意:unicode-math 如果是 v0.8f 并且 fontspec 是 v2.6d,来自 TexLive 2017。

编辑先前接受的解决方案

解决方法[range={\int}]是使用分隔符导致不需要的空间:

\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\setmathfont{Asana-Math.otf}[range={\varnothing}]
\setmathfont{texgyrepagella-math.otf}[range={\int}]
\begin{document}
 $\big||a| - |b|\big|\leq|a-b|$
\end{document}

不需要的空间

空范围技巧那里有同样的效果。

答案1

范围选项有点问题,而且往往会发生超出预期的变化。因此请谨慎使用。对于您的情况,如果最后将字体重置为主字体(但我认为符号不太合适),则可以使用:

\documentclass{article}
\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}
\setmathfont{Asana-Math.otf}[range={\varnothing}]
\setmathfont{texgyrepagella-math.otf}[range={\int}]
\begin{document}
$\emptyset\mathbb N\BbbN$
\end{document}

在此处输入图片描述

不需要的空格是由于 unicode-math 中关于句点的 delcode 的一个错误造成的。在这种情况下,它只影响 xelatex,lualatex 没有问题。另请参阅https://github.com/wspr/unicode-math/issues/344一个解决方法(我不会称之为解决方案,因为必须找出数字)是:

\documentclass{article}

\usepackage{fontspec}
\usepackage{unicode-math}
\setmathfont{texgyrepagella-math.otf}

\setmathfont{Asana-Math.otf}[range={\varnothing}]
\setmathfont{texgyrepagella-math.otf}[range={\int}]

\Udelcodenum`.=1073741824
\begin{document} 
 $\big||a| - |b|\big|\leq|a-b|$
\end{document}

相关内容