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?

2 Answers 2

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.

1
  • 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). Commented Oct 1, 2014 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.

2
  • fixpauseincludegraphics.sty link is broken.
    – epsilone
    Commented Dec 4, 2014 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
    Commented Sep 15, 2019 at 5:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .