diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/pst-poly | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-poly')
-rw-r--r-- | Master/texmf-dist/tex/generic/pst-poly/pst-poly.tex | 316 |
1 files changed, 316 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-poly/pst-poly.tex b/Master/texmf-dist/tex/generic/pst-poly/pst-poly.tex new file mode 100644 index 00000000000..43e4e714961 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-poly/pst-poly.tex @@ -0,0 +1,316 @@ +%% +%% This is file `pst-poly.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pst-poly.dtx (with options: `pst-poly') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from pst-poly.tex. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file pst-poly.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% Package `pst-poly.dtx' +%% +%% Denis Girou (CNRS/IDRIS - France) <Denis.Girou@idris.fr> +%% Herbert Voss <voss _at_ pstricks.de> +%% +%% Novermber 20, 2004 +%% +%% 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-poly' is a PSTricks package to draw easily various kinds of regular +%% or non regular polygons, with various customizations. +%% +\def\fileversion{1.60} +\def\filedate{2004/11/20} +\message{`PST-Polygon' v\fileversion, \filedate\space (DG/hv)} +\csname PSTPolygonLoaded\endcsname +\let\PSTPolygonLoaded\endinput +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi +\ifx\MultidoLoaded\endinput\else\input multido.tex\fi +\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi +\edef\PstAtCode{\the\catcode`\@} +\catcode`\@=11\relax +\pst@addfams{pst-poly} +\newif\ifPst@PstPicture +\define@key[psset]{pst-poly}{PstPicture}[true]{\@nameuse{Pst@PstPicture#1}} +\define@key[psset]{pst-poly}{PolyRotation}{\edef\PstPoly@Rotation{#1}} +\define@key[psset]{pst-poly}{PolyNbSides}{\pst@getint{#1}{\PstPoly@NbSides}} +\define@key[psset]{pst-poly}{PolyOffset}{\pst@getint{#1}{\PstPoly@Offset}} +\newdimen\PstPoly@IntermediatePointDim +\define@key[psset]{pst-poly}{PolyIntermediatePoint}{\edef\PstPoly@IntermediatePoint{#1}} +\define@key[psset]{pst-poly}{PolyName}{\edef\PstPoly@Name{#1}} +\newif\ifPstPoly@Curves +\define@key[psset]{pst-poly}{PolyCurves}[true]{\@nameuse{PstPoly@Curves#1}} +\newif\ifPstPoly@Epicycloid +\define@key[psset]{pst-poly}{PolyEpicycloid}[true]{\@nameuse{PstPoly@Epicycloid#1}} +\psset{% + PstPicture=true,PolyRotation=0,PolyNbSides=5,PolyOffset=1, + PolyIntermediatePoint=,PolyName=,PolyCurves=false,PolyEpicycloid=false} +\def\PstPolygon{\pst@ifstar{\@ifnextchar[{\PstPolygon@i}{\PstPolygon@i[]}}} +\def\PstPolygon@i[#1]{{% +\psset{#1}% +\if@star\solid@star\fi +\ifnum\PstPoly@NbSides<3 + \@pstrickserr{PolyNbSides must be greater than 2 + (and not `\PstPoly@NbSides')}{\@eha}% +\fi +\ifnum\PstPoly@NbSides>200 + \@pstrickserr{PolyNbSides must be less than 201 + (and not `\PstPoly@NbSides')}{\@eha}% +\fi +\ifnum\PstPoly@Offset<1 + \@pstrickserr{PolyOffset must be greater than 0 + (and not `\PstPoly@Offset')}{\@eha}% +\fi +\ifodd\PstPoly@Offset + \def\PstPoly@Decimal{.5}% +\else + \def\PstPoly@Decimal{}% +\fi +\SpecialCoor +\ifPst@PstPicture\pspicture(-1,-1)(1,1)\fi +\rput{\PstPoly@Rotation}(0,0){% + \degrees[\PstPoly@NbSides] + \pssetlength{\PstPoly@IntermediatePointDim}{\PstPoly@IntermediatePoint} + \ifx\PstPoly@Name\@empty + \else + \pnode(0,0){\PstPoly@Name 0} + \ifnum\psxunit=\psyunit + \def\PstPoly@Node{\pnode(1;\i)}% + \else + \def\PstPoly@Node{% + \pnode(! \i\space 360 \PstPoly@NbSides\space div mul cos + \i\space 360 \PstPoly@NbSides\space div mul sin)}% + \fi + \multido{\i=0+1}{\PstPoly@NbSides}{% + \PstPoly@Node{\PstPoly@Name\the\multidocount}} + \fi + \pscustom{% + \ifPstPoly@Epicycloid + \pst@cnta=\PstPoly@NbSides + \divide\pst@cnta\tw@ + \multido{\i=0+1}{\PstPoly@NbSides}{% + \moveto(1;\i) + \lineto(1;\the\pst@cnta) + \advance\pst@cnta\PstPoly@Offset} + \else + \ifnum\psxunit=\psyunit + \moveto(1,0) + \else + \moveto(! 1 0) + \fi + \ifx\PstPoly@IntermediatePoint\@empty + \ifnum\psxunit=\psyunit + \def\PstPoly@Junction{\lineto(1;\i)}% + \else + \def\PstPoly@Junction{\lineto% + (! \i\space 360 \PstPoly@NbSides\space div mul cos + \i\space 360 \PstPoly@NbSides\space div mul sin)}% + \fi + \multido{\i=\PstPoly@Offset+\PstPoly@Offset}{\PstPoly@NbSides}{% + \PstPoly@Junction} + \else + \ifPstPoly@Curves + \let\PstPoly@JunctionType\pscurve + \else + \let\PstPoly@JunctionType\psline + \fi + \ifnum\psxunit=\psyunit + \def\PstPoly@Junction{\PstPoly@JunctionType% + (\PstPoly@IntermediatePointDim;\the\pst@cnta\PstPoly@Decimal) + (1;\i)}% + \else + \def\PstPoly@Junction{\PstPoly@JunctionType% + (! \PstPoly@IntermediatePoint\space + \the\pst@cnta\PstPoly@Decimal\space 360 + \PstPoly@NbSides\space div mul cos mul + \PstPoly@IntermediatePoint\space + \the\pst@cnta\PstPoly@Decimal\space 360 + \PstPoly@NbSides\space div mul sin mul) + (! \i\space 360 \PstPoly@NbSides\space div mul cos + \i\space 360 \PstPoly@NbSides\space div mul sin)}% + \fi + \pst@cnta=\PstPoly@Offset + \divide\pst@cnta\tw@ + \multido{\i=\PstPoly@Offset+\PstPoly@Offset}{\PstPoly@NbSides}{% + \PstPoly@Junction + \advance\pst@cnta\PstPoly@Offset} + \fi + \fi} + \ifx\PstPolygonNode\@undefined + \else + \multido{\INode=\z@+\PstPoly@Offset}{\PstPoly@NbSides}{% + \PstPolygonNode} + \fi} +\ifPst@PstPicture + \endpspicture +\fi}} +\def\PstTriangle{% +\pst@ifstar{\@ifnextchar[{\PstTriangle@i}{\PstTriangle@i[]}}} +\def\PstTriangle@i[#1]{{% +\psset{PolyNbSides=3,PolyRotation=90}% For triangle (360/3*(3/4)) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstSquare{% +\pst@ifstar{\@ifnextchar[{\PstSquare@i}{\PstSquare@i[]}}} +\def\PstSquare@i[#1]{{% +\psset{PolyNbSides=4,PolyRotation=45}% For square (360/4/2) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstPentagon{% +\pst@ifstar{\@ifnextchar[{\PstPentagon@i}{\PstPentagon@i[]}}} +\def\PstPentagon@i[#1]{{% +\psset{PolyNbSides=5,PolyRotation=18}% For pentagon (360/5/4) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstHexagon{% +\pst@ifstar{\@ifnextchar[{\PstHexagon@i}{\PstHexagon@i[]}}} +\def\PstHexagon@i[#1]{{% +\psset{PolyNbSides=6}% +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstHeptagon{% +\pst@ifstar{\@ifnextchar[{\PstHeptagon@i}{\PstHeptagon@i[]}}} +\def\PstHeptagon@i[#1]{{% +\psset{PolyNbSides=7,PolyRotation=38.57}% For heptagon (360/7*(3/4)) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstOctogon{% +\pst@ifstar{\@ifnextchar[{\PstOctogon@i}{\PstOctogon@i[]}}} +\def\PstOctogon@i[#1]{{% +\psset{PolyNbSides=8,PolyRotation=22.5}% For octogon (360/8/2) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstNonagon{% +\pst@ifstar{\@ifnextchar[{\PstNonagon@i}{\PstNonagon@i[]}}} +\def\PstNonagon@i[#1]{{% +\psset{PolyNbSides=9,PolyRotation=10}% For nonagon (360/9/4) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstDecagon{% +\pst@ifstar{\@ifnextchar[{\PstDecagon@i}{\PstDecagon@i[]}}} +\def\PstDecagon@i[#1]{{% +\psset{PolyNbSides=10}% +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstDodecagon{% +\pst@ifstar{\@ifnextchar[{\PstDodecagon@i}{\PstDodecagon@i[]}}} +\def\PstDodecagon@i[#1]{{% +\psset{PolyNbSides=12,PolyRotation=15}% For dodecagon (360/12/2) +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstStarFiveLines{% +\pst@ifstar{\@ifnextchar[{\PstStarFiveLines@i}{\PstStarFiveLines@i[]}}} +\def\PstStarFiveLines@i[#1]{{% +\psset{PolyOffset=2,PolyRotation=18}% +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\def\PstStarFive{% +\pst@ifstar{\@ifnextchar[{\PstStarFive@i}{\PstStarFive@i[]}}} +\def\PstStarFive@i[#1]{{% +\psset{PolyIntermediatePoint=0.38,PolyRotation=18}% +\psset{#1}% +\if@star\solid@star\fi +\PstPolygon}} +\newdimen\pst@dimm +\newdimen\pst@dimn +\newdimen\pst@dimo +\newdimen\pst@dimp +\def\pspolygonbox{\pst@object{pspolygonbox}}% voss 2004-11-20 +\def\pspolygonbox@i{\pst@makebox\pspolygonbox@ii} +\def\pspolygonbox@ii{{% + \begingroup% + \pst@useboxpar% + \pst@dima=\pslinewidth% + \ifpsdoubleline% + \advance\pst@dima by \psdoublesep\pslinewidth% + \advance\pst@dima by \pslinewidth% + \fi% + \advance\pst@dima by \psframesep% + \pst@dimc=\wd\pst@hbox% + \pst@dimp=\pst@dimc\advance\pst@dimp by 2\pst@dima% + \pst@dimb=\dp\pst@hbox\pst@dimo=\pst@dimb% + \pst@dimd=\ht\pst@hbox\advance\pst@dimo by \pst@dimd% totalheight + \pst@pyth\pst@dimp\pst@dimo\pst@dimm% + \divide\pst@dimm by 2% Radius + \setbox\pst@hbox=\hbox{% + \ifpsboxsep\kern\pst@dima\fi% left side + \begin@ClosedObj% + \addto@pscode{% + /framesep \pst@number\pst@dima def + /boxdepth \pst@number\pst@dimb framesep add def + /boxheight0 \pst@number\pst@dimd def + /boxheight boxheight0 framesep add def + /boxwidth \pst@number\pst@dimc def + /radius \pst@number\pst@dimm def + /order \PstPoly@NbSides\space def + /dAlpha 360 order div def + /alpha \PstPoly@Rotation\space def + \pst@cp + \tx@polygonB + \psline@iii +%% \tx@Line + \tx@Polygon + }% + \def\pst@linetype{1}% + \showpointsfalse% + \end@ClosedObj% + \box\pst@hbox% + \ifpsboxsep\kern\pst@dima\fi%% right side + }% + \ifpsboxsep% + \pst@dimn=-.5\pst@dimo\advance\pst@dimn by \pst@dimb% + \advance\pst@dimn by 0.809\pst@dimm% + \dp\pst@hbox=\pst@dimn% + \pst@dimn=\pst@dimm\advance\pst@dimn by 0.5\pst@dimo% + \advance\pst@dimn by -\pst@dimb% + \ht\pst@hbox=\pst@dimn\fi% + \leavevmode% + \box\pst@hbox% + \endgroup% +}\ignorespaces} +\pst@def{polygonB}<{% + /x1 framesep neg def + /x2 boxwidth framesep add def + /y1 boxdepth framesep add neg def + /y2 boxheight framesep add def + x2 x1 add 2 div y2 y1 add 2 div translate + [ + alpha cos radius mul + alpha sin radius mul + order { /alpha alpha dAlpha add def + radius alpha cos mul + radius alpha sin mul + } repeat +}> +\catcode`\@=\PstAtCode\relax +\endinput +%% +%% End of file `pst-poly.tex'. |