\mathsf{} 以衬线字体打印数字

\mathsf{} 以衬线字体打印数字

我正在使用mathsf{}命令来标记公式中特殊类型的变量。

我有:

\newcommand{\mycmd}[1]{\mathsf{#1}}

在公式中我通常有

$\mycmd{specialvariable_1} = yada yada yada$

现在我注意到下标中的数字仍然以衬线字体打印。非下标数字也是如此。一个最小的例子是:

$\mathsf{a5\,b_3}$

这里的数字用衬线字体打印,字母用无衬线字体打印。

如何强制 LaTeX 以无衬线字体打印数字?

(可能感兴趣:我的命令经常嵌套在其他命令中,而这些命令有时本身又嵌套在其他命令中......)

[更新] 根据要求,我做了一个最小的工作示例。看来sansmath问题出在包装上。没有包装,数字会以无衬线字体打印,有包装,数字会以衬线字体打印。不过这似乎有点违反直觉……

\documentclass[11pt]{scrbook}

\usepackage{sansmath}

\begin{document}
 $\mathsf{a5\,b_3}$
\end{document}

答案1

sansmath包重新定义了数字的处理方式,使其\mathord代替\mathalpha。这样做是因为它从倾斜的无衬线字体中获取字母作为 下的数学字符\sansmath,而通常您不希望数字是倾斜的版本,但它错误地影响了normal数学版本。删除sansmath包或按如下方式定义命令:

\newcommand{\mycmd}[1]{\mbox{\sansmath$\mathsf{#1}$}}

利用数学版本\mathsf中正确的工作sans

示例输出

\documentclass[11pt]{scrbook}

\usepackage{sansmath}

\newcommand{\mycmd}[1]{\mbox{\sansmath$\mathsf{#1}$}}

\begin{document}

$x = \mycmd{a5b_3},\quad y \ne \mathsf{a5b_3}$
\end{document}

相关内容