>{\kern-\tabcolsep} не работает в p-колонках

>{\kern-\tabcolsep} не работает в p-колонках

Если вы раскрасите строку в таблице, @{}это не приведет к удалению цвета с боковых подшипников, как показано на рисунке ниже.

введите описание изображения здесь

Чтобы удалить цвет, вы можете направить керн в столбец таблицы с помощью >{\kern-\tabcolsep}, как показано на рисунке ниже:

введите описание изображения здесь

Однако это не работает, если столбец, который вы хотите кернить, является -столбцом p. Вместо этого содержимое ячейки больше не выстраивается в линию со следующей ячейкой, как показано ниже:

введите описание изображения здесь

\kernПочему? Можно ли это как-то использовать (я знаю, что установка \tabcolsepна ноль может иметь тот же эффект, но это имеет некоторые побочные эффекты)?

МВЭ:

\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}

решение1

Для столбцов фиксированной ширины вы можете добавить \leavevmodeили использовать \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} 

введите описание изображения здесь

Добавлен: В случае, если у вас столбец фиксированной ширины, если ячейка имеет несколько строк, только первая строка имеет отрицательный кернинг. Обходной путь заключается во включении содержимого ячейки в \parbox[t]{\hsize}(необязательный параметр [t]был предложен @Sveinung – спасибо!). Это также работает для Xтипа столбца, если вы используете tabularxсреду.

Для L, R, C, Jтипов столбцов из tabulary, похоже, вам также придется добавить \leavevmode(или использовать \hskip) для последнего столбца, даже если это столбец не фиксированной ширины.

Связанный контент