Como posso encaixar meu índice em uma única página? Revisitado

Como posso encaixar meu índice em uma única página? Revisitado

Esta questão é essencialmente a mesma queComo posso encaixar meu índice em uma única página?

"Quando uso \tableofcontentscoloco 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á tocapenas 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}

informação relacionada