Alternating row colors in tabular(*|x)?

10,752

Not a fix but a hack around, add \hiderowcolors to the first row, then turn colors back on with \showrowcolors. See code:

\rowcolors{3}{tableShade}{white}  %% start alternating shades from 3rd row
  \noindent\begin{tabularx}{\textwidth}{X X X X}%this can be {Xrrr} too
    \hiderowcolors 
     Something & foo & bar & baz \\
    \showrowcolors 
    Something & foo & bar & baz \\
    Something & foo & bar & baz \\
    Something & foo & bar & baz \\
    Something & foo & bar & baz \\
\end{tabularx}
Share:
10,752
Martin Maciaszek
Author by

Martin Maciaszek

Updated on June 21, 2022

Comments

  • Martin Maciaszek
    Martin Maciaszek about 2 years

    I’m trying to create a table in my document that resembles more or less the table in the picture below:

    Example table with alternate row coloring

    This table is supposed to be stretched horizontally to \textwidth. My first attempt with tabular* looked like this:

    \documentclass{scrartcl}
    \usepackage[table]{xcolor}
    \definecolor{tableShade}{gray}{0.9}
    
    \begin{document}
      \rowcolors{3}{tableShade}{white}  %% start alternating shades from 3rd row
      \noindent\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lrrr}
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
      \end{tabular*}
    \end{document}
    

    The result was:

    Example table with tabular*

    Well, the alternate row coloring works but tabular* inserts space between columns to stretch the whole table to \textwidth. Browsing through my LaTeX companion I found that tabularx should be able to do what I want. So I changed my code to look like that:

    \documentclass{scrartcl}
    \usepackage[table]{xcolor}
    \usepackage{tabularx}
    \definecolor{tableShade}{gray}{0.9}
    
    \begin{document}
      \rowcolors{3}{tableShade}{white}  %% start alternating shades from 3rd row
      \noindent\begin{tabularx}{\textwidth}{Xrrr}
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
        Something & foo & bar & baz \\
      \end{tabularx}
    \end{document}
    

    Now, this looks more like it. But tabularx ignores the starting row for the coloring and starts with the first row.

    Example table with tabularx

    Now I’ve run out of ideas. Any suggestions?

  • Martin Maciaszek
    Martin Maciaszek about 13 years
    I guess this is the best we can do currently without writing a a replacement for tabularx.