我正在使用该xcolor
软件包为表格的顶行着色。使用 PDF 查看器(例如 Preview 或 Skim (Mac))可以正确显示。但使用 Adobe Reader 10.1.3(Windows 或 Mac)无法正确显示表格线。
但删除表格的颜色可以解决这个问题。以下是按预期运行的示例:
\begin{table}
\caption{Table showing Feature 5's Functional Tests}
\hspace*{-0.5in}
\begin{tabular}[h!]{|p{0.6cm}|p{4cm}|p{5cm}|p{4cm}|p{1.5cm}|}
\hline
{\bf Test ID } & {\bf Task } & {\bf Expected} & {\bf Actual} & {\bf Outcome} \\
\hline
5.1 & Something & Something & Something & Success \\
\hline
5.2 & Something & Something & Something & Success \\
\hline
5.3 & Something & Something & Something & Success \\
\hline
5.4 & Something & Something & Something & Success \\
\hline
\end{tabular}
\end{table}
以下是带有彩色行的示例:
\begin{table}
\caption{Table showing Feature 5's Functional Tests}
\hspace*{-0.5in}
\begin{tabular}[h!]{|p{0.6cm}|p{4cm}|p{5cm}|p{4cm}|p{1.5cm}|}
\hline
\rowcolor{gray!25}
{\bf Test ID } & {\bf Task } & {\bf Expected} & {\bf Actual} & {\bf Outcome} \\
\hline
5.1 & Something & Something & Something & Success \\
\hline
5.2 & Something & Something & Something & Success \\
\hline
5.3 & Something & Something & Something & Success \\
\hline
5.4 & Something & Something & Something & Success \\
\hline
\end{tabular}
\end{table}
删除\rowcolor{}
命令并用其替换\cellcolor{}
会创建相同的视图。有什么办法可以解决这个问题吗?
我曾尝试用 Adobe 将其打印出来,线条打印得很好,但由于这将以软拷贝的形式阅读,因此它非常重要。这里有一个画廊展示 LaTeX 代码。
知道如何修复这个问题吗?
答案1
PDF 查看器会尝试将规则“对齐”到像素边界,这可能意味着彩色面板会被拉到相邻的规则上。尝试使用
\setlength\arrayrulewidth{0.6pt}
或任何适合您屏幕的值。
答案2
该包(由的colortbl
键加载)逐行构建数组,交替排列彩色矩形、规则和单元格内容。生成的 PDF,table
xcolor
尽管完全正确并符合 PDF 语法,但某些 PDF 查看器(甚至是现代的)很难解释,并且可能会导致屏幕上出现伪影(而不是纸上)。
一些规则似乎消失了。这是因为许多 PDF 查看器优先考虑后绘制的图形元素(这符合 PostScript 和 PDF 的“绘画模型”精神)。这个问题在 Adobe Reader 中尤其严重(尽管 Adobe 是 PDF 格式的创建者)。
两个相同颜色的单元格之间可能会出现一条细白线(实际上,这条线的宽度为 0 pt,在 PostScript 和 PDF 中,这意味着宽度为 1 像素)。当每个单元格都使用自己的指令(PDF 流中编码的
fill
PostScript 运算符)着色时,就会出现这种现象。这就是 的情况:即使使用或,每个单元格都会单独着色。这些细白线尤其会出现在 Artifex Software 的 PDF 引擎 MuPDF(例如,在 Sumatra PDF 中使用)或Firefox 使用的 中。它们不会出现在 Adobe Reader 中。fill
f
colortbl
columncolor
\rowcolor
PDF.js
该软件包试图解决这些问题。该扩展提供了类似于(软件包的)的nicematrix
环境。在该环境中,彩色面板在规则之前绘制(以避免第一个问题)并逐个颜色绘制(以避免第二个问题)。{NiceTabular}
{tabular}
array
但是,有一个缺点:nicematrix
使用 PGF/Tikz 节点和存储在aux
文件中的信息,这就是为什么需要多次编译。