Evian Zhang's
naive blog

LaTeX入门(九)——表格

在介绍完如何在LaTeX中插入图片之后,我们接下来进入表格的环节。在这个环节,我觉得首先我们需要再重新认识一下浮动体。

之前在讲图片的时候,我们就把 figure 环境叫做浮动体。那么,这个东西究竟是什么呢?

还是拿设计衣服做比较吧。我们在衣服上想加一些装饰物,比如说,加上一朵绣花。那么,我们需要的,不仅是一朵绣花,还需要一个别针,绣花串在别针上,别针别在衣服上。而且,为了颜色的搭配,不同颜色的绣花还要对应颜色的别针。绣花在衣服上的位置就是由别针决定的,而我们也可以直接由别针的颜色来推断出绣花的颜色。那么,别针就相当于一个浮动体,绣花是我们要添加的主体。在图片插入中, figure 环境就是一个别针, \includegraphics[]{} 就是绣花。我们插入的是图片还是表格,这就相当于绣花的颜色,但LaTeX并不是根据绣花的颜色来进行判断,而是根据别针的颜色,即浮动体的种类来进行判断的。下面,我们就来通过具体的表格语句来体会这个含义吧:

如果我们想在LaTeX中插入一个2乘2的表格,里面的元素分别是 $\displaystyle a11, a12, a21, a22$ , 那么,和图片一样,我们首先需要在导言区中使用 float 宏包,即在导言区中加入

 \usepackage{float}

然后,在正文中想要插入表格的位置写上如下代码:

\begin{table}[H]
\centering
\caption{Title of table}
\begin{tabular}{|c|c|}\hline
a11&a12\\\hline
a21&a22\\\hline
\end{tabular}
\end{table}

根据这个代码和上面的讨论,我们有: table 环境是别针, tabular 环境是绣花,也就是主体。关于 table 环境我们没什么要重点讨论的。下面我们来看 tabular 环境。

首先,在 \begin{tabular} 后有 {|c|c|} 。这里的 | 是shift+\, 也就是回车键上方的键。这是什么意思呢?一个 | 代表表格中的一个竖线嘛,一个 c 代表一列。比如说,如果我们是 {c|c} ,那么排版出来的表格只有中间的一条竖线,没有两侧的边框线(不过标准论文里建议表格是没有最左和最右两个框线的)。此外, c 代表对齐方式,有 l , c , r 三种,分别表示当前列左对齐,居中,右对齐。

那么,有没有对单独一个单元格的设置方法呢?方法是有的,但是不太优雅,用的是 \multicolumn{}{}{} 指令。比如说,我要设置当前单元格有左框线无右框线,内容右对齐,那么就在对应的位置写上 \multicolumn{1}{|r}{xxx} , 其中 xxx 是当前单元格的内容。

此外,每一行还有 & , \hline \\ . 每个 & 的作用是分列,一个 & 代表一列。而 \\ 则代表断行。 \hline 的作用是在当前行的上方增加一条上框线。此外,还有 cline{} 可以指定从第几列到第几列有上框线。

此外,对于caption中的设置,我们也可以仿照图片使用 caption 宏包,只不过此时是 \captionsetup[table]{...} .

重要!!重要!!!

这些表格具体的设置我们其实都不需要熟练掌握,只需要知道即可。这一切,多亏了 excel2latex . 运用这个插件,你就可以在Excel中编辑好表格,然后直接转化为对应的LaTeX代码。 在数学建模的过程中,我们经常会遇到数十行,内容为八位小数,还有合并的单元格的表格。这些表格手打肯定不现实,所以excel2latex这个插件是十分常用的。

接下来,就讨论一些特殊的表格

过长表格

有的表格可能有数十行,一页肯定放不下。但是,用上述的方法产生的表格只能在一页。因此,我们需要使用宏包 longtable . 即在导言区中加入

\usepackage{longtable} 

接着,我们在要插入长表格的地方加入语句

\begin{longtable}{|c|c|c|}
\caption{Title of long table}\\\hline
content of table
\end{longtable}

其中, content of table 就是原来写在 tabular 环境中的东西。

过宽表格

对于过宽的表格,我们可以类似于过宽图片使用 adjustbox 宏包,但方法略微繁琐,可以用texdoc看该宏包的使用说明。我常用的方法则是另一种:

\begin{table}[H]
\caption{Title of too wide table}
\makebox[\textwidth][c]{
\begin{tabular}{cccccccccccccccccccc}
Content of table
\end{tabular}
}
\end{table}

即将 tabular 整个放入 makebox 的参数之中。