我正在使用\numlist
该siunitx
包输入一长串数字。
最小代码是:
\documentclass{article}
\usepackage{siunitx}
%
\begin{document}
%
\numlist{1e3;1.0;1.}
%
\end{document}
输出为
列表中的第一个和第二个条目打印得很好。但是,我想关闭parse-numbers
第三个条目,即将其打印为1.
而不是1.0
,这样输出就会像
我尝试通过放置这样的括号\numlist{1e3;1.0;{1.}}
甚至双括号来保护第三个条目,但都没有起作用(双括号甚至引发了无效令牌的错误)。
是否可以关闭parse-numbers
或更改单次入境在\numlist
?
答案1
siunitx
可能需要按顺序提出功能请求,以便keep-trailing-decimal-marker
为这种情况提供一个选项。
与此同时,这里有一个解决方法,siunitx
但不如那么灵活。
\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn
\NewDocumentCommand{\numsd}{m}
{
\hesham_num_sd:n { #1 }
}
\NewDocumentCommand{\numlistsd}{m}
{
\seq_set_split:Nnn \l_tmpa_tl { ; } { #1 }
\seq_set_map:NNn \l_tmpb_tl \l_tmpa_tl { \hesham_num_sd:n {##1} }
\seq_use:Nnnn \l_tmpb_tl
{ \nobreakspace and\nobreakspace }% between two
{,~ }% between more than two
{\nobreakspace and\nobreakspace }% between last two
}
\cs_new_protected:Nn \hesham_num_sd:n
{
\str_if_eq:eeTF { . } { \str_range:nnn { #1 } { -1 } { -1 } }
{
\exp_args:Ne \num { \str_range:nnn { #1 } { 1 } { -2 } }.
}
{
\num { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\numlistsd{1e3;1.0;1.}
\numsd{10000.}
\end{document}
答案2
与所有 siunitx 命令一样,您可以直接在方括号中向它们添加选项。
对于您来说,命令看起来应该是这样的:
\numlist[parse-numbers=false]{1;1.0;1.}