合并单元格中出现白行

合并单元格中出现白行

我创建了下表:

\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=NWNW代表西北)。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}

在此处输入图片描述

相关内容