是否可以强制 siunitx 在个位后输出小数?

是否可以强制 siunitx 在个位后输出小数?

有效数字的常规处理意味着“60”有一位有效数字,而“60.”有两位有效数字。个位后的小数表示个位数字是有效的。

现在,siunitx无法正确处理此问题,如以下 MWE 所示。前三个渲染正确,但第四个渲染不正确。

\documentclass{article}
\usepackage{siunitx}

\begin{document}

    % Two clearly-significant digits:
    % No decimal is necessary, but it is not incorrect to include it
    \SI{12}{\second}    % Should be "12 s" (two sig figs), but could be "12. s"
    \SI{12.}{\second}   % Could be either "12 s" OR "12. s",
                        %    because both digits are significant.
    
    % Clarifying an ambiguously-significant ones-place digit:
    \SI{60}{\second}    % Should be "60 s" (one significant figure)
    \SI{60.}{\second}   % Should be "60. s" (two significant figures),
                        %    but instead it produces "60 s"

\end{document}

有没有办法siunitx正确处理这种特殊情况下的有效数字?除此之外,还有什么办法可以让它正常工作吗?

答案1

这将在 v3.0.49 中siunitx使用选项进行介绍retain-explicit-decimal-marker。如果您有较旧的 v3 版本并希望将其添加为补丁,则“快速”编辑(不涵盖所有内容)是

\documentclass{article}
\usepackage{siunitx}
\ExplSyntaxOn
\keys_define:nn { siunitx }
  { retain-explicit-decimal-marker .bool_set:N = \l__siunitx_number_explicit_decimal_bool }
\cs_gset_protected:Npn \__siunitx_number_parse_loop_main_end:NN #1#2
  {
    \tl_if_empty:NT \l__siunitx_number_partial_tl
      {
        \bool_if:NTF #2
          { \tl_set:Nn \l__siunitx_number_partial_tl { 0 } }
          {
            \bool_if:NT \l__siunitx_number_explicit_decimal_bool
              { \tl_set:Nn \l__siunitx_number_partial_tl { \empty } }
          }
      }
    \tl_put_right:Nx #1
      {
        { \exp_not:V \l__siunitx_number_partial_tl }
        \bool_if:NT #2 { { } }
        { }
      }
  }
\ExplSyntaxOff
\begin{document}
\num[retain-explicit-decimal-marker]{10.}
\end{document}

为了解释为什么需要这样做,在 v2 中,我在内部分别跟踪整数和小数。然而,经过深思熟虑,这感觉很不自然:物理量是浮点数,所以这应该反映在包的工作方式中。我从未遇到过有人10.在专业排版的材料中使用,所以这是在某些我不熟悉的领域使用的惯例。(当然会发生这种情况:编写通用单位包时,我收到了超出我自己学术经验的主题领域的请求。)所以我的出发点是规范化输入:许多数字格式代码siunitx针对的是表格/自动生成的值,而不是一次性的。因此,为了在这里介绍内容,我需要回顾一些基本假设。这当然是可能的,但当您跟踪数据时,这并不简单,因为我现在已经有了一个记录在案且可预测的 API。

相关内容