我有类似的问题删除绘制的多行表格中的白线. 一些 PDF 查看器(例如 Adobe 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 查看器中。它们不会出现在 Adobe 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 节点)。