siunitx 列中的星号和不同整数部分未对齐

siunitx 列中的星号和不同整数部分未对齐

在以下 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$ $命令中设置数字。

到目前为止情况如下:

在此处输入图片描述

相关内容