目次でセクションとサブセクションを一緒にする

目次でセクションとサブセクションを一緒にする

パッケージによって提供される長い目次がありますtocloft。これは 2 ページ目にも及ぶほど長いです。つまり、(たとえば) セクション 2 は 1 ページ目の最後にあり、セクション 2.1 は 2 ページ目の先頭にあります。

理想的には、目次内のセクションとサブセクションをグループ化して、ページによって分割された場合に新しいページにプッシュされるようにします。最終結果は、最初のページがセクション 1.X で終了し、2 番目のページがセクション 2 で始まる (など) ということになります。

これを設定する方法はありますか?


問題を説明する MWE。

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

MWEイラストレーション

答え1

以下は、パッケージのユーザー ガイドの 6 ページからの抜粋ですtocloft

目次に不要な改ページが挿入されることがあります。たとえば、長い複数行のセクション タイトルがあり、目次の行間に改ページが挿入されている場合があります。ドキュメントが安定したら、ドキュメント\addtocontents本文の適切な場所で を使用し、目次の改ページを調整できます。例:

  • \addtocontents{toc}{\protect\newpage}強制的にページ区切ります。

  • \addtocontents{toc}{\protect\enlargethispage{2\baselineskip}} ページを長くするためです。

  • \addtocontents{toc}{\protect\needspace{2\baselineskip}}ページに 2 つのベースラインの垂直スペースが残っていない場合に新しいページを開始するように指定します。(マクロはパッケージ\needspaceで定義されていますneedspace 。)

ちなみに、これらのアドバイスは、tocloftロードされるパッケージに依存しないことに注意してください。

あなたの文書の場合、最適なアクションは、次の指示を挿入することです。

\addtocontents{toc}{\protect\newpage}

直前

\section{A Second Section}

文書の本文に。

最後に、「ドキュメントが安定した後」という限定語に注意してください。ドキュメントがほぼ完成するまで、これらの微調整操作を行わないでください。

答え2

ドキュメントの設定を確定する必要がないもう1つの簡単なバージョンは、\nopagebreakセクションタイトルの後に を追加することです。tocloftこれは次のように実行できます。

\renewcommand{\cftsecafterpnum}{\nopagebreak}

(単一のセクションに手動で追加する場合は、以下を追加する必要があります\protect\nopagebreak

あなたの例では、これは意図したとおりに動作します:

適切な場所で改行する目次

答え3

の助けを借りてマーモット簡単なコマンドでタイトルを次のページにプッシュすることができました\enlargethispage{-0.5cm}。これは非常に手動で、問題に固有のものであるため、最適な解決策ではありませんが、少なくとも機能します。

上記のMWEから、私は

\tableofcontents

{%
    \enlargethispage{-0.5cm}
    \tableofcontents
}

以下の出力が生成されました。

固定ToCの例

関連情報