用垂直线对表格的每隔一行进行着色

用垂直线对表格的每隔一行进行着色

我正在制作一张表格,需要每隔一行着色。我想用这个。

\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/.stylerow 1/.style

tikz 矩阵作为表格

\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}

上述代码的输出

相关内容