我们使用 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}