>{\kern-\tabcolsep} no funciona en p-columnas

>{\kern-\tabcolsep} no funciona en p-columnas

Si colorea una fila en una tabla, @{}no elimina el color de los cojinetes laterales, como se muestra en la siguiente figura.

ingrese la descripción de la imagen aquí

Para eliminar el color, puede dirigir un núcleo a la columna de la tabla usando >{\kern-\tabcolsep}, como se muestra en la siguiente figura:

ingrese la descripción de la imagen aquí

Sin embargo, esto no funciona si la columna que desea intercalar es una pcolumna -. En cambio, el contenido de la celda ya no se alinea con la siguiente celda, como se muestra a continuación:

ingrese la descripción de la imagen aquí

¿Por qué? ¿Es posible usarlo \kernde alguna manera (sé que establecerlo \tabcolsepen cero puede tener el mismo efecto, pero hacerlo tiene algunos efectos secundarios)?

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}

Respuesta1

Para columnas de ancho fijo, puede agregar \leavevmodeo usar \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} 

ingrese la descripción de la imagen aquí

Agregado: En caso de que tenga una columna de ancho fijo, si una celda tiene varias líneas, solo la primera línea tiene un kerning negativo. Una solución alternativa consiste en incluir el contenido de la celda en un \parbox[t]{\hsize}(el opcional [t]fue sugerido por @Sveinung – ¡gracias!). Esto también funciona para el Xtipo de columna si usa un tabularxentorno.

Para los L, R, C, Jtipos de columnas de tabulary, parece que también hay que agregar \leavevmode(o usar \hskip) para la última columna, incluso si no es una columna de ancho fijo.

información relacionada