一篇paper中难免会遇到各种各样的问题(包括表格、图片、公式等等)需要处理,最终要想达到我们要的效果还得经历多次的调整。在这个系列的博客中,我会将我遇到的一些比较棘手或是比较常用到的问题整合起来,分享给大家。
1 问题描述
有时候由于页面长度有限,所以表格不一定能完全在同一个页面中。在word中遇到这种情况时,word能够自动对表格进行跨页断行的操作(如下图所示)。
但在latex中,一个超过页面长度的长表格,使用平常的\begin{table}环境的话,就会出现如下情况,表格会一直延申到整个页面的底部,并且显示不全(如下图所示)。
2 解决办法
2.1 longtable
首先需要加上宏包\usepackage{longtable}
2.1.1 简单例子
第一种写法是直接将表格内容放置在longtable
环境中,代码及效果图如下所示:
\begin{
longtable}{
cccc}
\caption{
example}\label{
tab1}\\
% 表格内容
\end{
longtable}
可以很明显的看到,用longtable的方法,表格会自动换页,不会出现文章一开始的那种情况。虽然满足了自动换页这一点要求,但是通常一张跨页的表格需要在每一页的开头重复表头,所以我们来做一下改进。
2.1.2 加表头表尾
第二种写法也很简单,只是在第一种写法的基础上,在表格内容的前面加上一些表头的修饰操作。代码及效果图如下所示。
\begin{
longtable}{
cccccccc}
\caption{
example}\label{
tab1}\\
% 表格“首页”显示内容
\toprule
n1 & n2 & n3 & n4 & n1 & n2 & n3 & n4 \\
\midrule
\endfirsthead
% “后续页面”表头显示内容
\multicolumn{
8}{
r}{
Continued}\\
\toprule
n1 & n2 & n3 & n4 & n1 & n2 & n3 & n4 \\
%\midrule
\endhead
% 表格“尾页前”,表格最后显示内容
%\bottomrule
\multicolumn{
8}{
c}{
Continued on next page}\\
\endfoot
% 表格“尾页”,表格最后显示内容
\bottomrule
\endlastfoot
\multicolumn{
3}{
c}{
a} &d\\
\hline
1 & 2 & 3 &4 & 1 & 2 & 3 &4\\
\hline
a & b & c &d & a & b & c &d\\
\hline
1 & 2 & 3 &4 & 1 & 2 & 3 &4\\
\hline
a & b & c &d & a & b & c &d\\
\hline
1 & 2 & 3 &4 & 1 & 2 & 3 &4\\
\hline
a & b & c &d & a & b & c &d\\
\hline
1