当使用 删除表格两侧的空间时@{}
,使用 添加的颜色\rowcolors
将超出表格的宽度。在提供答案对于类似的问题,可以通过放置@{\kern\tabcolsep}
而不是 来解决这个@{}
问题。但这相当于@{}
从代码中删除,所以我并不认为这是一个解决方案。还有其他方法可以将行颜色限制为表的宽度吗?
\documentclass{article}
\usepackage[table]{xcolor}
\begin{document}
\rowcolors{2}{}{gray}
\begin{tabular}{@{}*4{l}@{}}
\hline
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
\end{tabular}
\end{document}
答案1
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{array}
\begin{document}
\rowcolors{2}{}{gray}
\begin{tabular}{@{}>{\columncolor{white}[0pt][\tabcolsep]}lll>{\columncolor{white}[\tabcolsep][0pt]}l@{}}
\hline
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
\end{tabular}
\end{document}
答案2
使用{NiceTabular}
,nicematrix
您将直接获得预期的输出(并且您将不会看到 Ulrike Fisher 的答案中出现的细白线)。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{@{}*4{l}@{}}
\CodeBefore
\rowcolors{2}{}{gray}
\Body
\hline
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
1 & 2 & 3 & 4\\
5 & 6 & 7 & 8\\
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。