
L-system을 활용한 비머 프레젠테이션을 하려고 하는데, L-system의 단계를 하나씩 공개하고 싶습니다. 현재 코드는 다음과 같습니다.
\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
\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}