diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/borceux/MiniDiagram')
-rw-r--r-- | Master/texmf-dist/tex/generic/borceux/MiniDiagram | 3164 |
1 files changed, 3164 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/borceux/MiniDiagram b/Master/texmf-dist/tex/generic/borceux/MiniDiagram new file mode 100644 index 00000000000..39c08f673b5 --- /dev/null +++ b/Master/texmf-dist/tex/generic/borceux/MiniDiagram @@ -0,0 +1,3164 @@ +% DIAGRAM MACROS (version 3.1) +% MINI-DIAGRAM FILE +% PLAIN ARROWS, PAIRS OF PLAIN ARROWS, ADJOINT PAIRS OF 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% + +\newcount\NUMBEROFDOTS% + +\newcounter{x}% + +\newcounter{y}% + +\newcounter{z}% + +\newcounter{horizontal}% + +\newcounter{vertical}% + +\newskip\itemlength% + +\newskip\firstitem% + +\newskip\seconditem% + +\newcommand{\printarrow}{}% + +\newcount\X% + +\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}}% + +% \tbicase{P} draws the bi-picture P +% with length \textarrowlength pt. +\newcommand{\tbicase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{1pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Tbicase{P}{f}{g} draws the bi-picture P with names f, g +% and length \textarrowlength pt. +\newcommand{\Tbicase}[3]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{-1pt}% +{$\stackrel{\scriptstyle #2}% +{\mbox{\tlowername{#1{\actualtextarrowlength}}% +{\scriptstyle #3}}}$}}% +\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}}% + +% \dbicase{P} draws the bi-picture P +% with length \displayarrowlength pt. +\newcommand{\dbicase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{1pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Dbicase{P}{f}{g} draws the bi-picture P with names f, g +% and length \displayarrowlength pt. +\newcommand{\Dbicase}[3]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{-1pt}% +{$\stackrel{\textstyle #2}% +{\mbox{\tlowername{#1{\actualdisplayarrowlength}}% +{\textstyle #3}}}$}}% +\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}}% + +% \BIAR{n} draws a pair of arrows of length n units +\newcommand{\BIAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\vector(1,0){#1}}% +\put(0,700){\vector(1,0){#1}}% +\end{picture}}% + +% \ADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\ADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\vector(1,0){#1}}% +\put(#1,700){\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}% + +% pair of arrows +\newcommand{\biar}{\ifinner\tbicase{\BIAR}\else\dbicase{\BIAR}\fi}% + +% pair of arrows with names [1],[2] +\newcommand{\Biar}[2]{\ifinner\Tbicase{\BIAR}{#1}{#2}% +\else\Dbicase{\BIAR}{#1}{#2}\fi}% + +% pair of adjoint arrows +\newcommand{\adjar}{\ifinner\tbicase{\ADJAR}\else\dbicase{\ADJAR}\fi}% + +% pair of adjoint arrows with names [1],[2] +\newcommand{\Adjar}[2]{\ifinner\Tbicase{\ADJAR}{#1}{#2}% +\else\Dbicase{\ADJAR}{#1}{#2}\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}}% + +% \BKBIAR{n} draws a pair of pointing back arrows of length n units +\newcommand{\BKBIAR}[1]% +{\begin{picture}(#1,700)% +\put(#1,0){\vector(-1,0){#1}}% +\put(#1,700){\vector(-1,0){#1}}% +\end{picture}}% + +% \BKADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\BKADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\vector(1,0){#1}}% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% \BKADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\BKADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\vector(1,0){#1}}% +\put(#1,0){\vector(-1,0){#1}}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\put(\NUMBER,700){\circle{400}}% +\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}% + +% pair of back arrows +\newcommand{\bkbiar}{\ifinner\tbicase{\BKBIAR}\else\dbicase{\BKBIAR}\fi}% + +% pair of back arrows with names [1],[2] +\newcommand{\Bkbiar}[2]{\ifinner\Tbicase{\BKBIAR}{#1}{#2}% +\else\Dbicase{\BKBIAR}{#1}{#2}\fi}% + +% back pair of adjoint arrows +\newcommand{\bkadjar}{\ifinner\tbicase{\BKADJAR}% +\else\dbicase{\BKADJAR}\fi}% + +% back pair of adjoint arrows with names [1],[2] +\newcommand{\Bkadjar}[2]{\ifinner\Tbicase{\BKADJAR}{#1}{#2}% +\else\Dbicase{\BKADJAR}{#1}{#2}\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}}}}% + +% \hbicase{P}{n} draws the bi-picture P with length n units. +\newcommand{\hbicase}[2]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{-2.4pt}[0pt][0pt]{#1{#2}}}}% + +% \Hbicase{P}{f}{g}{n} draws the bi-picture P with names f, g +% and length n units. +\newcommand{\Hbicase}[4]% +{\testdiagrammode\makebox[0pt] +{\raisebox{-10.4pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}% +{\mbox{\lowername{#1{#4}}{#3}}}$}}}% + +% 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}}% + +% \EBIAR{n} draws an east pair of arrows of length n units +\newcommand{\EBIAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,0){\vector(1,0){#1}}% +\put(0,\value{x}){\vector(1,0){#1}}% +\end{picture}}% + +% \EADJAR{n} draws an east pair of adjoint arrows of length n +% units +\newcommand{\EADJAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,0){\vector(1,0){#1}}% +\put(#1,\value{x}){\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]}}% + +% basic pair of east arrows +\def\basicebiar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EBIAR}{\Z}}% + +% pair of east arrows +\newcommand{\ebiar}{\@ifnextchar[{\basicebiar}% +{\hspace{\SOURCE\unitlength}\basicebiar[\ARROWLENGTH]}}% + +% basic pair of east arrows with names +\def\basicEbiar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EBIAR}{#2}{#3}{\Z}}% + +% pair of east arrows with names +\newcommand{\Ebiar}{\@ifnextchar[{\basicEbiar}% +{\hspace{\SOURCE\unitlength}\basicEbiar[\ARROWLENGTH]}}% +\let\ebiaR=\Ebiar + +% basic pair of east adjoint arrows +\def\basiceadjar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EADJAR}{\Z}}% + +% pair of east adjoint arrows +\newcommand{\eadjar}{\@ifnextchar[{\basiceadjar}% +{\hspace{\SOURCE\unitlength}\basiceadjar[\ARROWLENGTH]}}% + +% basic pair of east adjoint arrows with names +\def\basicEadjar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EADJAR}{#2}{#3}{\Z}}% + +% pair of east adjoint arrows with names +\newcommand{\Eadjar}{\@ifnextchar[{\basicEadjar}% +{\hspace{\SOURCE\unitlength}\basicEadjar[\ARROWLENGTH]}}% +\let\eadjaR=\Eadjar + +% 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}}% + +% \WBIAR{n} draws a pair of pointing back arrows of length n units +\newcommand{\WBIAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(#1,0){\vector(-1,0){#1}}% +\put(#1,\value{x}){\vector(-1,0){#1}}% +\end{picture}}% + +% \WADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\WADJAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,\value{x}){\vector(1,0){#1}}% +\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]}}% + +% basic pair of west arrows +\def\basicwbiar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WBIAR}{\Z}}% + +% pair of west arrows +\newcommand{\wbiar}{\@ifnextchar[{\basicwbiar}% +{\hspace{\SOURCE\unitlength}\basicwbiar[\ARROWLENGTH]}}% + +% basic pair of west arrows with names +\def\basicWbiar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WBIAR}{#2}{#3}{\Z}}% + +% pair of west arrows with names +\newcommand{\Wbiar}{\@ifnextchar[{\basicWbiar}% +{\hspace{\SOURCE\unitlength}\basicWbiar[\ARROWLENGTH]}}% +\let\wbiaR=\Wbiar + +% basic pair of west adjoint arrows +\def\basicwadjar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WADJAR}{\Z}}% + +% pair of west adjoint arrows +\newcommand{\wadjar}{\@ifnextchar[{\basicwadjar}% +{\hspace{\SOURCE\unitlength}\basicwadjar[\ARROWLENGTH]}}% + +% basic pair of west adjoint arrows with names +\def\basicWadjar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WADJAR}{#2}{#3}{\Z}}% + +% pair of west adjoint arrows with names +\newcommand{\Wadjar}{\@ifnextchar[{\basicWadjar}% +{\hspace{\SOURCE\unitlength}\basicWadjar[\ARROWLENGTH]}}% +\let\wadjaR=\Wadjar + +% 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$}}}}% + +% \vbicase{P}{n} draws the vertical bi-picture P with length n units. +\newcommand{\vbicase}[2]{\testdiagrammode\makebox[0pt]{{#1{#2}}}}% + +% \Vbicase{P}{f}{g}{n} draws the vertical bi-picture P +% with names f, g and length n units. +\newcommand{\Vbicase}[4]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{5.5pt}}}#1{#4}% +\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{6.5pt}$#3$}}}}% + +% 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}}% + +% \SBIAR{n} draws a pair of south arrows of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIAR}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},#1){\vector(0,-1){#1}}% +\put(\value{x},#1){\vector(0,-1){#1}}% +\end{picture}}}\end{picture}}% + +% \SADJAR{n} draws a pair of vertical adjoint arrows of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SADJAR}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},#1){\vector(0,-1){#1}}% +\put(\value{x},0){\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]}}% + +% basic pair of south arrows +\def\basicsbiar[#1]{\vbicase{\SBIAR}{#100}}% + +% pair of south arrows +\newcommand{\sbiar}{\@ifnextchar[{\basicsbiar}{\basicsbiar[50]}}% + +% basic pair of south arrows with names +\def\basicSbiar[#1]#2#3{\Vbicase{\SBIAR}{#2}{#3}{#100}}% + +% pair of south arrows with names +\newcommand{\Sbiar}{\@ifnextchar[{\basicSbiar}{\basicSbiar[50]}}% +\let\sbiaR=\Sbiar + +% basic pair of south adjoint arrows +\def\basicsadjar[#1]{\vbicase{\SADJAR}{#100}}% + +% pair of south adjoint arrows +\newcommand{\sadjar}{\@ifnextchar[{\basicsadjar}{\basicsadjar[50]}}% + +% basic pair of south adjoint arrows with names +\def\basicSadjar[#1]#2#3{\Vbicase{\SADJAR}{#2}{#3}{#100}}% + +% pair of south adjoint arrows with names +\newcommand{\Sadjar}{\@ifnextchar[{\basicSadjar}{\basicSadjar[50]}}% +\let\sadjaR=\Sadjar + +% 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}}% + +% \NBIAR{n} draws a pair of north arrows of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIAR}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},0){\vector(0,1){#1}}% +\put(\value{x},0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% \NADJAR{n} draws a pair of vertical adjoint arrows of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NADJAR}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(\value{x},#1){\vector(0,-1){#1}}% +\put(-\value{x},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]}}% + +% basic pair of north arrows +\def\basicnbiar[#1]{\vbicase{\NBIAR}{#100}}% + +% pair of north arrows +\newcommand{\nbiar}{\@ifnextchar[{\basicnbiar}{\basicnbiar[50]}}% + +% basic pair of north arrows with names +\def\basicNbiar[#1]#2#3{\Vbicase{\NBIAR}{#2}{#3}{#100}}% + +% pair of north arrows with names +\newcommand{\Nbiar}{\@ifnextchar[{\basicNbiar}{\basicNbiar[50]}}% +\let\nbiaR=\Nbiar + +% basic pair of north adjoint arrows +\def\basicnadjar[#1]{\vbicase{\NADJAR}{#100}}% + +% pair of north adjoint arrows +\newcommand{\nadjar}{\@ifnextchar[{\basicnadjar}{\basicnadjar[50]}}% + +% basic pair of north adjoint arrows with names +\def\basicNadjar[#1]#2#3{\Vbicase{\NADJAR}{#2}{#3}{#100}}% + +% pair of north adjoint arrows with names +\newcommand{\Nadjar}{\@ifnextchar[{\basicNadjar}{\basicNadjar[50]}}% +\let\nadjaR=\Nadjar + +% 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}}% + +% \fdbicase{P}{f}{g}{n} draws the bipicture P with names f, g +% and length n units +\newcommand{\fdbicase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{900}\truey{150}% +\put(-\value{x},\value{y}){${#2}$}% +\truex{300}\truey{1050}% +\put(\value{x},-\value{y}){${#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}}% + +% \NEBIAR{n} draws a pair of north-east arrows of length n units +\newcommand{\NEBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},\value{x}){\vector(1,1){#1}}% +\put(\value{x},-\value{x}){\vector(1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \NEADJAR{n} draws a north-east pair of adjoint arrows of length n units +\newcommand{\NEADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},-\value{x}){\vector(1,1){#1}}% +\end{picture}}% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},\value{x}){\vector(-1,-1){#1}}% +\end{picture}}\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]}}% + +% pair of north-east arrows of length nx100 units +\def\basicnebiar[#1]{\fdbicase{\NEBIAR}{}{}{#100}}% + +% pair of north-east arrows +\newcommand{\nebiar}{\@ifnextchar[{\basicnebiar}{\basicnebiar[59]}}% + +% pair of north-east arrows with names [1][2] and length nx100 units +\def\basicNebiar[#1]#2#3{\fdbicase{\NEBIAR}{#2}{#3}{#100}}% + +% pair of north-east arrows with names +\newcommand{\Nebiar}{\@ifnextchar[{\basicNebiar}{\basicNebiar[59]}}% +\let\nebiaR=\Nebiar + +% pair of north-east adjoint arrows of length nx100 units +\def\basicneadjar[#1]{\fdbicase{\NEADJAR}{}{}{#100}}% + +% pair of north-east adjoint arrows +\newcommand{\neadjar}{\@ifnextchar[{\basicneadjar}{\basicneadjar[59]}}% + +% pair of north-east adjoint arrows with names [1][2] and length nx100 units +\def\basicNeadjar[#1]#2#3{\fdbicase{\NEADJAR}{#2}{#3}{#100}}% + +% pair of north-east adjoint arrows with names +\newcommand{\Neadjar}{\@ifnextchar[{\basicNeadjar}{\basicNeadjar[59]}}% +\let\neadjaR=\Neadjar + +% 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}}% + +% \SWBIAR{n} draws a pair of south-west arrows of length n units +\newcommand{\SWBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\put(\value{x},-\value{x}){\vector(-1,-1){#1}}% +\put(-\value{x},\value{x}){\vector(-1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \SWADJAR{n} draws a south-west pair of adjoint arrows of length n units +\newcommand{\SWADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},-\value{x}){\vector(-1,-1){#1}}% +\end{picture}}% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},\value{x}){\vector(1,1){#1}}% +\end{picture}}\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]}}% + +% pair of south-west arrows of length nx100 units +\def\basicswbiar[#1]{\fdbicase{\SWBIAR}{}{}{#100}}% + +% pair of south-west arrows +\newcommand{\swbiar}{\@ifnextchar[{\basicswbiar}{\basicswbiar[59]}}% + +% pair of south-west arrows with names [1][2] and length nx100 units +\def\basicSwbiar[#1]#2#3{\fdbicase{\SWBIAR}{#2}{#3}{#100}}% + +% pair of south-west arrows with names +\newcommand{\Swbiar}{\@ifnextchar[{\basicSwbiar}{\basicSwbiar[59]}}% +\let\swbiaR=\Swbiar + +% pair of south-west adjoint arrows of length nx100 units +\def\basicswadjar[#1]{\fdbicase{\SWADJAR}{}{}{#100}}% + +% pair of south-west adjoint arrows +\newcommand{\swadjar}{\@ifnextchar[{\basicswadjar}{\basicswadjar[59]}}% + +% pair of south-west adjoint arrows with names [1][2] and length nx100 units +\def\basicSwadjar[#1]#2#3{\fdbicase{\SWADJAR}{#2}{#3}{#100}}% + +% pair of south-west adjoint arrows with names +\newcommand{\Swadjar}{\@ifnextchar[{\basicSwadjar}{\basicSwadjar[59]}}% +\let\swadjaR=\Swadjar + +% 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}}% + +% \sdbicase{P}{f}{g}{n} draws the bipicture P with names f, g +% and length n units +\newcommand{\sdbicase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{350}\truey{600}\truez{950}% +\put(\value{x},\value{x}){\makebox(0,\value{y})[l]{${#2}$}}% +\truex{450}\truey{600}\truez{1050}% +\put(-\value{x},-\value{z}){\makebox(0,\value{y})[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}}% + +% \SEBIAR{n} draws a pair of south-east arrows of length n units +\newcommand{\SEBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},-\value{x}){\vector(1,-1){#1}}% +\put(\value{x},\value{x}){\vector(1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \SEADJAR{n} draws a south-east pair of adjoint arrows of length n units +\newcommand{\SEADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},-\value{x}){\vector(1,-1){#1}}% +\end{picture}}% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},\value{x}){\vector(-1,1){#1}}% +\end{picture}}\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]}}% + +% pair of south-east arrows of length nx100 units +\def\basicsebiar[#1]{\sdbicase{\SEBIAR}{}{}{#100}}% + +% pair of south-east arrows +\newcommand{\sebiar}{\@ifnextchar[{\basicsebiar}{\basicsebiar[59]}}% + +% pair of south-east arrows with names [1][2] and length nx100 units +\def\basicSebiar[#1]#2#3{\sdbicase{\SEBIAR}{#2}{#3}{#100}}% + +% pair of south-east arrows with names +\newcommand{\Sebiar}{\@ifnextchar[{\basicSebiar}{\basicSebiar[59]}}% +\let\sebiaR=\Sebiar + +% pair of south-east adjoint arrows of length nx100 units +\def\basicseadjar[#1]{\sdbicase{\SEADJAR}{}{}{#100}}% + +% pair of south-east adjoint arrows +\newcommand{\seadjar}{\@ifnextchar[{\basicseadjar}{\basicseadjar[59]}}% + +% pair of south-east adjoint arrows with names [1][2] and length nx100 units +\def\basicSeadjar[#1]#2#3{\sdbicase{\SEADJAR}{#2}{#3}{#100}}% + +% pair of south-east adjoint arrows with names +\newcommand{\Seadjar}{\@ifnextchar[{\basicSeadjar}{\basicSeadjar[59]}}% +\let\seadjaR=\Seadjar + +% 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}}% + +% \NWBIAR{n} draws a pair of north-west arrows of length n units +\newcommand{\NWBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},-\value{x}){\vector(-1,1){#1}}% +\put(\value{x},\value{x}){\vector(-1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \NWADJAR{n} draws a north-west pair of adjoint arrows of length n units +\newcommand{\NWADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},-\value{x}){\vector(-1,1){#1}}% +\end{picture}}% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},\value{x}){\vector(1,-1){#1}}% +\end{picture}}\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]}}% + +% pair of north-west arrows of length nx100 units +\def\basicnwbiar[#1]{\sdbicase{\NWBIAR}{}{}{#100}}% + +% pair of north-west arrows +\newcommand{\nwbiar}{\@ifnextchar[{\basicnwbiar}{\basicnwbiar[59]}}% + +% pair of north-west arrows with names [1][2] and length nx100 units +\def\basicNwbiar[#1]#2#3{\sdbicase{\NWBIAR}{#2}{#3}{#100}}% + +% pair of north-west arrows with names +\newcommand{\Nwbiar}{\@ifnextchar[{\basicNwbiar}{\basicNwbiar[59]}}% +\let\nwbiaR=\Nwbiar + +% pair of north-west adjoint arrows of length nx100 units +\def\basicnwadjar[#1]{\sdbicase{\NWADJAR}{}{}{#100}}% + +% pair of north-west adjoint arrows +\newcommand{\nwadjar}{\@ifnextchar[{\basicnwadjar}{\basicnwadjar[59]}}% + +% pair of north-west adjoint arrows with names [1][2] and length nx100 units +\def\basicNwadjar[#1]#2#3{\sdbicase{\NWADJAR}{#2}{#3}{#100}}% + +% pair of north-west adjoint arrows with names +\newcommand{\Nwadjar}{\@ifnextchar[{\basicNwadjar}{\basicNwadjar[59]}}% +\let\nwadjaR=\Nwadjar + +% 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}}% + +% \ENEBIAR{f}{g}{n} draws a pair of east-north-east arrows +% with names f,g and length n units +\newcommand{\ENEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},\value{y}){\vector(2,1){#3}}% +\put(\value{x},-\value{y}){\vector(2,1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\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}}% + +% \ENEADJAR{f}{g}{n} draws a east-north-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\ENEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(2,1){#3}}% +\put(\monolength,\secondepilength){\vector(-2,-1){#3}}% +\end{picture}} +\truex{300}\truey{1000}\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\basicEnear[#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]}}% + +% basic east-north-east pair of arrows +\def\basicenebiar[#1]{\ENEBIAR{}{}{#100}}% + +% east-north-east pair of arrows +\newcommand{\enebiar}{\@ifnextchar[{\basicenebiar}{\basicenebiar[133]}}% + +% basic east-north-east pair of arrows with names +\def\basicEnebiar[#1]#2#3{\ENEBIAR{#2}{#3}{#100}}% + +% east-north-east pair of arrows with names +\newcommand{\Enebiar}{\@ifnextchar[{\basicEnebiar}{\basicEnebiar[133]}}% +\let\enebiaR=\Enebiar + +% basic east-north-east pair of adjoint arrows +\def\basiceneadjar[#1]{\ENEADJAR{}{}{#100}}% + +% east-north-east pair of adjoint arrows +\newcommand{\eneadjar}{\@ifnextchar[{\basiceneadjar}{\basiceneadjar[133]}}% + +% basic east-north-east pair of adjoint arrows with names +\def\basicEneadjar[#1]#2#3{\ENEADJAR{#2}{#3}{#100}}% + +% east-north-east pair of adjoint arrows with names +\newcommand{\Eneadjar}{\@ifnextchar[{\basicEneadjar}{\basicEneadjar[133]}}% +\let\eneadjaR=\Eneadjar + +% 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}}% + +% \ESEBIAR{f}{g}{n} draws a pair of east-south-east arrows +% with names f,g and length n units +\newcommand{\ESEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},-\value{y}){\vector(2,-1){#3}}% +\put(\value{x},\value{y}){\vector(2,-1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\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}}% + +% \ESEADJAR{f}{g}{n} draws a east-south-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\ESEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(2,-1){#3}}% +\put(\epilength,-\secondmonolength){\vector(-2,1){#3}}% +\end{picture}} +\truex{400}\truey{1000}\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]}}% + +% basic east-south-east pair of arrows +\def\basicesebiar[#1]{\ESEBIAR{}{}{#100}}% + +% east-south-east pair of arrows +\newcommand{\esebiar}{\@ifnextchar[{\basicesebiar}{\basicesebiar[133]}}% + +% basic east-south-east pair of arrows with names +\def\basicEsebiar[#1]#2#3{\ESEBIAR{#2}{#3}{#100}}% + +% east-south-east pair of arrows with names +\newcommand{\Esebiar}{\@ifnextchar[{\basicEsebiar}{\basicEsebiar[133]}}% +\let\esebiaR=\Esebiar + +% basic east-south-east pair of adjoint arrows +\def\basiceseadjar[#1]{\ESEADJAR{}{}{#100}}% + +% east-south-east pair of adjoint arrows +\newcommand{\eseadjar}{\@ifnextchar[{\basiceseadjar}{\basiceseadjar[133]}}% + +% basic east-south-east pair of adjoint arrows with names +\def\basicEseadjar[#1]#2#3{\ESEADJAR{#2}{#3}{#100}}% + +% east-south-east pair of adjoint arrows with names +\newcommand{\Eseadjar}{\@ifnextchar[{\basicEseadjar}{\basicEseadjar[133]}}% +\let\eseadjaR=\Eseadjar + +% 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}}% + +% \WSWBIAR{f}{g}{n} draws a pair of west-south-west arrows +% with names f,g and length n units +\newcommand{\WSWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},\value{y}){\vector(-2,-1){#3}}% +\put(\value{x},-\value{y}){\vector(-2,-1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\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}}% + +% \WSWADJAR{f}{g}{n} draws a west-south-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\WSWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(-2,-1){#3}}% +\put(-\epilength,-\secondmonolength){\vector(2,1){#3}}% +\end{picture}} +\truex{300}\truey{1000}\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]}}% + +% basic west-south-west pair of arrows +\def\basicwswbiar[#1]{\WSWBIAR{}{}{#100}}% + +% west-south-west pair of arrows +\newcommand{\wswbiar}{\@ifnextchar[{\basicwswbiar}{\basicwswbiar[133]}}% + +% basic west-south-west pair of arrows with names +\def\basicWswbiar[#1]#2#3{\WSWBIAR{#2}{#3}{#100}}% + +% west-south-west pair of arrows with names +\newcommand{\Wswbiar}{\@ifnextchar[{\basicWswbiar}{\basicWswbiar[133]}}% +\let\wswbiaR=\Wswbiar + +% basic west-south-west pair of adjoint arrows +\def\basicwswadjar[#1]{\WSWADJAR{}{}{#100}}% + +% west-south-west pair of adjoint arrows +\newcommand{\wswadjar}{\@ifnextchar[{\basicwswadjar}{\basicwswadjar[133]}}% + +% basic west-south-west pair of adjoint arrows with names +\def\basicWswadjar[#1]#2#3{\WSWADJAR{#2}{#3}{#100}}% + +% west-south-west pair of adjoint arrows with names +\newcommand{\Wswadjar}{\@ifnextchar[{\basicWswadjar}{\basicWswadjar[133]}}% +\let\wswadjaR=\Wswadjar + +% 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}}% + +% \WNWBIAR{f}{g}{n} draws a pair of west-north-west arrows +% with names f,g and length n units +\newcommand{\WNWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},-\value{y}){\vector(-2,1){#3}}% +\put(\value{x},\value{y}){\vector(-2,1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\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}}% + +% \WNWADJAR{f}{g}{n} draws a west-north-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\WNWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(-2,1){#3}}% +\put(-\monolength,\secondepilength){\vector(2,-1){#3}}% +\end{picture}} +\truex{400}\truey{1000}\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]}}% + +% basic west-north-west distributor +\def\basicwnwdist[#1]{\WNWDIST{}{}{#100}}% + +% basic west-north-west pair of arrows +\def\basicwnwbiar[#1]{\WNWBIAR{}{}{#100}}% + +% west-north-west pair of arrows +\newcommand{\wnwbiar}{\@ifnextchar[{\basicwnwbiar}{\basicwnwbiar[133]}}% + +% basic west-north-west pair of arrows with names +\def\basicWnwbiar[#1]#2#3{\WNWBIAR{#2}{#3}{#100}}% + +% west-north-west pair of arrows with names +\newcommand{\Wnwbiar}{\@ifnextchar[{\basicWnwbiar}{\basicWnwbiar[133]}}% +\let\wnwbiaR=\Wnwbiar + +% basic west-north-west pair of adjoint arrows +\def\basicwnwadjar[#1]{\WNWADJAR{}{}{#100}}% + +% west-north-west pair of adjoint arrows +\newcommand{\wnwadjar}{\@ifnextchar[{\basicwnwadjar}{\basicwnwadjar[133]}}% + +% basic west-north-west pair of adjoint arrows with names +\def\basicWnwadjar[#1]#2#3{\WNWADJAR{#2}{#3}{#100}}% + +% west-north-west pair of adjoint arrows with names +\newcommand{\Wnwadjar}{\@ifnextchar[{\basicWnwadjar}{\basicWnwadjar[133]}}% +\let\wnwadjaR=\Wnwadjar + +% 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}}% + +% \NNEBIAR{f}{g}{n} draws a pair of north-north-east arrows +% with names f,g and length n units +\newcommand{\NNEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},\value{y}){\vector(1,2){#3}}% +\put(\value{x},-\value{y}){\vector(1,2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\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}}% + +% \NNEADJAR{f}{g}{n} draws a north-north-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\NNEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(1,2){#3}}% +\put(\monolength,\secondepilength){\vector(-1,-2){#3}}% +\end{picture}} +\truex{300}\truey{1000}\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]}}% + +% basic north-north-east pair of arrows +\def\basicnnebiar[#1]{\NNEBIAR{}{}{#100}}% + +% north-north-east pair of arrows +\newcommand{\nnebiar}{\@ifnextchar[{\basicnnebiar}{\basicnnebiar[67]}}% + +% basic north-north-east pair of arrows with names +\def\basicNnebiar[#1]#2#3{\NNEBIAR{#2}{#3}{#100}}% + +% north-north-east pair of arrows with names +\newcommand{\Nnebiar}{\@ifnextchar[{\basicNnebiar}{\basicNnebiar[67]}}% +\let\nnebiaR=\Nnebiar + +% basic north-north-east pair of adjoint arrows +\def\basicnneadjar[#1]{\NNEADJAR{}{}{#100}}% + +% north-north-east pair of adjoint arrows +\newcommand{\nneadjar}{\@ifnextchar[{\basicnneadjar}{\basicnneadjar[67]}}% + +% basic north-north-east pair of adjoint arrows with names +\def\basicNneadjar[#1]#2#3{\NNEADJAR{#2}{#3}{#100}}% + +% north-north-east pair of adjoint arrows with names +\newcommand{\Nneadjar}{\@ifnextchar[{\basicNneadjar}{\basicNneadjar[67]}}% +\let\nneadjaR=\Nneadjar + +% 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}}% + +% \SSEBIAR{f}{g}{n} draws a pair of south-south-east arrows +% with names f,g and length n units +\newcommand{\SSEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},-\value{y}){\vector(1,-2){#3}}% +\put(\value{x},\value{y}){\vector(1,-2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\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}}% + +% \SSEADJAR{f}{g}{n} draws a south-south-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\SSEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(1,-2){#3}}% +\put(\epilength,-\secondmonolength){\vector(-1,2){#3}}% +\end{picture}} +\truex{400}\truey{1000}\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]}}% + +% basic south-south-east pair of arrows +\def\basicssebiar[#1]{\SSEBIAR{}{}{#100}}% + +% south-south-east pair of arrows +\newcommand{\ssebiar}{\@ifnextchar[{\basicssebiar}{\basicssebiar[67]}}% + +% basic south-south-east pair of arrows with names +\def\basicSsebiar[#1]#2#3{\SSEBIAR{#2}{#3}{#100}}% + +% south-south-east pair of arrows with names +\newcommand{\Ssebiar}{\@ifnextchar[{\basicSsebiar}{\basicSsebiar[67]}}% +\let\ssebiaR=\Ssebiar + +% basic south-south-east pair of adjoint arrows +\def\basicsseadjar[#1]{\SSEADJAR{}{}{#100}}% + +% south-south-east pair of adjoint arrows +\newcommand{\sseadjar}{\@ifnextchar[{\basicsseadjar}{\basicsseadjar[67]}}% + +% basic south-south-east pair of adjoint arrows with names +\def\basicSseadjar[#1]#2#3{\SSEADJAR{#2}{#3}{#100}}% + +% south-south-east pair of adjoint arrows with names +\newcommand{\Sseadjar}{\@ifnextchar[{\basicSseadjar}{\basicSseadjar[67]}}% +\let\sseadjaR=\Sseadjar + +% 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}}% + +% \SSWBIAR{f}{g}{n} draws a pair of south-south-west arrows +% with names f,g and length n units +\newcommand{\SSWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},\value{y}){\vector(-1,-2){#3}}% +\put(\value{x},-\value{y}){\vector(-1,-2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\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}}% + +% \SSWADJAR{f}{g}{n} draws a south-south-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\SSWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(-1,-2){#3}}% +\put(-\epilength,-\secondmonolength){\vector(1,2){#3}}% +\end{picture}} +\truex{300}\truey{1000}\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]}}% + +% basic south-south-west pair of arrows +\def\basicsswbiar[#1]{\SSWBIAR{}{}{#100}}% + +% south-south-west pair of arrows +\newcommand{\sswbiar}{\@ifnextchar[{\basicsswbiar}{\basicsswbiar[67]}}% + +% basic south-south-west pair of arrows with names +\def\basicSswbiar[#1]#2#3{\SSWBIAR{#2}{#3}{#100}}% + +% south-south-west pair of arrows with names +\newcommand{\Sswbiar}{\@ifnextchar[{\basicSswbiar}{\basicSswbiar[67]}}% +\let\sswbiaR=\Sswbiar + +% basic south-south-west pair of adjoint arrows +\def\basicsswadjar[#1]{\SSWADJAR{}{}{#100}}% + +% south-south-west pair of adjoint arrows +\newcommand{\sswadjar}{\@ifnextchar[{\basicsswadjar}{\basicsswadjar[67]}}% + +% basic south-south-west pair of adjoint arrows with names +\def\basicSswadjar[#1]#2#3{\SSWADJAR{#2}{#3}{#100}}% + +% south-south-west pair of adjoint arrows with names +\newcommand{\Sswadjar}{\@ifnextchar[{\basicSswadjar}{\basicSswadjar[67]}}% +\let\sswadjaR=\Sswadjar + +% 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}}% + +% \NNWBIAR{f}{g}{n} draws a pair of north-north-west arrows +% with names f,g and length n units +\newcommand{\NNWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},-\value{y}){\vector(-1,2){#3}}% +\put(\value{x},\value{y}){\vector(-1,2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\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}}% + +% \NNWADJAR{f}{g}{n} draws a north-north-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\NNWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(-1,2){#3}}% +\put(-\monolength,\secondepilength){\vector(1,-2){#3}}% +\end{picture}} +\truex{400}\truey{1000}\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]}}% + +% basic north-north-east pair of arrows +\def\basicnnwbiar[#1]{\NNWBIAR{}{}{#100}}% + +% north-north-east pair of arrows +\newcommand{\nnwbiar}{\@ifnextchar[{\basicnnwbiar}{\basicnnwbiar[67]}}% + +% basic north-north-east pair of arrows with names +\def\basicNnwbiar[#1]#2#3{\NNWBIAR{#2}{#3}{#100}}% + +% north-north-east pair of arrows with names +\newcommand{\Nnwbiar}{\@ifnextchar[{\basicNnwbiar}{\basicNnwbiar[67]}}% +\let\nnwbiaR=\Nnwbiar + +% basic north-north-east pair of adjoint arrows +\def\basicnnwadjar[#1]{\NNWADJAR{}{}{#100}}% + +% north-north-east pair of adjoint arrows +\newcommand{\nnwadjar}{\@ifnextchar[{\basicnnwadjar}{\basicnnwadjar[67]}}% + +% basic north-north-east pair of adjoint arrows with names +\def\basicNnwadjar[#1]#2#3{\NNWADJAR{#2}{#3}{#100}}% + +% north-north-east pair of adjoint arrows with names +\newcommand{\Nnwadjar}{\@ifnextchar[{\basicNnwadjar}{\basicNnwadjar[67]}}% +\let\nnwadjaR=\Nnwadjar + +% 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 |