我创建了下表:
\begin{table}[htb]
\centering
\begin{tabular}{cc|c|c|c|c|}
\cline{3-6}
&
& \cellcolor[HTML]{3166FF}{\color[HTML]{FFFFFF} Col1 }
& \cellcolor[HTML]{3166FF}{\color[HTML]{FFFFFF} Col2 }
& \cellcolor[HTML]{3166FF}{\color[HTML]{FFFFFF} Col3 }
& \cellcolor[HTML]{3166FF}{\color[HTML]{FFFFFF} Col4 }
\\ \hline
\rowcolor[HTML]{FFFFFF}
\multicolumn{1}{|c|}
{\cellcolor[HTML]{3166FF}{\color[HTML]{FFFFFF} }}
& sub-row-1
& -
& -
& -
& -
\\ \cline{2-6}
\rowcolor[HTML]{CEE3FF}
\multicolumn{1}{|c|}
{\multirow{-2}{*}{\cellcolor[HTML]{3166FF}
{\color[HTML]{FFFFFF} row-1}}} &
{\color[HTML]{000000} sub-row-2} &
{\color[HTML]{000000} -} &
{\color[HTML]{000000} -} &
{\color[HTML]{000000} -} &
{\color[HTML]{000000} -}
\\ \hline
\end{tabular}
\caption{}
\label{}
\end{table}
从下图可以看出,当我将文档编译为 PDF 时,在单元格“row-1”中由于两个单元格合并而出现了一行白线。
我怎样才能删除这一行?
我用来编译文档的命令是:
pdflatex <document_name>
先感谢您
答案1
这条线对应于 产生的小间隙\cline{2-6}
。解决方案使用\hhline
,它接受 \arrayrulecolor
其每个段的命令,因此我们可以使用全宽\hhline
,其第一部分具有背景颜色。我们有一张非常薄的底片,\vskip
使白色段完全消失。
我借此机会简化了您的代码并添加了一些\extrarowheight
,因此单元格内容垂直居中:
\documentclass{article}
\usepackage{array, multirow}
\usepackage[table]{xcolor}
\definecolor{myblue}{HTML}{3166FF}
\usepackage{hhline}
\begin{document}
\begin{table}[htb]
\centering\setlength{\extrarowheight}{2pt}
\begin{tabular}{cc|c|c|c|c|}
\hhline{~~|----}
\rowcolor{myblue}
\multicolumn{2}{c|}{\cellcolor{white}}
& \color{white} Col1 & \color{white} Col2 & \color{white} Col3 & \color{white} Col4 \\
\hline
\rowcolor{white}
\multicolumn{1}{|c|}
{\cellcolor{myblue}{\color{white}}}
& sub-row-1
& - & - & - & - \\[-0.1pt]
\hhline{|>{\arrayrulecolor{myblue}}->{\arrayrulecolor{black}}|-|-|-|-|-|}
\noalign{\vskip -0.1pt}
\rowcolor[HTML]{CEE3FF}
\multicolumn{1}{|c|}
{\multirow{-2}{*}{\cellcolor{myblue}%
{\color{white} row-1}}} &
sub-row-2 &
- & - & - & - \\
\hline
\end{tabular}
\caption{}
\label{}
\end{table}
\end{document}
答案2
使用{NiceTabular}
的nicematrix
工具可以为单元格、行和列着色,hvlines
在指定一个角(corners=NW
,NW
代表西北)。PDF 查看器中不会出现任何伪影。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\setlength{\extrarowheight}{4pt}
\begin{NiceTabular}{cccccc}[hvlines,corners=NW]
\CodeBefore
\rowcolor[HTML]{CEE3FF}{3}
\rowcolor[HTML]{3166FF}{1}
\columncolor[HTML]{3166FF}{1}
\Body
\RowStyle[color=white]{}
& & Col1 & Col2 & Col3 & Col4 \\
\Block{2-1}{\color{white} row-1}
& sub-row-1 & - & - & - & - \\
& sub-row-2 & - & - & - & - \\
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
答案3
为了完整地了解可能的解决方案;-),使用tabularray
包:
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{cells={c},
hline{1} = {3-6}{solid},
hline{2-Z} = {solid},
row{1}={bg=cyan, fg=white},
row{3}={bg=cyan!30},
vline{1,2} = {2-3}{solid},
vline{2-Z} = {solid}
}
\SetCell[c=2]{c,white}
& & Col1 & Col2 & Col3 & Col4 \\
\SetCell[r=2]{c,m,bg=cyan, fg=white} row-1
& sub-row-1 & -- & -- & -- & -- \\
& sub-row-2 & -- & -- & -- & -- \\
\end{tblr}
\end{document}