我想创建一个包含三对列的表格。这些列对应该能够根据不同列对之间的水平距离进行识别。每对列由一列绝对数字和一列相对数字(百分比)组成。绝对数字和相对数字都是整数,但位数不同,数字应该右对齐。基本上,我有这样的:
\documentclass{scrreprt}
\usepackage{booktabs}
\begin{document}
\begin{table}
\centering
\begin{tabular}{l@{\hskip 0.25in}
r@{\hskip 0.05in}r@{\hskip 0.25in}
r@{\hskip 0.05in}r@{\hskip 0.25in}
r@{\hskip 0.05in}r @{\hskip 0.25in}
}
\toprule
% & \multicolumn{2}{c}{Short} & \multicolumn{2}{c}{Short} & \multicolumn{2}{c}{LongLongLongLong}\\
\midrule
A& 777& (80\%)&265&(16\%)& 330&(80\%)\\
B& 409& (72\%) &999&(64\%) &163&(57\%) \\
C& 208&(100\%) &54&(100\%) &66&(100\%)\\
D &218& (90\%)& 98&(73\%)&84&(77\%)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
只要不显示标题,我想要的输出就与代码生成的输出基本相同。但是,如果显示标题,“短”标题不会在列对上居中,更糟糕的是,在“长长长长”标题的情况下,最后两列之间的空间会扩大。
我怎样才能让标题以列对为中心,并防止标题过长时分组列之间的空间被拉伸?例如,不依赖于使用单独的列来表示绝对数字和相对数字,但仍能满足我的要求的解决方案也是受欢迎的。
答案1
“短”标题看起来没有正确居中的原因在于指令
\multicolumn{2}{c}{Short}
将字符串置于定义为的两列的中心
@{\hskip 0.25in}r@{\hskip 0.05in}r
为了使“短”标题正确居中,您需要编写
\multicolumn{2}{@{}c@{\hskip0.25in}}{Short}
“LongLongLongLong”标题的问题在于它被分配了列类型c
,这不允许换行。如果你想保持这对列的整体宽度,你可以必须允许在标题单元格中出现一个或多个换行符。在下面的代码中,我建议使用居中版本的列类型p
。
\documentclass{scrreprt}
\usepackage{booktabs,array,ragged2e}
\newcolumntype{C}[1]{>{\Centering\arraybackslash}p{#1}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ l *{3}{@{\hskip0.25in}r@{\hskip 0.05in}r} }
\toprule
& \multicolumn{2}{@{}c@{\hskip0.25in}}{Short}
& \multicolumn{2}{@{}c@{\hskip0.25in}}{Short}
& \multicolumn{2}{@{\,}C{1cm}}{LongLong\-LongLong}\\
\midrule
A& 535& (97\%)&265&(96\%)& 250&(90\%)\\
B& 409& (72\%) &181&(64\%) &163&(57\%) \\
C& 108&(100\%) &54&(100\%) &54&(100\%)\\
D &208& (93\%)& 98&(88\%)&84&(75\%)\\
\bottomrule
\end{tabular}
\end{table}
\end{document}