我正在制作一张表格,需要每隔一行着色。我想用这个。
\usepackage[table,svgnames]{xcolor}
\rowcolors{1}{white}{gray!15}
但是我的表有垂直条
\begin{tabular}{r|*{3}{p{2in}|}}
以及单杠
\multicolumn{1}{c}{\ }
&\multicolumn{1}{c}{Monday}
&\multicolumn{1}{c}{Wednesday}
&\multicolumn{1}{c}{Friday} \\ \hline
并且颜色使它们消失(“ ” 中的条形图r|
保持与上面的相同,但如果我将第一个多列的“ \
” 更改为“周”,则此条形图也会消失)。我是否遗漏了什么;有没有办法保留条形图并获取其背后的颜色?(我有 2010 TeX Live。)
答案1
在这个问题完全得不到解答之前,我可以提出一个解决方案吗?这个解决方案对纯粹主义者来说可能不太有吸引力,但对您来说可能是一个很好的方法。
关于如何使用 TikZ 矩阵代替表格,存在几个问题:TikZ 矩阵作为表格的替代品,tikz 矩阵中的水平行分隔线(类似表格中的 \hline)。由于您使用的是 beamer,因此已经加载了 TikZ,因此不需要额外的软件包。
您可以使用矩阵选项(例如、every even row/.style
等)来调整表格的外观。以下是基于您问题中的片段的示例:every odd column/.style
row 1/.style
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\tikzset{
table/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={
rectangle,
draw=black,
align=center
},
minimum height=1.5em,
text depth=0.5ex,
text height=2ex,
nodes in empty cells,
%%
every even row/.style={
nodes={fill=gray!20}
},
column 1/.style={
nodes={text width=2em,font=\bfseries}
},
row 1/.style={
nodes={
fill=black,
text=white,
font=\bfseries
}
}
}
}
\begin{tikzpicture}
\matrix (first) [table,text width=6em]
{
& Monday & Tuesday & Wednesday & Thursday & Friday\\
1 & A & B & C & D & E \\
2 & F & G & H & J & K \\
3 & A & B & C & D & E \\
4 & F & G & H & J & K \\
};
\end{tikzpicture}
\end{document}
答案2
受到 @F. Pantigny 的鼓励回答(+1)这是使用新tabularray
包的解决方案:
\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{colspec = {c},
hlines, vlines,
row{odd} = {bg=gray!30},
row{1} = {bg=black,fg=white,font=\bfseries},
}
& Monday
& Tuesday
& Wednesday
& Thursday
& Friday\\
1 & A & B & C & D & E \\
2 & F & G & H & J & K \\
3 & A & B & C & D & E \\
4 & F & G & H & J & K \\
\end{tblr}
\end{document}
经过一次编译,结果如下:
答案3
该软件包中nicematrix
有专门设计用于解决此类问题的工具。
{NiceTabular}
该软件包提供了与经典环境{tabular}
(的)类似的环境array
,但提供了用于为行、列和单元格着色的工具,在所有 PDF 查看器中、在所有缩放级别下都能获得完美的效果。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{>{\bfseries}cccccc}[hvlines]
\CodeBefore
\rowcolors{2}{white}{gray!15}
\rowcolor{black}{1}
\Body
\RowStyle[color=white]{}
& Monday & Tuesday & Wednesday & Thursday & Friday\\
1 & A & B & C & D & E \\
2 & F & G & H & J & K \\
3 & A & B & C & D & E \\
4 & F & G & H & J & K \\
\end{NiceTabular}
\end{document}