Mantenha seção e subseção juntas no índice

Mantenha seção e subseção juntas no índice

Eu tenho um longo ToC fornecido pelo tocloftpacote. É 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}

Ilustração MWE

Responder1

Aqui está um trecho da página 6 do guia do usuário do tocloftpacote:

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 \addtocontentsos 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 \needspacemacro é definida no needspace pacote.)

Observe, aliás, que esses conselhos não dependem do tocloftpacote 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 \nopagebreaktítulos de seção posteriores. Com tocloftisso 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:

toc com break no lugar certo

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.

Exemplo de ToC fixo

informação relacionada