我正在编写一个文档,该文档主要使用 STIX TWO 字体排版并通过 进行编译XeLaTeX
。数学模式通过 配置unicode-math
。
在某些情况下,我需要 Arial/Helvetica/Tex Gyre Heros 类型的无衬线字体。 (如果这些部分看起来有点粗糙也没关系,也就是说,缺少的 scshape 根本没有问题。我想手动注释本身以 Arial 设置的图表。)
对于普通文本字体,我设置了一个newfontface
。现在我想对数学字体做同样的事情,我试图通过定义专用的来实现mathversion
。不幸的是,这会阻止使用unicode-math范围参数,因为range
和version
不能很好地协同工作。
由于没有这样的数学字体(使用 Fira Math 编译,但看起来与 Arial 完全不同),我尝试使用 NFSS 命令进行该版本的定义。
最终,失败了:
LaTeX Font Warning: Font shape `TU/Arial/m/n' undefined
(Font) using `TU/lmr/m/n' instead on input line 29.
! Math formula deleted: Insufficient symbol fonts.
\resetMathstrut@ ->\setbox \z@ \hbox {$($
}\ht \Mathstrutbox@ \ht \z@ \dp \Ma...
l.29 \begin{equation}
我整理了一个最小的例子来说明我的问题:
\documentclass[english]{scrartcl}
\usepackage[math-style=ISO, bold-style=ISO]{unicode-math}
\defaultfontfeatures{Scale = MatchUppercase}
\setmainfont[Scale=0.97]{STIX Two Text}
\setmathfont[Scale=0.97]{STIX Two Math}
\setsansfont[Scale=1.07]{Libertinus Sans}
\newfontface\rootsans{Arial}
%\setmathfont[version=rootsans]{Fira Math} % <-- This works but Fira!=Arial
\DeclareMathVersion{rootsans} %<-- Tried an alternative approach, so far without success
\SetSymbolFont{letters}{rootsans}{TU}{Arial}{m}{n}
\SetSymbolFont{operators}{rootsans}{TU}{Arial}{m}{n}
\SetSymbolFont{symbols}{rootsans}{TU}{Arial}{m}{n}
\SetSymbolFont{largesymbols}{rootsans}{TU}{Arial}{m}{n}
\SetMathAlphabet{\mathrm}{rootsans}{TU}{Arial}{m}{n}
\begin{document}
\textsc{Euler}'s identity in normal mode:
\begin{equation}
e^{i\phi} + 1 = 0
\end{equation}
\rootsans
\mathversion{rootsans}
\textsc{Euler}'s identity with special font setting:
\begin{equation}
e^{i\phi} + 1 = 0
\end{equation}
\end{document}
如果我省略mathversion
一切,但公式(2)与前一行不匹配。
我能做什么吗?或者我是否必须使用 Fira Math 作为 Arial 的伴侣?