Tabellen in LaTeX - All the fun you never wanted to have

Transcription

Tabellen in LaTeX - All the fun you never wanted to have
Christian Degenkolb
Tabellen in LATEX
All the fun you never wanted to have
16. Januar 2011
LATEX-User-Treffen Freiberg
Inhalt
Am Anfang war die Tabelle. Die tabular-Umgebung
Wie breit gehts denn? Die tabular*-Umgebung
Tabellen mit eXtra. Das tabularx-Paket
Von Spalten und Definitionen. Das array-Paket
In Farbe UND Bunt. Das colortbl-Paket
Am Komma ausrichten! Das rccol-Paket
Zeigt her eure Tabellen! Das booktabs-Paket
Extra lange Tabellen. Die Qual der Wahl
Rotieren wie die Profis. Das pdflscape-Paket
Spreadsheet zu TEX. Calc2LaTeX und Excel2LaTeX
Christian Degenkolb (TUBAF)
Tabellen in LATEX
1
Am Anfang war die Tabelle. Die tabular-Umgebung
1
2
3
\begin{tabular}[Position]{Spaltendefinition}
Spalten- und Zeilen-Einträge
\end{tabular}
Parameter
Position
b
Position der Tabelle im Text
zentriert (default)
oberste Kante der Tabell wird mit
Schriftlinie ausgerichtet
unterste Kante . . .
l
r
c
p{Breite}
Ausrichtung des Textes in der Spalte
linksbündig
rechtsbündig
zentriert
mehrzeilige (Absatz-)Spalte mit Breite
c
t
Spaltendefinition
Spalten- und Zeilen-Einträge
\\
&
Zeilentrenner
Spaltentrenner
Die tabular-Umgebung II
1
2
3
zentriert \begin{tabular}[c]{c} eins\\zwei\\drei \end{tabular}
oberste \begin{tabular}[t]{c} eins\\ zwei\\ drei \end{tabular}
unterste \begin{tabular}[b]{c} eins\\ zwei\\ drei \end{tabular}
eins
eins
zwei
zentriert zwei oberste eins unterste drei
drei
zwei
drei
1
2
3
4
\begin{tabular}{l c r p{2.5 cm}}
Links & Mitte & Rechts & Breite \\
L
& M &
R & B \\
\end{tabular}
Links
L
Mitte
M
Rechts
R
Breite
B
Die tabular-Umgebung III
zwischen Spaltendefinition
| oder ||
@{Ersatz}
*{ n }{ Spaltendefinition }
1
2
3
4
senkrechte Linie oder DoppelFüllt Spaltenzwischenraum mit Ersatz
Abkürzung für n-mal
Verwendung der Spaltendefinition
\begin{tabular}{|| *{2}{ l@{\#} } c @{,} r | p{2.5 cm} ||}
Links & Links2 & Mitte & Rechts & B \\
L
& L2
& M &
R & B
\end{tabular}
Links#Links2#Mitte,Rechts
L
#L2
# M ,
R
B
B
Die tabular-Umgebung IV
weiteres für Spalten- und Zeileneinträge
\multicolumn{n}{Spaltendefinition}{Text}
folgenden n Spalten werden zu einer Neuen
mit Spaltendefinition und Inhalt Text
\multirow{n}{Breite}{Text}
fast n Zeilen zu Neuer mit Breite und
Inhalt Text zusammen
\uspackage{multirow} nötig
Breite kann auch * sein
\hline
\vline
\cline{n-m}
erzeugt horizontale Linie mit Tabellenbreite
erzeugt vertikale Linie in Spalte
erzeugt horizontale Linie zwischen
Spalte n und m
Die tabular-Umgebung V
1
2
3
4
5
6
7
8
9
10
\begin{tabular}{|l|c|r|p{2,5cm}|}
\hline
Links & Mitte & Rechts \vline & Breite \\
\hline
\multicolumn{2}{|c|}{neue Linke}
& \multirow{2}{2cm}{gemeinsame Rechte} & B \\
\cline{1-3} \cline{4-4}
L &
M & & B \\
\hline
\end{tabular}
Links Mitte
neue Linke
L
M
Rechts
gemeinsame
Rechte
Breite
B
B
Wie breit gehts denn? Die tabular*-Umgebung
1
2
3
\begin{tabular*}{Breite}{Spaltendefinition}
Spalten- und Zeilen-Einträge
\end{tabular*}
wie tabular, aber mit extra Breite
1
2
3
4
5
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}|l|c|r|}
\hline
Links & Mitte & Rechts \\ \hline
L
& M &
R \\ \hline
\end{tabular*}
Links
L
Mitte
M
Rechts
R
Tabellen mit eXtra. Das tabularx-Paket
1
2
3
\begin{tabularx}{Breite}{Spaltendefinition}
Spalten- und Zeilen-Einträge
\end{tabularx}
wie tabular*, aber mit extra Spaltendefinition X
X passt die Spaltenbreite automatisch an
1
2
3
4
\begin{tabularx}{\textwidth}{|X|X|l|} \hline
automatisch & Spaltenbreite & linksbündig\\ \hline
zwei Spaltenbreiten & werden automatisch angepasst &
linksbündig \\ \hline
\end{tabularx}
automatisch
zwei Spaltenbreiten
Spaltenbreite
werden automatisch angepasst
linksbündig
linksbündig
Von Spalten und Definitionen. Das array-Paket
neu Spaltendefinitionen
1
2
3
m{Breite}
b{Breite}
wie p, aber setzt Absätze zentriert an Grundlinie
wie p, aber richtet Absätze an letzter Zeile aus
>{Erklärung}
<{Erklärung}
!{Erklärung}
Fügt Erklärung vor jedem Spalteneintrag ein
Fügt Erklärung nach jedem Spalteneintrag ein
Fügt Erklärung zwischen den Spalten ein
Erklärung kann Text oder Formatierungsbefehl sein
\begin{tabular}{| >{\small}p{2cm} | >{\bfseries}m{2cm} |
>{\itshape}b{2cm} | >{\Large $}c<{$} |} \hline
[..]mehrzeilige[..] & [..]zentriert[..] & [..]an letzter[..] &
\sqrt{\frac{a}{T}} \\ \hline
\end{tabular}
. . .mehrzeilige
Spalte . . .
. . .Absatz
zentriert an
Grundlinie
...
. . .richtet Absätze an letzter Zeile . . .
q
a
T
Das array-Paket II
eigene Spaltendefinitionen
\newcolumntype{Buchstabe}{Spaltendefinition}
legt neuen Spaltentyp Buchstabe mit Spaltendefinition an
2
3
4
5
\newcolumntype{M}{ >{\Large $} c <{$} }
\newcolumntype{S}[1]{>{\begin{turn}{90} \begin{minipage}{#1}}
l <{\end{minipage}\end{turn}}}
\begin{tabular}{ S{2em} | M}
Senkrecht & \sqrt{\frac{a}{T}} \\ \hline
\end{tabular}
Senkrecht
1
q
a
T
Das array-Paket III
zusätzliche Anpassungen von Tabellen
\setlength{\tabcolsep}{Abstand}
Abstand der vor und nach den einzelnen Spalten jeweils
eingefügt wird, Standard ist 6pt
\setlength{\doublerulesep}{Abstand}
Abstand zwischen Doppellinien durch ||
\renewcommand{\arraystretch}{Faktor }
Spreizungs-Faktor zwischen Tabellenzeilen, Standard ist 1
Das array-Paket IV
1
2
3
4
5
6
7
\setlength{\tabcolsep}{10pt}
\setlength{\doublerulesep}{10pt}
\renewcommand{\arraystretch}{3}
\begin{tabular}{|| l| c| r||} \hline
Links & Mitte & Rechts \\ \hline
L
& M
& R
\\ \hline
\end{tabular}
Links
L
Mitte
M
Rechts
R
Links
L
Mitte
M
Rechts
R
In Farbe UND Bunt. Das colortbl-Paket
neu Befehle
\columncolor[Farb-Modus]{Farbe}[linker Überhang][rechter Überhang]
Färbt Spalte mit Farbe (optional Farb-Modus) ein,
Syntax wie im color-Packet
rechter und linker Überhang sind optional
wird üblicherweise in >{} aus array-Paket verwendet
\rowcolor[Farb-Modus]{Farbe}[linker Überhang][rechter Überhang]
Färbt Zeile mit Farbe (optional Farb-Modus) ein, Syntax wie
\columncolor, muss zu Beginn der Zeile eingefügt werden
\cellcolor[Farb-Modus]{Farbe}
Färbt Zelle mit Farbe (optional Farb-Modus) ein, Syntax wie
\columncolor
Das colortbl-Paket II
1
2
3
4
5
6
7
8
\begin{tabular}{ l >{\columncolor{yellow}[.5\tabcolsep]}c r
p{2.5cm} }
Links & Mitte & Rechts & \cellcolor[gray]{.5} Breite \\
\rowcolor[rgb]{0.3,0.45,1}
L & M & R & B \\
L & M & \cellcolor{TUBAFgeo} R & B \\
\rowcolor{green}[1pt][5pt]
L & M & R & B \\
\end{tabular}
Links
L
L
L
Mitte
M
M
M
Rechts
R
R
R
Breite
B
B
B
Einmal ausrichten bitte! Das rccol-Paket
neue Spaltendefinition
R-[N][M]{Zahl1 }{Zahl2 }
erzeugt Spalte mit Zahl1 Stellen vor und Zahl2
nach dem Komma, N gibt Dezimalzeichen in den
Eingabedaten und M in der Ausgabe an, optionales - sorgt für Beachtung des Minus bei Zentrierung
Paketoptionen
norounding
comma/german
point/english
Deaktiviert Rounden für das gesammte Dokument
Benutzt Komma als Dezimalzeichen
Benutzt Punkt als Dezimalzeichen
Paketbefehle
\rcRoundingtrue/false
\rcDecimalSign{N}
\rcDecimalSignInput/Ouput{N}
Achtung: fltpoint-Paket ist notwendig
Aktiviert/Deaktiviert Runden
Setzt Dezimalzeichen auf N
Setzt Dezimalzeichen für Input/Output auf
N
Das rccol-Paket II
1
2
3
4
5
6
7
8
\begin{tabular}{| R[,]{4}{3} | R{1}{1} | R[,][..]{2}{2} |}
\hline
\multicolumn{1}{|c|}{A} & \multicolumn{1}{c}{B} &
\multicolumn{1}{|c|}{C} \\
\hline
-345,765 & 1,6 & 21 \\
-45,130 & 0,2 & 1,658 \\
543,000 & 2 & 9,9 \\ \hline
\end{tabular}
1
2
3
A
−345,765
−45,130
543,000
B
1,6
0,2
2,0
C
21..00
1..66
9..90
\rcDecimalSignOutput{:}
\rcRoundingfalse
\begin{tabular}{|R-[,]{4}{3}[..]
A
−345,765
−45,130
543,000
B
1:6
0:2
2
C
21
1..658
9..9
Hinweis: Ausrichten mit siunitx
1
2
3
4
5
6
7
8
9
10
\begin{tabular}{lS[
tabnumalign=centre,
tabformat=3.6,
decimalsymbol=comma]}
\toprule
Name &
{$M$/\si{\gram\per\mole}}
\\
\midrule
Eisenoxalat & 126,062 \\
Oxals"aure & 90,040 \\
Schwefel & {---} \\
Zinkoxalat & 153,406000 \\
\bottomrule
\end{tabular}
Name
M /g mol−1
Eisenoxalat
Oxalsäure
Schwefel
Zinkoxalat
126,062
90,040
—
153,406 000
siehe http://www.suedraum.de/latex/stammtisch/archiv.html “Werte und Einheiten” Folie 10
Zeigt her eure Tabellen! Das booktabs-Paket
ein Wort zu Tabellenlayout
Benutze niemals vertikale Linien
Benutze niemals doppelte Linien
siehe http://tug.ctan.org/tex-archive/macros/latex/contrib/booktabs/booktabs.pdf und
http://www.zvisionwelt.de/typokurz.pdf Seite 11
Paketbefehle
\toprule[Breite]
\midrule[Breite]
\bottomrule[Breite]
Erste Tabellenlinie (dick), Zwischenlinie
(dünn) und Endlinie (dick), geht jeweils über
die gesammte Tabellenbreite
\cmidrule[Breite](Trimm){n-m}
Linie von Spalte n bis m, Trimm ist
Konstrukt aus lr{Länge}
Nur nötig bei zwei cmidrule nacheinander
\morecmidrule
\specialrule{Breite}{N}{M}
Linie mit Breite, Abstand nach oben N und
unten M
Das booktabs-Paket II
1
2
3
4
5
6
7
8
9
\begin{tabular}{llr} \toprule
\multicolumn{2}{c}{A} \\ \cmidrule(r){1-2}
B & C & D\\ \midrule
B & C & D \\
\specialrule{2pt}{4pt}{6pt}
& C & D \\
B & C & D \\ \cmidrule(l{10pt}){2-3}
B & C & D \\
\bottomrule
A
A
B
C
D
B
C
D
B
B
B
C
C
D
D
B
B
B
C
D
C
C
C
C
C
D
D
D
D
D
Extra lange Tabellen. Die Qual der Wahl
supertabular
⊕ braucht nur einen Durchlauf
Spaltenbreiten können pro Seite variieren
geeignet für Tabellen mit festen Spaltenbreiten
xtab
Weiterentwicklung von supertabular
⊕ ermöglicht extra Tabellenkopf auf letzter Seite
benötigt mind. 2 Durchläufe
longtable
⊕ Spaltenbreiten über alle Seiten gleich
braucht mind. 2 Durchläufe, bei komplexen Tabellen mehr
ltxtable
Weiterentwicklung von longtable
⊕ Spaltentyp X aus tabularx
⊕ Gesamtbreite der Tabelle einstellbar
Einbinden über extra Datei oder mit filecontents
ltablex
veraltet
nur sehr kleine Tabellen möglich (Memory Limit)
stabular
Keine Kopf- und Fußzeilen
siehe http://www.tex.ac.uk/cgi-bin/texfaq2html?label=longtab
Das xtab-Paket
neue Umgebung
\begin{xtabular}{Spaltendefinition}
\begin{mpxtabular}{Spaltendefinition}
Mehrseitige Tabelle
Mehrseitige Tabelle mit Fußnoten
Paketbefehle (müssen vor Umgebung definiert werden)
\tablefirsthead{Inhalt}
\tablehead{Inhalt}
\tablelasthead{Inhalt}
\tabletail{Inhalt}
\tablelasttail{Inhalt}
\tablecaption{Text}
\topcaption{Text}
\bottomcaption{Text}
\notablelasthead
\shrinkheight{Länge}
\xentrystretch{Faktor }
Tabellenkopf
Tabellenkopf auf folgenden Seiten
Tabellenkopf letzter Seite
Tabellenfuß
Tabellenfuß letzte Seite
Tabellenüberschrift (Standardposition)
Tabellenüberschrift (oben)
Tabellenüberschrift (unten)
deaktiviert \tablelasthead
Modifiziert erlaubte Höhe der Tabelle, positive Länge
verringert/negative Länge vergrößert
Faktor für Erwartung an vertikalem Platz pro Eintrag
Standard 0.1 = 10% Übererwartung
Das xtab-Paket II
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\xentrystretch{-0.1}
\tablefirsthead{ \multicolumn{5}{l}{Die Tabelle geht los} \\
\toprule
Links & Mitte & Rechts & Breite & Breite2 \\
\midrule }
\tablehead{ \multicolumn{5}{l}{Fortsetzung... }\\
\toprule
Links & Mitte & Rechts & Breite & Breite2 \\
\midrule }
\tablelasthead{ \multicolumn{5}{l}{Letzte Seite... }\\
\toprule
Links & Mitte & Rechts & Breite & Breite2 \\
\midrule }
\tabletail{ \bottomrule
\multicolumn{5}{r}{Und weiter gehts...}\\ }
\tablelasttail{ \bottomrule
\multicolumn{5}{r}{Aus die Maus!} \\ }
\tablecaption{Ein Beispiel für xtab}
\begin{xtabular}{ l c r p{2cm} p{2cm}} [...] \end{xtabular}
Das xtab-Paket III
Table 1: Ein Beispiel für xtab
Die Tabelle geht los
Fortsetzung...
Links Mitte Rechts Breite Breite2
L
M
Eine etwas breiter
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
R B
Und weiter
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
B2
gehts...
Links
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Mitte Rechts Breite Breite2
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
R B
Zeile mit
B2
mal
etwas
länger
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
R B
B2
Und weiter gehts...
Das xtab-Paket IV
Letzte Seite...
Links
Mitte Rechts Breite Breite2
L
M
L
M
L
M
L
M
L
M
L
M
Dies ist die letzte aller
R
R
R
R
R
R
Zeile
B
B2
B
B2
B
B2
B
B2
B
B2
B
B2
in der Tabelle
Aus die Maus!
Das ltxtable-Paket
Verwendung
\LTXtable{Breite}{Datei}
Einbinden von Datei mit longtable-Umgebung
Verwendung von filecontents-Paket angeraten
\begin{filecontents}{Datei.tex} [. . .]
Paketbefehle
\endfirsthead
\endhead
\endfoot
\endlastfoot
\caption{Text}
Tabellenkopf
Tabellenkopf auf folgenden Seiten
Tabellenfuß
Tabellenfuß letzte Seite
Tabellenüberschrift
Das ltxtable-Paket II
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\begin{longtable}[c]{l c r p{2cm} X}
\caption{Ein Beispiel für ltxtable} \\
\multicolumn{5}{l}{Die Tabelle geht los} \\
\toprule
Links & Mitte & Rechts & Breite & eXtra \\
\midrule
\endfirsthead
\multicolumn{5}{l}{Fortsetzung... }\\
\toprule
Links & Mitte & Rechts & Breite & eXtra \\
\midrule
\endhead
\bottomrule
\multicolumn{5}{r}{Und weiter gehts...}\\
\endfoot
\bottomrule
\multicolumn{5}{r}{Aus die Maus!} \\
\endlastfoot
L& M & R & B & X \\ [..] \end{longtable}
Das ltxtable-Paket III
Fortsetzung...
Table 1: Ein Beispiel für ltxtable
Die Tabelle geht los
Links
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L
Mitte Rechts Breite eXtra
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
B
X
Und weiter gehts...
Links
Mitte Rechts Breite eXtra
L
L
Eine etwas
M
M
breiter
L
L
L
L
L
L
L
L
L
L
L
Dies ist die letzte
M
M
M
M
M
M
M
M
M
M
M
aller
R B
R B
Zeile mit
R
R
R
R
R
R
R
R
R
R
R
Zeile
B
B
B
B
B
B
B
B
B
B
B
in
X
X
mal
etwas
länger
X
X
X
X
X
X
X
X
X
X
X
der Tabelle
Aus die Maus!
Rotieren wie die Profis. Das pdflscape-Paket
Verwendung
\usepackage{pdflscape}
\begin{landscape} Tabelle \end{landscape}
Setzt Tabelle im Querformat
Hinweise
geht nur mit pdftex/pdflatex
funktioniert auch mit longtable,supertabular,etc
eher für Tabellen mit feste Spaltenbreiten bzw. fester Gesamtbreite geeignet
Das pdflscape-Paket II
Table 1: Ein Beispiel für pdflscape
Die Tabelle geht los
Links
1
L
L
L
L
L
L
L
L
L
L
L
L
Mitte Rechts Breite
M
M
M
M
M
M
M
M
M
M
M
M
R
R
R
R
R
R
R
R
R
R
R
R
B
B
B
B
B
B
B
B
B
B
B
B
eXtra
X
X
X
X
X
X
X
X
X
X
X
X
Und weiter gehts...
Calc2LaTeX
Installation
http://extensions.services.openoffice.org/project/calc2latex v0.2.4
calc2latex.oxt herunterladen “Get it”
Extras > Extension Manager > Hinzufügen
Verwendung
Daten eingeben
zu exportierenden Bereich markieren
Extras > Makros > Makros ausführen > Meine Makros > Calc2Latex >
Main > Ausführen
Calc2LaTeX II
Calc2LaTeX III
1
2
3
4
5
6
7
\begin{tabular}{|l|c|r|l|}
\hline
Links & Mitte & Rechts & Breite \\ \hline
L & M & R & Ein langer Text
mit Zeilenumbrüchen \\ \hline
L & M & R & B \\ \hline
\end{tabular}
Links
L
L
Mitte
M
M
Rechts
R
R
Breite
Ein langer Text mit Zeilenumbrüchen
B
Hinweise
Spaltentyp nur l, c und r
keine booktabs, colortbl, etc.
nur \hline und |
keine Unterstützung für lange Tabellen
Excel2LaTeX
Installation
http://www.ctan.org/tex-archive/support/excel2latex/ v3.0
Excel2LaTeX.xla herunterladen
Nach /Application Data/Microsoft/AddIns kopieren
über Excel-Options > Add-Ins > Manage “Excel Add-ins” aktivieren
Verwendung
Daten eingeben
zu exportierenden Bereich markieren
Makros > Excel2LaTeX
Excel2LaTeX II
Excel2LaTeX III
1
2
3
4
5
6
\begin{tabular}{r c r r } \addlinespace \toprule
Links & Mitte & Rechts & Breite \\ \midrule
L & M & R & Ein langer Text
mit Zeilenumbrüchen \\
L & M & R & B \\ \bottomrule
\end{tabular}
Links
L
L
Mitte
M
M
Rechts
Breite
R
R
Ein langer Text mit Zeilenumbrüchen
B
Hinweise
Spaltentyp anscheinend nur c und r
booktabs werden unterstützt
keine Unterstützung für lange Tabellen
Dokumentation
www.torsten-schuetze.de/tex/tabsatz-2004.pdf
www2.informatik.hu-berlin.de/~piefel/LaTeX-PS/V05-tabellen.pdf
http://en.wikibooks.org/wiki/LaTeX/Tables
http://www.ctan.org/tex-archive/help/Catalogue/entries/tabularx.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/array.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/colortbl.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/rccol.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/booktabs.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/xtabs.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/ltxtable.html
http://www.ctan.org/tex-archive/help/Catalogue/entries/pdflscape.html
Christian Degenkolb (TUBAF)
Tabellen in LATEX
36
\endinput