Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have tables in a beamer presentation, and I would like to highlight table rows sequentially (not necessarily in row order) using overlay specifications. So I would like to be able to write code similar to the following:

\begin{tabular}
    \color<1>{red}
    Row 1  & Row 1 \\
    \color<2>{red}
    Row 2  & Row 2
\end{tabular}

with the effect that Row 1 is highlighted in red in the first slide and Row 2 is highlighted in the second slide.

I am using a tabu environment with dcolumn type columns. Here are some additional details about the findings I've made so far:

  1. In another post I found code to define a command dcolcolor to be able to colour dcolumn text.
  2. In order to colour the whole row's text without specifying each cell individually, I use \rowfont from tabu.
  3. In order to make \rowfont{\dcolcolor{...}} overlay specification-aware, I try to follow the directions in section 9.6.1 of the beamer user guide.

However, I could not get it to work. So I tried using only on \rowfont{...} without trying to define a new, overlay specification-aware command, and I got an error. Here is a MWE:

\documentclass{beamer}

\usepackage{dcolumn}
\usepackage{tabu}

\newcolumntype{d}[1]{D{.}{.}{#1}}
\makeatletter
\def\DC@endright{$\hfil\egroup\@dcolcolor\box\z@\box\tw@\dcolreset}
\def\dcolcolor#1{\gdef\@dcolcolor{\color{#1}}}
\def\dcolreset{\dcolcolor{black}}
\dcolcolor{black}
\makeatother

\begin{document}

\begin{frame}

\begin{tabu}{ld{2}d{2}}
% All of row 1 should be red on all slides
\rowfont{\color{red}\dcolcolor{red}}
Row 1 & 1.234 & 1.234 \\

% All of row 2 should be red on second slide only
\only<2>{\rowfont{\color{red}\dcolcolor{red}}}
Row 2 & 2.345 & 2.345 \\
\end{tabu}

\end{frame}
\end{document}

When I compile, I get a couple of errors like

! Misplaced \noalign.
\rowfont -&gt;\ifdim \baselineskip =\z@ \noalign
                                            \fi {\ifnum 0=`}\fi \tabu@row@...
l.28     \end{frame}

The output has two pages. The first page is correct, first row is highlighted (although the first column doesn't appear to be left-aligned). On the second page, the first row is highlighted as expected, but the second row only highlights the numbers, not the first column. Here is a screenshot:

Screenshot of output

share|improve this question
add comment

1 Answer

up vote 9 down vote accepted
\rowfont{\only<2>{\color{red}\dcolcolor{red}}}
share|improve this answer
    
Thank you, a nice simple solution. Based on this answer I was able to create a new command \newcommand<>{\highlighttext}{\only#1{\color{red}\dcolcolor{red}}}. Usage would be \rowfont{\highlighttext<1>} above a row. However, note that \newcommand<>{\highlightrow}{\rowfont{\only#1{\color{red}\dcolcolor{red}}}} with usage \highlightrow<1> doesn't work. –  Clara Aug 12 '12 at 15:44
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.