Vor einiger Zeit hat @robintw eine praktische Frage gestellt: Erste Tabellenzeile komplett fett formatieren
Es verwendet das Array-Paket, um Formatierungscode geschickt in die Spalten der Kopfzeile einzufügen.
Clevere Lösung zur Formatierung von Tabellenzeilen
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}} % Always set currentrowstyle to \relax in case no \rowstyle is used
\newcolumntype{^}{>{\currentrowstyle}} % set \currentrowstyle to \bfseries or whatever (>{\bfseries}c)
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% set global definition for \currentrowstyle
#1\ignorespaces
}
Der problematische Code
Ich würde gerne Unterstützung für mehrere Spalten und Zeilen sehen. Ich habe Folgendes versucht, basierend aufhttps://tex.stackexchange.com/a/4816/13552, was nicht funktioniert.
\documentclass{article}
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\begin{document}
\begin{tabular}{$l^c^c^r}
\rowstyle{\bfseries}
%\multicolumn{2}{^l}{span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}
Antwort1
Das Problem hängt damit zusammen, dass der $>
Spaltentyp in der ersten Zeile der Tabelle überhaupt nie verwendet wird.
Sie können dies folgendermaßen beheben:
\multicolumn{2}{$l}{}
Für den ersten Satz von überspannten Spalten. Das Problem besteht dann jedoch darin, dass die Dinge in der falschen Reihenfolge erledigt werden. \rowstyle{\bfseries}
steht jetzt vor dem Beginn der ersten Zelle. Um dies zu beheben, können Sie es in die Spezifikation der ersten Zelle aufnehmen
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2}
das erzeugt
was, wenn ich es richtig verstanden habe, das erwartete Ergebnis ist.
Vollständiger Code
\documentclass{article}
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\begin{document}
\begin{tabular}{$l^c^c^r}
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}