当将文本字体更改为 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 代码:
mode=match
正如detect-all
Joseph Wright 在他的回答中指出的那样, 使用 而不是 时会获得相同的输出。
答案1
版本 3 答案
使用 3 版siunitx
,您唯一需要在这里设置的就是mode = match
选择文本或数学模式输出。除此之外,您将获得与“参考”输入相同的字体。
版本 2 答案
中的检测siunitx
会发现它opensans
是无衬线字体,因此\mathsf
不使用\mathrm
/\mathnormal
作为标准数学模式排版。这与你设置的 Computer Modern 有关。你可以通过math-sf
给出 来调整解释方式,从而重置它\sisetup{math-sf = \mathrm}
。