我使用该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}