我使用siunitx
Stata 的 来将表格内容按小数对齐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}
如果您在列中使用自定义命令(此处\sym
)S
,则确实需要对其进行引擎保护。为此,\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}