Diese Frage ist im Wesentlichen die gleiche wieWie kann ich mein Inhaltsverzeichnis auf eine einzige Seite packen?
„Wenn ich verwende, \tableofcontents
bekomme ich alle meine Inhalte auf einer einzigen Seite, mit Ausnahme einer Zeile, die auf die andere Seite geht. Wie kann ich alles auf derselben Seite haben?“
Die dort angegebene Lösung hilft mir jedoch nicht weiter, und zwar aus folgendem Grund. Die Seite neben dem Inhaltsverzeichnis besteht nur aus Text (plus einer Zeile Inhaltsverzeichnis), die Seite danach beginnt mit einem Abschnittstitel. Die letzte Zeile des Inhaltsverzeichnisses scheint hier von LaTeX erzwungen zu werden, um zu vermeiden, dass der Abschnittstitel ganz unten erscheint: Es wird bevorzugt, ein Leerzeichen zwischen Inhaltsverzeichnis und Text zu setzen, anstatt zwischen Absätzen.
Gibt es hierfür eine elegante Lösung?
Antwort1
Henriques Lösung ist fest mit einer Position im Dokument verknüpft und geht davon aus, dass es toc
sich nur um eine Seite handelt. Hier ist eine andere Lösung.
\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}
Antwort2
Nach @locksteps erster Antwort aufWie kann ich mein Inhaltsverzeichnis auf eine einzige Seite packen?, ich habe es geschafft, das zu erreichen, was Sie erwarten, indem ich \addtocontents{toc}{\protect\enlargethispage{\baselineskip}}
sofortnachdie erste Abschnittsüberschrift. Hier ist ein 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}