有没有比使用 $\text{\num{}}$ 更简单的方法让 $\num{}$ 中的数字采用与普通文本相同的字体?
\documentclass[varwidth]{standalone}
\usepackage[sfdefault]{overlock}
\usepackage[detect-all]{siunitx}
\begin{document}
num in maths mode: $\num{1200}$
num in text in maths mode: $\text{\num{1200}}$
\end{document}
我正在使用 pdflatex,我希望数学模式中的所有数字都采用锁字字体,以便它们与文档的其余部分保持一致。
答案1
如果您希望 \num 使用文本字体,则需要该选项mode=text
。但如果您确实希望所有数字使用相同的字体,则最好重置数学字体,以便它也可以在 \num 之外工作:
\documentclass[varwidth]{standalone}
\usepackage[sfdefault]{overlock}
\usepackage{siunitx}
\DeclareSymbolFont{numbers}{\encodingdefault}{\sfdefault}{\mddefault}{n}%
\DeclareMathSymbol{0}\mathalpha{numbers}{"30}%
\DeclareMathSymbol{1}\mathalpha{numbers}{"31}%
\DeclareMathSymbol{2}\mathalpha{numbers}{"32}%
\DeclareMathSymbol{3}\mathalpha{numbers}{"33}%
\DeclareMathSymbol{4}\mathalpha{numbers}{"34}%
\DeclareMathSymbol{5}\mathalpha{numbers}{"35}%
\DeclareMathSymbol{6}\mathalpha{numbers}{"36}%
\DeclareMathSymbol{7}\mathalpha{numbers}{"37}%
\DeclareMathSymbol{8}\mathalpha{numbers}{"38}%
\DeclareMathSymbol{9}\mathalpha{numbers}{"39}%
\begin{document}
num in maths mode:
$1234567890^{1234567890} \num{1200}$
num in text in maths mode: 1234567890
\end{document}
答案2
我的评论分析一下:
\documentclass{article}
\usepackage[sfdefault]{overlock}
\usepackage[detect-all]{siunitx}
\let\oldnum\num
\makeatletter
\def\num{\@ifnextchar[{\ReadOpt}{\ReadMand}}
\def\ReadOpt[#1]#2{\text{\oldnum[#1]{#2}}}
\def\ReadMand#1{\text{\oldnum{#1}}}
\makeatother
\begin{document}
\Huge
num in maths mode: $\oldnum{1200}$
num in text in maths mode: $\oldnum[scientific-notation=true]{1200}$
New:
num in maths mode: $\num{1200}$
num in text in maths mode: $\num[scientific-notation=true]{1200}$
\end{document}
输出: