带换行的多列表格

带换行的多列表格

我正在尝试创建一个多列表格,将列标题分成两行,每列都有两个子列(第一列除外)。但无法正常工作。有什么帮助吗?

\documentclass[twoside,11pt]{article}
\usepackage{multicol}
\begin{document}

\begin{table}
  \centering
  \caption{Optimal R (in \%).\\Options: T for threshold, CS for cost-sensitive and CS{\small \&}T for hybrid. }
  \setlength{\tabcolsep}{0.15cm}
  \begin{tabular}{|l*{16}{c}|}
    \hline
    {Baseline \\ Options}  & \multicolumn{2}{c}{SVP\\ --} & \multicolumn{2}{c}{SV \\ \sc t} & \multicolumn{2}{c}{SV\\ \sc cs} & \multicolumn{2}{c}{SV\\ \sc t} & \multicolumn{2}{c}{SV \\ \sc cs{\scriptsize \&}t} & \multicolumn{2}{c}{SV \\ \sc t} & \multicolumn{2}{c}{SV \\ \sc cs} & \multicolumn{2}{c}{SV \\ \sc cs{\scriptsize \&}t} \\
        & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 \\
    \hline
        & & & & & & & & & &  &  &  &  &  &  &  &  \\
    Ad    & 67.3 & 67.3 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 \\
    \hline 
  \end{tabular}
  \label{tab:tab_bin_post}
\end{table}
\end{document}

答案1

l换行符在或列中不起作用c。您需要p列或嵌套tabular。以下示例只是为表头的第二行创建了第二行。

此外,该表格对于普通的纵向页面来说太大了,因此我通过包rotating和环境对其进行了旋转sidewaystable

并且booktabs使用包装来获得更好的线路和线路周围适当的间距:

\documentclass[twoside,11pt]{article}
\usepackage{rotating}
\usepackage{booktabs}
\begin{document}

\begin{sidewaystable}
  \centering
  \caption[Optimal R (in \%)]{%
    Optimal R (in \%).\\
    Options: T for threshold, CS for
    cost-sensitive and CS{\small \&}T for hybrid.}
  \setlength{\tabcolsep}{0.15cm}
  \begin{tabular}{l*{16}{c}}
    \toprule
    Baseline
    & \multicolumn{2}{c}{SVP}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV}
    & \multicolumn{2}{c}{SV} \\
    Options
    & \multicolumn{2}{c}{--}
    & \multicolumn{2}{c}{\scshape t}
    & \multicolumn{2}{c}{\scshape cs}
    & \multicolumn{2}{c}{\scshape t}
    & \multicolumn{2}{c}{\scshape cs{\scriptsize\&}t}
    & \multicolumn{2}{c}{\scshape t}
    & \multicolumn{2}{c}{\scshape cs}
    & \multicolumn{2}{c}{\scshape cs{\scriptsize\&}t}
    \\
    & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2
    \\
    \midrule
    Ad    & 67.3 & 67.3 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9
    & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 & 67.9 \\
    \bottomrule
  \end{tabular}
  \label{tab:tab_bin_post}
\end{sidewaystable}
\end{document}

结果

答案2

假设你使用的纸张尺寸为 A4 或 US-Letter,水平边距为 1 英寸,那么表格就刚好(但仅仅是刚好!)可以挤进文本块中,如果你可以适当减小 的值\tabcolsep。我建议你使用一个tabular*环境,将其宽度设置为\textwidth,然后让 LaTeX 处理繁琐的工作,即计算出使表格占据预期宽度所需的列间空白量。

我还建议您(i)使用包的线条绘制宏booktabs,(ii)通过提供单身的(三)\cmidrule明智地使用说明为表格标题中的材料提供进一步的视觉结构,以及(四)将当前命令参数中的一些材料\caption放在以下\sc标题本身。最后,不要在 LaTeX 文档中使用说明。而是使用\textsc{...}{\scshape ...}

在此处输入图片描述

\documentclass[twoside,11pt]{article}
\usepackage{booktabs,caption}
\usepackage[margin=1in, letterpaper]{geometry} % choose margins here
\newcommand{\mc}[1]{\multicolumn{2}{c}{#1}}    % handy utility macro

\begin{document}

\begin{table}
  \caption{Optimal R (in \%)} \label{tab:tab_bin_post}

  Options: \textsc{t} for threshold, 
           \textsc{cs} for cost-sensitive, and 
           \textsc{cs{\scriptsize \&}t} for hybrid.

  \medskip
  \setlength{\tabcolsep}{0.1mm} % let LaTeX figure out nec. amount of intercol. whitespace
  \begin{tabular*}{\textwidth}{l @{\extracolsep{\fill}} *{16}{c}}
    \toprule
    Baseline  & \mc{SVP} & \multicolumn{14}{c}{SV}\\
    \cmidrule(l){2-3} \cmidrule{4-17}
    Options & \mc{--}
    & \mc{\scshape t} & \mc{\scshape cs} 
    & \mc{\scshape t }& \mc{\scshape cs{\scriptsize \&}t} 
    & \mc{\scshape t} & \mc{\scshape cs} 
    & \mc{\scshape cs{\scriptsize \&}t} \\
    \cmidrule(l){2-3} \cmidrule{4-5} \cmidrule{6-7} \cmidrule{8-9} 
    \cmidrule{10-11} \cmidrule{12-13} \cmidrule{14-15} \cmidrule{16-17} 
        & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2 
        & 1 & 2 & 1 & 2 & 1 & 2 & 1 & 2  \\
    \midrule
    Ad    & 67.3 & 67.3 & 67.9 & 67.9 
          & 67.9 & 67.9 & 67.9 & 67.9 
          & 67.9 & 67.9 & 67.9 & 67.9 
          & 67.9 & 67.9 & 67.9 & 67.9   \\
    \bottomrule 
  \end{tabular*}
\end{table}
\end{document}

相关内容