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....