具有不同颜色的表格可消除垂直线和水平线

具有不同颜色的表格可消除垂直线和水平线

我的文档中有一个表格,其中我将行颜色在白色(默认)和灰色之间切换。那些行的颜色随着 而改变\rowcolor{gray},从而禁用水平线和垂直线?

\begin{table}[h]
\begin{tabular}{|l|p{7cm}|}
    \hline  
    \rowcolor{Blackgray}
    \textcolor{white}{\textit{Column 1}}                &       \textcolor{white}{\textit{Column 2}}                        \\      \hline 
    Fooo -- Bar                                         &       Some text here with enum:
                                                                \begin{itemize}
                                                                    \item Item1
                                                                    \item Item2
                                                                    \item ...
                                                                \end{itemize}                                               \\      \hline
    \rowcolor{Gray} 
    Foo -- Baar                                         &       Some text here....                                          \\      \hline
    Fooo -- Baaaar                                      &       Some other text here                                        \\      \hline
    \rowcolor{Gray}
    Baar -- FOOO                                        &       Nope
                                                                \begin{itemize}
                                                                    \item Item1
                                                                \end{itemize}                                               \\      \hline
\end{tabular} 
\end{table}

在此处输入图片描述

我的乳胶有什么问题?为什么没有垂直线和水平线?我的乳胶中应该包含什么?

答案1

发生这种情况的原因是colortbl将行绘制在列之上。

采用这个技巧。

在你的序言中添加以下几行:

\usepackage{etoolbox}

\makeatletter
\patchcmd{\@classz}
  {\CT@row@color}
  {\oldCT@column@color}
  {}
  {}
\patchcmd{\@classz}
  {\CT@column@color}
  {\CT@row@color}
  {}
  {}
\patchcmd{\@classz}
  {\oldCT@column@color}
  {\CT@column@color}
  {}
  {}
\makeatother

MWE(我已更改您的自定义颜色)

\documentclass[10pt,a4paper]{report}
\usepackage{colortbl}
\usepackage{xcolor}

\usepackage{etoolbox}

\makeatletter
\patchcmd{\@classz}
  {\CT@row@color}
  {\oldCT@column@color}
  {}
  {}
\patchcmd{\@classz}
  {\CT@column@color}
  {\CT@row@color}
  {}
  {}
\patchcmd{\@classz}
  {\oldCT@column@color}
  {\CT@column@color}
  {}
  {}
\makeatother

\begin{document}

\begin{table}[h]
\begin{tabular}{|l|p{7cm}|}
    \hline
    \rowcolor{gray}
    \textcolor{white}{\textit{Column 1}}                &       \textcolor{white}{\textit{Column 2}}                        \\      \hline
    Fooo -- Bar                                         &       Some text here with enum:
                                                                \begin{itemize}
                                                                    \item Item1
                                                                    \item Item2
                                                                    \item ...
                                                                \end{itemize}                                               \\      \hline
    \rowcolor{lightgray}
    Foo -- Baar                                         &       Some text here....                                          \\      \hline
    Fooo -- Baaaar                                      &       Some other text here                                        \\      \hline
    \rowcolor{lightgray}
    Baar -- FOOO                                        &       Nope
                                                                \begin{itemize}
                                                                    \item Item1
                                                                \end{itemize}                                               \\      \hline
\end{tabular}
\end{table}

\end{document} 

输出:

在此处输入图片描述

答案2

如果有帮助的话,我注意到用、和\hline中适当的一个替换可以恢复我的表格中带有彩色行的水平线。\toprule\midrule\bottomrule

答案3

该软件包nicematrix提供了一个带有{NiceTabular}专门用于解决此类问题的工具的环境。

通过{NiceTabular},您将在 PDF 查看器中获得完美的效果(在所有缩放级别),因为借助 PGF/Tikz 和写在 |aux| 文件上的信息,彩色面板在绘制规则之前就已填充。

然而,您需要多次编译。

\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\begin{table}[h]
\begin{NiceTabular}{lp{7cm}}[hvlines,colortbl-like]
\rowcolor{gray}%
\textcolor{white}{\textit{Column 1}} & \textcolor{white}{\textit{Column 2}} \\  
Fooo -- Bar                          & Some text here with enum:
                                       \begin{itemize}
                                           \item Item1
                                           \item Item2
                                           \item ...
                                       \end{itemize}                        \\ 
\rowcolor{lightgray} %
Foo -- Baar                          & Some text here....                   \\ 
Fooo -- Baaaar                       & Some other text here                 \\ 
\rowcolor{lightgray}%
Baar -- FOOO                         & Nope
                                       \begin{itemize}
                                           \item Item1
                                       \end{itemize}                        \\ 
\end{NiceTabular} 
\end{table}

\end{document}

上述代码的输出

相关内容