>{\kern-\tabcolsep} não funciona em colunas p

>{\kern-\tabcolsep} não funciona em colunas p

Se você colorir uma linha de uma tabela, @{}não remove a cor dos rolamentos laterais, conforme mostrado na figura abaixo.

insira a descrição da imagem aqui

Para remover a cor, você pode direcionar um kernel para a coluna da tabela usando >{\kern-\tabcolsep}, conforme demonstrado na figura abaixo:

insira a descrição da imagem aqui

No entanto, isso não funciona se a coluna que você deseja fazer o kern for uma p-column. Em vez disso, o conteúdo da célula não se alinha mais com a próxima célula, conforme demonstrado abaixo:

insira a descrição da imagem aqui

Por que? É possível usar \kernde alguma forma (sei que definir \tabcolsepzero pode ter o mesmo efeito, mas fazer isso tem alguns efeitos colaterais)?

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}

Responder1

Para colunas de largura fixa, você pode adicionar \leavevmodeou 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} 

insira a descrição da imagem aqui

Adicionado: Caso você tenha uma coluna de largura fixa, se uma célula tiver várias linhas, apenas a primeira linha terá kerning negativo. Uma solução alternativa consiste em incluir o conteúdo da célula em a \parbox[t]{\hsize}(o opcional [t]foi sugerido por @Sveinung – obrigado!). Isso funciona também para o Xtipo de coluna se você usar um tabularxambiente.

Para os L, R, C, Jtipos de coluna from tabulary, parece que você também precisa adicionar \leavevmode(ou usar \hskip) para a última coluna, mesmo que não seja uma coluna de largura fixa.

informação relacionada