Gefärbte Tabellen

Tabellen und Grafiken erstellen und anordnen


Laures
Forum-Anfänger
Forum-Anfänger
Beiträge: 34
Registriert: Do 6. Aug 2009, 19:48

Gefärbte Tabellen

Beitrag von Laures »

Hi,

ich möchte eine Tabelle umsetzen mit einem farbigen Tabellenkopf und einem Tabellenkörper mit farbwechsel (grau/weiß).

Die alternierende färbung der gesamten tabelle geht mit
\usepackage[table]{xcolor}
\rowcolors{1}{green}{pink}
Jetzt könnte ich einfach die Hintergrundfarbe des headers überschreiben, aber dann fängt die alternierende Färbung immer mit einer anderen Farbe an (abhängig davon wieviele Zeilen der header hat). Gibt es dafür eine bessere Möglichkeit?

Außerdem soll der Header weiß auf blau werden. wie formatiere ich die Schriftfarbe so das der gesamte Text im header weiß wird?

Ich möchte letztendlich mein eigenen \toprule (header) \midrule (beginn des body) schreiben, weshalb ich nicht einfach jede Zelle der Tabelle einzeln formatieren kann bzw. möchte.

Gruß,
Laures

Laures
Forum-Anfänger
Forum-Anfänger
Beiträge: 34
Registriert: Do 6. Aug 2009, 19:48

Beitrag von Laures »

viele Pakete und einige hässliche Ideen später hier meine recht saubere Lösung.

Nochmal die Aufgabe: ein /toprule und ein /midrule Command schreiben, sodass mehrere headerzeilen blauen hHintergrund und weißen Text haben.

Lösung
Zuerst benötigen wir zwei commands, die die Textformatierung und die Farbformatierung halten.
\newcommand{\rowstyle}[1]{
	\gdef\currentrowstyle{#1} %
	#1\ignorespaces
}
\newcommand{\rowbg}[1]{
	\gdef\currentrowbg{#1} %
	#1\ignorespaces
}
\rowstyle{}\rowbg{}
Diese beiden Eigenschaften können jetzt in die Spaltendefinition aufgenommen werden. Dabei erfolgt die Definition der Schriftfarbe VOR und die Farbdefinition des Hintergrunds NACH dem Zelleninhalt. Warum erklär ich gleich.
\newcolumntype{C}{>{\centering\currentrowstyle\arraybackslash}X<{\currentrowbg\arraybackslash}}
Jetz können ein /toprule und ein /midrule Command geschrieben werden die \rowstyle/bg entsprechend definieren:
\newcommand{\toprule}{
	\rowstyle{\color{white}}
	\rowbg{\cellcolor{blue}	}
}
\newcommand{\midrule}{
	\global\let\currentrowstyle\relax
	\global\let\currentrowbg\relax
	\color{black}
}
Warum jetzt die Farbdefinition hinter den inhalt? Stünde sie vorn wäre die erste Zelle der Zeile in der \midrule aufgerufen wird bereits Blau bevor \midrule die Farbe wieder ändern kann! Genau aus diesem Grund enthällt \midrule auch \color{black}. Da für die erste Zelle sonst noch die weiße Schriftfarbe gültig wäre.

Ich bin jetz irgendwie stolz auf mich....

Antworten