Esta questão é essencialmente a mesma queComo posso encaixar meu índice em uma única página?
"Quando uso \tableofcontents
coloco todo o meu conteúdo em uma única página exceto uma linha que vai na outra página, como posso fazer tudo na mesma página?"
No entanto, a solução ali dada não me ajuda, pelo seguinte motivo. A página ao lado do ToC é apenas texto (mais uma linha de ToC), a página seguinte começa com um título de seção. A última linha do ToC parece ser forçada aqui pelo LaTeX para evitar que o título da seção fique na parte inferior: ele prefere colocar um espaço entre o ToC e o texto em vez de entre os parágrafos.
Existe uma solução elegante para isso?
Responder1
A solução do Henrique está ligada a uma posição no documento e assume que será toc
apenas uma página. Aqui está outra solução.
\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}
Responder2
Seguindo a primeira resposta de @lockstep paraComo posso encaixar meu índice em uma única página?, consegui alcançar o que você esperava adicionando \addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
imediatamentedepoiso título da primeira seção. Aqui está um 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}