summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/borceux/MultipleArrows
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/borceux/MultipleArrows')
-rw-r--r--Master/texmf-dist/tex/generic/borceux/MultipleArrows1313
1 files changed, 1313 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/borceux/MultipleArrows b/Master/texmf-dist/tex/generic/borceux/MultipleArrows
new file mode 100644
index 00000000000..9ac6aa2f85c
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/borceux/MultipleArrows
@@ -0,0 +1,1313 @@
+%%% MACRO FILE FOR TRIPLE, QUADRUPLE AND QUINTUPLE ARROWS
+
+\catcode`\@=11
+
+% SPECIAL SYMBOLS
+
+% adjoint symbol
+\newcommand{\adj}{\begin{picture}(9,6)%
+\put(1,3){\line(1,0){6}}\put(7,0){\line(0,1){6}}%
+\end{picture}}%
+
+% commutative diagram symbol
+\newcommand{\com}{\begin{picture}(12,8)%
+\put(6,4){\oval(8,8)[b]}\put(6,4){\oval(8,8)[r]}%
+\put(6,8){\line(-1,0){2}}\end{picture}}%
+
+% natural transformation with names [1],[2],[3]
+\newcommand{\Nat}[3]{\raisebox{-2pt}%
+{\begin{picture}(34,15)%
+\put(2,10){\line(1,0){30}}%
+\put(32,10){\ehead}%
+\put(2,0){\line(1,0){30}}%
+\put(32,0){\ehead}%
+\put(13,2){$\Downarrow$}%
+\put(20,3){$\scriptstyle{#2}$}%
+\put(4,11){$\scriptstyle{#1}$}%
+\put(4,1){$\scriptstyle{#3}$}%
+\end{picture}}}%
+
+% natural transformation
+\newcommand{\nat}{\raisebox{-2pt}%
+{\begin{picture}(34,10)%
+\put(2,10){\line(1,0){30}}%
+\put(32,10){\ehead}%
+\put(2,0){\line(1,0){30}}%
+\put(32,0){\ehead}%
+\put(13,2){$\Downarrow$}%
+\end{picture}}}%
+
+% pair of natural transformations with names [1],[2],[3],[4],[5]
+\newcommand{\Binat}[5]{\raisebox{-7.5pt}%
+{\begin{picture}(34,25)%
+\put(2,20){\line(1,0){30}}%
+\put(32,20){\ehead}%
+\put(2,10){\line(1,0){30}}%
+\put(32,10){\ehead}%
+\put(2,0){\line(1,0){30}}%
+\put(32,0){\ehead}%
+\put(13,12){$\Downarrow$}%
+\put(13,2){$\Downarrow$}%
+\put(20,13){$\scriptstyle{#2}$}%
+\put(20,3){$\scriptstyle{#4}$}%
+\put(4,21){$\scriptstyle{#1}$}%
+\put(4,11){$\scriptstyle{#3}$}%
+\put(4,1){$\scriptstyle{#5}$}%
+\end{picture}}}%
+
+% pair of natural transformations
+\newcommand{\binat}{\raisebox{-7.5pt}%
+{\begin{picture}(34,20)%
+\put(2,20){\line(1,0){30}}%
+\put(32,20){\ehead}%
+\put(2,10){\line(1,0){30}}%
+\put(32,10){\ehead}%
+\put(2,0){\line(1,0){30}}%
+\put(32,0){\ehead}%
+\put(13,12){$\Downarrow$}%
+\put(13,2){$\Downarrow$}%
+\end{picture}}}%
+
+% display natural transformation with names [1],[2],[3]
+\newcommand{\Dnat}[3]{\raisebox{-2pt}%
+{\begin{picture}(54,15)%
+\put(2,10){\line(1,0){50}}%
+\put(52,10){\ehead}%
+\put(2,0){\line(1,0){50}}%
+\put(52,0){\ehead}%
+\put(23,2){$\Downarrow$}%
+\put(30,1){$\textstyle{#2}$}%
+\put(4,11){$\textstyle{#1}$}%
+\put(4,1){$\textstyle{#3}$}%
+\end{picture}}}%
+
+% display natural transformation
+\newcommand{\dnat}{\raisebox{-2pt}%
+{\begin{picture}(54,10)%
+\put(2,10){\line(1,0){50}}%
+\put(52,10){\ehead}%
+\put(2,0){\line(1,0){50}}%
+\put(52,0){\ehead}%
+\put(23,2){$\Downarrow$}%
+\end{picture}}}%
+
+% display pair of natural transformations with names [1],[2],[3],[4],[5]
+\newcommand{\Dbinat}[5]{\raisebox{-7.5pt}%
+{\begin{picture}(54,25)%
+\put(2,20){\line(1,0){50}}%
+\put(52,20){\ehead}%
+\put(2,10){\line(1,0){50}}%
+\put(52,10){\ehead}%
+\put(2,0){\line(1,0){50}}%
+\put(52,0){\ehead}%
+\put(23,12){$\Downarrow$}%
+\put(23,2){$\Downarrow$}%
+\put(30,11){$\textstyle{#2}$}%
+\put(30,1){$\textstyle{#4}$}%
+\put(4,21){$\textstyle{#1}$}%
+\put(4,11){$\textstyle{#3}$}%
+\put(4,1){$\textstyle{#5}$}%
+\end{picture}}}%
+
+% display pair of natural transformations
+\newcommand{\dbinat}{\raisebox{-7.5pt}%
+{\begin{picture}(54,20)%
+\put(2,20){\line(1,0){50}}%
+\put(52,20){\ehead}%
+\put(2,10){\line(1,0){50}}%
+\put(52,10){\ehead}%
+\put(2,0){\line(1,0){50}}%
+\put(52,0){\ehead}%
+\put(23,12){$\Downarrow$}%
+\put(23,2){$\Downarrow$}%
+\end{picture}}}%
+
+
+% MACROS FOR TEXT ARROWS
+
+% \ttricase{P} draws the tri-picture P
+% with length \textarrowlength pt.
+\newcommand{\ttricase}[1]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computetextparameters%
+\makebox[\actualtextarrowspace pt]%
+{\raisebox{4pt}{#1{\actualtextarrowlength}%
+{\rule{0pt}{6pt}}{\rule{0pt}{6pt}}{\rule{0pt}{6pt}}}}%
+\setlength{\unitlength}{1pt}}%
+
+% \Ttricase{P}{f}{g}{h} draws the tri-picture P with names f, g, h
+% and length \textarrowlength pt.
+\newcommand{\Ttricase}[4]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computetextparameters%
+\makebox[\actualtextarrowspace pt]%
+{\raisebox{4pt}%
+{#1{\actualtextarrowlength}{\rule{0pt}{6pt}\scriptstyle #2}%
+{\rule{0pt}{6pt}\scriptstyle #3}{\rule{0pt}{6pt}\scriptstyle #4}}}%
+\setlength{\unitlength}{1pt}}%
+
+% \tmulticase{P} draws the multi-picture P
+% with length \textarrowlength pt.
+\newcommand{\tmulticase}[1]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computetextparameters%
+\makebox[\actualtextarrowspace pt]%
+{\raisebox{1pt}{#1{\actualtextarrowlength}}}%
+\setlength{\unitlength}{1pt}}%
+
+% MACROS FOR DISPLAYED ARROWS
+
+% \dtricase{P} draws the tri-picture P
+% with length \displayarrowlength pt.
+\newcommand{\dtricase}[1]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computedisplayparameters%
+\makebox[\actualdisplayarrowspace pt]%
+{\raisebox{4pt}{#1{\actualdisplayarrowlength}%
+{\rule{0pt}{6pt}}{\rule{0pt}{6pt}}{\rule{0pt}{6pt}}}}%
+\setlength{\unitlength}{1pt}}%
+
+% \Dtricase{P}{f}{g}{h} draws the tri-picture P with names f, g, h
+% and length \displayarrowlength pt.
+\newcommand{\Dtricase}[4]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computedisplayparameters%
+\makebox[\actualdisplayarrowspace pt]%
+{\raisebox{4pt}%
+{#1{\actualdisplayarrowlength}{\rule{0pt}{6pt}\textstyle #2}%
+{\rule{0pt}{6pt}\textstyle #3}{\rule{0pt}{6pt}\textstyle #4}}}%
+\setlength{\unitlength}{1pt}}%
+
+% \dmulticase{P} draws the multi-picture P
+% with length \displayarrowlength pt.
+\newcommand{\dmulticase}[1]{%
+\testtextmode%
+\setlength{\unitlength}{0.01pt}%
+\computedisplayparameters%
+\makebox[\actualdisplayarrowspace pt]%
+{\raisebox{1pt}{#1{\actualdisplayarrowlength}}}%
+\setlength{\unitlength}{1pt}}%
+
+% TEXT ARROWS
+
+% \TRIAR{n}{f}{g}{h} draws a triple of arrows of length n units
+% and names f, g, h
+\newcommand{\TRIAR}[4]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\mbox{$#2$}\\ \AR{#1}\\%
+\mbox{$#3$}\\ \AR{#1}\\%
+\mbox{$#4$}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \TRIADJAR{n} draws a triple of adjoint arrows of length n units
+% and names f, g, h
+\newcommand{\TRIADJAR}[4]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\mbox{$#2$}\\ \BKAR{#1}\\%
+\mbox{$#3$}\\ \AR{#1}\\%
+\mbox{$#4$}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \QUADRIAR{n} draws a quadruple of arrows of length n units
+\newcommand{\QUADRIAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\AR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \QUADRIADJAR{n} draws a quadruple of adjoint arrows
+% of length n units
+\newcommand{\QUADRIADJAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \QUINTIAR{n} draws a quintuple of arrows of length n units
+\newcommand{\QUINTIAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\AR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \QUINTIADJAR{n} draws a quintuple of adjoint arrows
+% of length n units
+\newcommand{\QUINTIADJAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\AR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% USER'S COMMANDS FOR TEXT ARROWS
+
+% triple of arrows
+\newcommand{\triar}{\ifinner\ttricase{\TRIAR}\else\dtricase{\TRIAR}\fi}%
+
+% triple of arrows with names [1],[2],[3]
+\newcommand{\Triar}[3]{\ifinner\Ttricase{\TRIAR}{#1}{#2}{#3}%
+\else\Dtricase{\TRIAR}{#1}{#2}{#3}\fi}%
+
+% triple of adjoint arrows
+\newcommand{\triadjar}{\ifinner\ttricase{\TRIADJAR}%
+\else\dtricase{\TRIADJAR}\fi}%
+
+% triple of adjoint arrows with names [1],[2],[3]
+\newcommand{\Triadjar}[3]{\ifinner\Ttricase{\TRIADJAR}{#1}{#2}{#3}%
+\else\Dtricase{\TRIADJAR}{#1}{#2}{#3}\fi}%
+
+% quadruple of arrows
+\newcommand{\quadriar}{\ifinner\tquadricase{\QUADRIAR}%
+\else\dmulticase{\QUADRIAR}\fi}%
+
+% quadruple of adjoint arrows
+\newcommand{\quadriadjar}{\ifinner\tmulticase{\QUADRIADJAR}%
+\else\dmulticase{\QUADRIADJAR}\fi}%
+
+% quintuple of arrows
+\newcommand{\quintiar}{\ifinner\tmulticase{\QUINTIAR}%
+\else\dmulticase{\QUINTIAR}\fi}%
+
+% quintuple of adjoint arrows
+\newcommand{\quintiadjar}{\ifinner\tmulticase{\QUINTIADJAR}%
+\else\dmulticase{\QUINTIADJAR}\fi}%
+
+
+% BACKWARD TEXT ARROWS
+
+% \BKTRIAR{n}{f}{g}{h} draws a triple of back arrows of length n units
+% and names f, g, h
+\newcommand{\BKTRIAR}[4]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\mbox{$#2$}\\ \BKAR{#1}\\%
+\mbox{$#3$}\\ \BKAR{#1}\\%
+\mbox{$#4$}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \BKTRIADJAR{n} draws a back triple of adjoint arrows of length n units
+% and names f, g, h
+\newcommand{\BKTRIADJAR}[4]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\mbox{$#2$}\\ \AR{#1}\\%
+\mbox{$#3$}\\ \BKAR{#1}\\%
+\mbox{$#4$}\\ \AR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \BKQUADRIAR{n} draws a quadruple of back arrows of length n units
+\newcommand{\BKQUADRIAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \BKQUADRIADJAR{n} draws a back quadruple of adjoint arrows
+% of length n units
+\newcommand{\BKQUADRIADJAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\AR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}\\%
+\rule{0pt}{3pt}\\ \AR{#1}\\%
+\rule{0pt}{3pt}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \BKQUINTIAR{n} draws a quintuple of back arrows of length n units
+\newcommand{\BKQUINTIAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% \BKQUINTIADJAR{n} draws a back quintuple of adjoint arrows
+% of length n units
+\newcommand{\BKQUINTIADJAR}[1]%
+{\renewcommand{\arraystretch}{0.2}%
+\begin{tabular}{c}%
+\BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}\\%
+\rule{0pt}{2pt}\\ \AR{#1}\\%
+\rule{0pt}{2pt}\\ \BKAR{#1}%
+\end{tabular}%
+\renewcommand{\arraystretch}{1}}%
+
+% USER'S COMMANDS FOR BACKWARD TEXT ARROWS
+
+% triple of back arrows
+\newcommand{\bktriar}{\ifinner\ttricase{\BKTRIAR}\else\dtricase{\BKTRIAR}\fi}%
+
+% triple of back arrows with names [1],[2],[3]
+\newcommand{\Bktriar}[3]{\ifinner\Ttricase{\BKTRIAR}{#1}{#2}{#3}%
+\else\Dtricase{\BKTRIAR}{#1}{#2}{#3}\fi}%
+
+% back triple of adjoint arrows
+\newcommand{\bktriadjar}{\ifinner\ttricase{\BKTRIADJAR}%
+\else\dtricase{\BKTRIADJAR}\fi}%
+
+% back triple of adjoint arrows with names [1],[2],[3]
+\newcommand{\Bktriadjar}[3]{\ifinner\Ttricase{\BKTRIADJAR}{#1}{#2}{#3}%
+\else\Dtricase{\BKTRIADJAR}{#1}{#2}{#3}\fi}%
+
+% back quadruple of arrows
+\newcommand{\bkquadriar}{\ifinner\tquadricase{\BKQUADRIAR}%
+\else\dmulticase{\BKQUADRIAR}\fi}%
+
+% back quadruple of adjoint arrows
+\newcommand{\bkquadriadjar}{\ifinner\tmulticase{\BKQUADRIADJAR}%
+\else\dmulticase{\BKQUADRIADJAR}\fi}%
+
+% back quintuple of arrows
+\newcommand{\bkquintiar}{\ifinner\tmulticase{\BKQUINTIAR}%
+\else\dmulticase{\BKQUINTIAR}\fi}%
+
+% back quintuple of adjoint arrows
+\newcommand{\bkquintiadjar}{\ifinner\tmulticase{\BKQUINTIADJAR}%
+\else\dmulticase{\BKQUINTIADJAR}\fi}%
+
+% MACROS FOR HORIZONTAL DIAGRAM ARROWS
+
+% \htricase{P}{n} draws the tri-picture P with length n units.
+\newcommand{\htricase}[2]%
+{\testdiagrammode\makebox[0pt]%
+{\raisebox{-12pt}[0pt][0pt]{#1{#2}{}{}{}{}}}}%
+
+% \Htricase{P}{f}{g}{h}{i}{n} draws the tri-picture P
+% with names f, g, h, i and length n units.
+\newcommand{\Htricase}[6]%
+{\testdiagrammode\makebox[0pt]%
+{\raisebox{-12pt}[0pt][0pt]{#1{#6}{#2}{#3}{#4}{#5}}}}%
+
+% \hmulticase{P}{n} draws the multi-picture P with length n units.
+\newcommand{\hmulticase}[2]%
+{\testdiagrammode\makebox[0pt]{\raisebox{-12pt}[0pt][0pt]{#1{#2}}}}%
+
+% EAST ARROWS
+
+% \ETRIAR{n}{f}{g}{h}{i} draws an east triple of arrows
+% of length n units with names f, g, h, i
+\newcommand{\ETRIAR}[5]%
+{\truex{1200}%
+\X=\value{x}%
+\multiply\X by 2%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\X=#1%
+\divide\X by 2%
+\truex{-600}%
+\put(\X,\value{x}){\makebox(0,0){$#5$}}%
+\truex{600}%
+\put(\X,\value{x}){\makebox(0,0){$#4$}}%
+\truex{1800}%
+\put(\X,\value{x}){\makebox(0,0){$#3$}}%
+\truex{3000}%
+\put(\X,\value{x}){\makebox(0,0){$#2$}}%
+\end{picture}}%
+
+% \ETRIADJAR{n}{f}{g}{h}{i} draws an east triple of adjoint arrows
+% of length n units and names f, g, h, i
+\newcommand{\ETRIADJAR}[5]%
+{\truex{1200}%
+\X=\value{x}%
+\multiply\X by 2%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\X=#1%
+\divide\X by 2%
+\truex{-600}%
+\put(\X,\value{x}){\makebox(0,0){$#5$}}%
+\truex{600}%
+\put(\X,\value{x}){\makebox(0,0){$#4$}}%
+\truex{1800}%
+\put(\X,\value{x}){\makebox(0,0){$#3$}}%
+\truex{3000}%
+\put(\X,\value{x}){\makebox(0,0){$#2$}}%
+\end{picture}}%
+
+% \EQUADRIAR{n} draws an east quadruple of arrows
+% of length n units
+\newcommand{\EQUADRIAR}[1]%
+{\truex{800}%
+\truey{1600}%
+\X=\value{x}%
+\multiply\X by 3%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(0,\value{y}){\line(1,0){#1}}%
+\put(#1,\value{y}){\ehead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\end{picture}}%
+
+% \EQUADRIADJAR{n} draws an east quadruple of adjoint arrows
+% of length n units
+\newcommand{\EQUADRIADJAR}[1]%
+{\truex{800}%
+\truey{1600}%
+\X=\value{x}%
+\multiply\X by 3%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(0,\value{y}){\line(1,0){#1}}%
+\put(#1,\value{y}){\ehead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\end{picture}}%
+
+% \EQUINTIAR{n} draws an east quintuple of arrows
+% of length n units
+\newcommand{\EQUINTIAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\truez{1800}%
+\X=\value{x}%
+\multiply\X by 4%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(0,\value{y}){\line(1,0){#1}}%
+\put(#1,\value{y}){\ehead}%
+\put(0,\value{z}){\line(1,0){#1}}%
+\put(#1,\value{z}){\ehead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\end{picture}}%
+
+% \EQUINTIADJAR{n} draws an east quintuple of adjoint arrows
+% of length n units
+\newcommand{\EQUINTIADJAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\truez{1800}%
+\X=\value{x}%
+\multiply\X by 4%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(0,\value{y}){\line(1,0){#1}}%
+\put(#1,\value{y}){\ehead}%
+\put(#1,\value{z}){\line(-1,0){#1}}%
+\put(0,\value{z}){\whead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\end{picture}}%
+
+% USER'S COMMANDS FOR EAST ARROWS
+
+% basic east triple of arrows
+\def\basicetriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\htricase{\ETRIAR}{\Z}}%
+
+% east triple of arrows
+\newcommand{\etriar}{\@ifnextchar[{\basicetriar}%
+{\hspace{\SOURCE\unitlength}\basicetriar[\ARROWLENGTH]}}%
+
+% basic east triple of arrows with upper names
+\def\basicEtriar[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\ETRIAR}{#2}{#3}{#4}{}{\Z}}%
+
+% east triple of arrows with upper names
+\newcommand{\Etriar}{\@ifnextchar[{\basicEtriar}%
+{\hspace{\SOURCE\unitlength}\basicEtriar[\ARROWLENGTH]}}%
+
+% basic east triple of arrows with lower names
+\def\basicetriaR[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\ETRIAR}{}{#2}{#3}{#4}{\Z}}%
+
+% east triple of arrows with lower name
+\newcommand{\etriaR}{\@ifnextchar[{\basicetriaR}%
+{\hspace{\SOURCE\unitlength}\basicetriaR[\ARROWLENGTH]}}%
+
+% basic east triple of adjoint arrows
+\def\basicetriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\htricase{\ETRIADJAR}{\Z}}%
+
+% east triple of adjoint arrows
+\newcommand{\etriadjar}{\@ifnextchar[{\basicetriadjar}%
+{\hspace{\SOURCE\unitlength}\basicetriadjar[\ARROWLENGTH]}}%
+
+% basic east triple of adjoint arrows with upper names
+\def\basicEtriadjar[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\ETRIADJAR}{#2}{#3}{#4}{}{\Z}}%
+
+% east triple of adjoint arrows with upper names
+\newcommand{\Etriadjar}{\@ifnextchar[{\basicEtriadjar}%
+{\hspace{\SOURCE\unitlength}\basicEtriadjar[\ARROWLENGTH]}}%
+
+% basic east triple of adjoint arrows with lower names
+\def\basicetriadjaR[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\ETRIADJAR}{}{#2}{#3}{#4}{\Z}}%
+
+% east triple of adjoint arrows with lower name
+\newcommand{\etriadjaR}{\@ifnextchar[{\basicetriadjaR}%
+{\hspace{\SOURCE\unitlength}\basicetriadjaR[\ARROWLENGTH]}}%
+
+% basic east quadruple of arrows
+\def\basicequadriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\EQUADRIAR}{\Z}}%
+
+% east quadruple of arrows
+\newcommand{\equadriar}{\@ifnextchar[{\basicequadriar}%
+{\hspace{\SOURCE\unitlength}\basicequadriar[\ARROWLENGTH]}}%
+
+% basic east quadruple of adjoint arrows
+\def\basicequadriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\EQUADRIADJAR}{\Z}}%
+
+% east quadruple of adjoint arrows
+\newcommand{\equadriadjar}{\@ifnextchar[{\basicequadriadjar}%
+{\hspace{\SOURCE\unitlength}\basicequadriadjar[\ARROWLENGTH]}}%
+
+% basic east quintuple of arrows
+\def\basicequintiar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\EQUINTIAR}{\Z}}%
+
+% east quintuple of arrows
+\newcommand{\equintiar}{\@ifnextchar[{\basicequintiar}%
+{\hspace{\SOURCE\unitlength}\basicequintiar[\ARROWLENGTH]}}%
+
+% basic east quintuple of adjoint arrows
+\def\basicequintiadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\EQUINTIADJAR}{\Z}}%
+
+% east quintuple of adjoint arrows
+\newcommand{\equintiadjar}{\@ifnextchar[{\basicequintiadjar}%
+{\hspace{\SOURCE\unitlength}\basicequintiadjar[\ARROWLENGTH]}}%
+
+
+% WEST ARROWS
+
+% \WTRIAR{n}{f}{g}{h}{i} draws a west triple of arrows
+% of length n units and names f, g, h, i
+\newcommand{\WTRIAR}[5]%
+{\truex{1200}%
+\X=\value{x}%
+\multiply\X by 2%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\X=#1%
+\divide\X by 2%
+\truex{-600}%
+\put(\X,\value{x}){\makebox(0,0){$#5$}}%
+\truex{600}%
+\put(\X,\value{x}){\makebox(0,0){$#4$}}%
+\truex{1800}%
+\put(\X,\value{x}){\makebox(0,0){$#3$}}%
+\truex{3000}%
+\put(\X,\value{x}){\makebox(0,0){$#2$}}%
+\end{picture}}%
+
+% \WTRIADJAR{n}{f}{g}{h}{i} draws a west triple of adjoint arrows
+% of length n units and names f, g, h, i
+\newcommand{\WTRIADJAR}[5]%
+{\truex{1200}%
+\X=\value{x}%
+\multiply\X by 2%
+\begin{picture}(#1,\X)%
+\put(0,0){\line(1,0){#1}}%
+\put(#1,0){\ehead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\X=#1%
+\divide\X by 2%
+\truex{-600}%
+\put(\X,\value{x}){\makebox(0,0){$#5$}}%
+\truex{600}%
+\put(\X,\value{x}){\makebox(0,0){$#4$}}%
+\truex{1800}%
+\put(\X,\value{x}){\makebox(0,0){$#3$}}%
+\truex{3000}%
+\put(\X,\value{x}){\makebox(0,0){$#2$}}%
+\end{picture}}%
+
+% \WQUADRIAR{n} draws a west quadruple of arrows
+% of length n units
+\newcommand{\WQUADRIAR}[1]%
+{\truex{800}%
+\truey{1600}%
+\X=\value{x}%
+\multiply\X by 3%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(#1,\value{y}){\line(-1,0){#1}}%
+\put(0,\value{y}){\whead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\end{picture}}%
+
+% \WQUADRIADJAR{n} draws a west quadruple of adjoint arrows
+% of length n units
+\newcommand{\WQUADRIADJAR}[1]%
+{\truex{800}%
+\truey{1600}%
+\X=\value{x}%
+\multiply\X by 3%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(#1,\value{y}){\line(-1,0){#1}}%
+\put(0,\value{y}){\whead}%
+\put(0,\X){\line(1,0){#1}}%
+\put(#1,\X){\ehead}%
+\end{picture}}%
+
+% \WQUINTIAR{n} draws a west quintuple of arrows
+% of length n units
+\newcommand{\WQUINTIAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\truez{1800}%
+\X=\value{x}%
+\multiply\X by 4%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(#1,\value{x}){\line(-1,0){#1}}%
+\put(0,\value{x}){\whead}%
+\put(#1,\value{y}){\line(-1,0){#1}}%
+\put(0,\value{y}){\whead}%
+\put(#1,\value{z}){\line(-1,0){#1}}%
+\put(0,\value{z}){\whead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\end{picture}}%
+
+% \WQUINTIADJAR{n} draws a west quintuple of adjoint arrows
+% of length n units
+\newcommand{\WQUINTIADJAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\truez{1800}%
+\X=\value{x}%
+\multiply\X by 4%
+\begin{picture}(#1,\X)%
+\put(#1,0){\line(-1,0){#1}}%
+\put(0,0){\whead}%
+\put(0,\value{x}){\line(1,0){#1}}%
+\put(#1,\value{x}){\ehead}%
+\put(#1,\value{y}){\line(-1,0){#1}}%
+\put(0,\value{y}){\whead}%
+\put(0,\value{z}){\line(1,0){#1}}%
+\put(#1,\value{z}){\ehead}%
+\put(#1,\X){\line(-1,0){#1}}%
+\put(0,\X){\whead}%
+\end{picture}}%
+
+% USER'S COMMANDS FOR WEST ARROWS
+
+% basic west triple of arrows
+\def\basicwtriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\htricase{\WTRIAR}{\Z}}%
+
+% west triple of arrows
+\newcommand{\wtriar}{\@ifnextchar[{\basicwtriar}%
+{\hspace{\SOURCE\unitlength}\basicwtriar[\ARROWLENGTH]}}%
+
+% basic west triple of arrows with upper names
+\def\basicWtriar[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\WTRIAR}{#2}{#3}{#4}{}{\Z}}%
+
+% west triple of arrows with upper names
+\newcommand{\Wtriar}{\@ifnextchar[{\basicWtriar}%
+{\hspace{\SOURCE\unitlength}\basicWtriar[\ARROWLENGTH]}}%
+
+% basic west triple of arrows with lower names
+\def\basicwtriaR[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\WTRIAR}{}{#2}{#3}{#4}{\Z}}%
+
+% west triple of arrows with lower name
+\newcommand{\wtriaR}{\@ifnextchar[{\basicwtriaR}%
+{\hspace{\SOURCE\unitlength}\basicwtriaR[\ARROWLENGTH]}}%
+
+% basic west triple of adjoint arrows
+\def\basicwtriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\htricase{\WTRIADJAR}{\Z}}%
+
+% west triple of adjoint arrows
+\newcommand{\wtriadjar}{\@ifnextchar[{\basicwtriadjar}%
+{\hspace{\SOURCE\unitlength}\basicwtriadjar[\ARROWLENGTH]}}%
+
+% basic west triple of adjoint arrows with upper names
+\def\basicWtriadjar[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\WTRIADJAR}{#2}{#3}{#4}{}{\Z}}%
+
+% west triple of adjoint arrows with upper names
+\newcommand{\Wtriadjar}{\@ifnextchar[{\basicWtriadjar}%
+{\hspace{\SOURCE\unitlength}\basicWtriadjar[\ARROWLENGTH]}}%
+
+% basic west triple of adjoint arrows with lower names
+\def\basicwtriadjaR[#1]#2#3#4{%
+\Z=#1%
+\multiply \Z by 100%
+\Htricase{\WTRIADJAR}{}{#2}{#3}{#4}{\Z}}%
+
+% west triple of adjoint arrows with lower name
+\newcommand{\wtriadjaR}{\@ifnextchar[{\basicwtriadjaR}%
+{\hspace{\SOURCE\unitlength}\basicwtriadjaR[\ARROWLENGTH]}}%
+
+% basic west quadruple of arrows
+\def\basicwquadriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\WQUADRIAR}{\Z}}%
+
+% west quadruple of arrows
+\newcommand{\wquadriar}{\@ifnextchar[{\basicwquadriar}%
+{\hspace{\SOURCE\unitlength}\basicwquadriar[\ARROWLENGTH]}}%
+
+% basic west quadruple of adjoint arrows
+\def\basicwquadriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\WQUADRIADJAR}{\Z}}%
+
+% west quadruple of adjoint arrows
+\newcommand{\wquadriadjar}{\@ifnextchar[{\basicwquadriadjar}%
+{\hspace{\SOURCE\unitlength}\basicwquadriadjar[\ARROWLENGTH]}}%
+
+% basic west quintuple of arrows
+\def\basicwquintiar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\WQUINTIAR}{\Z}}%
+
+% west quintuple of arrows
+\newcommand{\wquintiar}{\@ifnextchar[{\basicwquintiar}%
+{\hspace{\SOURCE\unitlength}\basicwquintiar[\ARROWLENGTH]}}%
+
+% basic west quintuple of adjoint arrows
+\def\basicwquintiadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\hmulticase{\WQUINTIADJAR}{\Z}}%
+
+% west quintuple of adjoint arrows
+\newcommand{\wquintiadjar}{\@ifnextchar[{\basicwquintiadjar}%
+{\hspace{\SOURCE\unitlength}\basicwquintiadjar[\ARROWLENGTH]}}%
+
+
+
+% MACROS FOR VERTICAL DIAGRAM PICTURES
+
+% \vtricase{P}{n} draws the vertical tri-picture P
+% with length n units
+\newcommand{\vtricase}[2]%
+{\testdiagrammode\makebox[0pt]{#1{}{}{}{}{#2}}}%
+
+% \Vtricase{P}{f}{g}{h}{i}{n} draws the vertical tri-picture P
+% with length n units and names f, g, h, i.
+\newcommand{\Vtricase}[6]%
+{\testdiagrammode\makebox[0pt]{#1{#2}{#3}{#4}{#5}{#6}}}%
+
+% \vmulticase{P}{n} draws the vertical multi-picture P
+% with length n units.
+\newcommand{\vmulticase}[2]{\testdiagrammode\makebox[0pt]{#1{#2}}}%
+
+% SOUTH ARROWS
+
+% \STRIAR{f}{g}{h}{i}{n} draws a triple of south arrows
+% of length n units with names f, g, h, i
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\STRIAR}[5]%
+{\truex{1200}%
+\truey{1800}%
+\truez{600}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#5)%
+\X=#5\divide\X by 2%
+\put(-\value{x},#5){\line(0,-1){#5}}%
+\put(-\value{x},0){\shead}%
+\put(0,#5){\line(0,-1){#5}}%
+\put(0,0){\shead}%
+\put(\value{x},#5){\line(0,-1){#5}}%
+\put(\value{x},0){\shead}%
+\put(-\value{y},\X){\makebox(0,0){$#1$}}%
+\put(\value{y},\X){\makebox(0,0){$#4$}}%
+\put(-\value{z},\X){\makebox(0,0){$#2$}}%
+\put(\value{z},\X){\makebox(0,0){$#3$}}%
+\end{picture}}}\end{picture}}%
+
+% \STRIADJAR{f}{g}{h}{i}{n} draws a south triple of adjoint
+% arrows of length n units with names f, g, h, i
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\STRIADJAR}[5]%
+{\truex{1200}%
+\truey{1800}%
+\truez{600}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#5)%
+\X=#5\divide\X by 2%
+\put(-\value{x},0){\line(0,1){#5}}%
+\put(-\value{x},#5){\nhead}%
+\put(0,#5){\line(0,-1){#5}}%
+\put(0,0){\shead}%
+\put(\value{x},0){\line(0,1){#5}}%
+\put(\value{x},#5){\nhead}%
+\put(-\value{y},\X){\makebox(0,0){$#1$}}%
+\put(\value{y},\X){\makebox(0,0){$#4$}}%
+\put(-\value{z},\X){\makebox(0,0){$#2$}}%
+\put(\value{z},\X){\makebox(0,0){$#3$}}%
+\end{picture}}}\end{picture}}%
+
+% \SQUADRIAR{n} draws a quadruple of south arrows of length n units
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\SQUADRIAR}[1]%
+{\truex{400}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},#1){\line(0,-1){#1}}%
+\put(-\value{y},0){\shead}%
+\put(-\value{x},#1){\line(0,-1){#1}}%
+\put(-\value{x},0){\shead}%
+\put(\value{x},#1){\line(0,-1){#1}}%
+\put(\value{x},0){\shead}%
+\put(\value{y},#1){\line(0,-1){#1}}%
+\put(\value{y},0){\shead}%
+\end{picture}}}\end{picture}}%
+
+% \SQUADRIADJAR{n} draws a south quadruple of adjoint arrows
+% of length n units and centers it in a box of width 0pt and height 0pt
+\newcommand{\SQUADRIADJAR}[1]%
+{\truex{400}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},#1){\line(0,-1){#1}}%
+\put(-\value{y},0){\shead}%
+\put(-\value{x},0){\line(0,1){#1}}%
+\put(-\value{x},#1){\nhead}%
+\put(\value{x},#1){\line(0,-1){#1}}%
+\put(\value{x},0){\shead}%
+\put(\value{y},0){\line(0,1){#1}}%
+\put(\value{y},#1){\nhead}%
+\end{picture}}}\end{picture}}%
+
+% \SQUINTIAR{n} draws a quintuple of south arrows of length n units
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\SQUINTIAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},#1){\line(0,-1){#1}}%
+\put(-\value{y},0){\shead}%
+\put(-\value{x},#1){\line(0,-1){#1}}%
+\put(-\value{x},0){\shead}%
+\put(0,#1){\line(0,-1){#1}}%
+\put(0,0){\shead}%
+\put(\value{x},#1){\line(0,-1){#1}}%
+\put(\value{x},0){\shead}%
+\put(\value{y},#1){\line(0,-1){#1}}%
+\put(\value{y},0){\shead}%
+\end{picture}}}\end{picture}}%
+
+% \SQUINTIADJAR{n} draws a south quintuple of adjoint arrows
+% of length n units and centers it in a box of width 0pt and height 0pt
+\newcommand{\SQUINTIADJAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},#1){\line(0,-1){#1}}%
+\put(-\value{y},0){\shead}%
+\put(-\value{x},0){\line(0,1){#1}}%
+\put(-\value{x},#1){\nhead}%
+\put(0,#1){\line(0,-1){#1}}%
+\put(0,0){\shead}%
+\put(\value{x},0){\line(0,1){#1}}%
+\put(\value{x},#1){\nhead}%
+\put(\value{y},#1){\line(0,-1){#1}}%
+\put(\value{y},0){\shead}%
+\end{picture}}}\end{picture}}%
+
+% USER'S COMMANDS FOR SOUTH ARROWS
+
+% basic south triple of arrows
+\def\basicstriar[#1]{\vtricase{\STRIAR}{#100}}%
+
+% south triple of arrows
+\newcommand{\striar}{\@ifnextchar[{\basicstriar}{\basicstriar[50]}}%
+
+% basic south triple of arrows with left names
+\def\basicStriar[#1]#2#3#4{\Vtricase{\STRIAR}{#2}{#3}{#4}{}{#100}}%
+
+% south triple of arrows with left names
+\newcommand{\Striar}{\@ifnextchar[{\basicStriar}{\basicStriar[50]}}%
+
+% basic south triple of arrows with right names
+\def\basicstriaR[#1]#2#3#4{\Vtricase{\STRIAR}{}{#2}{#3}{#4}{#100}}%
+
+% south triple of arrows with right name
+\newcommand{\striaR}{\@ifnextchar[{\basicstriaR}{\basicstriaR[50]}}%
+
+% basic south triple of adjoint arrows
+\def\basicstriadjar[#1]{\vtricase{\STRIADJAR}{#100}}%
+
+% south triple of adjoint arrows
+\newcommand{\striadjar}{\@ifnextchar[{\basicstriadjar}{\basicstriadjar[50]}}%
+
+% basic south triple of adjoint arrows with left names
+\def\basicStriadjar[#1]#2#3#4{\Vtricase{\STRIADJAR}{#2}{#3}{#4}{}{#100}}%
+
+% south triple of adjoint arrows with left names
+\newcommand{\Striadjar}{\@ifnextchar[{\basicStriadjar}{\basicStriadjar[50]}}%
+
+% basic south triple of adjoint arrows with right names
+\def\basicstriadjaR[#1]#2#3#4{\Vtricase{\STRIADJAR}{}{#2}{#3}{#4}{#100}}%
+
+% south triple of adjoint arrows with right name
+\newcommand{\striadjaR}{\@ifnextchar[{\basicstriadjaR}{\basicstriadjaR[50]}}%
+
+% basic south quadruple of arrows
+\def\basicsquadriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\SQUADRIAR}{\Z}}%
+
+% south quadruple of arrows
+\newcommand{\squadriar}{\@ifnextchar[{\basicsquadriar}%
+{\hspace{\SOURCE\unitlength}\basicsquadriar[\ARROWLENGTH]}}%
+
+% basic south quadruple of adjoint arrows
+\def\basicsquadriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\SQUADRIADJAR}{\Z}}%
+
+% south quadruple of adjoint arrows
+\newcommand{\squadriadjar}{\@ifnextchar[{\basicsquadriadjar}%
+{\hspace{\SOURCE\unitlength}\basicsquadriadjar[\ARROWLENGTH]}}%
+
+% basic south quintuple of arrows
+\def\basicsquintiar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\SQUINTIAR}{\Z}}%
+
+% south quintuple of arrows
+\newcommand{\squintiar}{\@ifnextchar[{\basicsquintiar}%
+{\hspace{\SOURCE\unitlength}\basicsquintiar[\ARROWLENGTH]}}%
+
+% basic south quintuple of adjoint arrows
+\def\basicsquintiadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\SQUINTIADJAR}{\Z}}%
+
+% south quintuple of adjoint arrows
+\newcommand{\squintiadjar}{\@ifnextchar[{\basicsquintiadjar}%
+{\hspace{\SOURCE\unitlength}\basicsquintiadjar[\ARROWLENGTH]}}%
+
+
+
+% NORTH ARROWS
+
+% \NTRIAR{f}{g}{h}{i}{n} draws a triple of north arrows
+% of length n units with names f, g, h, i
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\NTRIAR}[5]%
+{\truex{1200}%
+\truey{1800}%
+\truez{600}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#5)%
+\X=#5\divide\X by 2%
+\put(-\value{x},0){\line(0,1){#5}}%
+\put(-\value{x},#5){\nhead}%
+\put(0,0){\line(0,1){#5}}%
+\put(0,#5){\nhead}%
+\put(\value{x},0){\line(0,1){#5}}%
+\put(\value{x},#5){\nhead}%
+\put(-\value{y},\X){\makebox(0,0){$#1$}}%
+\put(\value{y},\X){\makebox(0,0){$#4$}}%
+\put(-\value{z},\X){\makebox(0,0){$#2$}}%
+\put(\value{z},\X){\makebox(0,0){$#3$}}%
+\end{picture}}}\end{picture}}%
+
+% \NTRIADJAR{f}{g}{h}{i}{n} draws a north triple of adjoint
+% arrows of length n units with names f, g, h, i
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\NTRIADJAR}[5]%
+{\truex{1200}%
+\truey{1800}%
+\truez{600}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#5)%
+\X=#5\divide\X by 2%
+\put(-\value{x},#5){\line(0,-1){#5}}%
+\put(-\value{x},0){\shead}%
+\put(0,0){\line(0,1){#5}}%
+\put(0,#5){\nhead}%
+\put(\value{x},#5){\line(0,-1){#5}}%
+\put(\value{x},0){\shead}%
+\put(-\value{y},\X){\makebox(0,0){$#1$}}%
+\put(\value{y},\X){\makebox(0,0){$#4$}}%
+\put(-\value{z},\X){\makebox(0,0){$#2$}}%
+\put(\value{z},\X){\makebox(0,0){$#3$}}%
+\end{picture}}}\end{picture}}%
+
+% \NQUADRIAR{n} draws a quadruple of north arrows of length n units
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\NQUADRIAR}[1]%
+{\truex{400}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},0){\line(0,1){#1}}%
+\put(-\value{y},#1){\nhead}%
+\put(-\value{x},0){\line(0,1){#1}}%
+\put(-\value{x},#1){\nhead}%
+\put(\value{x},0){\line(0,1){#1}}%
+\put(\value{x},#1){\nhead}%
+\put(\value{y},0){\line(0,1){#1}}%
+\put(\value{y},#1){\nhead}%
+\end{picture}}}\end{picture}}%
+
+% \NQUADRIADJAR{n} draws a north quadruple of adjoint arrows
+% of length n units and centers it in a box of width 0pt and height 0pt
+\newcommand{\NQUADRIADJAR}[1]%
+{\truex{400}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},0){\line(0,1){#1}}%
+\put(-\value{y},#1){\nhead}%
+\put(-\value{x},#1){\line(0,-1){#1}}%
+\put(-\value{x},0){\shead}%
+\put(\value{x},0){\line(0,1){#1}}%
+\put(\value{x},#1){\nhead}%
+\put(\value{y},#1){\line(0,-1){#1}}%
+\put(\value{y},0){\shead}%
+\end{picture}}}\end{picture}}%
+
+% \NQUINTIAR{n} draws a quintuple of north arrows of length n units
+% and centers it in a box of width 0pt and height 0pt
+\newcommand{\NQUINTIAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},0){\line(0,1){#1}}%
+\put(-\value{y},#1){\nhead}%
+\put(-\value{x},0){\line(0,1){#1}}%
+\put(-\value{x},#1){\nhead}%
+\put(0,0){\line(0,1){#1}}%
+\put(0,#1){\nhead}%
+\put(\value{x},0){\line(0,1){#1}}%
+\put(\value{x},#1){\nhead}%
+\put(\value{y},0){\line(0,1){#1}}%
+\put(\value{y},#1){\nhead}%
+\end{picture}}}\end{picture}}%
+
+% \NQUINTIADJAR{n} draws a north quintuple of adjoint arrows
+% of length n units and centers it in a box of width 0pt and height 0pt
+\newcommand{\NQUINTIADJAR}[1]%
+{\truex{600}%
+\truey{1200}%
+\begin{picture}(0,0)%
+\put(0,0){\makebox(0,0)%
+{\begin{picture}(0,#1)%
+\put(-\value{y},0){\line(0,1){#1}}%
+\put(-\value{y},#1){\nhead}%
+\put(-\value{x},#1){\line(0,-1){#1}}%
+\put(-\value{x},0){\shead}%
+\put(0,0){\line(0,1){#1}}%
+\put(0,#1){\nhead}%
+\put(\value{x},#1){\line(0,-1){#1}}%
+\put(\value{x},0){\shead}%
+\put(\value{y},0){\line(0,1){#1}}%
+\put(\value{y},#1){\nhead}%
+\end{picture}}}\end{picture}}%
+
+% USER'S COMMANDS FOR NORTH ARROWS
+
+% basic north triple of arrows
+\def\basicntriar[#1]{\vtricase{\NTRIAR}{#100}}%
+
+% north triple of arrows
+\newcommand{\ntriar}{\@ifnextchar[{\basicntriar}{\basicntriar[50]}}%
+
+% basic north triple of arrows with left names
+\def\basicNtriar[#1]#2#3#4{\Vtricase{\NTRIAR}{#2}{#3}{#4}{}{#100}}%
+
+% north triple of arrows with left names
+\newcommand{\Ntriar}{\@ifnextchar[{\basicNtriar}{\basicNtriar[50]}}%
+
+% basic north triple of arrows with right names
+\def\basicntriaR[#1]#2#3#4{\Vtricase{\NTRIAR}{}{#2}{#3}{#4}{#100}}%
+
+% north triple of arrows with right name
+\newcommand{\ntriaR}{\@ifnextchar[{\basicntriaR}{\basicntriaR[50]}}%
+
+% basic north triple of adjoint arrows
+\def\basicntriadjar[#1]{\vtricase{\NTRIADJAR}{#100}}%
+
+% north triple of adjoint arrows
+\newcommand{\ntriadjar}{\@ifnextchar[{\basicntriadjar}{\basicntriadjar[50]}}%
+
+% basic north triple of adjoint arrows with left names
+\def\basicNtriadjar[#1]#2#3#4{\Vtricase{\NTRIADJAR}{#2}{#3}{#4}{}{#100}}%
+
+% north triple of adjoint arrows with left names
+\newcommand{\Ntriadjar}{\@ifnextchar[{\basicNtriadjar}{\basicNtriadjar[50]}}%
+
+% basic north triple of adjoint arrows with right names
+\def\basicntriadjaR[#1]#2#3#4{\Vtricase{\NTRIADJAR}{}{#2}{#3}{#4}{#100}}%
+
+% north triple of adjoint arrows with right name
+\newcommand{\ntriadjaR}{\@ifnextchar[{\basicntriadjaR}{\basicntriadjaR[50]}}%
+
+% basic north quadruple of arrows
+\def\basicnquadriar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\NQUADRIAR}{\Z}}%
+
+% north quadruple of arrows
+\newcommand{\nquadriar}{\@ifnextchar[{\basicnquadriar}%
+{\hspace{\SOURCE\unitlength}\basicnquadriar[\ARROWLENGTH]}}%
+
+% basic north quadruple of adjoint arrows
+\def\basicnquadriadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\NQUADRIADJAR}{\Z}}%
+
+% north quadruple of adjoint arrows
+\newcommand{\nquadriadjar}{\@ifnextchar[{\basicnquadriadjar}%
+{\hspace{\SOURCE\unitlength}\basicnquadriadjar[\ARROWLENGTH]}}%
+
+% basic north quintuple of arrows
+\def\basicnquintiar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\NQUINTIAR}{\Z}}%
+
+% north quintuple of arrows
+\newcommand{\nquintiar}{\@ifnextchar[{\basicnquintiar}%
+{\hspace{\SOURCE\unitlength}\basicnquintiar[\ARROWLENGTH]}}%
+
+% basic north quintuple of adjoint arrows
+\def\basicnquintiadjar[#1]{%
+\Z=#1%
+\multiply \Z by 100%
+\vmulticase{\NQUINTIADJAR}{\Z}}%
+
+% north quintuple of adjoint arrows
+\newcommand{\nquintiadjar}{\@ifnextchar[{\basicnquintiadjar}%
+{\hspace{\SOURCE\unitlength}\basicnquintiadjar[\ARROWLENGTH]}}%
+
+\catcode`\@=12 \ No newline at end of file