允许在目录中的部分内容后进行分页

允许在目录中的部分内容后进行分页

我们使用 XeLaTeX 制作大字版,在尝试制作包含很多部分的书时遇到了一个问题,我们只想显示目录中的部分。我将其简化为一个最小示例:

\documentclass{book}

\usepackage[english]{babel}
\begin{document}
\tableofcontents
\part[{1}]{1}
\part[{2}]{2}
\part[{3}]{3}
\part[{4}]{4}
\part[{5}]{5}
\part[{6}]{6}
\part[{7}]{7}
\part[{8}]{8}
\part[{9}]{9}
\part[{10}]{10}
\part[{11}]{11}
\part[{12}]{12}
\part[{13}]{13}
\part[{14}]{14}
\part[{15}]{15}
\part[{16}]{16}
\part[{17}]{17}
\part[{18}]{18}

\end{document}

这将生成一个从第 2 页开始的目录页,因为它无法放在第 1 页,并且不想拆分。实际上,我使用的是 memoir 和 25pt,有 7 个部分,但此示例产生的结果相同。我在 texlive 2014 中尝试过。有没有一种解决方法,不需要在需要的位置手动插入目录分隔符。这是自动化系统的一部分,用户无权访问 TeX 代码,所以我需要一种方法来允许页面自动拆分。

答案1

您可以更新- 负责设置目录中\l@part每个相关条目的宏-在每个常规条目后插入一个零:\part\penalty

在此处输入图片描述

\documentclass{book}

\makeatletter
\let\old@l@part\l@part
\renewcommand{\l@part}[2]{%
  \old@l@part{#1}{#2}% Regular setting of \part in ToC
  \pagebreak[0]}% Add a zero penalty (for possible page break)
\makeatother

\begin{document}

\tableofcontents

\part[{1}]{1}
\part[{2}]{2}
\part[{3}]{3}
\part[{4}]{4}
\part[{5}]{5}
\part[{6}]{6}
\part[{7}]{7}
\part[{8}]{8}
\part[{9}]{9}
\part[{10}]{10}
\part[{11}]{11}
\part[{12}]{12}
\part[{13}]{13}
\part[{14}]{14}
\part[{15}]{15}
\part[{16}]{16}
\part[{17}]{17}
\part[{18}]{18}

\end{document}

相关内容