Siunitx - 当 parse-numbers=true 时保留前导零

Siunitx - 当 parse-numbers=true 时保留前导零

保留前导零的默认建议是设置parse-numbers=false

但是,我有很多例子,其中小数点标记在 、 和 之间变化。因此,我需要解析器将 更改为更正,output-decimal-marker我有时将其设置为“,”用于挪威文档,有时将其设置为“。”用于英语文档。

是否可以保留前导零进行排版,例如

\num{0000.0001}生产0000.0001而不是0.0001

\num{01.0001}01.0001不是1.0001 关闭解析器?

我目前的设置是

\sisetup{
    propagate-math-font=true,
    group-digits=false,
    table-figures-decimal=0,
    table-number-alignment=center,
    input-digits={0123456789ABCDEF},
    %parse-numbers = false,
    detect-all=true,
    input-exponent-markers={},
    output-decimal-marker={,}
}

更新!虽然这不是解决方案,但答案已被接受。我希望作者考虑将其添加到 siunitx-package 中。

答案1

你要minimum-integer-digits

\documentclass{article}
\usepackage{siunitx}
\sisetup{minimum-integer-digits = 4}
\begin{document}
\num{000.0001}
\end{document}

答案2

作为权宜之计,您可以定义一个自定义宏,minimum-integer-digits根据您的输入数字自动添加:

\documentclass{article}
\usepackage{siunitx}

\sisetup{
    propagate-math-font=true,
    group-digits=none,
    input-digits={0123456789ABCDEF},
    detect-all=true,
    input-exponent-markers={},
    output-decimal-marker={,}
}

\ExplSyntaxOn
\cs_new:Npn \drjay_gobble_decimals:w #1 . #2 \q_stop {#1}
\cs_new:Npn \drjay_integer_digits:n #1
  { \tl_count:o { \drjay_gobble_decimals:w #1 .\q_stop } }
\NewDocumentCommand\numretained{O{} m}
  {%
    \use:e
      {
        \exp_not:N \num
          [
            minimum-integer-digits =  \drjay_integer_digits:n {#2},
            \exp_not:n {#1}
          ]
      }
      {#2}
  }
\ExplSyntaxOff

\begin{document}
\numretained{000.0001}

\numretained{01.0001}
\end{document}

相关内容