siunitx
我似乎在使用和时偶然发现了不一致之处sansmath
——我需要在罗马字体和无衬线字体中使用相同的表达方式。
请考虑以下示例:
\documentclass{article}
%\usepackage{sansmath} %% first without sansmath
\usepackage{siunitx}
\sisetup{detect-all=true}
\begin{document}
Roman: $F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\bigskip
\sffamily sffamily:
$F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\bigskip
%\sansmath plus sansmath:
%$F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\end{document}
因此,确实siunitx
检测到了 sf-ness(使用数学模式时没有区别)。但是,F_1
仍然是罗马的。
但如果我取消注释 sansmath 包,如下所示:
\documentclass{article}
\usepackage{sansmath} %% first without sansmath
\usepackage{siunitx}
\sisetup{detect-all=true}
\begin{document}
Roman: $F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\bigskip
\sffamily sffamily:
$F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\bigskip
\sansmath plus sansmath:
$F_1=\SI{12.34}{kt/m^{3}}$ (outside math mode: \SI{12.34}{kt/m^{3}})
\end{document}
结果变成
因此,现在siunitx
以罗马字体排版数字,但不排版单位中的字母,即使在\sansmath
使用之前(或者根本不使用),但在没有数学模式调用时则不会!重新定义math-rm=\mathsf
和类似操作对我来说不起作用。
作为一种解决方法,我可以使用例如$F_1=12.34\,\si{kt/m^{3}}$
,但这会破坏一些很好的功能siunitx
(例如间距和小数点符号的自动更改),并且单位中的指数3
仍然是罗马数字。有没有更聪明的方法,比如合适的字体重新定义?
答案1
sansmath
将数字类型从“mathalpha”更改为“mathord”。这意味着数字在\mathXX
命令中不再改变其字体,因此 siunitx 的内部\mathsf
对数字没有影响。
没有简单的解决方法:将类型改回 mathalpha 将有助于 siunitx,但会破坏方程式中的所有其他数字(它们现在会倾斜)。在 siunitx 中使用文本字体也不起作用——上标会出现问题。在我看来,唯一能做的就是,sansmath
只有当一个人也愿意使用它时才加载,这意味着发出\sansmath
(略作修正):
\documentclass[parskip=half-]{scrartcl}
\usepackage{sansmath} %% first without sansmath
\usepackage{siunitx,amsmath}
\sisetup{detect-all}
\makeatletter
\newcommand{\mysansmath}{%
\def\unboldmath{%
\@nomath\unboldmath
\sansmath%
}%
}
\makeatother
\begin{document}
\minisec{math commands don't work on numbers}
$\mathsf{123456abc}$ $\mathbf{123456abc}$ $\mathit{123456abc}$
\minisec{sansmath}
\sansmath plus sansmath:
$F_1=\SI{12.34e2}{kt/m^{3}}$
\mysansmath plus mysansmath:
$F_1=\SI{12.34e2}{kt/m^{3}}$
outside math mode: \SI{12.34e2}{kt/m^{3}}
\sffamily
outside math mode: \SI{12.34e2}{kt/m^{3}}
\end{document}