我正在尝试制作一个带有彩色单元格的表格。到目前为止,代码如下所示:
\definecolor{ao}{rgb}{0.0, 0.5, 0.0}
\definecolor{applegreen}{rgb}{0.55, 0.71, 0.0}
\definecolor{azure}{rgb}{0.0, 0.5, 1.0}
{
\rowcolors{3}{ao}{applegreen}
\begin{tabular}{ |p{2cm} p{1cm} p{1cm} p{1cm} p{1cm} p{1cm} p{1cm}| }
\hline
\rowcolor{azure} \multicolumn{7}{|c|}{Title} \\
\rowcolor{azure} & A & B & C & D & E & F\\
\hline
Row A & & \\
Row B & & \\
Row C & & \\
Row D & & \\
Row E & & \\
Row F & & \\
Row G & & \\
\hline
\end{tabular}
}
问题是,虽然不应该有任何水平线和垂直线,但它们仍然略微可见。有办法解决这个问题吗?
顺便说一句,抱歉颜色太丑了,我正在努力!
答案1
这里的标准回应是责怪您的 PDF 查看器,当然如果您打印文档或使用其他 PDF 查看器,或者只是使用当前查看器稍微放大或缩小,问题就会消失。
但这实际上并不是查看者的错(我不可能说出是谁的错……)理想情况下,彩色行背景应该是 PDF 中的单个绿色矩形,如果以这种方式生成,您将永远不会在单元格边界处得到伪影。可以使用 tikz 或类似工具以这种方式为表格着色,以测量单元格的位置,然后(在稍后的 latex 传递中)在背景中绘制,但(据我所知)没有与标准 LaTeX 表格标记兼容的易于打包的版本。
colortbl
旨在适应现有的 latextabular
语法,并且无法访问行,即使使用该\rowcolor
命令,它也只能访问单个单元格,因此您的绿色行在 PDF 中由一系列相邻的绿色矩形生成,这些矩形由坐标指定。这些坐标非常精确,但 PDF 渲染器必须将所有内容四舍五入为查看设备中的实际像素。除非它有启发式方法来检测两个相同颜色的相邻矩形(这不太可能),否则每个矩形将分别四舍五入到像素坐标,并且它们的四舍五入方式可能会不同,从而留下一两个像素的间隙。如果不从根本上改变表格的构建方式,真的没有什么可以做的。
答案2
使用,您将不会看到这些细细{NiceTabular}
的nicematrix
白线。永远不会。 提供的工具nicematrix
旨在避免该问题。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{ |p{2cm} p{1cm} p{1cm} p{1cm} p{1cm} p{1cm} p{1cm}| }
\CodeBefore
\rowcolors[rgb]{3}{0.0, 0.5, 0.0}{0.55, 0.71, 0.0}
\rowcolor[rgb]{0.0, 0.5, 1.0}{1,2}
\Body
\hline
\Block{1-7}{Title} \\
& A & B & C & D & E & F\\
\hline
Row A & & \\
Row B & & \\
Row C & & \\
Row D & & \\
Row E & & \\
Row F & & \\
Row G & & \\
\hline
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。