LaTeX Extra > LaTeX Pakete > Multirow


Das LaTeX multirow Paket (Version 2.4) wird beim Satz von mehrzeiligen Tabellenzellen verwendet.[1] Durch das Paket ist es nun möglich innerhalb von Tabellen nicht nur Spalten, sondern auch Zeilen zusammen zufassen. Diese zwei Varianten können darüber hinaus auch kombiniert werden, sodass mehrere Spalten zusammen mit mehreren Zeilen zu einer neuen Zelle zusammengefasst werden können.

1.1 Paket einbinden

Das Paket wird mit \usepackage{multirow} eingebunden, es fügt keine weiteren Pakete mit ein.

2 Optionen

Das Paket hat die folgenden zwei Optionen: debug und longtable.

Wenn die Option debug gesetzt wird, werden Informationen über die mehrzeilige Zelle(n) innerhalb der Tabelle(n) in die log Datei geschrieben. Dabei ist zu beachten, dass durch das Einfügen der Option der LaTeX Kompilier eine Fehlermeldung bringt, auch wenn es keinen Fehler an der Stelle gibt. es handelt sich also eher um einen Hinweis, dass der debug Modus aktiviert ist.

Durch den Befehl \multirowdebugfalse wird der debug Modus ab der Stelle an der Befehl gesetzt wurde wieder deaktiviert. Mit dem Befehl \multirowdebugtrue wird der debug Modus wieder aktiviert. Die Befehle sind dann interessant, wenn es mehrere verschiedene Tabellen gibt die multirow verwenden. Durch die Verwendung der Befehle lässt sich die Anzahl der Hinweismeldungen des Kompiliers reduzieren.

Wenn neben dem multirow Paket auch das longtable Paket verwendet wird sollte die Option longtable (\usepackage[longtable]{multirow}) gesetzt werden da es sonst zu Problemen mit dem cline Befehl kommen kann.

3 Der multirow Befehl

Der \multirow Befehl fasst mehrere Zeilen einer Spalte zusammen. Sollen mehrere Zeilen von mehreren Spalten zusammengefasst werden, wird zusätzlich der \multicolumn Befehl benötigt.

3.1 Pflichtangaben

Der Befehl hat drei verpflichtende Angaben, die Anzahl der Zeilen, die Breite der Spalte und den Inhalt der neuen Zelle.

\multirow{Anzahl der Zeilen}{Breite der Spalte}{Inhalt der Zelle}

Anzahl der Zeilen  
Bei Anzahl der Zeilen wird festgelegt über wie viele Zeilen die Zellen reichen soll. Dabei sollte darauf gedacht werden, dass in dieser Spalte keine weiteren Einträge vorhanden.

Breite der Spalte  
Hier kann zwischen einer selbst gesetzten festen Breite, zum Beispiel 2 cm und den Werten * und = gewählt werden.
 
Wird eine feste Breite gewählt, erfolgt auch ein Zeilenumbruch in der Zelle.

Wenn als Breite * gewählt wird, wird die Breite des Inhaltes als Breite verwendet. Wenn der Inhalt breiter ist als die Spalte in der er gesetzt wird, wird der Inhalt über seine Spalte hinaus in die benachbarten Spalten geschrieben.
 
Bei Spalten bei den die Breite bekannt ist wie zum Beispiel bei p{...} Spalten oder X Spalten in der tabularx oder L,C,R oder J Spalten in der tabulary Umgebung kann das = gewählt werden.

Inhalt der Zelle  
Wie sich der Inhalt verhält hängt davon ab wie die Breite der Spalte festgelegt wurde.

Im Fall, dass eine fixe Breite gesetzt wurde, wird der Inhalt in eine parbox mit dieser Breite gesetzt, dadurch kann hier ein manueller Zeilenumbruch mit verwendet werden.

Im Fall, dass als Breite * gesetzt wurde, kann mehrzeiliger Inhalt innerhalb einer tabular oder array Umgebung gesetzt werden.

Im Fall, dass als Breite = gesetzt wurde, wird der Inhalt in eine parbox mit Breite der Spalte gesetzt. Funktioniert aber nur bei den oben genannten p, X, L, C, R und J Spalten zuverlässig.

Beispiel: \multirow{3}{*}{Inhalt}
 

3.2 Optionen des multirow Befehls

Es gibt drei Optionen für den multirow Befehl, vertikale Ausrichtung, Zellenanpassung, Finetuning.

vertikale Ausrichtung  
Standardmäßig wird der Inhalt beziehungsweise die Box einer multirow vertikal zentriert [c] ausgerichtet. Daneben gibt es noch die zwei weiteren Option [t] und [b], wobei [t] für die Ausrichtung nach oben (top) und [b] für die Ausrichtung nach unten (bottom) steht.

Zellenanpassung mit bigstruts  
Hier kann die Anzahl der Zeilen in denen der Befehl \bigstrut verwendet wird angegeben werden. Der Befehl sorgt für einen »Extrabereich« über und unter dem Text in der entsprechenden Zeile. Die Verwendung des Befehls setzt voraus, dass auch das bigstrut Paket mit eingebunden wird.

Finetuning mit vmove  
Über vmove Option kann die Höhe beziehungsweise die Platzierung des Inhaltes der multirow Zelle durch die Angabe einer Länge verändert werden. Ein negativer Wert senkt die Höhe, ein positiver Wert hebt die Höhe an.

Beispiel: \multirow[c]{2}[2]{*}[-10pt]{Inhalt}

3.3 multirow und multicolumn

Die zwei Befehle multicolumn und multirow lassen sich auch kombinieren, sodass eine Tabellenzelle gesetzt werden kann, die sowohl mehrere Zeilen wie auch mehrere Spalten umfasst.

Dabei ist aber darauf zu achten, dass sich der multirow Befehl innerhalb des multicolumn Befehls befindet, wie im nachfolgenden Beispiel gezeigt wird.

Eingabe:

\begin{tabular}{|ccc|c|}
\hline
BBB & CCC & DDD & AAA\\
\hline
\multicolumn{3}{|c|}{\multirow{2}{*}{multicolumn \& multirow}}& 
AAA \\ \cline{4-4}
& & & AAA \\
\hline
BBB & CCC & DDD & AAA\\
\hline
\end{tabular}
Ausgabe:

3.4 Weitere Tabellenpakete

Das multirow Paket kann nicht nur mit der Standardtabellen Umgebung tabular verwendet werden, sondern auch mit einer Vielzahl der anderen Tabellenpakete die es für LaTeX gibt. Wie zum Beispiel mit tabularx, tabulary, booktabs und anderen.

Literatur

[1] The multirow, bigstrut and bigdelim packages, Piet van Oostrum, Øystein Bache, Jerry Leichter, 2019/01/01, version v2.4

Anhang mit Beispielen

Beispiel Multirow Tabelle
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\begin{document}

\begin{tabular}{|l|l|l|}
\hline
Teacher & Title & Year \\
\hline
\hline
\multirow{3}{*}{Dave Miller} & First steps \LaTeX{} & 2004 \\
 & \LaTeX{} course & 2005 \\
 & \LaTeX{} seminar & 2009 \\
\hline
\end{tabular}
\end{document}
Inhalt der multirow Spalte ausrichten
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lll}
\toprule
Teacher & Title & Year \\
\midrule
\multicolumn{1}{c}{\multirow{3}{*}{C}} & First steps \LaTeX{} & 2004 \\ 
 & \LaTeX{} course & 2005 \\ 
 & \LaTeX{} seminar & 2009 \\ 
\bottomrule
\end{tabular}
\end{document}
multirow und cline
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|l|l|l|}
\hline
Teacher & Title & Year \\
\hline
\hline
\multirow{3}{*}{Dave Miller} & First steps \LaTeX{} & 2004 \\ \cline{2-3}
 & \LaTeX{} course & 2005 \\ \cline{2-3}
 & \LaTeX{} seminar & 2009 \\ 
\hline
\end{tabular} 
\end{document}
multirow und bookstabs
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lll}
\toprule
Teacher & Title & Year \\
\midrule
\multirow{3}{*}{Dave Miller} & First steps \LaTeX{} & 2004 \\ 
 & \LaTeX{} course & 2005 \\ 
 & \LaTeX{} seminar & 2009 \\ 
\bottomrule
\end{tabular}
\end{document}
vertikales Ausrichten von multirow und booktabs
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow} % new version 2.2
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lll}
\toprule
Teacher & Title & Year \\
\midrule
\multirow[t]{3}{*}{Top} & First steps \LaTeX{} & 2004 \\ 
 & \LaTeX{} course & 2005 \\ 
 & \LaTeX{} seminar & 2009 \\ 
\bottomrule
\end{tabular}
\end{document}
Zeilenumbruch bei multirow und fix width
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{lll}
\toprule
Teacher & Title & Year \\
\midrule
\multirow{3}{3cm}{but fix width could work} & First
 steps \LaTeX{} & 2004 \\ 
 & \LaTeX{} course & 2005 \\ 
 & \LaTeX{} seminar & 2009 \\ 
\bottomrule
\end{tabular}
\end{document}
tabularx kombiniert mit multirow
Eingabe Ausgabe
\documentclass{article}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{0.8\textwidth}{Xll}
\toprule
Teacher & Title & Year \\
\midrule
\multirow{3}{=}{ neither \textbackslash newline nor
 \textbackslash linebreak nor \textbackslash\textbackslash
will work in multirow} & First steps \LaTeX{} & 2004 \\ 
 & \LaTeX{} course & 2005 \\ 
 & \LaTeX{} seminar & 2009 \\ 
\bottomrule
\end{tabularx}
\end{document}