\num 在 Ubuntu 升级后改变字体

\num 在 Ubuntu 升级后改变字体

我想要在文档中使用某种字体,呈现的数字如下所示。

{1234}

不带 \num 的字体

我也想控制小数点的位置,但是,一旦数字经过 \num,字体就会被 LaTex 默认字体取代

\num[group-separator={,}, group-minimum-digits=3, round-mode=places, round-precision=2]{1234}

带 \num 的字体

在最新更新至 Ubuntu 22.04 后,这种情况开始发生。有什么解决方法吗?

谢谢!

修正:这是一个最小的工作示例:

\documentclass{article}

\RequirePackage{siunitx}
\RequirePackage{fontspec}

\defaultfontfeatures{
    Ligatures = TeX,
    Path      = ./Fonts/ }

\IfFileExists{./Fonts/OpenSans-Regular.ttf}{
    \setmainfont[ BoldFont = OpenSans-Bold, ItalicFont = OpenSans-Italic ]{OpenSans-Regular}
    \setsansfont[ BoldFont = OpenSans-Bold, ItalicFont = OpenSans-Italic ]{OpenSans-Regular}
}{}

\begin{document}

{1234}

\addvspace{4ex}

\num[group-separator={,}, group-minimum-digits=3, round-mode=places, round-precision=2]{1234}

\end{document}

它必须用 xelatex 进行编译,并且应该有一个名为 Fonts 的子文件夹:

├── Fonts
│   ├── OpenSans-Bold.ttf
│   ├── OpenSans-Italic.ttf
│   ├── OpenSans-LightItalic.ttf
│   └── OpenSans-Regular.ttf


答案1

变化发生在我修改了siunitx检测 sanserif 字体的方法时。具体来说,在版本 3 中,只需将文本字体“sanserif-looking”不会影响输出。这是因为标准设置使用数学模式,并且您会发现在演示中仍然使用 Computer Modern。

几乎可以肯定,您正在期待文本模式字体,因此添加\sisetup{mode = text}将适用于更新的系统和旧系统。

相关内容