我正在尝试制作一张表格,其中有一S
列(来自siunitx-package
),其中的数字与\pm
表示不确定性的对齐。一些值具有不确定性,例如1.00 x 10⁴
和,这似乎会妨碍对齐。这是一个 MWE:
\documentclass{article}
\usepackage{booktabs}
\usepackage[separate-uncertainty,bracket-numbers = false]{siunitx}
\begin{document}
\begin{table}
\begin{tabular}{S} \toprule
\num{0.37 \pm 0.07} \\
\num{0 \pm 7e-4} \\ \bottomrule
\end{tabular}
\end{table}
\end{document}
我想要看到的\pm
是的阵容,那么这里缺少什么?
更新:我搜索了一下,刚刚看到这个答案回答为什么\num{}
不适用于 S 列但是,通过删除\num{}
环境,后面的所有内容(包括)\pm
都不会显示在表中。这不是一个改进。我是否应该想出另一种方法来做到这一点,或者是否有siunitx-package
我找不到的选项?
答案1
这里有几个问题。首先,正如您在编辑中观察到的那样,如果您想要对齐\num
,则不应在列内使用S
。但是,仅凭这一更改并不能实现您想要的效果。
的标准设置siunitx
旨在保持任何输入的小数位对齐,但代价是对于任何略微不对称的情况都不是最佳的。对于更复杂的输入,您需要设置table-format
以指示为数字保留多少空间。
第二个问题是siunitx
被设计用来处理 形式的数字(x \pm y) \times 10^{z}
。因此,您的输入被解析为(0 \pm 7) \times 10^{-4}
,而不是(0 \pm 7 \times 10^{-4})
。这主要是出于实际原因(它是最常见的输入形式),但部分原因是 中的不确定性代码的历史siunitx
是为了读取更紧凑的形式0.0000(7) = (0.0000 \pm 0.0007)
。
现在,输出至少可以部分符合要求:
\documentclass{article}
\usepackage{booktabs}
\usepackage[separate-uncertainty,bracket-numbers = false,
table-align-uncertainty = true, table-align-exponent=false]
{siunitx}
\begin{document}
\begin{table}
\begin{tabular}{S[table-format=1.2(2)e1]}
\toprule
0.37 \pm 0.07 \\
0 \pm 7e-4 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
不过,你会发现结尾的空间是错误的。就我个人而言,我会选择
\documentclass{article}
\usepackage{booktabs}
\usepackage[separate-uncertainty]
{siunitx}
\begin{document}
\begin{table}
\begin{tabular}{S[table-format=1.4(1)]}
\toprule
0.37 \pm 0.07 \\
0.0000 \pm 0.0007 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}