
У меня странная проблема, когда моя команда 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).