请考虑以下 mwe:
\documentclass[margin=3mm]{standalone}
\usepackage{siunitx}
\sisetup{input-symbols = {( - )},
table-space-text-post=***,
group-digits=integer,
group-four-digits,
group-separator={,}
}
\begin{document}
\begin{tabular}{S[table-format=5.5]}
\hline
123.45678 \\
1234.5678 \\
(12.345) \\
(123.45) \\
\hline
\end{tabular}
\end{document}
这使:
如您所见,前三行的结果符合预期,但最后两行不应该出现逗号。我错过了什么还是这是错误?
编辑:
最新siunitx
版本 v2.7n,最后修订于 2018-04-27(自 2018.05.03 开始可用miktex
)包含软件包作者的修复约瑟夫·赖特在下面他的回答中给出了以下结果:
这次更新是朝着完整解决所提出问题迈出的重要一步。显然区分输入符号(
和数字是一个(非常)困难的问题。
答案1
问题是,符号输入在内部被存储为\ensuremath{<thing>}
,看起来像二字符间距。作为临时修复,添加
\ExplSyntaxOn
\cs_set_protected:Npn \__siunitx_number_in_parse_mantissa:N #1 {
\tl_if_in:NnTF \l__siunitx_input_digit_tl {#1}
{ \__siunitx_number_in_digit:n {#1} }
{
\tl_if_in:NnTF \l__siunitx_input_decimal_tl {#1}
{ \__siunitx_number_in_decimal:N #1 }
{
\tl_if_in:NnTF \l__siunitx_input_sign_tl {#1}
{ \__siunitx_number_in_sign:N #1 }
{
\tl_if_in:NnTF \l__siunitx_input_symbol_tl {#1}
{
\prop_put:Nnn \l__siunitx_number_in_prop { symbolic }
{ true }
\__siunitx_number_in_digit:n {#1}
}
{
\tl_if_in:NnF \l__siunitx_input_ignore_tl {#1}
{ \__siunitx_number_in_parse_more:N #1 }
}
}
}
}
}
\ExplSyntaxOff
我很快就会调整主代码。