summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-10-02 21:19:32 +0000
committerKarl Berry <karl@freefriends.org>2019-10-02 21:19:32 +0000
commit3a42c1fa608c2ce1e17a6301f9f96bf20fce0a2e (patch)
tree6bbe568e19e38aa88000759d778b123a9d74a04c
parent40da9ba138cb7756f970eca33d3896daf628c2c9 (diff)
pst-turtle (2oct19)
git-svn-id: svn://tug.org/texlive/trunk@52261 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/pst-turtle/Changes10
-rw-r--r--Master/texmf-dist/doc/generic/pst-turtle/README.md19
-rw-r--r--Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.bib168
-rw-r--r--Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.pdfbin0 -> 64625 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.tex200
-rw-r--r--Master/texmf-dist/dvips/pst-turtle/pst-turtle.pro302
-rw-r--r--Master/texmf-dist/tex/generic/pst-turtle/pst-turtle.tex63
-rw-r--r--Master/texmf-dist/tex/latex/pst-turtle/pst-turtle.sty12
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pst-turtle.tlpsrc0
12 files changed, 778 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-turtle/Changes b/Master/texmf-dist/doc/generic/pst-turtle/Changes
new file mode 100644
index 00000000000..c44b1dd7125
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-turtle/Changes
@@ -0,0 +1,10 @@
+..... pst-turtle.tex
+0.02 2019-10-02 new documentation
+0.01 2019-05-17 first CTAN version
+
+..... pst-turtle.sty
+0.01 2019-05-17 first CTAN version
+
+
+..... pst-turtle.pro
+0.01 2019-05-17 first CTAN version
diff --git a/Master/texmf-dist/doc/generic/pst-turtle/README.md b/Master/texmf-dist/doc/generic/pst-turtle/README.md
new file mode 100644
index 00000000000..950bb35123d
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-turtle/README.md
@@ -0,0 +1,19 @@
+# pst-turtle: Turtle graphics#
+
+%% 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.
+
+Save the files pst-turtle.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-turtle 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.
+
+%% $Id: README.md 1064 2019-05-19 09:17:21Z herbert $
diff --git a/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.bib b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.bib
new file mode 100644
index 00000000000..e749f71bfb1
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.bib
@@ -0,0 +1,168 @@
+@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} }
+
+@Article{ dtk02.2:jackson.voss:plot-funktionen,
+ author = {Laura E. Jackson and Herbert Voß},
+ title = {Die {P}lot-{F}unktionen von {\texttt{pst-plot}}},
+ journal = dtk,
+ year = 2002,
+ volume = {2/02},
+ altvolume = 2,
+ altnumber = 14,
+ month = jun,
+ pages = {27--34},
+ annote = bretter,
+ keywords = {},
+ abstract = { Im letzten Heft wurden die mathematischen Funktionen von
+ \PS~im Zusammenhang mit dem {\LaTeX}-Paket
+ \texttt{pst-plot} zum Zeichnen von Funktionen beschrieben
+ und durch Beispiele erl{\"a}utert. In diesem Teil werden
+ die bislang nur erw{\"a}hnten Plot-Funktionen f{\"u}r
+ externe Daten behandelt. }
+}
+
+@Article{ dtk02.1:voss:mathematischen,
+ author = {Herbert Voß},
+ title = {Die mathematischen {F}unktionen von {P}ost{S}cript},
+ journal = dtk,
+ year = 2002,
+ volume = {1/02},
+ altvolume = 1,
+ altnumber = 14,
+ month = mar,
+ pages = {},
+ annote = bretter,
+ keywords = {},
+ abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im
+ Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es
+ darum geht zu beurteilen, was es denn nun im eigentlichen
+ Sinne ist. Außerdem wird h{\"a}ufig vergessen, dass
+ sich mit den \PS-Funktionen viele Dinge erledigen lassen,
+ bei denen sonst auf externe Programme zur{\"u}ckgegriffen
+ wird. Dies wird im Folgenden f{\"u}r die mathematischen
+ Funktionen im Zusammenhang mit dem Paket \texttt{pst-plot}
+ gezeigt. }
+}
+
+@Book{tlgc2,
+ author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Voß},
+ title = {The {\LaTeX} {G}raphics {C}ompanion},
+ publisher = {{Addison-Wesley Publishing Company}},
+ edition = 2,
+ year = {2007},
+ address = {Reading, Mass.}
+}
+
+
+@Article{girou:01:,
+ author = {Denis Girou},
+ title = {Pr\'esentation de {PST}ricks},
+ journal = {Cahier {GUT}enberg},
+ year = 1994,
+ volume = {16},
+ month = apr,
+ pages = {21-70}
+}
+
+@Article{girou:02:,
+ author = {{Timothy van} Zandt and Denis Girou},
+ title = {Inside {PST}ricks},
+ journal = TUGboat,
+ year = 1994,
+ volume = {15},
+ month = sep,
+ pages = {239-246}
+}
+
+@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,
+}
+
+@online{pstricks,
+ Title = {PSTricks - {\PS} macros for generic {\TeX}},
+ Author = {{Timothy van} Zandt},
+ Organization = {},
+ url = {http://www.tug.org/application/PSTricks},
+ year = 1993
+}
+
+@ctan{pst-plot,
+ Title = {\texttt{pst-plot}: Plotting two dimensional functions and data},
+ Author = {{Timothy van} Zandt and Herbert Voß},
+ Organization = {},
+ url = {/graphics/pstricks/generic/pst-plot.tex},
+ year = 1999
+}
+
+@ctan{multido,
+ Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition},
+ Author = {{Timothy van} Zandt},
+ url = {/graphics/pstricks/generic/multido.tex},
+ Note = {},
+ year = 1997
+}
+
+@Book{PSTricks2,
+ author = {Herbert Voß},
+ title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = {7},
+ publisher = {DANTE -- Lehmanns},
+ year = {2016},
+ publisher = {Heidelberg and Berlin}
+}
+
+@Book{voss:math,
+ author = {Herbert Voß},
+ title = {Typesetting mathematics with \LaTeX},
+ publisher = {UIT},
+ year = {2010},
+ address = {Cambridge}
+}
+
+@Book{PSTricks2-UIT,
+ author = {Herbert Voß},
+ title = {PSTricks -- Graphics for \TeX\ and \LaTeX},
+ publisher = {UIT},
+ year = {2011},
+ address = {Cambridge}
+}
+
+@Book{LaTeXRef-UIT,
+ author = {Herbert Voß},
+ title = {{\LaTeX} quick reference},
+ publisher = {UIT},
+ year = {2012},
+ address = {Cambridge}
+}
+
+@online{wolfram,
+ author = {Eric Weisstein},
+ title = {Wolfram MathWorld},
+ publisher = {{Wolfram}},
+ year = {2007},
+ url = {http://mathworld.wolfram.com}
+}
+
+@ctan{pst-tools,
+ author = {Herbert Voß},
+ title = {\texttt{pst-tools} -- Helper functions},
+ year = {2012},
+ url = {/graphics/pstricks/contrib/pst-tools}
+}
diff --git a/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.pdf b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.pdf
new file mode 100644
index 00000000000..4fcb9a2df41
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.tex b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.tex
new file mode 100644
index 00000000000..ccd26f5813f
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-turtle/pst-turtle-doc.tex
@@ -0,0 +1,200 @@
+%% $Id: pst-turtle-doc.tex 1093 2019-10-02 11:28:36Z herbert $
+\documentclass[fontsize=11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,
+ headings=small, headinclude=false,footinclude=false,oneside]{pst-doc}
+\usepackage{pst-turtle}
+\let\pstTurtleFV\fileversion
+\renewcommand\bgImage{}
+
+%\usepackage[style=dtk]{biblatex}
+\addbibresource{pst-turtle-doc.bib}
+
+\begin{document}
+
+\title{\texttt{pst-turtle}}
+\subtitle{Turtle graphics; v.\pstTurtleFV}
+\author{Herbert Vo\ss}
+\docauthor{}
+\date{\today}
+\maketitle
+
+\tableofcontents
+
+\clearpage
+
+\begin{abstract}
+\noindent
+\LPack{pst-turtle} loads by default the following packages: \LPack{pstricks},
+and \LPack{pst-xkey}.
+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 \\
+
+\end{abstract}
+
+
+\section{Usage}
+
+\begin{BDef}
+\Lcs{psTurtle}\OptArgs\Largr{$x_0,y_0$}\Largb{Turtle code}
+\end{BDef}
+
+The turle commands must be in PostScript notation, where you can use the
+short or long version of the commands:
+
+\begin{verbatim}
+/bk { back } bind def
+/fd { forward } bind def
+/lt { left } bind def
+/pd { pendown } bind def
+/pu { penup } bind def
+/rt { right } bind def
+\end{verbatim}
+
+The default unit is cm.
+
+\bigskip
+\begin{LTXexample}[width=4cm,pos=l]
+\begin{pspicture}[showgrid](3,3)
+\psTurtle[linewidth=2pt,arrows=->](0,0){ 3 forward }
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=4cm,pos=l]
+\begin{pspicture}[showgrid](3,3)
+\psTurtle[linewidth=2pt,arrows=->](0,0){
+ 3 fd
+ 90 left 3 fd }
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=4cm,pos=l]
+\begin{pspicture}[showgrid](3,3)
+\psTurtle[linewidth=2pt,arrows=->](0,0){
+ 3 fd
+ 90 left 3 fd
+ 90 left 3 fd
+ 135 left 18 sqrt fd}
+\end{pspicture}
+\end{LTXexample}
+
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](0.8,0){
+ 5 { 2.5 fd 72 left } repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](2,1){
+ 5 { 72 left 1 fd 72 right 1 fd 72 left} repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](2,0){
+ /Angle { 360 7 div } bind def
+ 7 { Angle left 1 fd Angle right 1 fd Angle left} repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](2,2){
+ /Angle { 360 7 div } bind def
+ 7 { Angle left 1 fd Angle 3 mul right 1 fd Angle left} repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](2,1){
+ /Angle 40 def
+ 75 { 0.25 fd Angle left /Angle Angle 0.5 sub def } repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=5cm,pos=l]
+\begin{pspicture}[showgrid](4,4)
+\psTurtle[linewidth=2pt](0,3.5){
+ 5 { 3 fd 144 right } repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+
+\bigskip
+\begin{LTXexample}[width=6cm,pos=l]
+\begin{pspicture}[showgrid](5,5)
+\psTurtle[linewidth=0.2pt](1,1.75){
+ 75 { 3.5 fd 123 left } repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+
+\bigskip
+\begin{LTXexample}[width=11cm,pos=l]
+\begin{pspicture}[showgrid](10,10)
+\psTurtle[linewidth=0.5pt](5,5){
+ /L 1 def
+ 150 { L fd 120 left L fd 120 left L fd /L L 0.03 add def 1.25 rotate } repeat
+}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\iffalse
+\def\a{3 }
+\begin{pspicture}[showgrid](12,6)
+\psset{linecolor=red,linewidth=1.5pt,unit=1cm}
+\psTurtle(0,0){
+ 90 left \a 1.5 mul fd 159 rt \a fd 120 lt \a fd 120 lt \a fd
+ pu \a bk pd -125 rt \a fd 90 lt \a fd 90 lt \a fd 90 lt \a fd
+ pu 90 lt \a fd 90 lt \a fd pd
+ -37 lt \a fd 4 { 72 lt \a fd } repeat
+ pu 2 { 72 lt \a fd } repeat pd
+ -152 lt \a fd
+}
+%\psdot[dotscale=3](! Turtle8)
+\end{pspicture}
+\fi
+
+
+
+
+
+%\clearpage
+%\section{List of all optional arguments for \texttt{pst-turtle}}
+%\xkvview{family=pst-turtle,columns={key,type,default}}
+
+\bgroup
+\RaggedRight
+\nocite{*}
+%\bibliographystyle{plain}
+\printbibliography{pst-turtle-doc}
+\egroup
+
+\printindex
+
+\end{document}
diff --git a/Master/texmf-dist/dvips/pst-turtle/pst-turtle.pro b/Master/texmf-dist/dvips/pst-turtle/pst-turtle.pro
new file mode 100644
index 00000000000..7bed96eb03f
--- /dev/null
+++ b/Master/texmf-dist/dvips/pst-turtle/pst-turtle.pro
@@ -0,0 +1,302 @@
+% turtle.ps -- graphics turtle.
+% @author Eric Laroche
+% @version @(#)$Id: pst-turtle.pro 1092 2019-10-01 20:19:35Z herbert $
+%
+% turtle.ps -- graphics turtle.
+% Copyright (C) 1997-2001 Eric Laroche.
+%
+% This program is free software;
+% you can redistribute it and/or modify it.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%
+% the '(graphics) turtle' is a 'cursor' that has a position (x and y
+% coordinate), a heading and a pen up/down state. procedures as
+% forward, left, etc. are used as drawing idioms.
+%
+% the turtle object consists of: cx cy phi penstate. cx and cy are the
+% initialial coordinates, established when creating the turtle, they are
+% the turtles zero coordinates. phi is the turtle heading, zero means
+% in x direction (i.e. to the right), 90 means in the y direction (i.e.
+% up). penstate is a boolean indicating whether the pen is down (true)
+% or up (false).
+% implicit to the turtle object is: currentpoint.
+%
+% note that using path constructing operators moveto, rmoveto, lineto,
+% rlineto, arc, etc. will affect the turtle's state in a way that the
+% turtle's current point is changed together with the postscript vm's
+% current point by these operators. contrary the turtle's heading
+% isn't affected by these operators.
+%
+% the turtle procedures indicate syntaxes using <turtle> (an array
+% containing the turtle state) as abstract turtle object.
+%
+% no syntax is indicated with the abbreviated function names.
+%
+% these procedures are not handling newpath, closepath,
+% setlinewidth, setlinejoin, setlinecap, stroke, fill, etc.
+%
+% a current point must be set before using the turtle object and after
+% starting a new path. i.e. a typical initialization sequence would be
+% e.g. 'newpath 200 200 moveto turtle 90 setheading'.
+%
+% create a turtle object.
+% this saves the current point as zero point to return to by 'home'.
+% a turtle object is an array of: [cx cy phi penstate].
+% - turtle -> <turtle>
+%
+% on stack: { x y } boolean N@name type InitXnode
+
+/tx@TurtleDict 50 dict def
+tx@TurtleDict begin
+%
+/nodeCounter 0 def
+/nodeCnt++ { nodeCounter 1 add /nodeCounter exch def } def
+
+%/saveNode {
+% { currentpoint }
+% false
+% (N@Turtle) nodeCounter 2 string cvs concatstrings 32 rightTrim cvn
+% 10
+% {InitPnode}
+% tx@NodeDict begin NewNode end
+% nodeCnt++
+%} def
+
+/saveNode {
+ tx@Dict begin
+ (Turtle) nodeCounter 2 string cvs concatstrings 32 rightTrim cvn { currentpoint } def
+ end
+} def
+%
+/turtle {
+ % get initial position.
+ % initial position is current point.
+ 2 setlinejoin
+ currentpoint
+ % phi and penstate
+ 0 true
+ % note: not doing any newpath.
+ 4 array astore
+} bind def
+
+% destroy a turtle object.
+% note: this procedure serves for compatibility
+% to older turtle formats.
+% <turtle> unturtle -> -
+/unturtle {
+ % return to turtle object's initial position.
+ dup 0 get
+ 1 index 1 get % <turtle> cx cy
+ moveto
+ % note: not doing any newpath.
+ pop % -
+} bind def
+
+% return turtle object size.
+% note: this procedure serves for compatibility
+% to older turtle formats.
+% - turtlesize -> 1
+/turtlesize {
+ % 1 entry on the stack (an array with cx cy phi penstate).
+ 1
+} bind def
+
+% normalize direction. phi must be >= 0 and < 360.
+% <turtle> normalizephi -> <turtle>
+/normalizephi {
+ dup 2 get % <turtle> phi
+ % note: denormalized typically by less than two circles,
+ % so the loops won't take too long.
+ % cut while larger or equal 2 pi.
+ {
+ dup 360 % <turtle> phi phi 360
+ lt {
+ exit
+ } if
+ 360 sub
+ } loop
+ % increment while less zero.
+ {
+ dup 0 % <turtle> phi phi 0
+ ge {
+ exit
+ } if
+ 360 add
+ } loop
+ exch dup 2
+ 4 -1 roll
+ put % <turtle>
+} bind def
+
+% relatively move to, action depending on penstate.
+% <turtle> dx dy pmoveto -> <turtle>
+/pmoveto {
+ % move or draw, depending on penstate
+ 2 index 3 get {
+ rlineto
+ } {
+ rmoveto
+ } ifelse
+} def
+
+% where we are, from initial point (in setxy coordinates).
+% <turtle> xy -> <turtle> x y
+/xy {
+ currentpoint % <turtle> x' y'
+ exch 2 index 0 get sub % <turtle> y' x
+ exch 2 index 1 get sub % <turtle> x y
+} bind def
+
+% calculate relative movements from setxy coordinates.
+% <turtle> x y rxy -> <turtle> x' y'
+/rxy {
+ 3 -1 roll % x y <turtle>
+ xy % x y <turtle> x'' y''
+ 5 -2 roll % <turtle> x'' y'' x y
+ exch 4 -1 roll sub
+ exch 3 -1 roll sub % <turtle> x' y'
+} bind def
+
+
+% logo language turtle functions
+
+% put penstate in 'up' position.
+% logo language turtle function
+% <turtle> penup -> <turtle>
+/penup {
+ % false means 'up'.
+ dup 3 false put
+} bind def
+
+% put penstate in 'down' position.
+% logo language turtle function
+% <turtle> pendown -> <turtle>
+/pendown {
+ % true means 'down'.
+ dup 3 true put
+} bind def
+
+% advance in current direction.
+% logo language turtle function
+% <turtle> d forward -> <turtle>
+/forward {
+ % dx is d cos phi.
+ 1 index 2 get cos 1 index mul % <turtle> d dx
+ % dy is d sin phi.
+ 2 index 2 get sin 3 -1 roll mul % <turtle> dx dy
+ pmoveto
+ saveNode
+} def
+
+% back up in current direction.
+% logo language turtle function
+% <turtle> d back -> <turtle>
+/back {
+ neg
+ forward
+} bind def
+
+% change direction to the left (counterclockwise, positive direction).
+% logo language turtle function
+% <turtle> omega left -> <turtle>
+/left {
+ 1 index 2 get % <turtle> omega phi
+ add % <turtle> phi'
+ 1 index 2 3 -1 roll put
+ normalizephi
+} bind def
+
+% change direction to the right (clockwise, negative direction).
+% logo language turtle function
+% <turtle> omega right -> <turtle>
+/right {
+ neg
+ left
+} bind def
+
+% move to a specified point.
+% logo language turtle function
+% <turtle> x y setxy -> <turtle>
+/setxy {
+ rxy % <turtle> x' y'
+ pmoveto % <turtle>
+} bind def
+
+% move to a specified point (only x changes).
+% logo language turtle function
+% <turtle> x setx -> <turtle>
+/setx {
+ 0 rxy % <turtle> x' y'
+ pop 0 pmoveto % <turtle>
+} bind def
+
+% move to a specified point (only y changes).
+% logo language turtle function
+% <turtle> y sety -> <turtle>
+/sety {
+ 0 exch rxy % <turtle> x' y'
+ exch pop 0 exch pmoveto % <turtle>
+} bind def
+
+% set the heading.
+% logo language turtle function
+% <turtle> phi' setheading -> <turtle>
+/setheading { 1 index 2 3 -1 roll put normalizephi } bind def
+
+% set heading towards a point.
+% logo language turtle function
+% <turtle> x y towards -> <turtle>
+/towards {
+ rxy % <turtle> x' y'
+ % check if both zero.
+ 1 index 0 eq 1 index 0 eq and {
+ % set heading to zero.
+ pop pop 0
+ } {
+ exch atan
+ } ifelse
+ setheading
+} bind def
+
+% go home; heading to zero.
+% logo language turtle function
+% <turtle> home -> <turtle>
+/home { 0 dup setxy 0 setheading } bind def
+
+% get x coordinate.
+% logo language turtle function
+% <turtle> xcor -> cx <turtle> x
+/xcor { xy pop } bind def
+
+% get y coordinate.
+% logo language turtle function
+% <turtle> ycor -> <turtle> y
+/ycor { xy exch pop } bind def
+
+% get heading.
+% logo language turtle function
+% <turtle> heading -> <turtle> phi
+/heading { dup 2 get } bind def
+
+% get pen state.
+% logo language turtle function
+% note: only the turtle relevant stuff given.
+% <turtle> drawstate -> <turtle> penstate
+/drawstate { dup 3 get } bind def
+%
+% logo language turtle function abbreviations
+%
+/bk { back } bind def
+/fd { forward } bind def
+/lt { left } bind def
+/pd { pendown } bind def
+/pu { penup } bind def
+/rt { right } bind def
+/seth { setheading } bind def
+%
+end
+% end of pst-turtle.pro
+
diff --git a/Master/texmf-dist/tex/generic/pst-turtle/pst-turtle.tex b/Master/texmf-dist/tex/generic/pst-turtle/pst-turtle.tex
new file mode 100644
index 00000000000..acf95677dbf
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-turtle/pst-turtle.tex
@@ -0,0 +1,63 @@
+%% $Id: pst-turtle.tex 1093 2019-10-02 11:28:36Z herbert $
+%%
+%% This is file `pst-turtle.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `pst-turtle.tex'
+%%
+%% Herbert Voss <hvoss@tug.org>
+%%
+%% 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-turtle' is a PSTricks package to plot special functions
+%%
+%% For a ChangeLog go the the end
+%%
+\csname PSTturtleLoaded\endcsname
+\let\PSTfuncLoaded\endinput
+% Requires some PSTricks packages
+\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-turtle}
+%
+\def\fileversion{0.02}
+\def\filedate{2019/10/02}
+\message{`PST-turtle' v\fileversion, \filedate\space (hv)}
+%
+\define@boolkey[psset]{pst-turtle}[Pst@]{showhead}[true]{}%
+\psset{showhead=false}
+%
+\pstheader{pst-turtle.pro}
+%
+\def\psTurtle{\pst@object{psTurtle}}
+\def\psTurtle@i{\@ifnextchar(\psTurtle@ii{\psTurtle@ii(0,0)}}
+\def\psTurtle@ii(#1)#2{%
+ \pst@getcoor{#1}\pst@tempA
+ \begin@OpenObj
+ \psset{unit=1cm}%
+ \addto@pscode{
+ tx@TurtleDict begin
+ \pst@tempA translate
+ \pst@number\psxunit \pst@number\psyunit scale
+ 0 0 moveto
+ turtle % initialize
+ #2
+ 2 setlinejoin
+ end
+ 1 \pst@number\psxunit div 1 \pst@number\psyunit div scale
+ }%
+ \end@OpenObj
+}
+\catcode`\@=\PstAtCode\relax
+%
+%% END: pst-turtle.tex
+\endinput
+%
+
diff --git a/Master/texmf-dist/tex/latex/pst-turtle/pst-turtle.sty b/Master/texmf-dist/tex/latex/pst-turtle/pst-turtle.sty
new file mode 100644
index 00000000000..bf7636aa9a3
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pst-turtle/pst-turtle.sty
@@ -0,0 +1,12 @@
+\RequirePackage{pstricks}
+\ProvidesPackage{pst-turtle}[2018/12/13 package wrapper for pst-turtle.tex (hv)]
+\RequirePackage{pst-xkey}
+%
+\input{pst-turtle.tex}
+\ProvidesFile{pst-turtle.tex}
+ [\filedate\space v\fileversion\space `PST-turtle' (hv)]
+\IfFileExists{pst-turtle.pro}{%
+ \ProvidesFile{pst-turtle.pro}[2019/05/17 v. 0.01, PostScript prologue file (hv)]
+\@addtofilelist{pst-turtle.pro}}{}%
+\endinput
+%% $Id: pst-turtle.sty 1064 2019-05-19 09:17:21Z herbert $
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index ad9e2a25dfe..d3aab5a0ee1 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -574,7 +574,8 @@ my @TLP_working = qw(
pst-qtree pst-rputover pst-rubans
pst-shell pst-sigsys pst-slpe pst-solarsystem pst-solides3d pst-soroban
pst-spectra pst-spinner pst-spirograph
- pst-stru pst-support pst-text pst-thick pst-tools pst-tree pst-tvz pst-uml
+ pst-stru pst-support
+ pst-text pst-thick pst-tools pst-tree pst-turtle pst-tvz pst-uml
pst-vectorian pst-vehicle pst-venn pst-vowel pst-vue3d
pst2pdf pstool pstricks pstricks-add pstricks_calcnotes pstring
ptex-base ptex-fontmaps ptex-fonts ptex-manual
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index ffadbd5c1a7..7e75aac8d17 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -1041,6 +1041,7 @@ chomp (my $ctan_root = `tlpkginfo --ctan-root`);
'pst-thick', "&MAKEpst",
'pst-tools', "&MAKEpst",
'pst-tree', "&MAKEpst",
+ 'pst-turtle', "&MAKEpst",
'pst-tvz', "&MAKEpst",
'pst-uml', "&MAKEpst",
'pst-vehicle', "&MAKEpst",
diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
index 5f27ae4d119..ea9602607aa 100644
--- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
@@ -102,6 +102,7 @@ depend pst-text
depend pst-thick
depend pst-tools
depend pst-tree
+depend pst-turtle
depend pst-tvz
depend pst-uml
depend pst-vectorian
diff --git a/Master/tlpkg/tlpsrc/pst-turtle.tlpsrc b/Master/tlpkg/tlpsrc/pst-turtle.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pst-turtle.tlpsrc