summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/generic/pst-rubans/Changes2
-rw-r--r--Master/texmf-dist/doc/generic/pst-rubans/README44
-rw-r--r--Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.bib100
-rw-r--r--Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.pdfbin0 -> 597921 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.tex340
-rw-r--r--Master/texmf-dist/source/generic/pst-rubans/Makefile73
-rw-r--r--Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex353
-rw-r--r--Master/texmf-dist/tex/latex/pst-rubans/pst-rubans.sty24
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds1
-rw-r--r--Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/pst-rubans.tlpsrc0
12 files changed, 939 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-rubans/Changes b/Master/texmf-dist/doc/generic/pst-rubans/Changes
new file mode 100644
index 00000000000..94e67286ca3
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-rubans/Changes
@@ -0,0 +1,2 @@
+pst-rubans.tex --------
+1.20 2011-02-10 - initial CTAN version
diff --git a/Master/texmf-dist/doc/generic/pst-rubans/README b/Master/texmf-dist/doc/generic/pst-rubans/README
new file mode 100644
index 00000000000..8a0a5d32cc5
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-rubans/README
@@ -0,0 +1,44 @@
+%% Package `pst-rubans.tex'
+%%
+%% Manuel Luque <Manuel.Luque27@gmail.com>
+%% Herbert Voss <hvoss@tug.org> (Germany)
+%%
+%% 2011-02-10
+%%
+
+PSTricks offers excellent macros to insert more or less complex
+graphics into a document. pstricks.tex itself is the base for several
+other additional packages, which are mostly named pst-xxxx,
+like pst-rubans.
+
+Save the files
+
+pst-rubans.sty
+pst-rubans.tex
+
+in any place, where latex or any other TeX program will find it.
+
+pst-rubans uses the extended version of the keyval package. So
+be sure that you
+- have installed xkeyval with the special pst-xkey
+ (CTAN: tex-archive/macros/latex/contrib/xkeyval/)
+- do not load another package after pst-rubans, which loads
+ the old keyval.sty or pst-key.tex
+
+
+If you like to get the documentation file in another format run
+
+latex pst-rubans-doc.tex
+bibtex pst-rubans-doc
+latex pst-rubans-doc.tex
+dvips pst-rubans-doc.dvi
+
+to get a PostScript file. But pay attention, that the pst-rubans
+files are saved in the above mentioned way, before you run
+latex on the documentation file.
+
+The intermediate DVI file works only with viewers which can
+interprete the embedded PostScript code.
+
+For another PDF output read the introduction from
+the documentation.
diff --git a/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.bib b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.bib
new file mode 100644
index 00000000000..387fbc637cf
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.bib
@@ -0,0 +1,100 @@
+%% -*-bibtex-*-
+@STRING{tugboat = {TUGboat} }
+@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} }
+
+@Book{casselman05,
+ author = {Bill Casselman},
+ title = {Mathematical {I}llustrations -- a manual of geometry and {P}ost{S}cript},
+ publisher = {Cambridge University Press},
+ year = {2005},
+ address = {Cambridge},
+}
+
+
+@Book{PSTricks2,
+ author = {Herbert Vo\ss},
+ title = {{PSTricks} {G}rafics for \TeX{} and \LaTeX},
+ edition = {},
+ publisher = {UIT},
+ year = {2011},
+ address = {Cambridge}
+}
+
+}
+
+@Book{companion04,
+ author = {Frank Mittelbach and Michel Goosens et al},
+ title = {The {\LaTeX} {C}ompanion},
+ edition = {2nd},
+ 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 = {2nd},
+ 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}
+}
+
+@MISC{xkeyval,
+ author = {Hendri Adriaens},
+ title = {xkeyval package},
+ howpublished = {\url{CTAN:/macros/latex/contrib/xkeyval}},
+ year = 2004
+}
+
+@Article{rahtz:96-1,
+ author = {Sebastian Rahtz},
+ title = {An introduction to {PST}ricks, part {I}},
+ journal = {Baskerville},
+ address = {\url{CTAN: /usergrps/uktug/baskervi/}},
+ year = 1996,
+ volume = 6,
+ number = 1,
+ month = feb,
+ pages = {22-34}
+}
+@Article{rahtz:96-2,
+ author = {Sebastian Rahtz},
+ title = {An introduction to {PST}ricks, part {II}},
+ journal = {Baskerville},
+ address = {\url{CTAN: /usergrps/uktug/baskervi/}},
+ year = 1996,
+ volume = 6,
+ number = 2,
+ month = apr,
+ pages = {23-33}
+}
+
diff --git a/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.pdf b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.pdf
new file mode 100644
index 00000000000..a091db24a16
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.tex b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.tex
new file mode 100644
index 00000000000..27f7a8b32e4
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-rubans/pst-rubans-doc.tex
@@ -0,0 +1,340 @@
+%% $Id: pst-rubans-doc.tex 511 2011-06-06 15:39:40Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,
+ smallheadings, headexclude,footexclude,oneside]{pst-doc}
+\usepackage[latin9]{inputenc}
+\usepackage{pst-rubans}
+\let\pstRubansFV\fileversion
+\renewcommand\bgImage{%
+%\begin{pspicture}(-10,0)(0,0.2)
+%\pshelices[lightsrc=30 5 17,incolor=yellow!50,R=0.3,h=12,spires=10,dZ=0.2,RotX=90,viewpoint=100 45 0,resolution=180,Decran=100]%
+%\end{pspicture}
+\psset{viewpoint=20 20 70 rtp2xyz,Decran=20,lightsrc=viewpoint,resolution=360}
+\psset{unit=0.6}
+\begin{pspicture}(-5,-5)(5,5)
+\psSpiralRing[incolor=yellow!50,
+ r1=4,r0=1,hue=0 1]%
+\end{pspicture}
+}
+\lstset{pos=l,wide=false,language=PSTricks,
+ morekeywords={psSpiralRing},basicstyle=\footnotesize\ttfamily}
+%
+\begin{document}
+
+\title{\texttt{pst-rubans}}
+\subtitle{Plotting 3D bands -- an extension of \nxLPack{pst-solides3d}; v.\pstRubansFV}
+\author{Manuel Luque\\Herbert Vo\ss}
+\docauthor{}
+\date{\today}
+\maketitle
+
+\tableofcontents
+
+\clearpage
+
+
+\section{introduction}
+\LPack{pst-rubans} est une extension de \LPack{pst-solides3d} qui permet de tracer des rubans sur
+certains solides de révolution : cylindre, tore, sphère, paraboloïde et cône. La largeur du ruban,
+le nombre de spires, la couleur de la face externe ainsi que celle de la face interne peuvent
+être paramétrées. Dans le cas des hélices circulaire et conique, on peut aussi choisir le nombre de rubans.
+
+\section{Ruban enroulé autour d'un cylindre}
+On peut paramétrer le rayon \LKeyword{R=2}, la hauteur \LKeyword{h=6}, l'épaisseur(ou largeur) du
+ruban \LKeyword{dZ=0.5}, le nombre de spires \LKeyword{spires=10} de chaque hélice, le nombre de
+rubans \LKeyword{rubans=1}, le nombre d'éléments par ruban \LKeyword{resolution=36}, la couleur
+de l'intérieur et de l'extérieur du ruban.
+
+La base et le couvercle ne font pas partie de la commande.
+\subsection{Nombre de rubans \nxLkeyword{rubans=1}}
+
+\begin{BDef}
+\Lcs{pshelices}\OptArgs\OptArg*{\Largr{$x_0,y_0,z_0$}}
+\end{BDef}
+
+
+
+{\psset{lightsrc=viewpoint,viewpoint=50 45 30 rtp2xyz,Decran=50,dZ=0.2,resolution=72,spires=2,unit=0.5}
+\begin{LTXexample}[pos=l,width=4cm]
+\begin{pspicture}(-2,-1)(2,7)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,-0.2)
+\pshelices[incolor=yellow!50,R=1.5,h=6,hue=0 1,grid](0,0,0)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,6)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Nombre de rubans \nxLkeyword{rubans=2}, nombre de spires \nxLkeyword{spires=2}}
+\begin{LTXexample}[pos=l,width=4cm]
+\begin{pspicture}(-2,-1)(2,7)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,-0.2)
+\pshelices[incolor=yellow!50,R=1.5,h=6,hue=0 1,rubans=2,grid](0,0,0)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,6)
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+\subsection{Nombre de rubans \nxLkeyword{rubans=3}, nombre de spires \nxLkeyword{spires=2}}
+\begin{LTXexample}[pos=l,width=4cm]
+\begin{pspicture}(-2,-1)(2,7)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,-0.2)
+\pshelices[incolor=yellow!50,R=1.5,h=6,hue=0 1,rubans=3,grid](0,0,0)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,6)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Nombre de rubans \nxLkeyword{rubans=4}, nombre de spires \nxLkeyword{spires=2}}
+\begin{LTXexample}[pos=l,width=4cm]
+\begin{pspicture}(-2,-1)(2,7)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,-0.2)%
+\pshelices[incolor=yellow!50,R=1.5,h=6,hue=0 1,rubans=4,grid](0,0,0)
+\psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36](0,0,6)%
+\end{pspicture}
+\end{LTXexample}
+}
+
+\subsection{Nombre de rubans \nxLkeyword{rubans=4}, on fait varier la hauteur \texttt{[h=2,3,4,5]}}
+
+\begin{LTXexample}[pos=t,wide]
+\psset{lightsrc=30 5 17,viewpoint=50 45 10,Decran=50,resolution=90,spires=2}
+\multido{\nH=2+1}{4}{%
+ \begin{pspicture}(-1.5,-1)(1.5,4)
+ \psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36,grid](0,0,-0.2)%
+ \pshelices[incolor=yellow!50,R=1.5,h=\nH,linewidth=0.5\pslinewidth,dZ=0.15,hue=0 1,rubans=4,grid](0,0,0)
+ \psSolid[object=cylindre,r=1.5,h=0.2,ngrid=1 36,grid](0,0,\nH\space dz add)%
+ \end{pspicture}}
+\end{LTXexample}
+
+\clearpage
+\subsection{Rubans disposés sur un plan}
+
+\begin{LTXexample}[width=8cm,preset=\centering]
+\psset{lightsrc=30 5 17,Decran=50,resolution=90,spires=2}
+\begin{pspicture}(-4,-1)(4,4)
+\psset{R=1,h=2,dZ=0.2,linewidth=0.5\pslinewidth,viewpoint=50 60 10}
+\psSolid[object=grille,base=-5 5 -5 5]%
+\psSolid[object=cylindre,r=1,h=0.2,ngrid=1 36](-3,-3,0)
+\psSolid[object=cylindre,r=1,h=0.2,ngrid=1 36](-3,3,0)
+\psSolid[object=cylindre,r=1,h=0.2,ngrid=1 36](3,3,0)
+\psSolid[object=cylindre,r=1,h=0.2,ngrid=1 36](3,-3,0)
+\pshelices[incolor=red!50,rubans=2](-3,-3,0.2)
+\pshelices[incolor=yellow!50,rubans=2](-3,3,0.2)
+\pshelices[incolor=green!50,rubans=2](3,3,0.2)
+\pshelices[incolor=gray!50,rubans=2](3,-3,0.2)
+\end{pspicture}
+\end{LTXexample}
+
+\section{Ruban enroulé autour d'un tore}
+
+\begin{BDef}
+\Lcs{psSpiralRing}\OptArgs\OptArg*{\Largr{$x_0,y_0,z_0$}}
+\end{BDef}
+
+%\begin{lstlisting}
+%\psSpiralRing[incolor=yellow!50,r1=4,r0=1,hue,lightsrc=30 5 17](x,y,z)
+%\end{lstlisting}
+
+On peut paramétrer le rayon moyen \LKeyword{r1=2}, le rayon intérieur \LKeyword{r0=1},
+l'épaisseur du ruban \LKeyword{dPHI=2}, en degrés suivant la latitude, le nombre de
+spires \LKeyword{spires=10}
+du ruban, le nombre de brins du ruban \LKeyword{resolution=36}, la couleur de
+l'intérieur et de l'extérieur du ruban.
+{
+\psset{viewpoint=20 20 70 rtp2xyz,Decran=20,lightsrc=viewpoint,resolution=360}
+\begin{LTXexample}[pos=l,width=7.5cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psSpiralRing[incolor=yellow!50,
+ r1=4,r0=1,hue=0 1]%
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=l,width=7.5cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psframe*(-5,-5)(5,5)
+\psSpiralRing[incolor=yellow!20,r1=4,r0=1,
+ fillcolor=orange,grid,
+ dPHI=10,spires=5]%
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=l,width=7.5cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psSpiralRing[r1=4,r0=1,fillcolor=blue,
+ incolor=gray!50,grid,
+ dPHI=2,spires=20,
+ resolution=720]%
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=l,width=7.5cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psSolid[object=tore,r0=1,r1=4,action=draw*,ngrid=18 36]%
+\defFunction[algebraic]{solenoidetorique}(t){(4+cos(10*t))*cos(t)}{(4+cos(10*t))*sin(t)}{sin(10*t)}
+\psSolid[object=courbe,linecolor=blue,r=0,
+ resolution=720,range=0 2 pi mul,
+ function=solenoidetorique]%
+\end{pspicture}
+\end{LTXexample}
+}
+\section{Ruban enroulé autour d'un paraboloïde}
+
+\begin{BDef}
+\Lcs{psSpiralParaboloid}\OptArgs\OptArg*{\Largr{$x_0,y_0,z_0$}}
+\end{BDef}
+
+On peut paramétrer la hauteur du paraboloïde \LKeyword{h=6}, l'épaisseur du ruban
+\LKeyword{dz=.25}, le nombre de spires \LKeyword{spires=10}
+du ruban, le nombre de brins du ruban \LKeyword{resolution=36}, le paramètre de la
+parabole \LKeyword{p=2}, la couleur de l'intérieur et de l'extérieur du ruban.
+
+\begin{LTXexample}[wide,preset=\centering]
+\psset{lightsrc=40 25 17}
+\psset{unit=0.75,viewpoint=50 30 20,Decran=50}
+\begin{pspicture}(-7,-3)(7,8)
+\psSpiralParaboloid[incolor=yellow!50,h=6,hue=0 1,resolution=360,spires=5,grid,dZ=0.5]
+\gridIIID[QZ=3,Zmin=0,Zmax=6](-5,5)(-5,5)
+\end{pspicture}
+\end{LTXexample}
+
+
+{\psset{lightsrc=40 25 17,viewpoint=50 30 20,Decran=50}
+\begin{LTXexample}[pos=l,width=9cm,wide]
+\psset{unit=0.60}
+\begin{pspicture}(-5,-4)(5,9)
+\defFunction[algebraic]{spiraleparabolique}(t)
+ {2*(sqrt(t))*cos(10*t)}{2*(sqrt(t))*sin(10*t)}{t}
+\psSolid[object=courbe,linecolor=blue,r=0,
+ resolution=720,range=0 6,
+ function=spiraleparabolique]%
+\gridIIID[QZ=3,Zmin=0,Zmax=6](-5,5)(-5,5)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=l,width=9cm,wide]
+\psset{unit=0.60}
+\begin{pspicture}(-7,-4)(7,9)
+\psSpiralParaboloid[incolor=yellow!50,
+ h=6,hue=0 1,
+ resolution=360,
+ dZ=0.25]
+\gridIIID[QZ=3,Zmin=0,Zmax=6](-5,5)(-5,5)
+\end{pspicture}
+\end{LTXexample}
+}
+\section{Ruban enroulé autour d'une sphère}
+
+\begin{BDef}
+\Lcs{psSphericalSpiral}\OptArgs\OptArg*{\Largr{$x_0,y_0,z_0$}}
+\end{BDef}
+
+%\begin{lstlisting}
+%\psSphericalSpiral[incolor=yellow!50,R=4,hue=0 1,dPHI=2,spires=10](x,y,z)
+%\end{lstlisting}
+
+On peut paramétrer le rayon \LKeyword{R=2}, l'épaisseur du ruban
+\LKeyword{dPHI=2}, en degrés suivant la latitude, le nombre de spires \LKeyword{spires=10}
+de chaque hélice, le nombre de brins du ruban \LKeyword{resolution=36},
+la couleur de l'intérieur et de l'extérieur du ruban.
+
+\psset{viewpoint=50 20 10,Decran=50,resolution=180}
+\begin{LTXexample}[width=9cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\defFunction[algebraic]{helicespherique}(t){4*cos(10*t)*cos(t)}{4*sin(10*t)*cos(t)}{4*sin(t)}
+\psSolid[object=courbe,linecolor=blue,r=0,
+ resolution=720,range=pi 2 div neg pi 2 div,
+ function=helicespherique]%
+\psSolid[object=sphere,r=4,action=draw,ngrid=18 18]%
+\gridIIID[Zmin=-4,Zmax=4](-4,4)(-4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=9cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psset{viewpoint=50 20 10,Decran=50,resolution=180}
+\psSphericalSpiral[incolor=yellow!50,R=4,hue=0 1,lightsrc=30 5 17]%
+\gridIIID[Zmin=-4,Zmax=4](-4,4)(-4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=9cm]
+\psset{unit=0.75}
+\begin{pspicture}(-5,-5)(5,5)
+\psframe*(-5,-5)(5,5)
+\psset{viewpoint=50 20 30,Decran=50,resolution=360}
+\psSphericalSpiral[incolor=yellow!20,R=4,fillcolor=orange,lightsrc=40 15 25,grid,dPHI=10](0,0,0)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=9cm]
+\begin{pspicture}(-4,-4)(4,4)
+\psframe*(-4,-4)(4,4)
+\psset{unit=0.6}
+\psset{viewpoint=50 20 10,Decran=50,resolution=360}
+\psSphericalSpiral[incolor=yellow!50,R=4,fillcolor=green!50,lightsrc=32 38 -10,grid]
+\white%
+\gridIIID[Zmin=-4,Zmax=4,linecolor=white](-4,4)(-4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\section{Rubans enroulés autour d'un cône}
+
+\begin{BDef}
+\Lcs{psSpiralCone}\OptArgs\OptArg*{\Largr{$x_0,y_0,z_0$}}
+\end{BDef}
+
+
+
+On peut paramétrer le rayon \LKeyword{R=2}, la hauteur \LKeyword{h=6}:
+il s'agit d'un double cône vertical, l'épaisseur(ou largeur) du ruban
+\LKeyword{dZ=0.5}, le nombre de spires \LKeyword{spires=10} de chaque hélice,
+le nombre de rubans \LKeyword{rubans=1}, le nombre d'éléments par ruban
+\LKeyword{resolution=36}, la couleur de l'intérieur et de l'extérieur du ruban.
+
+\psset{unit=0.75}
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-7,-7)(7,9)
+\psset{viewpoint=50 20 10 rtp2xyz,Decran=50,lightsrc=viewpoint,spires=10}
+\psSolid[object=cone,
+ h=5,r=4,mode=4,
+ action=draw](0,0,-5)
+\psSolid[object=cone,RotX=180,
+ h=5,r=4,mode=4,
+ action=draw](0,0,5)
+\psSpiralCone[incolor=yellow!50,h=10,hue=0 1,resolution=360,dZ=0.25,grid]%
+\gridIIID[Zmin=-5,Zmax=5,planmarks=true](-4,4)(-4,4)
+\end{pspicture}
+\end{LTXexample}
+
+\psset{unit=0.75}
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-7,-8)(7,9)
+\psframe*(-7,-8)(7,9)
+\psset{viewpoint=50 20 30 rtp2xyz,Decran=50,lightsrc=viewpoint,spires=10,rubans=4}
+\psSpiralCone[incolor=yellow!50,h=10,R=5,fillcolor=green!50,resolution=720,dZ=0.1,grid]%
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\clearpage
+\section{List of all optional arguments for \texttt{pst-ruban}}
+
+\xkvview{family=pst-rubans,columns={key,type,default}}
+
+
+\bgroup
+\nocite{*}
+\raggedright
+\bibliographystyle{plain}
+\bibliography{\jobname}
+\egroup
+
+\printindex
+
+
+\end{document}
diff --git a/Master/texmf-dist/source/generic/pst-rubans/Makefile b/Master/texmf-dist/source/generic/pst-rubans/Makefile
new file mode 100644
index 00000000000..df0871f3503
--- /dev/null
+++ b/Master/texmf-dist/source/generic/pst-rubans/Makefile
@@ -0,0 +1,73 @@
+
+# `Makefile' for `pst-rubans.pdf', hv, 2006/08/11
+
+.SUFFIXES : .tex .ltx .dvi .ps .pdf .eps
+
+PACKAGE = pst-rubans
+
+MAIN = $(PACKAGE)-doc
+
+LATEX = latex
+
+ARCHNAME = $(MAIN)-$(shell date +%y%m%d)
+
+ARCHFILES = $(PACKAGE).sty $(PACKAGE).tex $(PACKAGE).pro $(MAIN).tex README Changes Makefile
+
+TDS = ~/PSTricks/PSTricks-TDS
+
+all : doc clean
+#tds
+
+doc: $(MAIN).pdf
+
+$(MAIN).pdf : $(MAIN).ps
+ GS_OPTIONS=-dAutoRotatePages=/None ps2pdf $<
+
+$(MAIN).ps : $(MAIN).dvi
+ dvips $<
+
+$(MAIN).dvi : $(MAIN).tex
+ $(LATEX) $<
+ $(LATEX) $<
+ if ! test -f $(basename $<).glo ; then touch $(basename $<).glo; fi
+ if ! test -f $(basename $<).idx ; then touch $(basename $<).idx; fi
+ makeindex -s gglo.ist -t $(basename $<).glg -o $(basename $<).gls \
+ $(basename $<).glo
+ makeindex -t $(basename $<).ilg -o $(basename $<).ind \
+ $(basename $<).idx
+ bibtex $(basename $<)
+ $(LATEX) $<
+ $(LATEX) $<
+
+clean :
+ $(RM) $(addprefix $(MAIN), .log .aux .blg .bbl .glg .glo .gls .ilg .idx .ind .tmp .toc .out )
+ $(RM) $(addprefix $(MAIN), .dvi .ps)
+
+veryclean : clean
+ $(RM) $(addprefix $(MAIN), .pdf .bbl .blg)
+
+arch :
+ zip $(ARCHNAME).zip $(ARCHFILES)
+
+tds:
+ cp -u $(PACKAGE).sty ~/Links/texmf-local-latex/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/doc/generic/$(PACKAGE)/
+ cp -u README $(TDS)/doc/generic/$(PACKAGE)/
+ cp -u $(MAIN).pdf $(TDS)/doc/generic/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/tex/latex/$(PACKAGE)/
+ cp -u $(PACKAGE).sty $(TDS)/tex/latex/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/tex/generic/$(PACKAGE)/
+ cp -u $(PACKAGE).tex $(TDS)/tex/generic/$(PACKAGE)/
+#
+# cp -u Changes $(TDS)/dvips/$(PACKAGE)/
+# cp -u *.pro $(TDS)/dvips/$(PACKAGE)/
+#
+ cp -u Changes $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).tex $(TDS)/source/$(PACKAGE)/
+ cp -u $(MAIN).bib $(TDS)/source/$(PACKAGE)/
+ cp -u Makefile $(TDS)/source/$(PACKAGE)/
+
+# EOF
diff --git a/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex b/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex
new file mode 100644
index 00000000000..69861418c98
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-rubans/pst-rubans.tex
@@ -0,0 +1,353 @@
+%% Package `pst-rubans.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:
+%% `pst-rubans' is a PSTricks package for
+%% drawing 3 dimensional bands.
+%%
+%%
+%% Authors : Manuel Luque <Manuel.Luque27@gmail.com>
+%% Herbert Voss <hvoss@tug.org>
+%%
+\csname PSTRubansLoaded\endcsname
+\let\PSTRubansLoaded\endinput
+%
+% Require PSTricks and pst-solides3d
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTGradLoaded\endinput \else\input pst-solides3d.tex\fi
+\ifx\PSTXKeyLoaded\endinput \else\input pst-xkey.tex\fi
+%
+\def\fileversion{1.2}
+\def\filedate{2011/02/10}
+%
+\message{`PST-Rubans' v\fileversion, \filedate\space (ML/CJ/DG/HV)}
+\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
+%
+\pst@addfams{pst-rubans}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Definition des differentes variables pour PSTricks
+%% ruban en helice circulaire
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\define@key[psset]{pst-rubans}{dZ}{\def\pst@rubans@dZ{#1}} % hauteur du ruban
+\psset[pst-rubans]{dZ=0.5} % hauteur du ruban
+\define@key[psset]{pst-rubans}{spires}{\def\pst@rubans@spires{#1}} %
+\psset[pst-rubans]{spires=10} % nombre de spires d'un ruban
+\define@key[psset]{pst-rubans}{rubans}{\def\pst@rubans@rubans{#1}} %
+\psset[pst-rubans]{rubans=1} % nombre de spires d'un ruban
+
+\def\pshelices{\pst@object{pshelices}}
+%% usage : \pshelices[options](x,y,z)
+\def\pshelices@i{\@ifnextchar({\pshelices@ii}{\pshelices@ii(0,0,0)}}
+\def\pshelices@ii(#1,#2,#3){%
+ \pst@killglue%
+ \begingroup%
+ \use@par%
+\pstVerb{
+/dz \pst@rubans@dZ\space def
+/initvar_SpiralHelice {
+ /rubans \pst@rubans@rubans\space def
+ /phase {360 rubans div} bind def
+ /Rayon \pst@solides@R\space def
+ /Hauteur \pst@solides@h\space def
+ /PHI 0 def
+ /x@0 Rayon PHI cos mul def
+ /y@0 Rayon PHI sin mul def
+ /z@0 0 def
+ /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def
+ /x@1 {Rayon t@ pulsation mul 57.295 mul PHI add cos mul} def
+ /y@1 {Rayon t@ pulsation mul 57.295 mul PHI add sin mul} def
+ /z@1 {t@} def
+ /dA {Hauteur \pst@solides@resolution\space div} bind def
+ /tableau_des_sommets [
+ rubans {
+ dA dA Hauteur{/t@ exch def
+ x@0 y@0 z@0
+ x@1 y@1 z@1
+ x@1 y@1 z@1 dz add
+ x@0 y@0 z@0 dz add
+ /x@0 x@1 def
+ /y@0 y@1 def
+ /z@0 z@1 def
+ } for
+ /PHI PHI phase add def
+ /x@0 Rayon PHI cos mul def
+ /y@0 Rayon PHI sin mul def
+ /z@0 0 def
+ } repeat ] def
+ /Sommets {tableau_des_sommets aload pop} def
+ /NbrePoints tableau_des_sommets length 3 div cvi def
+ /Faces {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [ Ni Ni 1 add Ni 2 add Ni 3 add]
+ } for
+ } def
+ /Faces_internes {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [Ni 3 add Ni 2 add Ni 1 add Ni]
+ } for
+ } def
+} def
+initvar_SpiralHelice
+}%
+%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)%
+ \psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)%
+ \endgroup%
+ \ignorespaces%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ruban en helice torique
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key[psset]{pst-rubans}{dPHI}{\def\pst@rubans@dPHI{#1}} % hauteur du ruban
+\psset[pst-rubans]{dPHI=5} % hauteur du ruban en degrés
+
+\def\psSpiralRing{\pst@object{psSpiralRing}}
+%% usage : \psSpiralRing[options]
+\def\psSpiralRing@i{\@ifnextchar({\psSpiralRing@ii}{\psSpiralRing@ii(0,0,0)}}
+\def\psSpiralRing@ii(#1,#2,#3){%
+% \pst@killglue%
+ \begingroup%
+ \use@par%
+ \pstVerb{%
+ /ri \pst@solides@rO\space def % rayon intérieur
+ /rm \pst@solides@rI\space def % rayon moyen
+ /spires \pst@rubans@spires\space def
+ /dPHI \pst@rubans@dPHI\space def
+ /initvar_SpiralRing {
+ /THETA {PHI spires 2 mul mul} def
+ /x@ {rm ri THETA cos mul add PHI cos mul} def
+ /y@ {rm ri THETA cos mul add PHI sin mul} def
+ /z@ {ri THETA sin mul} def
+ /dt@ {360 \pst@solides@resolution\space div} bind def
+ /PHI 0 def
+ /tableau_des_sommets [
+ 0 dt@ 360 dt@ sub{/t@ exch def
+ /PHI t@ def /THETA0 THETA def
+ x@ y@ z@
+ /PHI t@ dt@ add def /THETA1 THETA def
+ x@ y@ z@ %/x1 x def /y1 y def /z1 z def % S2
+ /PHI PHI dPHI add def
+ rm ri THETA1 cos mul add PHI cos mul
+ rm ri THETA1 cos mul add PHI sin mul
+ ri THETA1 sin mul % S3
+ /PHI PHI dt@ sub def
+ rm ri THETA0 cos mul add PHI cos mul
+ rm ri THETA0 cos mul add PHI sin mul
+ ri THETA0 sin mul % S4
+ } for
+ ]
+ def
+ /Sommets {tableau_des_sommets aload pop} def
+ /NbrePoints tableau_des_sommets length 3 div cvi def
+ /Faces_internes {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [ Ni Ni 1 add Ni 2 add Ni 3 add]
+ } for
+ } def
+ /Faces {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [Ni 3 add Ni 2 add Ni 1 add Ni]
+ } for
+ } def
+} def
+initvar_SpiralRing
+}%
+%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)%
+\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)%
+ \endgroup%
+ \ignorespaces}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ruban en helice spherique
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\def\psSphericalSpiral{\pst@object{psSphericalSpiral}}
+%% usage : \psSphericalSpiral[options]
+\def\psSphericalSpiral@i{\@ifnextchar({\psSphericalSpiral@ii}{\psSphericalSpiral@ii(0,0,0)}}
+\def\psSphericalSpiral@ii(#1,#2,#3){%
+ \pst@killglue%
+ \begingroup%
+ \use@par%
+\pstVerb{%
+/initvar_SpiralSpherical {
+ /Rayon \pst@solides@R\space def
+ /spires \pst@rubans@spires\space def
+ /dPHI \pst@rubans@dPHI\space def
+ /THETA {PHI spires 2 mul mul} def
+ /x@ {Rayon THETA cos mul PHI cos mul} def
+ /y@ {Rayon THETA sin mul PHI cos mul} def
+ /z@ {Rayon PHI sin mul} def
+ /dt@ {180 \pst@solides@resolution\space div} bind def
+ /PHI -90 def
+ x@ y@ z@ /x0 x@ def /y0 y@ def /z0 z@ def % S1
+ /tableau_des_sommets [
+ -90 dt@ 90 dPHI sub{/t@ exch def
+ /PHI t@ def /THETA0 THETA def
+ x@ y@ z@
+ /PHI t@ dt@ add def /THETA1 THETA def
+ x@ y@ z@ %/x1 x def /y1 y def /z1 z def % S2
+ /PHI PHI dPHI add def
+% x1 y1 z % S3
+ Rayon THETA1 cos mul PHI cos mul
+ Rayon THETA1 sin mul PHI cos mul
+ z@
+ /PHI PHI dt@ sub def
+ Rayon THETA0 cos mul PHI cos mul
+ Rayon THETA0 sin mul PHI cos mul
+ z@ % S4
+ } for
+ ]
+ def
+ /Sommets {tableau_des_sommets aload pop} def
+ /NbrePoints tableau_des_sommets length 3 div cvi def
+ /Faces {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [ Ni Ni 1 add Ni 2 add Ni 3 add]
+ } for
+ } def
+ /Faces_internes {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [Ni 3 add Ni 2 add Ni 1 add Ni]
+ } for
+ } def
+} def
+initvar_SpiralSpherical
+}%
+%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)%
+\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)%
+ \endgroup%
+ \ignorespaces%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ruban en helice sur un paraboloide
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\define@key[psset]{pst-rubans}{p}{\def\pst@rubans@p{#1}} % parametre de la parabole
+\psset[pst-rubans]{p=2}
+
+\def\psSpiralParaboloid{\pst@object{psSpiralParaboloid}}
+%% usage : \psSpiralParaboloid[options]
+\def\psSpiralParaboloid@i{\@ifnextchar({\psSpiralParaboloid@ii}{\psSpiralParaboloid@ii(0,0,0)}}
+\def\psSpiralParaboloid@ii(#1,#2,#3){%
+% \pst@killglue%
+ \begingroup%
+ \use@par%
+\pstVerb{%
+ /dz@ \pst@rubans@dZ\space def % hauteur du ruban
+ /p@ {\pst@rubans@p\space 2 mul} bind def % paramètre de la parabole x 2
+ /Hauteur \pst@solides@h\space def
+/initvar_SpiralParaboloid {
+ /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def
+ /x@ {z@ p@ mul sqrt t@ pulsation mul 57.295 mul cos mul} def
+ /y@ {z@ p@ mul sqrt t@ pulsation mul 57.295 mul sin mul} def
+ /dH {Hauteur \pst@solides@resolution\space div} bind def
+ /tableau_des_sommets [
+ 0 dH Hauteur {/H@ exch def
+ /z@ H@ def
+ /t@ H@ def
+ x@ y@ z@ % S1
+ /t@ t@ dH add def
+ /z@ t@ def
+ x@ y@ z@ % S2
+ /z@ z@ dz@ add def
+ x@ y@ z@ % S3
+ /z@ H@ dz@ add def
+ /t@ H@ def
+ x@ y@ z@ % S4
+ } for
+ ]
+ def
+ /Sommets {tableau_des_sommets aload pop} def
+ /NbrePoints tableau_des_sommets length 3 div cvi def
+ /Faces {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [ Ni Ni 1 add Ni 2 add Ni 3 add]
+ } for
+ } def
+ /Faces_internes {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [Ni 3 add Ni 2 add Ni 1 add Ni]
+ } for
+ } def
+} def
+initvar_SpiralParaboloid
+}%
+%\psSolid[object=new,sommets=Sommets,fillcolor=\psincolor,faces={Faces_internes}](#1,#2,#3)%
+\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)%
+ \endgroup%
+ \ignorespaces%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\psSpiralCone{\pst@object{psSpiralCone}}
+%% usage : \psSpiralCone[options](x,y,z)
+\def\psSpiralCone@i{\@ifnextchar({\psSpiralCone@ii}{\psSpiralCone@ii(0,0,0)}}
+\def\psSpiralCone@ii(#1,#2,#3){%
+ \begingroup%
+ \use@par%
+\pstVerb{/dz \pst@rubans@dZ\space def
+/initvar_SpiralHelice_Conique {
+ /rubans \pst@rubans@rubans\space def
+ /phase {360 rubans div} bind def
+ /Rayon \pst@solides@R\space def
+ /Hauteur \pst@solides@h\space def
+ /PHI 0 def
+ /t@0 Hauteur 2 div neg def
+ /x@0 Rayon Hauteur 2 div div t@0 mul PHI cos mul def
+ /y@0 Rayon Hauteur 2 div div t@0 mul PHI sin mul def
+ /z@0 t@0 def
+ /pulsation {6.28319 Hauteur div \pst@rubans@spires\space mul} bind def
+ /x@1 {Rayon Hauteur 2 div div t@ mul t@ pulsation mul 57.295 mul PHI add cos mul} def
+ /y@1 {Rayon Hauteur 2 div div t@ mul t@ pulsation mul 57.295 mul PHI add sin mul} def
+ /z@1 {t@} def
+ /dA {Hauteur \pst@solides@resolution\space div} bind def
+ /tableau_des_sommets [
+ rubans {
+ Hauteur 2 div neg dA Hauteur 2 div {/t@ exch def
+ t@ abs dA gt {
+ x@0 y@0 z@0 % S0
+ x@1 y@1 z@1 % S1
+ /COEFF z@1 dz add z@1 div def
+ x@1 COEFF mul y@1 COEFF mul z@1 dz add % S2
+ x@0 COEFF mul y@0 COEFF mul z@0 dz add % S3
+ /x@0 x@1 def
+ /y@0 y@1 def
+ /z@0 z@1 def
+ } if
+ } for
+ /PHI PHI phase add def
+ /t@0 Hauteur 2 div neg def
+ /x@0 Rayon Hauteur 2 div div t@0 mul PHI cos mul def
+ /y@0 Rayon Hauteur 2 div div t@0 mul PHI sin mul def
+ /z@0 t@0 def
+ } repeat
+ ]
+ def
+ /Sommets {tableau_des_sommets aload pop} def
+ /NbrePoints tableau_des_sommets length 3 div cvi def
+ /Faces {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [ Ni Ni 1 add Ni 2 add Ni 3 add]
+ } for
+ } def
+ /Faces_internes {0 4 NbrePoints 4 sub {
+ /Ni exch def
+ [Ni 3 add Ni 2 add Ni 1 add Ni]
+ } for
+ } def
+} def
+initvar_SpiralHelice_Conique
+}%
+\psSolid[object=new,sommets=Sommets,faces={Faces},hollow](#1,#2,#3)%
+ \endgroup%
+ \ignorespaces%
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\@=\PstAtCode\relax
+\endinput
diff --git a/Master/texmf-dist/tex/latex/pst-rubans/pst-rubans.sty b/Master/texmf-dist/tex/latex/pst-rubans/pst-rubans.sty
new file mode 100644
index 00000000000..506b0cb4f3f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/pst-rubans/pst-rubans.sty
@@ -0,0 +1,24 @@
+% $Id: pst-rubans.sty 511 2011-06-06 15:39:40Z herbert $
+%%
+%% This is file `pst-plot.sty'.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% pst-rubans.sty Copyright (C) 2004-2011 Herbert Voss <hvoss@tug.org>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+%NeedsTeXFormat{LaTeX2e}
+
+\ProvidesPackage{pst-rubans}
+ [2011/06/05 v1.00 LaTeX wrapper for `pst-rubans' (HV)]
+%
+\RequirePackage{pstricks}
+\ProvidesPackage{pst-rubans}[2007/12/04 package wrapper for
+ pst-rubans]
+\input{pst-rubans.tex}
+\ProvidesFile{pst-rubans.tex}
+ [\filedate\space v\fileversion\space `PST-rubans']
+\endinput
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 345f9ee7d0a..3446bc3113d 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -301,7 +301,7 @@ my @TLP_working = qw(
pst-lens pst-light3d pst-magneticfield pst-math pst-mirror pst-node
pst-ob3d pst-optexp pst-optic
pst-osci pst-pad pst-pdgr pst-platon pst-plot pst-poly pst-pdf
- pst-qtree
+ pst-qtree pst-rubans
pst-sigsys pst-solides3d pst-soroban pst-spectra
pst-slpe pst-stru pst-support pst-text pst-thick pst-tree pst-tvz pst-uml
pst-vowel pst-vue3d
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds
index 5b50b28ac44..b054f560bea 100755
--- a/Master/tlpkg/libexec/ctan2tds
+++ b/Master/tlpkg/libexec/ctan2tds
@@ -690,6 +690,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`);
'pst-plot', "&MAKEpst",
'pst-poly', "&MAKEpst",
'pst-qtree', "&MAKEpst",
+ 'pst-rubans', "&MAKEpst",
'pst-sigsys', "&MAKEpst",
'pst-slpe', "&MAKEpst",
'pst-solides3d',"&MAKEpst",
diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
index e0155bb3a40..fba654f3915 100644
--- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc
@@ -58,6 +58,7 @@ depend pst-platon
depend pst-plot
depend pst-poly
depend pst-qtree
+depend pst-rubans
depend pst-sigsys
depend pst-slpe
depend pst-spectra
diff --git a/Master/tlpkg/tlpsrc/pst-rubans.tlpsrc b/Master/tlpkg/tlpsrc/pst-rubans.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/pst-rubans.tlpsrc