這個問題本質上與如何將我的目錄放入一頁?
“當我使用時,\tableofcontents
除了另一頁上的一行之外,我將所有內容都放在一個頁面中,如何才能將所有內容都放在同一頁中?”
但是,由於以下原因,那裡給出的解決方案對我沒有幫助。目錄旁的頁面僅包含文字(加上一行目錄),之後的頁面以章節標題開頭。 ToC 的最後一行似乎是被 LaTeX 強行放在這裡的,以避免將章節標題放在底部:它更喜歡在 ToC 和文本之間而不是段落之間放置一個空格。
有優雅的解決方案嗎?
答案1
Henrique 的解決方案硬連線到文件中的某個位置,並假設該toc
位置只有一頁。這是另一個解決方案。
\documentclass[12pt,a6paper]{article}
\usepackage{blindtext}
\makeatletter
\def\enlargetocpage{%
\begingroup
\@ifstar{\def\x{*}\@enlargetocpage}{\def\x{}\@enlargetocpage}%
}
\def\@enlargetocpage#1{%
\toks@{#1}%
\protected@edef\x{%
\endgroup\noexpand\AtEndDocument{\noexpand\addtocontents{toc}%
{\protect\enlargethispage\x{\the\toks@}}}%
}\x
}
\makeatother
\enlargetocpage*{\baselineskip}
\begin{document}
\tableofcontents
\blindtext
\section{A section}
\subsection{And a subsection}
\blindtext
\blinddocument
\blinddocument
\blinddocument
\end{document}
答案2
遵循@lockstep的第一個答案如何將我的目錄放入一頁?\addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
,我透過立即添加成功實現了您的期望後第一部分標題。這是一個 MWE:
\documentclass[12pt,a6paper]{article}
\usepackage{blindtext}
\begin{document}
\tableofcontents
\blindtext
\section{A section}
\addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
\subsection{And a subsection}
\blindtext
\blinddocument
\blinddocument
\blinddocument
\end{document}