多行和多列问题

多行和多列问题

我想从我的代码中删除黄色的两行

\begin{tabular}{|c|c|c|c||c|c|c|}
\hline
 \multirow{3}{*}{} & \multicolumn{6}{c|}{40 Mod}\\
\hline 
     &  \multicolumn{3}{c||}{method A}  &  \multicolumn{3}{c|}{method B} \\
\hline
     &  1 & 2 & 3 & 1 & 2 & 3 \\
\hline
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32 \\
\hline
\end{tabular}

在此处输入图片描述

答案1

这是使用软件包制作的替代方案tabularray。我包括了一张与您的表格类似的表格和另一张表格(在我看来更好看)。在这种情况下,您可能不需要该siunitx库,但以防万一……

\documentclass{article}
\usepackage{lipsum}     % dummy text
\usepackage{tabularray}
\UseTblrLibrary{booktabs,siunitx}

\begin{document}
\lipsum[1]

\begin{table}[ht]\centering
\caption{Original table with \texttt{tabularray}.}
\begin{tblr}
{% format
   vlines,hlines,vline{5}={2}{-}{},
   colspec={ccccccc},
   cell{1}{1}={r=3,c=1}{},   % multirow
   cell{1}{2}={r=1,c=6}{},   % multicolumn
   cell{2}{2,5}={r=1,c=3}{}, % multicolumn
}% content
  & 40 Mod\\
  & method A   &&      & method B \\
  & 1    & 2    & 3    & 1    & 2    & 3 \\
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32
\end{tblr}
\end{table}

\lipsum[2]

\begin{table}[ht]\centering
\caption{Alternative table also with \texttt{tabularray}.}
\begin{tblr}
{% format
   colspec={cS[table-format=1.2]
             S[table-format=1.2]
             S[table-format=1.2]
             S[table-format=1.2]
             S[table-format=1.2]
             S[table-format=1.2]},
   cell{1}{1}={r=3,c=1}{},   % multirow
   cell{1}{2}={r=1,c=6}{},   % multicolumn
   cell{2}{2,5}={r=1,c=3}{}, % multicolumn
}% content
\toprule
& {{{40 Mod}}}\\
\cmidrule[lr]{2-7}
& {{{method A}}} & & & {{{method B}}} \\
\cmidrule[lr]{2-4} \cmidrule[lr]{5-7}
& {{{1}}} & {{{2}}} & {{{3}}}& {{{1}}} & {{{2}}} & {{{3}}} \\
\midrule
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32 \\
\bottomrule
\end{tblr}
\end{table}
\end{document}

在此处输入图片描述

答案2

这是一个使用tabular环境的解决方案,即书签包装内无垂直线。

在此处输入图片描述

\documentclass{article}
\usepackage{array,booktabs}

\begin{document}

\begin{tabular}{@{} l cccccc @{}}
\toprule
& \multicolumn{6}{c@{}}{40 Mod}\\
\cmidrule(l){2-7}
& \multicolumn{3}{c}{Method A} & \multicolumn{3}{c@{}}{Method B} \\
\cmidrule(lr){2-4} \cmidrule(l){5-7}
& 1 & 2 & 3 & 1 & 2 & 3 \\
\midrule
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32 \\
\bottomrule
\end{tabular}

\end{document}

答案3

\multirow没什么用。

\documentclass{article}
\usepackage{array}

\begin{document}

\begin{tabular}{|c|c|c|c||c|c|c|}
\hline
  & \multicolumn{6}{c|}{40 Mod}\\
\cline{2-7}
     &  \multicolumn{3}{c||}{method A}  &  \multicolumn{3}{c|}{method B} \\
\cline{2-7}
     &  1 & 2 & 3 & 1 & 2 & 3 \\
\hline
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32 \\
\hline
\end{tabular}

\end{document}

在此处输入图片描述

现在问问自己垂直线在这里起什么作用。答案是它们只是妨碍阅读表格。

\documentclass{article}
\usepackage{array,booktabs,siunitx}

\begin{document}

\begin{tabular}{
  @{}
  r
  *{3}{S[table-format=1.2]}
  c
  *{3}{S[table-format=1.2]}
  @{}
}
\toprule
  & \multicolumn{7}{c}{40 Mod} \\
\cmidrule{2-8}
  & \multicolumn{3}{c}{method A} && \multicolumn{3}{c}{method B} \\
\cmidrule(lr){2-4} \cmidrule(l){6-8}
  &  {1} & {2} & {3} && {1} & {2} & {3} \\
\midrule
0 & 0.68 & 0.81 & 0.73 && 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 && 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 && 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 && 0.34 & 0.30 & 0.32 \\
\bottomrule
\end{tabular}

\end{document}

虚拟列取代了您的双重规则。

在此处输入图片描述

答案4

{NiceTabular}以下是使用 的解决方案nicematrix。在该环境下,您可以使用命令 合并行和列\Block。然后,垂直规则(由 指定,|在前言中)和水平规则(由 指定\Hline)将遵守这些块。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{|c|c|c|c||c|c|c|}
\Hline
 \Block{3-1}{} & \Block{1-6}{40 Mod}\\
\Hline 
     &  \Block{1-3}{method A}  &&& \Block{1-3}{method B} \\
\Hline
     &  1 & 2 & 3 & 1 & 2 & 3 \\
\Hline
0 & 0.68 & 0.81 & 0.73 & 0.67 & 0.86 & 0.74 \\
1 & 0.93 & 0.87 & 0.90 & 0.93 & 0.89 & 0.91 \\
2 & 0.98 & 0.92 & 0.94 & 0.98 & 0.91 & 0.94 \\
3 & 0.35 & 0.30 & 0.32 & 0.34 & 0.30 & 0.32 \\
\Hline
\end{NiceTabular}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

booktabs不过,我更喜欢本着(参见 Juan Castaño 的回答)精神的设计。

相关内容