警告

警告

我想在 Latex 中创建这样的表格。

在此处输入图片描述

这是我创建表的脚本。

\begin{table}
\centering
\caption{Table}
\begin{tabular}{|c|c|l|} \hline
\multirow{3}{*}{DEF}&\multicolumn{3}{|c|}{ ABC} \\ \hline
A&B&C\\ \hline
1& 4 & 7 \\ \hline
2& 5 & 8 \\ \hline
3& 6 & 9 \\ \hline
\end{tabular}
\end{table}

当我运行该脚本时,它显示如下错误。

! Extra alignment tab has been changed to \cr.<template> \endtemplate ...row{3}{}{DEF}&\multicolumn{3}{|c|}{ ABC}

如何创建像这样的表格?

答案1

您可以解读以下模板。

\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{array,multirow}

\let\mc=\multicolumn
\let\mr=\multirow
\let\cl=\cline

\begin{document}
\begin{tabular}{|*6{c|}l}
\cl{3-6}
\mc{2}{c|}{\mr{2}{*}{empty}} & \mc{4}{c|}{Primes} \\\cl{3-6}
\mc{2}{c|}{}                 & 2 & 3 & 5 & 7 \\\cl{1-6}
\mr{2}{*}{Powers}            & 504 & 3 & 2 & 0 & 1 \\\cl{2-6}
                             & 540 & 2 & 3 & 1 & 0 \\\cl{1-6}
\mr{2}{*}{Powers}            & HCF & 2 & 2 & 0 & 0 & min \\\cl{2-6}
                             & LCM & 3 & 3 & 1 & 1 & max \\\cl{1-6}
\end{tabular}
\end{document}

在此处输入图片描述

警告

\mr可以嵌套,\mc但不能反向嵌套!

参考

上述代码的灵感来自于维基百科如下。

\begin{tabular}{cc|c|c|c|c|l}
\cline{3-6}
& & \multicolumn{4}{ c| }{Primes} \\ \cline{3-6}
& & 2 & 3 & 5 & 7 \\ \cline{1-6}
\multicolumn{1}{ |c  }{\multirow{2}{*}{Powers} } &
\multicolumn{1}{ |c| }{504} & 3 & 2 & 0 & 1 &     \\ \cline{2-6}
\multicolumn{1}{ |c  }{}                        &
\multicolumn{1}{ |c| }{540} & 2 & 3 & 1 & 0 &     \\ \cline{1-6}
\multicolumn{1}{ |c  }{\multirow{2}{*}{Powers} } &
\multicolumn{1}{ |c| }{gcd} & 2 & 2 & 0 & 0 & min \\ \cline{2-6}
\multicolumn{1}{ |c  }{}                        &
\multicolumn{1}{ |c| }{lcm} & 3 & 3 & 1 & 1 & max \\ \cline{1-6}
\end{tabular}

但是,正如您所看到和比较的,我的代码更加简单、重构更好,但仍然可读,对吗?

答案2

您尝试做的事情可以通过以下方式完成:

\documentclass{standalone}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|c|c|c} \hline
& & \multicolumn{3}{|c|}{ ABC} \\ \hline
& & A&B&C\\ \hline
\multirow{3}{*}{DEF} & D &1& 4 & 7 \\ \cline{2-5}
&E&  2& 5 & 8 \\ \cline{2-5}
&F&  3& 6 & 9 \\ \cline{2-5}
\end{tabular}
\end{document}

但是!LaTeX 可以制作比 Excel 样式布局更美观的表格。考虑这样做,即使有超过 3 列,看起来仍然很漂亮。

在此处输入图片描述

\documentclass{standalone}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lcccccc} 
\toprule
& \multicolumn{3}{c}{ ABC} & \multicolumn{3}{c}{ ABC} \\\cmidrule(lr){2-4} \cmidrule(lr){5-7}
& A&B&C & A2&B2&C2\\ \midrule
DEF:\\
\;D &1& 4 & 7 &1& 4 & 7 \\ 
\;E&  2& 5 & 8 &1& 4 & 7 \\ 
\;F&  3& 6 & 9 &1& 4 & 7 \\ 
XYZ:\\
\;X &1& 4 & 7 &1& 4 & 7  \\ 
\;Y&  2& 5 & 8 &1& 4 & 7 \\ 
\;Z&  3& 6 & 9 &1& 4 & 7  \\ \bottomrule
\end{tabular}
\end{document}

答案3

\multirow命令,需要对其自己的列进行操作......因此,您需要在每一列的左侧添加一个额外的列,从而&在表格的每一行的左侧都需要一个额外的列,并且c在表格参数的开头需要一个额外的列类型(比如说)。

此外,您示例中的多列应为 3 行高,并且应从行 (1,4,7) 开始。但是,随后\hline在这一行或下一行上的一个也会在“多行”单元格中添加一行,而这是不希望的。因此,我们必须更改一些\hlines,使其\cline{2-4}成为从第 2 列到第 4 列的一行,而不是从第 1 列到最后一列的一行。

最后,您可以添加空\multicolumn{1}{c|}{}作为前两行的第一个元素,以便将它们的行为从更改为|c|c|并以此方式从其左侧删除不需要的垂直线:

\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{table}
\centering
\caption{Table}
\begin{tabular}{|c|c|c|l|} \cline{2-4}
\multicolumn{1}{c|}{}&\multicolumn{3}{|c|}{ ABC} \\ \cline{2-4}
\multicolumn{1}{c|}{}&A&B&C\\ \hline
\multirow{3}{*}{DEF}&1& 4 & 7 \\ \cline{2-4}
&2& 5 & 8 \\ \cline{2-4}
&3& 6 & 9 \\ \hline
\end{tabular}
\end{table}
 \end{document}

附言:我们试图向您展示您所犯的错误,而不是想办法让您的表格看起来更漂亮。

在此处输入图片描述

相关内容