如何將我的目錄放入一頁?重訪

如何將我的目錄放入一頁?重訪

這個問題本質上與如何將我的目錄放入一頁?

“當我使用時,\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}

相關內容