表格间距和对齐,使用 cmidrule 进行多行

表格间距和对齐,使用 cmidrule 进行多行

列 (1) 和 (2) 中的“测试列”和“较宽列”/“较窄”之间有多余的空格。我尝试使用多行包使两行之间没有空格,并将文本对齐到底部。我无法让它工作...有什么想法吗?

在此处输入图片描述

\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D..{#1}}
\usepackage{multirow}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}

\begin{table}[h]
\centering\small
\caption{Test table}\label{table:test}
\begin{tabular}{l *{5}{d{2.4}}}
\toprule
& \mc{Test column} & \mc{Test column} & \multicolumn{3}{c}{XXXXXXX} \\
\cmidrule{4-6}
&\mc{wider column} & \mc{narrow} & \mc{AAAA} & \mc{AAAA} & \mc{AAAA} \\
& \mc{(1)} & \mc{(2)} & \mc{(3)} & \mc{(4)} & \mc{(5)} \\
\midrule
Treatment & -0.115^{***} & -0.333^{***} & -0.220^{***} & -0.573^{***} & -0.228^{**} \\ 
 & (0.005) & (0.006) & (0.006) & (0.009) & (0.009) \\ 
\bottomrule
\end{tabular}
\end{table}

答案1

multirow这是使用和的解决方案makecell。可以使用第一个参数(行数)来微调文本的垂直位置:可以为其赋予一个分数值。

Aldo 我添加了caption包以便上面的标题和表格之间有更合理的间距:

\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D..{#1}}
\usepackage{multirow, makecell, caption}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\newcommand\mr[2]{\multicolumn{1}{c}{\multirow{#1}{*}{\makecell{#2}}}}

\begin{document}

\begin{table}[h]
\centering\small
\caption{Test table}\label{table:test}
\begin{tabular}{l *{5}{d{2.4}}}
\toprule
& \mr{2.87}{Test column\\wider column} & \mr{2.87}{Test column\\narrow} & \multicolumn{3}{c}{XXXXXXX} \\
\cmidrule(lr){4-6}
& & & \mc{AAAA} & \mc{AAAA} & \mc{AAAA} \\
& \mc{(1)} & \mc{(2)} & \mc{(3)} & \mc{(4)} & \mc{(5)} \\
\midrule
Treatment & -0.115^{***} & -0.333^{***} & -0.220^{***} & -0.573^{***} & -0.228^{**} \\
 & (0.005) & (0.006) & (0.006) & (0.009) & (0.009) \\
\bottomrule
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

我刚刚想到了一个替代解决方案...我\cmidrule用替换\cline,XXXXX 和 AAAA 之间的间距就消失了,因此无需调整 (1) 和 (2) 的间距。只是另一种方法...

答案3

我的想法是粉碎这两行单元格:

\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{caption}

\NewDocumentCommand{\tworowcell}{m}{%
  \smash[b]{\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}%
}
\NewDocumentCommand{\tn}{m}{\ensuremath{{}^{#1}}}

\begin{document}

\begin{table}[htp]
\centering

\caption{Test table}\label{table:test}

\sisetup{
  table-format=-1.3,
  table-space-text-post={\tn{***}},
  input-symbols={()},
}
\addtolength{\tabcolsep}{-0.5pt}

\begin{tabular}{ @{} l *{5}{S} @{} }
\toprule
& \tworowcell{Test column \\ wider column}
& \tworowcell{Test column \\ narrow }
& \multicolumn{3}{c}{XXXXXXX} \\
\cmidrule(l){4-6}
& & & {AAAA} & {AAAA} & {AAAA} \\
& {(1)} & {(2)} & {(3)} & {(4)} & {(5)} \\
\midrule
Treatment & -0.115\tn{***} & -0.333\tn{***} & -0.220\tn{***} & -0.573\tn{***} & -0.228\tn{**} \\ 
 & (0.005) & (0.006) & (0.006) & (0.009) & (0.009) \\ 
\bottomrule
\end{tabular}

\end{table}

\end{document}

您也可以使用dcolumn,但\tworowcell应该将其封装在中\multicolumn{1}{c}

在此处输入图片描述

相关内容