longtable 包:拉伸页面最后一行的高度

longtable 包:拉伸页面最后一行的高度

考虑以下代码

\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}

相关内容