summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pst-circ
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-02-29 19:16:32 +0000
committerKarl Berry <karl@freefriends.org>2008-02-29 19:16:32 +0000
commit5a2a066ad2bb1f45481e00ba816bac18458e6856 (patch)
tree911424e3a99109f188c84c16716c9dbe2ef19adb /Master/texmf-dist/tex/generic/pst-circ
parentf79f8dc28a02eb586b4cb2eecfe693a201c0725c (diff)
pst-circ 1.44 (28feb08)
git-svn-id: svn://tug.org/texlive/trunk@6775 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pst-circ')
-rw-r--r--Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex922
1 files changed, 887 insertions, 35 deletions
diff --git a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
index 490bdc5b9c1..534cebc83f5 100644
--- a/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
+++ b/Master/texmf-dist/tex/generic/pst-circ/pst-circ.tex
@@ -29,8 +29,8 @@
\ifx\PSTnodeLoaded\endinput\else\input pst-node.tex\fi
\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi
%
-\def\fileversion{1.43}
-\def\filedate{2007/12/19}
+\def\fileversion{1.44}
+\def\filedate{2008/02/27}
\message{`pst-circ' v\fileversion (CJ,hv,pd)}
%
\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
@@ -380,12 +380,12 @@
\ifPst@temp\pnode(#1){TBaseNode}%
\else%
\pst@getcoor{#1}\pst@tempa%
- \pnode(!
+ \pnode(!
\pst@tempa /YB exch \pst@number\psyunit div def
- /XB exch \pst@number\psxunit div def
- /basesep \Pst@basesep\space \pst@number\psxunit div def
- XB basesep \Pst@TRot\space cos mul add
- YB basesep \Pst@TRot\space sin mul add){TBaseNode}% base node
+ /XB exch \pst@number\psxunit div def
+ /basesep \Pst@basesep\space \pst@number\psxunit div def
+ XB basesep \Pst@TRot\space cos mul add
+ YB basesep \Pst@TRot\space sin mul add){TBaseNode}% base node
\fi%
\rput{\Pst@TRot}(TBaseNode){%
\ifPst@T@circle\pscircle(0.3,0){0.7}\fi
@@ -406,7 +406,7 @@
\ifx\psk@Ttype\pst@Ttype@FET\relax%
\ifPst@T@invert\pnode(0.65,0.5){#2}\else\pnode(0.65,0.5){#3}\fi%
\ifPst@T@invert\pnode(0.65,-0.5){#3}\else\pnode(0.65,-0.5){#2}\fi%
- \else
+ \else
\ifPst@T@invert\pnode(0.5,0.5){#2}\else\pnode(0.5,0.5){#3}\fi%
\ifPst@T@invert\pnode(0.5,-0.5){#3}\else\pnode(0.5,-0.5){#2}\fi%
\fi
@@ -446,12 +446,12 @@
/X2 exch \pst@number\psxunit div def
\pst@tempc /Y3 exch \pst@number\psyunit div def
/X3 exch \pst@number\psxunit div def
- /LR X1 X2 lt { false }{ true } ifelse def % change left-right
- /basesep \Pst@basesep\space \pst@number\psxunit div def
+ /LR X1 X2 lt { false }{ true } ifelse def % change left-right
+ /basesep \Pst@basesep\space \pst@number\psxunit div def
/XBase X1 basesep \Pst@TRot\space cos mul add def
/YBase Y1 basesep \Pst@TRot\space sin mul add def
- XBase YBase ){@@base}% base node
-%
+ XBase YBase ){@@base}% base node
+%
\Pst@temptrue%
\transistor@ii(@@base){@@emitter}{@@collector}%
%
@@ -459,7 +459,7 @@
\if\psk@labelT@iE\@empty\else\psset{transistoriemitter=true}\fi%
\if\psk@labelT@iC\@empty\else\psset{transistoricollector=true}\fi%
\ifPst@intensity\psset{transistoribase=true,transistoriemitter=true,transistoricollector=true}\fi%
-%
+%
\bgroup\psset{style=baseOpt}\psedge(#1)(TBaseNode)\egroup%
\ifPst@T@iB% base current?
\ncput[npos=0.5,nrot=\Pst@TRot]{%
@@ -476,14 +476,14 @@
\ifPst@T@invert% emitter/collector changed?
\ncput[npos=1.5,nrot=:U]{%
\psline[linecolor=\psk@I@color,linewidth=\psk@I@width,%
- arrowsize=6\pslinewidth,arrowinset=0]{->}(-0.1,0)(0.1,0)}
+ arrowsize=6\pslinewidth,arrowinset=0]{->}(-0.1,0)(0.1,0)}
\nbput[npos=1.5]{\csname\psk@I@labelcolor\endcsname\psk@labelT@iE}
\fi\fi%
\ifPst@T@iC% collector current?
\ifPst@T@invert\else% emitter/collector changed?
\ncput[npos=1.5,nrot=:U]{%
\psline[linecolor=\psk@I@color,linewidth=\psk@I@width,%
- arrowsize=6\pslinewidth,arrowinset=0]{->}(-.1,0)(.1,0)}
+ arrowsize=6\pslinewidth,arrowinset=0]{->}(-.1,0)(.1,0)}
\nbput[npos=1.5]{\csname\psk@I@labelcolor\endcsname\psk@labelT@iC}
\fi\fi%
\bgroup
@@ -495,14 +495,14 @@
\ifPst@T@invert\else
\ncput[npos=1.5,nrot=:U]{%
\psline[linecolor=\psk@I@color,linewidth=\psk@I@width,
- arrowsize=6\pslinewidth,arrowinset=0]{<-}(-.1,0)(.1,0)}
+ arrowsize=6\pslinewidth,arrowinset=0]{<-}(-.1,0)(.1,0)}
\naput[npos=1.5]{\csname\psk@I@labelcolor\endcsname\psk@labelT@iE}
\fi\fi%
\ifPst@T@iC% collector current?
\ifPst@T@invert% emitter/collector changed?
\ncput[npos=1.5,nrot=:U]{%
\psline[linecolor=\psk@I@color,linewidth=\psk@I@width,
- arrowsize=6\pslinewidth,arrowinset=0]{<-}(-.1,0)(.1,0)}
+ arrowsize=6\pslinewidth,arrowinset=0]{<-}(-.1,0)(.1,0)}
\naput[npos=1.5]{\csname\psk@I@labelcolor\endcsname\psk@labelT@iC}
\fi\fi
\psline[linestyle=none](#1)(#2)% for the end arrows
@@ -766,8 +766,16 @@
\ifx\dashpot #4%%% pd change
\let\next\pst@multidipole@dashpot
\else%%% pd change
- \let\next\ignorespaces
- \fi%%% pd change
+ \ifx\filter #4%
+ \let\next\pst@multidipole@filter
+ \else
+ \ifx\isolator #4%
+ \let\next\pst@multidipole@filter
+ \else
+ \let\next\ignorespaces
+ \fi
+ \fi
+ \fi%%% pd change
\fi
\fi
\fi
@@ -829,8 +837,16 @@
\ifx\dashpot #1%%% pd change
\let\next\pst@multidipole@dashpot
\else%%% pd change
- \let\next\ignorespaces
- \pst@multidipole@output
+ \ifx\filter #1%
+ \let\next\pst@multidipole@filter
+ \else
+ \ifx\isolator #1%
+ \let\next\pst@multidipole@isolator
+ \else
+ \let\next\ignorespaces
+ \pst@multidipole@output
+ \fi
+ \fi
\fi%%% pd change
\fi
\fi
@@ -1154,9 +1170,9 @@
\ncput[npos=\psk@parallel@sep]{\pnode{dipole@@1}}
\pcline[arrows=-,linestyle=none,fillstyle=none](#3)(dipole@M)
\ncput[npos=\psk@parallel@sep]{\pnode{dipole@@2}}
- \pcline[arrows=-,linestyle=none,
- fillstyle=none,
- offset=\psk@parallel@arm](dipole@@1)(dipole@@2)
+ \pcline[arrows=-,linestyle=none,
+ fillstyle=none,
+ offset=\psk@parallel@arm](dipole@@1)(dipole@@2)
\ncput[npos=0]{\pnode{dipole@@@1}}
\ncput[npos=1]{\pnode{dipole@@@2}}
\ncput[nrot=:U]{#5}
@@ -1167,24 +1183,36 @@
\ifPst@parallel@node
\pscircle*(dipole@@1){2\pslinewidth}
\pscircle*(dipole@@2){2\pslinewidth}
- \fi
- \pcline[arrows=-,linestyle=none,
- fillstyle=none,
- offset=\psk@label@offset](dipole@@@1)(dipole@@@2)
+ \fi
+ \pcline[arrows=-,linestyle=none,
+ fillstyle=none,
+ offset=\psk@label@offset](dipole@@@1)(dipole@@@2)
\ncput[nrot=\psk@label@angle]{#4}
\pst@intensity{dipole@@@1}{dipole@@@2}
\pst@tension{dipole@@@1}{dipole@@@2}
\else
\ncput[nrot=:U]{#5}
- \pcline[arrows=-,linestyle=none,
- fillstyle=none,offset=\psk@label@offset](#2)(#3)
+ \pcline[arrows=-,linestyle=none,
+ fillstyle=none,offset=\psk@label@offset](#2)(#3)
\ncput[nrot=\psk@label@angle]{#4}
%%%
% CHANGES HERE!!!
%%%
- \pcline[arrows=-C](#2)(dipole@1)
- \pcline[arrows=C-](dipole@2)(#3)
- \pcline[linestyle=none](#2)(#3)
+%%%%%
+ \ifPst@inputarrow
+ \ifx\psk@Dinput\pst@Dinput@right
+ \pcline[fillstyle=none,arrows=-C](#2)(dipole@1)
+ \pcline[fillstyle=none,arrows=->,arrowinset=0](#3)(dipole@2)
+ \else
+ \pcline[fillstyle=none,arrows=->,arrowinset=0](#2)(dipole@1)
+ \pcline[fillstyle=none,arrows=C-](dipole@2)(#3)
+ \fi
+ \else
+ \pcline[fillstyle=none,arrows=-C](#2)(dipole@1)
+ \pcline[fillstyle=none,arrows=C-](dipole@2)(#3)
+ \fi
+ \pcline[fillstyle=none,linestyle=none](#2)(#3)
+%%%%%
\pst@intensity{#2}{#3}
\pst@tension{#2}{#3}
\fi%
@@ -1871,8 +1899,832 @@
\ncput[nrot=\psk@label@angle]{\csname\psk@tension@labelcolor\endcsname #4}
}\ignorespaces}
%
-\def\node(#1){%
-\pscircle*(#1){2\pslinewidth}}
+\def\node(#1){\pscircle*(#1){2\pslinewidth}}
+%
+%
+%
+\newif\ifPst@inputarrow
+\define@key[psset]{pst-circ}{inputarrow}[false]{\@nameuse{Pst@inputarrow#1}}
+\newif\ifPst@programmable
+\define@key[psset]{pst-circ}{programmable}[false]{\@nameuse{Pst@programmable#1}}
+%
+\def\pst@Gstyle@old{old}
+\def\pst@Gstyle@ads{ads}
+\def\pst@Gstyle@triangle{triangle}
+\def\pst@Astyle@two{two}
+\def\pst@Astyle@three{three}
+\def\pst@Astyle@triangle{triangle}
+\def\pst@LOoutput@left{left}
+\def\pst@LOoutput@top{top}
+\def\pst@LOoutput@right{right}
+\def\pst@LOoutput@bottom{bottom}
+\def\pst@LOstyle@crystal{crystal}
+\def\pst@Dstyle@lowpass{lowpass}
+\def\pst@Dstyle@highpass{highpass}
+\def\pst@Dinput@right{right}
+\def\pst@Dinput@left{left}
+\def\pst@Dstyle@multiplier{multiplier}
+\def\pst@Dstyle@divider{divider}
+\def\pst@FMvalue@value{0}
+\def\pst@tripole@style@bottom{bottom}
+\def\pst@tripole@style@top{top}
+\def\pst@Tinput@left{left}
+\def\pst@Tinput@right{right}
+\def\pst@tripole@style@circulator{circulator}
+\def\pst@tripole@style@isolator{isolator}
+\def\pst@Tconfig@left{left}
+\def\pst@Tconfig@right{right}
+\def\pst@Qstyle@directional{directional}
+\def\pst@Qstyle@hybrid{hybrid}
+\def\pst@Qinput@left{left}
+\def\pst@Qinput@right{right}
+\define@key[psset]{pst-circ}{groundstyle}{\def\psk@Gstyle{#1}}
+\define@key[psset]{pst-circ}{antennastyle}{\def\psk@Astyle{#1}}
+\define@key[psset]{pst-circ}{output}{\def\psk@LOoutput{#1}}
+\define@key[psset]{pst-circ}{LOstyle}{\def\psk@LOstyle{#1}}
+\define@key[psset]{pst-circ}{dipoleinput}{\def\psk@Dinput{#1}}
+\define@key[psset]{pst-circ}{value}{\def\psk@FMvalue{#1}}
+\define@key[psset]{pst-circ}{tripoleinput}{\def\psk@Tinput{#1}}
+\define@key[psset]{pst-circ}{tripoleconfig}{\def\psk@Tconfig{#1}}
+\define@key[psset]{pst-circ}{couplerstyle}{\def\psk@Qstyle{#1}}
+\define@key[psset]{pst-circ}{quadripoleinput}{\def\psk@Qinput{#1}}
+\psset{groundstyle=ads,%
+ antennastyle=two,%
+ output=top,%
+ dipoleinput=left,%
+ dipolestyle=multiplier,%
+ value=0,%
+ dipoleinput=left,%
+ inputarrow=false,%
+ tripoleinput=left,%
+ tripolestyle=bottom,%
+ tripoleconfig=left,%
+ quadripoleinput=left,%
+ couplerstyle=hybrid}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% monopole
+%%% newground: groundstyle: (ads), old, triangle
+%%% Antenna: antennastyle: (two), three, triangle
+%%% Oscillator: oscioutput: (top), right, bottom, left,
+%%% inputarrow: (false), true
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% newground %%%
+\def\newground{\@ifnextchar[{\pst@newground}{\pst@newground[]}}
+\def\pst@newground[#1]{%
+ \@ifnextchar({\pst@newgroundi[#1]{0}}{\pst@newgroundi[#1]}%
+}
+\def\pst@newgroundi[#1]#2(#3){%
+ \psset{#1}%
+ \rput{#2}(#3){%
+ \ifx\psk@Gstyle\pst@Gstyle@ads
+ \psline[linewidth=1.5\pslinewidth]{c-c}(-0.3,-0.5)(0.3,-0.5)
+ \psline[linewidth=1.5\pslinewidth]{c-c}(-0.2,-0.6)(0.2,-0.6)
+ \psline[linewidth=1.5\pslinewidth]{c-c}(-0.1,-0.7)(0.1,-0.7)
+ \fi
+ \ifx\psk@Gstyle\pst@Gstyle@old
+ \psline[linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,-0.5)
+ \fi
+ \ifx\psk@Gstyle\pst@Gstyle@triangle
+ \pstriangle[linewidth=1.5\pslinewidth](0,-0.5)(0.4,-0.4)
+ \fi
+ \psline(0,0)(0,-0.5)
+ \pscircle*(#3){2\pslinewidth}%
+ }
+ \ignorespaces%
+}
+%
+%%% antenna %%%
+%
+\def\antenna{\@ifnextchar[{\pst@antenna}{\pst@antenna[]}}
+\def\pst@antenna[#1]{%
+ \@ifnextchar({\pst@antennai[#1]{0}}{\pst@antennai[#1]}%
+}
+\def\pst@antennai[#1]#2(#3){%
+ \psset{#1}%
+ \rput{#2}(#3){%
+ \ifx\psk@Astyle\pst@Astyle@two
+ \psline[linewidth=1.5\pslinewidth](0,.75)(-0.2,1.25)
+ \psline[linewidth=1.5\pslinewidth](0,.75)(0.2,1.25)
+ \fi
+ \ifx\psk@Astyle\pst@Astyle@three
+ \psline[linewidth=1.5\pslinewidth](0,.75)(-0.2,1.25)
+ \psline[linewidth=1.5\pslinewidth](0,.75)(0,1.25)
+ \psline[linewidth=1.5\pslinewidth](0,.75)(0.2,1.25)
+ \fi
+ \ifx\psk@Astyle\pst@Astyle@triangle
+ \pstriangle[linewidth=1.5\pslinewidth](0,1.25)(0.4,-0.5)
+ \fi
+ \psline(0,0)(0,.75)
+ }
+ \ignorespaces%
+}
+%
+%%% oscillator %%%
+%
+\def\oscillator{\@ifnextchar[{\pst@oscillator}{\pst@oscillator[]}}
+\def\pst@oscillator[#1]{%
+ \@ifnextchar({\pst@oscillatori[#1]{0}}{\pst@oscillatori[#1]}%
+}
+\def\pst@oscillatori[#1]#2(#3)#4#5{%
+ \psset{#1}%
+ \rput{#2}(#3){%
+ \pscircle[#5,linewidth=1.5\pslinewidth](0,0){0.5}
+ \ifx\psk@LOstyle\pst@LOstyle@crystal
+ \psline(-0.2,-0.35)(-0.2,0.35)
+ \psframe(-0.15,-0.3)(0.15,0.3)
+ \psline(0.2,-0.35)(0.2,0.35)
+ \else
+ \pscurve[linewidth=1.5\pslinewidth]{c-c}(-0.3,0.000)(-0.225,0.088375)(-0.15,0.1250)(-0.075,0.088375)%
+ (0,0.000)(0.075,-0.088375)(0.15,-0.125)(0.225,-0.088375)(0.3,0.000)
+ \fi
+ \ifx\psk@LOoutput\pst@LOoutput@left
+ \pst@getcoor{#3}\pst@tempa
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ /XC X1 def
+ /YC Y1 -0.6 add def
+ XC YC){C@}
+ \rput[t]{#2}(C@){#4}
+ \ifPst@inputarrow
+ \psline[arrows=->,arrowinset=0](-0.5,0)(-1,0)
+ \else
+ \psline(-0.5,0)(-1,0)
+ \fi
+ \fi
+ \ifx\psk@LOoutput\pst@LOoutput@top
+ \pst@getcoor{#3}\pst@tempa
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ /XC X1 def
+ /YC Y1 -0.6 add def
+ XC YC){C@}
+ \rput[t]{#2}(C@){#4}
+ \ifPst@inputarrow
+ \psline[arrows=->,arrowinset=0](0,0.5)(0,1)
+ \else
+ \psline(0,0.5)(0,1)
+ \fi
+ \fi
+ \ifx\psk@LOoutput\pst@LOoutput@right
+ \pst@getcoor{#3}\pst@tempa
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ /XC X1 def
+ /YC Y1 -0.6 add def
+ XC YC){C@}
+ \rput[t]{#2}(C@){#4}
+ \ifPst@inputarrow
+ \psline[arrows=->,arrowinset=0](0.5,0)(1,0)
+ \else
+ \psline(0.5,0)(1,0)
+ \fi
+ \fi
+ \ifx\psk@LOoutput\pst@LOoutput@bottom
+ \pst@getcoor{#3}\pst@tempa
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ /XC X1 def
+ /YC Y1 0.6 add def
+ XC YC){C@}
+ \rput[b]{#2}(C@){#4}
+ \ifPst@inputarrow
+ \psline[arrows=->,arrowinset=0](0,-0.5)(0,-1)
+ \else
+ \psline(0,-0.5)(0,-1)
+ \fi
+ \fi
+ }
+ \ignorespaces%
+}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Dipole
+%%% filtre: dipolestyle: (bandpass), lowpass, highpass
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%% isolator: dipoleinput: (left), right
+%%% inputarrow: (false), true
+%%% freqmult: dipolestyle: (multiplier), divider,
+%%% value: (N), integer
+%%% programmable: (false) true
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%% phaseshifter:
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%% vco:
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%% amplifier:
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%% detector:
+%%% inputarrow: (false), true
+%%% dipoleinput: (left), right
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% FILTER %%%
+%
+\def\filter{\@ifnextchar[{\pst@filter}{\pst@filter[]}}
+%
+\def\pst@filter[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@filter%
+ }\ignorespaces}
+%
+\def\pst@multidipole@filter{\@ifnextchar[{\pst@multidipole@filter@}%
+{\pst@multidipole@filter@[]}}
+%
+\def\pst@multidipole@filter@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\filter[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@filter{%
+ \pnode(-0.5,0){dipole@1}
+ \pnode(0.5,0){dipole@2}
+ \psframe[linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,0.5)
+ \pscurve[linewidth=1.5\pslinewidth]{c-c}(-0.4,0.250)(-0.2,0.3750)(0,0.250)(0.2,0.1250)(0.4,0.250)
+ \pscurve[linewidth=1.5\pslinewidth]{c-c}(-0.4,0.000)(-0.2,0.1250)(0,0.000)(0.2,-0.125)(0.4,0.000)
+ \pscurve[linewidth=1.5\pslinewidth]{c-c}(-0.4,-0.25)(-0.2,-0.125)(0,-0.25)(0.2,-0.375)(0.4,-0.25)
+% \psline{c-c}(-0.1,0.2)(0.1,0.3)
+ \ifx\psk@Dstyle\pst@Dstyle@lowpass
+ \psline[fillstyle=none]{c-c}(-0.1,0.2)(0.1,0.3)
+ \psline[fillstyle=none]{c-c}(-0.1,-0.05)(0.1,0.05)
+ \else
+ \ifx\psk@Dstyle\pst@Dstyle@highpass
+ \psline[fillstyle=none]{c-c}(-0.1,-0.3)(0.1,-0.2)
+ \psline[fillstyle=none]{c-c}(-0.1,-0.05)(0.1,0.05)
+ \else
+ \psline[fillstyle=none]{c-c}(-0.1,0.2)(0.1,0.3)
+ \psline[fillstyle=none]{c-c}(-0.1,-0.3)(0.1,-0.2)
+ \fi
+ \fi
+}
+
+%%% ISOLATOR %%%
+%
+\def\isolator{\@ifnextchar[{\pst@isolator}{\pst@isolator[]}}
+%
+\def\pst@isolator[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@isolator%
+ }\ignorespaces}
+%
+\def\pst@multidipole@isolator{\@ifnextchar[{\pst@multidipole@isolator@}%
+{\pst@multidipole@isolator@[]}}
+%
+\def\pst@multidipole@isolator@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\isolator[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@isolator{%
+ \pnode(-0.5,0){dipole@1}
+ \pnode(0.5,0){dipole@2}
+ \psframe[linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,0.5)
+ \ifx\psk@Dinput\pst@Dinput@right
+ \psline[fillstyle=none,linewidth=1.5\pslinewidth,arrowinset=0]{<-}(-0.4,0)(0.4,0)
+ \else
+ \psline[fillstyle=none,linewidth=1.5\pslinewidth,arrowinset=0]{->}(-0.4,0)(0.4,0)
+ \fi
+}
+%
+%%% Frequency Multiplier or Divider %%%
+\def\freqmult{\@ifnextchar[{\pst@freqmult}{\pst@freqmult[]}}
+%
+\def\pst@freqmult[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@freqmult%
+ }\ignorespaces}
+%
+\def\pst@multidipole@freqmult{\@ifnextchar[{\pst@multidipole@freqmult@}%
+{\pst@multidipole@freqmult@[]}}
+%
+\def\pst@multidipole@freqmult@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\freqmult[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@freqmult{%
+ \pnode(-0.5,0){dipole@1}
+ \pnode(0.5,0){dipole@2}
+ \psframe[linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,0.5)
+ \ifPst@programmable%
+ \psline[fillstyle=none](-0.4,-0.75)(-0.4,-0.5)
+ \psline[fillstyle=none](-0.2,-0.75)(-0.2,-0.5)
+ \psline(0,-0.75)(0,-0.5)
+ \psline[fillstyle=none](0.2,-0.75)(0.2,-0.5)
+ \psline[fillstyle=none](0.4,-0.75)(0.4,-0.5)
+ \ifx\psk@Dstyle\pst@Dstyle@divider
+ \rput(0,0){$\div\textrm{N}$}
+ \else
+ \rput(0,0){$\times\textrm{N}$}
+ \fi
+ \else
+ \ifx\psk@FMvalue\pst@FMvalue@value
+ \ifx\psk@Dstyle\pst@Dstyle@divider
+ \rput(0,0){$\div\textrm{N}$}
+ \else
+ \rput(0,0){$\times\textrm{N}$}
+ \fi
+ \else
+ \ifx\psk@Dstyle\pst@Dstyle@divider
+ \rput(0,0){$\div\textrm{\psk@FMvalue}$}
+ \else
+ \rput(0,0){$\times\textrm{\psk@FMvalue}$}
+ \fi
+ \fi
+ \fi%
+}
+%
+%%% phaseshifter
+\def\phaseshifter{\@ifnextchar[{\pst@phaseshifter}{\pst@phaseshifter[]}}
+%
+\def\pst@phaseshifter[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@phaseshifter%
+ }\ignorespaces}
+%
+\def\pst@multidipole@phaseshifter{\@ifnextchar[{\pst@multidipole@phaseshifter@}%
+{\pst@multidipole@phaseshifter@[]}}
+%
+\def\pst@multidipole@phaseshifter@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\phaseshifter[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@phaseshifter{%
+ \pnode(-0.4,0){dipole@1}
+ \pnode(0.4,0){dipole@2}
+ \pscircle[linewidth=1.5\pslinewidth](0,0){0.4}
+ \psline[fillstyle=none,linewidth=1.5\pslinewidth,arrowinset=0]{->}(-0.5,-0.5)(0.5,0.5)
+}
+%
+%%% VCO
+\def\vco{\@ifnextchar[{\pst@vco}{\pst@vco[]}}
+%
+\def\pst@vco[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@vco%
+ }\ignorespaces}
+%
+\def\pst@multidipole@vco{\@ifnextchar[{\pst@multidipole@vco@}%
+{\pst@multidipole@vco@[]}}
+%
+\def\pst@multidipole@vco@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\vco[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@vco{%
+ \pnode(-0.5,0){dipole@1}
+ \pnode(0.5,0){dipole@2}
+ \pscircle[linewidth=1.5\pslinewidth](0,0){0.5}
+ \pscurve[linewidth=1.5\pslinewidth]{c-c}(-0.3,0.000)(-0.225,0.088375)(-0.15,0.1250)(-0.075,0.088375)%
+ (0,0.000)(0.075,-0.088375)(0.15,-0.125)(0.225,-0.088375)(0.3,0.000)
+}
+%
+%%% amplifier %%%
+%
+\def\amplifier{\@ifnextchar[{\pst@amplifier}{\pst@amplifier[]}}
+%
+\def\pst@amplifier[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@amplifier%
+ }\ignorespaces}
+%
+\def\pst@multidipole@amplifier{\@ifnextchar[{\pst@multidipole@amplifier@}%
+{\pst@multidipole@amplifier@[]}}
+%
+\def\pst@multidipole@amplifier@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\amplifier[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@amplifier{%
+ \pnode(-0.433,0){dipole@1}
+ \pnode(0.433,0){dipole@2}
+ \ifx\psk@Dinput\pst@Dinput@right
+ \pstriangle[gangle=90,linewidth=1.5\pslinewidth](0.433,0)(1,0.866)
+ \else
+ \pstriangle[gangle=-90,linewidth=1.5\pslinewidth](-0.433,0)(1,0.866)
+ \fi
+}
+%
+%%% detector %%%
+%
+\def\detector{\@ifnextchar[{\pst@detector}{\pst@detector[]}}
+%
+\def\pst@detector[#1](#2)(#3)#4{{%
+ \pst@draw@dipole{#1}{#2}{#3}{#4}\pst@draw@detector%
+ }\ignorespaces}
+%
+\def\pst@multidipole@detector{\@ifnextchar[{\pst@multidipole@detector@}%
+{\pst@multidipole@detector@[]}}
+%
+\def\pst@multidipole@detector@[#1]#2{%
+ \expandafter\def\csname pst@tmp@\number\pst@count@iii\endcsname{#2}%
+ {\psset{#1}%
+ \ifPst@parallel\aftergroup\advance\aftergroup\pst@count@i\aftergroup\m@ne\fi}%
+ \pst@count@ii=\pst@count@i%
+ \advance\pst@count@ii\@ne%
+ \toks0\expandafter{\pst@multidipole@output}%
+ \edef\pst@multidipole@output{%
+ \the\toks0%
+ \pst@multidipole@def@coor%
+ \noexpand\detector[#1]%
+ (! X@\the\pst@count@i\space Y@\the\pst@count@i)%
+ (! X@\the\pst@count@ii\space Y@\the\pst@count@ii)%
+ {\noexpand\csname pst@tmp@\number\pst@count@iii\endcsname}%
+ }%
+ \pst@multidipole@
+}
+%
+\def\pst@draw@detector{%
+ \pnode(-0.5,0){dipole@1}
+ \psline[fillstyle=none](-0.5,0)(-0.2165,0)
+ \pnode(0.5,0){dipole@2}
+ \psline[fillstyle=none](0.5,0)(0.2165,0)
+ \psframe[linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,0.5)
+ \ifx\psk@Dinput\pst@Dinput@right
+ \pstriangle[gangle=90,linewidth=1.5\pslinewidth,fillstyle=none](0.2165,0)(0.5,0.433)
+ \psline[fillstyle=none,linewidth=1.5\pslinewidth](-0.2165,-0.25)(-0.2165,0.25)
+ \else
+ \pstriangle[gangle=-90,linewidth=1.5\pslinewidth,fillstyle=none](-0.2165,0)(0.5,0.433)
+ \psline[fillstyle=none,linewidth=1.5\pslinewidth](0.2165,-0.25)(0.2165,0.25)
+ \fi
+}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Tripole
+%%% mixer: tripolestyle:(bottom), top
+%%% inputarrow: (false) | true
+%%% tripoleinput: (left) | right
+%%% Circulator: tripolestyle=(circulator), isolator
+%%% tripoleconfig: (left) | right
+%%% inputarrow: (false) | true
+%%% tripoleinput: (left) | right
+%%% AGC: tripoleinput=(left)|right
+%%% inputarrow: (false) | true
+%%% tripoleinput: (left) | right
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\def\mixer{\pst@object{mixer}}
+\def\mixer@i(#1)(#2)(#3)#4#5{%
+ \addbefore@par{dimen=middle}%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \pst@getcoor{#3}\pst@tempc
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ \pst@tempc /Y3 exch \pst@number\psyunit div def
+ /X3 exch \pst@number\psxunit div def
+ /XC X1 X2 add 2 div def
+ /YC Y2 def
+ XC YC){C@}
+ \rput(C@){\pst@draw@mixer{#3}{#4}{#5}}
+ \ifx\psk@Tinput\pst@Tinput@left%
+ \ifPst@inputarrow
+ \ncangle[arrows=->,arrowinset=0,arm=0.5,angleB=180]{#1}{Tport@left}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=180]{#1}{Tport@left}
+ \fi
+ \ncangle[arrows=-,arm=0.5,angleB=0]{#2}{Tport@right}
+ \else
+ \ifPst@inputarrow
+ \ncangle[arrows=<-,arrowinset=0,arm=0.5,angleB=180]{Tport@right}{#2}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=180]{Tport@right}{#2}
+ \fi
+ \ncangle[arrows=-,arm=0.5,angleB=180]{#1}{Tport@left}
+ \fi
+ \pcline[linestyle=none](#1)(#2)% for the endarrows
+ \pcline[linestyle=none](#2)(#3)% for the endarrows
+ \end@ClosedObj
+ \ignorespaces%
+}
+\newcommand{\pst@draw@mixer}[3]{%
+ \pscircle[#3,linewidth=1.5\pslinewidth](0,0){0.5}
+ \psline[linewidth=1.5\pslinewidth](-0.3535,-0.3535)(0.3535,0.3535)
+ \psline[linewidth=1.5\pslinewidth](-0.3535,0.3535)(0.3535,-0.3535)
+ \pnode(-0.5,0){Tport@left}
+ \pnode(0.5,0){Tport@right}
+ \ifx\psk@tripole@style\pst@tripole@style@top%
+ \rput[t](0,-0.6){#2}
+ \pnode(0,0.5){Tport@center}
+ \ifPst@inputarrow
+ \ncangle[arrows=->,arrowinset=0,arm=0.5,angleB=90]{#1}{Tport@center}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=90]{#1}{Tport@center}
+ \fi
+ \else
+ \rput[b](0,0.6){#2}
+ \pnode(0,-0.5){Tport@center}
+ \ifPst@inputarrow
+ \ncangle[arrows=->,arrowinset=0,arm=0.5,angleB=-90]{#1}{Tport@center}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=-90]{#1}{Tport@center}
+ \fi
+ \fi
+}
+%
+%%% Circulator
+%
+\def\circulator{\pst@object{circulator}}
+\def\circulator@i#1(#2)(#3)(#4)#5#6{%
+ \addbefore@par{dimen=middle}%
+ \begin@ClosedObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#3}\pst@tempb
+ \pst@getcoor{#4}\pst@tempc
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ \pst@tempc /Y3 exch \pst@number\psyunit div def
+ /X3 exch \pst@number\psxunit div def
+ /XC X1 X2 add 2 div def
+ /YC Y1 Y2 add 2 div def
+ XC YC){C@}
+ \rput{#1}(C@){\pst@draw@circulator{#4}{#5}{#6}}
+ \nput{! 90 #1 add}{Tport@label}{#5}
+ \ifPst@inputarrow
+ \ncline[arrows=->,arrowinset=0]{#2}{Tport@input} %,arm=0.5,angleB=180
+ \else
+ \ncline[arrows=-]{#2}{Tport@input}
+ \fi
+ \ncline[arrows=-]{#3}{Tport@output} %,arm=0.5,angleB=0
+ \pcline[linestyle=none](#2)(#3)% for the endarrows
+ \pcline[linestyle=none](#3)(#4)% for the endarrows
+ \end@ClosedObj
+ \ignorespaces%
+}
+\newcommand{\pst@draw@circulator}[3]{%
+ \pscircle[#3,linewidth=1.5\pslinewidth](0,0){0.5}
+ \pnode(0,0.6){Tport@label}
+ \ifx\psk@Tconfig\pst@Tconfig@left%
+ \psarc[linewidth=1.5\pslinewidth,arrowinset=0]{<-}{0.35}{15}{155}
+ \pnode(-0.5,0){Tport@input}
+ \pnode(0.5,0){Tport@output}
+ \else
+ \psarc[linewidth=1.5\pslinewidth,arrowinset=0]{->}{0.35}{25}{165}
+ \pnode(-0.5,0){Tport@output}
+ \pnode(0.5,0){Tport@input}
+ \fi
+ \ifx\psk@tripole@style\pst@tripole@style@isolator%
+ \psline(0,-0.5)(0,-0.95)
+ \multips{0}(-0.225,-1)(0.1,0){5}%
+ {\psline[arrows=-,linewidth=1.5\pslinewidth](0,0)(0.025,0.05)(0.075,-0.05)(0.1,0)}%
+ \else
+ \pnode(0,-0.5){Tport@center}
+ \ncline[arrows=-]{#1}{Tport@center}
+ \fi
+}
+%
+%%% AGC
+\def\agc{\pst@object{agc}}
+\def\agc@i(#1)(#2)(#3)#4#5{%
+ \addbefore@par{dimen=middle}%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \pst@getcoor{#3}\pst@tempc
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ \pst@tempc /Y3 exch \pst@number\psyunit div def
+ /X3 exch \pst@number\psxunit div def
+ /XC X1 X2 add 2 div def
+ /YC Y2 def
+ XC YC){C@}
+ \rput(C@){\pst@draw@agc{#1}{#2}{#4}{#5}}
+ \ncangle[arrows=-,arm=0.5,angleB=-90]{#3}{Tport@center}
+ \pcline[linestyle=none](#1)(#2)% for the endarrows
+ \pcline[linestyle=none](#2)(#3)% for the endarrows
+ \end@ClosedObj
+ \ignorespaces%
+}
+\newcommand{\pst@draw@agc}[4]{%
+ \pnode(-0.433,0){Tport@left}
+ \pnode(0.433,0){Tport@right}
+ \pnode(0,-0.5){Tport@center}
+ \rput[b](0,0.6){#3}
+ \psline[arrows=->,arrowinset=0](0,-0.5)(0,-0.25)
+ \ifx\psk@Tinput\pst@Tinput@left%
+ \pstriangle[#4,gangle=-90,linewidth=1.5\pslinewidth](-0.433,0)(1,0.866)
+ \psline[linewidth=1.5\pslinewidth,arrows=->,arrowinset=0](-0.55,-0.5)(0.25,0.5)
+ \ifPst@inputarrow
+ \ncangle[arrows=->,arrowinset=0,arm=0.5,angleB=180]{#1}{Tport@left}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=180]{#1}{Tport@left}
+ \fi
+ \ncangle[arrows=-,arm=0.5,angleB=0]{#2}{Tport@right}
+ \else
+ \pstriangle[#4,gangle=90,linewidth=1.5\pslinewidth](0.433,0)(1,0.866)
+ \psline[linewidth=1.5\pslinewidth,arrows=->,arrowinset=0](0.55,-0.5)(-0.25,0.5)
+ \ifPst@inputarrow
+ \ncangle[arrows=<-,arrowinset=0,arm=0.5,angleB=180]{Tport@right}{#2}
+ \else
+ \ncangle[arrows=-,arm=0.5,angleB=180]{Tport@right}{#2}
+ \fi
+ \ncangle[arrows=-,arm=0.5,angleB=180]{#1}{Tport@left}
+ \fi
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Quadripole
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Coupler %%%
+\def\coupler{\pst@object{coupler}}
+\def\coupler@i(#1)(#2)(#3)(#4)#5#6{%
+ \addbefore@par{dimen=middle,arm=0}%
+ \begin@ClosedObj%
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \pst@getcoor{#3}\pst@tempc
+ \pst@getcoor{#4}\pst@tempd
+ \pnode(!%
+ \pst@tempa /Y1 exch \pst@number\psyunit div def
+ /X1 exch \pst@number\psxunit div def
+ \pst@tempb /Y2 exch \pst@number\psyunit div def
+ /X2 exch \pst@number\psxunit div def
+ \pst@tempc /Y3 exch \pst@number\psyunit div def
+ /X3 exch \pst@number\psxunit div def
+ \pst@tempc /Y4 exch \pst@number\psyunit div def
+ /X4 exch \pst@number\psxunit div def
+ /XC X1 X2 lt {X2} {X1} ifelse X3 X4 lt {X3} {X4} ifelse add 2 div def
+ /YC Y1 -0.4 add def
+ XC YC){C@}
+ \rput(C@){\pst@draw@coupler{#6}}
+ \ncangle[arrows=-,angleA=0,angleB=-180]{#1}{inup@}
+ \ncangle[arrows=-,angleA=180,angleB=0]{#3}{outup@}
+ \ifx\psk@Qinput\pst@Qinput@left%
+ \ifx\psk@Qstyle\pst@Qstyle@hybrid
+ \ncangle[arrows=-,angleA=0,angleB=-180]{#2}{indown@}
+ \fi
+ \ncangle[arrows=-,angleA=180,angleB=0]{#4}{outdown@}
+ \else
+ \ncangle[arrows=-,angleA=0,angleB=-180]{#2}{indown@}
+ \ifx\psk@Qstyle\pst@Qstyle@hybrid
+ \ncangle[arrows=-,angleA=180,angleB=0]{#4}{outdown@}
+ \fi
+ \fi
+% \ncangle[arrows=-,angleA=180,angleB=0]{#4}{outdown@}
+ \ncline[arrows=-,linestyle=none,fillstyle=none]{inup@}{outup@}
+ \naput{#5}
+ \pcline[linestyle=none](#1)(#3)% for the end arrows
+ \pcline[linestyle=none](#2)(#4)% for the end arrows
+ \end@ClosedObj%
+ \ignorespaces%
+}
+%
+\newcommand{\pst@draw@coupler}[1]{%
+ \pnode(-0.75,0.4){inup@}
+ \pnode(0.75,0.4){outup@}
+ \psframe[#1,linewidth=1.5\pslinewidth](-0.5,-0.5)(0.5,0.5)
+ \psline(-0.5,0.4)(0.5,0.4)
+ \psline(-0.5,-0.4)(0.5,-0.4)
+ \psline(-0.4,0.35)(0.4,-0.35)
+ \psline(-0.4,-0.35)(0.4,0.35)
+%
+ \ifx\psk@Qinput\pst@Qinput@left%
+ \pnode(0.75,-0.4){outdown@}
+ \ifPst@inputarrow%
+ \psline[arrows=->,arrowinset=0](-0.75,0.4)(-0.5,0.4)
+ \else
+ \psline(-0.75,0.4)(-0.5,0.4)
+ \fi
+ \psline(0.5,0.4)(0.75,0.4)
+ \psline(0.5,-0.4)(0.75,-0.4)
+ \ifx\psk@Qstyle\pst@Qstyle@hybrid
+ \pnode(-0.75,-0.4){indown@}
+ \ifPst@inputarrow%
+ \psline[arrows=->,arrowinset=0](-0.75,-0.4)(-0.5,-0.4)
+ \else
+ \psline(-0.75,-0.4)(-0.5,-0.4)
+ \fi
+ \else
+ \ifx\psk@Qstyle\pst@Qstyle@directional
+ \psline[arrows=-,linewidth=1.5\pslinewidth](-0.8,-0.75)(-0.8,-0.675)
+ \multips{90}(-0.8,-0.675)(0,0.1){4}%
+ {\psline[arrows=-,linewidth=1.5\pslinewidth](0,0)(0.025,0.05)(0.075,-0.05)(0.1,0)}%
+ \psline[arrows=-,linewidth=1.5\pslinewidth](-0.8,-0.275)(-0.8,-0.2)
+ \psline(-0.75,-0.4)(-0.5,-0.4)
+ \fi
+ \fi
+ \else
+ \pnode(-0.75,-0.4){indown@}
+ \ifPst@inputarrow
+ \psline[arrows=->,arrowinset=0](0.75,0.4)(0.5,0.4)
+ \else
+ \psline(0.75,0.4)(0.5,0.4)
+ \fi
+ \psline(-0.5,0.4)(-0.75,0.4)
+ \psline(-0.5,-0.4)(-0.75,-0.4)
+ \ifx\psk@Qstyle\pst@Qstyle@hybrid
+ \pnode(0.75,-0.4){outdown@}
+ \ifPst@inputarrow%
+ \psline[arrows=->,arrowinset=0](0.75,-0.4)(0.5,-0.4)
+ \else
+ \psline(0.75,-0.4)(0.5,-0.4)
+ \fi
+ \else
+ \ifx\psk@Qstyle\pst@Qstyle@directional
+ \psline[arrows=-,linewidth=1.5\pslinewidth](0.8,-0.75)(0.8,-0.675)
+ \multips{90}(0.8,-0.675)(0,0.1){4}%
+ {\psline[arrows=-,linewidth=1.5\pslinewidth](0,0)(0.025,0.05)(0.075,-0.05)(0.1,0)}%
+ \psline[arrows=-,linewidth=1.5\pslinewidth](0.8,-0.275)(0.8,-0.2)
+ \psline(0.75,-0.4)(0.5,-0.4)
+ \fi
+ \fi
+ \fi
+%
+}
+%
+\catcode`\@=\PstAtCode\relax
%
\endinput
%