[Tex/LaTex] coloring every other row of a table, with vertical lines

colortables

I am making a table that needs every other row colored. I thought to use this.

\usepackage[table,svgnames]{xcolor}
\rowcolors{1}{white}{gray!15}

But my table has vertical bars

\begin{tabular}{r|*{3}{p{2in}|}}

as well as horizontal bars

\multicolumn{1}{c}{\ }
&\multicolumn{1}{c}{Monday}  
&\multicolumn{1}{c}{Wednesday}  
&\multicolumn{1}{c}{Friday} \\ \hline

and the color makes them disappear (the bar from the "r|" stays as I have it above, but if I change the first multicolumn's "\" to "week" then this bar also disappears). Am I missing something; is there a way to keep the bars and get the colors behind them? (I have a 2010 TeX Live.)

Best Answer

Before this stays completely unanswered, may I propose a solution that won't appeal to purists, but that might be a good approach for you.

There have been a couple of questions concerned with how TikZ matrices can be used as replacements for tables: TikZ matrix as a replacement for tabular, Horizontal row separation line in tikz matrix (like \hline in tabular). Since you're using beamer, you have TikZ loaded already, so this wouldn't require additional packages.

You can use matrix options like every even row/.style,every odd column/.style, row 1/.style and so on to adjust the appearance of your tables. Here's an example based on the snippets in your question:

tikz matrix as a table

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