我正在使用该siunitx
包在我的所有环境中自动放置千位分隔符tabular
。
它工作正常,但如果有列标题则不行。这个看似无害的 MWE 编译失败,并出现一个非常奇怪的错误:
\documentclass{article}
\usepackage[group-separator={,}]{siunitx}
% Adds the S column for formatting numbers like 10,000
\begin{document}
\begin{tabular}{llSS}
& & Trade Value & Estimation Error \\
& & (\$US M) & (\$US M) \\
USA & GBR & 15574 & -5753 \\
GBR & USA & 15668 & -4127 \\
USA & JPN & 4261 & 3092 \\
GBR & LUX & 1590 & 2766 \\
\end{tabular}
\end{document}
我从以下问题中了解到这答案是这样做multicolumn{1}{c}{My Header}
。
鉴于我的所有表格都有标题,这似乎很无聊。
所有替代方案似乎都涉及将每个数字放入类似 的环境中\num
。如果您的表很大,这显然根本不是解决方案。
是否有一个包可以将千位分隔符放入我的表格中,tabulars
而不需要multicolumn
标题或\num{}
表格中每个数字周围的东西?
答案1
通过将内容括在花括号中,S
可以轻松将内容置于类型列的标题单元格中。当然,打字速度{...}
要快得多\multicolumn{1}{c}{...}
,对吧?
为了正确地将数字材料置于第三列和第四列的中心,您可能需要分别用和替换基本S
声明。最后,我将添加选项,以便将 用作千位分隔符应用于S[table-format=5.0]
S[table-format=-4.0]
group-minimum-digits=4
,
全部表中的数字。
\documentclass{article}
\usepackage[group-separator={,},
group-minimum-digits = 4] % default is 5
{siunitx} % Adds the S column type
\begin{document}
\begin{tabular}{ll S[table-format=5.0] S[table-format=-4.0]}
& & {Trade Value} & {Estimation Error} \\
& & {(\$US M)} & {(\$US M)} \\[1ex]
USA & GBR & 15574 & -5753 \\
GBR & USA & 15668 & -4127 \\
USA & JPN & 4261 & 3092 \\
GBR & LUX & 1590 & 2766 \\
\end{tabular}
\end{document}