![如何绘制多行表?](https://linux22.com/image/252595/%E5%A6%82%E4%BD%95%E7%BB%98%E5%88%B6%E5%A4%9A%E8%A1%8C%E8%A1%A8%EF%BC%9F.png)
我是 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
解决您的一些问题:
- 垂线
只需在列定义后添加一个额外的“与”符号,即可修复垂直线。例如,
Low & 0.0994 & 2441.85 & \multirow{2}{*}{64} \\
High & 0.1424 & 2515.77 & \\
通过移动块来解决末端的额外垂直线\label
。
- 标题
据我所知,表格环境通常不支持标题。您可能希望用 包裹所有这些内容,并在关闭环境后\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}
其结果为: