TikZ + beamer: directly access a specific slide generated with the "visible on" keyword

I want to animate a complicated process which in general works very well with the "visible on" keyword, but I want to briefly interrupt the animation and insert a slide to introduce a new concept / method... with which it is now possible to conclude the process.

However, with "visible on", it will generate the whole process and I have no control over the single slides or where to put them. Is there a way to achieve this goal?

The most flexible and desirable solution would be if I could generate slides based on a range... e.g.:

\begin{frame}{Primitive process}
\begin{tikzpicture}[range=<1-2>] % range: only generate slides 1-2 of this diagram

\node[visible on=<1>] {Primitive};
\node[visible on=<2>] {elements};

\node[visible on=<3>] {Very complicated};
\node[visible on=<4>] {elements};
\end{tikzpicture}
\end{frame}

\begin{frame}{Introducing new complicated concept}
\bi
\ii some
\ii explanation
\ii
\end{frame}

\begin{tikzpicture}[range=<2->] % generate all the slides except the first
% the same as above (as \input'ed from an external file)
\end{tikzpicture}
\end{frame}

• If my answer below does not answer your question, can you please make a minimal working example (MWE)? Right now your code fragment cannot be compiled as the definitions of visible on, \bi, \ii are missing. Oct 24 '17 at 11:37
• Your answer answers my question perfectly. It is exactly what I was looking for! Thank you very much! :) Oct 24 '17 at 11:57
• You're welcome! And welcome to TeX.Stackexchange! Oct 24 '17 at 11:58

To display only a subset of overlays, beamer provides the possibility to specify \begin{frame}<1-2>. To display the missing frames, you don't need to rewrite everything, simply use \againframe.

\documentclass{beamer}
\usepackage{tikz}

\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
}

\begin{document}

\begin{frame}<1-2>[label=complicate]
\frametitle{Primitive process}
\begin{tikzpicture}

\node[visible on=<1>] {Primitive};
\node[visible on=<2>] {elements};

\node[visible on=<3>] {Very complicated};
\node[visible on=<4>] {elements};
\end{tikzpicture}
\end{frame}

\begin{frame}{Introducing new complicated concept}
test
\end{frame}

\againframe<2->{complicate}

\end{document}


(I borrowed the definition for visible on from https://tex.stackexchange.com/a/99122/36296 as you did not give us any clue how you might have defined this)