如何绘制多行表?

如何绘制多行表?

我是 Latex 新手,需要帮助绘制表格。以下是我现在拥有的: 在此处输入图片描述

代码如下:

\begin{center}
\begin{tabular}{|c|c|c|c|}
\hline
Topology & Average Delay(s) & Average Bandwidth(kbps) & Hosts \\
\hline
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77  \\ 
\hline
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17  \\
\hline
\caption{This table shows}
\label{eval_table}
\end{tabular}
\end{center}

这就是我想要做的:

1)缩小表格宽度,使其与列宽匹配

2)修复最后一条垂直线

3)正确设置标题

我已经花了好几个小时解决这个问题,但我不知道如何解决。

答案1

恐怕您只提供了代码片段,而不是完整的 MWE(最小工作示例),因此一些重要信息(文档文本块的宽度)不可用。因此我不得不做出一些(可能不正确的)假设:A4 纸张大小、1 英寸边距、双列模式。

下面是一系列表格,它们解决了您提出的各种问题。我故意没有将表格居中,以便于比较表格的宽度。(在实际文档中,您当然应该将每个tabular环境包含在 \begin{table} \caption{...} \label{...} \centering[tabular stuff]\end{table}语句中。)首先,有一个水平线指示文本块的宽度。在第一个表格中,通过添加几个符号可以恢复缺失的垂直线&。显然,表格太宽了,无法放入可用空间。

在第二个表中,通过将单位名称移至单独的行,第 2 列和第 3 列的宽度显著减小。(这也有助于减少对后面(s)是单位名称还是 Delay 的复数形式的混淆。)在第三个表中,宽度进一步减小,成功地使表格适合文本块。重要的是,所有垂直线都被消除,从而节省了更多(水平)空间;此外,通过将基本 LaTeX宏替换为、和宏,Delay水平线的外观以及水平线上下间距得到了改善。\hline\toprule\midrule\bottomrule

在此处输入图片描述

\documentclass[a4paper,twocolumn]{article}
\usepackage[margin=1in]{geometry}
\usepackage{multirow,booktabs}
\setlength\parindent{0pt}
\begin{document}
Width of text block, two-column mode:
\hrule
\bigskip
(a) Restore the missing vertical lines:

\smallskip
\begin{tabular}{|c|c|c|c|}
\hline
Topology & Average Delay(s) & Average Bandwidth(kbps) & Hosts \\
\hline
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77  & \\ 
\hline
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17  & \\
\hline
\end{tabular}

\bigskip
(b) Reduce table width by moving units designations 
to separate line:

\smallskip
\begin{tabular}{|c|c|c|c|}
\hline
Topology & Average Delay & Average Bandwidth & Hosts \\
& (s) & (kbps) & \\
\hline
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77  & \\ 
\hline
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17  & \\
\hline
\end{tabular}

\bigskip
(c) Better horizontal lines, no vertical lines, reduce table 
width some more:

\smallskip
\begin{tabular}{@{} cccc @{}}
\toprule
Topology & Avg.\ Delay & Avg.\ Bandwidth & Hosts \\
& (s) & (kbps) & \\
\midrule
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77  & \\[2ex]
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17  & \\
\bottomrule
\end{tabular}

\end{document}

答案2

解决您的一些问题:

  1. 垂线

只需在列定义后添加一个额外的“与”符号,即可修复垂直线。例如,

Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77 & \\

通过移动块来解决末端的额外垂直线\label

  1. 标题

据我所知,表格环境通常不支持标题。您可能希望用 包裹所有这些内容,并在关闭环境后\begin{table}...\end{table} 放置。\caption{Table}tabular

因此,完整的代码如下所示:

\begin{table}
\centering
\begin{tabular}{|c|c|c|c|}
\hline
Topology & Average Delay(s) & Average Bandwidth(kbps) & Hosts \\
\hline
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77 & \\
\hline 
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17 & \\
\hline
\end{tabular}
\caption{This table shows}\label{eval_table}
\end{table}

产生以下输出: 例子

更新型多巴胺:做了一些更正埃格尔

答案3

正如评论中所述,在表格中过度使用规则被认为是不好的风格。也许你更喜欢这种替代设计(遵循手册的规则和指导方针booktab):

\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{table}\centering
\begin{tabular}{cccc}
\toprule
Topology & Average Delay(s) & Average Bandwidth(kbps) & Hosts \\
\midrule
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77 & \\
\addlinespace 
Low & 0.2522 & 1798.60 & \multirow{2}{*}{128} \\
High & 0.1113 & 2123.17 & \\
\bottomrule
\end{tabular}
\caption{This table shows}\label{eval_table}
\end{table}
\end{document}

其结果为:

输出表

相关内容