![Siunitx - 当 parse-numbers=true 时保留前导零](https://linux22.com/image/471616/Siunitx%20-%20%E5%BD%93%20parse-numbers%3Dtrue%20%E6%97%B6%E4%BF%9D%E7%95%99%E5%89%8D%E5%AF%BC%E9%9B%B6.png)
保留前导零的默认建议是设置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}