Siunitx:包含重要星号时出现过满的水平盒警告

Siunitx:包含重要星号时出现过满的水平盒警告

我使用siunitxStata 的 来将表格内容按小数对齐estout,如下面的 MWE 所示。我认为输出是完美的,数字在小数点上对齐,并在“ß/SE”和“Margin”列下“伪”居中。

问题是我收到overfull hbox每个单元格的警告。我尝试过table-space-text-post添加星号,但没有任何效果。有人能解决这个问题吗?

\documentclass{scrartcl}

\usepackage{lmodern}

\newcommand{\sym}[1]{\rlap{#1}}

\usepackage{siunitx}
\sisetup{
        detect-mode,
        tight-spacing               = true,
        group-digits                = false ,
        input-signs             = ,
        input-symbols               = ( ) - + *,
        input-open-uncertainty  = ,
        input-close-uncertainty = ,
        table-align-text-post   = false,
        % table-space-text-pre  = -,
        % table-space-text-post = *
        }

\usepackage{booktabs}

\begin{document}
\begin{tabular*}
{\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{3}{S[table-format=1.3,table-column-width=11mm]S[table-format=1.3,table-column-width=11mm]}}
\toprule
&\multicolumn{2}{c}{(1)}                    &\multicolumn{2}{c}{(2)}                    &\multicolumn{2}{c}{(3)}                    \\
&\multicolumn{2}{c}{Column One}              &\multicolumn{2}{c}{Column Two X}&\multicolumn{2}{c}{Column Three XX}\\
&\multicolumn{1}{c}{$\beta$ / SE}         &\multicolumn{1}{c}{Margin}         &\multicolumn{1}{c}{$\beta$ / SE}         &\multicolumn{1}{c}{Margin}         &\multicolumn{1}{c}{$\beta$ / SE}         &\multicolumn{1}{c}{Margin}         \\
\midrule
\hspace{0.1cm} 18--24&      -0.176         &      -0.044         &      -0.256         &      -0.047         &      -0.820\sym{***}&      -0.101\sym{***}\\
                    &     (0.152)         &                     &     (0.188)         &                     &     (0.310)         &                     \\
\hspace{0.1cm} 25--34&       0.067         &       0.017         &       0.047         &       0.009         &      -0.046         &      -0.006         \\
\bottomrule
\addlinespace[.75ex]
\end{tabular*}
\end{document}

答案1

如果要在列中的数字部分后保留空间S,则需要使用 保留适当的空间。由于包将其视为“特殊”,因此table-space-text-post会出现轻微的尴尬,因此您需要在此处使用括号:array*

\documentclass{article}

\usepackage{siunitx}

\begin{document}
\begin{tabular}{S[ table-format = -1.3, table-space-text-post = {***}]}
  -0.101***
\end{tabular}

\end{document}

如果您在列中使用自定义命令(此处\symS,则确实需要对其进行引擎保护。为此,\NewDocumentCommand来自xparse被推荐:

\documentclass{article}

\usepackage{siunitx}

\NewDocumentCommand{\sym}{m}{#1}

\begin{document}
\begin{tabular}{S[table-format = -1.3, table-space-text-post = \sym{***}]}
  -0.101\sym{***}
\end{tabular}

\end{document}

相关内容