Manchmal will man in einem einspaltigen Dokument Verzeichnisse wie das Inhaltsverzeichnis, das Tabellenverzeichnis oder das Abbildungsverzeichnis automatisch mehrspaltig – meist zweispaltig – setzen. Dazu könnte man natürlich etwas wie
\twocolumn
\tableofcontents
\listoffigures
\listoftables
\onecolumn
verwenden. Tatsächlich funktioniert das bei scrbook und scrreprt in der Voreinstellung sogar recht gut, da bei diesen Klassen die Verzeichnisse ohnehin eine neue Seite beginnen. Mit scrartcl sollen die Verzeichnisse aber normalerweise keine neue Seite beginnen. In diesem Fall kommt die gezeigte Lösung nicht in Frage. Dasselbe gilt auch, wenn man scrbook oder scrreprt beispielsweise mit Option listof=leveldown verwendet. Selbst wenn man aber in diesem Fall will, dass das Inhaltsverzeichnis auf einer neuen Seite beginnt, will man das für die anderen Verzeichnisse nicht.
Bei scrartcl will man außerdem meist nicht, dass die Verzeichnisse fortlaufend ausgeben wird, also beispielsweise die linke Spalte mit dem Inhaltsverzeichnis beginnt, mit dem Abbildungsverzeichnis fortgesetzt wird, das dann in die rechte Spalte umbrochen wird, wo dann das Tabellenverzeichnis folgt. Stattdessen will man eher, dass unter der einspaltig gesetzten Überschrift des Inhaltsverzeichnisses, dessen Inhalt zweispaltig ausgegeben wird, dasselbe für das Abbildungsverzeichnis darunter etc. Der zweispaltige Modus soll also jeweils erst unter der Überschrift beginnen und nach dem Verzeichnis wieder enden. Dazu eignet sich am besten das Paket multicol. Dieses bietet mit der Umgebung multicols die Möglichkeit den mehrspaltigen Modus innerhalb irgendwo auf einer Seite zu beginnen und irgendwo auf derselben oder einer zukünftigen Seite zu beenden. Die Frage ist, wie man den mehrspaltigen Modus nach der von \tableofcontents, \listoffigures etc. automatisch gesetzten Überschrift beginnen kann. Im Internet kursieren dafür verschiedene Tricks wie man \begin{multicols}{2} und \end{multicols} in die jeweilige Verzeichnisdatei schreiben kann. Für \end{multicols} wird dabei meist etwas wie \AtEndDocument{\addtocontents{…}{…}} verwendet. Allerdings ist dabei nicht einmal sichergestellt, dass die \addtocontents-Anweisung überhaupt noch zu einer Ausgabe führt. Der Trick funktioniert also nicht wirklich zuverlässig.
Mit Hilfe von tocbasic ist es sehr viel einfacher:
\usepackage{multicol}
\BeforeStartingTOC{\begin{multicols}{2}}
\AfterStartingTOC{\end{multicols}}
und schon werden alle via tocbasic gesetzten Verzeichnisse in der gewünschten Form zweispaltig ausgegeben. Über das optionale Argument von \BeforeStartingTOC und \AfterStartingTOC kann man die Funktion auch auf einzelne Verzeichnisse einschränken, beispielsweise
\usepackage{multicol}
\BeforeStartingTOC[toc]{\begin{multicols}{2}}
\AfterStartingTOC[toc]{\end{multicols}}
für das Inhaltsverzeichnis.
Da scrbook, scrartcl und scrreprt das Paket tocbasic für alle drei genannten Verzeichnisse verwenden, funktioniert das bei allen drei Klassen.
Unglücklicherweise kann es dabei genau wie dem oben erwähnten Trick mit \addtocontents zu einem Seitenumbruch zwischen Überschrift und Verzeichnisinhalt kommen. Hierzu ein Beispiel:
\documentclass{scrartcl}
\usepackage{multicol}
\BeforeStartingTOC{\begin{multicols}{2}}
\AfterStartingTOC{\end{multicols}}
\usepackage{blindtext}
\begin{document}
\title{Title}
\author{Author}
\maketitle
\begin{abstract}
\blindtext
\end{abstract}
\tableofcontents
\listoffigures
\blinddocument
\captionof{figure}{first example image}
\captionof{figure}{second example image}
\captionof{figure}{third example image}
\blinddocument
\end{document}
Bei scrbook und scrreprt kann dieses Problem ohne Verwendung von Option listof=leveldown nicht auftreten. Die Methode kommt dort also generell als Lösung in Frage.
Um solche Umbrüche zu verhindern, besitzt die multicols-Umgebung ein optionales Argument. Die Frage ist nun, wie man die Verzeichnisüberschrift in das optionale Argument bekommt. Zwar könnte man mit Hilfe von \deftocheading für jedes Verzeichnis ein neues Überschriftenformat festlegen:
\documentclass{scrartcl}
\usepackage{multicol}
\deftocheading{toc}{\begin{multicols}{2}[\section*{#1}]}
\deftocheading{lof}{\begin{multicols}{2}[\section*{#1}]}
\deftocheading{lot}{\begin{multicols}{2}[\section*{#1}]}
\AfterStartingTOC{\end{multicols}}
\usepackage{blindtext}
\begin{document}
\title{Title}
\author{Author}
\maketitle
\begin{abstract}
\blindtext
\end{abstract}
\tableofcontents
\listoffigures
\blinddocument
\captionof{figure}{first example image}
\captionof{figure}{second example image}
\captionof{figure}{third example image}
\blinddocument
\end{document}
Dabei aber sämtliche Feature, die tocbasic oder die KOMA-Script-Klassen bieten, beispielsweise das bereits erwähnte listof=leveldown, selbst wieder abzubilden, wäre aufwändig. Einfacher ist die Verwendung des Pakets needspace:
\documentclass{scrartcl}
\usepackage{multicol}
\usepackage{needspace}
\BeforeStartingTOC{\needspace{6\baselineskip}\begin{multicols}{2}}
\AfterStartingTOC{\end{multicols}}
\usepackage{blindtext}
\begin{document}
\title{Title}
\author{Author}
\maketitle
\begin{abstract}
\blindtext
\end{abstract}
\tableofcontents
\listoffigures
\blinddocument
\captionof{figure}{first example image}
\captionof{figure}{second example image}
\captionof{figure}{third example image}
\blinddocument
\end{document}
Über den Parameter von \needspace{…} kann man indirekt auch gleich bestimmen, wieviel Verzeichnis min. zusammen auf die aktuelle Seite passen muss.
Die Verwendung dieses Pakets stört auch nicht, wenn man dann doch zu scrreprt oder scrbook wechselt.