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/borceux/MicroDiagram | |
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/borceux/MicroDiagram')
-rw-r--r-- | Master/texmf-dist/tex/generic/borceux/MicroDiagram | 1917 |
1 files changed, 1917 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/borceux/MicroDiagram b/Master/texmf-dist/tex/generic/borceux/MicroDiagram new file mode 100644 index 00000000000..3ab5c4bd852 --- /dev/null +++ b/Master/texmf-dist/tex/generic/borceux/MicroDiagram @@ -0,0 +1,1917 @@ +% DIAGRAM MACROS (version 3.1) +% MICRO-DIAGRAM FILE +% JUST PLAIN ARROWS +% ARROWHEADS DESIGNED AS \vector + +\catcode`\@=11 + +%%%%% FIXING SOME PARAMETERS + +%%% Fixing the default scaling factor for diagrams +\newcount\defaultscale +\def\setdefaultscale#1{\global\defaultscale=#1} +\setdefaultscale{100} + +\newcount\actualtextarrowspace +\newcount\actualtextarrowlength + +% \computetextparameters computes the parameters +% required to design a text arrow +\newcommand{\computetextparameters}% +{\global\actualtextarrowspace=\textarrowlength% +\global\advance\actualtextarrowspace by 3% +\global\actualtextarrowlength=\textarrowlength% +\global\multiply\actualtextarrowlength by 100} + +%%% Fixing the default length of text arrows +\newcount\textarrowlength +\def\settextarrowlength#1{\global\textarrowlength=#1% +\computetextparameters} +\settextarrowlength{20} + +\newcount\actualdisplayarrowspace +\newcount\actualdisplayarrowlength + +% \computedisplayparameters computes the parameters +% required to design a displayed arrow +\newcommand{\computedisplayparameters}% +{\global\actualdisplayarrowspace=\displayarrowlength% +\global\advance\actualdisplayarrowspace by 3% +\global\actualdisplayarrowlength=\displayarrowlength% +\global\multiply\actualdisplayarrowlength by 100} + +%%% Fixing the default length of displayed arrows +\newcount\displayarrowlength +\def\setdisplayarrowlength#1{\global\displayarrowlength=#1% +\computedisplayparameters} +\setdisplayarrowlength{30} + +% ERROR MESSAGES + +% Checking the next token without gobbling blanks +\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}% +\futurelet\@tempc\@ifntok} +\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% +\@tempd} + +% \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error +% halt with error help message HLP. +\def\@diagramerror#1#2{% +\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}% +\typeout{Diagram error. \space See User's guide for explanation.^^J + \space\@spaces\@spaces\@spaces Type \space H <return> \space for + immediate help.}\errmessage{#1}} + +\newif\ifdiagram + +% error test and message for text arrows +\def\testtextmode{% +\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you +should use east or west diagram arrows, not forward or backward text arrows. +Try proceeding now, typeset could succeed but with unpredictable output.} +\else\ifmmode\relax\else% +\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode. +Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi} + +% error test and message for diagram arrows +\def\testdiagrammode{\ifdiagram\relax\else +\@diagramerror{Diagram arrows are not allowed in formulas}{Here you +should use forward or backward text arrows, not diagram arrows. Proceeding +could work with unpredictable output, but overflow arithmetic +could also occur.}\fi} + +% error test and message for diagrams in math mode +\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams +allowed in math mode.}{You should leave math mode before +introducing your diagram. All items in the diagram will automatically be +processed in math mode.}\else\relax\fi\global\diagramtrue} + +\global\diagramfalse + +% INITIALIZATION + +\newcount\SCALE% + +\newcount\NUMBER% + +\newcount\LINE% + +\newcount\COLUMN% + +\newcount\WIDTH% + +\newcount\SOURCE% + +\newcount\ARROW% + +\newcount\TARGET% + +\newcount\ARROWLENGTH% + +\newcounter{x}% + +\newcounter{y}% + +\newcounter{z}% + +\newcounter{horizontal}% + +\newcounter{vertical}% + +\newskip\itemlength% + +\newskip\firstitem% + +\newskip\seconditem% + +\newcommand{\printarrow}{}% + +\newcount\Y% + +\newcount\Z% + + +% MACROS FOR DESIGNING DIAGRAMS + + +% \truex{n} divides n x 100 by the scaling factor and puts the result +% in counter x +\newcommand{\truex}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{x}{\NUMBER}}% + +% \truey{n} divides n x 100 by the scaling factor and puts the result +% in counter y +\newcommand{\truey}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{y}{\NUMBER}}% + +% \truez{n} divides n x 100 by the scaling factor and puts the result +% in counter z +\newcommand{\truez}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{z}{\NUMBER}}% + + +% \changecounters computes the values of the various parameters required +% to design an arrow with adjusted length. +\newcommand{\changecounters}[1]{% +\SOURCE=\ARROW% +\ARROW=\TARGET% +\settowidth{\itemlength}{#1}% +\ifdim \itemlength > 2800\unitlength% +\addtolength{\itemlength}{-2800\unitlength}% +\TARGET=\itemlength% +\divide\TARGET by 1310% +\multiply\TARGET by 100% +\divide\TARGET by \SCALE% +\else% +\TARGET=0% +\fi% +\ARROWLENGTH=5000% +\advance\ARROWLENGTH by -\SOURCE% +\advance\ARROWLENGTH by -\TARGET% +\divide\ARROWLENGTH by 100% +\advance\SOURCE by -\TARGET}% + +% \initialize initializes the counters required to produce the diagram +% and defines the formal dimensions of the diagram to be (0,0). +\newcommand{\initialize}[1]{% +\LINE=0% +\COLUMN=0% +\WIDTH=0% +\ARROW=0% +\TARGET=0% +\changecounters{#1}% +\renewcommand{\printarrow}{#1}% +\begin{center}% +\vspace{2pt}% +\begin{picture}(0,0)}% + +% \DIAGV{n} starts the construction of a diagram scaled by a factor +% n percent, computes the scaled unit length and the unscaling factor. +\newcommand{\DIAGV}[2]{% +\checkmode% +\SCALE=#1% +\setlength{\unitlength}{655sp}% +\multiply\unitlength by \SCALE% +\divide\unitlength by 100% +\initialize{\mbox{$#2$}}}% + +% \n introduces the next item of the diagram, computes its parameters +% and prints the previous item. +\newcommand{\n}[1]{% +\changecounters{\mbox{$#1$}}% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\renewcommand{\printarrow}{\mbox{$#1$}}% +\advance\COLUMN by 4000}% + +% \nn prints the last item of a line and starts a new line. +\newcommand{\nn}[1]{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\advance\LINE by -4000% +\COLUMN=0% +\ARROW=0% +\TARGET=0% +\changecounters{\mbox{$#1$}}% +\renewcommand{\printarrow}{\mbox{$#1$}}}% + +% \conclude prints the last item of the diagram and sets the +% dimensions of the diagram; +\newcommand{\conclude}{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\setcounter{horizontal}{\WIDTH}% +\setcounter{vertical}{-\LINE}% +\end{picture}}% + +% \diag prints the last item of the diagram and takes care of the spacing +\newcommand{\diag}{% +\conclude% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}% +\vspace{12pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \diagv{t}{l}{b} prints the last item of the diagram and +% adds a t points extra space at the top of the diagram +% adds a l points extra space at the left of the diagram +% adds a b points extra space at the bottom of the diagram +\newcommand{\diagv}[3]{% +\conclude% +\NUMBER=#1% +\rule{0pt}{\NUMBER pt}% +\hspace*{-#2pt}% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}%6 +\NUMBER=#3% +\advance\NUMBER by 12% +\vspace*{\NUMBER pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \movename(n,m){f} moves the name f of the arrow n points right +% and m points up. +\def\movename(#1,#2)#3{% +\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% + +% \movearrow(n,m){\...} moves arrow \... n points right +% and m points up. +\def\movearrow(#1,#2)#3{% +\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% + +% \movevertex(n,m){A} moves vertex A n points right and m points up +\def\movevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% + +% \movevertexleft{XXX} moves vertex XXX left +\newcommand{\movevertexleft}[1]{\makebox[2800\unitlength][r]{$#1$}} + +% \movevertexright{XXX} moves vertex XXX right +\newcommand{\movevertexright}[1]{\makebox[2800\unitlength][l]{$#1$}} + +% \crosslength{P}{Q} computes the formal dimensions of the +% superposition of pictures P and Q +\newcommand{\crosslength}[2]{% +\settowidth{\firstitem}{#1}% +\settowidth{\seconditem}{#2}% +\ifdim\firstitem < \seconditem% +\itemlength=\seconditem% +\else% +\itemlength=\firstitem% +\fi% +\divide\itemlength by 2% +\hspace{\itemlength}}% + +% \cross{P}{Q} superposes pictures P and Q +\newcommand{\cross}[2]{% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0){$#1$}}% +\thinlines% +\put(0,0){\makebox(0,0){$#2$}}% +\thinlines% +\end{picture}% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}}% + +% \bold prints the next arrow in bold-face type +\newcommand{\bold}{\ifdiagram\thicklines\else\typeout{Sorry: command +\string\bold does not apply to text arrows; I am ignoring it.}\fi} + +% \unbold switches back to normal arrows +\newcommand{\unbold}{\thinlines} + +% SHORTENING THE TYPING OF DIAGRAMS + +\def\basicDIAG#1¤{\DIAGV{\defaultscale}{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicDIAGV[#1]#2¤{\DIAGV{#1}{#2}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicn#1¤{\n{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicnn#1¤{\nn{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\finishline#1{\@ifnextchar\end{\diag}% +{\@ifnextchar\spacing{\relax}{\basicnn}}} +\def\spacing(#1,#2,#3){\diagv{#1}{#2}{#3}} + +\newif\ifcaption% + +\newenvironment{diagram}{% +\iffloatdiag\relax\else +\global\def\diagramcaption##1{% +\global\captiontrue% +\global\def\@diagcaption{##1}}% +\global\def\@diagcaption{}\fi% +\@ifnextchar[{\basicDIAGV}{\basicDIAG}}% +{\iffloatdiag\relax\else% +\ifcaption +\begin{center}\mbox{}\@diagcaption\end{center}% +\else\relax\fi\fi\global\captionfalse} + +\global\captionfalse + + +% MACROS FOR FLOATING DIAGRAMS + +\gdef\@diaglabel{Diagram} +\gdef\diagramlabel#1{\gdef\@diaglabel{#1}} + +\newcounter{Diagram} +\setcounter{Diagram}{0} +\def\theDiagram{\@arabic\c@Diagram} +\def\fps@Diagram{tbp} +\def\ftype@Diagram{1} +\def\ext@Diagram{lof} +\def\fnum@Diagram{\@diaglabel\ \theDiagram} +\def\Diagram{\@float{Diagram}} +\let\endDiagram\end@float +\@namedef{Diagram*}{\@dblfloat{Diagram}} +\@namedef{endDiagram*}{\end@dblfloat} + +\def\setdiagramcounter#1{\@addtoreset{Diagram}{#1}% +\def\theDiagram{\arabic{#1}.\@arabic\c@Diagram}} + +\newif\iffloatdiag + +\newenvironment{floatingdiagram}{% +\global\floatdiagtrue% +\long\def\@makecaption##1##2{ + \vskip 0pt + \setbox\@tempboxa\hbox{##1##2} + \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi}% +\global\def\diagramcaption##1{\global\def\@diagcaption{: ##1}}% +\global\def\@diagcaption{}% +\begin{Diagram}[tbp]\begin{diagram}}% +{\end{diagram}\caption{\@diagcaption}\end{Diagram}% +\global\floatdiagfalse} + +\global\floatdiagfalse + +% MACROS FOR DRAWING TEXT PICTURES + +% \tlowername{P}{f} puts the name f under the picture P +\newcommand{\tlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\scriptstyle#2$}}}% +\end{picture}}$}% + +% \tcase{P} draws the picture P with length \textarrowlength pt. +\newcommand{\tcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Tcase{P}{f} draws the picture P with upper name f +% and length \textarrowlength pt. +\newcommand{\Tcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\scriptstyle #2}{#1{\actualtextarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% MACROS FOR DRAWING DISPLAYED PICTURES + +% \dlowername{P}{f} puts the name f under the picture P +\newcommand{\dlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\textstyle#2$}}}% +\end{picture}}$}% + +% \dcase{P} draws the picture P with length \displayarrowlength pt. +\newcommand{\dcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Dcase{P}{f} draws the picture P with upper name f +% and length \displayarrowlength pt. +\newcommand{\Dcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\textstyle #2}{#1{\actualdisplayarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% IN-TEXT ARROWS + +% \AR{n} draws an arrow of length n units +\newcommand{\AR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% All the following commands produce arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength pt and textstyle names in display math mode. + +% arrow +\newcommand{\ar}{\ifinner\tcase{\AR}\else\dcase{\AR}\fi}% + +% arrow with upper name [1] +\newcommand{\Ar}[1]{\ifinner\Tcase{\AR}{#1}\else\Dcase{\AR}{#1}\fi}% + +% IN-TEXT BACK ARROWS + +% \BKAR{n} draws a pointing back arrow of length n units +\newcommand{\BKAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce back arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength and textstyle names in display math mode. + +% back arrow +\newcommand{\bkar}{\ifinner\tcase{\BKAR}\else\dcase{\BKAR}\fi}% + +% back arrow with upper name [1] +\newcommand{\Bkar}[1]{\ifinner\Tcase{\BKAR}{#1}\else\Dcase{\BKAR}{#1}\fi}% + + +% MACROS FOR DRAWING HORIZONTAL PICTURES + + +% \lowername{P}{f} puts the name f under the picture P +\newcommand{\lowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\truex{600}% +\put(0,0){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}% +\end{picture}}$}% + +% \hcase{P}{n} draws the picture P with length n units +\newcommand{\hcase}[2]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{0pt}[0pt][0pt]{#1{#2}}}}% + +% \Hcase{P}{f}{n} draws the picture P with upper name f +% and length n units. +\newcommand{\Hcase}[3]% +{\testdiagrammode\makebox[0pt] +{\raisebox{0pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}{#1{#3}}$}}}% + +% \hcasE{P}{f}{n} draws the picture P with lower name f +% and length n units. +\newcommand{\hcasE}[3]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{-8pt}[0pt][0pt]% +{\lowername{#1{#3}}{#2}}}}% + +% EAST ARROWS + +% \EAR{n} draws an east arrow of length n units +\newcommand{\EAR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% All the following commands produce east arrows + +% basic east arrow +\def\basicear[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EAR}{\Z}}% + +% east arrow +\newcommand{\ear}{\@ifnextchar[{\basicear}% +{\hspace{\SOURCE\unitlength}\basicear[\ARROWLENGTH]}}% + +% basic east arrow with upper name +\def\basicEar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EAR}{#2}{\Z}}% + +% east arrow with upper name +\newcommand{\Ear}{\@ifnextchar[{\basicEar}% +{\hspace{\SOURCE\unitlength}\basicEar[\ARROWLENGTH]}}% + +% basic east arrow with lower name +\def\basiceaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EAR}{#2}{\Z}}% + +% east arrow with lower name +\newcommand{\eaR}{\@ifnextchar[{\basiceaR}% +{\hspace{\SOURCE\unitlength}\basiceaR[\ARROWLENGTH]}}% + +% WEST ARROWS + +% \WAR{n} draws a pointing back arrow of length n units +\newcommand{\WAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce west arrows + +% basic west arrow +\def\basicwar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WAR}{\Z}}% + +% west arrow +\newcommand{\war}{\@ifnextchar[{\basicwar}% +{\hspace{\SOURCE\unitlength}\basicwar[\ARROWLENGTH]}}% + +% basic west arrow with upper name +\def\basicWar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WAR}{#2}{\Z}}% + +% west arrow with upper name +\newcommand{\War}{\@ifnextchar[{\basicWar}% +{\hspace{\SOURCE\unitlength}\basicWar[\ARROWLENGTH]}}% + +% basic west arrow with lower name +\def\basicwaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WAR}{#2}{\Z}}% + +% west arrow with lower name +\newcommand{\waR}{\@ifnextchar[{\basicwaR}% +{\hspace{\SOURCE\unitlength}\basicwaR[\ARROWLENGTH]}}% + +% MACROS FOR DRAWING VERTICAL PICTURES + +% \vcase{P}{n} draws the vertical picture P with length n units. +\newcommand{\vcase}[2]{\testdiagrammode#1{#2}}% + +% \Vcase{P}{f}{n} draws the vertical picture P +% with left name f and length n units. +\newcommand{\Vcase}[3]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{${#2}\hspace{2pt}$}}}#1{#3}}% + +% \vcasE{P}{f}{n} draws the vertical picture P +% with right name f and length n units. +\newcommand{\vcasE}[3]{\testdiagrammode\makebox[0pt]% +{#1{#3}\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#2$}}}}% + +% SOUTH ARROWS + +% \SAR{n} draws a south arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\vector(0,-1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce south arrows + +% basic south arrow +\def\basicsar[#1]{\vcase{\SAR}{#100}}% + +% south arrow +\newcommand{\sar}{\@ifnextchar[{\basicsar}{\basicsar[50]}}% + +% basic south arrow with left name +\def\basicSar[#1]#2{\Vcase{\SAR}{#2}{#100}}% + +% south arrow with left name +\newcommand{\Sar}{\@ifnextchar[{\basicSar}{\basicSar[50]}}% + +% basic south arrow with right name +\def\basicsaR[#1]#2{\vcasE{\SAR}{#2}{#100}}% + +% south arrow with right name +\newcommand{\saR}{\@ifnextchar[{\basicsaR}{\basicsaR[50]}}% + +% NORTH ARROWS + +% \NAR{n} draws a north arrow of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce north arrows + +% basic north arrow +\def\basicnar[#1]{\vcase{\NAR}{#100}}% + +% north arrow +\newcommand{\nar}{\@ifnextchar[{\basicnar}{\basicnar[50]}}% + +% basic north arrow with left name +\def\basicNar[#1]#2{\Vcase{\NAR}{#2}{#100}}% + +% north arrow with left name +\newcommand{\Nar}{\@ifnextchar[{\basicNar}{\basicNar[50]}}% + +% basic north arrow with right name +\def\basicnaR[#1]#2{\vcasE{\NAR}{#2}{#100}}% + +% north arrow with right name +\newcommand{\naR}{\@ifnextchar[{\basicnaR}{\basicnaR[50]}}% + +% MACROS FOR FIRST DIAGONAL PICTURES + +% \fdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\fdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{200}\truey{600}\truez{600}% +\put(-\value{x},-\value{x}){\makebox(0,\value{z})[r]{${#2}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#3}$}}% +\end{picture}}% + +% NORTH-EAST ARROWS + +% \NEAR{n} draws a north-east arrow of length nx100 units +\newcommand{\NEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\vector(1,1){#1}}% +\end{picture}}% + +% All the following commands draw north-east arrows + +% north-east arrow of length nx100 units +\def\basicnear[#1]{\fdcase{\NEAR}{}{}{#100}}% + +% north-east arrow +\newcommand{\near}{\@ifnextchar[{\basicnear}{\basicnear[59]}}% + +% north-east arrow with upper name [1] and length nx100 units +\def\basicNear[#1]#2{\fdcase{\NEAR}{#2}{}{#100}}% + +% north-east arrow with upper name +\newcommand{\Near}{\@ifnextchar[{\basicNear}{\basicNear[59]}}% + +% north-east arrow with lower name [1] and length nx100 units +\def\basicneaR[#1]#2{\fdcase{\NEAR}{}{#2}{#100}}% + +% north-east arrow with lower name [1] +\newcommand{\neaR}{\@ifnextchar[{\basicneaR}{\basicneaR[59]}}% + +% SOUT-WEST ARROWS + +% \SWAR{n} draws a south-west arrow of length nx100 units +\newcommand{\SWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\vector(-1,-1){#1}}% +\end{picture}}% + +% All the following commands draw south-west arrows + +% south-west arrow of length nx100 units +\def\basicswar[#1]{\fdcase{\SWAR}{}{}{#100}}% + +% south-west arrow +\newcommand{\swar}{\@ifnextchar[{\basicswar}{\basicswar[59]}}% + +% south-west arrow with upper name [1] and length nx100 units +\def\basicSwar[#1]#2{\fdcase{\SWAR}{#2}{}{#100}}% + +% south-west arrow with upper name +\newcommand{\Swar}{\@ifnextchar[{\basicSwar}{\basicSwar[59]}}% + +% south-west arrow with lower name [1] and length nx100 units +\def\basicswaR[#1]#2{\fdcase{\SWAR}{}{#2}{#100}}% + +% south-west arrow with lower name [1] +\newcommand{\swaR}{\@ifnextchar[{\basicswaR}{\basicswaR[59]}}% + +% MACROS FOR SECOND DIAGONAL PICTURES + +% \sdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\sdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{100}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#2}$}}% +\truex{300}\truey{800}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#3}$}}% +\end{picture}}% + +% SOUTH-EAST ARROWS + +% \SEAR{n} draws a south-east arrow of length nx100 units +\newcommand{\SEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\vector(1,-1){#1}}% +\end{picture}}% + +% All the following commands draw south-east arrows + +% south-east arrow of length nx100 units +\def\basicsear[#1]{\sdcase{\SEAR}{}{}{#100}}% + +% south-east arrow +\newcommand{\sear}{\@ifnextchar[{\basicsear}{\basicsear[59]}}% + +% south-east arrow with upper name [1] and length nx100 units +\def\basicSear[#1]#2{\sdcase{\SEAR}{#2}{}{#100}}% + +% south-east arrow with upper name +\newcommand{\Sear}{\@ifnextchar[{\basicSear}{\basicSear[59]}}% + +% south-east arrow with lower name [1] and length nx100 units +\def\basicseaR[#1]#2{\sdcase{\SEAR}{}{#2}{#100}}% + +% south-east arrow with lower name [1] +\newcommand{\seaR}{\@ifnextchar[{\basicseaR}{\basicseaR[59]}}% + +% NORTH-WEST ARROWS + +% \NWAR{n} draws a north-west arrow of length nx100 units +\newcommand{\NWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\vector(-1,1){#1}}% +\end{picture}}% + +% All the following commands draw north-west arrows + +% north-west arrow of length nx100 units +\def\basicnwar[#1]{\sdcase{\NWAR}{}{}{#100}}% + +% north-west arrow +\newcommand{\nwar}{\@ifnextchar[{\basicnwar}{\basicnwar[59]}}% + +% north-west arrow with upper name [1] and length nx100 units +\def\basicNwar[#1]#2{\sdcase{\NWAR}{#2}{}{#100}}% + +% north-west arrow with upper name +\newcommand{\Nwar}{\@ifnextchar[{\basicNwar}{\basicNwar[59]}}% + +% north-west arrow with lower name [1] and length nx100 units +\def\basicnwaR[#1]#2{\sdcase{\NWAR}{}{#2}{#100}}% + +% north-west arrow with lower name [1] +\newcommand{\nwaR}{\@ifnextchar[{\basicnwaR}{\basicnwaR[59]}}% + +% EAST-NORTH-EAST ARROWS + +% The following commands produce east-north-east arrows +% of horizontal extent n units + +% \ENEAR{f}{g}{n} draws a east-north-east arrow with names f, g +% and length n units +\newcommand{\ENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-north-east arrows; +% the default length is 13300 units + +% basic east-north-east arrow +\def\basicenear[#1]{\ENEAR{}{}{#100}}% + +% east-north-east arrow +\newcommand{\enear}{\@ifnextchar[{\basicenear}{\basicenear[133]}}% + +% basic east-north-east arrow with upper name +\def\basicWnear[#1]#2{\ENEAR{#2}{}{#100}}% + +% east-north-east arrow with upper name +\newcommand{\Enear}{\@ifnextchar[{\basicEnear}{\basicEnear[133]}}% + +% basic east-north-east arrow with lower name +\def\basiceneaR[#1]#2{\ENEAR{}{#2}{#100}}% + +% east-north-east arrow with lower name +\newcommand{\eneaR}{\@ifnextchar[{\basiceneaR}{\basiceneaR[133]}}% + + +% EAST-SOUTH-EAST ARROWS + +% The following commands produce east-south-east arrows +% of horizontal extent n units + +% \ESEAR{f}{g}{n} draws a east-south-east arrow with names f, g +% and length n units +\newcommand{\ESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-south-east arrows; +% the default length is 13300 units + +% basic east-south-east arrow +\def\basicesear[#1]{\ESEAR{}{}{#100}}% + +% east-south-east arrow +\newcommand{\esear}{\@ifnextchar[{\basicesear}{\basicesear[133]}}% + +% basic east-south-east arrow with upper name +\def\basicEsear[#1]#2{\ESEAR{#2}{}{#100}}% + +% east-south-east arrow with upper name +\newcommand{\Esear}{\@ifnextchar[{\basicEsear}{\basicEsear[133]}}% + +% basic east-south-east arrow with lower name +\def\basiceseaR[#1]#2{\ESEAR{}{#2}{#100}}% + +% east-south-east arrow with lower name +\newcommand{\eseaR}{\@ifnextchar[{\basiceseaR}{\basiceseaR[133]}}% + +% WEST-SOUTH-WEST ARROWS + +% The following commands produce west-south-west arrows +% of horizontal extent n units + +% \WSWAR{f}{g}{n} draws a west-south-west arrow with names f, g +% and length n units +\newcommand{\WSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-south-west arrows; +% the default length is 13300 units + +% basic west-south-west arrow +\def\basicwswar[#1]{\WSWAR{}{}{#100}}% + +% west-south-west arrow +\newcommand{\wswar}{\@ifnextchar[{\basicwswar}{\basicwswar[133]}}% + +% basic west-south-west arrow with upper name +\def\basicWswar[#1]#2{\WSWAR{#2}{}{#100}}% + +% west-south-west arrow with upper name +\newcommand{\Wswar}{\@ifnextchar[{\basicWswar}{\basicWswar[133]}}% + +% basic west-south-west arrow with lower name +\def\basicwswaR[#1]#2{\WSWAR{}{#2}{#100}}% + +% west-south-west arrow with lower name +\newcommand{\wswaR}{\@ifnextchar[{\basicwswaR}{\basicwswaR[133]}}% + +% WEST-NORTH-WEST ARROWS + +% The following commands produce west-north-west arrows +% of horizontal extent n units + +% \WNWAR{f}{g}{n} draws a west-north-west arrow with names f, g +% and length n units +\newcommand{\WNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-north-west arrows; +% the default length is 13300 units + +% basic west-north-west arrow +\def\basicwnwar[#1]{\WNWAR{}{}{#100}}% + +% west-north-west arrow +\newcommand{\wnwar}{\@ifnextchar[{\basicwnwar}{\basicwnwar[133]}}% + +% basic west-north-west arrow with upper name +\def\basicWnwar[#1]#2{\WNWAR{#2}{}{#100}}% + +% west-north-west arrow with upper name +\newcommand{\Wnwar}{\@ifnextchar[{\basicWnwar}{\basicWnwar[133]}}% + +% basic west-north-west arrow with lower name +\def\basicwnwaR[#1]#2{\WNWAR{}{#2}{#100}}% + +% west-north-west arrow with lower name +\newcommand{\wnwaR}{\@ifnextchar[{\basicwnwaR}{\basicwnwaR[133]}}% + +% NORTH-NORTH-EAST ARROWS + +% The following commands produce north-north-east arrows +% of horizontal extent n units + +% \NNEAR{f}{g}{n} draws a north-north-east arrow with names f, g +% and length n units +\newcommand{\NNEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\vector(1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-east arrows; +% the default length is 6700 units + +% basic north-north-east arrow +\def\basicnnear[#1]{\NNEAR{}{}{#100}}% + +% north-north-east arrow +\newcommand{\nnear}{\@ifnextchar[{\basicnnear}{\basicnnear[67]}}% + +% basic north-north-east arrow with upper name +\def\basicNnear[#1]#2{\NNEAR{#2}{}{#100}}% + +% north-north-east arrow with upper name +\newcommand{\Nnear}{\@ifnextchar[{\basicNnear}{\basicNnear[67]}}% + +% basic north-north-east arrow with lower name +\def\basicnneaR[#1]#2{\NNEAR{}{#2}{#100}}% + +% north-north-east arrow with lower name +\newcommand{\nneaR}{\@ifnextchar[{\basicnneaR}{\basicnneaR[67]}}% + + +% SOUTH-SOUTH-EAST ARROWS + +% The following commands produce south-south-east arrows +% of horizontal extent n units + +% \SSEAR{f}{g}{n} draws a south-south-east arrow with names f, g +% and length n units +\newcommand{\SSEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\vector(1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-east arrows; +% the default length is 6700 units + +% basic south-south-east arrow +\def\basicssear[#1]{\SSEAR{}{}{#100}}% + +% south-south-east arrow +\newcommand{\ssear}{\@ifnextchar[{\basicssear}{\basicssear[67]}}% + +% basic south-south-east arrow with upper name +\def\basicSsear[#1]#2{\SSEAR{#2}{}{#100}}% + +% south-south-east arrow with upper name +\newcommand{\Ssear}{\@ifnextchar[{\basicSsear}{\basicSsear[67]}}% + +% basic south-south-east arrow with lower name +\def\basicsseaR[#1]#2{\SSEAR{}{#2}{#100}}% + +% south-south-east arrow with lower name +\newcommand{\sseaR}{\@ifnextchar[{\basicsseaR}{\basicsseaR[67]}}% + +% SOUTH-SOUTH-WEST ARROWS + +% The following commands produce south-south-west arrows +% of horizontal extent n units + +% \SSWAR{f}{g}{n} draws a south-south-west arrow with names f, g +% and length n units +\newcommand{\SSWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\vector(-1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-west arrows; +% the default length is 6700 units + +% basic south-south-west arrow +\def\basicsswar[#1]{\SSWAR{}{}{#100}}% + +% south-south-west arrow +\newcommand{\sswar}{\@ifnextchar[{\basicsswar}{\basicsswar[67]}}% + +% basic south-south-west arrow with upper name +\def\basicSswar[#1]#2{\SSWAR{#2}{}{#100}}% + +% south-south-west arrow with upper name +\newcommand{\Sswar}{\@ifnextchar[{\basicSswar}{\basicSswar[67]}}% + +% basic south-south-west arrow with lower name +\def\basicsswaR[#1]#2{\SSWAR{}{#2}{#100}}% + +% south-south-west arrow with lower name +\newcommand{\sswaR}{\@ifnextchar[{\basicsswaR}{\basicsswaR[67]}}% + +% NORTH-NORTH-WEST ARROWS + +% The following commands produce north-north-west arrows +% of horizontal extent n units + +% \NNWAR{f}{g}{n} draws a north-north-west arrow with names f, g +% and length n units +\newcommand{\NNWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\vector(-1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-west arrows; +% the default length is 6700 units + +% basic north-north-west arrow +\def\basicnnwar[#1]{\NNWAR{}{}{#100}}% + +% north-north-west arrow +\newcommand{\nnwar}{\@ifnextchar[{\basicnnwar}{\basicnnwar[67]}}% + +% basic north-north-west arrow with upper name +\def\basicNnwar[#1]#2{\NNWAR{#2}{}{#100}}% + +% north-north-west arrow with upper name +\newcommand{\Nnwar}{\@ifnextchar[{\basicNnwar}{\basicNnwar[67]}}% + +% basic north-north-west arrow with lower name +\def\basicnnwaR[#1]#2{\NNWAR{}{#2}{#100}}% + +% north-north-west arrow with lower name +\newcommand{\nnwaR}{\@ifnextchar[{\basicnnwaR}{\basicnnwaR[67]}}% + +% EAST-EAST-NORTH-EAST ARROWS +% default length: 21100 units + +% \EENEAR{f}{g}{n} draws a east-east-north-east arrow with names f, g +% and length n units +\newcommand{\EENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic east-east-north-east arrow +\def\basiceenear[#1]{\EENEAR{}{}{#100}}% + +% east-east-north-east arrow +\newcommand{\eenear}{\@ifnextchar[{\basiceenear}{\basiceenear[211]}}% + +% basic east-east-north-east arrow with upper name +\def\basicEenear[#1]#2{\EENEAR{#2}{}{#100}}% + +% east-east-north-east arrow with upper name +\newcommand{\Eenear}{\@ifnextchar[{\basicEenear}{\basicEenear[211]}}% + +% basic east-east-north-east arrow with lower name +\def\basiceeneaR[#1]#2{\EENEAR{}{#2}{#100}}% + +% east-east-north-east arrow with lower name +\newcommand{\eeneaR}{\@ifnextchar[{\basiceeneaR}{\basiceeneaR[211]}}% + +% EAST-EAST-SOUTH-EAST ARROWS +% default length: 21100 units + +% \EESEAR{f}{g}{n} draws an east-east-south-east arrow with names f, g +% and length n units +\newcommand{\EESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic east-east-south-east arrow +\def\basiceesear[#1]{\EESEAR{}{}{#100}}% + +% east-east-south-east arrow +\newcommand{\eesear}{\@ifnextchar[{\basiceesear}{\basiceesear[211]}}% + +% basic east-east-south-east arrow with upper name +\def\basicEesear[#1]#2{\EESEAR{#2}{}{#100}}% + +% east-east-south-east arrow with upper name +\newcommand{\Eesear}{\@ifnextchar[{\basicEesear}{\basicEesear[211]}}% + +% basic east-east-south-east arrow with lower name +\def\basiceeseaR[#1]#2{\EESEAR{}{#2}{#100}}% + +% east-east-south-east arrow with lower name +\newcommand{\eeseaR}{\@ifnextchar[{\basiceeseaR}{\basiceeseaR[211]}}% + +% WEST-WEST-NORTH-WEST ARROWS +% default length: 21100 units + +% \WWNWAR{f}{g}{n} draws a west-west-north-west arrow with names f, g +% and length n units +\newcommand{\WWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic west-west-north-west arrow +\def\basicwwnwar[#1]{\WWNWAR{}{}{#100}}% + +% west-west-north-west arrow +\newcommand{\wwnwar}{\@ifnextchar[{\basicwwnwar}{\basicwwnwar[211]}}% + +% basic west-west-north-west arrow with upper name +\def\basicWwnwar[#1]#2{\WWNWAR{#2}{}{#100}}% + +% west-west-north-west arrow with upper name +\newcommand{\Wwnwar}{\@ifnextchar[{\basicWwnwar}{\basicWwnwar[211]}}% + +% basic west-west-north-west arrow with lower name +\def\basicwwnwaR[#1]#2{\WWNWAR{}{#2}{#100}}% + +% west-west-north-west arrow with lower name +\newcommand{\wwnwaR}{\@ifnextchar[{\basicwwnwaR}{\basicwwnwaR[211]}}% + +% WEST-WEST-SOUTH-WEST ARROWS +% default length: 21100 units + +% \WWSWAR{f}{g} draws a west-west-south-west arrow with names f, g +\newcommand{\WWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic west-west-south-west arrow +\def\basicwwswar[#1]{\WWSWAR{}{}{#100}}% + +% west-west-south-west arrow +\newcommand{\wwswar}{\@ifnextchar[{\basicwwswar}{\basicwwswar[211]}}% + +% basic west-west-south-west arrow with upper name +\def\basicWwswar[#1]#2{\WWSWAR{#2}{}{#100}}% + +% west-west-south-west arrow with upper name +\newcommand{\Wwswar}{\@ifnextchar[{\basicWwswar}{\basicWwswar[211]}}% + +% basic west-west-south-west arrow with lower name +\def\basicwwswaR[#1]#2{\WWSWAR{}{#2}{#100}}% + +% west-west-south-west arrow with lower name +\newcommand{\wwswaR}{\@ifnextchar[{\basicwwswaR}{\basicwwswaR[211]}}% + + +% NORTH-NORTH-NORTH-EAST ARROWS +% default length: 7100 units + +% \NNNEAR{f}{g}{n} draws a north-north-north-east arrow with names f, g +% and length n units +\newcommand{\NNNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(1,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-east arrow +\def\basicnnnear[#1]{\NNNEAR{}{}{#100}}% + +% north-north-north-east arrow +\newcommand{\nnnear}{\@ifnextchar[{\basicnnnear}{\basicnnnear[71]}}% + +% basic north-north-north-east arrow with upper name +\def\basicNnnear[#1]#2{\NNNEAR{#2}{}{#100}}% + +% north-north-north-east arrow with upper name +\newcommand{\Nnnear}{\@ifnextchar[{\basicNnnear}{\basicNnnear[71]}}% + +% basic north-north-north-east arrow with lower name +\def\basicnnneaR[#1]#2{\NNNEAR{}{#2}{#100}}% + +% north-north-north-east arrow with lower name +\newcommand{\nnneaR}{\@ifnextchar[{\basicnnneaR}{\basicnnneaR[71]}}% + +% SOUTH-SOUTH-SOUTH-WEST ARROWS +% default length: 7100 units + +% \SSSWAR{f}{g}{n} draws a south-south-south-west arrow with names f, g +% and length n units +\newcommand{\SSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-1,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-west arrow +\def\basicssswar[#1]{\SSSWAR{}{}{#100}}% + +% south-south-south-west arrow +\newcommand{\ssswar}{\@ifnextchar[{\basicssswar}{\basicssswar[71]}}% + +% basic south-south-south-west arrow with upper name +\def\basicSsswar[#1]#2{\SSSWAR{#2}{}{#100}}% + +% south-south-south-west arrow with upper name +\newcommand{\Ssswar}{\@ifnextchar[{\basicSsswar}{\basicSsswar[71]}}% + +% basic south-south-south-west arrow with lower name +\def\basicssswaR[#1]#2{\SSSWAR{}{#2}{#100}}% + +% south-south-south-west arrow with lower name +\newcommand{\ssswaR}{\@ifnextchar[{\basicssswaR}{\basicssswaR[71]}}% + +% SOUTH-SOUTH-SOUTH-EAST ARROWS +% default length: 7100 units + +% \SSSEAR{f}{g}{n} draws a south-south-south-east arrow with names f, g +% and length n units +\newcommand{\SSSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(1,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-east arrow +\def\basicsssear[#1]{\SSSEAR{}{}{#100}}% + +% south-south-south-east arrow +\newcommand{\sssear}{\@ifnextchar[{\basicsssear}{\basicsssear[71]}}% + +% basic south-south-south-east arrow with upper name +\def\basicSssear[#1]#2{\SSSEAR{#2}{}{#100}}% + +% south-south-south-east arrow with upper name +\newcommand{\Sssear}{\@ifnextchar[{\basicSssear}{\basicSssear[71]}}% + +% basic south-south-south-east arrow with lower name +\def\basicssseaR[#1]#2{\SSSEAR{}{#2}{#100}}% + +% south-south-south-east arrow with lower name +\newcommand{\ssseaR}{\@ifnextchar[{\basicssseaR}{\basicssseaR[71]}}% + +% NORTH-NORTH-NORTH-WEST ARROWS +% default length: 7100 units + +% \NNNWAR{f}{g}{n} draws a north-north-north-west arrow with names f, g +% and length n units +\newcommand{\NNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-1,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-west arrow +\def\basicnnnwar[#1]{\NNNWAR{}{}{#100}}% + +% north-north-north-west arrow +\newcommand{\nnnwar}{\@ifnextchar[{\basicnnnwar}{\basicnnnwar[71]}}% + +% basic north-north-north-west arrow with upper name +\def\basicNnnwar[#1]#2{\NNNWAR{#2}{}{#100}}% + +% north-north-north-west arrow with upper name +\newcommand{\Nnnwar}{\@ifnextchar[{\basicNnnwar}{\basicNnnwar[71]}}% + +% basic north-north-north-west arrow with lower name +\def\basicnnnwaR[#1]#2{\NNNWAR{}{#2}{#100}}% + +% north-north-north-west arrow with lower name +\newcommand{\nnnwaR}{\@ifnextchar[{\basicnnnwaR}{\basicnnnwaR[71]}}% + +% NORTH-EAST-EAST-NORTH-EAST ARROWS +% default length: 21500 units + +% \NEENEAR{f}{g}{n} draws a north-east-east-north-east arrow with names f, g +% and length n units +\newcommand{\NEENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-east-north-east arrow +\def\basicneenear[#1]{\NEENEAR{}{}{#100}}% + +% north-east-east-north-east arrow +\newcommand{\neenear}{\@ifnextchar[{\basicneenear}{\basicneenear[215]}}% + +% basic north-east-east-north-east arrow with upper name +\def\basicNeenear[#1]#2{\NEENEAR{#2}{}{#100}}% + +% north-east-east-north-east arrow with upper name +\newcommand{\Neenear}{\@ifnextchar[{\basicNeenear}{\basicNeenear[215]}}% + +% basic north-east-east-north-east arrow with lower name +\def\basicneeneaR[#1]#2{\NEENEAR{}{#2}{#100}}% + +% north-east-east-north-east arrow with lower name +\newcommand{\neeneaR}{\@ifnextchar[{\basicneeneaR}{\basicneeneaR[215]}}% + +% SOUTH-EAST-EAST-SOUTH-EAST ARROWS +% DEFAULT LENGTH: 21500 UNITS + +% \SEESEAR{f}{g} draws an sout-east-east-south-east arrow with names f, g +% and length n units +\newcommand{\SEESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-east-south-east arrow +\def\basicseesear[#1]{\SEESEAR{}{}{#100}}% + +% south-east-east-south-east arrow +\newcommand{\seesear}{\@ifnextchar[{\basicseesear}{\basicseesear[215]}}% + +% basic south-east-east-south-east arrow with upper name +\def\basicSeesear[#1]#2{\SEESEAR{#2}{}{#100}}% + +% south-east-east-south-east arrow with upper name +\newcommand{\Seesear}{\@ifnextchar[{\basicSeesear}{\basicSeesear[215]}}% + +% basic south-east-east-south-east arrow with lower name +\def\basicseeseaR[#1]#2{\SEESEAR{}{#2}{#100}}% + +% south-east-east-south-east arrow with lower name +\newcommand{\seeseaR}{\@ifnextchar[{\basicseeseaR}{\basicseeseaR[215]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 21500 units + +% \NWWNWAR{f}{g}{n} draws a north-west-west-north-west arrow with names f, g +% and length n units +\newcommand{\NWWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-west-north-west arrow +\def\basicnwwnwar[#1]{\NWWNWAR{}{}{#100}}% + +% north-west-west-north-west arrow +\newcommand{\nwwnwar}{\@ifnextchar[{\basicnwwnwar}{\basicnwwnwar[215]}}% + +% basic north-west-west-north-west arrow with upper name +\def\basicNwwnwar[#1]#2{\NWWNWAR{#2}{}{#100}}% + +% north-west-west-north-west arrow with upper name +\newcommand{\Nwwnwar}{\@ifnextchar[{\basicNwwnwar}{\basicNwwnwar[215]}}% + +% basic north-west-west-north-west arrow with lower name +\def\basicnwwnwaR[#1]#2{\NWWNWAR{}{#2}{#100}}% + +% north-west-west-north-west arrow with lower name +\newcommand{\nwwnwaR}{\@ifnextchar[{\basicnwwnwaR}{\basicnwwnwaR[215]}}% + +% SOUTH-WEST-WEST-SOUTH-WEST ARROWS +% default length: 21500 units + +% \SWWSWAR{f}{g}{n} draws a south-west-west-south-west arrow with names f, g +% and length n units +\newcommand{\SWWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-west-south-west arrow +\def\basicswwswar[#1]{\SWWSWAR{}{}{#100}}% + +% south-west-west-south-west arrow +\newcommand{\swwswar}{\@ifnextchar[{\basicswwswar}{\basicswwswar[215]}}% + +% basic south-west-west-south-west arrow with upper name +\def\basicSwwswar[#1]#2{\SWWSWAR{#2}{}{#100}}% + +% south-west-west-south-west arrow with upper name +\newcommand{\Swwswar}{\@ifnextchar[{\basicSwwswar}{\basicSwwswar[215]}}% + +% basic south-west-west-south-west arrow with lower name +\def\basicswwswaR[#1]#2{\SWWSWAR{}{#2}{#100}}% + +% south-west-west-south-west arrow with lower name +\newcommand{\swwswaR}{\@ifnextchar[{\basicswwswaR}{\basicswwswaR[215]}}% + + +% NORTH-EAST-NORTH-NORTH-EAST ARROWS +% default length 14300 units + +% \NENNEAR{f}{g}{n} draws a north-east-north-north-east arrow with names f, g +% and length n units +\newcommand{\NENNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-north-north-east arrow +\def\basicnennear[#1]{\NENNEAR{}{}{#100}}% + +% north-east-north-north-east arrow +\newcommand{\nennear}{\@ifnextchar[{\basicnennear}{\basicnennear[143]}}% + +% basic north-east-north-north-east arrow with upper name +\def\basicNennear[#1]#2{\NENNEAR{#2}{}{#100}}% + +% north-east-north-north-east arrow with upper name +\newcommand{\Nennear}{\@ifnextchar[{\basicNennear}{\basicNennear[143]}}% + +% basic north-east-north-north-east arrow with lower name +\def\basicnenneaR[#1]#2{\NENNEAR{}{#2}{#100}}% + +% north-east-north-north-east arrow with lower name +\newcommand{\nenneaR}{\@ifnextchar[{\basicnenneaR}{\basicnenneaR[143]}}% + +% SOUTH-WEST-SOUTH-SOUTH-WEST ARROWS +% default length: 14300 units + +% \SWSSWAR{f}{g}{n} draws a south-west-south-south-west arrow with names f, g +% and length n units +\newcommand{\SWSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-south-south-west arrow +\def\basicswsswar[#1]{\SWSSWAR{}{}{#100}}% + +% south-west-south-south-west arrow +\newcommand{\swsswar}{\@ifnextchar[{\basicswsswar}{\basicswsswar[143]}}% + +% basic south-west-south-south-west arrow with upper name +\def\basicSwsswar[#1]#2{\SWSSWAR{#2}{}{#100}}% + +% south-west-south-south-west arrow with upper name +\newcommand{\Swsswar}{\@ifnextchar[{\basicSwsswar}{\basicSwsswar[143]}}% + +% basic south-west-south-south-west arrow with lower name +\def\basicswsswaR[#1]#2{\SWSSWAR{}{#2}{#100}}% + +% south-west-south-south-west arrow with lower name +\newcommand{\swsswaR}{\@ifnextchar[{\basicswsswaR}{\basicswsswaR[143]}}% + +% SOUT-EAST-SOUTH-SOUTH-EAST ARROWS +% default length: 14300 units + +% \SESSEAR{f}{g}{n} draws a south-east-south-south-east arrow with names f, g +% and length n units +\newcommand{\SESSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-south-south-east arrow +\def\basicsessear[#1]{\SESSEAR{}{}{#100}}% + +% south-east-south-south-east arrow +\newcommand{\sessear}{\@ifnextchar[{\basicsessear}{\basicsessear[143]}}% + +% basic south-east-south-south-east arrow with upper name +\def\basicSessear[#1]#2{\SESSEAR{#2}{}{#100}}% + +% south-east-south-south-east arrow with upper name +\newcommand{\Sessear}{\@ifnextchar[{\basicSessear}{\basicSessear[143]}}% + +% basic south-east-south-south-east arrow with lower name +\def\basicsesseaR[#1]#2{\SESSEAR{}{#2}{#100}}% + +% south-east-south-south-east arrow with lower name +\newcommand{\sesseaR}{\@ifnextchar[{\basicsesseaR}{\basicsesseaR[143]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 14300 units + +% \NWNNWAR{f}{g}{n} draws a north-west-north-north-west arrow with names f, g +% and length n units +\newcommand{\NWNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-north-north-west arrow +\def\basicnwnnwar[#1]{\NWNNWAR{}{}{#100}}% + +% north-west-north-north-west arrow +\newcommand{\nwnnwar}{\@ifnextchar[{\basicnwnnwar}{\basicnwnnwar[143]}}% + +% basic north-west-north-north-west arrow with upper name +\def\basicNwnnwar[#1]#2{\NWNNWAR{#2}{}{#100}}% + +% north-west-north-north-west arrow with upper name +\newcommand{\Nwnnwar}{\@ifnextchar[{\basicNwnnwar}{\basicNwnnwar[143]}}% + +% basic north-west-north-north-west arrow with lower name +\def\basicnwnnwaR[#1]#2{\NWNNWAR{}{#2}{#100}}% + +% north-west-north-north-west arrow with lower name +\newcommand{\nwnnwaR}{\@ifnextchar[{\basicnwnnwaR}{\basicnwnnwaR[143]}}% + +% HORIZONTAL CURVED ARROWS + +% The following commands produce horizontal curved arrows +% default length: 160 units + +% North\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Necurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(#200,-\value{z}){\shead}% +\put(0,0){\line(0,-1){\value{z}}}\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\east curved arrow +\def\basicnecurvar[#1]{\Necurve{}{#1}} + +% north\east curved arrow +\newcommand{\necurvar}{\@ifnextchar[{\basicnecurvar}{\basicnecurvar[160]}}% + +% basic north\east curved arrow with name +\def\basicNecurvar[#1]#2{\Necurve{#2}{#1}}% + +% north\east curved arrow with name +\newcommand{\Necurvar}{\@ifnextchar[{\basicNecurvar}{\basicNecurvar[160]}}% +\let\necurvaR=\Necurvar + +% North\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Nwcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(0,0){\line(0,-1){\value{z}}}% +\put(0,-\value{z}){\shead}% +\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\west curved arrow +\def\basicnwcurvar[#1]{\Nwcurve{}{#1}} + +% north\west curved arrow +\newcommand{\nwcurvar}{\@ifnextchar[{\basicnwcurvar}{\basicnwcurvar[160]}}% + +% basic north\west curved arrow with name +\def\basicNwcurvar[#1]#2{\Nwcurve{#2}{#1}}% + +% north\west curved arrow with name +\newcommand{\Nwcurvar}{\@ifnextchar[{\basicNwcurvar}{\basicNwcurvar[160]}}% +\let\nwcurvaR=\Nwcurvar + +% South\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Securve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(#200,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\east curved arrow +\def\basicsecurvar[#1]{\Securve{}{#1}} + +% south\east curved arrow +\newcommand{\securvar}{\@ifnextchar[{\basicsecurvar}{\basicsecurvar[160]}}% + +% basic south\east curved arrow with name +\def\basicSecurvar[#1]#2{\Securve{#2}{#1}}% + +% south\east curved arrow with name +\newcommand{\Securvar}{\@ifnextchar[{\basicSecurvar}{\basicSecurvar[160]}}% +\let\securvaR=\Securvar + +% South\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Swcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(0,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\west curved arrow +\def\basicswcurvar[#1]{\Swcurve{}{#1}} + +% south\west curved arrow +\newcommand{\swcurvar}{\@ifnextchar[{\basicswcurvar}{\basicswcurvar[160]}}% + +% basic south\west curved arrow with name +\def\basicSwcurvar[#1]#2{\Swcurve{#2}{#1}}% + +% south\west curved arrow with name +\newcommand{\Swcurvar}{\@ifnextchar[{\basicSwcurvar}{\basicSwcurvar[160]}}% +\let\swcurvaR=\Swcurvar + +% VERTICAL CURVED ARROWS + +% The following commands produce vertical curved arrows +% default length: 160pt + +% East\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Escurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},0){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\south curved arrow +\def\basicescurvar[#1]{\Escurve{}{#1}} + +% east\south curved arrow +\newcommand{\escurvar}{\@ifnextchar[{\basicescurvar}{\basicescurvar[160]}}% + +% basic east\south curved arrow with name +\def\basicEscurvar[#1]#2{\Escurve{#2}{#1}}% + +% east\south curved arrow with name +\newcommand{\Escurvar}{\@ifnextchar[{\basicEscurvar}{\basicEscurvar[160]}}% +\let\escurvaR=\Escurvar + +% East\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Encurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},#200){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\north curved arrow +\def\basicencurvar[#1]{\Encurve{}{#1}} + +% east\north curved arrow +\newcommand{\encurvar}{\@ifnextchar[{\basicencurvar}{\basicencurvar[160]}}% + +% basic east\north curved arrow with name +\def\basicEncurvar[#1]#2{\Encurve{#2}{#1}}% + +% east\north curved arrow with name +\newcommand{\Encurvar}{\@ifnextchar[{\basicEncurvar}{\basicEncurvar[160]}}% +\let\encurvaR=\Encurvar + +% West\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Wscurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(0,#200){\line(1,0){\value{z}}}% +\put(\value{z},0){\ehead}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\south curved arrow +\def\basicwscurvar[#1]{\Wscurve{}{#1}} + +% west\south curved arrow +\newcommand{\wscurvar}{\@ifnextchar[{\basicwscurvar}{\basicwscurvar[160]}}% + +% basic west\south curved arrow with name +\def\basicWscurvar[#1]#2{\Wscurve{#2}{#1}}% + +% west\south curved arrow with name +\newcommand{\Wscurvar}{\@ifnextchar[{\basicWscurvar}{\basicWscurvar[160]}}% +\let\wscurvaR=\Wscurvar + +% West\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Wncurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(\value{z},#200){\ehead}% +\put(0,#200){\line(1,0){\value{z}}}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\north curved arrow +\def\basicwncurvar[#1]{\Wncurve{}{#1}} + +% west\north curved arrow +\newcommand{\wncurvar}{\@ifnextchar[{\basicwncurvar}{\basicwncurvar[160]}}% + +% basic west\north curved arrow with name +\def\basicWncurvar[#1]#2{\Wncurve{#2}{#1}}% + +% west\north curved arrow with name +\newcommand{\Wncurvar}{\@ifnextchar[{\basicWncurvar}{\basicWncurvar[160]}}% +\let\wncurvaR=\Wncurvar + +\catcode`\@=12 |