使用 SIUnitX 的数学模式中的文本字体

使用 SIUnitX 的数学模式中的文本字体

有没有比使用 $\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}

输出:

在此处输入图片描述

相关内容