我想生成一个包含两个标题行的表格,顶行包含多列。我想将某些列分组,并在它们之间留出间距,因此我使用了@{\hskip}
。但问题是,这会增加每个多列中最右侧列的宽度,因此标题不再位于其跨越的列的中心。
我如何修复下面示例表中的对齐方式,以便Col C
标题位于其下方四列的中间?
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}ll@{\hskip6em}l@{\hskip6em}llll@{\hskip6em}llll@{}} \toprule
Col A &Col B & Col C & \multicolumn{4}{c}{Col D}& \multicolumn{4}{c}{Col E} \\
& & & i & ii & iii & iv & i & ii & iii & iv \\ \midrule
ex1 & 100 & 200 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ \bottomrule
\end{tabular}
\end{document}
答案1
一种选择是使用\extracolsep
命令而不是\hskip
,这会在下一列的左侧而不是当前列的末尾添加空格。但是,由于这会影响所有后续列,因此您需要在下一列说明符之后将其重新设置为零,和,因为这意味着使用@
,以避免抑制那里的所有空间,手动添加一个空间2\tabcolsep
(对于该列右侧的空间和下一列左侧的空间):
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}ll@{\hskip6em}l@{\hskip6em}llll@{\extracolsep{6em}}l@{\extracolsep{0pt}\hspace{2\tabcolsep}}lll@{}} \toprule
Col A &Col B & Col C & \multicolumn{4}{c}{Col D}& \multicolumn{4}{c}{Col E} \\
& & & i & ii & iii & iv & i & ii & iii & iv \\ \midrule
ex1 & 100 & 200 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ \bottomrule
\end{tabular}
\end{document}