如何删除彩色多行单元格中的白线?

如何删除彩色多行单元格中的白线?

我有类似的问题删除绘制的多行表格中的白线. 一些 PDF 查看器(例如 Adob​​e Reader 和 Evince)会在我的多行单元格内显示白线。

thead/makecell 不起作用,因为我需要将“大单元格”放在右侧三行旁边的精确位置。nicematrix 听起来是个不错的解决方案,但不幸的是它在我的系统(texlive2019)上不可用。

\documentclass{article}

\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{tabularx}
\renewcommand{\arraystretch}{1.5}
\setlength\arrayrulewidth{1pt}

\newcommand{\cellgrey}[1]{\cellcolor{gray!40}{#1}}

\begin{document}

\renewcommand{\arraystretch}{2}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{tabularx}{\textwidth}{ |*{5}{Y|} }
    
    \hhline{|-|-|-|-|-|}
    
    \cellgrey{} & \cellgrey{1} & \cellgrey{2} & \cellgrey{3} & \cellgrey{4}\\
    \hhline{|*1{>{\arrayrulecolor{gray!40}}-}>{\arrayrulecolor{black}}|*4{-|}}

    \cellgrey{} & \cellgrey{5} & \cellgrey{6} & \cellgrey{7} & \cellgrey{8}\\
    \hhline{|*1{>{\arrayrulecolor{gray!40}}-}>{\arrayrulecolor{black}}|*4{-|}}
    
    \multirow{-3}{*}{\cellgrey{Big Cell}} & \cellgrey{9} & \cellgrey{10} & \cellgrey{11} & \cellgrey{12}\\
    \hhline{|-|-|-|-|-|}
    
\end{tabularx}
\renewcommand{\arraystretch}{1.2}

\end{document}

在此处输入图片描述

答案1

这些白线似乎是 pdf viewer 的瑕疵。我可以用最近的 MiKTeX 和 Sumatra pdf viewer 重现它们。但是,使用包时,它们会消失(如果您使用包设置表格,tabularray也会发生同样的情况):nicematrix

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\begin{document}

\begin{tblr}{hlines=1pt, vlines=1pt,
             colspec = {*{5}{X[c]}},
             rowsep  = 5pt,
             rows    = {bg=gray!40}
             }
\SetCell[r=3]{c}    Big Cell
    & 1 & 2 & 3 & 4     \\
    & 1 & 2 & 3 & 4     \\
    & 1 & 2 & 3 & 4     \\
\end{tblr}

\end{document}

在此处输入图片描述

答案2

这些细白线出现在一些 PDF 查看器中。更准确地说,它们出现在使用 PDF 渲染器 PDF.js(例如 Firefox、DropBox、Papeeria)或 MuPDF(例如 SumatraPDF)的 PDF 查看器中。它们不会出现在 Adob​​e Reader 中,但使用该 PDF 阅读器时,在某些缩放级别下,这些规则似乎在彩色面板下消失。

该软件包nicematrix提供了一个带有工具的环境{NiceTabular}来避免此类问题。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\renewcommand{\arraystretch}{1.4}

\begin{NiceTabular}{*{5}{X[c]}}[hvlines]
\CodeBefore
  \arraycolor{gray!40}
\Body
  \Block{3-1}{Big Cell} & 1 & 2 & 3 & 4 \\
                        & 1 & 2 & 3 & 4 \\
                        & 1 & 2 & 3 & 4 \\
\end{NiceTabular}

\end{document}

您需要进行多次编译(因为nicematrix在后台使用了 PGF/TikZ 节点)。

上述代码的输出

相关内容