summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex356
1 files changed, 181 insertions, 175 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex b/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex
index ab6a067835e..bec0c855cda 100644
--- a/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex
+++ b/Master/texmf-dist/tex/generic/pgf/libraries/pgflibrarylindenmayersystems.code.tex
@@ -14,210 +14,216 @@
\newif\ifpgf@lsystem@randomize@angle
\pgfkeys{/pgf/lindenmayer system/.cd,%
- step/.code={\pgfmathsetlength\pgflsystemstep{#1}},%
- randomize step percent/.code={%
- \pgfmathparse{#1}%
- \let\pgflsystemrandomizesteppercent=\pgfmathresult%
- \ifdim\pgfmathresult pt=0pt\relax%
- \pgf@lsystem@randomize@stepfalse%
- \else%
- \pgf@lsystem@randomize@steptrue%
- \fi%
- },%
- left angle/.code={\pgfmathparse{#1}\let\pgflsystemleftangle=\pgfmathresult},%
- right angle/.code={\pgfmathparse{#1}\let\pgflsystemrightangle=\pgfmathresult},%
- angle/.style={/pgf/lindenmayer system/left angle=#1, /pgf/lindenmayer system/right angle=#1},%
- randomize angle percent/.code={%
- \pgfmathparse{#1}%
- \let\pgflsystemrandomizeanglepercent=\pgfmathresult%
- \ifdim\pgfmathresult pt=0pt\relax%
- \pgf@lsystem@randomize@anglefalse%
- \else%
- \pgf@lsystem@randomize@angletrue%
- \fi%
- }%
-}
+ step/.code={\pgfmathsetlength\pgflsystemstep{#1}},%
+ randomize step percent/.code={%
+ \pgfmathparse{#1}%
+ \let\pgflsystemrandomizesteppercent=\pgfmathresult%
+ \ifdim\pgfmathresult pt=0pt\relax%
+ \pgf@lsystem@randomize@stepfalse%
+ \else%
+ \pgf@lsystem@randomize@steptrue%
+ \fi%
+ },%
+ left angle/.code={\pgfmathparse{#1}\let\pgflsystemleftangle=\pgfmathresult},%
+ right angle/.code={\pgfmathparse{#1}\let\pgflsystemrightangle=\pgfmathresult},%
+ angle/.style={/pgf/lindenmayer system/left angle=#1, /pgf/lindenmayer system/right angle=#1},%
+ randomize angle percent/.code={%
+ \pgfmathparse{#1}%
+ \let\pgflsystemrandomizeanglepercent=\pgfmathresult%
+ \ifdim\pgfmathresult pt=0pt\relax%
+ \pgf@lsystem@randomize@anglefalse%
+ \else%
+ \pgf@lsystem@randomize@angletrue%
+ \fi%
+ }%
+}%
\pgfkeys{/pgf/lindenmayer system/.cd,
- step=5pt,%
- randomize step percent=0,%
- angle=90,%
- randomize angle percent=0%
-}
+ step=5pt,%
+ randomize step percent=0,%
+ angle=90,%
+ randomize angle percent=0%
+}%
\long\def\pgfdeclarelindenmayersystem#1#2{%
- \pgfutil@ifundefined{pgf@lsystem@#1}%
- {%
- \begingroup%
- \edef\pgf@lsystem@name{#1}%
- \expandafter\global\expandafter\let\csname pgf@lsystem@#1\endcsname=\pgf@lsystem@name%
- \let\symbol=\pgf@lsystem@symbol%
- \let\rule=\pgf@lsystem@rule%
- #2%
- \endgroup%
- }%
- {\pgferror{Lindenmayer system `#1' is already defined}}%
-}
+ \pgfutil@ifundefined{pgf@lsystem@#1}%
+ {%
+ \begingroup%
+ \edef\pgf@lsystem@name{#1}%
+ \expandafter\global\expandafter\let\csname pgf@lsystem@#1\endcsname=\pgf@lsystem@name%
+ \let\symbol=\pgf@lsystem@symbol%
+ \let\rule=\pgf@lsystem@rule%
+ #2%
+ \endgroup%
+ }%
+ {\pgferror{Lindenmayer system `#1' is already defined}}%
+}%
\def\pgf@lsystem@symbol#1#2{%
- \expandafter\gdef\csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname{#2}%
-}
+ \expandafter\gdef\csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname{#2}%
+}%
-\def\pgf@lsystem@rule#1{\expandafter\pgf@lsystem@rule@#1\pgf@stop}
-\def\pgf@lsystem@rule@#1{\def\pgf@lsystem@rule@head{#1}\pgf@lsystem@rule@@}
+\def\pgf@lsystem@rule#1{\expandafter\pgf@lsystem@rule@#1\pgf@stop}%
+\def\pgf@lsystem@rule@#1{\def\pgf@lsystem@rule@head{#1}\pgf@lsystem@rule@@}%
\def\pgf@lsystem@rule@@#1->{% Now some `fooling around' to deal with unwanted spaces.
- \let\pgf@lsystem@rule@body=\pgfutil@empty%
- \pgfutil@ifnextchar x{\pgf@lsystem@rule@@@}{\pgf@lsystem@rule@@@}}
+ \let\pgf@lsystem@rule@body=\pgfutil@empty%
+ \pgfutil@ifnextchar x{\pgf@lsystem@rule@@@}{\pgf@lsystem@rule@@@}}%
\def\pgf@lsystem@rule@@@#1{%
- \ifx#1\pgf@stop%
- \expandafter\global\expandafter\let%
- \csname pgf@lsystem@\pgf@lsystem@name @rule@\pgf@lsystem@rule@head\endcsname=\pgf@lsystem@rule@body%
- \else%
- \edef\pgf@lsystem@rule@body{\pgf@lsystem@rule@body#1}%
- \expandafter\pgf@lsystem@rule@@@%
- \fi%
-}
+ \ifx#1\pgf@stop%
+ \expandafter\global\expandafter\let%
+ \csname pgf@lsystem@\pgf@lsystem@name @rule@\pgf@lsystem@rule@head\endcsname=\pgf@lsystem@rule@body%
+ \else%
+ \edef\pgf@lsystem@rule@body{\pgf@lsystem@rule@body#1}%
+ \expandafter\pgf@lsystem@rule@@@%
+ \fi%
+}%
\def\pgflindenmayersystem#1#2#3{%
- \begingroup%
- \edef\pgf@lsystem@name{#1}%
- \edef\pgf@lsystem@axiom{#2}%
- \pgfmathtruncatemacro\pgf@lsystem@order{#3}%
- %
- \let\pgf@lsystem@current@symbol=\relax%
- %
- \c@pgf@lsystem@iteration=0\relax%
- %
- \ifnum\pgf@lsystem@order=0\relax%
- \expandafter\pgf@lsystem@draw\pgf@lsystem@axiom\pgf@stop
- \let\pgf@lsystem@next=\pgf@lsystem@end%
- \else%
- \let\pgf@lsystem@next=\pgf@lsystem@run%
- \fi%
- \expandafter\pgf@lsystem@next\pgf@lsystem@axiom\pgf@lsystem@stop%
-}
+ \begingroup%
+ \edef\pgf@lsystem@name{#1}%
+ \edef\pgf@lsystem@axiom{#2}%
+ \pgfmathtruncatemacro\pgf@lsystem@order{#3}%
+ %
+ \let\pgf@lsystem@current@symbol=\relax%
+ %
+ \c@pgf@lsystem@iteration=0\relax%
+ %
+ \ifnum\pgf@lsystem@order=0\relax%
+ \expandafter\pgf@lsystem@draw\pgf@lsystem@axiom\pgf@stop
+ \let\pgf@lsystem@next=\pgf@lsystem@end%
+ \else%
+ \let\pgf@lsystem@next=\pgf@lsystem@run%
+ \fi%
+ \expandafter\pgf@lsystem@next\pgf@lsystem@axiom\pgf@lsystem@stop%
+}%
\def\pgf@lsystem@run#1{%
- \ifx#1\pgf@lsystem@stop%
- \def\pgf@lsystem@token{\pgf@lsystem@stop}%
- \let\pgf@lsystem@next=\pgf@lsystem@end%
- \else%
- \ifx#1\pgf@stop%
- \advance\c@pgf@lsystem@iteration by-1\relax%
- \let\pgf@system@token=\pgfutil@empty%
- \let\pgf@lsystem@next=\pgf@lsystem@run%
- \else%
- % Does #1 appear on the RHS of a rule...?
- \expandafter\let\expandafter\pgf@lsystem@token\expandafter=%
- \csname pgf@lsystem@\pgf@lsystem@name @rule@#1\endcsname%
- \ifx\pgf@lsystem@token\relax%
- % ...nope. So draw it straight away.
- \pgf@lsystem@draw#1\pgf@stop%
- \let\pgf@lsystem@token=\pgfutil@empty%
- \else%
- % ...yep. So, if the order has been reached draw the LHS
- % immediately. Otherwise add the LHS to the token stream
- % and continue.
- \advance\c@pgf@lsystem@iteration by1\relax%
- \ifnum\c@pgf@lsystem@iteration=\pgf@lsystem@order%
- \expandafter\pgf@lsystem@draw\pgf@lsystem@token \pgf@stop%
- \advance\c@pgf@lsystem@iteration by-1\relax%
- \let\pgf@lsystem@token=\pgfutil@empty%
- \else%
- \expandafter\def\expandafter\pgf@lsystem@token\expandafter{\pgf@lsystem@token \pgf@stop}%
- \fi%
- \fi%
- \let\pgf@lsystem@next=\pgf@lsystem@run%
- \fi%
- \fi%
- \expandafter\pgf@lsystem@next\pgf@lsystem@token}
-
-\def\pgf@lsystem@end#1\pgf@lsystem@stop{\endgroup}
+ \ifx#1\pgf@lsystem@stop%
+ \def\pgf@lsystem@token{\pgf@lsystem@stop}%
+ \let\pgf@lsystem@next=\pgf@lsystem@end%
+ \else%
+ \ifx#1\pgf@stop%
+ \advance\c@pgf@lsystem@iteration by-1\relax%
+ \let\pgf@system@token=\pgfutil@empty%
+ \let\pgf@lsystem@next=\pgf@lsystem@run%
+ \else%
+ % Does #1 appear on the RHS of a rule...?
+ \expandafter\let\expandafter\pgf@lsystem@token\expandafter=%
+ \csname pgf@lsystem@\pgf@lsystem@name @rule@#1\endcsname%
+ \ifx\pgf@lsystem@token\relax%
+ % ...nope. So draw it straight away.
+ \pgf@lsystem@draw#1\pgf@stop%
+ \let\pgf@lsystem@token=\pgfutil@empty%
+ \else%
+ % ...yep. So, if the order has been reached draw the LHS
+ % immediately. Otherwise add the LHS to the token stream
+ % and continue.
+ \advance\c@pgf@lsystem@iteration by1\relax%
+ \ifnum\c@pgf@lsystem@iteration=\pgf@lsystem@order%
+ \expandafter\pgf@lsystem@draw\pgf@lsystem@token \pgf@stop%
+ \advance\c@pgf@lsystem@iteration by-1\relax%
+ \let\pgf@lsystem@token=\pgfutil@empty%
+ \else%
+ \expandafter\def\expandafter\pgf@lsystem@token\expandafter{\pgf@lsystem@token \pgf@stop}%
+ \fi%
+ \fi%
+ \let\pgf@lsystem@next=\pgf@lsystem@run%
+ \fi%
+ \fi%
+ \expandafter\pgf@lsystem@next\pgf@lsystem@token}%
+
+\def\pgf@lsystem@end#1\pgf@lsystem@stop{\endgroup}%
\def\pgf@lsystem@draw#1{%
- \ifx#1\pgf@stop%
- \let\pgf@lsystem@next=\relax%
- \else%
- \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
- \csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname%
- \ifx\pgf@lsystem@current@symbol\relax% Try a default symbol.
- \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
- \csname pgf@lsystem@symbol@default@#1\endcsname%
- \fi%
- \let\pgf@lsystem@next=\pgf@lsystem@@draw%
- \fi%
- \pgf@lsystem@next}
+ \ifx#1\pgf@stop%
+ \let\pgf@lsystem@next=\relax%
+ \else%
+ \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
+ \csname pgf@lsystem@\pgf@lsystem@name @symbol@#1\endcsname%
+ \ifx\pgf@lsystem@current@symbol\relax% Try a default symbol.
+ \expandafter\let\expandafter\pgf@lsystem@current@symbol\expandafter=%
+ \csname pgf@lsystem@symbol@default@#1\endcsname%
+ \fi%
+ \let\pgf@lsystem@next=\pgf@lsystem@@draw%
+ \fi%
+ \pgf@lsystem@next}%
\def\pgf@lsystem@@draw{%
- \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
- \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
- \let\pgflsystemcurrentrightangle=\pgflsystemleftangle%
- \pgf@lsystem@current@symbol%
- \pgf@lsystem@draw}
-
-\expandafter\def\csname pgf@lsystem@symbol@default@F\endcsname{\pgflsystemdrawforward}
-\expandafter\def\csname pgf@lsystem@symbol@default@f\endcsname{\pgflsystemmoveforward}
-\expandafter\def\csname pgf@lsystem@symbol@default@+\endcsname{\pgflsystemturnleft}
-\expandafter\def\csname pgf@lsystem@symbol@default@-\endcsname{\pgflsystemturnright}
-\expandafter\def\csname pgf@lsystem@symbol@default@[\endcsname{\pgflsystemsavestate}
-\expandafter\def\csname pgf@lsystem@symbol@default@]\endcsname{\pgflsystemrestorestate}
+ \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
+ \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
+ \let\pgflsystemcurrentrightangle=\pgflsystemleftangle%
+ \pgf@lsystem@current@symbol%
+ \pgf@lsystem@draw}%
+
+\expandafter\def\csname
+pgf@lsystem@symbol@default@F\endcsname{\pgflsystemdrawforward}%
+\expandafter\def\csname
+pgf@lsystem@symbol@default@f\endcsname{\pgflsystemmoveforward}%
+\expandafter\def\csname
+pgf@lsystem@symbol@default@+\endcsname{\pgflsystemturnleft}%
+\expandafter\def\csname
+pgf@lsystem@symbol@default@-\endcsname{\pgflsystemturnright}%
+\expandafter\def\csname
+pgf@lsystem@symbol@default@[\endcsname{\pgflsystemsavestate}%
+\expandafter\def\csname
+pgf@lsystem@symbol@default@]\endcsname{\pgflsystemrestorestate}%
\def\pgflsystemradonmizestep{%
- \ifpgf@lsystem@randomize@step%
- \pgfmathrand%
- \pgf@x=\pgflsystemrandomizesteppercent pt\relax%
- \pgf@x=\pgfmathresult\pgf@x%
- \divide\pgf@x by20\relax%
- \advance\pgf@x by\pgflsystemstep\relax%
- \edef\pgflsystemcurrentstep{\the\pgf@x}%
- \else%
- \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
- \fi%
-}
+ \ifpgf@lsystem@randomize@step%
+ \pgfmathrand%
+ \pgf@x=\pgflsystemrandomizesteppercent pt\relax%
+ \pgf@x=\pgfmathresult\pgf@x%
+ \divide\pgf@x by20\relax%
+ \advance\pgf@x by\pgflsystemstep\relax%
+ \edef\pgflsystemcurrentstep{\the\pgf@x}%
+ \else%
+ \edef\pgflsystemcurrentstep{\the\pgflsystemstep}%
+ \fi%
+}%
\def\pgflsystemdrawforward{%
- \pgflsystemradonmizestep
- \pgftransformxshift{+\pgflsystemcurrentstep}%
- \pgfpathlineto{\pgfpointorigin}}
+ \pgflsystemradonmizestep
+ \pgftransformxshift{+\pgflsystemcurrentstep}%
+ \pgfpathlineto{\pgfpointorigin}}%
\def\pgflsystemmoveforward{%
- \pgflsystemradonmizestep
- \pgftransformxshift{+\pgflsystemcurrentstep}%
- \pgfpathmoveto{\pgfpointorigin}}
+ \pgflsystemradonmizestep
+ \pgftransformxshift{+\pgflsystemcurrentstep}%
+ \pgfpathmoveto{\pgfpointorigin}}%
\def\pgflsystemranomizerightangle{%
- \ifpgf@lsystem@randomize@angle%
- \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
- \divide\pgf@x by20\relax%
- \pgfmathrand%
- \pgf@x=\pgfmathresult\pgf@x%
- \advance\pgf@x by\pgflsystemrightangle pt\relax%
- \edef\pgflsystemcurrentrightangle{\pgfmath@tonumber{\pgf@x}}%
- \else%
- \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
- \fi%
-}
+ \ifpgf@lsystem@randomize@angle%
+ \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
+ \divide\pgf@x by20\relax%
+ \pgfmathrand%
+ \pgf@x=\pgfmathresult\pgf@x%
+ \advance\pgf@x by\pgflsystemrightangle pt\relax%
+ \edef\pgflsystemcurrentrightangle{\pgfmath@tonumber{\pgf@x}}%
+ \else%
+ \let\pgflsystemcurrentrightangle=\pgflsystemrightangle%
+ \fi%
+}%
\def\pgflsystemranomizeleftangle{%
- \ifpgf@lsystem@randomize@angle%
- \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
- \divide\pgf@x by20\relax%
- \pgfmathrand%
- \pgf@x=\pgfmathresult\pgf@x%
- \advance\pgf@x by\pgflsystemleftangle pt\relax%
- \edef\pgflsystemcurrentleftangle{\pgfmath@tonumber{\pgf@x}}%
- \else%
- \let\pgflsystemcurrentleftangle=\pgflsystemleftangle%
- \fi%
-}
+ \ifpgf@lsystem@randomize@angle%
+ \pgf@x=\pgflsystemrandomizeanglepercent pt\relax%
+ \divide\pgf@x by20\relax%
+ \pgfmathrand%
+ \pgf@x=\pgfmathresult\pgf@x%
+ \advance\pgf@x by\pgflsystemleftangle pt\relax%
+ \edef\pgflsystemcurrentleftangle{\pgfmath@tonumber{\pgf@x}}%
+ \else%
+ \let\pgflsystemcurrentleftangle=\pgflsystemleftangle%
+ \fi%
+}%
\def\pgflsystemturnright{%
- \pgflsystemranomizerightangle
- \pgftransformrotate{-\pgflsystemcurrentrightangle}}
+ \pgflsystemranomizerightangle
+ \pgftransformrotate{-\pgflsystemcurrentrightangle}}%
\def\pgflsystemturnleft{%
- \pgflsystemranomizeleftangle
- \pgftransformrotate{\pgflsystemcurrentleftangle}}
+ \pgflsystemranomizeleftangle
+ \pgftransformrotate{\pgflsystemcurrentleftangle}}%
-\def\pgflsystemsavestate{\begingroup}
-\def\pgflsystemrestorestate{\endgroup\pgfpathmoveto{\pgfpointorigin}}
+\def\pgflsystemsavestate{\begingroup}%
+\def\pgflsystemrestorestate{\endgroup\pgfpathmoveto{\pgfpointorigin}}%