当 familydefault 设置为 sans serif 时,siunitx 可以使用罗马字体吗?

当 familydefault 设置为 sans serif 时,siunitx 可以使用罗马字体吗?

可能重复:
我可以让 siunitx 命令像 beamer 中的其他数学一样使用衬线字体吗?

我有一个 MWE,显示使用 将系列默认值设置为无衬线字体\renewcommand{\familydefault}{\sfdefault}。完成此操作后,无论我尝试使用 siunitx 的什么设置(如示例中所示),我都无法让数学模式($$\[\])以罗马衬线字体显示单位和数字。

\documentclass[12pt]{article} % use larger type; default would be 10pt
\renewcommand{\familydefault}{\sfdefault}
\usepackage{siunitx}
\sisetup{detect-mode=false,detect-family=false,
        detect-display-math=false,detect-shape=false,
        mode=math}

\begin{document}
text where you have \SI{450}{\volt}\\
$\textrm{inline math} \quad \sin^2(x) \quad \SI{450}{\volt}\\
\textrm{textrm V}$
\[\textrm{math environment}\quad \SI{450}{\volt}\]
\end{document}

结果是

在此处输入图片描述

理想情况下,我希望文本中给出的单位以无衬线字体排版(即使 SI 标准认为这不合适),并且文本中的单位以罗马字体$$\[\]当前数学字体排版。

我注意到,如果使用\sfseries而不是\familydefault,则效果会好一半,这意味着文本和$$将以无衬线字体排版,而\[\]可以以罗马字体排版。该解决方案对我的文档来说是个问题,因为我也使用无衬线字体作为章节标题。

答案1

约瑟夫用这个问题给我指明了正确的方向我可以让 siunitx 命令像 beamer 中的其他数学一样使用衬线字体吗?。除了按照\AtBeginDocument那里的建议添加之外,我还将其更改text-rm=\rmfamilytext-rm=\sffamily以获取无衬线中间文本,然后删除mode设置并更改detect-mode=true

\documentclass[12pt]{article} % use larger type; default would be 10pt
\renewcommand{\familydefault}{\sfdefault}
\usepackage{siunitx}
\sisetup{detect-mode=true,detect-family=false,
        detect-display-math=false,detect-shape=false}
\AtBeginDocument{\sisetup{math-rm=\mathrm, text-rm=\sffamily}}


\begin{document}
text where you have \SI{450}{\volt}\\
$\textrm{inline math} \quad \sin^2(x) \quad \SI{450}{\volt}\\
\textrm{textrm V}$
\[\textrm{math environment}\quad \SI{450}{\volt}\]
\end{document}

MWE 在文本中显示 sans,在所有数学中显示 roman

相关内容