多列表格之间的间距

多列表格之间的间距

我想生成一个包含两个标题行的表格,顶行包含多列。我想将某些列分组,并在它们之间留出间距,因此我使用了@{\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}

extracolsep 示例

相关内容