summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-sigsys
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-01-16 23:40:29 +0000
committerKarl Berry <karl@freefriends.org>2010-01-16 23:40:29 +0000
commitae1e709b7a40dcb1e9f38161ff4c7ae17bc51b3a (patch)
tree33509329e37cf711df8bc369df2b808dcc2b0bc3 /Master/texmf-dist/tex/generic/pst-sigsys
parent6b2af6c8872b046b9483c1d4d0f4486b75ec3386 (diff)
pst-sigsys update (16jan10)
git-svn-id: svn://tug.org/texlive/trunk@16748 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-sigsys')
-rw-r--r--Master/texmf-dist/tex/generic/pst-sigsys/pst-sigsys.tex541
1 files changed, 541 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-sigsys/pst-sigsys.tex b/Master/texmf-dist/tex/generic/pst-sigsys/pst-sigsys.tex
new file mode 100644
index 00000000000..e6d7f79b885
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/pst-sigsys/pst-sigsys.tex
@@ -0,0 +1,541 @@
+%%
+%% This is file `pst-sigsys.tex' v 1.2.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% (C)
+%% Farshid Delgosha (NY - U.S.A.) <fdelgosha@gmail.com>
+%%
+%% v 1.0: 01/15/2009
+%% v 1.1: 04/01/2009
+%% v 1.2: 01/15/2010
+%%
+%% 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-sigsys' is a PSTricks package for drawing block diagrams
+%% related to the signal processing discipline.
+%%
+%
+\csname PSTsigsysLoaded\endcsname
+\let\PSTsigsysLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi
+\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
+
+\def\pstsigsysFV{1.2}
+\def\pstsigsysFD{2010/01/15}
+\message{`PST-SigSys' v\pstsigsysFV, \pstsigsysFD\space (fd)}
+
+
+\SpecialCoor
+
+
+
+%--- new pstricks styles ---------------------------------
+\newpsstyle{ArrowLen}{arrowsize=1.35mm,arrowlength=1.25,arrowinset=.25}
+\newpsstyle{Arrow}{arrows=->,style=ArrowLen}
+\newpsstyle{Dash}{linestyle=dashed,dash=.15 .08}
+\newpsstyle{Graph}{linewidth=1.25pt,linearc=0}
+\newpsstyle{Stem}{linewidth=1.25pt,linestyle=solid,stemhead=*}
+\newpsstyle{RoundCorners}{framesep=.125,framearc=.25,linearc=.1}
+%--- end new pstricks styles -----------------------------
+
+
+%--- new pstricks-add styles -----------------------------
+\AtBeginDocument{
+\ifx\PSTricksAddLoaded\endinput
+\newpsstyle{ArrowIn}{ArrowInside=->,style=ArrowLen}
+\newpsstyle{DashDot}{linestyle=dashed,dash=.15 .055 .04 .055}
+\newpsstyle{Brace}{braceWidth=.02,braceWidthInner=.115,braceWidthOuter=.115,ref=C}
+\newpsobject{psBraceUp}{psbrace}{style=Brace,rot=-90,nodesepB=-\pslabelsep}
+\newpsobject{psBraceDown}{psbrace}{style=Brace,rot=90,nodesepB=\pslabelsep}
+\newpsobject{psBraceRight}{psbrace}{style=Brace,rot=-90,nodesepA=\pslabelsep}
+\newpsobject{psBraceLeft}{psbrace}{style=Brace,rot=-90,nodesepA=-\pslabelsep}
+\fi
+}
+%--- end new pstricks-add styles -------------------------
+
+
+%--- internal macros -------------------------------------
+\newdimen\ss@ticklength
+\newdimen\ss@signalsep
+\newdimen\ss@zerowidth
+\newdimen\ss@zeroradius
+\newdimen\ss@zeroradiusinc
+\newdimen\ss@polewidth
+\newdimen\ss@polelength
+\newdimen\ss@oplength
+\newdimen\ss@opwidth
+\newdimen\ss@opsep
+\newdimen\ss@ldotssep
+\newdimen\ss@ldotssize
+%
+\newdimen\ss@temp@dimA
+\newdimen\ss@temp@dimB
+\newdimen\ss@temp@dimC
+\newcount\ss@temp@cnt
+\def\ss@temp{}
+\def\ss@temp@choice{}
+%
+%%% Adds two numbers. %%%
+\newdimen\ss@calc@dim
+\def\ss@calc{}
+\def\ss@addnum#1#2#3{%
+\ss@calc@dim=#1pt%
+\advance\ss@calc@dim #2pt%
+\pst@divide{\ss@calc@dim}{1pt}\ss@calc%
+\let#3\ss@calc%
+}
+%
+\def\pst@scale#1{\pssetlength{#1}{\ss@scale#1}}
+%
+%%% Scales the line width. %%%
+\def\ss@LW{}
+\def\pst@scaleLW#1#2{%
+\pssetlength{\ss@calc@dim}{#1\pslinewidth}%
+\pst@dimtonum{\ss@calc@dim}{\ss@LW}%
+\let#2\ss@LW%
+}
+%
+%%% Draws a cross. %%%
+\def\ss@cross@temp{}
+\def\pst@cross(#1;#2)#3{%
+\ss@addnum{#2}{90}\ss@cross@temp%
+\psline[linewidth=#3,arrows=-](-#1;#2)(#1;#2)%
+\psline[linewidth=#3,arrows=-](-#1;\ss@cross@temp)(#1;\ss@cross@temp)%
+}
+%
+%%% Sets the frame width using the golden ratio. %%%
+\def\pst@frame@width#1#2{%
+\pssetlength{\ss@temp@dimA}{#1}%
+\pssetlength{\ss@temp@dimB}{#2\ss@temp@dimA}%
+\divide\ss@temp@dimA 2\relax%
+\divide\ss@temp@dimB 2\relax%
+\edef\psk@framewidth{\pst@number\ss@temp@dimA}%
+\edef\psk@frameheight{\pst@number\ss@temp@dimB}%
+}
+%
+%%% Sets the frame height using the golden ratio. %%%
+\def\pst@frame@height#1#2{%
+\pssetlength{\ss@temp@dimA}{#1}%
+\pssetlength{\ss@temp@dimB}{#2\ss@temp@dimA}%
+\divide\ss@temp@dimA 2\relax%
+\divide\ss@temp@dimB 2\relax%
+\edef\psk@frameheight{\pst@number\ss@temp@dimA}%
+\edef\psk@framewidth{\pst@number\ss@temp@dimB}%
+}
+%
+\newpsstyle{inv@frame}{fillstyle=none,linestyle=none,framearc=0}
+%
+%%% This is my parser. %%%
+\def\ss@parse@temp{}
+\def\ss@parseA{}
+\def\ss@parseB{}
+\def\ss@parseC{}
+%
+\def\ss@parse@III#1{%
+\ss@parse@II{#1}{\ss@parseA}{\ss@parse@temp}%
+\ss@parse@II{\ss@parse@temp}{\ss@parseB}{\ss@parseC}%
+}
+%
+\def\ss@parse@II#1#2#3{\expandafter\ss@parse#1 \@nil#2#3}
+%
+\def\ss@parse#1 #2\@nil#3#4{%
+\gdef#3{#1}%
+\ifx\@empty#2\@empty%
+\gdef#4{}%
+\else%
+\ss@removespace#2\@nil#4%
+\fi%
+}
+%
+\def\ss@removespace#1 \@nil#2{\gdef#2{#1}}
+%--- end internal macros ---------------------------------
+
+
+%--- keys ------------------------------------------------
+\define@key[psset]{pst-sigsys}{scale}{\def\ss@scale{#1}}
+\define@choicekey*[psset]{pst-sigsys}{xlpos}[\val\ss@temp@choice]{b,t}{%
+\ifcase\ss@temp@choice\relax%
+\def\ss@xlpos{b}%
+\or%
+\def\ss@xlpos{t}%
+\fi%
+}
+\define@choicekey*[psset]{pst-sigsys}{ylpos}[\val\ss@temp@choice]{r,l}{%
+\ifcase\ss@temp@choice\relax%
+\def\ss@ylpos{r}%
+\or%
+\def\ss@ylpos{l}%
+\fi%
+}
+\define@key[psset]{pst-sigsys}{ticklength}{\pssetlength{\ss@ticklength}{#1}}
+\define@key[psset]{pst-sigsys}{signalsep}{\pssetlength{\ss@signalsep}{#1}}
+\define@key[psset]{pst-sigsys}{stemhead}[]{\def\ss@stemhead{#1}}
+\define@boolkey[psset]{pst-sigsys}[ss@]{stemtag}[true]{}
+\define@key[psset]{pst-sigsys}{stemtagformat}[]{\def\ss@stemtagformat{#1}}
+\define@key[psset]{pst-sigsys}{order}{\def\ss@order{#1}}
+\define@key[psset]{pst-sigsys}{zerowidth}{\pssetlength{\ss@zerowidth}{#1}}
+\define@key[psset]{pst-sigsys}{zeroradius}{\pssetlength{\ss@zeroradius}{#1}}
+\define@key[psset]{pst-sigsys}{zeroradiusinc}{\pssetlength{\ss@zeroradiusinc}{#1}}
+\define@key[psset]{pst-sigsys}{polewidth}{\pssetlength{\ss@polewidth}{#1}}
+\define@key[psset]{pst-sigsys}{polelength}{\pssetlength{\ss@polelength}{#1}}
+\define@key[psset]{pst-sigsys}{opwidth}{\pssetlength{\ss@opwidth}{#1}}
+\define@key[psset]{pst-sigsys}{oplength}{\pssetlength{\ss@oplength}{#1}}
+\define@key[psset]{pst-sigsys}{opsep}{\pssetlength{\ss@opsep}{#1}}
+\define@choicekey*[psset]{pst-sigsys}{operation}[\val\ss@temp@choice]{plus,times}{%
+\ifcase\ss@temp@choice\relax%
+\def\ss@angle{0}%
+\or%
+\def\ss@angle{45}%
+\fi%
+}
+\define@key[psset]{pst-sigsys}{angle}{\def\ss@angle{#1}}
+\define@key[psset]{pst-sigsys}{ldotssize}{\pssetlength{\ss@ldotssize}{#1}}
+\define@key[psset]{pst-sigsys}{ldotssep}{\pssetlength{\ss@ldotssep}{#1}}
+\define@key[psset]{pst-sigsys}{gratioWh}{\pst@frame@width{#1}{.6180339887}}
+\define@key[psset]{pst-sigsys}{gratioWv}{\pst@frame@width{#1}{1.618033989}}
+\define@key[psset]{pst-sigsys}{gratioHh}{\pst@frame@height{#1}{1.618033989}}
+\define@key[psset]{pst-sigsys}{gratioHv}{\pst@frame@height{#1}{.6180339887}}
+%--- end keys --------------------------------------------
+
+
+%--- default key values ----------------------------------
+\psset[pst-sigsys]{scale=1}% global
+\psset[pst-sigsys]{xlpos=b,ylpos=r}% psaxeslabels
+\psset[pst-sigsys]{ticklength=.075}% psTick
+\psset[pst-sigsys]{signalsep=5pt}% pssignal
+\psset[pst-sigsys]{stemhead=*,stemtag=false,stemtagformat=\scriptstyle}% psstem
+\psset[pst-sigsys]{zerowidth=.7pt,zeroradius=.08,zeroradiusinc=.07,order=1}% pszero
+\psset[pst-sigsys]{polewidth=.7pt,polelength=.12}% pspole
+\psset[pst-sigsys]{opwidth=.7pt,oplength=.125,opsep=.1,operation=plus}% pscircleop and psframeop
+\psset[pst-sigsys]{ldotssize=.05,ldotssep=.15,angle=0}% psldots
+%--- end default key values ------------------------------
+
+\pst@addfams{pst-sigsys}
+
+
+%--- psaxeslabels ----------------------------------------
+\def\psaxeslabels{\def\pst@par{}\pst@object{psaxeslabels}}
+\def\psaxeslabels@i{\pst@getarrows\psaxeslabels@ii}
+\def\psaxeslabels@ii(#1,#2)(#3,#4)(#5,#6)#7#8{{%
+\use@par%
+\psline(#3,#2)(#5,#2)%
+\psline(#1,#4)(#1,#6)%
+%
+\if\ss@xlpos t%
+\rput(#5,#2){\rput[rb](0,\pslabelsep){#7}}%
+\else%
+\rput(#5,#2){\rput[rt](0,-\pslabelsep){#7}}%
+\fi%
+%
+\if\ss@ylpos l%
+\rput(#1,#6){\rput[tr](-\pslabelsep,0){#8}}%
+\else%
+\rput(#1,#6){\rput[tl](\pslabelsep,0){#8}}%
+\fi%
+}\ignorespaces}
+%--- end psaxeslabels ------------------------------------
+
+
+%--- pstick ----------------------------------------------
+\def\pstick{\def\pst@par{}\pst@object{pstick}}
+\def\pstick@i{\@ifnextchar({\pstick@ii{0}}{\pstick@ii}}
+\def\pstick@ii#1(#2)#3{{%
+\use@par%
+\rput{#1}(#2){\psline(-#3,0)(#3,0)}%
+}\ignorespaces}
+%--- end pstick ------------------------------------------
+
+
+%--- psTick ----------------------------------------------
+\def\psTick{\def\pst@par{}\pst@object{psTick}}
+\def\psTick@i{\@ifnextchar({\psTick@ii{0}}{\psTick@ii}}
+\def\psTick@ii#1(#2){{%
+\use@par%
+\rput{#1}(#2){\psline(-\ss@ticklength,0)(\ss@ticklength,0)}%
+}\ignorespaces}
+%--- end psTick ------------------------------------------
+
+
+%--- pssignal --------------------------------------------
+\def\pssignal{\def\pst@par{}\pst@object{pssignal}}
+\def\pssignal@i(#1)#2#3{{%
+\use@par%
+\rput(#1){\rnode{#2}{\psframebox[style=inv@frame,framesep=\ss@signalsep]{#3}}}%
+}\ignorespaces}
+%--- end pssignal ----------------------------------------
+
+
+%--- psstem ----------------------------------------------
+\def\psstem{\def\pst@par{}\pst@object{psstem}}
+\def\psstem@i{\@ifnextchar({\psstem@ii}{\psstem@ii(0,1)}}
+\def\psstem@ii(#1,#2)#3{{%
+\use@par%
+\ss@temp@cnt=#1%
+\@for\ss@for@ind:=#3\do{%
+\psline{-\ss@stemhead}(\ss@temp@cnt,0)(\ss@temp@cnt,\ss@for@ind)%
+%
+\ifss@stemtag%
+\pssetlength{\ss@temp@dimA}{\ss@for@ind}%
+\ifdim\ss@temp@dimA<\z@%
+\rput[b](\ss@temp@cnt,\pslabelsep){$\ss@stemtagformat\the\ss@temp@cnt$}%
+\else%
+\rput[t](\ss@temp@cnt,-\pslabelsep){$\ss@stemtagformat\the\ss@temp@cnt$}%
+\fi\fi%
+%
+\advance\ss@temp@cnt#2}%
+}\ignorespaces}
+%--- end psstem ------------------------------------------
+
+
+%--- pszero ----------------------------------------------
+\def\pszero{\def\pst@par{}\pst@object{pszero}}
+\def\pszero@i(#1)#2{{%
+\use@par%
+\pst@scale{\ss@zerowidth}%
+\pst@scale{\ss@zeroradius}%
+\pst@scale{\ss@zeroradiusinc}%
+\pssetlength{\ss@temp@dimA}{\ss@zeroradius}%
+\ss@temp@cnt=\ss@order%
+\loop%
+\cnode[linewidth=\ss@zerowidth](#1){\ss@temp@dimA}{#2}%
+\psaddtolength{\ss@temp@dimA}{\ss@zeroradiusinc}%
+\ifnum\ss@temp@cnt>\@ne%
+\advance\ss@temp@cnt-\@ne%
+\repeat%
+}\ignorespaces}
+%--- end pszero ------------------------------------------
+
+
+%--- pspole ----------------------------------------------
+% The main part of this code is borrowed from pst-node
+%
+\def\pspole{\def\pst@par{}\pst@object{pspole}}
+\def\pspole@i(#1)#2{%
+\leavevmode%
+\hbox{%
+\use@par%
+\pst@scale{\ss@polelength}%
+\pst@scale{\ss@polewidth}%
+\pst@@getcoor{#1}%
+\pssetlength\pst@dimc{\ss@polelength}%
+\pst@dimg=\psk@dimen\pslinewidth%
+\advance\pst@dimc-\pst@dimg%
+\advance\pst@dimc.5\pslinewidth%
+\ifnodealign%
+\kern\pst@dimc%
+\vrule width\z@ height \pst@dimc depth \pst@dimc%
+\fi%
+\rput(#1){\pst@cross(\ss@polelength;45){\ss@polewidth}}%
+\pst@newnode{#2}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}%
+\ifnodealign\kern\pst@dimc\fi%
+}\ignorespaces}
+%--- end pspole ------------------------------------------
+
+
+%--- pscircleop ------------------------------------------
+\def\pscircleop{\def\pst@par{}\pst@object{pscircleop}}
+\def\pscircleop@i(#1)#2{{%
+\use@par%
+\pst@scale{\ss@oplength}%
+\pst@scale{\ss@opsep}%
+\pst@scale{\ss@opwidth}%
+\pst@scale{\pslinewidth}%
+\pssetlength{\ss@temp@dimA}{\ss@oplength}%
+\psaddtolength{\ss@temp@dimA}{\ss@opsep}%
+\cnode(#1){\ss@temp@dimA}{#2}%
+\rput(#1){\pst@cross(\ss@oplength;\ss@angle){\ss@opwidth}}%
+}\ignorespaces}
+%--- end pscircleop --------------------------------------
+
+
+%--- psframeop -------------------------------------------
+\def\psframeop{\def\pst@par{}\pst@object{psframeop}}
+\def\psframeop@i(#1)#2{{%
+\use@par%
+\pst@scale{\ss@oplength}%
+\pst@scale{\ss@opsep}%
+\pst@scale{\ss@opwidth}%
+\pst@scale{\pslinewidth}%
+\pssetlength{\ss@temp@dimA}{2\ss@oplength}%
+\psaddtolength{\ss@temp@dimA}{2\ss@opsep}%
+\fnode[framesize=\ss@temp@dimA](#1){#2}%
+\rput(#1){\pst@cross(\ss@oplength;\ss@angle){\ss@opwidth}}%
+}\ignorespaces}
+%--- end psframeop ---------------------------------------
+
+
+%--- psdisk ----------------------------------------------
+\def\psdisk{\def\pst@par{}\pst@object{psdisk}}
+\def\psdisk@i(#1)#2{{%
+\use@par%
+\pscircle*[linewidth=0pt,linecolor=\psfillcolor](#1){#2}%
+}\ignorespaces}
+%--- end psdisk ------------------------------------------
+
+
+%--- psring ----------------------------------------------
+\def\psring{\def\pst@par{}\pst@object{psring}}
+\def\psring@i(#1)#2#3{{%
+\use@par%
+\pssetlength{\ss@temp@dimA}{#2}%
+\pssetlength{\ss@temp@dimB}{#3}%
+\psaddtolength{\ss@temp@dimB}{-\ss@temp@dimA}%
+\pscircle[dimen=inner,linewidth=\ss@temp@dimB,linecolor=\psfillcolor](#1){\ss@temp@dimA}%
+}\ignorespaces}
+%--- end psring ------------------------------------------
+
+
+%--- psdiskc ---------------------------------------------
+\def\psdiskc{\def\pst@par{}\pst@object{psdiskc}}
+\def\psdiskc@i(#1)(#2,#3)#4{{%
+\use@par%
+\pssetlength{\ss@temp@dimA}{#2}%
+\pssetlength{\ss@temp@dimB}{#3}%
+\ifdim\ss@temp@dimA>\ss@temp@dimB%
+\pssetlength{\ss@temp@dimC}{1.5\ss@temp@dimA}%
+\else%
+\pssetlength{\ss@temp@dimC}{1.5\ss@temp@dimB}%
+\fi%
+\psclip{\rput(#1){\psframe[linewidth=0pt,linecolor=\psfillcolor](-#2,-#3)(#2,#3)}}%
+\psring@i(#1){#4}{\ss@temp@dimC}%
+\endpsclip%
+}\ignorespaces}
+%--- end psdiskc -----------------------------------------
+
+
+%--- psldots ---------------------------------------------
+\def\psldots{\def\pst@par{}\pst@object{psldots}}
+\def\psldots@i(#1){{%
+\use@par%
+\pst@scale{\ss@ldotssep}%
+\pst@scale{\ss@ldotssize}%
+\rput(#1){\psdots[dotsize=\ss@ldotssize](-\ss@ldotssep;\ss@angle)(0,0)(\ss@ldotssep;\ss@angle)}%
+}\ignorespaces}
+%--- end psldots -----------------------------------------
+
+
+%--- ldotsnode -------------------------------------------
+\def\ldotsnode{\def\pst@par{}\pst@object{ldotsnode}}
+\def\ldotsnode@i(#1)#2{{%
+\use@par%
+\ss@temp@dimC=.5\ss@signalsep%
+\ss@temp@dimB=.5\ss@ldotssize%
+\advance\ss@temp@dimB\ss@temp@dimC%
+\ss@temp@dimA=\ss@ldotssep%
+\advance\ss@temp@dimA\ss@temp@dimB%
+\advance\ss@temp@dimA\ss@temp@dimC%
+\edef\psk@framewidth{\pst@number\ss@temp@dimA}%
+\edef\psk@frameheight{\pst@number\ss@temp@dimB}%
+\rput{\ss@angle}(#1){\fnode[style=inv@frame](0,0){#2}}%
+\psldots(#1)%
+}\ignorespaces}
+%--- end ldotsnode ---------------------------------------
+
+
+%--- psblock ---------------------------------------------
+\def\psblock{\def\pst@par{}\pst@object{psblock}}
+\def\psblock@i(#1)#2#3{{%
+\use@par%
+\rput(#1){\rnode{#2}{\psframebox{#3}}}%
+}\ignorespaces}
+%--- end psblock -----------------------------------------
+
+
+%--- psfblock --------------------------------------------
+\def\psfblock{\def\pst@par{}\pst@object{psfblock}}
+\def\psfblock@i(#1)#2#3{{%
+\use@par%
+\fnode(#1){#2}%
+\rput(#1){#3}%
+}\ignorespaces}
+%--- end psfblock ----------------------------------------
+
+
+%--- psusampler ------------------------------------------
+\def\psusampler{\def\pst@par{}\pst@object{psusampler}}
+\def\psusampler@i(#1)#2#3{{%
+\use@par%
+\psfblock(#1){#2}{$\mathord{\uparrow}#3$}%
+}\ignorespaces}
+%--- end psusampler --------------------------------------
+
+
+%--- psdsampler ------------------------------------------
+\def\psdsampler{\def\pst@par{}\pst@object{psdsampler}}
+\def\psdsampler@i(#1)#2#3{{%
+\use@par%
+\psfblock(#1){#2}{$\mathord{\downarrow}#3$}%
+}\ignorespaces}
+%--- end psdsampler --------------------------------------
+
+
+%--- nclist ----------------------------------------------
+\def\nclist{\def\pst@par{}\pst@object{nclist}}
+\def\nclist@i{\check@arrow{\nclist@ii}}
+\def\nclist@ii#1{\@ifnextchar[{\nclist@iii{#1}}{\nclist@iv{#1}}}
+%
+\def\nclist@iii#1[#2]#3{{%
+\use@par%
+\def\ss@prevnode{}%
+\@for\ss@for@ind:=#3\do{%
+\ifx\@empty\ss@prevnode\@empty%
+\let\ss@prevnode\ss@for@ind%
+\else%
+\ss@parse@III{\ss@for@ind}%
+\csname#1\endcsname{\ss@prevnode}{\ss@parseA}%
+\ifx\@empty\ss@parseB\@empty\else%
+\ifx\@empty\ss@parseC\@empty%
+\csname#2\endcsname{\ss@parseB}%
+\else%
+\csname\ss@parseB\endcsname{\ss@parseC}%
+\fi\fi%
+\let\ss@prevnode\ss@parseA%
+\fi%
+}%
+}\ignorespaces}
+%
+\def\nclist@iv#1#2{{%
+\use@par%
+\def\ss@prevnode{}%
+\@for\ss@for@ind:=#2\do{%
+\ifx\@empty\ss@prevnode\@empty%
+\else%
+\csname#1\endcsname{\ss@prevnode}{\ss@for@ind}%
+\fi%
+\let\ss@prevnode\ss@for@ind%
+}%
+}\ignorespaces}
+%--- end nclist ------------------------------------------
+
+
+%--- ncstar ----------------------------------------------
+\def\ncstar{\def\pst@par{}\pst@object{ncstar}}
+\def\ncstar@i{\check@arrow{\ncstar@ii}}
+\def\ncstar@ii#1{\@ifnextchar[{\ncstar@iii{#1}}{\ncstar@iv{#1}}}
+%
+\def\ncstar@iii#1[#2]#3#4{{%
+\use@par%
+\@for\ss@for@ind:=#3\do{%
+\ss@parse@III{\ss@for@ind}%
+\csname#1\endcsname{\ss@parseA}{#4}%
+\ifx\@empty\ss@parseB\@empty\else%
+\ifx\@empty\ss@parseC\@empty%
+\csname#2\endcsname{\ss@parseB}%
+\else%
+\csname\ss@parseB\endcsname{\ss@parseC}%
+\fi\fi%
+}%
+}\ignorespaces}
+%
+\def\ncstar@iv#1#2#3{{%
+\use@par%
+\@for\ss@for@ind:=#2\do{\csname#1\endcsname{\ss@for@ind}{#3}}%
+}\ignorespaces}
+%--- end ncstar ------------------------------------------
+\endinput \ No newline at end of file