使用 siunitx 将表格中的数字条目完全左对齐

使用 siunitx 将表格中的数字条目完全左对齐

我正在使用该siunitx包以及该booktabs包来制作一张桌子。

这是我的输出:

输出

表(一)使用表格规范llll(即不使用siunitx)。表(一)看起来很棒,只是我想让 +0.2 和 -0.4 的小数点对齐。

为了做到这一点,表(b),我使用了表格规范lSSS并使用了\sisetup{table-number-alignment=left}。现在小数点对齐了,但我希望最后两列中的数字完全左对齐(与k_{\theta}'s 齐平),因为它们都是正数。我该怎么做?

这是我的代码:

\documentclass{article}
\usepackage{siunitx,booktabs,subcaption}
\DeclareSIUnit{\calorie}{cal}

\begin{document}

\begin{table}

  \begin{subtable}{\textwidth}
    \caption{}
    \begin{tabular}{llll}
      \toprule
      & {$q$ (\si{\elementarycharge})} & {$k_{\theta}$ (\si{\kilo\calorie\per\mole})} & {$k_{\theta}$ (\si{\kilo\joule\per\mole})}\\
      \midrule
      compound A & +0.2 & 0.066 & 0.276144\\
      compound B & -0.4 & 0.14 & 0.585760\\
      \bottomrule
    \end{tabular}
  \end{subtable}

  \vspace*{16pt}

  \begin{subtable}{\textwidth}
    \caption{}
    \sisetup{table-number-alignment=left}
    \begin{tabular}{lSSS}
      \toprule
      & {$q$ (\si{\elementarycharge})} & {$k_{\theta}$ (\si{\kilo\calorie\per\mole})} & {$k_{\theta}$ (\si{\kilo\joule\per\mole})}\\
      \midrule
      compound A & +0.2 & 0.066 & 0.276144\\
      compound B & -0.4 & 0.14 & 0.585760\\
      \bottomrule
    \end{tabular}
  \end{subtable}

\end{table}

\end{document}

答案1

借助table-number-alignment与适当的结合table-format,您可以实现以下输出:

在此处输入图片描述

\documentclass{article}
\usepackage{siunitx,booktabs}
\DeclareSIUnit{\calorie}{cal}

\begin{document}

\begin{table}
    \begin{tabular}{l
                    S[table-format=-1.1,table-number-alignment=left]
                    S[table-format=1.3,table-number-alignment=left]
                    S[table-format=1.6,table-number-alignment=left]}
      \toprule
      & {$q$ (\si{\elementarycharge})} & {$k_{\theta}$ (\si{\kilo\calorie\per\mole})} & {$k_{\theta}$ (\si{\kilo\joule\per\mole})}\\
      \midrule
      compound A & +0.2 & 0.066 & 0.276144\\
      compound B & -0.4 & 0.14 & 0.585760\\
      \bottomrule
    \end{tabular}

\end{table}

\end{document}

答案2

需要指定每列数字的格式;简单S规范应用的默认值不适合您的情况。

另一方面,数字为正数这一事实似乎与对齐无关。

我将标题分成两行,一行用于符号,一行用于单位。

\documentclass{article}
\usepackage{siunitx,booktabs}
\DeclareSIUnit{\calorie}{cal}

\begin{document}

\begin{table}
\centering

\begin{tabular}{
 @{}
 l
 S[table-format=-1.1,retain-explicit-plus,table-number-alignment=left]
 S[table-format=1.3,table-number-alignment=left]
 S[table-format=1.6,table-number-alignment=left]
 @{}
}
\toprule
& {$q$ (\si{\elementarycharge})}
& {$k_{\theta}$ (\si{\kilo\calorie\per\mole})}
& {$k_{\theta}$ (\si{\kilo\joule\per\mole})} \\
\midrule
compound A & +0.2 & 0.066 & 0.276144\\
compound B & -0.4 & 0.14 & 0.585760\\
\bottomrule
\end{tabular}

\bigskip

\begin{tabular}{
 @{}
 l
 S[table-format=-1.1,retain-explicit-plus]
 S[table-format=1.3]
 S[table-format=1.6]
 @{}
}
\toprule
& {$q$}
& {$k_{\theta}$}
& {$k_{\theta}$} \\
& {(\si{\elementarycharge})}
& {(\si{\kilo\calorie\per\mole})}
& {(\si{\kilo\joule\per\mole})} \\
\midrule
compound A & +0.2 & 0.066 & 0.276144\\
compound B & -0.4 & 0.14 & 0.585760\\
\bottomrule
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

在第二个示例中,大片白色空间消失了。

相关内容