\rowcolor 覆蓋列分隔符

\rowcolor 覆蓋列分隔符

我有一個奇怪的問題,我的 rowcolor 命令覆蓋了某些 PDF 檢視器中的列分隔符號。 Acrobat(不幸的是)是唯一有渲染問題的軟體。該問題存在於渲染螢幕和列印版本中。

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}選項,因為它支援行顏色,它會自動替換行顏色。

為了解決不規則的垂直分隔符號問題,我剛剛定義了一種非常接近白色的顏色,但實際上並非如此,以強制填入所有行。

\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}of 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 節點)。

上述程式碼的輸出

相關內容