在以下 MWE 中,测试统计列中的最后一个数字未与小数点分隔符对齐。尽管在列定义中明确定义了附加星号。我尝试了很多不同的选项,但无法让它正常工作。
\documentclass{article}
\usepackage{breqn}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\newcommand{\ColWidthTestResults}{0.12}
\footnotesize
\sisetup{table-parse-only}
\begin{center}
\begin{tabularx}{\textwidth}{>{\centering}X
>{\centering}p{0.005\textwidth}
S[table-format=3.2
, table-number-alignment = center
, table-space-text-post = {$^{***}$}
, table-space-text-pre = {$^{***}$}
, round-precision=2
, round-integer-to-decimal = true
]
>{\centering}p{0.005\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
}
\toprule
rank & & {test statistic} & & 10\% & 5\% & 1\% \tabularnewline
\cmidrule{1-1} \cmidrule{3-3} \cmidrule{5 - 7}
r $\leq$ 2 & & \num{2.88} & & 21.03 & 23.60 & 28.94\tabularnewline
r $\leq$ 1 & & \num{23.58} & & 42.20 & 45.54 & 52.27\tabularnewline
r $=$ 0 & & \num{236.20}{$^{***}$} & & 67.02 & 71.08 & 79.11 \tabularnewline
\bottomrule
\end{tabularx}\caption{Misaligned decimal separator}
\end{center}
\end{table}
\end{document}
理想情况下,所有数字都应在小数点分隔符上对齐,无论有多少个星号或小数的整数部分有多长。
答案1
这代码对我来说运行良好。罪魁祸首是\sisetup{table-parse-only}
。我借此机会对您的代码做了一些更正。特别是不要center
在里面使用环境 table
:它会增加不必要的垂直间距。请改用\centering
。
\documentclass{article}
\usepackage{breqn}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{table}[!htb]
\newcommand{\ColWidthTestResults}{0.12}
\footnotesize
\centering
\begin{tabularx}{\textwidth}{>{\centering $}X<{$}S[table-format=3.2
, table-number-alignment = center
, table-space-text-post = {$^{***}$}
, table-space-text-pre = {$^{***}$}
, round-precision=2
, round-integer-to-decimal = true
]
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
}
\toprule
\mathrm{rank} & {test statistic} & 10\,\% & 5\,\% & 1\,\% \tabularnewline%
\cmidrule(lr){1-1} \cmidrule(lr){2-2} \cmidrule(lr){3-5}
r \leq 2 & 2.88 & 21.03 & 23.60 & 28.94\tabularnewline
r \leq 1 & 23.58 & 42.20 & 45.54 & 52.27\tabularnewline
r = 0 & 236.20 {$^{***}$} & 67.02 & 71.08 & 79.11 \tabularnewline
\bottomrule
\end{tabularx}
\caption{Misaligned decimal separator}
\end{table}
\end{document}
答案2
说实话,我不太明白你为什么要\num{}
在S
-column 中使用命令。也许我不明白你想做什么。
您想实现以下效果吗?使用对齐和一些星号对数值进行舍入?
% arara: pdflatex
\documentclass{article}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\newcommand{\ColWidthTestResults}{0.12}
\footnotesize
\begin{tabularx}{\textwidth}{>{\centering}X
S[table-format=3.2
,table-space-text-post = {***}
,round-mode=places
,round-precision=2
,table-align-text-post = false
]
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
>{\centering}p{\ColWidthTestResults\textwidth}
}
\toprule
rank & {test statistic} & 10\,\% & 5\,\% & \SI{1}{\percent} \tabularnewline
\cmidrule(r){1-1} \cmidrule{2-2} \cmidrule(l){3 - 5}
r $\leq$ 2 & 2.88 & 21.03 & 23.60 & 28.94\tabularnewline
r $\leq$ 1 & 23.58 & 42.20 & 45.54 & 52.27\tabularnewline
r $=$ 0 & 236.20111111*** & 67.02 & 71.08 & 79.11 \tabularnewline
\bottomrule
\end{tabularx}\caption{Perfectly aligned decimal separator}
\end{table}
\end{document}
我建议你不要做这些tabularx
事情和调整字体大小,但我不知道你的整个表格是什么样子。当然,我倾向于将最后三列S
也设置为 -columns。或者至少在\num
或$ $
命令中设置数字。
到目前为止情况如下: