siunitx:\num 和变量名之间的间距

siunitx:\num 和变量名之间的间距

我在用siunitx排版数字和单位。但是在变量前面排版数字时,我感觉少了一个细小的空格。

例如,使用\num{0.1234}aI 得到 (1),使用\num{0.1234}\,aI 得到 (2),哪个看起来更好。有没有办法自动完成这个操作,还是我必须手动在每个数字后加一个空格?

在此处输入图片描述

答案1

\mynum为您定义了检查下一个标记是否为 catcode“字母”的方法。

\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn

\NewDocumentCommand \mynum { o m }
 {
  \num [ #1 ] { #2 }
  \peek_catcode_ignore_spaces:NT \c_catcode_letter_token { \, }
 }

\ExplSyntaxOff
\begin{document}
Normal behaviour (very recommended)
\begin{equation}
  \num{0,1234}\,a
\end{equation}
Desired behaviour
\begin{equation}
  \mynum{0,1234}a
\end{equation}
\end{document}

在此处输入图片描述


您还可以覆盖\num提供的命令siunitx,即不建议\num。因此,我复制了from的定义siunitx.sty并附加了相关部分。

\documentclass{article}
\usepackage{siunitx}

\ExplSyntaxOn

\RenewDocumentCommand \num { o m }
 {
  % begin from siunitx.sty
  \leavevmode
  \group_begin:
   \IfNoValueF {#1}
    { \keys_set:nn { siunitx } {#1} }
   \__siunitx_number_output:n {#2}
  \group_end:
  % end from siunitx.sty
  \peek_catcode_ignore_spaces:NT \c_catcode_letter_token { \, }
 }

\ExplSyntaxOff

\begin{document}
$\num{0,1234}a$
\end{document}

在此处输入图片描述

相关内容