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
 
 的参数之中。