我对 Latex 表和 dcolumn 包有疑问,希望您能帮助我解决此问题。我正在使用 dcolumn 包从小数点开始对齐回归结果。一切看起来都很好,但我还有一行包含字符串值(是、否等)。对于这些字符串,我使用 \multicolumn 命令将它们与列的其余部分居中对齐,但正如您在最小代码及其输出中所见,代码将它们与数字对齐,包括重要性星号,这就是字符串值被推得太靠右的原因。我该如何修改此代码,以便仍然使用相同的数值格式,但“是”、“否”值仅与数字居中对齐,不包括重要性星号?感谢您的帮助!
这是最小代码:
\documentclass[11pt]{article}
\usepackage{amssymb,amsmath,color,booktabs,dcolumn,caption}
\usepackage[left=1in, right=1in, top=1in, bottom=1in]{geometry}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\begin{document}
\begin{table}[h]\centering\small
\caption{Falsification Tests: Non-Fed-Regulated Firms}
\begin{tabular*}{\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{6}{d{2.6}}}
\toprule
&\multicolumn{1}{c}{(1)} &\multicolumn{1}{c}{(2)} &\multicolumn{1}{c}{(3)} &\multicolumn{1}{c}{(4)} &\multicolumn{1}{c}{(5)} &\multicolumn{1}{c}{(6)} \\
\midrule
Post $\times$ Small Non-Fin.& -0.026 & -0.042 & -0.046 & 0.066 & 0.050 & 0.041 \\
& (0.051) & (0.055) & (0.047) & (0.082) & (0.083) & (0.071) \\ \addlinespace
log Assets & & -0.185\sym{***}& -0.197\sym{***}& & -0.288\sym{***}& -0.304\sym{***}\\
& & (0.059) & (0.041) & & (0.083) & (0.084) \\
Other Controls & \multicolumn{1}{c}{{No}} &\multicolumn{1}{c}{No} &\multicolumn{1}{c}{Yes} &\multicolumn{1}{c}{No} &\multicolumn{1}{c}{No} &\multicolumn{1}{c}{Yes} \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}
输出结果如下:
答案1
我可以用S
定义的列类型和相关参数来获得你想要的东西siunitx
,它有更多的微调可能性。一种简化方法是,S
只需将列中的非数字内容括在一对括号中即可将其居中。我还简化了你的 定义\sym
和序言的某些部分,并用 tabularx
代替tabular*
。
\documentclass[11pt]{article}
\usepackage{amssymb, mathtools, xcolor, booktabs, dcolumn, caption, siunitx, tabularx}
\usepackage[margin=1in, showframe]{geometry}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\def\sym#1{\ensuremath{^{\mathrlap{#1}}}}
\begin{document}
\begin{table}[h]\centering\small
\sisetup{table-format = -1.3, table-number-alignment = center, table-space-text-pre = (, table-align-text-pre = false, table-space-text-post = {***}}
\setlength{\tabcolsep}{5pt}
\begin{tabularx}{\textwidth}{X*{6}{S}}
\toprule
& {(1)} & {(2)} & {(3)} & {(4)} & {(5)} & {(6)} \\
\midrule
Post $\times$ Small Non-Fin.& -0.026 & -0.042 & -0.046 & 0.066 & 0.050 & 0.041 \\
&{(}0.051{)} & {(}0.055{)} & {(}0.047{) }& {(}0.082{)} & {(}0.083{)} & {(}0.071{)} \\ \addlinespace
log Assets & & -0.185\sym{***}& -0.197\sym{***}& & -0.288\sym{***}& -0.304\sym{***}\\
& & {(}0.059{)} & {(}0.041{)} & &{(}0.083{)} & {(}0.084{)} \\
Other Controls & {No} & {No} & {Yes} & {No} & {No} & {Yes} \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
答案2
这个结果是否接近您所期望的结果?
编辑: 我做了以下改变:
- 增加整数位数,以补偿重要性星号的宽度
- 更正
\tabcolsep
表格主体现在适合表格宽度,这也使得能够将表格字体设置为正常大小 - 考虑米科在下面评论并定义新命令
\mc{...}
以缩短写作时间\multicolumn{1}{c}{...}
\documentclass[11pt]{article}
\usepackage{amssymb,amsmath,color,booktabs,dcolumn,caption}
\usepackage[left=1in, right=1in, top=1in, bottom=1in]{geometry}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}% <---
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\begin{document}
\begin{table}[h]
%\small
\setlength\tabcolsep{0pt}% <---
\caption{Falsification Tests: Non-Fed-Regulated Firms}
\label{tab:falsification-test}
\begin{tabular*}{\textwidth}{@{\hskip4pt\extracolsep\fill}l*{6}{d{4.6}}@{\hskip4pt}}% <---
\toprule
& \mc{(1)} & \mc{(2)} & \mc{(3)} & \mc{(4)} & \mc{(5)} & \mc{(6)} \\
\midrule
Post $\times$ Small Non-Fin.
& -0.026 & -0.042 & -0.046 & 0.066 & 0.050 & 0.041 \\
& (0.051) & (0.055) & (0.047) & (0.082) & (0.083) & (0.071) \\
\addlinespace
log Assets
& & -0.185\sym{***} & -0.197\sym{***} & & -0.288\sym{***} & -0.304\sym{***} \\
& & (0.059) & (0.041) & & (0.083) & (0.084) \\
Other Controls
& \mc{{No}} & \mc{No} & \mc{Yes} & \mc{No} & \mc{No} & \mc{Yes} \\
\bottomrule
\end{tabular*}
\end{table}
\end{document}