siunitx :不对齐括号

siunitx :不对齐括号

我想创建一个siunitx将数值点对齐的列类型。这些值可以用括号括起来,也可以不用。如果有括号,则它们应该紧密地打印在数字周围;而不是对齐。

在 的最新版本中siunitxtable-align-text-pretable-align-text-post已被弃用,取而代之的是table-align-text-beforetable-align-text-after函数。

在以前的版本中,我可以编译这个文档:

\documentclass{article}
\usepackage{siunitx}
\newcolumntype{d}{S[
  input-open-uncertainty=,
  input-close-uncertainty=,
  table-align-text-pre=false,
  table-align-text-post=false
]}

\begin{document}
\begin{tabular}{d}
  -10.10048\\
  (2.123)
\end{tabular}
\end{document}

并得到以下表格结果:

在此处输入图片描述

使用 的最新版本siunitx,无论我使用pre/before或 ,我都会得到这个结果post/after

在此处输入图片描述

两个问题:

  1. 如何创建一个在数字周围紧密显示括号的列类型(第一张图片)?
  2. 有没有一种方法可以实现与版本无关的结果siunitx?(或者适用于最近几年发布的版本。)

要求:

  • 一种不依赖于 的解决方案parse-numbers=false
  • 一种不需要我事先指定每列宽度的解决方案

我读手册的“9.7 回归表”部分,但作者仍然使用table-align-text-pre,并且我上面粘贴的最小文档并未产生预期的结果。

答案1

如果您替换所有四个当前选项,您遇到的问题将自动消失,

  input-open-uncertainty=,
  input-close-uncertainty=,
  table-align-text-pre=false,
  table-align-text-post=false

单一选项

  input-symbols = ()

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx}
\newcolumntype{d}{S[input-symbols = ()]}

\begin{document}
\begin{tabular}{d}
  -10.10048\\
   (2.123)
\end{tabular}
\end{document}

答案2

将括号合并到table-format

\documentclass{article}
\usepackage{siunitx}
\newcolumntype{d}{S[
  input-open-uncertainty=,
  input-close-uncertainty=,
  table-align-text-pre=false,
  table-align-text-post=false, table-format=(-2.5)
]}

\begin{document}

\begin{tabular}{d}
  -10.10048\\
  (2.123)
\end{tabular}

\end{document}

在此处输入图片描述

答案3

这是一个错误,siunitx将在即将推出的 v3.0.25 中修复。可以使用以下方法将更改应用为补丁程序

\cs_gset_protected:Npn \__siunitx_table_center_marker:
  {
    \hbox_set:Nn \l__siunitx_table_tmp_box
      { \ensuremath { \mathord { \l_siunitx_number_output_decimal_tl } } }
    \dim_compare:nNnTF
      { \box_wd:N \l__siunitx_table_integer_box }
        >
          {
              \box_wd:N \l__siunitx_table_decimal_box
            - \box_wd:N \l__siunitx_table_tmp_box
          }
      {
        \bool_if:NTF \l__siunitx_table_align_after_bool
          {
            \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_decimal_box
              {
                  \box_wd:N \l__siunitx_table_integer_box
                + \box_wd:N \l__siunitx_table_tmp_box
              }
           }
           {
             \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_after_box
               {
                   \box_wd:N \l__siunitx_table_after_box
                 + \box_wd:N \l__siunitx_table_integer_box
                 - \box_wd:N \l__siunitx_table_decimal_box
                 + \box_wd:N \l__siunitx_table_tmp_box
               }
           }
               { } { \__siunitx_table_fil: }
      }
      {
        \bool_if:NTF \l__siunitx_table_align_before_bool
          {
            \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_integer_box
              {
                  \box_wd:N \l__siunitx_table_decimal_box
                - \box_wd:N \l__siunitx_table_tmp_box
              }
          }
          {
            \__siunitx_table_center_marker_aux:Nnnn \l__siunitx_table_before_box
               {
                   \box_wd:N \l__siunitx_table_before_box
                 + \box_wd:N \l__siunitx_table_decimal_box
                 - \box_wd:N \l__siunitx_table_integer_box
                 - \box_wd:N \l__siunitx_table_tmp_box
               }
          }
              { \__siunitx_table_fil: } { }
      }
  }
\cs_new_protected:Npn \__siunitx_table_center_marker_aux:Nnnn #1#2#3#4
  {
    \hbox_set_to_wd:Nnn #1 {#2}
      {
        #3
        \hbox_unpack:N #1
        #4
      }
  }
\cs_gset_protected:Npn \__siunitx_table_direct_marker_end:
  {
      \c_math_toggle_token
    \hbox_set_end:
    \bool_set_true:N \l__siunitx_table_align_before_bool
    \bool_set_true:N \l__siunitx_table_align_after_bool
    \__siunitx_table_center_marker:
    \use:c { __siunitx_table_align_ \l__siunitx_table_align_text_tl :n }
      {
        \box_use_drop:N \l__siunitx_table_integer_box
        \box_use_drop:N \l__siunitx_table_decimal_box
      }
  }

相关内容