如何创建复杂表格(多个嵌套列和行)

如何创建复杂表格(多个嵌套列和行)

我有一张想要复制的表格的图像,但我不知道如何复制多行部分(参见列的左侧)和多列部分(参见右侧)。

有没有通用的方法可以做到这一点?您如何创建这样的表格?数字无关紧要,我正在寻找一段可以根据需要轻松扩展的代码(添加更多行/列)。

复杂的表格

编辑:

感谢@leandriis,以下方法效果很好:

\begin{tabular}{c|c|cccccc}
%\toprule
Metric & Dataset & 
%\multicolumn{6}{c}{SGAN (Ours)}\\ \cmidrule{3-8} & &
\makecell[b]{20V-20 \\ (pretrained)} & \makecell[b]{20VP-20 \\ (pretrained)} & \makecell[b]{20VP-20 \\ (retrained)} & \makecell[b]{Mean \\ Pooling} & \makecell[b]{Random \\ Pooling} & \makecell[b]{Gumble \\ Pooling}\\
\midrule
 & ETH & 3 & 3 & 3 \\
 & ETH & 3 & 3 & 3 \\
 ADE & ETH & 3 & 3 & 3 \\
 & ETH & 3  & 3 & 3\\
  & ETH & 3 & 3 & 3 \\ 
  AVG & & 3 & 3 & 3 \\
  \midrule\midrule
 & ETH & 3 & 3 & 3 \\
 & ETH & 3 & 3 & 3 \\
 ADE  & ETH & 3 & 3 & 3 \\
 & ETH & 3  & 3 & 3\\
  & ETH & 3 & 3 & 3 \\ 
  AVG & & 3 & 3 & 3 \\
\bottomrule\bottomrule
\end{tabular}

结果表

答案1

这是一段简短的代码,可以作为起点。我添加了一些\multicolumn命令\multirow,以便获得问题中提到的对齐。

\documentclass{article}
\usepackage{multirow}
\begin{document}

\begin{tabular}{c|c|c|c|c}
\multirow{2}{*}{\textbf{Metric}} & \multirow{2}{*}{\textbf{Dataset}} & 
\multicolumn{3}{c}{\textbf{SGAN (Ours)}}\\
& & 1V-1 & 1V-20 & 20V-20\\
\hline \hline
 & \textbf{ETH} & 3 & 3 & 3 \\
 & \textbf{ETH} & 3 & 3 & 3 \\
ADE  & \textbf{ETH} & 3 & 3 & 3 \\
 & \textbf{ETH} & 3  & 3 & 3\\
  & \textbf{ETH} & 3 & 3 & 3 \\
\hline
\textbf{AVG} & & & & \\
\hline\hline
 & \textbf{ETH} & 3 & 3 & 3 \\
 & \textbf{ETH} & 3 & 3 & 3 \\
ADE  & \textbf{ETH} & 3 & 3 & 3 \\
 & \textbf{ETH} & 3  & 3 & 3\\
  & \textbf{ETH} & 3 & 3 & 3 \\
\hline
\textbf{AVG} & & & & 
\end{tabular}

\end{document}

这里还有一个关于如何使用该booktabs包来创建一个没有垂直线、只有几条水平线且周围有一些额外空白的表格的建议。我还建议不要对列标题和第一/第二列的内容使用粗体:

\documentclass{article}
\usepackage{booktabs}

\begin{document}

\begin{tabular}{ccccc}
\toprule
Metric & Dataset & 
\multicolumn{3}{c}{SGAN (Ours)}\\ \cmidrule{3-5}
& & 1V-1 & 1V-20 & 20V-20\\
\midrule
ADE & ETH & 3 & 3 & 3 \\
 & ETH & 3 & 3 & 3 \\
  & ETH & 3 & 3 & 3 \\
 & ETH & 3  & 3 & 3\\
  & ETH & 3 & 3 & 3 \\ 
  AVG & & 3 & 3 & 3 \\
  \midrule
ADE & ETH & 3 & 3 & 3 \\
 & ETH & 3 & 3 & 3 \\
  & ETH & 3 & 3 & 3 \\
 & ETH & 3  & 3 & 3\\
  & ETH & 3 & 3 & 3 \\ 
  AVG & & 3 & 3 & 3 \\
\bottomrule
\end{tabular}

\end{document}

以下是两个表格的并排比较:

在此处输入图片描述

为了更好地对齐第 3-9 列中的数字,我建议使用该siunitx包。

答案2

这是您的表格排版,与我在我的文档中所做的大致相同。我在标题中使用了小一级的字母,并使用斜体而不是粗体来强调标题和数字。这是根据挪威排版研究教科书中的建议。我增加了边距,以便表格适合边距。

在序言中,我使用了三个命令来更改表格的间距:

\setlength{\extrarowheight}{1pt}
\renewcommand{\arraystretch}{1.1}
\setlength{\tabcolsep}{4pt}

第一个命令将单元格内容向下移动一点。第二个命令增加行间距(产生一些空隙)。第三个命令减少列间距。

我删除了所有垂直线,并使用了更粗的线,并添加了空格来代替双\hlines;所有这些都是根据书签手册。该包用于排版所有规则,因此规则和单元格内容之间有合适的距离。我还使用了大批包中有更灵活的表命令。

注意!booktabs 手册如果您想排版漂亮的表格,这是必读之物。

您还将看到,我使用两个右对齐列来排版数字。由于所有单元格的小数位数相同,因此您可以将简单的r-columns 与数组技巧结合使用来排版1.21 / 2.35。为了排版每对数字之间的斜线,我使用r@{\,/\,}r,它会删除两列之间的所有空格,并将其替换为两个小空格(\,)和中间的斜线。

在标题中,我使用 合并了两列multicolumn。有关如何排版表格的更多提示,我查阅了一本 50 年代中期用于培训挪威排版师的教科书。我已更新我的示例,使其更加符合以下要求:

在此处输入图片描述

\documentclass{article}
\usepackage[left=1.5cm, right=1.5cm]{geometry}
\usepackage{makecell, array, booktabs, multirow, caption}

\setlength{\extrarowheight}{1pt}
\renewcommand{\arraystretch}{1.2}
\setlength{\tabcolsep}{4.5pt}

\begin{document}

\begin{table}[!t]
\caption{Tabular with lots of columns}
\centering
\begin{tabular}{@{\kern0.1em}cl r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r r@{\kern0.05em/\kern0.05em}r@{\kern0.1em}}
\toprule    
\multirow{2}{*}[-0.75ex]{\small{Metric}} & \multirow{2}{*}[-0.75ex]{\small{Dataset}} & \multicolumn{2}{c}{\multirow{2}{*}[-0.75ex]{\small{Linear}}}&\multicolumn{2}{c}{\multirow{2}{*}[-0.75ex]{\small{LSTM}}}&\multicolumn{2}{c}{\multirow{2}{*}[-0.75ex]{\small{S-LSTM}}}&\multicolumn{8}{c@{}}{\small{SGAN (Ours)}}    \\\cmidrule(l){9-16}
\multicolumn{8}{l}{}&\multicolumn{2}{c}{\small{1V-1}}&\multicolumn{2}{c}{\small{1V-20}}&\multicolumn{2}{c}{\small{20V-20}}&\multicolumn{2}{c@{}}{\small{20VP-20}}    \\\midrule
&ETC&0.84&1.33&0.70&1.09&0.73&1.09&0.79&1.13&0.75&1.03&0.61&\emph{0.81}&\emph{0.60}&0.87 \\
&HOTEL&\emph{0.35}&\emph{0.39}&0.55&0.86&0.49&079&0.71&1.01&0.63&0.90&0.48&0.72&0.52&0.67  \\
ADE&UNIV&0.56&0.82&0.36&0.61&0.41&0.67&0.37&0.60&0.36&0.58&\emph{0.36}&\emph{0.60}&0.44&0.76  \\
&ZARA1&0.41&0.62&0.25&0.41&0.27&0.47&0.25&0.42&0.23&0.38&\emph{0.21}&\emph{0.34}&0.22&0.35  \\
&ZARA2&0.53&0.77&0.31&0.52&0.33&0.56&0.32&0.52&0.29&0.47&\emph{0.27}&0.42&0.29&\emph{0.42}  \\\midrule
\multicolumn{1}{@{}l}{\emph{AVG}}&&0.54&0.79&0.43&0.70&0.45&0.72&0.49&0.74&0.45&0.67&\emph{0.39}&\emph{0.58}&0.41&0.61 \\\bottomrule\addlinespace[1ex]
&ETC&1.60&2.94&1.45&2.41&1.48&2.35&1.61&2.21&1.52&2.02&1.22&\emph{1.52}&\emph{1.19}&1.62 \\
&HOTEL&\emph{0.60}&\emph{0.72}&1.17&.1.91&1.01&1.76&1.44&2.18&1.32&1.97&0.95&1.61&1.02&1.37 \\
FDE&UNIV&1.01&1.59&0.77&1.31&0.84&1.40&0.75&1.28&\emph{0.73}&\emph{1.22}&0.75&1.26&0.84&1.52 \\
&ZARA1&0.74&1.21&0.53&0.88&0.56&1.00&0.53&0.91&0.48&0.84&\emph{0.42}&0.69&0.43&\emph{0.68}  \\
&ZARA2&0.95&1.48&0.65&1.11&0.70&1.17&0.66&1.11&0.61&1.01&\emph{0.54}&\emph{0.84}&0.58&0.84  \\\midrule
\multicolumn{1}{@{}l}{\emph{AVG}}&&0.98&1.59&0.91&1.52&0.91&1.54&1.00&1.54&0.93&1.41&\emph{0.78}&\emph{1.18}&0.81&1.21  \\\bottomrule
\end{tabular}
\end{table}
\end{document}

相关内容