我遇到了一个奇怪的问题,我的 rowcolor 命令会覆盖某些 PDF 查看器中的列分隔符。不幸的是,只有 Acrobat 存在此渲染问题。此问题在渲染屏幕和打印版本中都存在。
Acrobat 渲染如下:
Postscript 文件在 TeXShop、MacOS Preview 和 Ghostscript 中的渲染如下:
使用其他渲染引擎,您可以看到似乎有一个 1/2 行列分隔符,因此我从概念上了解发生了什么,但我不知道如何更改我的 /rowcolor 命令来解决这个问题。我需要确保 /rowcolor 命令不会覆盖表格分隔符,它们都是 1pt。
\usepackage{booktabs,xcolor,siunitx,colortbl}
\definecolor{lightgray}{HTML}{EFEFEF}
\begin{tabular}{|c|c||c|c||c|c|}
\hline
48 & 72 & 24 & 3 & \(z_0\)& 36\\
\rowcolor{lightgray}
& 96 & & 4 & \(z_1\)& 36\\
\hline
\end{tabular}
为了确认 1/2 宽度线问题,我加入了
\setlength{\arrayrulewidth}{1.5pt}
这使得所有内容变得更厚,以便表格可以在 Acrobat 中呈现,但这确实并不令人愉快。
任何建议将不胜感激。
答案1
这很奇怪,如果我们幸运的话,大卫·卡莱尔包的colortbl
将停下来澄清这一点。我不够熟练,无法深入研究并修复规则与填充颜色的 z 顺序,这似乎是问题的根本原因,但我有一个肮脏的黑客可能对你有用:
几点说明:TeX 代码块(以 开头\makeatletter
)是此 doublerulesep 颜色修复,并将用您指定的颜色填充双垂直线之间的空间,并且允许每行使用不同的颜色。
我使用该[table]{xcolor}
选项,因为它支持 rowcolors,可以自动交替行颜色。
为了解决不规则的垂直分隔符问题,我只是定义了一种非常接近白色但实际上并非如此的颜色,以强制填充所有行。
\usepackage[table]{xcolor}
\usepackage{booktabs,siunitx}
\makeatletter
\let\old@mkpream\@mkpream
\def\@mkpream{%
\ifx\CT@drsc@\relax\else\let\CT@drsc@ @\fi
\let\CT@arc@\relax
\old@mkpream}
\makeatother
\begin{document}
\definecolor{lightgray}{HTML}{EFEFEF}
\definecolor{nearwhite}{HTML}{FEFEFE}
\doublerulesepcolor{nearwhite}
\rowcolors{1}{nearwhite}{lightgray}
\begin{tabular}{|c|c||c|c||c|c|}
\hline
48 & 72 & 24 & 3 & \(z_0\)& 36\\
\doublerulesepcolor{lightgray}
& 96 & & 4 & \(z_1\)& 36\\
\hline
\end{tabular}
答案2
使用,您将直接获得预期的输出。在某些缩放级别下{NiceTabular}
,nicematrix
规则似乎不会在某些 PDF 查看器中消失。
\documentclass{article}
\usepackage{xcolor}
\definecolor{lightgray}{HTML}{EFEFEF}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{|c|c||c|c||c|c|}[colortbl-like]
\hline
48 & 72 & 24 & 3 & \(z_0\)& 36\\
\rowcolor{lightgray}
& 96 & & 4 & \(z_1\)& 36\\
\hline
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。