# Changing color of already printed text

For making a small quiz in class I am working on a presentation in beamer.

I want to change the color of statements to red (wrong statement) or green (right statement) but only after my class answered the question.

I was searching the internet, but only found the color package, where you apparently can only change the text color before it appears.

Can someone point me into the right direction?

-

beamer provides an overlay specification with most of its macros/environments. It allows you to say (for example) ...\alert<2>{<stuff>}... so that <stuff> prints normally on slides other than number 2. \color itself is overlay aware in the form \color<2->{blue}{<stuff>} that would print <stuff> in blue from slide 2 onward. Alternatively, one can use something like ...{\only<2>{\color{blue}}<stuff>}... which prints <stuff> in blue only on slide 2.

Here's a short example

\documentclass{beamer}% http://ctan.org/pkg/beamer
\begin{document}
\begin{frame}
Some text {\only<2>{\color{blue}}and stuff}.
\end{frame}
\end{document}


Note that beamer already loads xcolor.

-
This is exactly what I need, with one little modification: I want the blue stuff be shown after, say, slide 2. –  mcwise Nov 1 '12 at 21:34
I found it on the documentation page you linked, I will have to write \only<2-> and so on. Thanks! :) –  mcwise Nov 1 '12 at 21:36

I searched for the difinition of alert command, and found these:

% beamercolorthemedefault.sty
% beamerfontthemedefault.sty
% beamerbasearticle.sty
% beamerbaselocalstructure.sty


Simillary I define rightstate and wrongstate commands that can be used like alert command.

\documentclass{beamer}

\setbeamercolor{rightstateed text}{fg=green}
\setbeamerfont{rightstateed text}{}
\defbeamertemplate<article>*{rightstateed text begin}{default}{\ifmmode\else\begin{itshape}\fi}
\defbeamertemplate<article>*{rightstateed text end}{default}{\ifmmode\else\end{itshape}\fi}
\newenvironment{rightstateenv}{\begin{altenv}%
{\usebeamertemplate{rightstateed text begin}\usebeamercolor[fg]{rightstateed text}\usebeamerfont{rightstateed text}}
{\usebeamertemplate{rightstateed text end}}{\color{.}}{}}{\end{altenv}}
\newcommand<>{\rightstate}[1]{\begin{rightstateenv}#2\relax#1\end{rightstateenv}}

\setbeamercolor{wrongstateed text}{fg=red}
\setbeamerfont{wrongstateed text}{}
\defbeamertemplate<article>*{wrongstateed text begin}{default}{\ifmmode\else\begin{itshape}\fi}
\defbeamertemplate<article>*{wrongstateed text end}{default}{\ifmmode\else\end{itshape}\fi}
\newenvironment{wrongstateenv}{\begin{altenv}%
{\usebeamertemplate{wrongstateed text begin}\usebeamercolor[fg]{wrongstateed text}\usebeamerfont{wrongstateed text}}
{\usebeamertemplate{wrongstateed text end}}{\color{.}}{}}{\end{altenv}}
\newcommand<>{\wrongstate}[1]{\begin{wrongstateenv}#2\relax#1\end{wrongstateenv}}

\begin{document}
\begin{frame}
\begin{itemize}
\item \wrongstate<2>{wrong statement}
\item \rightstate<3>{right statement}
\end{itemize}
\end{frame}
\end{document}


Here's the result:

-