
我有一個奇怪的問題,我的 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}
選項,因為它支援行顏色,它會自動替換行顏色。
為了解決不規則的垂直分隔符號問題,我剛剛定義了一種非常接近白色的顏色,但實際上並非如此,以強制填入所有行。
\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 節點)。