![使用 S 列对齐表格中的数字和分离的不确定性](https://linux22.com/image/259565/%E4%BD%BF%E7%94%A8%20S%20%E5%88%97%E5%AF%B9%E9%BD%90%E8%A1%A8%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97%E5%92%8C%E5%88%86%E7%A6%BB%E7%9A%84%E4%B8%8D%E7%A1%AE%E5%AE%9A%E6%80%A7.png)
如果我有这样的表格
\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}
\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