Ich möchte in einer Tabelle eine Zeile und eine Spalte hervorheben. Bei der Spalte ist das kein Problem. Allerdings ragen die Farbfelder der äußersten linken und rechten Zelle in der Zeile über die Ränder der Tabelle hinaus, wenn ich sie @{}
in der tabular
Definition verwende.
\documentclass{scrartcl}
\usepackage{colortbl,booktabs}
\begin{document}
\begin{table}[h]
\setlength{\aboverulesep}{0pt} % align \bottomrule nicely to coloured cell
\setlength{\belowrulesep}{0pt} % align \toprule nicely to coloured cell
\setlength{\extrarowheight}{.75ex} % make up for lost ruleseps
\begin{tabular}{@{}c>{\columncolor[gray]{.9}}cc@{}} \toprule
a & b & c \\
d & e & f \\
\rowcolor[gray]{.9} g & h & i \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Das Problem liegt auf der Hand:
Die Verwendung \rowcolor[gray]{.9}[0pt][0pt]
zur Reduzierung des Überhangs ist keine Option, da die Zeile dann nicht mehr vollständig hervorgehoben würde.
Was ich bisher versucht habe
Das Neudefinieren der markierten Zeile wie folgt druckt
[0pt]
in die Zelle und funktioniert nicht, obwohl es vorgeschlagen wurdeHier.\rowcolor[gray]{.9}\cellcolor{white}\cellcolor[gray]{.9}[0pt] g & h & i \\
Auch das Neudefinieren der markierten Zeile wie folgt funktioniert nicht:
\rowcolor[gray]{.9}[0pt][0pt] g & \cellcolor[gray]{.9} h & i \\
Die mittlere Zelle bleibt hervorgehoben, als wäre sie nur
\rowcolor[gray]{.9}[0pt][0pt]
definiert worden…
\bottomrule
Gibt es eine andere Möglichkeit die Farbfelder links und rechts bündig zuzuschneiden ?
Antwort1
Eine Möglichkeit besteht darin, die Spaltenbreiten festzulegen. Ich bin mir nicht sicher, ob das eine sehr elegante Methode ist.
\documentclass{scrartcl}
\usepackage{colortbl,booktabs}
\begin{document}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\begin{table}[h]
\setlength\tabcolsep{0pt}
\begin{tabular}{C{1em}>{\columncolor[gray]{.9}} C{1em} C{1em}} \toprule
a & b & c \\
d & e & f \\
\rowcolor[gray]{.9} g & h & i \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
\end{document}
Antwort2
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\colorlet{tablerowcolor}{yellow}%\colorlet{tablerowcolor}{gray!10}
\newcommand*{\ct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}}c}{#1}}
\newcommand*{\fct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}\hspace*{-\tabcolsep}}c}{#1}}
\newcommand*{\lct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}}c<{\hspace*{-\tabcolsep}}}{#1}}
\newcommand*{\cfct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}[\dimexpr\tabcolsep-\cmidrulekern\relax][\tabcolsep]\hspace*{-\tabcolsep}}c}{#1}}
\newcommand*{\clct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}[\tabcolsep][\dimexpr\tabcolsep-\cmidrulekern\relax]}c<{\hspace*{-\tabcolsep}}}{#1}}
\begin{document}
\begin{table}[h]
\setlength{\aboverulesep}{0pt} % align \bottomrule nicely to coloured cell
\setlength{\belowrulesep}{0pt} % align \toprule nicely to coloured cell
\setlength{\extrarowheight}{.75ex} % make up for lost ruleseps
\begin{tabular}{ @{}r@{} }
\\
reference \\
wrong alignment if overhang \\
fitted to \texttt{\textbackslash midrule} \\
fitted to \texttt{\textbackslash cmidrule(lr)} \\
\end{tabular}
%
\begin{tabular}{ @{}*{3}{c}@{} }
\toprule
test & test & test \\
\midrule
a & b & c \\
\ct a & b & \ct c \\
\midrule
\fct a & b & \lct c \\
\cmidrule(lr){1-3}
\cfct a & b & \clct c \\
\bottomrule
\end{tabular}
\end{table}
\end{document}