
Wenn Sie eine Zeile in einer Tabelle einfärben, @{}
wird die Farbe nicht aus den Seitenrändern entfernt, wie in der Abbildung unten gezeigt.
Um die Farbe zu entfernen, können Sie mit einen Kernel in die Tabellenspalte setzen >{\kern-\tabcolsep}
, wie in der folgenden Abbildung gezeigt:
Dies funktioniert jedoch nicht, wenn die Spalte, die Sie kernen möchten, eine p
-Spalte ist. Stattdessen ist der Zellinhalt nicht mehr mit der nächsten Zelle ausgerichtet, wie unten gezeigt:
Warum? Kann man es \kern
irgendwie verwenden (ich weiß, dass das Setzen \tabcolsep
auf Null den gleichen Effekt haben kann, aber das hat einige Nebenwirkungen)?
MWE:
\documentclass[table]{article}
\usepackage{lmodern, microtype, xcolor}
\begin{document}
\begin{tabular}{@{}lcr@{}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\vspace{1cm}
\begin{tabular}{>{\kern-\tabcolsep}lcr<{\kern-\tabcolsep}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\vspace{1cm}
\begin{tabular}{>{\kern-\tabcolsep}p{1cm}cr<{\kern-\tabcolsep}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\end{document}
Antwort1
Für Spalten mit fester Breite können Sie Folgendes hinzufügen \leavevmode
oder verwenden \hskip
:
\documentclass[table]{article}
\usepackage{lmodern, microtype, xcolor}
\begin{document}
\begin{tabular}{@{}lcr@{}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\vspace{1cm}
\begin{tabular}{>{\kern-\tabcolsep}lcr<{\kern-\tabcolsep}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\vspace{1cm}
\begin{tabular}{>{\leavevmode\kern-\tabcolsep}p{1cm}cr<{\kern-\tabcolsep}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\vspace{1cm}
\begin{tabular}{>{\hskip-\tabcolsep}p{1cm}cr<{\kern-\tabcolsep}}
\rowcolor{lightgray}test&test&test\\\hline
test&test&test\\
\rowcolor{lightgray}test&test&test\\
\end{tabular}
\end{document}
Hinzugefügt: Wenn Sie eine Spalte mit fester Breite haben und eine Zelle mehrere Zeilen hat, hat nur die erste Zeile einen negativen Kerning. Ein Workaround besteht darin, den Zellinhalt in ein \parbox[t]{\hsize}
(das Optionale [t]
wurde von @Sveinung vorgeschlagen – danke!) einzuschließen. Dies funktioniert auch für den X
Spaltentyp, wenn Sie eine tabularx
Umgebung verwenden.
Bei den L, R, C, J
Spaltentypen von tabulary
müssen Sie anscheinend auch für die letzte Spalte hinzufügen \leavevmode
(oder verwenden ), selbst wenn es sich nicht um eine Spalte mit fester Breite handelt.\hskip