siunitx 在数学模式下使用奇怪的字体

siunitx 在数学模式下使用奇怪的字体

当将文本字体更改为 opensans 时,siunitx 决定在数学模式下使用第三种无衬线字体。

当前的 texlive 版本仍然如此吗?

如果是这样,我该如何解决此问题?

提供的解决方案这里没有帮助。

\documentclass{standalone}

\usepackage[default]{opensans}

\usepackage{siunitx}
\sisetup{detect-all}

\begin{document}

\begin{minipage}[t]{50mm}
    Text mode:                \\
    expecting: 5.1\,N         \\
    getting:  \SI{5.1}{N}
\end{minipage}


\begin{minipage}[t]{50mm}
    Math mode:                \\
    expecting: $ a = 5.1\,\mathrm{N} $ \\
    getting:   $ a = \SI{5.1}{N} $  
\end{minipage}

\end{document}

在此处输入图片描述

编辑: 正如 daleif 在下面的评论中指出的那样,使用lato而不是时行为会有所不同opensans。使用前者,数学模式下的输出是正确的,而现在文本模式下的输出失败。

更新,版本 2020/02/25:
输出已经改变。现在我得到了
在此处输入图片描述

更新,版本 v3.0.38,最后修订于 2022-01-04:
现在输出符合我的期望,无需修改 LaTeX 代码: 输出_v3.0.38
mode=match正如detect-allJoseph Wright 在他的回答中指出的那样, 使用 而不是 时会获得相同的输出。

答案1

版本 3 答案

使用 3 版siunitx,您唯一需要在这里设置的就是mode = match选择文本或数学模式输出。除此之外,您将获得与“参考”输入相同的字体。

版本 2 答案

中的检测siunitx会发现它opensans是无衬线字体,因此\mathsf不使用\mathrm/\mathnormal作为标准数学模式排​​版。这与你设置的 Computer Modern 有关。你可以通过math-sf给出 来调整解释方式,从而重置它\sisetup{math-sf = \mathrm}

相关内容