Eu tenho um longo ToC fornecido pelo tocloft
pacote. É longo o suficiente para passar para uma segunda página. O que tenho então é que (por exemplo) a seção 2 está no final da primeira página e a seção 2.1 está no início da segunda página.
Idealmente, eu gostaria de agrupar seções e subseções no ToC de forma que, se elas fossem divididas por uma página como essa, elas fossem enviadas para uma nova página. O resultado final seria que a primeira página terminaria com a seção 1.X e a segunda página começaria com a seção 2 (e assim por diante...).
Existe uma maneira de configurar isso?
MWE que ilustra a questão.
\documentclass{article}
\usepackage{tocloft}
\begin{document}
\tableofcontents
\clearpage
\section{Section 1}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsection{A subsection}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\section{A Second Section}
\subsection{A subsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\subsubsection{A subsubsection}
\section{A Third Section}
\subsection{A subsection}
\subsubsection{A subsubsection}
\end{document}
Responder1
Aqui está um trecho da página 6 do guia do usuário do tocloft
pacote:
Você pode obter quebras de página indesejadas no ToC. Por exemplo, você pode ter um título de seção longo com várias linhas e no ToC há uma quebra de página entre as linhas. Depois que seu documento estiver estável, você poderá usar
\addtocontents
os locais apropriados no corpo do documento para ajustar a quebra de página no sumário. Como exemplos:
\addtocontents{toc}{\protect\newpage}
para forçar uma quebra de página.
\addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}
para tornar a página mais longa.
\addtocontents{toc}{\protect\needspace{2\baselineskip}}
para especificar que, se não houver um espaço vertical de duas linhas de base na página, inicie uma nova página. (A\needspace
macro é definida noneedspace
pacote.)
Observe, aliás, que esses conselhos não dependem do tocloft
pacote que está sendo carregado.
Para o seu documento, então, a ação ideal seria inserir a instrução
\addtocontents{toc}{\protect\newpage}
imediatamente antes
\section{A Second Section}
no corpo do documento.
Por fim, anote o qualificador "depois que seu documento estiver estável". Com certeza, não se envolva nessas operações de ajuste fino, a menos e até que seu documento esteja praticamente concluído.
Responder2
Outra versão l̶e̶s̶s̶ ̶h̶a̶c̶k̶y que não requer a finalização da configuração do documento seria adicionar \nopagebreak
títulos de seção posteriores. Com tocloft
isso poderia ser feito via
\renewcommand{\cftsecafterpnum}{\nopagebreak}
(se você quiser adicioná-lo manualmente a uma única seção, você precisará adicionar \protect\nopagebreak
)
No seu exemplo, isso funciona conforme o esperado:
Responder3
Com a ajuda demarmota, consegui empurrar meu título para a próxima página com um \enlargethispage{-0.5cm}
comando simples. Não é a solução ideal porque é muito manual e específica para o problema, mas pelo menos funciona.
Do MWE acima, troquei
\tableofcontents
com
{%
\enlargethispage{-0.5cm}
\tableofcontents
}
que produziu a saída abaixo.