¿Cómo puedo colocar mi tabla de contenido en una sola página? Revisado

¿Cómo puedo colocar mi tabla de contenido en una sola página? Revisado

Esta pregunta es esencialmente la misma que¿Cómo puedo colocar mi tabla de contenido en una sola página?

"Cuando uso \tableofcontentsobtengo todos mis contenidos en una sola página excepto una línea que va en la otra página, ¿cómo puedo hacer que todos estén en la misma página?"

Sin embargo, la solución dada allí no me ayuda, por el siguiente motivo. La página al lado del ToC es solo texto (más una línea del ToC), la página siguiente comienza con el título de una sección. LaTeX parece forzar la última línea del ToC aquí para evitar que el título de la sección esté en la parte inferior: prefiere poner un espacio entre el ToC y el texto en lugar de entre los párrafos.

¿Existe una solución elegante para esto?

Respuesta1

La solución de Henrique está cableada a una posición en el documento y supone que será tocsolo una página. Aquí hay otra solución.

\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}

Respuesta2

Siguiendo la primera respuesta de @lockstep a¿Cómo puedo colocar mi tabla de contenido en una sola página?, Logré lograr lo que esperabas agregando\addtocontents{toc}{\protect\enlargethispage{\baselineskip}} inmediatamentedespuésel título de la primera sección. Aquí hay un 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}

información relacionada