如何关闭 \numlist 命令中单个条目的解析数字?

如何关闭 \numlist 命令中单个条目的解析数字?

我正在使用\numlistsiunitx包输入一长串数字。

最小代码是:

\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.}

相关内容