
Estoy tratando de hacer una presentación de proyector que involucre los sistemas L y me gustaría que revele los pasos del sistema L uno a la vez. Actualmente tengo el código:
\documentclass[11pt]{beamer}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}
\begin{frame}
\frametitle{title}
\begin{center}
\def\intervalwidth{9cm}%
\pgfdeclarelindenmayersystem{CantorMiddleThirds}{
\symbol{X}{\pgflsystemdrawforward}
\symbol{Y}{\pgflsystemmoveforward}
\rule{X -> XYX}
\rule{Y -> YYY}
}
\foreach \level in {0,...,5}{
\begin{tikzpicture}
\draw [line width = 5pt] (0,0) l-system
[l-system={CantorMiddleThirds, axiom=X,step=\intervalwidth/(3^\level), order=\level, angle=0},fill=black];
\end{tikzpicture}
\pause
}
\end{center}
\end{frame}
\end{document}
Cuando compilo obtengo un PDF que hace exactamente lo que esperaba, sin embargo, el compilador arroja un error:
Package pgf Error: Lindenmayer system `CantorMiddleThirds' is already defined. \end{frame}
que aparece una vez por cada iteración del bucle. Me pregunto qué interacción está causando este error y cómo evitarlo.
Respuesta1
Funciona sin errores de compilación, si \pgfdeclarelindenmayersystem{CantorMiddleThirds}
se mueve fuera del marco. La clase beamer
procesa el contenido del marco más de una vez.
\documentclass[11pt]{beamer}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{CantorMiddleThirds}{
\symbol{X}{\pgflsystemdrawforward}
\symbol{Y}{\pgflsystemmoveforward}
\rule{X -> XYX}
\rule{Y -> YYY}
}
\begin{document}
\begin{frame}
\frametitle{title}
\begin{center}
\def\intervalwidth{9cm}%
\foreach \level in {0,...,5}{
\begin{tikzpicture}
\draw [line width = 5pt] (0,0) l-system
[l-system={CantorMiddleThirds, axiom=X,step=\intervalwidth/(3^\level),
order=\level, angle=0},fill=black];
\end{tikzpicture}
\pause
}
\end{center}
\end{frame}
\end{document}