带有多列的 booktabs:水平规则太短

带有多列的 booktabs:水平规则太短

我需要排版一份两栏文档(会议论文)并使用该multicol包。我希望插入一个表格,通常使用该booktabs包,因为它可以提供很好的间距。但是,在这种情况下,水平规则被截断了。有人知道问题是什么吗?

梅威瑟:

\documentclass[pdftex,10pt]{article}
\usepackage[letterpaper,margin=2.5cm,pdftex,showframe]{geometry}
\usepackage{booktabs}
\usepackage{multicol}
\pagestyle{empty}
\begin{document}
\begin{multicols}{2}
\begin{table*}
   \begin{tabular}{@{}ll rrrrr rrrrr@{}}
   \toprule
   \multicolumn{2}{@{}l}{Penalty} &\multicolumn{5}{c}{100 xx} &      \multicolumn{5}{c}{1000 xxx} \\
   \cmidrule(rl){3-7}\cmidrule(rl){8-12}
    & $s$ & $\nu$& G & E & P & D & G& E & P & D \\
   \midrule
   \multicolumn{12}{c}{\it abcd } \\
   P40 &2&  10&  -62&  -23&   -6& -13.15&     22&   -5&    0&  -0.84\\
   P41   &   1&   --&   55&   28&    1&  -4.94&  34&    7&    0&  -1.23\\
  \bottomrule
  \end{tabular}
  \end{table*}
  \end{multicols}
  \end{document}

这是我得到的结果 - 这些行似乎在第 1 列的右边缘之前被截断: 违规表格的截图

答案1

据我所知,您的tabular环境有 11 列,而不是 12 列。删除\multicolumn标题项“惩罚”周围的包装器并调整其他一些项目的列数可以解决此问题。

另外,鉴于大多数列似乎包含数值数据,有些列包含负值,您可能希望使用比r对齐数字更合适的列类型。例如,您可以使用包D提供的列类型dcolumn,如下例所示。(dcolumn包的替代方案是siunitx包及其S列类型。)

在此处输入图片描述

\documentclass[letterpaper]{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}  % shortcut macro
\begin{document}
\begin{multicols}{2}
\begin{table*}[t]
   \centering
   \begin{tabular}{@{} l *{2}{d{2.0}} *{2}{d{3.0}} d{2.0}
        d{3.2} *{3}{d{2.0}} d{2.2} @{}}
   \toprule
   Penalty 
   & \multicolumn{5}{c}{100 xx} 
   & \multicolumn{5}{c}{1000 xxx} \\
   \cmidrule(rl){2-6}\cmidrule(l){7-11}
    & s & \nu & \mc{G} & \mc{E} & \mc{P} & 
     \mc{D} & \mc{G}& \mc{E} & \mc{P} & \mc{D} \\
   \midrule
   \multicolumn{11}{c}{\itshape abcd } \\
   P40 &2& 10& -62&  -23&   -6& -13.15& 22& -5& 0&  -0.84\\
   P41   &   1&   -&   55& 28&  1& -4.94& 34& 7& 0&  -1.23\\
  \bottomrule
  \end{tabular}
  \end{table*}
  \end{multicols}
  \end{document}

答案2

在此处输入图片描述

第一列缺少 &

\documentclass[10pt]{article}
\usepackage[letterpaper,margin=1.5cm,showframe]{geometry}
\usepackage{booktabs}
\usepackage{multicol}
\pagestyle{empty}
\begin{document}
\begin{multicols}{2}
\begin{table*}
   \begin{tabular}{@{}ll rrrrr rrrrr@{}}
   \toprule
   \multicolumn{2}{@{}l}{Penalty} &\multicolumn{5}{c}{100 xx} &  \multicolumn{5}{c}{1000 xxx} \\
   \cmidrule(rl){3-7}\cmidrule(rl){8-12}
    & & $s$ & $\nu$& G & E & P & D & G& E & P & D \\
   \midrule
   \multicolumn{12}{c}{\it abcd } \\
   & P40 &2&  10&  -62&  -23&   -6& -13.15&     22&   -5&    0&  -0.84\\
   & P41   &   1&   --&   55&   28&    1&  -4.94&  34&    7&    0&  -1.23\\
  \bottomrule
  \end{tabular}
  \end{table*}
  \end{multicols}
  \end{document}

答案3

将列数从 12 改为 11,问题就解决了。以下是修改后的文件:

\documentclass[pdftex,10pt]{article}
\usepackage[letterpaper,margin=2.5cm,pdftex,showframe]{geometry}
\usepackage{booktabs}
\usepackage{multicol}
\pagestyle{empty}
\begin{document}
\begin{multicols}{2}
\begin{table*}
   \begin{tabular}{@{}ll rrrrr rrrrr@{}}
   \toprule
   \multicolumn{2}{@{}l}{Penalty} &\multicolumn{5}{c}{100 xx} & \multicolumn{4}{c}{1000 xxx} \\
   \cmidrule(rl){3-7}\cmidrule(rl){8-11}
    & $s$ & $\nu$& G & E & P & D & G& E & P & D \\
   \midrule
   \multicolumn{11}{c}{\it abcd } \\
   P40 &2&  10&  -62&  -23&   -6& -13.15&     22&   -5&    0&  -0.84\\
   P41   &   1&   --&   55&   28&    1&  -4.94&  34&    7&    0&  -1.23\\
  \bottomrule
  \end{tabular}
\end{table*}
\end{multicols}
\end{document}

在此处输入图片描述

相关内容