I would like to set up a presentation in which different parts of the same tikz picture appear, depending on the value of one, perhaps more, integer variables. I tried at first using a fixed picture, with changing the visibility of the different path elements of it, depending on the slide number, but this did not scale. There are about 150 slides in a single frame.
Then, I tried an alternative in which the entire picture is defined as a macro, which is invoked once per slide, with different portions showing based on global conditions. However, I failed in including conditionals within the keys.
Here is a not so minimal and certainly not working example demonstrating my failures. Any help would be appreciated:
\documentclass{beamer} \usepackage{tikz} \usetikzlibrary{chains} \tikzset{% invisible/.style={opacity=0}, } \newcounter{count} \newcommand\myPicture{ \begin{tikzpicture} \begin{scope}[start chain = going right] \node[draw, circle, on chain] { \ifnum \value{count} > 1 {Count is greater than s} \fi}; \node[draw, circle, on chain,opacity=0] {B}; \node[draw, circle, on chain, \ifnum \value{count} > 1\relax invisible\fi] {C}; \node[draw, circle, on chain] {D}; \end{scope} \end{tikzpicture} } \begin{document} \begin{frame} \setcounter{count}{2} \ifnum \value{count} > 1 {Count is greater than 1} \fi \ifnum \value{count} > 2 {Count is greater than s} \fi \only{ \setcounter{count}{2} \myPicture } \only{ \setcounter{count}{1} \myPicture } \only{ \setcounter{count}{2} \myPicture } \end{frame} \end{document}
Here is a minimal example giving an idea of the expected result, but of course, without achieving it:
\documentclass{beamer} \usepackage{tikz} \usetikzlibrary{chains} \newcounter{count} \newcommand\myPicture{ \begin{tikzpicture} \begin{scope}[start chain = going below] \node[draw, rectangle, on chain] {display only when counter is between 1 and 3}; \node[draw, rectangle, on chain] {display only when counter is negative}; % \node[draw, rectangle, on chain] {display only if counter is between 100 and 200}; \node[draw, circle, on chain] {only when counter is in the range 3 to 20}; \end{scope} \end{tikzpicture} } \begin{document} \begin{frame} \only{\setcounter{count}{-3}\myPicture} \only{\setcounter{count}{105}\myPicture} \only{\setcounter{count}{39}\myPicture} \only{\setcounter{count}{2}\myPicture} \end{frame} \end{document}
beamer
scans through the frame and creates slides based on each reading. What you have is read all the time so if conditionals are ambiguous depending on at which scan it is parsed. You might want to give an example of a drawing instead of these tests.