% 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 \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