使用 S 列对齐表格中的数字和分离的不确定性

使用 S 列对齐表格中的数字和分离的不确定性

如果我有这样的表格

\documentclass{article}

\usepackage{booktabs}
\usepackage[separate-uncertainty=true]{siunitx}

\begin{document}
\begin{table}
  \centering
    \begin{tabular}{
                  l   
                  S[table-format=1.1(2)]
                  S[table-format=-1.1(2)]
                  S[table-format=2.1(3)]
                  %S[table-figures-uncertainty=2,
                  %  table-number-alignment=center]
                  }   
    \toprule
    Station   & {GHI}     & {DIF}      & {DHI}       \\  
    \midrule
    BS        & 2.4 +-3.7 & -5.3 +-1.6 & 11.6 +- 7.9 \\
    HB        & 3.0 +-4.3 & -3.2 +-3.3 & 10.0 +- 9.0 \\
    PD        & 2.4 +-2.8 & -3.1 +-1.3 &  8.4 +- 6.3 \\
    TR        & 1.3 +-4.8 & -4.5 +-2.8 &  7.5 +-10.6 \\
    WB        & 0.3 +-2.7 & -3.8 +-1.9 &  4.8 +- 6.4 \\[0.5em]
    Mean      & 1.6 +-3.0 & -3.9 +-1.3 &  7.6 +- 6.5 \\
    \bottomrule
    \end{tabular}
\end{table}
\end{document}

数字在小数点符号上对齐,但不确定性却不一致。

我希望在最后一列中为不确定性保留两个数字的空间,以便它按照代码中给出的格式进行格式化(不确定性在右侧对齐,并且在最后一列第一行的 7.9 之前有一个空格)。

我如何使用 siunitx 实现这一点?

答案1

siunitx包没有任何内置功能。包代码中提供的唯一对齐方式是将错误左对齐。相反,您可以使用单独的列来表示不确定性,如下所示:

示例输出

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
\thispagestyle{empty}
\begin{table}
  \centering
  \begin{tabular}{
    l
    S[table-format=1.1]@{\,\( \pm \)\,}
    S[table-format=1.1]
    S[table-format=-1.1]@{\,\( \pm \)\,}
    S[table-format=1.1]
    S[table-format=2.1]@{\,\( \pm \)\,}
    S[table-format=2.1]
    }
    \toprule
    Station & \multicolumn{2}{c}{GHI} & \multicolumn{2}{c}{DIF}
    & \multicolumn{2}{c}{DHI}       \\
    \midrule
    BS & 2.4 &3.7 & -5.3 &1.6 & 11.6 & 7.9 \\
    HB & 3.0 &4.3 & -3.2 &3.3 & 10.0 & 9.0 \\
    PD & 2.4 &2.8 & -3.1 &1.3 &  8.4 & 6.3 \\
    TR & 1.3 &4.8 & -4.5 &2.8 &  7.5 &10.6 \\
    WB & 0.3 &2.7 & -3.8 &1.9 &  4.8 & 6.4 \\[0.5em]
    Mean & 1.6 &3.0 & -3.9 &1.3 &  7.6 & 6.5 \\
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

在这里,我们将数字及其不确定性放入单独的列中,并在表格格式中放置加号/减号,并留出适当的间距以方便使用。然后标题需要跨越数字及其不确定性的两列,因此我们在\multicolumn命令内部输入这些。

如果您希望拥有类似的输入格式,1.2+-3.6那么您可以定义一个命令\pmnum,该命令采用这样的数字并将其拆分为两列条目,如下所示。:

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}

\makeatletter
\newcommand{\pmnum}[1]{\@pmnum #1+}
\def\@pmnum#1+-#2+{#1&#2}
\makeatother

\begin{document}
\thispagestyle{empty}
\begin{table}
  \centering
  \begin{tabular}{
    l
    S[table-format=1.1]@{\,\( \pm \)\,}
    S[table-format=2.1]
    }
  \toprule
    Station   & \multicolumn{2}{c}{GHI} \\
    \midrule
    BS        & \pmnum{2.4+-3.7} \\
    HB        & \pmnum{3.0+-10.3} \\
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

感谢 lionade 指出此代码先前版本中的错误,其中和#1被括在 中,破坏了对齐。#2@pmnum\num

相关内容