我有以下KableExtra
使用 中的包生成的 Latex 表R
。我现在要做的是使所有列具有相同/固定宽度并按小数对齐。第二个不支持,KableExtra
因此我需要直接在 Latex 中执行此操作。该siunitx
包似乎是此操作的不错选择,但我无法让它工作。
\documentclass[12pt,a4paper]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{float}
\usepackage{siunitx}
\begin{document}
\begin{table}[H]
\centering
\begin{tabular}{ccccccccc}
\toprule
\multicolumn{1}{c}{ } & \multicolumn{4}{c}{Cumulative change} & \multicolumn{4}{c}{Marginal change} \\
\cmidrule(lr){2-5} \cmidrule(lr){6-9}
${k}$ & ${(Cons.)}$ & ${Spread_t}$ & ${\overline{R}^2}$ & ${SEE}$ & ${(Cons.)}$ & ${Spread_t}$ & ${\overline{R}^2}$ & ${SEE}$\\
\midrule
$1$ & $1.76^{**}$ & $2.09^{**}$ & $0.18$ & $4.05$ & $1.76^{**}$ & $2.09^{**}$ & $0.18$ & $4.05$\\
& $(0.56)$ & $(0.40)$ & & & $(0.56)$ & $(0.40)$ & & \\
$2$ & $1.73^{**}$ & $2.06^{**}$ & $0.28$ & $3.02$ & $1.78^{**}$ & $2.06^{**}$ & $0.17$ & $4.06$\\
& $(0.39)$ & $(0.29)$ & & & $(0.52)$ & $(0.39)$ & & \\
$8$ & $2.65^{**}$ & $0.96^{**}$ & $0.18$ & $1.70$ & $ 4.21^{**}$ & $-0.59 $ & $0.00$ & $4.45$\\
& $(0.26)$ & $(0.16)$ & & & $(0.64)$ & $(0.53)$ & & \\
$12$ & $3.31^{**}$ & $0.35^{*}$ & $0.04$ & $1.39$ & $ 4.52^{**}$ & $-0.93^{**}$ & $0.07$ & $2.66$\\
& $(0.19)$ & $(0.14)$ & & & $(0.32)$ & $(0.30)$ & & \\
\bottomrule
\multicolumn{9}{l}{\textit{Note: }}\\
\multicolumn{9}{l}{Robust standard errors in parentheses.}\\
\multicolumn{9}{l}{$^{*}$ $p < 0.05$, $^{**}$ $p < 0.01$ in a two-tailed test.}\\
\end{tabular}
\end{table}
\end{document}
我尝试使用 来实现固定列宽*{9}{S[table-column-width = 2 cm]
,但是这给了我很多“!额外的},或忘记了$。”类型的错误。
为了对齐,我尝试做出一些事情这以及其他答案和siunutx
手册,但我遇到了一大堆错误和问题,例如我的重要星号消失了等等。我想将所有列居中,但按小数点对齐。前几列应按隐式小数点对齐。
谢谢!
答案1
使用S
包中的列类型siunitx
:
(红线表示文本边框)
我还将使用threepartablex
包来更简单地编写表格注释(...\tnote{**}
而不是$...^{**}$
)。它还\note
为tablenotes
环境提供了命令:
\documentclass[12pt,a4paper]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage[referable]{threeparttablex} % <--- for \note, \source
\usepackage{siunitx}
\begin{document}
\begin{table}[htb]
\centering
\begin{threeparttable}
\caption{Table title}
\label{tab:statistic}
\begin{tabular*}{\linewidth}{@{\hskip\tabcolsep\extracolsep{\fill}}
c *{8}{S[table-format=1.2,
input-symbols={( )},
table-space-text-post={**}
]}}
\toprule
\multicolumn{1}{c}{ }
& \multicolumn{4}{c}{Cumulative change}
& \multicolumn{4}{c}{Marginal change} \\
\cmidrule(lr){2-5} \cmidrule(lr){6-9}
${k}$ & {(Cons.)} & {Spread$_t$} & {$\overline{R}^2$}& {SEE}
& {(Cons.)} & {Spread$_t$} & {$\overline{R}^2$}& {SEE} \\
\midrule
1 & 1.76\tnote{**} & 2.09\tnote{**} & 0.18 & 4.05
& 1.76\tnote{**} & 2.09\tnote{**} & 0.18 & 4.05 \\
& (0.56) & (0.40) & &
& (0.56) & (0.40) & & \\
2 & 1.73\tnote{**} & 2.06\tnote{**} & 0.28 & 3.02
& 1.78\tnote{**} & 2.06\tnote{**} & 0.17 & 4.06 \\
& (0.39) & (0.29) & &
& (0.52) & (0.39) & & \\
\bottomrule
\end{tabular*}
\begin{tablenotes}[para, flushleft]\footnotesize
\note: Robust standard errors in parentheses.\\
\item[*] $p < 0.05$,
\item[**] $p < 0.01$ in a two-tailed test.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
编辑:
我错过了所有列应具有相同宽度的要求。例如,可以通过使用tabularx
表格环境来实现,其中列标题使用\mcx
序言中定义的命令:
\newcommand\mcx[2]{\multicolumn{1}{>{\centering\arraybackslash}X}{#1}}
在我看来,这个要求并不能产生更好看的表格:
\documentclass[12pt,a4paper]{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{booktabs, tabularx}
\newcommand\mcx[1]{\multicolumn{1}{>{\centering\arraybackslash}X}{#1}}
\usepackage[referable]{threeparttablex}
\usepackage{siunitx}
\begin{document}
\begin{table}[htb]
\centering
\sisetup{table-format=1.2, input-symbols={( )}}
\begin{threeparttable}
\caption{Table title}
\label{tab:statistic}
\begin{tabularx}{\linewidth}{@{\hskip\tabcolsep\extracolsep{\fill}}
>{\centering\arraybackslash}X
*{2}{S[table-space-text-post={**}]}
*{2}{S}
*{2}{S[table-space-text-post={**}]}
*{2}{S}
}
\toprule
\multicolumn{1}{c}{ }
& \multicolumn{4}{c}{Cumulative change}
& \multicolumn{4}{c}{Marginal change} \\
\cmidrule(lr){2-5} \cmidrule(lr){6-9}
${k}$ & \mcx{(Cons.)} & \mcx{Spread$_t$}
& \mcx{$\overline{R}^2$} & {SEE}
& \mcx{(Cons.)} & \mcx{Spread$_t$}
& \mcx{$\overline{R}^2$} & \mcx{SEE} \\
\midrule
1 & 1.76\tnote{**} & 2.09\tnote{**} & 0.18 & 4.05
& 1.76\tnote{**} & 2.09\tnote{**} & 0.18 & 4.05 \\
& (0.56) & (0.40) & &
& (0.56) & (0.40) & & \\
2 & 1.73\tnote{**} & 2.06\tnote{**} & 0.28 & 3.02
& 1.78\tnote{**} & 2.06\tnote{**} & 0.17 & 4.06 \\
& (0.39) & (0.29) & &
& (0.52) & (0.39) & & \\
\bottomrule
\end{tabularx}
\begin{tablenotes}[para, flushleft]\footnotesize
\note Robust standard errors in parentheses.\\
\item[*] $p < 0.05$,
\item[**] $p < 0.01$ in a two-tailed test.
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}