>{\kern-\tabcolsep} funktioniert nicht in p-Spalten

>{\kern-\tabcolsep} funktioniert nicht in p-Spalten

Wenn Sie eine Zeile in einer Tabelle einfärben, @{}wird die Farbe nicht aus den Seitenrändern entfernt, wie in der Abbildung unten gezeigt.

Bildbeschreibung hier eingeben

Um die Farbe zu entfernen, können Sie mit einen Kernel in die Tabellenspalte setzen >{\kern-\tabcolsep}, wie in der folgenden Abbildung gezeigt:

Bildbeschreibung hier eingeben

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:

Bildbeschreibung hier eingeben

Warum? Kann man es \kernirgendwie verwenden (ich weiß, dass das Setzen \tabcolsepauf 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 \leavevmodeoder 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} 

Bildbeschreibung hier eingeben

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 XSpaltentyp, wenn Sie eine tabularxUmgebung verwenden.

Bei den L, R, C, JSpaltentypen von tabularymü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

verwandte Informationen