\pause、ループ、Lindenmayer システムの使用中にエラーが発生しました

\pause、ループ、Lindenmayer システムの使用中にエラーが発生しました

私は L システムを含むビーマー プレゼンテーションを作成しようとしており、L システムの手順を 1 つずつ表示したいと考えています。現在、次のコードがあります。

\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}

コンパイルすると、期待どおりの PDF が生成されますが、コンパイラがエラーをスローします。

Package pgf Error: Lindenmayer system `CantorMiddleThirds' is already defined. \end{frame}

これはループの反復ごとに 1 回表示されます。どの相互作用がこのエラーの原因になっているのか、またそれを回避するにはどうすればよいのかを知りたいです。

答え1

\pgfdeclarelindenmayersystem{CantorMiddleThirds}フレーム外に移動してもコンパイル エラーなしで動作します。クラスはbeamerフレームの内容を複数回処理します。

\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}

関連情報