使用 siunitx 时,方括号间距奇怪,表格中添加了 .00

使用 siunitx 时,方括号间距奇怪,表格中添加了 .00

我使用该siunitx包将表格列中的数字对齐到它们的“点”。这曾经工作得很好。当我重新编译旧的 TeX 文件时,数字周围的方括号突然变得很奇怪,列标题中的数字(我使用数字来标记列)从 (1) 变为 (1.00)。

siunitx下面我展示了带有奇怪括号间距和人为添加的 .00 的当前结果。我还展示了一个不使用siunitx且看起来正常的表格(但没有将列中的数字对齐到小数点)。

问题:是否有更新来siunitx改变其工作方式?如何避免方括号的奇怪间距以及在列标题中添加零,同时将数字对齐到点处?

在此处输入图片描述

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{output-exponent-marker = \text{e}, 
         exponent-product={}, 
         retain-explicit-plus, 
         input-open-uncertainty  = , 
         input-close-uncertainty = , 
         table-align-text-pre    = false,
         table-align-text-post = false, 
         round-mode=places, 
         round-precision=2, 
         table-space-text-pre = (, table-space-text-post   = )}

\begin{document}

\begin{table}
\begin{tabular}{l S @{} S @{} S @{} S @{} S @{} S @{} S @{} S @{} S} 
& (1) & (2) & (3) & (3)--(1) & & (4) & (5) & (6) & (6)--(4) \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}


\begin{table}
\begin{tabular}{llllllllll}
& (1) & (2) & (3) & (3)--(1) & & (4) & (5) & (6) & (6)--(4) \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}

\end{document}

答案1

简短回答:是的,最近发生了很多变化siunitx。在这种情况下,为了避免顶行的小数化,请将单元格内容括在括号中。

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{output-exponent-marker = \text{e}, 
         exponent-product={}, 
         retain-explicit-plus, 
         input-open-uncertainty  = , 
         input-close-uncertainty = , 
         table-align-text-pre    = false,
         table-align-text-post = false, 
         round-mode=places, 
         round-precision=2, 
         table-space-text-pre = (, table-space-text-post   = )}

\begin{document}

\begin{table}
\begin{tabular}{l S @{} S @{} S @{} S @{} S @{} S @{} S @{} S @{} S} 
& {(1)} & {(2)} & {(3)} & {(3)--(1)} & & {(4)} & {(5)} & {(6)} & {(6)--(4)} \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}


\begin{table}
\begin{tabular}{llllllllll}
& (1) & (2) & (3) & (3)--(1) & & (4) & (5) & (6) & (6)--(4) \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

要指定括号的格式,请使用table-format选项S。当然,如果有多行,则S[table-format...]每列只能获得一行。

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{output-exponent-marker = \text{e}, 
         exponent-product={}, 
         retain-explicit-plus, 
         input-open-uncertainty  = , 
         input-close-uncertainty = , 
         table-align-text-pre    = false,
         table-align-text-post = false, 
         round-mode=places, 
         round-precision=2, 
         table-space-text-pre = (, table-space-text-post   = )}

\begin{document}

\begin{table}
\begin{tabular}{l S[table-format=2.2] @{} S[table-format=2.2] @{} 
  S[table-format=2.2] @{} S[table-format=3.2] @{} S[table-format=2.2] @{} 
  S[table-format=2.2] @{} S[table-format=2.2] @{} S[table-format=2.2] @{} 
  S[table-format=3.2]} 
& {(1)} & {(2)} & {(3)} & {(3)--(1)} & & {(4)} & {(5)} & {(6)} & {(6)--(4)} \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}


\begin{table}
\begin{tabular}{llllllllll}
& (1) & (2) & (3) & (3)--(1) & & (4) & (5) & (6) & (6)--(4) \\ \midrule
Row 1 & 0.96  & 0.60  & 0.45  & -0.50 &       & 0.69  & 0.84  & 0.64  & -0.05 \\ \midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] &       & [3.47] & [4.68] & [3.10] & [-0.59]
\end{tabular}
\end{table}

\end{document}

在此处输入图片描述

答案2

如果我使用 TeX Live 2020(以及siunitx版本 2)编译你的(第一个)表格,我会得到

在此处输入图片描述

这确实不是一个好的输出。这有点烦人,但为了获得精确的对齐,您需要设置每列的格式,并且标题应该用括号括起来。

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}

\sisetup{
  output-exponent-marker = \text{e}, 
  exponent-product={}, 
  retain-explicit-plus, 
  input-open-uncertainty  = , 
  input-close-uncertainty = , 
  table-align-text-pre    = false,
  table-align-text-post = false, 
  round-mode=places, 
  round-precision=2, 
}

\begin{document}

\begin{table}
% this is for this specific table
\sisetup{
  table-space-text-pre = (,
  table-space-text-post   = ),
}
\begin{tabular}{
  @{}
  l
  S[table-format=1.2]
  S[table-format=1.2]
  S[table-format=1.2]
  S[table-format=-1.2]
  S[table-format=1.2]
  S[table-format=1.2]
  S[table-format=1.2]
  S[table-format=-1.2]
  @{}
}
\toprule
& {(1)} & {(2)} & {(3)} & {(3)--(1)} & {(4)} & {(5)} & {(6)} & {(6)--(4)} \\
\midrule
Row 1 &  0.96  &  0.60  &  0.45  &  -0.50  &  0.69  &  0.84  &  0.64  &  -0.05 \\
\midrule
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] & [3.47] & [4.68] & [3.10] & [-0.59] \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

使用版本 2 编译上述内容,siunitx我得到

在此处输入图片描述

如果我尝试使用siunitx版本 3,结果就不那么好了,因为确实有些东西发生了变化。这是新代码:应该在 中指定括号table-format

\documentclass{article}

\usepackage{booktabs}
\usepackage{siunitx}

\sisetup{
  output-exponent-marker = \text{e}, 
  exponent-product={}, 
  retain-explicit-plus, 
  input-open-uncertainty  = , 
  input-close-uncertainty = , 
  table-align-text-pre    = false,
  table-align-text-post = false, 
  round-mode=places, 
  round-precision=2, 
}

\begin{document}

\begin{table}
\begin{tabular}{
  @{}
  l
  S[table-format={[1.2]}]
  S[table-format={[1.2]}]
  S[table-format={[1.2]}]
  S[table-format={[-1.2]}]
  S[table-format={[1.2]}]
  S[table-format={[1.2]}]
  S[table-format={[1.2]}]
  S[table-format={[-1.2]}]
  @{}
}
\toprule
& {(1)} & {(2)} & {(3)} & {(3)--(1)} & {(4)} & {(5)} & {(6)} & {(6)--(4)} \\
\midrule
Row 1 &  0.96  &  0.60  &  0.45  &  -0.50  &  0.69  &  0.84  &  0.64  &  -0.05 \\
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64] & [3.47] & [4.68] & [3.10] & [-0.59] \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

我还省略了一个\midrule没用的东西。

在此处输入图片描述

答案3

太长的评论了。对于这个特定的表并使用siunitx版本 3.0.22,MWE 可以是:

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}
    \begin{table}
\sisetup{table-format={[}1.2{]}}
\begin{tabular}{@{} l 
                    SSS 
                    S[table-format={[}-1.2{]}] 
                    SSS 
                    S[table-format={[}-1.2{]}] @{}}
    \toprule
      & {(1)}   & {(2)}  & {(3)} & {(3)--(1)} & {(4)}  & {(5)}  & {(6)}  & {(6)--(4)}\\
    \midrule
Row 1 &  0.96  &  0.60  &  0.45  &  -0.50     &  0.69  &  0.84  &  0.64  &  -0.05    \\
Row 2 & [3.93] & [2.75] & [1.93] & [-3.64]    & [3.47] & [4.68] & [3.10] & [-0.59]   \\
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

相关内容