summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-05-12 22:00:19 +0000
committerKarl Berry <karl@freefriends.org>2017-05-12 22:00:19 +0000
commit778ba561199969808c132ea6968f1202ec315e4c (patch)
tree74ecbb12b3538f0d07d4c76d1432def3a7d3f68e /Master
parent57cec192dea8da9ad451a1e6450d07a83f940181 (diff)
pst-spinner (12may17)
git-svn-id: svn://tug.org/texlive/trunk@44305 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/Changes14
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/README15
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/doc/images/cercle-chromatique.eps21
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/doc/images/spirales-hsb.eps66
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.bib117
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.pdfbin0 -> 1489145 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.tex353
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/dvips/pst-spinner.pro121
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/latex/pst-spinner.sty19
-rw-r--r--Master/texmf-dist/doc/latex/pst-spinner/tex/pst-spinner.tex72
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pst-spinner.tlpsrc0
13 files changed, 800 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/Changes b/Master/texmf-dist/doc/latex/pst-spinner/Changes
new file mode 100644
index 00000000000..9f98dbe65a7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/Changes
@@ -0,0 +1,14 @@
+%% $Id: Changes 449 2017-05-10 14:34:18Z herbert $
+%%
+pst-spinner.pro -----------
+0.01 2017-05-11 - first CTAN version
+
+
+pst-spinner.sty -----------
+0.01 2017-05-11 - first CTAN version
+
+
+pst-spinner.tex -----------
+
+1.01 2017-05-11 - first CTAN version
+
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/README b/Master/texmf-dist/doc/latex/pst-spinner/README
new file mode 100644
index 00000000000..cab7c48100a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/README
@@ -0,0 +1,15 @@
+%% Package `pst-spinner'
+%%
+%% Manuel Luque and Herbert Voss
+%%
+%% 2017
+%%
+
+This package aims to propose a model of the fidget spinner gadget.
+It exists under different forms with 2, 3 poles and even more.
+We chosed the most popular model: the triple Fidget Spinner.
+You can run the PSTricks related documents with xelatex. If
+you use an background image or an animation then you have to
+choose the latex->dvips->ps2pdf sequence, which is, of course,
+only one click in many Editors.
+
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/doc/images/cercle-chromatique.eps b/Master/texmf-dist/doc/latex/pst-spinner/doc/images/cercle-chromatique.eps
new file mode 100644
index 00000000000..b240fd79130
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/doc/images/cercle-chromatique.eps
@@ -0,0 +1,21 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: -150 -150 150 150
+
+
+/secteur {newpath
+ 0 0 moveto
+ Radius i 1 sub cos mul
+ 0 0 Radius i 1 sub i 1 add arc
+ closepath
+ } def
+0 0 translate
+/CM {28.45 mul} bind def
+/Radius {radius CM} def
+/radius 5 def
+
+0 1 360 {/i exch def /HUE i 360 div def
+ secteur
+ HUE 1 1 sethsbcolor fill} for
+% manuel.luque27@gmail.com
+
+
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/doc/images/spirales-hsb.eps b/Master/texmf-dist/doc/latex/pst-spinner/doc/images/spirales-hsb.eps
new file mode 100644
index 00000000000..65b1aaa4aec
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/doc/images/spirales-hsb.eps
@@ -0,0 +1,66 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: -215 -215 215 215
+%%Title: C:\Fichiers_LaTeX\2017\spiralmosaic\spirales-hsb-2.ps
+%%Creator: GSview from C:\Fichiers_LaTeX\2017\spiralmosaic\spirales-hsb-2.ps
+%%CreationDate: Wed Apr 26 11:46:50 2017
+%%Pages: 1
+%%EndComments
+%%Page: 1 1
+%%BeginDocument: C:\Fichiers_LaTeX\2017\spiralmosaic\spirales-hsb-2.ps
+/cm {2.845 mul 5 mul} bind def
+/Rmax 15 cm def
+/k 4 def % nombre de tours
+% ni pair !!!
+/ni 8 def
+gsave
+newpath
+Rmax 0 moveto
+0 0 Rmax 0 360 arc
+closepath
+stroke
+grestore
+newpath
+Rmax 0 moveto
+0 0 Rmax 0 360 arc
+closepath
+clip
+/t01 {r_0 360 mul ni div neg} def
+/t02 {r_0 1 add 360 mul ni div neg} def
+/RadiusA {ni 360 div t mul r_0 add } def
+/RadiusB {ni 360 div t mul r_0 1 add add } def
+/spiraleA {
+RadiusA t cos mul cm RadiusA t sin mul cm moveto
+t01 1 k 360 mul {/t exch def
+RadiusA t cos mul cm RadiusA t sin mul cm lineto
+ } for
+} def
+% spirale suivante générée en partant de la fin
+/spiraleB {
+k 360 mul -1 t02 {/t exch def
+RadiusB t cos mul cm RadiusB t sin mul cm lineto
+ } for
+closepath
+} def
+
+2 1 ni 1 add {/r_0 exch def
+%gsave
+% 2 spirales tournant a droite
+newpath
+/t t01 def
+spiraleA
+/t t02 def
+spiraleB
+closepath
+r_0 2 sub ni 1 add div 1 1 sethsbcolor
+%stroke %
+fill
+newpath
+/t t01 def
+spiraleA
+1 setgray
+% stroke
+%
+} for
+
+%%EndDocument
+%%Trailer
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.bib b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.bib
new file mode 100644
index 00000000000..d1b2076e1ac
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.bib
@@ -0,0 +1,117 @@
+%% -*-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} }
+
+@Book{PSTricks2,
+ author = {Herbert Vo\ss},
+ title = {{\PST} {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = {7},
+ publisher = {DANTE -- Lehmanns},
+ year = {2016},
+ address = {Heidelberg/Berlin}
+}
+
+@Book{PSTricks-E,
+ author = {Herbert Vo\ss},
+ title = {{\PST} {G}raphics for \LaTeX},
+ edition = {1},
+ publisher = {UIT},
+ year = {2011},
+ address = {Cambridge}
+}
+
+@Book{companion04,
+ author = {Frank Mittelbach and Michel Goosens et al},
+ title = {The {\LaTeX} {C}ompanion},
+ edition = {2},
+ publisher = {Addison-Wesley Publishing Company},
+ year = {2004},
+ address = {Boston}
+}
+
+@Book{unbound,
+ author = {Alan Hoenig},
+ title = {\TeX{} {U}nbound: \LaTeX{} \& \TeX{} {S}trategies, {F}onts, {G}raphics, and {M}ore},
+ publisher = {Oxford University Press},
+ year = {1998},
+ address = {London}
+}
+@Book{tlgc2,
+ 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.}
+}
+
+@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 = {PostScript 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
+}
+
+@Manual{multido,
+ Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition},
+ Author = {{Timothy Van} Zandt},
+ Organization = {},
+ Address = {\url{CTAN:/graphics/pstricks/generic/multido.tex}},
+ Note = {},
+ year = 1997
+}
+
+@online{wikipedia,
+ author = {WikipediA},
+ sortlabel = {Wikipedia},
+ sortname = {Wikipedia},
+ title = {Fidget spinner},
+ date = {2017-05-11},
+ urldate = {2017-05-11},
+ url = {https://en.wikipedia.org/wiki/Fidget_spinner},
+}
+
+%% $Id: pst-spinner-doc.bib 452 2017-05-11 16:21:02Z herbert $
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.pdf b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.pdf
new file mode 100644
index 00000000000..f228c943b86
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.tex b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.tex
new file mode 100644
index 00000000000..7ee4b0122f5
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/doc/pst-spinner-doc.tex
@@ -0,0 +1,353 @@
+%% $Id: pst-spinner-doc.tex 453 2017-05-11 19:40:46Z herbert $
+%
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings,
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\usepackage{dtk-logos}
+\usepackage[autostyle]{csquotes}
+\usepackage{biblatex}
+\addbibresource{\jobname.bib}
+\usepackage[utf8]{inputenc}
+\usepackage{pst-spinner,animate}
+\let\belowcaptionskip\abovecaptionskip
+%
+\def\textat{\char064}%
+\newdimen\fullWidth
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=§}
+
+\def\bgImage{%
+\psset{unit=0.75cm}
+\begin{pspicture}(-4,-4)(4,4)
+\psFidgetSpinner[colorMask=blue,linewidth=0.05,mask,customize,customizeMask,image=images/spirales-hsb.eps,rotation=-30]
+\rput(0,0){\color{white}\textbf{PSTricks}}
+\end{pspicture}}
+
+
+\begin{document}
+\title{\texttt{pst-spinner}\\
+ \small v.\pstspinnerFV}
+%\docauthor{Herbert Vo\ss}
+\author{Manuel Luque\\Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\fullWidth=\linewidth
+\advance\fullWidth by \marginparsep
+\advance\fullWidth by \marginparwidth
+
+
+\begin{abstract}
+A fidget spinner is a type of stress-relieving toy. A basic fidget spinner consists of a bearing
+in the center of a design made from any of a variety of materials including brass,
+stainless steel, titanium, copper and plastic. The toy may help people who have trouble
+focusing or fidgeting by acting as a release mechanism for nervous energy or stress.~\parencite{wikipedia}
+\vfill
+\noindent
+Thanks to:
+\end{abstract}
+
+\clearpage
+\tableofcontents
+
+
+\clearpage
+
+%\author{manuel.luque27@gmail.com}
+
+\section{Introduction}
+This package aims to propose a model of the fidget spinner gadget. It exists under different
+forms, with 2, 3 poles and even more. We chosed the most popular model: the triple Fidget Spinner. The dimensions
+of the model are linked to that of the ball bearings: outer diameter 22 mm and inner diameter 8 mm. The composite axis
+of a quality ball bearing is in the center of an equilateral triangle at the tops of which are placed bearings
+With balls identical to that of the axis but of any quality or colored rings. The contour of the object is
+Consisting of perfectly connected circular arcs.
+
+\section{Theory}
+For calculations the Fidget Spinner is written in a circle of radius $R$. All other dimensions are deduced.
+In the diagram $r_1$ is the outer radius of a ball bearing. A is the distance between a ball bearing and the edge
+outside the object. $R_1 + a$ is the radius of the circle tangent to the circle of radius $R$,
+$r_2$ is the radius of the circle arc of
+connection to the circles of radius $r_1 + a$ and to the central circle of radius $r_1 + 2a$.
+
+\begin{center}
+\psset{dimen=middle}
+\begin{pspicture}(-6,-7)(6,5)
+\psgrid[subgriddiv=0,griddots=10,gridlabels=0]
+\pstVerb{/arctan {
+dup 0 ge
+ {1 atan}
+ {neg 1 atan neg}
+ifelse
+} def
+ /R1 4.5 def
+ /r1 1.1 def
+ /a1 R1 3 div r1 sub def
+ /rho R1 r1 sub a1 sub def
+ /r2 2 r1 mul a1 mul 3 a1 dup mul mul add rho dup mul add rho r1 a1 2 mul add mul sub
+ rho 2 a1 mul sub div def
+ /rho2 r2 r1 add 2 a1 mul add def
+ /alpha1 rho rho2 2 div sub rho2 3 sqrt mul 2 div div arctan def
+ /beta1 rho rho2 add neg 3 sqrt rho2 rho sub mul div arctan def
+ /alpha2 rho 2 div neg rho2 add 3 sqrt 2 div rho mul neg div arctan def
+}%
+\pscircle{! R1}
+\pscircle{! rho}
+\pnode(! 0 R1){A}
+\pnode(!R1 3 sqrt mul -2 div R1 -2 div){B}
+\pnode(!R1 3 sqrt mul 2 div R1 -2 div){C}
+\pnode(! 0 rho){O1}
+\pnode(!rho 3 sqrt mul -2 div rho -2 div){O2}
+\pnode(!rho 3 sqrt mul 2 div rho -2 div){O3}
+\pnode(! rho2 3 sqrt mul 2 div neg rho2 2 div ){A'}
+\pnode(! rho2 3 sqrt mul 2 div rho2 2 div ){B'}
+\pnode(! 0 rho2 neg){C'}
+\pspolygon(A')(B')(C')
+\pspolygon(O1)(O2)(O3)
+\pscircle[linecolor={[rgb]{0 0.5 0}}]{!r1}
+\pscircle{!r1 a1 add}
+\pscircle{!r1 a1 2 mul add}
+\pscircle[linecolor={[rgb]{0 0.5 0}}](O1){!r1}
+\pscircle[linecolor={[rgb]{0 0.5 0}}](O2){!r1}
+\pscircle[linecolor={[rgb]{0 0.5 0}}](O3){!r1}
+\pscircle(O3){!r1 a1 add}
+\pscircle(O1){!r1 a1 add}
+\pscircle(O2){!r1 a1 add}
+\psline(A)(O)
+\psline(B)(O)
+\psline(C)(O)
+\psdots(O1)(O2)(O3)
+\pscircle[linecolor=red,linestyle=dashed]{!rho2}
+\pscircle[linecolor=red](A'){!r2}
+\pscircle[linecolor=red](B'){!r2}
+\pscircle[linecolor=red](C'){!r2}
+\psdots[linecolor=red](A')(O1)(B')(O3)(C')(O2)
+\pspolygon(A')(O1)(B')(O3)(C')(O2)
+\psarc[linecolor=blue,linewidth=0.1]{->}(O1){!r1 a1 add}{!alpha1 neg}{!alpha1 180 add}
+\psarcn[linecolor=red,linewidth=0.1]{->}(A'){!r2}{!alpha1}{!beta1}
+\psarc[linecolor=blue,linewidth=0.1]{->}(O2){!r1 a1 add}{!180 beta1 add}{!alpha2}
+\psarcn[linecolor=red,linewidth=0.1]{->}(C'){!r2}{!alpha2 180 sub}{!alpha2 neg}
+\psarc[linecolor=blue,linewidth=0.1]{->}(O3){!r1 a1 add}{!alpha2 neg 180 add}{!360 beta1 sub}
+\psarcn[linecolor=red,linewidth=0.1]{->}(B'){!r2}{!beta1 180 sub neg}{!alpha1 180 sub neg}
+\uput[ul](0,0){$O$}
+\uput[ul](O1){$O_1$}
+\uput[d](O2){$O_2$}
+\uput[d](O3){$O_3$}
+\pcline{->}(O1)(!r1 30 cos mul rho r1 30 sin mul add)
+\aput{:U}{$r_1$}
+\rput(!r1 30 cos mul rho r1 30 sin mul add){\pcline{<->}(0,0)(!a1 30 cos mul a1 30 sin mul)\aput{:U}{$a$}}
+\uput[u](A'){$O'_1$}
+\uput[u](B'){$O'_3$}
+\rput(B'){\pcline{->}(0,0)(! r2 30 cos mul r2 30 sin mul)\aput{:U}{$r_2$}}
+\uput[d](C'){$O'_2$}
+\end{pspicture}
+\end{center}
+
+
+\section{The Macro}
+
+For calculations, the Fidget Spinner is written in a circle of radius R. All other dimensions are deduced.
+The colors of the rings can be chosen as well as the background color of the object. This object can be customized with
+a picture.
+The command is:
+
+\begin{BDef}
+\Lcs{psFidgetSpinner}\OptArgs
+\end{BDef}
+
+
+\section{Optional arguments}
+
+\subsection{The Radius \Lkeyword{R}}
+The radius of the circle in which the triple Fidget spinenr is inscribed. It is preset to \nxLkeyword{R=3.9}.
+\subsection{The colors}
+
+The colors with their default value. They are numbered in the order: central bearing, peripheral rings,
+and central cap.
+
+ \begin{itemize}
+ \item \Lkeyset{color0=honeydew}
+ \item \Lkeyset{color1=red}
+ \item \Lkeyset{color2=green}
+ \item \Lkeyset{color3=blue}
+ \item \Lkeyset{colorMask=honeydew}
+ \end{itemize}
+
+\subsection{Rotation}
+With the optional argument \Lkeyword{rotation} the output of the spinner can be rotated.
+
+\subsection{\Lkeyword{mask}}
+A boolean value to customize the object with an image in eps format. Preset to \false.
+
+\subsection{Lkeyword{customizeMask}}
+A boolean value. When set to \true\ the image is also printed on the cap of the central ball roll.
+
+\subsection{\Lkeyword{image}}
+Defines the name including the path of the image and is preset to empty.
+
+
+
+\subsection{Background color}
+The background color is set with the default PSTricks parameter \Lkeyword{fillcolor} and
+the linecolor and linewidth with \Lkeyword{linecolor} and \Lkeyword{linewidth}.
+
+
+\section{examples}
+
+
+\begin{LTXexample}[width=0.6\linewidth,frame=,pos=r]
+\begin{pspicture}(-4,-4)(4,4)
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[fillcolor=cyan!10,
+ linewidth=0.05,mask]
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=0.6\linewidth,frame=,pos=r]
+\begin{pspicture}(-4,-4)(4,4)
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[fillcolor=cyan!10,
+ linewidth=0.05,mask=false]
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\begin{LTXexample}[width=0.6\linewidth,frame=,pos=r]
+\begin{pspicture}(-4,-4)(4,4)
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[colorMask=blue,
+ linewidth=0.05,mask,customize,
+ customizeMask,
+ image=images/spirales-hsb.eps]
+\rput(0,0){\color{white}\textbf{PSTricks}}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\begin{LTXexample}[width=0.6\linewidth,frame=,pos=r]
+\begin{pspicture}(-4,-4)(4,4)
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[colorMask=blue,linewidth=0.05,
+ mask,customize,customizeMask,
+ image=images/spirales-hsb.eps,
+ rotation=-30]
+\rput(0,0){\color{white}\textbf{PSTricks}}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{center}
+\begin{animateinline}[controls,loop,
+ begin={\begin{pspicture}(-4,-4)(4,4)},
+ end={\end{pspicture}}]{25}% 25 images/s
+\multiframe{72}{i=0+5}{%
+\psgrid[subgriddiv=5,%
+ gridlabels=0,%
+ gridwidth=1pt,%
+ gridcolor=orange,
+ subgridwidth=0.1pt,%
+ subgridcolor=orange](-4,-4)(4,4)
+\rput{\i}{\psFidgetSpinner[R=3.9,fillcolor=cyan!10,linewidth=0.05,mask]}
+\rput(0,0){\textbf{PSTricks}}
+}
+\end{animateinline}
+\end{center}
+
+\begin{verbatim}
+\begin{animateinline}[
+ controls,loop,
+ begin={\begin{pspicture}(-4,-4)(4,4)},
+ end={\end{pspicture}}]{25}% 25 images/s
+\multiframe{72}{i=0+5}{%
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\rput{\i}{\psFidgetSpinner[R=3.9,fillcolor=cyan!10,linewidth=0.05,mask]}
+\rput(0,0){\textbf{PSTricks}}}
+\end{animateinline}
+\end{verbatim}
+
+\iffalse
+
+\begin{center}
+\begin{animateinline}[controls,loop,
+ begin={\begin{pspicture}(-4,-4)(4,4)},
+ end={\end{pspicture}}]{25}% 25 images/s
+\multiframe{72}{i=0+5}{%
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[R=3.9,colorMask=blue,linewidth=0.05,mask,customize,
+ customizeMask,image=images/spirales-hsb.eps,rotation=\i]
+\rput(0,0){\color{white}\textbf{PSTricks}}}
+\end{animateinline}
+\end{center}
+
+\begin{verbatim}
+\begin{animateinline}[controls,loop,
+ begin={\begin{pspicture}(-4,-4)(4,4)},
+ end={\end{pspicture}}]{25}% 25 images/s
+\multiframe{72}{i=0+5}{%
+\psgrid[subgriddiv=5,
+ gridlabels=0,
+ gridwidth=1pt,
+ gridcolor=orange,
+ subgridwidth=0.1pt,
+ subgridcolor=orange](-4,-4)(4,4)
+\psFidgetSpinner[R=3.9,colorMask=blue,linewidth=0.05,mask,customize,customizeMask,
+ image=images/spirales-hsb.eps,rotation=\i]
+\rput(0,0){\color{white}\textbf{PSTricks}}}
+\end{animateinline}
+\end{verbatim}
+
+\fi
+
+
+\clearpage
+\section{List of all optional arguments for \texttt{pst-spinner}}
+
+\xkvview{family=pst-spinner,columns={key,type,default}}
+
+
+\nocite{*}
+\bgroup
+\RaggedRight
+\printbibliography
+\egroup
+
+\printindex
+
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/dvips/pst-spinner.pro b/Master/texmf-dist/doc/latex/pst-spinner/dvips/pst-spinner.pro
new file mode 100644
index 00000000000..2a4957b1e7d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/dvips/pst-spinner.pro
@@ -0,0 +1,121 @@
+%% Package `pst-spinner.pro'
+%%
+%%
+%% 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.
+%%
+/tx@spinnerDict 20 dict def tx@spinnerDict begin
+%
+/arctan { dup 0 ge { 1 atan }{ neg 1 atan neg } ifelse } def
+
+/BallBearing {
+ /point exch def
+ /couleur exch def
+ newpath
+ point ri 0 360 arc
+ point ri 0.15 cm add 360 0 arcn
+ closepath
+ 0.25 setgray
+ fill
+ newpath
+ point r1 0 360 arc
+ point r1 0.15 cm sub 360 0 arcn
+ closepath
+ 0.25 setgray
+ fill
+ newpath
+ point r1 0.15 cm sub 0 360 arc
+ point ri 0.15 cm add 360 0 arcn
+ closepath
+ couleur
+ fill
+} def
+%
+% le contour du triple fidget spinner
+/TripleSpinner {
+ 1 setlinejoin
+ newpath
+ O1 /yO1 exch def /xO1 exch def
+ xO1 r1 a1 add alpha1 neg cos mul add
+ yO1 r1 a1 add alpha1 neg sin mul add
+ moveto
+ O1 r1 a1 add alpha1 neg alpha1 180 add arc
+ A' r2 alpha1 beta1 arcn
+ O2 r1 a1 add 180 beta1 add alpha2 arc
+ C' r2 alpha2 180 sub alpha2 neg arcn
+ O3 r1 a1 add alpha2 neg 180 add 360 beta1 sub arc
+ B' r2 beta1 180 sub neg alpha1 180 sub neg arcn
+ r1 rho moveto
+ O1 r1 360 0 arcn
+ r1 0 moveto
+ 0 0 r1 360 0 arcn
+ O2 moveto r1 0 rmoveto
+ O2 r1 360 0 arcn
+ O3 moveto r1 0 rmoveto
+ O3 r1 360 0 arcn
+} def
+%
+/makeSpinner {
+ 1 setlinecap
+ /r1 1.1 cm def
+ /ri 0.4 cm def
+ /a1 R1 3 div r1 sub def
+ /rho R1 r1 sub a1 sub def
+ /r2 2 r1 mul a1 mul 3 a1 dup mul mul add rho dup mul add rho r1 a1 2 mul add mul sub
+ rho 2 a1 mul sub div def
+ /rho2 r2 r1 add 2 a1 mul add def
+ /alpha1 rho rho2 2 div sub rho2 3 sqrt mul 2 div div arctan def
+ /beta1 rho rho2 add neg 3 sqrt rho2 rho sub mul div arctan def
+ /alpha2 rho 2 div neg rho2 add 3 sqrt 2 div rho mul neg div arctan def
+ /A {0 R1} def
+ /B {R1 3 sqrt mul -2 div R1 -2 div} def
+ /C {R1 3 sqrt mul 2 div R1 -2 div} def
+ /O1 {0 rho} def
+ /O2 {rho 3 sqrt mul -2 div rho -2 div} def
+ /O3 {rho 3 sqrt mul 2 div rho -2 div} def
+ /A' {rho2 3 sqrt mul 2 div neg rho2 2 div} def
+ /B' {rho2 3 sqrt mul 2 div rho2 2 div} def
+ /C' {0 rho2 neg} def
+ gsave
+ spinnerROT rotate
+ gsave
+ TripleSpinner
+ clip
+ ifPst@customize { spinnerImage }{ spinnerFillColor fill } ifelse
+ grestore
+ TripleSpinner
+ spinnerLineColor
+ spinnerLW SLW
+ stroke
+ {color1} {O1} BallBearing
+ {color2} {O2} BallBearing
+ {color3} {O3} BallBearing
+ {color0} {0 0} BallBearing
+ grestore
+ ifPst@mask {
+ ifPst@customizeMask {
+ gsave
+ newpath
+ r1 0 moveto
+ 0 0 r1 0 360 arc
+ closepath
+ clip
+ spinnerImage
+ grestore
+ }{
+ newpath
+ 0 0 r1 0 360 arc
+ colorMask
+ fill
+ } ifelse
+ 0 0 r1 0 360 arc
+ 0.5 setlinewidth
+ 0 setgray
+ stroke
+ } if
+} def % makeSpinner
+%
+end
+%%
+%% end \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/latex/pst-spinner.sty b/Master/texmf-dist/doc/latex/pst-spinner/latex/pst-spinner.sty
new file mode 100644
index 00000000000..4fc59dabb32
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/latex/pst-spinner.sty
@@ -0,0 +1,19 @@
+%% $Id: pst-spinner.sty 453 2017-05-11 19:40:46Z herbert $
+%
+%% 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.
+%%
+\RequirePackage{pstricks}
+\RequirePackage{pst-node}
+\ProvidesPackage{pst-spinner}[2017/05/11 package wrapper for
+ pst-spinner.tex]
+\input{pst-spinner.tex}
+\ProvidesFile{pst-spinner.tex}
+ [\filedate\space v\fileversion\space `PSt-spinner' (ml,hv)]
+\IfFileExists{pst-spinner.pro}{%
+ \ProvidesFile{pst-spinner.pro}
+ [2017/05/11 v. 0.01, PostScript prologue file (hv)]
+ \@addtofilelist{pst-spinner.pro}}{}%
+
+\endinput
diff --git a/Master/texmf-dist/doc/latex/pst-spinner/tex/pst-spinner.tex b/Master/texmf-dist/doc/latex/pst-spinner/tex/pst-spinner.tex
new file mode 100644
index 00000000000..da149b90273
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/pst-spinner/tex/pst-spinner.tex
@@ -0,0 +1,72 @@
+%% Package `pst-spinner.tex'
+%%
+%%
+%% 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:
+%% dessiner les triple fidget spinner
+%%
+\let\PSTSPINNERLoaded\endinput
+% Requires PSTricks, pst-xkey, pst-node packages
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi
+\ifx\PSTnodeLoaded\endinput\else\input pst-node.tex\fi
+%
+\def\fileversion{1.01}
+\let\pstspinnerFV\fileversion
+\def\filedate{2017/05/11}
+\message{`PST' v\fileversion, \filedate}
+
+\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
+\pst@addfams{pst-spinner}
+%% prologue for postcript
+\pstheader{pst-spinner.pro}%
+%
+\define@key[psset]{pst-spinner}{R}{\def\pst@spinner@R{#1 }} % rayon de cercle circonscrit au spinner
+\define@key[psset]{pst-spinner}{rotation}{\def\pst@spinner@rotation{#1 }} % angle de rotation
+%% couleurs definies par l'utilisateur
+\definecolor{honeydew}{rgb}{0.94 1 0.94}
+\define@key[psset]{pst-spinner}{color0}{\pst@getcolor{#1}\pscolor}
+\define@key[psset]{pst-spinner}{color1}{\pst@getcolor{#1}\pscolora}
+\define@key[psset]{pst-spinner}{color2}{\pst@getcolor{#1}\pscolorb}
+\define@key[psset]{pst-spinner}{color3}{\pst@getcolor{#1}\pscolorc}
+\define@key[psset]{pst-spinner}{colorMask}{\pst@getcolor{#1}\pscolorMask}
+\define@boolkey[psset]{pst-spinner}[Pst@]{mask}[true]{} % cache du roulement à billes du centre
+\define@boolkey[psset]{pst-spinner}[Pst@]{customize}[true]{} % personnaliser le fidget
+\define@boolkey[psset]{pst-spinner}[Pst@]{customizeMask}[true]{} % personnaliser le capuchon de roulement central
+\define@key[psset]{pst-spinner}{image}{\edef\psk@spinner@image{#1}} % chemin des dessins
+%
+\psset[pst-spinner]{R=3.9,rotation=0,color0=honeydew,color1=red,color2=green,
+ color3=blue!75,colorMask=honeydew,mask=true,customize=false,customizeMask=false,
+ image={}}
+\def\psFidgetSpinner{\def\pst@par{}\pst@object{psFidgetSpinner}}
+\def\psFidgetSpinner@i{%
+ \begin@SpecialObj
+ \addto@pscode{
+ tx@spinnerDict begin
+ /cm {\pst@number\psunit mul} bind def
+ /R1 \pst@spinner@R\space cm def
+ /color0 {\pst@usecolor\pscolor } def
+ /color1 {\pst@usecolor\pscolora } def
+ /color2 {\pst@usecolor\pscolorb } def
+ /color3 {\pst@usecolor\pscolorc } def
+ /colorMask {\pst@usecolor\pscolorMask} def
+ /spinnerROT \pst@spinner@rotation def
+ /ifPst@customize \ifPst@customize true \else false \fi def
+ /spinnerImage { (\psk@spinner@image) run } def
+ /spinnerFillColor { \pst@usecolor\psfillcolor } def
+ /spinnerLineColor { \pst@usecolor\pslinecolor } def
+ /spinnerLW \pst@number\pslinewidth\space def
+ /ifPst@mask \ifPst@mask true \else false \fi def
+ /ifPst@customizeMask \ifPst@customizeMask true \else false \fi def
+ makeSpinner
+ end
+ }%
+ \showpointsfalse
+ \end@SpecialObj
+ \ignorespaces}
+%
+\catcode`\@=\PstAtCode\relax
+\endinput \ No newline at end of file
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 1f8b4d46cb9..c881b535924 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -508,7 +508,7 @@ my @TLP_working = qw(
pst-platon pst-plot pst-poly pst-pdf pst-pulley
pst-qtree pst-rubans
pst-shell pst-sigsys pst-slpe pst-solarsystem pst-solides3d pst-soroban
- pst-spectra pst-spirograph
+ pst-spectra pst-spinner pst-spirograph
pst-stru pst-support pst-text pst-thick pst-tools pst-tree pst-tvz pst-uml
pst-vectorian pst-vowel pst-vue3d
pst2pdf pstool pstricks pstricks-add pstricks_calcnotes pstring
diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
index df73e5f040e..e947b86833a 100644
--- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
@@ -82,6 +82,7 @@ depend pst-solarsystem
depend pst-solides3d
depend pst-soroban
depend pst-spectra
+depend pst-spinner
depend pst-spirograph
depend pst-stru
depend pst-support
diff --git a/Master/tlpkg/tlpsrc/pst-spinner.tlpsrc b/Master/tlpkg/tlpsrc/pst-spinner.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pst-spinner.tlpsrc