unicode-math 和 siunitx:如何让 \num 识别文本或数学模式

unicode-math 和 siunitx:如何让 \num 识别文本或数学模式

以下 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}

相关内容