我怎样才能将目录放入一页?

我怎样才能将目录放入一页?

当我使用时,\tableofcontents我将所有内容都放在一个页面中,除了另一页上的一行,我怎样才能将所有内容都放在同一页面中?

答案1

添加以下代码行在正文中紧接着开始新的目录页的章节/部分条目之前:

\addtocontents{toc}{\protect\enlargethispage{\baselineskip}}

这会将第一个 ToC 页放大 (即一行) 的值\baselineskip,以使最后一个 ToC 条目适合此页面。

编辑:对于在各自的 ToC 条目之前添加一些垂直空间的顶级条目(例如书中的章节),2\baselineskip可能需要更大的值(例如)。

编辑 2:对于页码为何仍按原样放置,我没有令人满意的答案,但有一个解决方法。忽略我的第一个答案,而是将以下内容添加到您的序言中:

\usepackage{etoolbox}
\makeatletter
\patchcmd{\l@chapter}{1.0em}{0.8em}{}{}
\makeatother

这会将章节目录条目之间的垂直空间从 1.0em 减少到 0.8em,希望这足以使您的目录适合一页。

编辑 3:以下是针对我的第一个解决方案观察到的行为的“令人满意”的答案 - 引用自来源2e

\enlargethispage{<dim>}[a]<dim>仅增加当前列的高度。在打印的页面上,此列的底部向下延伸恰好,<dim>但不会影响页脚的放置;这可能会导致过度打印。

答案2

您可以尝试使用稍微小一点的字体制作目录:

{\small\tableofcontents}

或者,如果某些内容条目的名称很长并且要分到第二行,那么您可以为它们指定一个出现在内容中的较短的可选名称:

\section[short name]{The longer name that appears only where the section heading goes}

还有一个选项可以尝试将内容设为两列。有几个软件包可以做到这一点(例如 biblatex 的文档就是这样的),但我记不清如何做到这一点了。

答案3

强制将 ToC 放入一页的另一种方法是

\addtocontents{toc}{~\vspace{-3\baselineskip}}

紧接着该\tableofcontents命令。这将使标题(即“目录”)和 ToC 中第一个条目之间的垂直间距减少 3\baselineskip,从而为发送到下一页的行腾出空间。

这可能不够优雅,但必须有所取舍,而这是另一个选择。优点是您不会减少文本和页脚之间的垂直空间,在大多数情况下,该空间比标题和第一个条目之间的空间要小(因此更改起来不太灵活)。希望对您有所帮助!

答案4

另一种可能性是更改目录的行距。

只需将以下包添加到您的序言中:

\usepackage{setspace} 

然后将您的替换\tableofcontent为:

\begin{spacing}{0.95}
    \tableofcontents
\end{spacing}

0.95您可以尝试根据需要调整间距( )。

相关内容