我正在尝试使用 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: