Anspruchsvolle Tabellen mit LaTeX gestalten

Aus LinuxUser 01/2015

Anspruchsvolle Tabellen mit LaTeX gestalten

© Yana Gayvoronskaya, 123RF

Tafelfertig

Die LaTeX-Grundausstattung erlaubt nur das Setzen recht schlichter Tabellen. Mit einigen Zusatzpaketen bohren Sie die Funktionen für professionell gestaltete Tabellen kräftig auf.

LaTeX setzt nicht nur Ihre Texte in ansprechendem Layout, sondern bringt auch Daten und Inhalte in Tabellen übersichtlich und ansprechend in Form. Die LaTeX-Grundausstattung bringt die Umgebung tabular mit, die für grundlegende Tabellenfunktionen alles Nötige bereitstellt. Wer weitere Pakete installiert, dem liefert LaTeX noch mehr Möglichkeiten für den professionellen Einsatz von Tabellen.

Aus der Vielzahl der verfügbaren Pakete stellen wir Ihnen im Rahmen des Artikels folgende vor: Das Paket booktabs [1] optimiert Ihre Tabellen für den Druck. Wer es farbig will, liegt mit dem Paket colortbl [2] genau richtig. Das Paket multirow [3] erlaubt es, Zellen einer Spalte zu verbinden. Wer die Funktionen einer Tabellenkalkulation braucht, findet mit dem Paket spreadtab [4], was er sucht. Viele weitere Möglichkeiten für den Umgang mit Tabellen bringt das Paket tabu [5] mit.

Beispiel-Listings

Der Umfang der vollständigen LaTeX-Beispiele würde den Rahmen des Artikels sprengen, in den Listing-Kästen finden Sie daher nur die im Artikel referenzierten Passagen. Die ungekürzten Beispiele finden Sie in unserem Download-Bereich [14].

Die Möglichkeiten, die LaTeX für den Tabellensatz bietet, erläutern wir im Folgenden am Beispiel eines Stundenplans und einer Rechnung. Listing 1 enthält den Beispielcode für den Stundenplan, Abbildung 1 zeigt das Ergebnis. Den Code für die Rechnung finden Sie in Listing 2, das Ergebnis in Abbildung 2.

Listing 1

...
\usepackage{tabu,multirow,hyperref,colortbl,xcolor}
...
\title{Stundenplan}
\author{}
\date{WS 2014/2015}
...
\begin{document}
\maketitle
...
\newcommand{\minitab}[2][c]{\begin{tabular}{#1}#2\end{tabular}}
\begin{tabu}{|>{\columncolor[named]{lightgray}}c|X[l]X[r]|X[l]X[r]|X[l]X[r]|X[l]X[r]|X[l]X[r]|}
...
\rowcolor[named]{gray}
\textsf{\textbf{Zeit}} & \multicolumn{2}{c|}{\textsf{\textbf{Montag}}} & ... \\
...
\multirow{-2}*{\minitab[c]{\textsf{\textbf{10--12}}}} & \multicolumn{2}{c|}17 {\cellcolor[named]{green}\textbf{VL Ethik}} & ... \\
\hline
...
\multirow{-2}*{...} & ... & \multicolumn{2}{c|}{\cellcolor[named]{blue}\textbf{HS Wahrheitstheorien}\footnote{14-tägig.}} & & & & \\
...
\end{tabu}
\end{document}

Abbildung 1: Dieser Stundenplan ist ein Beispiel für die Möglichkeiten, die der Tabellensatz mit LaTeX bietet.

Abbildung 1: Dieser Stundenplan ist ein Beispiel für die Möglichkeiten, die der Tabellensatz mit LaTeX bietet.

Gerüst aufstellen

Statt der LaTeX-Standardumgebung tabular für Tabellen verwenden Sie das Paket tabu (Listing 1, Zeile 2), das eine Vielzahl von Möglichkeiten für das Gestalten von Tabellen mitbringt. Nach den Titelinformationen in der Präambel (Zeilen 4 bis 6) und dem Befehl, der diese Titelinformationen im Dokument ausgibt (Zeile 9), kann es mit der Tabelle losgehen.

Die Tabelle steht in der tabu-Umgebung (Zeile 12). Die zweite der geschweiften Klammern des Befehls definiert elf Spalten, der senkrechte Strich | zeichnet eine vertikale Linie an der entsprechenden Stelle. Die Zellen der ersten Spalte lassen Sie zentriert ausrichten. Neben den üblichen Befehlen zum Ausrichten der Zellen stellt tabu noch den Befehl X bereit, der die so gekennzeichneten Spalten gleichmäßig über die Breite verteilt. Die Ausrichtung geben Sie in einer eckigen Klammer dahinter an, hier abwechselnd links- und rechtsbündig.

Überlänge

Sowohl die LaTeX-Standard-Umgebung tabular, als auch tabu erzeugen nur Tabellen ohne Seitenumbruch. Soll die Tabelle über mehrere Seiten laufen, dann verwenden Sie stattdessen am besten die Umgebung longtabu, die einen integralen Teil des tabu-Pakets darstellt.

Unser Stundenplan erfordert für die Uhrzeiten in der ersten Spalte jeweils zwei miteinander verbundene übereinanderliegende Zellen. Dies erledigt auch in einer tabu-Tabelle das Paket multirow. Zunächst definieren Sie dazu den neuen Befehl \minitab (Zeile 11), mit dessen Hilfe Sie dann später eine Tabelle innerhalb einer Tabelle generieren.

Übereinanderliegende Zellen verbindet der Befehl \multirow (Zeile 17). Üblicherweise steht er in der obersten der Zellen, die verbunden werden sollen; die Anzahl der Zellen geben Sie als positive Zahl innerhalb der ersten geschweiften Klammer an. Im Beispiel gehen wir umgekehrt vor, um die Zellen einfärben zu können, ohne dass dies den Text überdeckt. Der Befehl steht in der untersten der zu verbindenden Zellen, und die Anzahl der Zellen nach oben hin tragen Sie als negativen Wert in die erste geschweifte Klammer ein.

In der Titelzeile verbinden Sie für die einzelnen Wochentage horizontal jeweils zwei Zellen (Zeile 15). Dafür kommt der Befehl \multicolumn zum Einsatz, in dessen erste geschweifte Klammer die Anzahl der zu verbindenden Zellen definiert wird. Die Ausrichtung der Zellen einschließlich der zu zeichnenden vertikalen Linien gehört in die zweite der geschweiften Klammern, der Inhalt dann in die dritte.

Wie bei Tabellen üblich trennt auch in tabu ein Kaufmannsund (&) die einzelnen Zellen einer Spalte voneinander ab. Der doppelte umgekehrte Schrägstrich (\\) dient dazu, eine Zeile abzuschließen. Horizontale Linien zeichnen Sie wie gewohnt mit dem Befehl \hline.

Für die LaTeX-Standard-Umgebung tabular stellen Fußnoten und deren korrekte Verlinkung innerhalb von Tabellen ein gewisses Problem dar, das sich nur durch Tricks umgehen lässt. In tabu dagegen funktionieren Fußnoten problemlos (Zeile 20). Laden Sie wie in Zeile 2 zusätzlich das Paket hyperref [6], dann klappen auch Verlinkungen.

Farbenfroh

Tabellen müssen nicht nur aus schwarzen Linien bestehen. Möchten Sie ein wenig Farbe ins Spiel bringen, dann liegen Sie mit dem Paket colortbl genau richtig (Listing 1, Zeile 2). Das Paket lädt seinerseits automatisch das Paket color, das rudimentäre Funktionen für den Einsatz von Farben bereitstellt. Wenn Sie auf umfangreichere Möglichkeiten für den Umgang mit Farben nicht verzichten wollen, laden Sie zusätzlich das Paket xcolor [7].

Da wir bereits in einem anderen Artikel ausführlich auf die Verwendung von Farben mit LaTeX eingegangen sind [8], beschränken wir uns an dieser Stelle auf das Einfärben von Tabellen. Wie bei einem Tabellenkalkulationsprogramm lassen sich auch mit LaTeX einzelne Zelle oder auch auf einen Schlag ganze Zeilen oder Spalten einfärben.

Im Stundenplan soll die oberste Zeile mit den Wochentagen in einem dunklen Grau erscheinen. Der Befehl dafür steht im Bereich, der den Zeileninhalt beschreibt (Zeile 13). Die Spalte mit den Uhrzeiten bekommt ein helles Grau (Zeile 12). Der entsprechende Aufruf dafür findet in der zweiten geschweiften Klammer des Befehls Platz, der die tabu-Umgebung eröffnet.

Alle Zellen mit gleichen Lehrveranstaltungen bekommen jeweils dieselbe Farbe (Zeile 17). Genügt das Einfärben der Zelleninhalte nicht aus, dann bietet Ihnen die LaTeX-Klasse colortbl weitere Möglichkeiten, die Tabelle farbig zu gestalten. Mir ihr färben Sie zum Beispiel die Linien der Tabelle bunt ein.

Druckreif

Das Paket booktabs optimiert Tabellen für den Druck, etwa für das Gestalten von Tabellen in Büchern, wissenschaftlichen Veröffentlichungen, Artikeln oder – wie in unserem Beispiel – schlicht in einer Rechnung. Nach dem Laden des Pakets in der Präambel (Listing 2, Zeile 3), passt sich das Layout der Tabelle automatisch an. Das Paket erhöht den Abstand zwischen Inhalt und Zellenrand, sodass die Tabelle optisch ansprechender wirkt. Das Layout verzichtet bewusst auf vertikale Linien und Farben, sodass die Tabelle leichter wirkt.

Den oberen und unteren Rand der Tabelle bildet jeweils eine dicke horizontale Linie, die Sie mit den Befehlen \toprule und \bottomrule einfügen (Zeilen 7 und 14). Für dünne horizontale Linien innerhalb der Tabelle steht der Befehl \midrule (Zeile 9) zur Verfügung, der den Befehl \hline ersetzt. Das Layout sieht horizontale Linien nur unter Spaltenüberschriften vor, zwischen den einzelnen Werten erscheinen keine horizontalen Linien.

Listing 2

...
\usepackage[ngerman]{babel} % Sprache: deutsch
\usepackage{booktabs,spreadtab,tabu,numprint,eurosym}
...
\nprounddigits{2}
\begin{spreadtab}{{tabu}{rXN{3}{2}N{4}{2}r}}
\toprule
@Anz. & @Posten & @\multicolumn{1}{r}{Einzelpreis} & @\multicolumn{1}{r}{Gesamtpreis} & @ \\
\midrule
10 & @Edwin A. Abbott: Flatland & :={9.95}\ \euro & :={a2*c2}\ \euro & @[2] \\
...
@\multicolumn{2}{l}{Rechnungsbetrag} & @\multicolumn{1}{r}{} & :={sum(d2:d4)}\ \euro & @ \\
...
\bottomrule
\end{spreadtab}
\end{document}

Abbildung 2: Diese Rechnung zeigt ein weiteres Beispiel für die Möglichkeiten, die der Tabellensatz mit LaTeX bietet. Auch Tabellenkalkulation stellt für LaTeX kein Problem dar.

Abbildung 2: Diese Rechnung zeigt ein weiteres Beispiel für die Möglichkeiten, die der Tabellensatz mit LaTeX bietet. Auch Tabellenkalkulation stellt für LaTeX kein Problem dar.

Gut kalkuliert

LaTeX kann nicht nur Tabellen zeichnen, sondern mithilfe des Pakets spreadtab darin auch Rechenoperationen ausführen. Die Tabellenkalkulation gehört in die Umgebung spreadtab, in der Sie auch wählen, mit welcher Umgebung LaTeX die Tabelle erzeugen soll (Listing 2, Zeile 6). Statt tabular-Umgebung kommt auch in diesem Beispiel tabu zum Einsatz. Als Optionen geben Sie dem Aufruf die Ausrichtung der zu erzeugenden fünf Spalten mit. Neben den üblichen Parametern und der bereits vorgestellten Option X von tabu verwendet das Beispiel die Option N aus dem Paket numprint [9]. Sie sorgt dafür, dass LaTeX die Zahlen am Dezimalkomma ausrichtet.

In der ersten geschweiften Klammer der Option N steht die Anzahl der Zeichen vor dem Dezimalkomma, in der zweiten die Anzahl der Zeichen dahinter. Welche Zeichen LaTeX als Dezimal- und Tausendertrenner nutzt, geben Sie über die Spracheinstellung des Dokuments vor. Das Beispiel wählt über das babel-Paket [10] Deutsch als Sprache aus (Zeile 2), sodass LaTeX ein Komma als Dezimaltrenner und einen kleinen Leerraum als Tausendertrenner erzeugt. Im LaTeX-Code dagegen müssen Sie als Dezimaltrenner stets einen Punkt verwenden (Zeile 10) und dürfen die Tausender-Stellen auf keinen Fall vom Rest der Zahl abtrennen.

Die Beträge in der Rechnung soll LaTeX stets mit zwei Nachkommastellen ausgeben. Dafür sorgt der Befehl nprounddigits in Zeile 5. Das Paket eurosym [11] stellt dann noch den Befehl für die Ausgabe des Euro-Zeichens bereit (Zeile 12). In spreadtab erwartet LaTeX grundsätzlich in jeder Zelle eine Zahl. Steht stattdessen Text darin und bleibt die Zelle leer, müssen Sie dies durch ein vorangestelltes @ markieren (Zeile 9). Richtet sich eine Spalte über die Option N am Dezimalkomma aus, gilt es, beim Text etwas zu tricksen: Sie packen ihn dann stets in einen \multicolumn-Befehl, auch wenn er nur eine Zelle umfasst (Zeile 8).

Die einzelnen Zellen adressieren Sie in Funktionen wie in einer Tabellenkalkulation. Die erste Zelle links oben hat die Adresse A1, die Zelle rechts daneben B1, die Zelle unter dieser B2, und so weiter. Auf diese Weise binden Sie die Werte einzelner Zellen in Berechnungen ein. Steht in einer Zelle sowohl Text als auch eine Zahl, kennzeichnen Sie die Zahl durch :={Zahl} (Zeile 10).

WYSIWYG

Wer üblicherweise mit einer Tabellenkalkulation arbeitet, dem mag der Tabellensatz mit LaTeX anfangs etwas gewöhnungsbedürftig erscheinen. Statt in einem übersichtlichen Tabellenraster müssen Sie mit abstraktem Code hantieren. Wollen Sie nicht auf WYSIWYG verzichten, erstellen Sie die Tabellen mit LibreOffice Calc und konvertieren sie mit dem Calc2LaTeX-Makro [12] in LaTeX-Code (Abbildung 3).

Abbildung 3: Das Office-Makro Calc2LaTeX erstellt LaTeX-Code aus LibreOffice-Calc-Tabellen.

Abbildung 3: Das Office-Makro Calc2LaTeX erstellt LaTeX-Code aus LibreOffice-Calc-Tabellen.

Calc2LaTeX-Makro installieren

Laden Sie das Makro Calc2LaTeX herunter und entpacken Sie die Datei. Öffnen Sie dann LibreOffice und wählen Sie dort den Menüpunkt Extras | Makros | Makros verwalten | LibreOffice Basic … aus. Es erscheint ein Dialog, in dem Sie auf Verwalten… klicken. Anschließend wählen Sie den Reiter Bibliotheken aus und klicken dort auf Importieren …. Wechseln Sie in den Ordner, in den Sie die Dateien von Calc2LaTeX entpackt haben, und wählen Sie die Datei script.xlb aus. Bestätigen Sie abschließend mit OK.

Markieren Sie dazu in Ihrer Calc-Datei die relevanten Zellen und wählen Sie anschließend den Menüpunkt Extras | Makros | Makro ausführen… aus. Es erscheint ein Dialog, in dem Sie unter Bibliothek | Meine Makros den Eintrag Calc2LaTeX anklicken. Wählen Sie dann aus der Liste der Makros Main aus und klicken Sie auf Ausführen. Im abschließenden Fenster bietet das Makro noch eine Reihe weiterer Einstellungsmöglichkeiten an. Zum Abschluss erscheint dann der LaTeX-Code, den Sie direkt in Ihr LaTeX-Dokument übernehmen oder in einer Datei abspeichern.

Eine Alternative bietet der Online-Table-Editor [13]: Mit ihm erstellen Sie im Webbrowser Ihre Tabelle und übernehmen den ausgegebenen LaTeX-Code dann in das LaTeX-Dokument (Abbildung 4).

Abbildung 4: Mit dem Online-Table-Editor erzeugen Sie den benötigten Tabellen-Code im Browser.

Abbildung 4: Mit dem Online-Table-Editor erzeugen Sie den benötigten Tabellen-Code im Browser.

Beide Lösungen besitzen allerdings einen deutlichen Nachteil: Sowohl Calc2LaTeX als auch der Online-Table-Editor nutzen die tabular-Umgebung ohne Zusatzpakete, sodass die Möglichkeiten recht begrenzt bleiben. Die Farbangaben kolorierter Zellen bleiben beispielsweise grundsätzlich auf der Strecke.

Fazit

Mit den richtigen Zusatzpaketen bietet LaTeX umfangreiche Möglichkeiten, professionell Tabellen zu setzen. Dabei eignet es sich nicht nur hervorragend für statische Tabellen, sondern konkurriert auch mit Tabellenkalkulationsprogrammen. Um neue Werte in eine Tabelle einzutragen und die Berechnungen zu aktualisieren, müssen Sie allerdings die Quelldatei öffnen, bearbeiten und anschließend einen LaTeX-Lauf starten. Erst dann erscheinen die neuen Werte auch in der Ausgabe. 

Der Autor

Daniel Tibi ist Benediktiner-Mönch der Abtei Kornelimünster in Aachen. Er promoviert in Kirchenrecht an der Katholieke Universiteit Leuven. Als Wissenschaftler nutzt er gekonnt die umfangreichen Möglichkeiten von LaTeX aus, als freier Autor schreibt er über seine Erfahrungen mit dem Textsatzsystem.

Infos

[1] Paket Booktabs: http://www.ctan.org/pkg/booktabs

[2] Paket Colortbl: http://www.ctan.org/pkg/colortbl

[3] Paket Multirow: http://www.ctan.org/pkg/multirow

[4] Paket Spreadtab: http://www.ctan.org/pkg/spreadtab

[5] Paket Tabu: http://www.ctan.org/pkg/tabu

[6] Paket Hyperref: http://www.ctan.org/pkg/hyperref

[7] Paket Xcolor: http://www.ctan.org/pkg/xcolor

[8] Buntes LaTeX mit Xcolor: Daniel Tibi, “Kunterbunt”, LU 01/2014, S. 21, https://www.linux-community.de/31562

[9] Paket Numprint: http://www.ctan.org/pkg/numprint

[10] Paket Babel: http://www.ctan.org/pkg/babel

[11] Paket Eurosym: http://www.ctan.org/pkg/eurosym

[12] Calc2LaTeX: http://calc2latex.sourceforge.net

[13] Online-Table-Editor: http://truben.no/table

[14] Beispiel-Listings: http://linux-user.de/Downloads/2015/01/

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 01/2015 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben