5

I have a slide that is produced by the following codes:

\begin{frame}[plain]
\begin{itemize}
\item Current work 0
\item Future works 1
\item Future works 2
\begin{center}
\includegraphics[scale=0.35]{xxx.pdf}
\end{center}
\end{itemize}
\end{frame}

Now I want to display the first item "Current work 0" and the graphics xxx.pdf at the same time, while grey out the two "Future works". Then on the next slide I want to display the two "Future works" items and grey out "Current works" and the graphics. Is there any way to achieve that?

6

The following MWE provides \hidecontent[<transparency>]{<stuff>} that hides <stuff> with a white transparent box. Optional transparency is set as <transparency> (provided by Heiko's transparent package); default is 0.25 or 25%:

enter image description here

\documentclass{beamer}% http://ctan.org/pkg/beamer
\usepackage{transparent}% http://ctan.org/pkg/transparent
\setbeamercovered{transparent}
\newcommand{\hidecontent}[2][0.25]{{% \hidecontent[<transparency>]{<stuff>}
  \setbox9=\hbox{#2}% Store <stuff> in \box9 to obtain height/width
  \transparent{#1}\ooalign{\usebox9\cr\color{white}\rule{\wd9}{\ht9}\cr}}}
\begin{document}
\begin{frame}[plain]
  \begin{itemize}
    \item<1> Current work 0
    \item<2> Future works 1
    \item<2> Future works 2
    \begin{center}
      \mbox{\only<1>{\includegraphics[scale=0.35]{example-image-a.pdf}}}%
      \mbox{\only<2>{\hidecontent{\includegraphics[scale=0.35]{example-image-a.pdf}}}}%
    \end{center}
  \end{itemize}
\end{frame}
\end{document}

beamer doesn't adequately handle hiding of graphics, hence the use of \hidecontent. This works well with rectangular content. Other content (textual, for example), is best dealt with by beamer itself.

  • This solution is very good, but does not work well (knowable "line" in the picture + some hight problems after a linebreak) with pictures in a raisebox (took me some time to note that). – Dominikus K. Oct 1 '14 at 14:18
7

I can suggest a less complicated way than what Werner proposed. It consists in one include and no change to your code, but you have to download a custom style that remedy to your problem.

  1. Download fixpauseincludegraphics.sty and place it into the same folder as your .tex file.

  2. Include the package with \usepackage{fixpauseincludegraphics}.

  3. (optional) Check out this post to understand how it works - long story short, this solution consists in an overloading of \includegraphics to redraw the pictures using tikz to change the opacity according to the beamer transparency state.

  • fixpauseincludegraphics.sty link is broken. – epsilone Dec 4 '14 at 9:19
  • When extra space around images introduced by fixpauseincludegraphics is a problem and the original \includegraphics’s positioning is needed (like in this question), the solution is to change \node[opacity=\transparent@value/100] to \node[opacity=\transparent@value/100, style={inner sep=0, outer sep=0}] within the STY file. – Peter Sep 15 at 5:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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