在大量使用该longtable
环境时,我遇到了这样一种情况:表格在其行之后立即跳转到下一页endfoot
,起始页上没有任何实际的表格行。如何修复此问题?
梅威瑟:
\documentclass[english,11pt,a4paper]{article}
\usepackage{longtable}[2004/02/01]
\begin{document}
\vspace*{188mm}
Here nearly at bottom of page, a longtable follows\ldots
\begin{longtable}{|l|p{58mm}|}
%
\hline
\endfirsthead
%
\hline\multicolumn{2}{|l|}{\textsl{\ldots continued from previous page}}
\endhead
%
\multicolumn{2}{|l|}{\textsl{will be continued on next page\ldots}}\\*
\hline
\endfoot
%
\hline
\endlastfoot
%
aa: & 4711\\
\hline%
aaa: & 2\\
\hline%
aaaa: & 4711-2\\
\end{longtable}
\end{document}
问题是我将自动创建许多文档,因此可能不会看到这样的布局问题。
如果初始垂直空间稍少或稍多,问题就会消失……
提前感谢您的帮助和想法!
答案1
作为一种解决方法,\usepackage{needspace}
可以添加声明最小空间,比如说,2 个表行(一个数据行和连续消息)。
只需\newdimen\LTpreNeededspace
在每个之前添加一次以下代码\begin{longtable}
:
\setlength{\LTpreNeededspace}{\baselineskip}\addtolength{\LTpreNeededspace}{\arrayrulewidth}
%\showthe\LTpreNeededspace
\multiply\LTpreNeededspace by 2 % Request 2 table lines, each including single '\hline', to fit on a page
%\showthe\LTpre
\addtolength{\LTpreNeededspace}{\dimexpr\LTpre - \glueshrink\LTpre\relax}\addtolength{\LTpreNeededspace}{\arrayrulewidth} % Additionally, request the top '\hline' and the minimum value of '\LTpre'.
\addtolength{\LTpreNeededspace}{2.2pt} % The reason for this necessary add-on is not yet clear.
\Needspace{\LTpreNeededspace}