我正在使用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}