«

»

Apr 06

LaTeX tabellarisch – Tabellen mit LaTeX setzen

Für den Satz von Tabellen gibt es standardmäßig 3 Umgebungen, die dies ermöglichen. Weitere Umgebungen mit zusätzlichen Möglichkeiten sind über Zusatzpakete verfügbar.

Die Syntax dieser Standardumgebungen sind:

Die array-Umgebung kann nur im mathematischen Modus verwendet werden und wird insbesondere für Matrizen verwendet. Syntax und Bedeutung der Parameter sind jedoch wie die der Tabellenumgebungen.

Grundsätzlich sind die Tabellenumgebungen wie folgt aufgebaut:

  • Die Umgebung wird mit Parameter eingerichtet, die das Aussehen der Tabelle beeinflussen. Hierzu zählen u.a. die Anzahl der Spalten, ggf. Breite der Spalten, vertikale Linien zur Trennung der Spalten…
  • Die Tabellenzeilen enthalten den Text für die Tabellen, Anweisungen für das Zusammenführen von mehreren Zellen innerhalt einer Zeile zu einer gemeinsamen Zelle, …

Tabellen-Parameter

  • pos: Gibt die Positionierung in vertikaler Richtung an. Die folgenden Werte sind möglich:
    • t: Die oberste Tabellenzeile und die laufende Umgebung werden zusammen ausgerichtet.
    • b: Die unterste Tabellenzeile und die laufende Umgebung werden zusammen ausgerichtet.
    • keine Angabe: Die Tabellenmitte und die laufende Umgebung werden zusammen ausgerichtet.
  • breite: In der tabular*-Umgebung kann die Gesamtbreite der Tabelle angegeben werden. Bei den anderen beiden Tabellenumgebungen wird diese dynamisch von LaTeX anhand des Inhalts und der Spaltendefinitionen selbst bestimmt. Wird eine Breite angegeben, so sollte nach dem ersten Eintrag der Spaltendefinition (sp_form) @{\extracolsep{\fill} oder @{\extracolsep\fill} eingefügt werden.
  • sp_form: Dies bestimmt einerseits die Anzahl der Spalten in der Tabelle, andererseits die Ausrichtung des Spaltentextes. Zusätzlich können hier vertikale Trennlinien, in jeder Zelle einer Spalte einzufügenden Zusatztext u.a. angegeben werden.
    • Für die Spaltenformatierung stehen 4 Möglichkeiten zur Verfügung:
      • l: Der Spalteninhalt wird linksbündig eingefügt.
      • c: Der Spalteninhalt wird zentriert eingefügt.
      • r: Der Spalteninhalt wird rechtsbündig eingefügt.
      • p{br}: Der Spalteninhalt wird im Blocksatz eingefügt. Die Breite der Spalte wird durch br angegeben. Die vertikale Ausrichtung erfolgt an der obersten Zeile.
    • Häufig werden gleiche Spaltenformatierungsdefinitionen mehrfach benötigt. Hierfür stellt LaTeX eine einfache Möglichkeit bereit, eine Spaltenformatierungsdefinition mehrfach zu verwenden. Die Syntax hierfür lautet:
      • *{num}{sp_form}: Dies bedeutet, die sp_form wird insgesamt num-Mal verwendet. Z.B. ist *{5}{|c}| äquivalent mit |c|c|c|c|c|.
    • Für den linken und rechten Rand einer Spalte stehen weitere Formatierungsmöglichkeiten zur Verfügung:
      • |: fügt eine vertikale Linie ein.
      • ||: fügt eine doppelte vertikale Linie ein.
      • @{text}: Fügt den Inhalt von text zwischen die beiden Spalten ein, die links und rechts hiervon definiert sind. Dabei kann text auch gültige LaTeX-Kommandos beinhalten.

Tabellenzeilen

Der Inhalt einer Tabelle wird innerhalb der Tabellenumgebung definiert. Hierbei werden einzelne Tabellenzeilen durch \\ getrennt, die einzelnen Zellen einer Zeile werden durch ein &-Zeichen voneinander getrennt. Hierdurch ist es auch möglich, Tabellenzeilen über mehrere Zeilen in der Quelldatei einzutragen und hier eine übersichtlichere Darstellung zu erreichen. Die Tabellenzeilen sollten so viele Spalten enthalten, wie sie in den Umgebungsparametern definiert wurden – die Spalten können auch leer sein (d.h. zwischen den & existiert kein Text, der von LaTeX gesetzt wird). Andernfalls werden vertikale Linien nicht vollständig gezeichnet.

Innerhalb einer Zelle geänderte Einstellungen (z.B. Schrifttyp) hat keinen Einfluß auf die anderen Zellen.

Zusätzlich zum Text können noch weitere Steuerungsbefehle für den Satz einer Tabelle per Zeile definiert werden:

  • \hline: Erzeugt eine horizontale Linie über die komplette Tabellenbreite hinweg. Dabei darf dieses Kommando nur in der ersten Zeile oder nach einem Zeilenende (\\) vorkommen. Wird dieses Kommando zweimal hintereinander angegeben, so wird eine Doppellinie gezeichnet.
  • \cline{n-m}: Erzeugt eine horizontale Linie von Spalte n (linker Rand) bis zur Spalte m (rechter Rand). Zur Positionierung gilt das gleiche wie bei \hline. Dieses Kommando kann auch mehrfach mit unterschiedlichen Spaltennummern für eine Zeile angegeben werden.
  • \multicolumn{num}{sp}{text}: Zusammenführung der nächsten num-Zellen zu einer gemeinsamen Zelle. Die Ausrichtung der neuen Zelle wird über sp angegeben und kann die Werte l, c oder r annehmen. Zusätzlich können @-Zusätze (siehe oben) sowie vertikale Linien eingefügt werden. Eine num = 1 kann dazu verwendet werden, um eine Zelle anders wie den Rest der Zelle zu formatieren. Dieses Kommando darf nur am Beginn einer Zeile oder direkt nach einem Spaltentrennzeichen (&) angegeben werden.
  • \vline: Erzeugt einen vertikalen Strich über die Zeilenhöhe.
  • \tabularnewline[abst]: Alternative Zeilenendemarkierung, wenn \\[abst] zu Mißverständnissen führt.

Tabellenstil beeinflussen

Für den Stil einer Tabelle gibt es mehrere Einstellungsmöglichkeiten, die global oder innerhalb einer Umgebung modifiziert werden können (jedoch nicht innerhalb einer Tabellenumgebung). Die Einstellmöglichkeiten sind:

  • \tabcolsep: halbe Breite zwischen Spalten in tabular– und tabular*-Umgebungen.
  • \arraycolsep: wie \tabcolsep, nur für die array-Umgebung.
  • \doublerulesep: Abstand von Doppellinien.
  • \arrayrulewidth: Dicke der Linien einstellen.

Diese 4 Einstellungsmöglichkeiten können über eine \setlength-Erklärung modifiziert werden.

Zusätzlich gibt es noch das Kommando \arraystretch, womit der Zeilenabstand in der Tabelle bestimmt wird. Soll dies geändert werden, muß das Kommando redefiniert werden. Als Kommandoinhalt wird ein Faktor angegeben, der mit dem normalen Zeilenabstand multipliziert wird.

Erweiterungen

Für die Tabellenumgebungen gibt es mehrere Erweiterungen, die die Funktionalität des Tabellensatzes vervollständigen und eine größere Spannbreite an Formatierungsmöglichkeiten bieten. Einige dieser Erweiterungen sollen im Folgenden vorgestellt werden.

array.sty

Dieses Paket von Frank Mittelbach erweitert die Möglichkeiten der Spaltenformatierungen für die tabular-, tabular*– und array-Umgebungen. Die Positionierungs- und Breitenangaben bleiben dabei unverändert.

Neu hinzugekommen sind die folgenden Spaltenformatierungsparameter:

  • m{breite}: Wie der Spaltenformatierungsparameter p, nur daß hier der Text mittig in vertikaler Richtung ausgerichtet wird.
  • b{breite}: Wie der Spaltenformatierungsparameter p, nur daß hier der Text vertikal an der untersten Zeile ausgerichtet wird.
  • >{erkl}: Die angegebene Erklärung (erkl) wird vor jedem Spalteneintrag gesetzt und kann neben normalen Text auch Befehlsfolgen enthalten. Kann direkt vor einer l-, c-, r-, p{…}-, m{…}– oder b{…}– Spaltenausrichtungsformatierungsangabe angegeben werden.
  • <{erkl}: Die angegebene Erklärung (erkl) wird nach jedem Spalteneintrag gesetzt und kann neben normalen Text auch Befehlsfolgen enthalten. Kann direkt nach einer l-, c-, r-, p{…}-, m{…}– oder b{…}-Spaltenausrichtungsformatierungsangabe angegeben werden.
  • !{erkl}: Die angegebene Erklärung (erkl) wird zwischen benachbarten Spalten eingefügt, ohne den zusätzlichen Spaltenzwischenraum zu entfernen.

Geändert wurden die folgenden Parameter:

  • | und ||: Fügt eine vertikale Linie/vertikale Doppellinie ein und vergrößert den Spaltenzwischenraum um die Breite der Linie/der Doppellinie.

Neu hinzugekommen ist noch eine Längenerklärung:

  • \extrarowheight: dieser Abstand wird der Zeilenhöhe hinzugefügt. Bei horizontalen Trennlinien passiert es, daß die Oberlänge der Buchstaben zu nah an die darüberliegende Trennlinie herankommen. Ein Zusatzabstand von 1pt kann dies beheben.

Ebenso ist ein neues Kommando hinzugekommen, mit dem eigene Spaltenformatierungen definiert werden können.

Hiermit ist es möglich, komplexere und häufiger verwendete Spaltenformatierungen einen eigenen Namen zu geben und diese einfacher zu verwenden. Die typenkennung kann dann als Spaltenformatierungsparameter verwendet werden und wird durch definition ersetzt. Die definition kann dabei alles enthalten, was an Spaltenformatierungsparameter gültig ist. Dabei ist definition nicht nur auf eine Spaltenformatierung für eine Spalte beschränkt, sie kann auch Spaltenformatierungen für mehrere Spalten enthalten.

Bei der vertikalen Ausrichtung der Tabelle mit dem Parameter pos können sowohl bei der Standard LaTeX-Tabelle wie auch bei Verwendung von array.sty Fehlpositionierungen auftreten, wenn die Tabelle mit einer horizontalen Linie beginnt bzw. endet. Dieses Problem wird durch array.sty durch die beiden neuen Kommandos \firsthline und \lasthline behoben, wenn anstelle der einleitenden bzw. abschließenden \hline-Befehle diese durch die neuen Kommandos ersetzt werden.

dcolumn.sty

Dieses Paket von David Carlisle bietet die Möglichkeit, Spalten mit Dezimalzahlen nach dem Dezimaltrennzeichen auszurichten. Hierfür stellt dieses Paket einen neuen Spaltenformatierungsparameter D mit der Syntax

bereit.

  • eingabe_zeichen ist das Zeichen, was im LaTeX-Quelltext als Dezimaltrennzeichen erkannt werden soll.
  • ausgabe_zeichen ist die Zeichenfolge, was als Dezimaltrennzeichen in der Ausgabe erscheinen soll. Hier können auch weitere LaTeX-Kommandos auftreten.
  • dezimal_stellen gibt die maximal auszugebene Anzahl von Dezimalstellen an. Wird eine negative Anzahl angegeben, so wird die Anzahl der Dezimalstellen nicht begrenzt. Ab Version 1.03 kann dezimal_stellen auch als eine Dezimalzahl der Form v.n angegeben werden. Dabei gibt v die Anzahl der Stellen vor und n die Anzahl der Stellen nach dem Dezimaltrennzeichen an.

Der Vorteil, Eingabe- und Ausgabezeichen anzugeben, ist offensichtlich. Eingabedaten (z.B. Meßwerte, Daten aus anderen Programmen), die ein anderes Dezimaltrennzeichen verwenden, können ohne Modifikation der Eingabedaten in die richtige Dezimalformatierung für das Ausgabedokument umgewandelt werden. Mit der Verwendung von eigenen Spaltendefinitionen über \newcolumntype kann dies auch zentral im Dokument durchgeführt werden.

delarray.sty

Dieses Paket ist ebenfalls von David Carlisle und Erweitert die Erstellung von Feldstrukturen mit der array-Umgebung. Hierfür wird die Syntax der array-Umgebung wie folgt verändert:

Dabei ist lkl bzw. rkl ein linkes bzw. rechtes Klammersymbol, was zusätzlich eingefügt wird. Die Wirkung dieser veränderten array-Umgebung ist identisch zu

mit der array-Standardumgebung.

hhline.sty

Paket von David Carlisle für erweiterte Einfach- und Doppelumrandungen innerhalb von Tabellen und Feldern. Für array– und tabular-Umgebungen wird der Befehl

definiert, der die Formatierung der Linienstruktur für Spalten- und Zwischenspalten mittels dem Parameter lform ermöglicht. Für lform stehen die folgenden Parameter für die Linien zur Verfügung:

  • = : horizontale Doppellinie von der Breite der zugehörigen Spalte;
  • – : horizontale Einfachlinie von der Breite der zugehörigen Spalte;
  • ~ : Unterdrückung der horizontalen Linienstruktur für die zugehörige Spalte;
  • | : vertikale Linie zwischen zwei Spalten mit der Höhe der horizontalen Doppellinie.
  • : : unsichtbare vertikale Linie zwischen zwei Spalten mit der Höhe der horizontalen Doppellinie.
  • # : horizontales Doppelliniensegment mit der Breite einer vertikalen Doppellinie.
  • t : obere Linie eines horizontalen Doppelliniensegments mit der Breite einer vertikalen Doppellinie.
  • b : untere Linie eines horizontalen Doppelliniensegments mit der Breite einer vertikalen Doppellinie.
  • * : mit *{n}{format} wird das Format format n-mal wiederholt.

tabularx.sty

Paket von David Carlisle für Tabellen mit einer vorgegebenen Breite. Mit der Standardumgebung tabular* kann zwar bereits die Tabellenbreite vorgegeben werden, jedoch wird die Breite der Spalten in der tabularx-Umgebung, um die Tabellenbreite zu erreichen, anders bestimmt. Die Syntax der Umgebung ist

mit den Tabellen-Parametern:

  • pos: Angabe der Positionierung in vertikaler Richtung wie in Tabellen-Parameter.
  • breite: Gesamtbreite der Tabelle
  • sp_form: Wie bei den Standardtabellenumgebungen wird hiermit die Anzahl und Formatierung der Tabellenspalten angegeben (siehe Tabellen-Parameter). Zusätzlich existiert der Spaltenformatierungsparameter X. Dieser setzt die Spalte in Absatzform (wie der Parameter p bzw. m und b aus array.sty), jedoch muß hierbei keine Breite angegeben werden, sondern es wird soviel Breite hierfür verwendet, wie noch zur Verfügung steht, um die vorgegebene Tabellenbreite zu verwenden. Werden in sp_form mehrere X-Formatierungsparameter eingefügt, so wird die noch verbleibende Breite gleichmäßig auf alle X-Spalten aufgeteilt.

Da tabularx.sty explizit array.sty einließt, muss array.sty für die Verwendung von tabularx.sty vorhanden sein. Die Erweiterungen aus array.sty können auch in der tabularx-Umgebungen verwendet werden. Hiermit kann beispielsweise über die Spaltenformatierung >{\raggedright\arraybackslash}X die Spalte linksbündig gesetzt werden (\arraybackslash ist notwendig, da \raggedright den Zeilenendebefehl umdefiniert und es sonst zu einem Bearbeitungsfehler kommt). Wird häufiger eine bestimmte Spaltenformatierung benötigt, kann diese ebenfalls über \newcolumntype (siehe array.sty) zentral definiert werden.

Mit der Vorspannerklärung \tracingtabularx werden die berechneten Breiten der Tabellenspalten am Bildschirm und in der Logdatei ausgegeben.

longtable.sty

Paket von David Carlisle um (lange) Tabellen auf mehrere Seiten zu verteilen, also einen Seitenumbruch innerhalb von Tabellen zu ermöglichen.