可以使用更加beamer
-style的\againframe
方法:
\documentclass[notheorems]{beamer}
\usepackage{tcolorbox}
\tcbuselibrary{skins,xparse}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\makeatletter
\resetcounteronoverlays{tcb@cnt@exercise}
\NewTColorBox[auto counter,number within=section]{exercise}{+!O{}}{%
enhanced,
/tikz/alt=<1>{colframe=green!20!black}{colframe=red!20!black},
colback=yellow!10!white,
/tikz/alt=<1>{coltitle=green!40!black}{coltitle=red!40!black},
fonttitle=\bfseries,
underlay={
\begin{tcbclipinterior}
\shade[
alt=<1>{inner color=green!80!yellow}{inner color=red!80!yellow},
outer color=yellow!10!white
] (interior.north west) circle (2cm);
\draw[help lines,step=5mm,yellow!80!black,shift={(interior.north west)}] (interior.south west) grid (interior.north east);
\end{tcbclipinterior}
},
title={\alt<1>{Exercise~\thetcbcounter:}{Solution of Exercise~\thetcbcounter~on page \pageref{exercise@\thetcbcounter}:}},
attach title to upper={\alt<1>{\label<1>{exercise@\thetcbcounter}\quad}{\label<2>{solution@\thetcbcounter}\par}},
after upper={%
\only<1>{%
\par\hfill\textcolor{green!40!black}\itshape
Solution on page~\pageref{solution@\thetcbcounter}
}
},
#1
}
\makeatother
\begin{document}
\begin{frame}<1>[label=quack]%
\begin{exercise}
\begin{onlyenv}<1>
Compute the derivative of the following function:
\begin{equation*}
f(x)=\sin((\sin x)^2)
\end{equation*}
\end{onlyenv}
\begin{onlyenv}<2>
The derivative is:
\begin{align*}
f'(x) &= \left( \sin((\sin x)^2) \right)'\\
&=\cos((\sin x)^2) 2\sin x \cos x.
\end{align*}
\end{onlyenv}
\end{exercise}
\end{frame}%
\againframe<2>{quack}
\end{document}