I have a very complex Tikz figure that is uncovered piece by piece during my presentation. While tweaking the presentation I decided to change the order of things being uncovered and due to the large amount of \onslide commands it is a pain to get it right. In order to help the situation I tried to create the following two macros:
\newcommand*{\BeamerCounter}[1]{%
\@ifundefined{c@#1}{%
\newcounter{#1}}{}}
\newcommand*{\BeamerNext}[2]{%
\@ifundefined{#1#2}{%
\stepcounter{#1}
\newcommand*{#1#2}{\the#1}}{}}
The idea is that at the top level of my document I would do something like:
\BeamerCounter{Fig}
\BeamerNext{Fig}{Part1}
\BeamerNext{Fig}{Part2}
So that in my figure I can use:
\onslide<\FigPart1>{ .. }
\onslide<\FigPart2>{ .. }
\onslide<\FigPart1, \FigPart2>{ .. }
Minimal (non)working example:
\documentclass{beamer}
\newcommand*{\BeamerCounter}[1]{%
\@ifundefined{c@#1}{%
\newcounter{#1}}{}}
\newcommand*{\BeamerNext}[2]{%
\@ifundefined{#1#2}{%
\stepcounter{#1}
\newcommand*{#1#2}{\the#1}}{}}
\BeamerCounter{Fig}
\BeamerNext{Fig}{Part1}
\BeamerNext{Fig}{Part2}
\begin{document}
\begin{frame}
\begin{itemize}
\item<FigPart1-> item1
\item<FigPart2-> item2
\end{itemize}
\end{frame}
\end{document}
Which yields the following errors:
t.tex:12: You can't use `\spacefactor' in vertical mode.
t.tex:12: leading text: \BeamerCounter{Fig}
t.tex:12: Missing $ inserted.
t.tex:12: leading text: \BeamerCounter{Fig}
t.tex:12: Missing \begin{document}.
t.tex:12: leading text: \BeamerCounter{Fig}
t.tex:13: You can't use `\spacefactor' in math mode.
t.tex:13: leading text: \BeamerNext{Fig}{Part1}
t.tex:13: Missing number, treated as zero.
t.tex:13: leading text: \BeamerNext{Fig}{Part1}
t.tex:13: Missing control sequence inserted.
t.tex:13: leading text: \BeamerNext{Fig}{Part1}
t.tex:13: You already have nine parameters.
t.tex:13: leading text: \BeamerNext{Fig}{Part1}
t.tex:13: You can't use `the letter F' after \the.
t.tex:13: leading text: \BeamerNext{Fig}{Part1}
t.tex:14: You can't use `\spacefactor' in math mode.
t.tex:14: leading text: \BeamerNext{Fig}{Part2}
t.tex:14: Missing number, treated as zero.
t.tex:14: leading text: \BeamerNext{Fig}{Part2}
t.tex:14: Missing control sequence inserted.
t.tex:14: leading text: \BeamerNext{Fig}{Part2}
t.tex:14: You already have nine parameters.
t.tex:14: leading text: \BeamerNext{Fig}{Part2}
t.tex:14: You can't use `the letter F' after \the.
t.tex:14: leading text: \BeamerNext{Fig}{Part2}
t.tex:15: Missing $ inserted.
\newcommand
's you need\makeatletter
and\makeatother
. See What do\makeatletter
and\makeatother
do?