我的问题是,我的表格长达三页。因此,我想在使用时有三个不同的标题longtable package
。
类似的问题如何使用表列表中只有一个条目的长表并不能解决我的问题。据我所知,我们可以这样longtable
看待这个问题:
\caption{Example of longtable}
\endfirsthead
\caption[]{Continued}
\endhead
但是,如果表格占据三页,那么标题就是这样的:
表 2.1 - longtable 的示例(第 1 页)
表 2.1 – 续(第 2 页)
表 2.1 – 续(第 3 页)
换句话说,我无法为第二页和第三页添加不同的标题。这正是我想要的,也是问题所在。
答案1
longtable
表格的表头有两种设置:\endfirsthead
和\endhead
。 的内容\endfirsthead
将保存在保存框中\LT@firsthead
, 的内容将保存\endhead
在 中\LT@head
。 如果保存框\LT@firsthead
为空,longtable
则使用 的内容\LT@head
。 页脚将使用相同的程序。 我用同样的方式定义了\endsecondhead
\def\endsecondhead{\LT@end@hd@ft\LT@secondhead}
要使用此命令,我必须定义一个仅在第二页设置的新保存框。
\newbox\LT@secondhead
为了确保仅在第二页使用此框,我必须操纵的输出longtable
。因此我使用了一个简单的\ifvoid
子句。
\ifvoid\LT@secondhead
\copy\LT@head\nobreak
\else
\box\LT@secondhead\nobreak
\fi
\ifvoid
测试保存框是否\LT@secondhead
为空。如果设置了第二个头,则将通过 打印该框\box
。此命令打印该框并清除该框。因此在下一页上,上述测试为真。通过这种方式,您可以确保当没有定义第二个头时将\endhead
使用 。
为了允许三个以上的不同标题,您必须定义新的保存框并扩展测试。
\documentclass{article}
\usepackage{forloop,longtable}
\newcounter{count}
\setcounter{count}{1}
\makeatletter
\newbox\LT@secondhead
\def\endsecondhead{\LT@end@hd@ft\LT@secondhead}
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
\ifvoid\LT@secondhead
\setbox\z@\vbox{\box\LT@head}%
\else
\setbox\z@\vbox{\box\LT@secondhead}%
\fi
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
\vbox
{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\fi
\else
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\@makecol
\@outputpage
\global\vsize\@colroom
\ifvoid\LT@secondhead
\copy\LT@head\nobreak
\else
\box\LT@secondhead\nobreak
\fi
\fi}
\makeatother
\begin{document}
\listoftables
\section{section}
\begin{longtable}{c}
\caption{foo}\\\stepcounter{table}\endfirsthead
\caption{foo bar}\\\stepcounter{table}\endsecondhead
\caption{bar}\\\endhead
\whiledo{\value{count} < 100}{\stepcounter{count}
\arabic{count} \\}
\end{longtable}
\end{document}