我有一张包含三列的回归表。一列为名称,一列为估计值,一列为标准误差。显示估计值和标准误差的两列以变量名称为标题。我借助对齐单元格中的数字\dcolumn
。
问题是,如果表格中有一段较长的文本\multicolumn
,表格的最后一列会被拉伸。这个问题是众所周知的,并且已经有解决方案。这里和这里。
我只是不明白如何将它们应用到具有对齐列的表中。
以下是带有垂直条的 MWE,可以更好地说明宽度:
\documentclass{article}
\usepackage{tabularx}
\usepackage{dcolumn}
\usepackage{booktabs}
\begin{document}
\begin{table}[t]
\caption{MWE}
\centering
\begin{tabular}{l|D{.}{.}{3}|D{.}{.}{3}}
\toprule
& \multicolumn{2}{c}{Long name of dependent variable} \\
& \multicolumn{1}{c}{$\beta$} & \multicolumn{1}{c}{\textit{SE}} \\
\midrule
x1 & 0.020 & (0.009) \\
x2 & -0.345 & (0.123) \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
我希望看到的是这种对齐方式、相等的列宽和居中的列标题:
...但变量名称与第一个表相同。
笔记:我不坚持使用\dcolumn
或任何其他软件包。所有能用(并且不会与其他基本软件包产生问题)的软件包都可以。
答案1
其中siunitx
和 的p{...}
列类型为\multicolumn{2}{..}{...}
:
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}[t]
\sisetup{input-symbols = (),
table-column-width=13mm,
table-format=-1.3}
\caption{MWE}
\centering
\begin{tabular}{l SS}
\toprule
& \multicolumn{2}{>{\centering\arraybackslash}p{\dimexpr26mm+2\tabcolsep}}{Long name of dependent variable} \\
& {$\beta$} & {\textit{SE}} \\
\midrule
x1 & 0.020 & (0.009) \\
x2 & -0.345 & (0.123) \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
既然你说了任何包,这里有一个使用的解决方案卡路里:
\documentclass{article}
\usepackage{cals, caption}
\let\nc=\nullcell % Shortcuts
\let\sc=\spancontent
\begin{document}
\begin{table*}
\caption{MWE}
\footnotesize
\begin{calstable}[c]
% Defining columns relative to each other and relative to the margins
\colwidths{{\dimexpr(\columnwidth)/14\relax}
{\dimexpr(\columnwidth)/9\relax}
{\dimexpr(\columnwidth)/9\relax}
}
% The tabular fills the text area if sum of all columns is 6
% Set up the tabular
\makeatletter
\def\cals@framers@width{0.8pt} % Outside frame rules, reduce if the rule is too heavy
\def\cals@framecs@width{0pt}
\def\cals@bodyrs@width{0.6pt}
\def\cals@cs@width{0pt} % Inside rules, reduce if the rule is too heavy
\def\cals@rs@width{0.6pt}
\def\cals@bgcolor{}
\def\bb{\ifx\cals@borderB\relax % Botton border switch (off-on)
\def\cals@borderB{0pt}
\else \let\cals@borderB\relax\fi}
\def\lp{\ifdim\cals@paddingL=0.0pt\relax % Left padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingL}{0pt}\fi}
\def\rp{\ifdim\cals@paddingR=0.0pt\relax % Right padding switch (off-on)
\cals@setpadding{Ag}
\else \setlength{\cals@paddingR}{0pt}\fi}
% R1H1
\thead{%
\brow
\bb\lp\cell{}\lp\bb
\lp\nc{ltb}\lp
\lp\rp\nc{rtb}\alignC\sc{Long name of dependent variable}\rp\lp
\erow
%R2H2
\brow
\alignL\cell{}\lp
\alignC\cell{\vfil $\beta$}
\rp\alignC\cell{\vfil\textit{SE}}\rp\bb
\erow
}
\tfoot{\lastrule\strut}
%R3B2
\brow
\lp\alignL\cell{\vfil X1}\lp
\alignR\cell{\vfil 0.020}
\rp\alignR\cell{\vfil (0.009)}\rp
\erow
%R4B3
\brow
\bb\lp\alignL\cell{\vfil X2}\lp
\alignR\cell{\vfil $-$0.345}
\rp\alignR\cell{\vfil (0.123)}\rp\bb
\erow
\makeatletter
\end{calstable}\par
\end{table*}
\end{document}