脚注中的长表导致页面过满

脚注中的长表导致页面过满

虽然longtable它擅长逐行分页,但我在脚注中使用一些分页功能时遇到了问题。似乎在发送页面时,没有“猜测”表格大小的足够空间,结果表格根本没有分页,最终被写在页面的底部边缘。(注意:有时这样做是正确的,但并非总是如此。)任何建议都会受到欢迎,尽管“不要在那里使用表格”是目前最不理想的解决方案。

\documentclass[12pt]{article}

\usepackage{booktabs,longtable,lipsum}
\newcommand{\twolines}{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida}%
\newcommand{\threelines}{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
  libero, nonummy eget, consectetuer id, vulputate a}%

\begin{document}

\lipsum[1]\footnote{\threelines\twolines}

\lipsum[2]\footnote{\threelines\twolines}

New paragraph.%
\footnote{Note this table (with was designed for hanging footnotes):
%
\begin{longtable}{@{}p{1em} p{1.75cm} p{10.5cm}}% for hanging footnotes

& Abbrev1 & \twolines\\
% & Abbrev2 & \threelines\\ % uncommenting these lines show
% & Abbrev3 & \threelines\\ % another unhappy outcome
\end{longtable}
}% <--- end of footnote
\threelines.

\lipsum[4]

\end{document}

编辑:也许我应该补充一点,我并不坚持使用 longtable 解决方案,但我希望可以模拟带有p{}列的表格(即多行单单元格内容),它可以跨页中断,同时停留在脚注中(...大声说出来听起来很多)。话虽如此,我认为 longtable 是实现此目的的最简单方法。

答案1

修改后的答案

您需要确保分页器可以在表格的每一行之后拆分表格,这意味着确保有合适的胶水和惩罚,并确保任何框都未被装箱。

longtable确实将所有行都保留为未装箱状态,以允许在脚注中进行分页,但这里的问题是行的深度很大(从列开始p),这使得\vsplit拆分脚注的隐式操作很难找到要拆分的地方。仅使用\parboxes 而不是longtable根本不使用 es 都可能重现这种不良行为(所以这不是我的错 :-) 我在最后附上了目前我能想到的最好的方法,即仅使用\parboxes,理论上,如果更方便的话,可以从语法中生成惩罚和粘合组合longtable,但 TeX 在这里似乎相当脆弱,并且有几种变体(使用和不使用longtable)导致(显然)在输出例程中循环并且文档不终止。以下终止,并且分裂....

\documentclass[12pt]{article}

\usepackage{lipsum}
\newcommand{\twolines}{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida}%
\newcommand{\threelines}{Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
  libero, nonummy eget, consectetuer id, vulputate a}%

\begin{document}

\makeatletter


\def\@oddfoot{\reset@font\dotfill\thepage\dotfill}

\lipsum[1]x\footnote{\threelines\twolines}

\lipsum[2]y\footnote{\threelines\twolines}

New paragraph.%
\footnote{Note this table (with was designed for hanging footnotes):

\splitmaxdepth\maxdimen
\def\goodbreak{\penalty-9000 }

Abrev1\quad\parbox[t]{10.5cm}{\twolines}

\filbreak

Abbrev2\quad \parbox[t]{10.5cm}{\threelines}

\filbreak

Abbrev3\quad\parbox[t]{10.5cm}{\threelines}

}% <--- end of footnote
\threelines.

\lipsum[4]

\end{document}

答案2

您始终可以使用:

\usepackage{tabu}

并使用longtabu环境。根据禁忌文档,tabu 中允许使用脚注和索引词,与 tabularx 不同,脚注链接与 hyperref 一起使用时不会中断。tabu\footnote [number]{htexti}和 longtabu 中允许使用这种语法(longtable 中尚未实现此语法...)

相关内容