考虑以下代码
\documentclass[a4paper]{article}
\usepackage{longtable}
\usepackage{lipsum}
\begin{document}
\begin{longtable}{|p{5cm}|}
\hline
\lipsum[5] \\\hline
\lipsum[7] \\\hline
\lipsum[1] \\\hline
\lipsum[1-2] \\\hline
\lipsum[5]\\\hline %no stretching here
\end{longtable}
some text below the table
\end{document}
这将导致结果(最小缩放级别)。
如您所见,每页的列下边框和页面下边框之间的空间都不同(尤其是第二页),这对我来说看起来不太好。
我想要的是每次分页时,最后一行的高度都会延伸(拉伸),因此表格下线到页面底部的距离在每一页上都是相等的。表格的最后一行不应该发生这种情况,因为它将嵌入其他内容中。因此,在我提供的 MWE 中,最后一页应该看起来和现在一样,没有任何修改。
你知道怎样才能实现这个目标吗?
[编辑]
示例的虚假截图
答案1
半自动方法,使用\pdfsavepos
扩展名计算出文本的结束位置,然后构造合适的长度以用于\\[something]
扩展行。我在这里没有尝试自动确定分页符的行,因此在编辑结束时只需更改\\
为\zz{AomeUniqueLabel}
您可以在辅助文件中看到它的长度并调整-150pt
以精确调整表格的结束位置。如果您编辑文档,请删除该aux
文件,否则它将重新使用虚假值。需要运行几次才能始终使用\pdfavepos
值。
\documentclass[a4paper]{article}
\usepackage{longtable}
\usepackage{lipsum}
\makeatletter
\def\zz#1{%
\pdfsavepos\write\@auxout{%
\gdef\expandafter\string\csname zz@#1\endcsname{%
\string\\[\the\dimexpr\the\pdflastypos sp -150pt\relax]}}%
\expandafter\ifx\csname zz@#1\endcsname\relax
\expandafter\\%
\else
\csname zz@#1\expandafter\endcsname
\fi}
\makeatother
\begin{document}
\begin{longtable}{|p{5cm}|}
\hline
\lipsum[5] \\\hline
\lipsum[7] \zz{a}\hline
\lipsum[1] \zz{b}\hline
\lipsum[1-2] \zz{c}\hline
\lipsum[5]\\\hline %no stretching here
\end{longtable}
some text below the table
\end{document}