Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alternating row colors in tabular(*|x)?

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?

like image 660
Martin Maciaszek Avatar asked Apr 11 '11 12:04

Martin Maciaszek


1 Answers

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}
like image 135
cohensh Avatar answered Sep 24 '22 18:09

cohensh