将各章节保持在目录中的同一页上

将各章节保持在目录中的同一页上

在我的目录中,我有 6 个章节(加上附录)。第二章从目录的第一页开始,到第二页结束。我想知道是否有办法将其移至第一页,而无需使标题彼此靠近。请注意,第二章不是最后一章。下面是情况的图片。提前谢谢。

在此处输入图片描述

答案1

将我的评论更改为带有附加内容的答案。尝试:

...
\addtocontents{toc}{\protect\enlargethispage*{3\baselineskip}}
\chapter{Preliminaries} % your second chapter
...

这将增加目录中特定页面的文本高度,其中章节准备工作发生。您也可以尝试无星号版本\enlargethispage并更改放大量。

正如您在评论中所说,上面的内容在文档的最后一个目录条目和页码之间留出了很小的空间。您可以按照以下方式减少目录标题和第一个条目之间的空间量:

\documentclass{book}
\begin{document}
\tableofcontents
%...
\addtocontents{toc}{\protect\vspace{-4em}}
\chapter{One}
%
\addtocontents{toc}{\protect\enlargethispage*{3\baselineskip}}
\chapter{Preliminaries}
%
\end{document}

您需要选择最适合您的文档的长度。

但也许您试图在页面上挤入太多内容。

答案2

要获得更自动化的解决方案,请尝试

% prevent page breaks before a subsection
\let\oldsubsection\subsection
\renewcommand{\subsection}{%
    \addtocontents{toc}{\penalty10000}%
    \oldsubsection%
}
% prevent page breaks before a section
\let\oldsection\section
\renewcommand{\section}{%
    \addtocontents{toc}{\penalty10000}%
    \oldsection%
}

您可以优化惩罚值(10000=永不中断,1=稍微降低此处中断的可能性)。请注意,这会使目录延伸很多。如果您想要页面底部的额外垂直空间,请尝试:

{\raggedbottom\tableofcontents}

如果您想要章节之间有额外的垂直空间,请尝试:

\let\oldchapter\chapter
\renewcommand{\chapter}{%
    \addtocontents{toc}{\vfil}%
    \oldchapter%
}

[...]

\tableofcontents
\vfill

相关内容