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}
Best Answer
I am definitely unfamiliar with both
beamer
andtikz
(do not quite get what the\only
are supposed to do) but perhaps this could go in the direction you want: