在论文写作过程中,经常需要通过表格化的方式呈现一些数据,LaTeX 所有的宏包文件都要写在 \documentclass
命令之后和 \begin{document}
之前。在本文中,会用到与 LaTeX 表格相关的宏包如下:
\documentclass{article}
\usepackage{booktabs} %% 三线表
\usepackage{diagbox} %% 斜线表头
\usepackage{multirow} %% 合并单元格
\begin{document}
\title{ ... }
\author{ ... }
\date{...}
\maketitle
...
\end{document}
表格的基本模板详解:
\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{|c|c|}
\hline
One & Two \\
\hline
Three & Four\\
\hline
\end{tabular}
\end{table}
效果如下:
表格和图片的插入很多地方都是一致的,下面我们说一下不同的语法:
1、框架
\begin{table}[!h]
\end{table}
整体大框架明确了表格的开始 (\begin
) 和结束 (\end
) 的位置,table 说明插入的是图片。[!h] 是表格的摆放格式,所有的格式和图片一致。
2、行高
\renewcommand{\arraystretch}{1.3}
这一段设置的表格的行高。如果我们将 1.3 修改成 3,就变成了如下图:
3、标题与标签
\caption{An Example of a Table}
\label{table_example}
caption 是图像的标题。{ } 中就是标题的具体内容,标题还会有编号,一般都是自动编号。label 是标签,标签主要是在引用的时候被用到。
4、居中展示
\centering
centering 表示将表格居中显示,用在图片里则表示图片的居中展示。
但是如果表格的宽度超过了当前排的宽度,它就会越过去。
如果是这样的话,我们就要讲图片设置为页面浮动格式了,需要在上面的框架table 后面添加 *,这样的话表格就会横跨论文页面的两栏。
5、表格内容
\begin{tabular}{|c||c|}
\hline
One & Two \\
\hline
Three & Four\\
\hline
\end{tabular}
这一整块就是表格的内容了。下面的语句表示表格内容的开始和结束:
\begin{tabular}{|c||c|}
\end{tabular}
{|c|c|}
表示的是表格中内容的样式和竖边框线。有两个 columns,说明这个表格有两列,第一个 columns 的左边有一个竖线,说明表格有左边框线,两个 columns 之间有两个竖线,说明中间的分隔线是双线,后面 columns 的右面有一个竖线,说明表格有右边框线。
我们还可以把 c 换成 l 或者 r:
hline 表示该边框是有实线的,如果没有 hline,就表示这行没有边框横线。
如果我们希望部分有实线,部分没有呢?
我们希望在第二行的第 1 列、第 3 列 和第 5 列有横向,可以这样写:
\cline{1-1} \cline{3-3} \cline{5-5}
;
\begin{table*}[!h]
\renewcommand{\arraystretch}{1.2}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{c c c c c}
\hline
A & B & C & D & E \\
\cline{1-1} \cline{3-3} \cline{5-5}
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
\hline
\end{tabular}
\end{table*}
说明:表格中的每一列的内容,要用 & 隔开,一行结束,要用 \\ 符号换行。
表格的引用要用到命令 ref,例如我们要引用上面的表格,就可以这样调用:
As show in tabel \ref{table_example}, it explains that ...
1、三线表
三线表是常用的一类表格,根据上面介绍的表格的基础模板,我们可以很简单写出一个三线表的示例:
\begin{table}[!h]
\renewcommand{\arraystretch}{1.2}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{c c c c c}
\hline
A & B & C & D & E \\
\hline
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
\hline
\end{tabular}
\end{table}
这个是最简单的三线表,如果我们希望最上面和最下面的横线更粗一些呢?
导入三线表的宏包:\usepackage{booktabs}
然后改写代码中横线的部分:
\begin{table}[!h]
\renewcommand{\arraystretch}{1.2}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{c c c c c}
\toprule
A & B & C & D & E \\
\midrule
1 & 2 & 3 & 4 & 5 \\
1 & 2 & 3 & 4 & 5 \\
\bottomrule
\end{tabular}
\end{table}
2、斜线表头
斜线表头需要引入宏包:\usepackage{diagbox}
斜线表头主要是一个单元格分成两块或三块:
\diagbox{A1}{A2} %% 分成两块,分别是A1和A2
\diagbox{A1}{A2}{A3} %% 分成三块,分别是A1、A2和A3
然后我们把这个当成一个单元格写进去。
\begin{table}[!h]
\renewcommand{\arraystretch}{1.2}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{|c|c|c|c|c|}
\hline
\diagbox{A1}{A2}{A3} & B & C & D & E \\
\hline
a1 & 2 & 3 & 4 & 5 \\
\hline
a2 & 2 & 3 & 4 & 5 \\
\hline
a3 & 2 & 3 & 4 & 5 \\
\hline
\end{tabular}
\end{table}
执行的效果如下:
3、单元格的合并
单元格的合并需要用到一个包:\usepackage{multirow}
直接通过一个例子来讲解:
\begin{table}[!h]
\renewcommand{\arraystretch}{1.2}
\caption{An Example of a Table}
\label{table_example}
\centering
\begin{tabular}{|c|c|c|c|c|}
\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{A}} & \multicolumn{3}{c|}{B} \\
\cline{3-5}
\multicolumn{2}{|c|}{} & B1 & B2 & B3 \\
\hline
1 & 2 & 3 & 4 & 5 \\
\hline
\end{tabular}
\end{table}
从分隔符 & 与 换行符 \\ 的数目,我们就知道这个是一个三行五列的表格。我们发现,第一行只有一个 & ,说明第一行只有两个单元格,第二行有3个 & ,说明第二行有4个单元格。
\multicolumn{2}{|c|}{\multirow{2}{*}{A}}
用到了两个命令:
\multicolumn{}{}{}
;\multirow{}{}{}
;第一个命令是多列合并,第二个命令是多行合并,如果是嵌套使用,那就是多行多列合并。
每个大括号内容的含义如下:
这种合并方式读起来很麻烦,而且很不容易理解,别说是读者了,作者写起来也感觉非常复杂,那么这种单元格合并是否有比较好的解决办法呢?有的!
在线表格生成工具:https://www.tablesgenerator.com/
Step1:选择表格大小;
点击【Column】和【Row】可以在选择的表格中向左、向右添加列,向上、向下添加行,还包括表格的基本样式(边框、文字居中、加粗等)
Step2:合并和分割单元格,选中对应的行或列上的单元格,【merge cells】;
Step3:然后点击一键生成即可;
这一部分的笔记整理成PDF上传到了百度网盘,提取码:6666. --来自百度网盘超级会员V2的分享