diff options
Diffstat (limited to 'Master')
22 files changed, 998 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/Changes b/Master/texmf-dist/doc/generic/pst-spirograph/Changes new file mode 100644 index 00000000000..1173d0e22e4 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/Changes @@ -0,0 +1,11 @@ +----- pst-spirograph.tex +0.40 2014-08-18 - first CTAN version (hv) + + +----- pst-spirograph.pro +0.40 2014-08-18 - first CTAN version (hv) + + +----- pst-spirograph.sty +0.40 2014-08-18 - first CTAN version (hv) + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/README b/Master/texmf-dist/doc/generic/pst-spirograph/README new file mode 100644 index 00000000000..0a01494a04d --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/README @@ -0,0 +1,15 @@ +This version of pst-spirograph uses the xkeyval package, the extended +version of keyval. + +Save the files pst-spirograph.sty|.tex| in a directory, which is part of your +local TeX node. Then do not forget to run texhash to update this node +if these packages are new to your TeX distribution. +For more information see the documentation of your LaTeX distribution +on installing packages into your LaTeX distribution or the +TeX Frequently Asked Questions: +(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages). + +pst-spirograph needs pstricks, which should be part of your +local TeX installation, otherwise get it from a CTAN server, f.ex. +http://mirror.ctan.org/graphics/pstricks/ + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim b/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim new file mode 100644 index 00000000000..333ea8a91d0 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/README.anim @@ -0,0 +1,8 @@ +run all files with + +latex <file> +dvips <file> +ps2pdf <file>.ps + +and then view the pdf with the acrobat reader, available from Adobe +if not already installed on your current system.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex new file mode 100644 index 00000000000..9c7e611311c --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim1.tex @@ -0,0 +1,20 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{72}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex new file mode 100644 index 00000000000..caaf0254b4d --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim2.tex @@ -0,0 +1,20 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-3,-3)(3,3)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{144}{rA=0.001+30.000}{% + \psSpirograph[thetamax=\rA,Z1=41,Z2=13,m=0.1,ap=10,,curvewidth=1.5pt,holenumber=3, + linewidth=0.025,fillstyle=solid,polarangle=\rA,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex new file mode 100644 index 00000000000..2d980587c88 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim3.tex @@ -0,0 +1,20 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-4,-4)(4,4)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{72}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=88,Z2=15,m=0.08,ap=10,curvewidth=1.5pt,holenumber=6, + linewidth=0.025,fillstyle=solid,polarangle=\rA,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex new file mode 100644 index 00000000000..ca10a1911e9 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim4.tex @@ -0,0 +1,21 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{100}{rA=0.001+30.000}{% + \psSpirograph[thetamax=\rA,Z1=122,Z2=69,m=0.05,ap=10,curvewidth=1.5pt, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex new file mode 100644 index 00000000000..b6e17000375 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim5.tex @@ -0,0 +1,21 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{72}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex new file mode 100644 index 00000000000..3f8c8a3f9b5 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim6.tex @@ -0,0 +1,20 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-4.5,-4.5)(4.5,4.5)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{72}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=20,Z2=30,m=0.1,ap=10,curvewidth=1.5pt,inner=false, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex new file mode 100644 index 00000000000..34fb2d22b3b --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim7.tex @@ -0,0 +1,19 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-7,-7)(7,7)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{72}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=36,Z2=24,m=0.15,ap=20,curvecolor={[rgb]{0.875 0 0.5}},inner=false, + curvewidth=1.5pt,linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=0,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex new file mode 100644 index 00000000000..dfc25030254 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/anim8.tex @@ -0,0 +1,20 @@ +\documentclass[border=5mm]{standalone} +\usepackage{animate} +\usepackage{pst-spirograph} + +\begin{document} + +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}[showgrid=top](-7,-7)(7,7)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{74}{rA=0.001+20.000}{% + \psSpirograph[thetamax=\rA,Z1=27,Z2=12,m=0.4,curvecolor={[rgb]{0 0.25 0.5}},curvewidth=1.5pt, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=4,opacity=0.5](0,0)} +\end{animateinline} + +\end{document} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/animation/runall.sh b/Master/texmf-dist/doc/generic/pst-spirograph/animation/runall.sh new file mode 100755 index 00000000000..08fa638fb79 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/animation/runall.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set `dir -R *.tex` +for datei in *.tex +do +# rm -fr *.pdf + echo -n "Runnning file $datei ... " + FILE=`basename $datei .tex` + latex $FILE &> /dev/null + dvips $FILE &> /dev/null + ps2pdf $FILE.ps &> /dev/null + rm -fr $FILE.log $FILE.aux $FILE.ps $FILE.dvi + echo " done" +done diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.bib b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.bib new file mode 100644 index 00000000000..38c466e7d6d --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.bib @@ -0,0 +1,96 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + edition = {second}, + year = {2007}, + address = {Boston, 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, +} + +@Manual{multido, + Title = {\texttt{multido.tex} - a loop macro, that supports fixed-point addition}, + Author = {{Timothy Van} Zandt}, + Organization = {}, + Address = {\url{CTAN:/macros/generic/multido.tex}}, + Note = {}, + year = 1997 +} + +@Book{PSTricks2, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {6}, + publisher = {DANTE -- lehmanns media}, + year = {2010}, + address = {Heidelberg/Berlin} +} + + +@Book{PSTricksE, + author = {Herbert Vo\ss}, + title = {\texttt{PSTricks} -- {G}raphics for \LaTeX}, + edition = {1.}, + publisher = {UIT}, + year = {2011}, + address = {Cambridge/UK} +} + +@Book{LaTeXRef, + author = {Herbert Vo\ss}, + title = {\LaTeX\ Referenz}, + edition = {2.}, + publisher = {DANTE -- lehmanns media}, + year = {2010}, + address = {Heidelberg/Hamburg} +} +@Book{LaTeXRefE, + author = {Herbert Vo\ss}, + title = {\LaTeX\ Quick Reference}, + edition = {1.}, + publisher = {UIT}, + year = {2011}, + address = {Cambridge/UK} +} + +@Book{tbt, + author = {Victor Eijkhout}, + title = {\TeX\ by Topic -- {A} \TeX{}nician Reference}, + edition = {1}, + publisher = {DANTE -- lehmanns media}, + year = {2014}, + address = {Heidelberg/Berlin} +} + diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf Binary files differnew file mode 100644 index 00000000000..0a1dc5b7011 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.pdf diff --git a/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex new file mode 100644 index 00000000000..67982a1114e --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-spirograph/pst-spirograph-doc.tex @@ -0,0 +1,217 @@ +%% $Id: pst-spirograph-doc.tex 75 2014-08-19 18:38:05Z herbert $ +\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings + headexclude,footexclude,oneside]{pst-doc} +\usepackage[utf8]{inputenc} +\usepackage{pst-spirograph} +\let\pstFV\fileversion +\usepackage{animate} + +\def\UrlFont{\small\ttfamily} +\makeatletter +\def\verbatim@font{\small\normalfont\ttfamily} +\makeatother + +\hypersetup{pdfauthor={Manuel Luque, Herbert Voss},pdftitle={Spirograoh}} +% +\def\bgImage{\begin{pspicture}(-4,-4)(4,4) +\psSpirograph[thetamax=720,Z1=36,Z2=24,m=0.15,linewidth=0.025,ap=20,inner, + fillstyle=solid,polarangle=150,linecolor=blue,holenumber=0,opacity=0.4] +\end{pspicture}% +} + +\lstset{basicstyle=\ttfamily\footnotesize} + +\begin{document} +\author{Manuel Luque\\Herbert Vo\ss} +\docauthor{} +\date{\today} +\title{pst-spirograph \\\small v.\pstFV} +\subtitle{A PSTricks package for drawing spirograph curves} +\maketitle% + +\tableofcontents + +\begin{abstract} +\vfill\noindent +Thanks for feedback and contributions to:\\ +Uwe Ziegenhagen; +\end{abstract} + +\clearpage + +\section{Introduction} + + +\LPack{pst-spirograph} is a package to simulate the operation of a spirograph. A spirograph +is a geometric drawing toy that produces mathematical roulette curves that are technically +known as hypotrochoids and epitrochoids. +The mathematician Bruno Abakanowicz invented the spirograph between 1881 and 1900.% +\footnote{\url{http://en.wikipedia.org/wiki/Spirograph}} +It was used to calculate an area delimited by curves. +A hypotrochoid is generated by a fixed point on a circle rolling inside a fixed circle.% +\footnote{\url{http://mathworld.wolfram.com/Spirograph.html}} +It consists of a small toothed wheel rotating inside or outside a ring gear. +The weighing tile wheel has nine drilled holes numbered from 0--8, through these small holes the tip of a +pen or pencil can be put. % weighing tile??? +This causes the small wheel to rotate one or more laps around the crown and draws a hypocycloid. + +The wheel can also turn off a first fixed gear, it is thus possible to draw epicycloids . The command is written as %% turn of??? + + +\begin{BDef} +\Lcs{psSpirograph}\OptArgs\Largr{\CAny} +\end{BDef} + + +and can optionally be followed by the coordinates of the point where you wish to place the +Spirograph: \Lcs{psSpirograph}\OptArgs\Largr{x,y} which by default is centered at the origin. +The optional parameters, including default values are indicated as following: + +\begin{compactenum} +\item \LKeyset{Z1=20}: number of teeth of the wheel 1, the crown; +\item \LKeyset{Z2=10}: number of teeth of the wheel 2; +\item \LKeyset{m=0.5}: module of the gear; +\item \LKeyset{ap=20}: pressure angle in degrees, it must be reduced if the number of teeth +crown is large (if the path of the teeth will be incorrect), e.g. take \verb|Z1=120|; +\item \LKeyset{holenumber=0} : active hole number; +\item \LKeyset{polarangle=<value>}: polar angle in degrees to position the center +of the small wheel, a useful parameter for animation. +\end{compactenum} + +There are two Boolean values for the organisation of the two circles: + +\begin{compactitem} +\item \Lkeyword{circles}: to draw circles of contact (default is \texttt{false}. +\item \Lkeyword{inner}: the gear rotates inside of the crown (\texttt{true} --- default) or outside (\texttt{false}). +\end{compactitem} + + +In the drawing, the color selection wheel and the line of the curve is made with +the following setting: + + +\begin{compactenum} +\item \LKeyset{color1=\{[rgb]\{0.625 0.75 1\}\}}; +\item \LKeyset{color2=\{[rgb]\{0.75 1 0.75\}\}}; +\item \Lkeyset{curvecolor=red}; +\item \LKeyset{curvewidth=1pt}: linewidth of the hypocycloid; +\item \Lkeyset{circlescolor=red}. +\end{compactenum} + +The origin of the spirograph can be set by the coordinates $(x,y)$. If the they are missing, $(0,0)$ is assumed. +By default, the wheels are not filled with color. The color inside the wheels must be +set by the option \Lkeyset{fillStyle=solid}. + +The choice of color and line thickness contour of the wheels is made with +usual PSTricks options: \Lkeyword{linecolor} and \Lkeyword{linewidth}. +The transparency of the small wheel is adjusted with the \Lkeyword{opacity} option of PSTricks. + +The last parameter is the angle \LKeyset{thetamax=360}, which represents the rotation in degrees +the center of the small wheel around the ring, so it is a parameter to adjust, +depending on the planned route of the hypocycloid. + +%\clearpage + +\section{Examples} + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, + fillstyle=solid,polarangle=200,holenumber=0,opacity=0.3] +\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, + fillstyle=solid,polarangle=340,holenumber=3,opacity=0.3,curvecolor=blue] +\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, + fillstyle=solid,polarangle=90,holenumber=6,opacity=0.3,curvecolor=green] +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psSpirograph[thetamax=720,Z1=120,Z2=48,m=0.1,ap=10,linewidth=0.025, + fillstyle=solid,polarangle=200,holenumber=3,opacity=0.75] +\end{pspicture} +\end{LTXexample} + + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=gray!20](-7,-7)(7,7) +\psSpirograph[thetamax=720,Z1=36,Z2=24,m=0.15,linewidth=0.025,ap=20,inner=false, + fillstyle=solid,polarangle=150,linecolor=blue,holenumber=0,opacity=0.8] +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psSpirograph[thetamax=1440,Z1=27,Z2=12,m=0.4,linewidth=0.025, + curvecolor={[rgb]{0 0.25 0.5}},circles,fillstyle=solid,polarangle=30, + linecolor=blue,holenumber=0,opacity=0.75] +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=yellow!30](-7,-7)(7,7) +\psset{unit=0.5} +\psSpirograph[thetamax=-1800,Z1=108,Z2=15,m=0.2,linewidth=0.025,ap=10, + fillstyle=solid,polarangle=54,linecolor=blue,holenumber=0,opacity=0.75] +\end{pspicture} +\end{LTXexample} + + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid=top](-7,-7)(7,7) +\psframe*[linecolor=gray!20](-7,-7)(7,7) +\psSpirograph[thetamax=1800,Z1=36,Z2=30,m=0.15,linewidth=0.025,ap=20,inner=false, + fillstyle=solid,polarangle=150,linecolor=blue,holenumber=4,opacity=0.8] +\end{pspicture} +\end{LTXexample} + +\clearpage +\section{Animations} + +With package \LPack{animate} one can easily create animations: + +\begin{LTXexample}[pos=t] +\begin{animateinline}[ + width=0.9\linewidth, + begin={\begin{pspicture}(-3.5,-3.5)(3.5,3.5)}, + end={\end{pspicture}}, + palindrome,controls, +% autoplay +]{5} +\multiframe{100}{rA=0.001+30.000}{% + \psSpirograph[thetamax=\rA,Z1=59,Z2=24,m=0.1,ap=10,curvewidth=1.5pt, + linewidth=0.025,fillstyle=solid,polarangle=\rA,holenumber=5,opacity=0.5](0,0)} +\end{animateinline} +\end{LTXexample} + + +There are some more examples in the documention directory of the package. + +\clearpage + +\section{List of all optional arguments for \texttt{pst-spirograph}} + +\xkvview{family=pst-spirograph,columns={key,type,default}} + + +\bgroup +\nocite{*} +\raggedright +\bibliographystyle{plain} +\bibliography{\jobname} +\egroup + +\printindex + + + +\end{document} + diff --git a/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro new file mode 100644 index 00000000000..bdf690be00e --- /dev/null +++ b/Master/texmf-dist/dvips/pst-spirograph/pst-spirograph.pro @@ -0,0 +1,177 @@ +%% $Id: pst-spirograph.pro 75 2014-08-19 18:38:05Z herbert $ +%% +% PostScript prologue for pst-spirograph.tex. +% +% Version 0.40, 2014/08/18 +% +/tx@spirographDict 10 dict def +tx@spirographDict begin +/coorPen { + 1 dict begin + /t exch def + r2 qi t cos mul ki qi t mul 60 ni mul sub cos mul add mul cm + r2 qi t sin mul ki qi t mul 60 ni mul sub sin mul sub mul cm + end +} def +/coorPen2 { + 1 dict begin + /t exch def + r2 qi2 t cos mul ki qi2 t mul 60 ni mul neg 180 Z2 div sub sub cos mul sub mul cm + r2 qi2 t sin mul ki qi2 t mul 60 ni mul neg 180 Z2 div sub sub sin mul sub mul cm + end +} def +/Datas1 { + /Z@ exch def + /m@ exch def + /R@ {m@ Z@ mul 2 div } bind def % cercle primitif + /Rb {R@ ap cos mul } bind def % cercle de base + /Rp {R@ 2 mul 2.5 m@ mul sub 2 div } bind def % cercle de pied + /Rt {R@ 2 mul 2 m@ mul add 2 div } bind def % cercle de tête +} def +/Datas2 { + /Z@ exch def + /m@ exch def + /R@ {m@ Z@ mul 2 div } bind def % cercle primitif + /Rb {R@ ap cos mul } bind def % cercle de base + /Rp {R@ 2 mul 2 m@ mul sub 2 div } bind def % cercle de pied + /Rt {R@ 2 mul 2.5 m@ mul add 2 div } bind def % cercle de tête +} def +/Calculs { % les valeurs suivantes sont en radians + /ThetaP {R@ Rb div dup mul 1 sub sqrt } bind def % intersection avec cercle primitif + /ThetaT {Rt Rb div dup mul 1 sub sqrt } bind def % intersection avec cercle de tete + % Les valeurs suivantes ont en degrés + /ThetaTdeg {Rt Rb div dup mul 1 sub sqrt RadtoDeg } bind def % + /ThetaPdeg {R@ Rb div dup mul 1 sub sqrt RadtoDeg } bind def + /DeltaP {ThetaPdeg sin ThetaP ThetaPdeg cos mul sub + ThetaPdeg cos ThetaP ThetaPdeg sin mul add atan } bind def + /DeltaT {ThetaTdeg sin ThetaT ThetaTdeg cos mul sub + ThetaTdeg cos ThetaT ThetaTdeg sin mul add atan } bind def + /DeltaS {Pi 2 div Z@ div } bind def + /DeltaSdeg {90 Z@ div } bind def + /AngleDent {360 Z@ div} bind def + /Alpha {DeltaSdeg DeltaP add DeltaT sub } bind def + /2Beta {DeltaSdeg DeltaP add 2 mul } bind def + /Beta_ {DeltaSdeg DeltaP add neg} bind def + /ptA {Rp cm 0} bind def + /ptB {Rb cm 0} bind def + /ptC {Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add cos mul + Rp cm DeltaSdeg 2 mul neg 2Beta 2 div add sin mul} bind def + /ptA'{Rp cm DeltaP DeltaSdeg add 2 mul cos mul + Rp cm DeltaP DeltaSdeg add 2 mul sin mul} bind def + /ptB'{Rb cm DeltaP DeltaSdeg add 2 mul cos mul + Rb cm DeltaP DeltaSdeg add 2 mul sin mul} bind def + /ptC'{Rp cm DeltaSdeg 3 mul DeltaP add cos mul + Rp cm DeltaSdeg 3 mul DeltaP add sin mul} bind def + /Raxe {Rp 4 div } bind def + /A@0 14.5 def % position et largeur de la clavette + % rayon de raccordement sur le cercle de pied + /Rarct {Rp Pi mul Z@ div 12 div cm} bind def +} def +% Le symetrique P' de P par rapport a la l'axe de la dent +% Delta(axe de la dent) y=x*tan(Beta) +% x'=y*sin(2*Beta)+x*cos(2*Beta) +% y'=x*sin(2*Beta)-y*cos(2*Beta) +% x y symAxe -> x' y' +/symAxe { + 2 dict begin + /y exch def + /x exch def + y 2Beta sin mul x 2Beta cos mul add % x' + x 2Beta sin mul y 2Beta cos mul sub % y' + end +} def + % +% Rotation pour amener l'axe de la dent horizontal +% +/RotDent { + 2 dict begin + /y exch def + /x exch def + i@ cos x mul i@ sin y mul sub + i@ sin x mul i@ cos y mul add + end +} def +% developpante du cercle de base +% +/devCercle { + 1 dict begin + /t exch def % en degres + Rb t cos t DegtoRad t sin mul add mul cm % x + Rb t sin t DegtoRad t cos mul sub mul cm % y + end +} def +% trace des cercles +%%%% definition de la roue dentee %%%%%% +/Roue { +% arc de développante +/tabArcDev [ +0 1 ThetaTdeg { /i@ exch def + [i@ devCercle] } for + ] def +% +/n@ tabArcDev length def +% +/tabDent [ +% l'arc de developpante initial + tabArcDev aload pop +% l'arc ce cercle de tete +DeltaT 0.1 2Beta DeltaT sub {/i@ exch def + [Rt cm i@ cos mul + Rt cm i@ sin mul] + } for +% le symetrique de l'arc de developpante par rapport a l'axe de la dent +n@ 1 sub -1 0 { + /compteur exch def + [tabArcDev compteur get aload pop symAxe] + } for + ] def +% trace de la dent +/n2@ tabDent length def +newpath +ptC moveto +0 1 Z@ 1 sub {/i@ exch AngleDent mul def +ifinner +{ + wheel 2 eq { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } + { ptA RotDent lineto ptB RotDent lineto } ifelse +} +{ + Rp Rb eq { ptA RotDent lineto ptB RotDent lineto } + { ptA RotDent ptB RotDent Rarct arct ptB RotDent lineto } ifelse +} ifelse + 0 1 n2@ 1 sub { + /compteur exch def + tabDent compteur get aload pop + RotDent lineto } for +ifinner + {wheel 2 eq { + Rp Rb eq { + ptA' RotDent lineto ptC' RotDent lineto + }{ + ptA' RotDent ptC' RotDent Rarct arct + ptC' RotDent lineto } ifelse + } { + ptA' RotDent lineto ptC' RotDent lineto } ifelse +}{ + Rp Rb eq { + ptA' RotDent lineto ptC' RotDent lineto + }{ + ptA' RotDent ptC' RotDent Rarct arct + ptC' RotDent lineto } + ifelse +} ifelse +} for +} def +% pour l'engrenage interieur +/COURONNE { 0 0 Rt 1.1 mul cm 360 0 arcn } def +% +/untrou { + newpath + a@ THETA DegtoRad mul THETA cos mul neg + a@ THETA DegtoRad mul THETA sin mul + 0.05 cm 0 360 arc + closepath +} def +% +end +%%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex b/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex new file mode 100644 index 00000000000..57b941240e6 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-spirograph/pst-spirograph.tex @@ -0,0 +1,266 @@ +%% $Id: pst-spirograph.tex 75 2014-08-19 18:38:05Z herbert $ +%% +%% This is file `pst-spirograph.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-spirograph.tex' +%% +%% COPYRIGHT 2015 by +%% Manuel Luque +%% 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 CTAN:/macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-spirograph' is a PSTricks package to show sprograph curves +%% +%% +\csname PSTSPIROGRAPHLoaded\endcsname +\let\PSTSPIROGRAPHLoaded\endinput +% Requires some packages +\ifx\PSTricksLoaded\endinput\else \input pstricks \fi +\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi +\def\fileversion{0.40} +\def\filedate{2014/08/18} +\message{`PSTSPIROGRAPH' v\fileversion, \filedate} + +\edef\PstAtCode{\the\catcode`\@} +\catcode`\@=11\relax +\pst@addfams{pst-spirograph} +\pstheader{pst-spirograph.pro} +\define@key[psset]{pst-spirograph}{Z1}[20]{\def\psk@ZA{#1 }} +\psset[pst-spirograph]{Z1=20} +\define@key[psset]{pst-spirograph}{Z2}[10]{\def\psk@ZB{#1 }} +\psset[pst-spirograph]{Z2=10} +\define@key[psset]{pst-spirograph}{m}[0.5]{\def\psk@m{#1 }} +\psset[pst-spirograph]{m=0.5} +\define@key[psset]{pst-spirograph}{ap}[20]{\def\psk@ap{#1 }} +\psset[pst-spirograph]{ap=20} +\define@key[psset]{pst-spirograph}{polarangle}[0]{\def\psk@polarangle{#1 }} +\psset[pst-spirograph]{polarangle=0} +\define@key[psset]{pst-spirograph}{holenumber}[1]{\def\psk@holenumber{#1 }} +\psset[pst-spirograph]{holenumber=1} +\define@key[psset]{pst-spirograph}{thetamax}[360]{\def\psk@thetamax{#1 }} +\psset[pst-spirograph]{thetamax=360} +% +\define@key[psset]{pst-spirograph}{color1}[{[rgb]{0.625 0.75 1}}]{\pst@getcolor{#1}\pscolora} +\psset[pst-spirograph]{color1={[rgb]{0.625 0.75 1}}} +\define@key[psset]{pst-spirograph}{color2}[{[rgb]{0.75 1 0.75}}]{\pst@getcolor{#1}\pscolorb} +\psset[pst-spirograph]{color2={[rgb]{0.75 1 0.75}}} +\define@key[psset]{pst-spirograph}{circlescolor}[red]{\pst@getcolor{#1}\pscolorc} +\psset[pst-spirograph]{circlescolor=red} +\define@key[psset]{pst-spirograph}{curvecolor}[red]{\pst@getcolor{#1}\pscolord} +\psset[pst-spirograph]{curvecolor=red} +% +\newdimen\pscurvewidth +\define@key[psset]{pst-spirograph}{curvewidth}[1pt]{\pssetlength\pscurvewidth{#1}} +\psset[pst-spirograph]{curvewidth=1pt} +%% === Option pour dessiner le type d'engrenage --------------------- +\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{inner}[true]{} +\psset[pst-spirograph]{inner} +%% === pour dessiner cercle de base et cercle primitif +\define@boolkey[psset]{pst-spirograph}[Pst@spirograph@]{circles}[true]{} +\psset[pst-spirograph]{circles=false} +% +\def\psSpirograph{\def\pst@par{}\pst@object{psSpirograph}} +\def\psSpirograph@i{\@ifnextchar({\psSpirograph@ii}{\psSpirograph@ii(0,0)}} +\def\psSpirograph@ii(#1){% +\begin@SpecialObj +\pst@@getcoor{#1}% +\addto@pscode{ +tx@spirographDict begin +\pst@coor /t@@y ED /t@@x ED +1 setlinejoin +/cm {\pst@number\psunit mul } bind def +/Z1 \psk@ZA def +/m1 \psk@m def +/Z2 \psk@ZB def +/m2 \psk@m def +/ap \psk@ap def +/polarAngle \psk@polarangle def +/ni \psk@holenumber def % numero du trou +ni 8 ge {/ni 8 def} if +/thetamax \psk@thetamax def +/ifinner \ifPst@spirograph@inner true \else false \fi def +/ki 1 ni 9 div sub def +/r2 m1 Z2 mul 2 div def +/qi Z1 Z2 div 1 sub def +/qi2 Z1 Z2 div 1 add def +thetamax 0 le {/pas -1 def}{/pas 1 def} ifelse +/tabSpirograph [ % tableau des points de l'hypocycloide +0 pas thetamax {/i_ exch def [i_ coorPen]} for + ] def +/tabSpirograph2 [ % tableau des points de l'epicycloide +0 pas thetamax {/i_ exch def [i_ coorPen2]} for + ] def +/nPts tabSpirograph length 1 sub def +/nPts2 tabSpirograph2 length 1 sub def +/color1 {\pst@usecolor\pscolora } def +/color2 {\pst@usecolor\pscolorb } def +/circlescolor {\pst@usecolor\pscolorc } def +/curvecolor {\pst@usecolor\pscolord } def +/linecolor {\pst@usecolor\pslinecolor} def +/fillopacity \psk@opacityalpha def +% +/Circles { +gsave +[ \psk@dash\space ] 0 setdash +newpath +0 0 R@ cm 0 360 arc +closepath +circlescolor +stroke +% on ne dessine pas le cercle de base +%newpath +%0 0 Rb cm 0 360 arc +%closepath +%stroke +grestore +} def +/trous { +1 dict begin + /a@ {R@ cm 3 div 3.14159 div} bind def + gsave + positionAngular rotate + 0 60 540 {/THETA exch def + untrou + 1 setgray +/fill \tx@setTransparency /fill load def + fill + untrou + linecolor + stroke + } for + grestore + end +}def +%%% Les dessins de l'engrenage %%%%%% +%%%%%%%%%% Roue N°1 %%%%%%%%%%%%%%%%% +/Roue1{ +1 dict begin +/wheel 1 def +gsave +t@@x t@@y translate +m1 Z1 +ifinner { + Datas2 + Calculs + Beta_ rotate + Roue + COURONNE + closepath + \ifx\psk@fillstyle\relax\else color1 /fill \tx@setTransparency /fill load def fill \fi +Roue +closepath +linecolor +stroke +COURONNE +closepath +linecolor +stroke +\ifPst@spirograph@circles Circles \fi +}{ + Datas1 + Calculs + Beta_ rotate + Roue + closepath + \ifx\psk@fillstyle\relax\else color1 /fill \tx@setTransparency /fill load def fill \fi +Roue +closepath +linecolor +stroke +\ifPst@spirograph@circles Circles \fi +} ifelse +grestore +% dessin de l'hypocycloide ou de l'epicycloide +gsave +t@@x t@@y translate +\ifPst@spirograph@inner +tabSpirograph 0 get aload pop moveto +1 1 nPts {/nP exch def + tabSpirograph nP get aload pop lineto + } for +\else +tabSpirograph2 0 get aload pop moveto +1 1 nPts2 {/nP exch def + tabSpirograph2 nP get aload pop lineto + } for +\fi +curvecolor +\pst@number\pscurvewidth SLW +stroke +grestore +end +} def +Roue1 +%%%%%%%%%% Roue N°2 %%%%%%%%%%%%%%%%% +/Roue2 { +5 dict begin +/wheel 2 def +gsave +m2 Z2 Datas1 +Calculs +/a@ex m2 Z1 Z2 add mul 2 div cm def % entraxe engrenage exterieur +/a@in m2 Z1 Z2 sub mul 2 div cm def % entraxe engrenage interieur +/a@ {R@ cm 3 div 3.14159 div} bind def +\ifPst@spirograph@inner + a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate + Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate + /positionAngular 2Beta 2 div def +\else + a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate + DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate + /positionAngular Beta_ neg def +\fi +Roue +closepath +\ifx\psk@fillstyle\relax\else + color2 +/fill \tx@setTransparency /fill load def + fill +\fi +Roue +closepath +linecolor +stroke +trous +\ifPst@spirograph@circles Circles \fi +grestore +gsave +newpath +\ifPst@spirograph@inner + a@in polarAngle cos mul t@@x add a@in polarAngle sin mul t@@y add translate + Beta_ polarAngle Z1 Z2 sub Z2 div mul sub rotate + /THETA 540 ni 60 mul sub def + positionAngular rotate + a@ THETA DegtoRad mul THETA cos mul neg + a@ THETA DegtoRad mul THETA sin mul + 0.06 cm 0 360 arc + \else + a@ex polarAngle cos mul t@@x add a@ex polarAngle sin mul t@@y add translate + DeltaSdeg DeltaP add neg 180 Z2 div add 180 add polarAngle Z1 Z2 add Z2 div mul add rotate + /a@ {R@ cm 3 div 3.14159 div} bind def + /THETA 540 ni 60 mul sub def + positionAngular rotate + a@ THETA DegtoRad mul THETA cos mul neg + a@ THETA DegtoRad mul THETA sin mul + 0.06 cm 0 360 arc +\fi +closepath +curvecolor +fill +grestore + end + } def +Roue2 +end +}% +\end@SpecialObj}% % fin de la commande PSTricks +% +\catcode`\@=\PstAtCode\relax +% +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty b/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty new file mode 100644 index 00000000000..8ab82b40ead --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-spirograph/pst-spirograph.sty @@ -0,0 +1,29 @@ +% $Id: pst-spirograph.sty 73 2014-08-18 15:35:25Z herbert $ +%% +%% This is file `pst-spirograph.sty'. +%% +%% IMPORTANT NOTICE: +%% +%% pst-spirograph.sty Copyright (C) 2015 +%% Manuel Luque +%% Herbert Voß <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-spirograph} + [2014/08/18 v0.40 LaTeX wrapper for `pst-spirograph' (hv)] +% +\RequirePackage{pstricks} +\ProvidesPackage{pst-spirograph}[2014/08/18 package wrapper for pst-spirograph.tex] +\input{pst-spirograph.tex} +\ProvidesFile{pst-spirograph.tex} + [\filedate\space \fileversion\space `pst-spirograph' (ml,hv)] +\IfFileExists{pst-spirograph.pro}{% + \ProvidesFile{pst-spirograph.pro} + [2014/08/18 v. 1.14, PostScript prologue file (hv)] + \@addtofilelist{pst-spirograph.pro}}{}% +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 2353db9d36f..e422920b8b8 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -406,7 +406,8 @@ my @TLP_working = qw( pst-pad pst-pdgr pst-perspective pst-platon pst-plot pst-poly pst-pdf pst-pulley pst-qtree pst-rubans - pst-sigsys pst-slpe pst-solarsystem pst-solides3d pst-soroban pst-spectra + pst-sigsys pst-slpe pst-solarsystem pst-solides3d pst-soroban + pst-spectra 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-examples diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index f42169449b3..bbc595494af 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -857,6 +857,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'pst-solides3d', "&MAKEpst", 'pst-soroban', "&MAKEpst", 'pst-spectra', "&MAKEpst", + 'pst-spirograph', "&MAKEpst", 'pst-stru', "&MAKEpst", 'pst-support', "&MAKEpst", 'pst-text', "&MAKEpst", diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc index e2ab83864ca..92ed43badd3 100644 --- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc @@ -76,9 +76,10 @@ depend pst-rubans depend pst-sigsys depend pst-slpe depend pst-solarsystem -depend pst-spectra depend pst-solides3d depend pst-soroban +depend pst-spectra +depend pst-spirograph depend pst-stru depend pst-support depend pst-text diff --git a/Master/tlpkg/tlpsrc/pst-spirograph.tlpsrc b/Master/tlpkg/tlpsrc/pst-spirograph.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/pst-spirograph.tlpsrc |