以下 MWE\num
不管在什么模式下都会显示数字。在之前\sisetup
它总是使用主字体,在之后它总是使用数学字体
\documentclass{minimal}
\usepackage{unicode-math}
\setmainfont{TeX Gyre Adventor}
\setmathfont{Asana Math}
\usepackage{siunitx}
\begin{document}
\obeylines
text: 1.23 = \num{1.23}
math: \(1.23 = \num{1.23}\)
\sisetup{number-math-rm=\ensuremath}
text: 1.23 = \num{1.23}
math: \(1.23 = \num{1.23}\)
\end{document}
输出如下
我想让每行的数字使用相同的字体。如何\num
根据模式使用字体?
答案1
您可以通过将选项添加detect-mode
到 的参数来实现格式化目标\sisetup
。请注意,这不仅会影响 的参数的外观\num
,还会影响 的第一个参数的外观\SI
;我相信这就是您想要的。
下面的示例使用旧式数字作为文本字体,以便使文本模式和数学模式数字之间的区别更加明显。
\documentclass{article} % Please don't use the 'minimal' document class.
\usepackage{unicode-math}
\setmainfont{TeX Gyre Adventor}[Numbers=OldStyle]
\setmathfont{Asana Math}
\usepackage{siunitx}
\sisetup{detect-mode,number-math-rm=\ensuremath}
\begin{document}
\begin{tabular}{lll}
text mode & 1.23 = \num{1.23} & \SI{123}{\meter} \\
math mode & \(1.23 = \num{1.23}\) & \(\SI{123}{\meter} \)
\end{tabular}
\end{document}