我有一张表,其行使用 xcolor 设置为在白色和灰色之间交替\rowcolors{2}{white}{gray!10}
。 我还想突出显示该表的一列,以便它看起来像这样:
我尝试使用\begin{tabular}{c>{\columncolor{_lblue!25}}cc}
来执行此操作,但这样做只会覆盖颜色,并将其与白色混合。有没有办法混合行和列的颜色,使其看起来像图像?也许一个变量可以保存背景颜色,这样我就可以执行类似 的操作\columncolor{_lblue!25!\cellbgcolor}
?
编辑:我现在拥有的是
\rowcolors{2}{white}{gray!10}
\begin{tabular}[c>{\columncolor{blue}}cc]
a & b & c \\
\hline
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{tabular}
我尝试使用透明度包,看看是否可以使列颜色透明,以防被覆盖而不是覆盖,但这会使整个单元格(包括文本)透明。我不知道如何在跟踪列颜色的同时交替使用每行的颜色。
答案1
不幸的是,据我所知,表格中行和列的颜色没有行颜色透明度的选项。所以应该用\cellcolor
适当的颜色来模仿。例如像这样:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[table]{xcolor}
\newcommand\ccg[1]{\cellcolor{gray!30!red!30}{#1}} % for cells in second column
% and gray colored rows
\newcommand\ccw[1]{\cellcolor{red!15}{#1}} % for cells in second column
% white colored rows
\begin{document}
\rowcolors{1}{white}{gray!30}
\begin{tabular}{c c c}
a & \ccw{b} & c \\
\hline
1 & \ccg{2} & 3 \\
4 & \ccw{5} & 6 \\
7 & \ccg{8} & 9 \\
\end{tabular}
\end{document}
答案2
后来我想到一种方法,就是完全放弃\rowcolors
。这样你就可以突出显示行和列,交替对列进行阴影处理,并混合颜色以突出显示。这可能不太漂亮,但确实有效。
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\usepackage{etoolbox}
\usepackage{array}
\begin{document}
\def\graybg{black!20!white}%
\def\currowcolor{\graybg}%
\newcolumntype{H}[1]{>{\cellcolor{\currowcolor!60!#1}}c} % Highlighted col
\newcolumntype{C}{H{white}} % Normal col
\newcommand{\rowalt}
{%
\ifdefstring{\oldcol}{NONE}%
{%
\ifdefstring%
{\currowcolor}{\graybg}%
{\global\def\currowcolor{white}}%
{\global\def\currowcolor{\graybg}}%
}%
{%
\ifdefstring%
{\oldcol}{\graybg}%
{\global\def\currowcolor{white}}%
{\global\def\currowcolor{\graybg}}%
\global\def\oldcol{NONE}%
}%
}%
% Overwrite the row color (while preserving shading and column colors)
\newcommand{\owc}[1]%
{%
\global\let\oldcol\currowcolor%
\global\def\currowcolor{\oldcol!50!#1}%
}%
\newenvironment{mytable}[1]
{%
\global\def\oldcol{NONE}%
\def\currowcolor{\graybg}%
\begin{tabular}{!\rowalt #1}%
}%
{%
\end{tabular}%
}%
\begin{mytable}{CH{blue!50}CCC}
a & b & c & d & e \\
\hline
1 & 2 & 3 & 2 & 1 \\
4 & 5 & 6 & 5 & 4 \\
\owc{red}7 & 8 & 9 & 8 & 7 \\
\owc{red}4 & 5 & 6 & 5 & 4 \\
1 & 2 & 3 & 2 & 1
\end{mytable}
\end{document}
答案3
这是一个(≥ 6.18 2023-04-19){NiceTabular}
的解决方案。nicematrix
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{ccc}
\CodeBefore
\rowcolor{gray!10}{2,4}
\columncolor[opacity=0.2]{blue}{2}
\Body
a & b & c \\ \hline
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。