我有一份由软件包提供的长目录tocloft
。它足够长,可以延伸到第二页。那么我得到的是(例如)第 2 节位于第一页的末尾,第 2.1 节位于第二页的开头。
理想情况下,我希望将目录中的章节和子章节分组,这样如果它们被这样的页面拆分,那么它将被推送到新页面。最终结果是第一页以第 1.X 节结束,第二页以第 2 节开始(依此类推...)。
有办法配置这个吗?
MWE 说明了这个问题。
\documentclass{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\clearpage
\section{Section 1}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsection{A subsection}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\section{A Second Section}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\section{A Third Section}
\subsection{A subsection}
\subsubsection{A subsubsection}
\end{document}
答案1
以下是该包的用户指南第 6 页的摘录tocloft
:
目录中可能会出现不想要的分页符。例如,您可能有一个较长的多行章节标题,而目录中的行与行之间有分页符。文档稳定后,您可以
\addtocontents
在文档正文中的适当位置使用来调整目录中的分页符。例如:
\addtocontents{toc}{\protect\newpage}
强制分页。
\addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}
使页面更长。
\addtocontents{toc}{\protect\needspace{2\baselineskip}}
指定如果页面上没有剩余两个基线的垂直空间,则开始新的页面。(该\needspace
宏在包中定义needspace
。)
顺便注意,这些建议并不依赖于tocloft
正在加载的包。
那么,对于您的文档,最佳操作是插入指令
\addtocontents{toc}{\protect\newpage}
就在之前
\section{A Second Section}
在文档正文中。
最后,一定要注意“文档稳定后”这个限定词。当然,除非文档基本完成,否则不要进行这些微调操作。
答案2
答案3
在...的帮助下土拨鼠,我能够使用一个简单的命令将标题推送到下一页\enlargethispage{-0.5cm}
。这不是最理想的解决方案,因为它非常手动且针对具体问题,但至少它确实有效。
从上面的 MWE,我交换了
\tableofcontents
和
{%
\enlargethispage{-0.5cm}
\tableofcontents
}
产生下面的输出。