\rowcolor перезаписывает разделитель столбцов

\rowcolor перезаписывает разделитель столбцов

У меня странная проблема, когда моя команда rowcolor перезаписывает разделитель столбцов в некоторых просмотрщиках PDF. Acrobat (к сожалению) — единственный, у кого есть проблема с рендерингом. Проблема существует как в рендеринге экрана, так и в печатной версии.

Ниже приведена визуализация Acrobat:

Акробат рендер

Рендеринг в TeXShop, MacOS Preview и Ghostscript из файла Postscript выглядит следующим образом:

Другие рендеры

С другими движками рендеринга вы можете видеть, что, похоже, есть разделитель столбцов в 1/2 строки, поэтому я концептуально понимаю, что происходит, но я не знаю, как изменить мою команду /rowcolor, чтобы решить эту проблему. Мне нужно убедиться, что команда /rowcolor не перезаписывает разделители таблиц, которые все имеют толщину 1 пт.

\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

С , вы получите ожидаемый вывод. Правила, похоже, не исчезнут в некоторых просмотрщиках PDF на некоторых уровнях масштабирования {NiceTabular}.nicematrix

\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).

Вывод кода выше

Связанный контент