\rowcolorは列の区切り線を上書きします

\rowcolorは列の区切り線を上書きします

一部の PDF ビューアで rowcolor コマンドが列区切りを上書きしてしまうという奇妙な問題が発生しています。レンダリングの問題があるのは 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)はこのダブルルールセップカラー修正、二重の垂直線の間のスペースを指定した色で塗りつぶし、行ごとに異なる色を設定できます。

[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 ノードが使用されるため)。

上記コードの出力

関連情報