表格中有多个多列

表格中有多个多列

我想创建一个这样的表格:

         +------------+----------+
         |      M1    |     M2   |
+--------+------+-----+------+---+
|  Prog  |   E  |  S  |  E   | S | 
+--------+------+-----+------+---+
| P1     |  1   |  5  | 0.6  | 10|
| P2     |  2   |  7  | 2    | 6 |
+--------+------+-----+------+---+

根据这些例子,我写了这篇文章

\begin{document}
    \begin{table}
        \centering
        \caption{Multiprogram sets}
        \label{multiprogram}
        \begin{tabular}{c|c|c|c|c|}
            \cline{2-5}
             & \multicolumn{2}{|c|c|}{M1}  & \multicolumn{2}{|c|c|}{M2} \\
            \cline{2-5}
             & E & S & E & S\\
            \hline
            \multicolumn{1}{|c|}{P1} & 1 & 5 & 0.6 & 10\\
            \hline
            \multicolumn{1}{|c|}{P2} & 2 & 7 & 2 & 6 \\
        \end{tabular}
    \end{table}
\end{document}

但它无法工作,并且出现很多错误。我该如何修复它?

答案1

像这样:

在此处输入图片描述

\documentclass[twoside, a4paper]{article}
\usepackage{array}

\begin{document}
    \begin{table}
        \centering
        \caption{Multiprogram sets}
        \label{multiprogram}
        \begin{tabular}{c|c|c|c|c|}
            \cline{2-5}
    & \multicolumn{2}{c|}{M1}  & \multicolumn{2}{c|}{M2} \\
    \cline{2-5}
    & E & S & E & S\\
    \hline
\multicolumn{1}{|c|}{P1} & 1 & 5 & 0.6 & 10\\
    \hline
\multicolumn{1}{|c|}{P2} & 2 & 7 & 2 & 6 \\
    \hline
        \end{tabular}
    \end{table}
\end{document}

tabularray或者使用packageČ使列宽相等

\documentclass[twoside, a4paper]{article}
\usepackage[skip=1ex]{caption}
\usepackage{tabularray}

\begin{document}
    \begin{table}
    \centering
\caption{Multiprogram sets}
\label{multiprogram}
    \begin{tblr}{hline{1}={2-Z}{solid}, hline{2-Z}=solid, 
                 vline{1}={3-Z}{solid}, vline{2-Z}=solid,
                 colspec= {*{5}{Q[c, wd=3em]}},
                 }
\SetCell[r=2]{c}
    &   \SetCell[c=2]{c}  M1
        &       &   \SetCell[c=2]{c}  M2    
                    &       \\
    & E & S & E     & S     \\
P1  & 1 & 5 & 0.6   & 10    \\
P2  & 2 & 7 & 2     & 6     \\
    \end{tblr}
    \end{table}
\end{document}

在此处输入图片描述

答案2

如果你只想让代码编译,只需将 的两个实例替换\multicolumn{2}{|c|c|}\multicolumn{2}{c|}。@JensHabricht 已经在评论中和Zarko 的回答

此外,如果您希望表格具有更好的视觉吸引力,请考虑 (a) 为四个数据列提供相等的宽度,以及 (b) 将最后两个数据列中的数字与其显式或隐式小数标记对齐。进行这些调整的结果显示在以下屏幕截图中的第二个表格中,标记为“改进版本”。

在此处输入图片描述

\documentclass{article}

%% setup code for second version of table:
\usepackage{siunitx,array,calc}
\newcolumntype{T}[1]{S[table-format=#1]}
\newcommand\mc[1]{\multicolumn{1}{c|}{#1}}
\newcommand\mw[1]{\multicolumn{1}{wc{\widthof{0.6}}|}{#1}}

\begin{document}
    \begin{table}
        \centering
        \caption{Initial version}
        \label{multiprogram}
        \begin{tabular}{c|c|c|c|c|}
            \cline{2-5}
             & \multicolumn{2}{c|}{M1}  & \multicolumn{2}{c|}{M2} \\
            \cline{2-5}
             & E & S & E & S\\
            \hline
            \multicolumn{1}{|c|}{P1} & 1 & 5 & 0.6 & 10\\
            \hline
            \multicolumn{1}{|c|}{P2} & 2 & 7 & 2 & 6 \\
        \end{tabular}        
        
        \bigskip\bigskip
        \setlength\extrarowheight{2pt}
        \caption{Improved version\strut}
        \label{tab:multi}
        \begin{tabular}{| c | c | c | T{1.1}| T{2.0} |}
            \cline{2-5}
            \mc{} & \multicolumn{2}{c|}{M1}  & \multicolumn{2}{c|}{M2} \\
            \cline{2-5}
            \mc{} & \mw{E} & \mw{S} & \mw{E} & \mw{S} \\
            \hline
            P1 & 1 & 5 & 0.6 & 10 \\
            \hline
            P2 & 2 & 7 & 2   & 6  \\
            \hline
        \end{tabular}
    \end{table}
\end{document}

相关内容