Предположим, что я всегда буду использовать два блока в каждом кадре.
Затем мне бы хотелось иметь простой способ сделать следующее, без процедуры копирования/вставки:
На каждом кадре (кроме первого)
- первый блок должен быть вторым блоком из предыдущего кадра.
Поэтому я полагаю, что что-то похожее на код ниже было бы возможным и полезным:
\begin{frame}
% code to call the second block from the previous frame
\begin{block} % the new block, to be used again on the next frame
\end{block}
\end{frame}
Было бы неплохо, если бы можно было использовать какие-нибудь накладки.
Есть идеи?
решение1
Вот решение без ручного вмешательства; \dupbox
выполняет всю работу; изначально вы определяете начальное содержимое, а затем просто вызываете его с новым текстом; \dupbox
также имеет необязательный аргумент, позволяющий указать заголовок блока:
\documentclass{beamer}
\usepackage{tikz}
\usetheme{Warsaw}
\usecolortheme{crane}
\newcommand\dupbox[2][]{%
\begin{block}{\duptitle}
\begin{minipage}{\linewidth}
\duptext
\end{minipage}
\end{block}
\begin{block}{#1}
\begin{minipage}{\linewidth}
#2
\end{minipage}
\end{block}
\gdef\duptext{#2}
\gdef\duptitle{#1}
}
\gdef\duptext{Initial text}
\gdef\duptitle{}
\begin{document}
\begin{frame}
\dupbox[Optional title]{Some text for frames one and two}
\end{frame}
\begin{frame}
\dupbox{Another test text for frames two and three with some math:
\[a=b.\]
}
\end{frame}
\begin{frame}
\dupbox[A simple TikZ drawing]{\tikz{\fill[blue] (0\linewidth,0) circle (13pt);
\fill[orange] (6,0) circle (13pt);}
}
\end{frame}
\begin{frame}
\dupbox{Even more text}
\end{frame}
\end{document}
решение2
Как это?
\documentclass{beamer}
\begin{document}
\begin{frame}
\only<1>{\begin{block}{First} block \end{block}}
\only<1,2>{\begin{block}{Second} block \end{block}}
\only<2,3>{\begin{block}{Third} block \end{block}}
\only<3>{\begin{block}{4th} block \end{block}}
\end{frame}
\end{document}