取消特定单元格的 \rowcolors

取消特定单元格的 \rowcolors

在某些表格中,左上角的单元格应该留空。为了在使用的表格中执行此操作\rowcolors,我执行了\cellcolor{white}。但是,我现在在具有背景的 Beamer 幻灯片中使用了一些这种类型的旧表格,因此我希望能够简单地取消特定单元格的行颜色(IE,使单元格透明,以便显示背景),而不是用白色填充(实际上,在这种情况下,白色看起来不如保持单元格原样美观)。

在下面的代码中,我使用哑元素\colorbox来伪造第三个虚拟表实例的背景。请注意,我的真实背景是渐变色,因此用“背景中使用的颜色”填充单元格不是解决方案。

\documentclass{minimal}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}

\begin{document}

\newcommand{\emptycell}{}

\begin{tabular}{c c c}
    \emptycell & A & B \\
    Plop       & 1 & 2 \\
\end{tabular}

\rowcolors{1}{blue!15}{blue!10}
\renewcommand{\emptycell}{\cellcolor{white}}

\begin{tabular}{c c c}
    \emptycell & A & B \\
    Plop       & 1 & 2 \\
\end{tabular}

\colorbox{red!10}{%
    \begin{tabular}{c c c}
        \emptycell & A & B \\
        Plop       & 1 & 2 \\
    \end{tabular}%
}

\end{document}

在此处输入图片描述

我尝试了一些非常疯狂的东西,但没有成功。我甚至做了以下这些(来吧,嘲笑我):

\newcommand{\emptycell}{%
    \multicolumn{1}{
        >{%
            \let\rowc@lors\relax%
            \def\@evenrowcolor{\@norowcolor}%
            \def\@oddrowcolor{\@norowcolor}%
            \let\rownum\relax%
        } c
    }{}%
}

谢谢你的时间。

答案1

您可以在这里尝试一下:

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}

\begin{document}


\rowcolors{1}{blue!15}{blue!10}

\makeatletter
\global\let\oriCT@@do@color\CT@@do@color 

\colorbox{red!10}{%
\begin{tabular}{c c c}         
 \global\let\CT@@do@color\relax           %deactivate
&
 \global\let\CT@@do@color\oriCT@@do@color %reactivate
A 
&
B \\
  Plop       & 1 & 2 \\
    \end{tabular}%
}

\end{document}

在此处输入图片描述

答案2

通过其键,的corners环境可以检测空角,并且该角落中的单元格将不会被命令(内置于)着色。{NiceTabular}nicematrix\rowcolors{NiceTabular}

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\pagecolor{red!10}

\begin{NiceTabular}{c c c}[color-inside,corners=NW] % NW : north-west
   \rowcolors{blue!15}{blue!10}
               & A & B \\
    Plop       & 1 & 2 \\
\end{NiceTabular}%

\end{document}

第一个代码的输出

供参考:如果您使用 键添加规则hvlines,则规则将不会绘制在空角落。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\pagecolor{red!10}

\begin{NiceTabular}{c c c}[hvlines,color-inside,corners=NW] % NW : north-west
   \rowcolors{blue!15}{blue!10}
               & A & B \\
    Plop       & 1 & 2 \\
\end{NiceTabular}%

\end{document}

第二段代码的输出


nicematrix还提供了一种特殊颜色nocolor。当在带有 的单元格中使用该颜色时\cellcolor{nocolor},不会向该单元格添加任何颜色,即使\rowcolor该行中命令有效。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\pagecolor{red!10}

\begin{NiceTabular}{c c c c c c c c }[color-inside]
   \rowcolors{blue!15}{blue!10}
   A & B & C & \cellcolor{nocolor} D & E & F & G & H \\
   A & B & C & D & E & F & G & H \\
\end{NiceTabular}%

\end{document}

第三个代码的输出

答案3

tabularray

\documentclass{article}

%\usepackage[utf8]{inputenc} no more needed with recent distribution
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{tabularray}

\begin{document}

\colorbox{red!10}{%
\begin{tblr}{
  colspec={c c c},
  row{2}={blue!10},
  cell{1}{2-Z} = {blue!15}
  }         
  &A&B \\
  Plop       & 1 & 2 \\
\end{tblr}%
}

\vspace{1cm}
and if you like lines:
\vspace{1cm}

\colorbox{red!10}{%
\begin{tblr}{
  colspec={c c c},
  row{2}={blue!10},
  cell{1}{2-Z} = {blue!15},
  vline{1}={2}{solid},
  vline{2-Z}={solid},
  hline{1}={2-Z}{solid},
  hline{2-Z}={solid},
  }         
  &A&B \\
  Plop       & 1 & 2 \\
\end{tblr}%
}

\end{document}

在此处输入图片描述

相关内容