表格标题多列问题

表格标题多列问题

我有以下代码,需要在最后一个主列中添加 2 个子列。我编写的代码如下:

\begin{table}
  \centering
    \begin{tabular}{|c|l|c|c|}
    \hline
    \multicolumn{1}{|c|}{\bfseries First} & \multicolumn{1}{|c|}{\bfseries Characteristics} & \multicolumn{2}{|c|}{\bfseries Implemented in}\\ A&B \\ \hline
    a & b & c & d \\
    1 & 2 & 3 & 4\\
    \end{tabular}
\end{table}

结果是

在此处输入图片描述

我想要将“A”和“B”作为“实施于”列中的子列。

答案1

您可以使用\\ && A&B而不是\\ A&B。前两个&&是跳过前两列。

在此处输入图片描述

笔记:

  • 根据 Bernard 的评论, 包裹multirow用于将前两个标题垂直居中放置在两行上。
  • 根据@AlanMunn 的评论,\cline{3-4}可以用来在指定的列上画线。

不过,我强烈建议你看看包裹booktabs对于表格:

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{multirow}

\begin{document}
\begin{tabular}{|c|l|c|c|}
    \hline
    \multirow{2}{*}{\bfseries First} & 
    \multirow{2}{*}{\bfseries Characteristics} & 
    \multicolumn{2}{|c|}{\bfseries Implemented in}\\ \cline{3-4}
    && A&B \\ \hline
    %------
    & b & c & d \\
    1 & 2 & 3 & 4\\
\end{tabular}
\end{document}

代码:booktabs

\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}

\begin{document}
\begin{tabular}{c l c c}
    \toprule
    \multirow{2}{*}{\bfseries First} & 
    \multirow{2}{*}{\bfseries Characteristics} & 
    \multicolumn{2}{c}{\bfseries Implemented in}\\ \cmidrule(lr){3-4}
    && A&B \\ \cmidrule(lr){1-4}
    %------
    & b & c & d \\
    1 & 2 & 3 & 4\\
    \bottomrule
\end{tabular}
\end{document}

答案2

使用新包tabularray很简单。使用它你需要为每一列插入一个 & 符号,即在你的情况下每行三个 & 符号:

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}
\begin{table}[ht]
     \centering
\begin{tblr}{vlines,
             colspec={c l Q[c,wd=3.3em] Q[c,wd=3.3em]},
             row{1}={font=\bfseries},
             }
    \toprule
\SetCell[r=2]{c} First   
    &   \SetCell[r=2]{c} Characteristics 
        &  \SetCell[c=2]{c} Implemented in 
            &       \\
    \midrule
    &   & A & B     \\ 
    \midrule
    & b & c & d     \\
 1  & 2 & 3 & 4     \\
    \bottomrule
    \end{tblr}
\end{table}
\end{document}

在此处输入图片描述

相关内容