彩色表格中的可见线条

彩色表格中的可见线条

我正在尝试制作一个带有彩色单元格的表格。到目前为止,代码如下所示:

     \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 节点)。

上述代码的输出

相关内容