为什么 unicode-math 中没有无衬线斜体数字?我该如何获取它们?

为什么 unicode-math 中没有无衬线斜体数字?我该如何获取它们?

我正在尝试使用 unicode-math\mathsfit在数学模式中设置无衬线斜体数字。我一般不需要无衬线数学;只想要数字和拉丁/拉丁(但这已经可以了)。我使用 xelatex。

我目前的 MWE 是:

\documentclass{standalone}
\usepackage{fontspec}
\usepackage{unicode-math}

\setsansfont{Arial}
\setmathfont[range=\mathsfup/{num,latin,Latin}]{Arial}
\setmathfont[range=\mathsfit/{num,latin,Latin}]{Arial Italic}
\begin{document}
$\mathsf{3} \mathsfit{3} \mathsfup{3} 3$


$\mathsf{a} \mathsfit{a} \mathsfup{a} a$
\end{document}

我知道 Arial 不是数学字体,也不具备所有花哨的数学符号。我既不想要也不需要它们。我想在数学模式下使用 、 和 以无衬线字体设置拉丁字符(大写和小写)和数字\mathsf\mathfsup使用\mathsfit上面发布的 MWE,这适用于\mathsf\mathfsup以及\mathfsit拉丁字符:

在此处输入图片描述

unicode-math 打印以下错误消息:

*************************************************
* unicode-math warning: "no-alphabet"
*
* I am trying to set up alphabet "sfit/num" but there are no configuration
* settings for it. (See source file "unicode-math-alphabets.dtx" to debug.)
*************************************************

我尝试应用一些模式匹配,并将以下几行添加到unicode-math.sty,以提供字母表sfit/num:

\__um_new_alphabet_config:nnn {sfit} {num}
 {
  \__um_set_mathalphabet_numbers:nnn {sf}   {it}{#1}
  \__um_set_mathalphabet_numbers:nnn {sfit} {it}{#1}
 }

但后来我得到了错误:

! Missing number, treated as zero.
<to be read again>
                   \g__um_it_num_usv
l.7 ...=\mathsfit/{num,latin,Latin}]{Arial Italic}

有人能帮我添加那个字母吗?为什么它一开始就消失了?它(通常)不需要还是不可能?

感谢您的回答和评论。

答案1

Barbara Beeton 的评论明确指出,没有无衬线斜体数字,但这“被视为‘字体和标记’的情况”。因此,我使用字体和标记来解决这个问题,以获得所需的结果:

\documentclass{standalone}
\usepackage{fontspec}
\usepackage{unicode-math}

\setsansfont{Arial}
\setmathfont[range=\mathsfup/{num,latin,Latin}]{Arial}
\setmathfont[range=\mathsfit/{num,latin,Latin}]{Arial Italic}
\setmathfontface\mathsfitnum{Arial Italic}
\begin{document}
$\mathsf{3} \mathsfit{3} \mathsfup{3} \mathsfitnum{3} 3$


$\mathsf{a} \mathsfit{a} \mathsfup{a} \mathsfitnum{a} a$
\end{document}

使用新的\mathsfitnum宏,数字和拉丁字母都采用 Arial Italic:

在此处输入图片描述

相关内容