我无法使用 \arrayrulecolor{} 更改 \hhline 颜色

我无法使用 \arrayrulecolor{} 更改 \hhline 颜色

我已经创建了一个带有表格和单元格颜色的表格,并且您知道会发生什么:单元格颜色与边框重叠。

我发现这个问题通常可以通过 hhline 来解决。为了改变彩色单元格上线条的颜色,我读到使用 arrayrulecolor 很有用。换句话说,为了避免这种情况:

使用 \hhline{~~-----} 的表格

上表由以下 LaTex 代码定义:

\begin{table}[h]
    \centering
    \setlength\arrayrulewidth{0.8pt}
    \begin{tabular}{|c|c|c|c|c|c|c|}
        \hhline{-------}
        
        \rowcolor[HTML]{EFEFEF} \cellcolor[HTML]{EFEFEF} & \cellcolor[HTML]{EFEFEF} & \cellcolor[HTML]{EFEFEF} &
        \multicolumn{4}{c|}{\cellcolor[HTML]{EFEFEF}\textbf{Acción}} \\ 
        
        \hhline{~~~----}
        
        \rowcolor[HTML]{EFEFEF} \multirow{-2}{*}{\cellcolor[HTML]{EFEFEF}\textbf{$n_{d}$}} &
        \multirow{-2}{*}{\cellcolor[HTML]{EFEFEF}\textbf{$n_{o}$}} &
        \multirow{-2}{*}{\cellcolor[HTML]{EFEFEF}\textbf{Estado}} &
        \textbf{Avance} &\textbf{Retroceso} &
        \textbf{\begin{tabular}[c]{@{}c@{}}Giro\\ Antihorario\end{tabular}} &
        \textbf{\begin{tabular}[c]{@{}c@{}}Giro\\ Horario\end{tabular}} \\  
            
        \hhline{-------}
        
        \cellcolor[HTML]{FFF1F1} 0 & \cellcolor[HTML]{FFF1F1}\textbf{0} & \cellcolor[HTML]{FFF1F1}\textbf{0} &
        \textit{0} & \textit{0} & \textit{0} & \textit{0} \\ 
        
        \hhline{~------}
    
        \cellcolor[HTML]{FFF1F1} & \cellcolor[HTML]{FFF1F1}\textbf{1} & \cellcolor[HTML]{FFF1F1}\textbf{1} &
        \textit{0} & \textit{0} & \textit{0} & \textit{0} \\ 
        
        \hhline{-------} 
    \end{tabular}
\end{table}  

我尝试使用以下方法来避免白线(但没有成功):

\definecolor{tgray}{HTML}{EFEFEF}
\definecolor{tblack}{HTML}{000000}

[...]

\hhline{>{\arrayrulecolor{tgray}}->{\arrayrulecolor{tgray}}->{\arrayrulecolor{tgray}}->{\arrayrulecolor{tblack}}----}

结果是一整条黑线:

使用 \arrayrulecolor 和 \hhline 的表格

如您所见,我的问题无法通过 arrayrulecolor 解决。您知道如何成功解决吗?

即便如此,如果您知道另一种制作不依赖于 pdf 查看器的表格的方法(使用我在此处展示的解决方案,在某些 ZOOM 级别下某些线条仍然不会出现),这对我来说将非常有利可图。

谢谢。

答案1

以下是如何使用 进行操作hhline。对于线条的彩色部分,我将您的颜色替换为命名的颜色svgnames(几乎与您的颜色相同),以获得更短的代码。

\documentclass{article}
\usepackage{array, multirow}
\usepackage[table, svgnames]{xcolor}
\usepackage{hhline}
\newcommand*{\arb}{\arrayrulecolor{black}}
\newcommand*{\argr}{\arrayrulecolor{Gainsboro!50}}

\begin{document}

\begin{table}[h]
    \centering
    \setlength\arrayrulewidth{0.8pt}
    \begin{tabular}{|c|c|c|c|c|c|c|}
        \hhline{-------}

        \rowcolor{Gainsboro!50} & & &
        \multicolumn{4}{c|}{\textbf{Acción}} \\%[HTML]{EFEFEF}r[HTML]{EFEFEF} \cellcolor[HTML]{EFEFEF}

        \hhline{|>{\argr}->{\arb}|>{\argr}->{\arb}|>{\argr}->{\arb}|----|}

        \rowcolor{Gainsboro!50} \multirow{-2}{*}{\textbf{$n_{d}$}} &
        \multirow{-2}{*}{\textbf{$n_{o}$}} &
        \multirow{-2}{*}{\textbf{Estado}} &
        \textbf{Avance} &\textbf{Retroceso} &
        \textbf{\begin{tabular}[c]{@{}c@{}}Giro\\ Antihorario\end{tabular}} &
        \textbf{\begin{tabular}[c]{@{}c@{}}Giro\\ Horario\end{tabular}} \\

        \hhline{-------}

        \cellcolor[HTML]{FFF1F1} 0 & \cellcolor[HTML]{FFF1F1}\textbf{0} & \cellcolor[HTML]{FFF1F1}\textbf{0} &
        \textit{0} & \textit{0} & \textit{0} & \textit{0} \\

        \hhline{|>{\arrayrulecolor{MistyRose!50}}->{\arb}|------}

        \cellcolor[HTML]{FFF1F1} & \cellcolor[HTML]{FFF1F1}\textbf{1} & \cellcolor[HTML]{FFF1F1}\textbf{1} &
        \textit{0} & \textit{0} & \textit{0} & \textit{0} \\

        \hhline{-------}
    \end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

答案2

我已经编辑了这个答案,因为有了最新版本nicematrix(5.6),我们不再需要makecell这里了。


您可以使用 轻松做到这{NiceTabular}一点nicematrix

\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{nicematrix}

\begin{document}

\NiceMatrixOptions{cell-space-top-limit=2pt,cell-space-bottom-limit=1pt}

\begin{NiceTabular}{ccccccc}[hvlines]
\CodeBefore
   \rowcolor{Gainsboro!50}{1,2}
   \rectanglecolor{MistyRose!50}{3-1}{4-3}
\Body
\Block{2-1}{$n_d$}&\Block{2-1}{$n_0$}& \Block{2-1}{Estado} & \Block{1-4}{Acción} \\
&&& Avance & Retroceso & \Block{}{Giro\\ Antihorario} & \Block{}{Giro\\Horario} \\
\Block{2-1}{0}
& 0 & 0 & 0 & 0 & 0 & 0 \\
& 1 & 1 & 0 & 0 & 0 & 0 \\
\end{NiceTabular}
\end{document} 
  • 在 中,您可以水平或垂直地{NiceTabular}使用 合并单元格。\Block

  • \Block如果您想使用,您也可以只对一个单元格使用\\

  • 使用密钥hvlines,您可以绘制块中不包括的所有规则。

  • 您有工具来设置颜色、行、列和单元格。使用这些工具,您不会在某些 PDF 查看器中看到伪影,而有时使用 的工具时,会出现伪影colortbl

当前缓冲区的输出

相关内容