LaTeX Extra > LaTeX Pakete > Multicol


Das Paket multicol (Neuste Version v1.8v 2018/12/27) erlaubt es den Text innerhalb eines Dokumentes in mehreren Spalten zu setzen.[1] Im Gegensatz zur bekannten Option twocolumn der Standard Dokumentenklassen ist es nach dem Einbinden des Paktes möglich eine beliebige Anzahl an Spalten zu verwenden.

1.1 Einbinden des Paketes

Das Paket wird mit \usepackage{multicol} eingebunden und bindet selbst keine weiteren Pakete ein.

2 Optionen

Die acht Optionen des Paketes dienen überwiegend der Fehlerbehandlung beziehungsweise sie geben zusätzliche Informationen aus. Für die meisten Nutzer dürfte die Optionen keine Rolle bei der Anwendung des Paketes. Eine mögliche Ausnahme stellt die Option colaction dar, wird diese gesetzt ist Nutzung eines zusätzlichen Befehls möglich. Dieser würde aber den Rahmen dieser kurzen Einführung sprengen.

3 multicols Umgebung

Innerhalb der multicols Umgebung wird der Inhalt mehrspaltig gesetzt.

\begin{multicols}{Anzahl der Spalten}
Inhalt der Spalten
\end{multicols}

Der Inhalt wird dabei gleichmäßig auf die Spalten verteilt. Es ist also nicht so, dass zuerst die erste Spalte befüllt wird und dann die nächste und so weiter, sondern es wird versucht gleich hohe Spalte zu setzen. Dadurch kann es passieren, wenn zu wenig Inhalt gesetzt wird, dass nicht die ganze Seitenhöhe gefüllt wird.

Sollen die Spalten nach und nach aufgefüllt werden, kann die Umgebung multicols* verwendet werden. Dabei wird als mögliche Höhe die noch freie Höhe der Seite verwendet.

\begin{multicols*}{Anzahl der Spalten}
Inhalt der Spalten
\end{multicols*}

Die Spalten werden nach und nach mit Inhalt aufgefüllt.

3.1 Option von multicols und multicols*

Neben dem Pflichtargument, die Anzahl der Spalten, gibt es auch noch ein Optionales Element. Mit Hilfe des optionalen Element ist möglich einen Text über die Spalten zu setzen, der innerhalb einer einspaltigen Umgebung steht.

\begin{multicols}{Anzahl der Spalten}[Optionales Element]
Inhalt der Spalten
\end{multicols}
\begin{multicols*}{Anzahl der Spalten}[Optionales Element]
Inhalt der Spalten
\end{multicols*}

3.2 columnbreak

Mit Hilfe des Befehls \columnbreak kann eine Art Seitenumbruch durchgeführt werden.

Innerhalb der multicols Umgebung führt der Befehl dazu, dass der Inhalt der Spalten sich an der Höhe des Umbruchs ausrichtet. Die zwei Spalten die von dem Umbruch betroffen sind, sind etwa gleich hoch.

Innerhalb der multicols* Umgebung führt der Befehl dazu, dass der Inhalt nach dem Umbruch in die nächste Spalte geschrieben wird. Die zwei Spalten sind nicht notwendigerweise gleich hoch.

4 Spaltenabstand und Spaltentrenner

Der Abstand zwischen den Spalten, columnsep, wird automatisch berechnet. Er lässt sich aber auch händisch anpassen. Dazu wird der Abstand durch den setlength Befehl auf die gewünschte Breite gesetzt, im nachfolgenden Beispiel auf den Abstand von 48pt.

\setlength{\columnsep}{48pt}

Zwischen die einzelnen Spalten lässt sich auch ein durchgehender Strich columnseprule ziehen. Dazu wird die Breite des Striches angepasst, im nachfolgenden Beispiel auf 1 pt.

 
\setlength{\columnseprule}{1pt}

Wenn man die Farbe des Striches ändern will, kann dies durch eine Neudefinition des Kommandos columnseprulecolor erreicht werden. Dabei ist aber zu beachten, dass ein entsprechendes Farbpakete wie xcolor oder color eingebunden wird. Im nachfolgenden Beispiel wird die Farbe des Strichs auf grün gesetzt.

 
\renewcommand{\columnseprulecolor}{\color{green}}
Vollständiges Beispiel:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{multicol}
\usepackage{xcolor}
\usepackage[a4paper, left=3cm, top=2cm]{geometry}
\begin{document}
...
\setlength{\columnsep}{48pt}
\setlength{\columnseprule}{1pt}
\renewcommand{\columnseprulecolor}{\color{green}}
\begin{multicols*}{3}[Der Text soll über allen Spalten stehen]
ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz \columnbreak auch 
nach dem Umbruch viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text ganz viel Text geht das nicht? warum 
keine dritte spalte viel Text ganz viel Text ganz viel Text geht das nicht? warum keine dritte spalte 
\end{multicols*}
...

\end{document}

5 Tabellen und Bilder

Beim Einfügen von Tabellen und Bilder muss man zuerst dazwischen unterscheiden, ob die Tabelle beziehungsweise das Bild einfach so eingefügt werden soll, das heißt ohne zusätzliche Beschriftung. Oder ob die Tabellen und die Bilder als Gleitobjekte (floats) mit oder ohne Beschriftung eingebunden werden sollen. Also in diesem Fall innerhalb einer table Umgebung bei Tabellen und innerhalb einer figure Umgebung wenn es sich um Bilder handelt.

Der erste Fall, das einfach so einfügen ist auch innerhalb der multicols Umgebung möglich.

Der zweite Fall, das einfügen als float ist nicht so einfach möglich. Unabhängig davon ob die multicols oder multicols* Umgebung verwendet wird, erhält man die folgende Warnung, wenn die Standardumgebungen table beziehungsweise figure verwendet wurden:

Package multicol Warning: Floats and marginpars not allowed inside `multicols' 
environment!.

Im Prinzip wäre es möglich auf die Sternvarianten der table und figure Umgebung auszuweichen, also table* beziehungsweise figure* zu verwenden. Dies laufen zwar frei von Fehlern und Warnungen durch, aber das Ergebnis stimmte meistens nicht mit der Erwartung überein. Zwar können auch hier Platzierungsoptionen (t für oben und b für unten) gesetzt werden, aber allzu oft landet die Tabelle oder das Bild auf der nächsten Seite.

5.1 wrapfig

Um das Problem zu lösen, wird gelegentlich das wrapfig Paket als workaround vorgeschlagen. Damit ist es durchaus möglich Tabellen und Bilder als Gleitobjekte zu setzen. Aber das Paket wrapfig ist dafür gemacht worden schriftumflossene Tabellen und Bilder zu setzen. Wenn damit innerhalb der multicols beziehungsweise multicols* Umgebungen Tabellen und Bilder gesetzt werden, sind diese in der Regel an einer Seite von Schrift umgeben.

5.2 caption

Das Problem lässt sich relativ einfach mit dem captionof Befehl aus dem caption Paket und der Verwendung der multicols* Umgebung lösen.

Vollständiges Beispiel:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage[a4paper, left=3cm, top=2cm]{geometry}
\begin{document}
...
\setlength{\columnsep}{48pt}
\setlength{\columnseprule}{1pt}
\renewcommand{\columnseprulecolor}{\color{green}}
\begin{multicols*}{3}
Hier wird mal ausprobiert ob man auch eine Tabelle in die Spalten stecken kann 
\begin{center}
\begin{tabular}{rcl}
A & B & C \\
\hline
1 & 2 & 3 \\
\end{tabular}
\captionof{table}{Tabellen Beispiel nur mit captionof}
\end{center}
Dazu wurde absichtlich nur eine kleine Tabelle genommen. Da bei drei Spalten wird der Platz schon recht eng. Jetzt noch ein Bild
\begin{center}
\includegraphics[scale=0.5]{picture}
\captionof{figure}{Ein Bild}
\end{center}
in die Spalten rein gepackt.
\end{multicols*}
...
\end{document}

6 Weitere Anwendungen

Die multicol Umgebung kann auch dazu verwendet werden um zum Beispiel Auflistungen mehrspaltig zu setzen.

Beispiel Eingabe
\begin{multicols}{4}
 \begin{enumerate}
  \item HIMMEL
  \item NEBEL
  \item REGEN
  \item SCHNEE
  \item SONNE
  \item WETTER
  \item WIND
  \item WOLKEN
 \end{enumerate}
\end{multicols}
Ausgabe

Literatur

[1] Frank Mittelbach An environment for multicolumn output. Version v1.8v 2018/12/27. Download von http://mirrors.ctan.org/macros/latex/required/tools/multicol.pdf