siunitx 和 sansmath 不兼容?

siunitx 和 sansmath 不兼容?

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}

在此处输入图片描述

相关内容