siunitx 表格列中的居中列标题

siunitx 表格列中的居中列标题

这张包含一些大数字的表格中,小数点上方居中的列标题在我看来很奇怪。而且,列似乎也有点太宽了。

在此处输入图片描述

我在这里尝试了其他答案和软件包文档,但收效甚微。也许我看得不够仔细 - 所以寻求帮助。

这是MWE:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{input-ignore={,},input-decimal-markers={.},group-separator={,}}

\begin{document}
\begin{tabular}{lSSS}
\toprule
          &            &            & \multicolumn{1}{c}{Natural} \\
Time unit & \multicolumn{1}{c}{Births} & \multicolumn{1}{c}{Deaths} & \multicolumn{1}{c}{increase} \\ 
\midrule
Year  &    134,176,254 &   56,605,700 &    77,570,553 \\
Month &     11,181,355 &    4,717,142 &    6,464,213 \\
Day   &        367,606 &      155,084 &       212,522 \\
Minute&            255 &          108 &           148 \\
Second&            4.3 &          1.8 &           2.5 \\
\bottomrule
\end{tabular}
\end{document}

答案1

您需要知道siunitx小数点分隔符(对齐点)左右各有多少位数字。 键table-format可以解决问题。

还要注意的是,这里用一个括号组就足以转义标题文本。\multicolumn只有在特殊情况下才需要此解决方案。

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{input-ignore={,},input-decimal-markers={.},group-separator={,}}

\begin{document}
\begin{tabular}{lS[table-format=9.1]*2{S[table-format=8.1]}}
\toprule
          &             &            & {Natural}  \\
Time unit & {Births}    & {Deaths}   & {increase} \\
\midrule
Year      & 134,176,254 & 56,605,700 & 77,570,553 \\
Month     &  11,181,355 &  4,717,142 &  6,464,213 \\
Day       &     367,606 &    155,084 &    212,522 \\
Minute    &         255 &        108 &        148 \\
Second    &         4.3 &        1.8 &        2.5 \\
\bottomrule
\end{tabular}
\end{document}

该设置table-format=9.1表示对齐点前有 9 位数字,对齐点后有 1 位数字。其他列也类似。我还*<num>{<col-spec>}对重复的公共列使用了符号来减少重复。

在此处输入图片描述

相关内容