如果为表格中的某一行着色,@{}
则不会删除侧边栏的颜色,如下图所示。
要去除颜色,您可以使用 将字距调整到表格列中>{\kern-\tabcolsep}
,如下图所示:
但是,如果您要调整字距的列是 -column,则此方法不起作用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}
(可选的是由 @Sveinung 建议的 - 谢谢!)。如果您使用环境[t]
,这也适用于列类型。X
tabularx
对于L, R, C, J
中的列类型tabulary
,似乎您还必须为最后一列添加\leavevmode
(或使用\hskip
),即使它不是固定宽度的列。