diff options
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-lsystem/Changes | 10 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-lsystem/README.md | 20 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.bib | 90 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.pdf | bin | 0 -> 2937429 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.tex | 367 | ||||
-rw-r--r-- | Master/texmf-dist/dvips/pst-lsystem/pst-lsystem.pro | 26 | ||||
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-lsystem/pst-lsystem.tex | 143 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pst-lsystem/pst-lsystem.sty | 8 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/pst-lsystem.tlpsrc | 0 |
12 files changed, 667 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-lsystem/Changes b/Master/texmf-dist/doc/generic/pst-lsystem/Changes new file mode 100644 index 00000000000..a5b0400035f --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-lsystem/Changes @@ -0,0 +1,10 @@ +..... pst-lsystem.tex +0.01 2018-09-23 first CTAN version + + +..... pst-lsystem.sty +0.01 2018-09-23 first CTAN version + + +..... pst-lsystem.pro +0.01 2018-09-23 first CTAN version diff --git a/Master/texmf-dist/doc/generic/pst-lsystem/README.md b/Master/texmf-dist/doc/generic/pst-lsystem/README.md new file mode 100644 index 00000000000..c24507252f6 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-lsystem/README.md @@ -0,0 +1,20 @@ +# pst-lsystem: creating images defined by a L-system + +Save the files pst-lsystem.sty|pro|tex in a directory, which is part of your +local TeX tree. The pro file should go into $TEXMF/dvips/pstricks/ +Then do not forget to run texhash to update this tree. + +pst-lsystem needs pstricks, which should +be part of your local TeX installation, otherwise get it from a +CTAN server, http://mirror.ctan.org + +PSTricks is PostScript Tricks, the documentation cannot be run +with pdftex, use the sequence latex->dvips->ps2pdf or +pdflatex with package auto-pst-pdf or xelatex. + +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. + + +%% $Id: README.md 815 2018-09-25 06:16:11Z herbert $ diff --git a/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.bib b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.bib new file mode 100644 index 00000000000..60e1400c195 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.bib @@ -0,0 +1,90 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{beiprogramm = {{\TeX}-Beiprogramm} } +@STRING{bretter = {Bretter, die die Welt bedeuten} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } +@STRING{editorial = {Editorial} } +@STRING{fremdebuehne = {Von fremden B{\"u}hnen} } +@STRING{fundus = {Aus dem Fundus} } +@STRING{hinterbuehne = {Hinter der B{\"u}hne} } +@STRING{leserbrief = {Leserbrief(e)} } +@STRING{magazin = {Magazin} } +@STRING{rezension = {Rezensionen} } +@STRING{schonimmer = {Was Sie schon immer {\"u}ber {\TeX} wissen wollten \dots} } +@STRING{theaterkasse = {Von der Theaterkasse} } +@STRING{theatertage = {{\TeX}-Theatertage} } + + +@online{wikipedia, + author = {family={\WikipediA},family-i=W}, + sortlabel = {Wikipedia}, + sortname = {Wikipedia}, + title = {L-system}, + date = {2018-09-08}, + urldate = {2018-09-22}, + url = {https://en.wikipedia.org/wiki/L-system}, +} + + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Vo{\ss}}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + edition = 2, + year = {2007}, + address = {Reading, Mass.} +} + +@Book{PSTricks2, + author = {Herbert Vo\ss}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {4.}, + publisher = {DANTE -- Lehmanns}, + year = {2007}, + address = {Heidelberg/Hamburg} +} + +@Book{LaTeXRef, + author = {Herbert Vo\ss}, + title = {\LaTeX\ Referenz}, + edition = {1.}, + publisher = {DANTE -- Lehmanns}, + year = {2007}, + address = {Heidelberg/Hamburg} +} +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum + praktischen {E}insatz}, + Publisher = {IWT}, + Address = {Vaterstetten}, + year = 1989, +} + +@Manual{pstricks, + Title = {PSTricks - {\PS} macros for generic {\TeX}}, + Author = {{Timothy van} Zandt}, + Organization = {}, + Address = {\url{http://www.tug.org/application/PSTricks}}, + Note = {}, + year = 1993 +} + +Michel Charpentier. Dragon Curve in PostScript. http://www.cs.unh. +edu/~charpov/Programming/L-systems/simple-dragon.ps. +[3] Michel Charpentier. L-systems in PostScript. http://www.cs.unh.edu/ +~charpov/Programming/L-systems/plant2.ps. +[4] Michel Charpentier. Ulam’s Spiral in PostScript. http://www.cs.unh.edu/ +~charpov/Programming/PostScript-primes/primes-distribution.ps. +[5] Jim Lund. DoodleTron (a L-system Iterator). http://elegans.uky.edu/ +jiml/lsystem/ls_index.html. +[6] Przemyslaw Prusinkiewicz and Aristid Lindenmayer. The Algorithmic Beauty +of Plants. Springer-Verlag, 1990. +[7] Pavel Tišnovský. L-systémy: přírodní objekty i umělé artefakty. http://www. +root.cz/clanky/l-systemy-prirodni-objekty-i-umele-artefakty. +[8] Eric W. Weisstein. Dragon Curve. From MathWorld–A Wolfram Web +Resource. http://mathworld.wolfram.com/PrimeSpiral.html. +[9] Eric W. Weisstein. Lindenmayer Systems. From MathWorld–A Wolfram Web +Resource. http://mathworld.wolfram.com/LindenmayerSystem.html. +[10] Eric W. Weisstein. Ulam’s Spiral. From MathWorld–A Wolfram Web +Resource. http://mathworld.wolfram.com/PrimeSpiral.html. diff --git a/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.pdf b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.pdf Binary files differnew file mode 100644 index 00000000000..f00c5cb0d68 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.tex b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.tex new file mode 100644 index 00000000000..e28dd78cbbb --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-lsystem/pst-lsystem-doc.tex @@ -0,0 +1,367 @@ +%% $Id: pst-lsystem-doc.tex 815 2018-09-25 06:16:11Z herbert $ +\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false, + headings=small, headinclude=false,footinclude=false,oneside,abstract=on]{pst-doc} +\usepackage{pst-lsystem} +\let\pstFV\fileversion +\usepackage{dtk-logos} +\renewcommand\bgImage{% +%\psset{yunit=4cm,xunit=3} +\begin{pspicture}(-2,-1.5)(4,6) + \pslsystem[X=-FX++FY-, + Y=+FX--FY+, + Ftype=1, + Start=X, + Angle=45, + N=9, + linewidth=0.1pt, + BaseLength=2mm](0,0) +\end{pspicture}} + +\addbibresource{\jobname.bib} + + +\lstset{language=PSTricks, + morekeywords={pslsystem},basicstyle=\footnotesize\ttfamily, + literate=% + {Ö}{{\"O}}1 + {Ä}{{\"A}}1 + {Ü}{{\"U}}1 + {ß}{{\ss}}1 + {ü}{{\"u}}1 + {ä}{{\"a}}1 + {ö}{{\"o}}1 + {~}{{\textasciitilde}}1 +} +\begin{document} + +\title{\texttt{pst-lsystem}} +\subtitle{Creating images, based on the Lindenmeyer-system; v.\pstFV} +\author{Herbert Voß} +\docauthor{} +\date{\today} +\maketitle + +\tableofcontents + +\begin{abstract} +\noindent +\LPack{pst-lsystem} loads by default the following packages: \LPack{pst-xkey}, and, of course \LPack{pstricks}. +All should be already part of your local \TeX\ installation. If not, or in case +of having older versions, go to \url{http://www.CTAN.org/} and load the newest version. + + + +\vfill\noindent +Thanks to \\ +Michel Charpontier, +and last but not least + \url{http://mathworld.wolfram.com}. + +\end{abstract} + + +\clearpage + + +\section{Introduction} +A L-system or Lindenmayer system is a parallel rewriting system and a type of +formal grammar. An L-system consists of an alphabet of symbols that can be used +to make strings, a collection of production rules that expand each symbol into +some larger string of symbols, an initial »axiom« string from which to begin construction, +and a mechanism for translating the generated strings into geometric structures. +L-systems were introduced and developed in 1968 by Aristid Lindenmayer, +a Hungarian theoretical biologist and botanist at the University of Utrecht.~\cite{wikipedia} + + +\section{Usage} +There are no optional arguments for the package: +\begin{verbatim} +\usepackage{pst-lsystem} +\end{verbatim} + +There is only one command: + +\begin{BDef} +\Lcs{pslsystem}\OptArgs\Largr{x,y} +\end{BDef} + +If the coordinates for the origin are missing, then $(0,0)$ is assumed. The L-System ist +defined by the three functions $F$, $X$, and $Y$. At least one function must be given. + +\subsection{Optional arguments} + +The following optional arguments for the macro are possible: + +\begin{tabularx}{\linewidth}{@{} l l X @{}}\toprule +\emph{name} & \emph{default} & \emph{menaing}\\\midrule +\Lkeyword{F} & & Rule $F\rightarrow(F)$\\ +\Lkeyword{X} & & Rule $X\rightarrow(F,X,Y)$\\ +\Lkeyword{Y} & & Rule $Y\rightarrow(F,X,Y)$\\ +\Lkeyword{Start} & & Startrule $S\rightarrow(F,X,Y)$\\ +\Lkeyword{Angle} & 0 & Angle for the drection change\\ +\Lkeyword{N} & 5 & Number of the recursive calls\\ +\Lkeyword{Ftype} & 4 & How the F-rule should handled\\ +\Lkeyword{BaseLength} & 1mm & The length of a base line, created by the ruke F (Forward)\\ +\Lkeyword{usecolor} & 0 & Which color should be used for the lines.\\ +%\define@key[psset]{pst-lsystem}{order}[5]{\pst@getint{#1}\psk@lsystem@order} +%\define@key[psset]{pst-lsystem}{factor}[2]{\pst@checknum{#1}\psk@lsystem@factor} +% Size (the smaller, the bigger), no need to be changed, normally +%\define@key[psset]{pst-lsystem}{size}[4]{\pst@getint{#1}\psk@lsystem@size} +%\define@key[psset]{pst-lsystem}{type}[0]{\pst@getint{#1}\psk@lsystem@type} +\bottomrule +\end{tabularx} + +If the rules contain square brackets then it must be enclosed by braces: +\verb|X=F[-X]| is wrong and \verb|X={F[-X]}| is correct. + +\subsection{Different types for the F-rule} + +It depends to the given rule(s) what kind of the F-type must be used. +There are four possibilities: + +\begin{verbatim} +\ifcase\psk@lsystem@Ftype + /F { D } def % type 0 +\or % 1 + /F { 0 eq { D } if } def +\or % 2 + /F { dup 0 eq { D } if } def +\or % 3 + /F { pop D } def +\else % 4 + /F { dup 0 eq { D }{ 1 sub \psk@lsystem@Fnumber {dup} repeat \psk@lsystem@F } ifelse pop } def +\fi +\end{verbatim} + +The function D does nothing else than drawing a line in the current direction. +Its length is given by the optional parameter BaseLength. + +\subsection{Color} +There are four predefined color modes, where mode=0 is no color. + + +\psset{linewidth=0.1pt} + +\section{Examples} +\subsection{Dragon} +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-1.5)(4,6) +\pslsystem[ + X=-FX++FY-, + Y=+FX--FY+, + Ftype=1, + Start=X, + Angle=45, + N=9, + BaseLength=2mm](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + +\subsection{Hilbert} +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-1,-0.5)(4,4) +\pslsystem[ + X=-YF+XFX+FY-, + Y=+XF-YFY-FX+, + Ftype=3, + Start=X, + Angle=90](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Kochflake} + +If the rule for \Lkeyword{Start} has more than one function name, one has to repeat +the number of iterations, which is \Lkeyword{N}, before every following function, but not +for the first one. That is done already internally: + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-.5)(5,6) +\pslsystem[ + Start=F--NF--NF,% repeat number of iterations N + F=F+F--F+F, + Angle=60, + N=4, + BaseLength=2pt, + linecolor=red](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Plant 1} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-2.3)(4,6) +\pslsystem[ + Start=F, + F={FF-[-F+F+F]+[+F-F-F]}, + Angle=22.5, + BaseLength=2pt, + usecolor=4](0,-2) +\psdot(0,-2) +\end{pspicture} +\end{LTXexample} + + +\clearpage + +\subsection{Plant 2} + + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-3,-2.3)(2,6) +\pslsystem[ + Start=X, + X={F-[[X]+X]+F[+FX]-X}, + F=FF, + Angle=22.5, + N=6, + BaseLength=1.25pt, + usecolor=3](0,-2) +\psdot(0,-2) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Plant 3} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-2.5)(2,5) +\psset{xunit=3} +\pslsystem[ + Start=F, + F={F[+F]F[-F][F]}, + Angle=20, + usecolor=3](0,-2) +\psdot(0,-2) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Plant 4} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-0.5)(3,6) +\pslsystem[ + Start=Y, + X={X[-FFF][+FFF]FX}, + Y={YFX[+Y][-Y]}, + Angle=25, + N=6, + Ftype=1, + BaseLength=2.5pt, + usecolor=2](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Plant 5} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-3,-.5)(3,9) +\pslsystem[ + Start=X, + X={F[+X][-X]FX}, + F={FF}, + Angle=25, + N=7, + BaseLength=1pt, + usecolor=2](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + +\subsection{Plant 6} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-3,-.5)(3,9) +\pslsystem[ + Start=X, + X={F[+X]F[-X]+X}, + F={FF}, + Angle=20, + N=7, + BaseLength=1pt, + usecolor=2](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + +\subsection{Plant 7} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-3,-.5)(3,9) +\pslsystem[ + Start=F, + F={F[+F]F[-F]F}, + Angle=25, + BaseLength=1pt, + usecolor=2](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + +\subsection{Plant 8} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-4,-.5)(5,9) +\pslsystem[ + Start=F, + F={F[+F[+F][-F]F][-F[+F][-F]F]F[+F][-F]F}, + Angle=30, + BaseLength=1pt, + usecolor=4](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + +\subsection{Special case} + +\begin{LTXexample}[pos=r] +\begin{pspicture}[showgrid=true](-2,-0.5)(1,4) +\pslsystem[ + Start=X, + F=FF, + X=F+X-F-X+F, + Angle=90, + N=6, + BaseLength=1pt](0,0) +\psdot(0,0) +\end{pspicture} +\end{LTXexample} + + + +\clearpage +\section{List of all optional arguments for \nxLPack{pst-lsystem}} + +\xkvview{family=pst-lsystem,columns={key,type,default}} + + +\bgroup +\raggedright +\nocite{*} +\printbibliography +\egroup + +\printindex + + + +\end{document} + + + +% F=F+FF-FF-F-F+F+FF-F-F+F+FF+FF-F, diff --git a/Master/texmf-dist/dvips/pst-lsystem/pst-lsystem.pro b/Master/texmf-dist/dvips/pst-lsystem/pst-lsystem.pro new file mode 100644 index 00000000000..b4b047722e1 --- /dev/null +++ b/Master/texmf-dist/dvips/pst-lsystem/pst-lsystem.pro @@ -0,0 +1,26 @@ +%% pst-lsystem.pro (c) sep 22, 2018 Herbert Voss +%% version 0.01 2018/09/22 +% +% based on the work of Michel Charpentier +% +/tx@lsystemDict 6 dict def +tx@lsystemDict begin + +/fast? true def % choice between faster or nicer + +/D { Element 0 rlineto } bind def + +/B [ % quite dirty, but it works... + fast? { {currentpoint stroke moveto} aload pop } if + {gsave} aload pop + { dup color } aload pop +] cvx bind def + +%/B { currentpoint stroke moveto gsave } bind def +/E { stroke grestore } bind def +/- { angle neg rotate } def % rotation to the right +/+ { angle rotate } def % rotation to the left +% + +end + diff --git a/Master/texmf-dist/tex/generic/pst-lsystem/pst-lsystem.tex b/Master/texmf-dist/tex/generic/pst-lsystem/pst-lsystem.tex new file mode 100644 index 00000000000..bc76fbed916 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-lsystem/pst-lsystem.tex @@ -0,0 +1,143 @@ +%% +%% This is file `pst-lsystem.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-lsystem.tex' +%% +%% Herbert Voss <herbert -> dante.de> +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-lsystem' is a PSTricks package for lsystem macros +%% +%% +\csname PSTlsystemLoaded\endcsname +\let\PSTlsystemLoaded\endinput +% Requires PSTricks +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +% interface to the `xkeyval' package +\pst@addfams{pst-lsystem} + +\def\fileversion{0.01} +\def\filedate{2018/09/22} +\message{`PST-lsystem' v\fileversion, \filedate\space (hv)} +% +\pstheader{pst-lsystem.pro} +% +\def\pst@lsystem@checkRule#1#2{% + \def\pst@tempg{}% + \pst@cntm=0 + \ifx\relax#2\relax\else\pst@lsystem@@checkRule#2;\fi + \expandafter\let\csname#1\endcsname\pst@tempg + \global\expandafter\edef\csname#1number\endcsname{\the\pst@cntm}% +} +\def\pst@lsystem@@checkRule#1#2;{%[A + \ifx#1[ \edef\pst@tempg{\pst@tempg\space B}% + \else + \ifx#1] \edef\pst@tempg{\pst@tempg\space E}% + \else + \edef\pst@tempg{\pst@tempg\space #1}% + \ifcat A#1\global\advance\pst@cntm by 1\fi + \fi + \fi + \ifx\relax#2\relax \else\pst@lsystem@@checkRule#2;\fi +} +% +\define@key[psset]{pst-lsystem}{F}[]{\pst@lsystem@checkRule{psk@lsystem@F}{#1}} +\define@key[psset]{pst-lsystem}{X}[]{\pst@lsystem@checkRule{psk@lsystem@X}{#1}} +\define@key[psset]{pst-lsystem}{Y}[]{\pst@lsystem@checkRule{psk@lsystem@Y}{#1}} +\define@key[psset]{pst-lsystem}{Start}[]{\pst@lsystem@checkRule{psk@lsystem@Start}{#1}} +\define@key[psset]{pst-lsystem}{Angle}[0]{\def\psk@lsystem@Angle{#1 }} +\define@key[psset]{pst-lsystem}{N}[5]{\def\psk@lsystem@N{#1 }} +\define@key[psset]{pst-lsystem}{Ftype}[4]{\def\psk@lsystem@Ftype{#1 }} +\define@key[psset]{pst-lsystem}{N2}[4]{\def\psk@lsystem@Nii{#1 }} +\define@key[psset]{pst-lsystem}{BaseLength}[1mm]{\pst@getlength{#1}\psk@lsystem@BaseLength} +\psset[pst-lsystem]{F={},X={},Y={},Start={},Angle=0,N=5,Ftype=4,BaseLength=1mm} +% +\define@key[psset]{pst-lsystem}{usecolor}[0]{\def\psk@lsystem@color{#1}} +% +\define@key[psset]{pst-lsystem}{order}[5]{\pst@getint{#1}\psk@lsystem@order} +%\define@key[psset]{pst-lsystem}{factor}[2]{\pst@checknum{#1}\psk@lsystem@factor} +% Size (the smaller, the bigger), no need to be changed, normally +%\define@key[psset]{pst-lsystem}{size}[4]{\pst@getint{#1}\psk@lsystem@size} +%\define@key[psset]{pst-lsystem}{type}[0]{\pst@getint{#1}\psk@lsystem@type} +\psset[pst-lsystem]{order=5,%factor=2,size=4,type=0, + usecolor=0} +% +\def\pslsystem{\def\pst@par{}\pst@object{pslsystem}} +\def\pslsystem@i{\@ifnextchar(\pslsystem@ii{\pslsystem@ii(0,0)}}% +\def\pslsystem@ii(#1){% #1: origin of starting point + \begin@SpecialObj + \pst@getcolor{\pslinecolor}\psk@linecolor + \pst@getcoor{#1}\pst@tempA + \addto@pscode{ + \pst@tempA\space /yOrig ED /xOrig ED + tx@lsystemDict begin + /order \psk@lsystem@order\space def + /N \psk@lsystem@N def + /Ftype \psk@lsystem@Ftype def + /angle \psk@lsystem@Angle def + /START {\psk@lsystem@Start } bind def + /Element { \psk@lsystem@BaseLength } def + \ifcase\psk@lsystem@Ftype + /F { D } def + \or %1 + /F { 0 eq { D } if } def + \or %2 + /F { dup 0 eq { D } if } def + \or %3 + /F { pop D } def + \else %4 + /F { dup 0 eq { D }{ 1 sub \psk@lsystem@Fnumber {dup} repeat \psk@lsystem@F } ifelse pop } def + \fi + /X { dup 0 ne { 1 sub \psk@lsystem@Xnumber { dup } repeat \psk@lsystem@X } if pop } def + /Y { dup 0 ne { 1 sub \psk@lsystem@Ynumber { dup } repeat \psk@lsystem@Y } if pop } def + /START {\psk@lsystem@Start } def + 1 setlinejoin + 1 setlinecap +% define a color procedure. Parameter is depth. BW used if no color defined + \ifcase\psk@lsystem@color + /color { pop \pst@usecolor\psk@linecolor } def + \or + /color { % random branches + pop 3 {rand 100 mod 100 div} repeat setrgbcolor + } def + \or + /color { % random subtrees + 2 eq {3 {rand 100 mod 100 div} repeat setrgbcolor} if + } def + \or + /color { % lighter green towards leaves, linear + order exch sub order 2 mul div 1 3 div exch .7 exch sethsbcolor + } def + \or + /color { % lighter green towards leaves, exponential + neg 1.5 exch exp 2 div 1 3 div exch .7 exch sethsbcolor + } def + \else + /color { pop \pst@usecolor\psk@linecolor } def + \fi + xOrig yOrig moveto + 90 rotate + N START + end + \pst@number\pslinewidth SLW + \pst@usecolor\psk@linecolor + }% + \pst@stroke + \end@SpecialObj} +% +% +\catcode`\@=\PstAtCode\relax +% +%% END: pst-lsystem.tex +\endinput +% + diff --git a/Master/texmf-dist/tex/latex/pst-lsystem/pst-lsystem.sty b/Master/texmf-dist/tex/latex/pst-lsystem/pst-lsystem.sty new file mode 100644 index 00000000000..bf8a6f1e96b --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-lsystem/pst-lsystem.sty @@ -0,0 +1,8 @@ +\RequirePackage{pstricks} +\ProvidesPackage{pst-lsystem}[2009/11/07 package wrapper for + pst-lsystem.tex (hv)] +\input{pst-lsystem.tex} +\ProvidesFile{pst-lsystem.tex} + [\filedate\space v\fileversion\space `PST-lsystem' (hv)] +\IfFileExists{pst-psm.pro}{\@addtofilelist{pst-lsystem.pro}}{}% +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index b6c249ff2d1..1d920f4cf07 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -534,7 +534,7 @@ my @TLP_working = qw( pst-fill pst-fit pst-fr3d pst-fractal pst-fun pst-func pst-gantt pst-geo pst-geometrictools pst-gr3d pst-grad pst-graphicx pst-infixplot pst-intersect pst-jtree pst-knot pst-labo pst-layout - pst-lens pst-light3d + pst-lens pst-light3d pst-lsystem pst-magneticfield pst-marble pst-math pst-mirror pst-node pst-ob3d pst-ode pst-optexp pst-optic pst-osci pst-ovl diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 9c4071bb4d8..98dfa88ac70 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -962,6 +962,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'pst-layout', "&MAKEcopy", 'pst-lens', "&MAKEpst", 'pst-light3d', "&MAKEpst", + 'pst-lsystem', "&MAKEpst", 'pst-magneticfield', "&MAKEpst", 'pst-marble', "&MAKEpst", 'pst-math', "&MAKEpst", diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc index 12c058b8a4d..b654327addb 100644 --- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc @@ -61,6 +61,7 @@ depend pst-labo depend pst-layout depend pst-lens depend pst-light3d +depend pst-lsystem depend pst-magneticfield depend pst-marble depend pst-math diff --git a/Master/tlpkg/tlpsrc/pst-lsystem.tlpsrc b/Master/tlpkg/tlpsrc/pst-lsystem.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/pst-lsystem.tlpsrc |