diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/generic/diagrams/borceux |
Initial commit
Diffstat (limited to 'macros/generic/diagrams/borceux')
-rw-r--r-- | macros/generic/diagrams/borceux/README | 23 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/compatibility/OldDiagram | 291 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/compatibility/OldMaxiDiagram | 209 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/compatibility/OldMicroDiagram | 90 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/compatibility/OldMiniDiagram | 107 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/compatibility/OldMultipleArrows | 49 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/diagram/Diagram | 8973 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/diagram/MaxiDiagram | 10213 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/diagram/MicroDiagram | 1917 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/diagram/MiniDiagram | 3164 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/diagram/MultipleArrows | 1313 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/user-guides/Diagram_Mode_d_Emploi | 588 | ||||
-rw-r--r-- | macros/generic/diagrams/borceux/user-guides/Diagram_Read_Me | 579 |
13 files changed, 27516 insertions, 0 deletions
diff --git a/macros/generic/diagrams/borceux/README b/macros/generic/diagrams/borceux/README new file mode 100644 index 0000000000..8a606dfd9e --- /dev/null +++ b/macros/generic/diagrams/borceux/README @@ -0,0 +1,23 @@ +This is the borceux package of diagram macros. + +Copyright 1993 Francis Borceux +You may freely use, modify, and/or distribute each of the files in this +package without limitation. The package consists of the following files: + + README + compatibility/OldDiagram + compatibility/OldMaxiDiagram + compatibility/OldMicroDiagram + compatibility/OldMiniDiagram + compatibility/OldMultipleArrows + diagram/Diagram + diagram/MaxiDiagram + diagram/MicroDiagram + diagram/MiniDiagram + diagram/MultipleArrows + user-guides/Diagram_Mode_d_Emploi + user-guides/Diagram_Read_Me + +Of course no support is guaranteed, but the author will attempt to +assist with problems. Current email address: +francis dot borceux at uclouvain dot be. diff --git a/macros/generic/diagrams/borceux/compatibility/OldDiagram b/macros/generic/diagrams/borceux/compatibility/OldDiagram new file mode 100644 index 0000000000..5b10a593c3 --- /dev/null +++ b/macros/generic/diagrams/borceux/compatibility/OldDiagram @@ -0,0 +1,291 @@ +\catcode`\@=11 + +\newcommand{\earv}[1]{\ear[#1]} +\newcommand{\Earv}[2]{\Ear[#2]{#1}} +\newcommand{\eaRv}[2]{\eaR[#2]{#1}} +\newcommand{\edotarv}[1]{\edotar[#1]} +\newcommand{\Edotarv}[2]{\Edotar[#2]{#1}} +\newcommand{\edotaRv}[2]{\edotaR[#2]{#1}} +\newcommand{\emonov}[1]{\emono[#1]} +\newcommand{\Emonov}[2]{\Emono[#2]{#1}} +\newcommand{\emonOv}[2]{\emonO[#2]{#1}} +\newcommand{\eepiv}[1]{\eepi[#1]} +\newcommand{\Eepiv}[2]{\Eepi[#2]{#1}} +\newcommand{\eepIv}[2]{\eepI[#2]{#1}} +\newcommand{\ebimov}[1]{\ebimo[#1]} +\newcommand{\Ebimov}[2]{\Ebimo[#2]{#1}} +\newcommand{\ebimOv}[2]{\ebimO[#2]{#1}} +\newcommand{\eisov}[1]{\eiso[#1]} +\newcommand{\Eisov}[2]{\Eiso[#2]{#1}} +\newcommand{\eisOv}[2]{\eisO[#2]{#1}} +\newcommand{\eeqlrv}[1]{\eeql[#1]} +\newcommand{\ebiarv}[1]{\ebiar[#1]} +\newcommand{\Ebiarv}[3]{\Ear[#3]{#1}{#2}} +\newcommand{\eadjarv}[1]{\eadjar[#1]} +\newcommand{\Eadjarv}[3]{\Ear[#3]{#1}{#2}} + +\newcommand{\warv}[1]{\war[#1]} +\newcommand{\Warv}[2]{\War[#2]{#1}} +\newcommand{\waRv}[2]{\waR[#2]{#1}} +\newcommand{\wdotarv}[1]{\wdotar[#1]} +\newcommand{\Wdotarv}[2]{\Wdotar[#2]{#1}} +\newcommand{\wdotaRv}[2]{\wdotaR[#2]{#1}} +\newcommand{\wmonov}[1]{\wmono[#1]} +\newcommand{\Wmonov}[2]{\Wmono[#2]{#1}} +\newcommand{\wmonOv}[2]{\wmonO[#2]{#1}} +\newcommand{\wepiv}[1]{\wepi[#1]} +\newcommand{\Wepiv}[2]{\Wepi[#2]{#1}} +\newcommand{\wepIv}[2]{\wepI[#2]{#1}} +\newcommand{\wbimov}[1]{\wbimo[#1]} +\newcommand{\Wbimov}[2]{\Wbimo[#2]{#1}} +\newcommand{\wbimOv}[2]{\wbimO[#2]{#1}} +\newcommand{\wisov}[1]{\wiso[#1]} +\newcommand{\Wisov}[2]{\Wiso[#2]{#1}} +\newcommand{\wisOv}[2]{\wisO[#2]{#1}} +\newcommand{\weqlrv}[1]{\weql[#1]} +\newcommand{\wbiarv}[1]{\wbiar[#1]} +\newcommand{\Wbiarv}[3]{\War[#3]{#1}{#2}} +\newcommand{\wadjarv}[1]{\wadjar[#1]} +\newcommand{\Wadjarv}[3]{\War[#3]{#1}{#2}} + +\newcommand{\narv}[1]{\nar[#1]} +\newcommand{\Narv}[2]{\Nar[#2]{#1}} +\newcommand{\naRv}[2]{\naR[#2]{#1}} +\newcommand{\ndotarv}[1]{\ndotar[#1]} +\newcommand{\Ndotarv}[2]{\Ndotar[#2]{#1}} +\newcommand{\ndotaRv}[2]{\ndotaR[#2]{#1}} +\newcommand{\nmonov}[1]{\nmono[#1]} +\newcommand{\Nmonov}[2]{\Nmono[#2]{#1}} +\newcommand{\nmonOv}[2]{\nmonO[#2]{#1}} +\newcommand{\nepiv}[1]{\nepi[#1]} +\newcommand{\Nepiv}[2]{\Nepi[#2]{#1}} +\newcommand{\nepIv}[2]{\nepI[#2]{#1}} +\newcommand{\nbimov}[1]{\nbimo[#1]} +\newcommand{\Nbimov}[2]{\Nbimo[#2]{#1}} +\newcommand{\nbimOv}[2]{\nbimO[#2]{#1}} +\newcommand{\nisov}[1]{\niso[#1]} +\newcommand{\Nisov}[2]{\Niso[#2]{#1}} +\newcommand{\nisOv}[2]{\nisO[#2]{#1}} +\newcommand{\neqlrv}[1]{\neql[#1]} +\newcommand{\nbiarv}[1]{\nbiar[#1]} +\newcommand{\Nbiarv}[3]{\Nar[#3]{#1}{#2}} +\newcommand{\nadjarv}[1]{\nadjar[#1]} +\newcommand{\Nadjarv}[3]{\Nar[#3]{#1}{#2}} + +\newcommand{\sarv}[1]{\sar[#1]} +\newcommand{\Sarv}[2]{\Sar[#2]{#1}} +\newcommand{\saRv}[2]{\saR[#2]{#1}} +\newcommand{\sdotarv}[1]{\sdotar[#1]} +\newcommand{\Sdotarv}[2]{\Sdotar[#2]{#1}} +\newcommand{\sdotaRv}[2]{\sdotaR[#2]{#1}} +\newcommand{\smonov}[1]{\smono[#1]} +\newcommand{\Smonov}[2]{\Smono[#2]{#1}} +\newcommand{\smonOv}[2]{\smonO[#2]{#1}} +\newcommand{\sepiv}[1]{\sepi[#1]} +\newcommand{\Sepiv}[2]{\Sepi[#2]{#1}} +\newcommand{\sepIv}[2]{\sepI[#2]{#1}} +\newcommand{\sbimov}[1]{\sbimo[#1]} +\newcommand{\Sbimov}[2]{\Sbimo[#2]{#1}} +\newcommand{\sbimOv}[2]{\sbimO[#2]{#1}} +\newcommand{\sisov}[1]{\siso[#1]} +\newcommand{\Sisov}[2]{\Siso[#2]{#1}} +\newcommand{\sisOv}[2]{\sisO[#2]{#1}} +\newcommand{\seqlrv}[1]{\seql[#1]} +\newcommand{\sbiarv}[1]{\sbiar[#1]} +\newcommand{\Sbiarv}[3]{\Sar[#3]{#1}{#2}} +\newcommand{\sadjarv}[1]{\sadjar[#1]} +\newcommand{\Sadjarv}[3]{\Sar[#3]{#1}{#2}} + +\newcommand{\searv}[1]{\sear[#1]} +\newcommand{\Searv}[2]{\Sear[#2]{#1}} +\newcommand{\seaRv}[2]{\seaR[#2]{#1}} + +\newcommand{\nearv}[1]{\near[#1]} +\newcommand{\Nearv}[2]{\Near[#2]{#1}} +\newcommand{\neaRv}[2]{\neaR[#2]{#1}} + +\newcommand{\swarv}[1]{\swar[#1]} +\newcommand{\Swarv}[2]{\Swar[#2]{#1}} +\newcommand{\swaRv}[2]{\swaR[#2]{#1}} + +\newcommand{\nwarv}[1]{\nwar[#1]} +\newcommand{\Nwarv}[2]{\Nwar[#2]{#1}} +\newcommand{\nwaRv}[2]{\nwaR[#2]{#1}} + +\newcommand{\necurve}[1]{\necurvar[#1]} +\newcommand{\nwcurve}[1]{\nwcurvar[#1]} +\newcommand{\securve}[1]{\securvar[#1]} +\newcommand{\swcurve}[1]{\swcurvar[#1]} +\newcommand{\encurve}[1]{\encurvar[#1]} +\newcommand{\escurve}[1]{\escurvar[#1]} +\newcommand{\wncurve}[1]{\wncurvar[#1]} +\newcommand{\wscurve}[1]{\wscurvar[#1]} + +\newcommand{\Freear}[8]{\begin{picture}(0,0)% +\put(#400,#500){\vector(#6,#7){#800}}% +\truex{#200}\truey{#300}% +\put(\value{x},\value{y}){$#1$}\end{picture}}% +\newcommand{\freear}[5]{\Freear{}{0}{0}{#1}{#2}{#3}{#4}{#5}}% + +\newcommand{\DIAG}[1]{% +\diagramtrue% +\SCALE=\defaultscale% +\setlength{\unitlength}{655sp}% +\initialize{\mbox{$#1$}}}% + +\newcommand{\N}[1]% +{\raisebox{0pt}[7pt][0pt]{$#1$}}% + +\let\B=\bold + +\def\newmovename(#1,#2)#3{\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% +\def\newmovearrow(#1,#2)#3{\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% +\def\newmovevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% +\newcommand{\oldmovename}[3]{\newmovename(#2,#3){#1}} +\newcommand{\oldmovearrow}[3]{\newmovearrow(#2,#3){#1}} +\newcommand{\oldmovevertex}[3]{\newmovevertex(#2,#3){#1}} +\renewcommand{\movename}{\@ifnextchar({\newmovename}{\oldmovename}} +\renewcommand{\movearrow}{\@ifnextchar({\newmovearrow}{\oldmovearrow}} +\renewcommand{\movevertex}{\@ifnextchar({\newmovevertex}{\oldmovevertex}} + +\newcount\A\newcount\B +\newcommand{\Diag}[2]{\A=0\B=0\DIAG{#2}} +\newcommand{\Diagv}[4]{\A=#2\B=#3\DIAG{#4}} +\newcommand{\diaGv}[2]{\advance\B by -#1\diagv{\A}{\B}{#2}} +\newcommand{\diaG}{\diagv{\A}{\B}{0}} +\newcommand{\move}[3]{\movename(#2,#3){#1}} + +% 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}}}% + +\setdisplayarrowlength{20} + +\typeout{\string\displayarrowlength has been put to value 20 +by the file OldDiagram} + + +\catcode`\@=12
\ No newline at end of file diff --git a/macros/generic/diagrams/borceux/compatibility/OldMaxiDiagram b/macros/generic/diagrams/borceux/compatibility/OldMaxiDiagram new file mode 100644 index 0000000000..a1fc33b66a --- /dev/null +++ b/macros/generic/diagrams/borceux/compatibility/OldMaxiDiagram @@ -0,0 +1,209 @@ +\catcode`\@=11 + +\newcommand{\earv}[1]{\ear[#1]} +\newcommand{\Earv}[2]{\Ear[#2]{#1}} +\newcommand{\eaRv}[2]{\eaR[#2]{#1}} +\newcommand{\edotarv}[1]{\edotar[#1]} +\newcommand{\Edotarv}[2]{\Edotar[#2]{#1}} +\newcommand{\edotaRv}[2]{\edotaR[#2]{#1}} +\newcommand{\emonov}[1]{\emono[#1]} +\newcommand{\Emonov}[2]{\Emono[#2]{#1}} +\newcommand{\emonOv}[2]{\emonO[#2]{#1}} +\newcommand{\eepiv}[1]{\eepi[#1]} +\newcommand{\Eepiv}[2]{\Eepi[#2]{#1}} +\newcommand{\eepIv}[2]{\eepI[#2]{#1}} +\newcommand{\ebimov}[1]{\ebimo[#1]} +\newcommand{\Ebimov}[2]{\Ebimo[#2]{#1}} +\newcommand{\ebimOv}[2]{\ebimO[#2]{#1}} +\newcommand{\eisov}[1]{\eiso[#1]} +\newcommand{\Eisov}[2]{\Eiso[#2]{#1}} +\newcommand{\eisOv}[2]{\eisO[#2]{#1}} +\newcommand{\eeqlrv}[1]{\eeql[#1]} +\newcommand{\ebiarv}[1]{\ebiar[#1]} +\newcommand{\Ebiarv}[3]{\Ear[#3]{#1}{#2}} +\newcommand{\eadjarv}[1]{\eadjar[#1]} +\newcommand{\Eadjarv}[3]{\Ear[#3]{#1}{#2}} +\newcommand{\etriarv}[1]{\etriar[#1]} +\newcommand{\Etriarv}[4]{\Etriar[#4]{#1}{#2}{#3}} +\newcommand{\etriaRv}[4]{\etriaR[#4]{#1}{#2}{#3}} +\newcommand{\etriadjarv}[1]{\etriadjar[#1]} +\newcommand{\Etriadjarv}[4]{\Etriadjar[#4]{#1}{#2}{#3}} +\newcommand{\etriadjaRv}[4]{\etriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\equadriarv}[1]{\equadriar[#1]} +\newcommand{\equadriadjarv}[1]{\equadriadjar[#1]} +\newcommand{\equintiarv}[1]{\equintiar[#1]} +\newcommand{\equintiadjarv}[1]{\equintiadjar[#1]} + +\newcommand{\warv}[1]{\war[#1]} +\newcommand{\Warv}[2]{\War[#2]{#1}} +\newcommand{\waRv}[2]{\waR[#2]{#1}} +\newcommand{\wdotarv}[1]{\wdotar[#1]} +\newcommand{\Wdotarv}[2]{\Wdotar[#2]{#1}} +\newcommand{\wdotaRv}[2]{\wdotaR[#2]{#1}} +\newcommand{\wmonov}[1]{\wmono[#1]} +\newcommand{\Wmonov}[2]{\Wmono[#2]{#1}} +\newcommand{\wmonOv}[2]{\wmonO[#2]{#1}} +\newcommand{\wepiv}[1]{\wepi[#1]} +\newcommand{\Wepiv}[2]{\Wepi[#2]{#1}} +\newcommand{\wepIv}[2]{\wepI[#2]{#1}} +\newcommand{\wbimov}[1]{\wbimo[#1]} +\newcommand{\Wbimov}[2]{\Wbimo[#2]{#1}} +\newcommand{\wbimOv}[2]{\wbimO[#2]{#1}} +\newcommand{\wisov}[1]{\wiso[#1]} +\newcommand{\Wisov}[2]{\Wiso[#2]{#1}} +\newcommand{\wisOv}[2]{\wisO[#2]{#1}} +\newcommand{\weqlrv}[1]{\weql[#1]} +\newcommand{\wbiarv}[1]{\wbiar[#1]} +\newcommand{\Wbiarv}[3]{\War[#3]{#1}{#2}} +\newcommand{\wadjarv}[1]{\wadjar[#1]} +\newcommand{\Wadjarv}[3]{\War[#3]{#1}{#2}} +\newcommand{\wtriarv}[1]{\wtriar[#1]} +\newcommand{\Wtriarv}[4]{\Wtriar[#4]{#1}{#2}{#3}} +\newcommand{\wtriaRv}[4]{\wtriaR[#4]{#1}{#2}{#3}} +\newcommand{\wtriadjarv}[1]{\wtriadjar[#1]} +\newcommand{\Wtriadjarv}[4]{\Wtriadjar[#4]{#1}{#2}{#3}} +\newcommand{\wtriadjaRv}[4]{\wtriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\wquadriarv}[1]{\wquadriar[#1]} +\newcommand{\wquadriadjarv}[1]{\wquadriadjar[#1]} +\newcommand{\wquintiarv}[1]{\wquintiar[#1]} +\newcommand{\wquintiadjarv}[1]{\wquintiadjar[#1]} + +\newcommand{\narv}[1]{\nar[#1]} +\newcommand{\Narv}[2]{\Nar[#2]{#1}} +\newcommand{\naRv}[2]{\naR[#2]{#1}} +\newcommand{\ndotarv}[1]{\ndotar[#1]} +\newcommand{\Ndotarv}[2]{\Ndotar[#2]{#1}} +\newcommand{\ndotaRv}[2]{\ndotaR[#2]{#1}} +\newcommand{\nmonov}[1]{\nmono[#1]} +\newcommand{\Nmonov}[2]{\Nmono[#2]{#1}} +\newcommand{\nmonOv}[2]{\nmonO[#2]{#1}} +\newcommand{\nepiv}[1]{\nepi[#1]} +\newcommand{\Nepiv}[2]{\Nepi[#2]{#1}} +\newcommand{\nepIv}[2]{\nepI[#2]{#1}} +\newcommand{\nbimov}[1]{\nbimo[#1]} +\newcommand{\Nbimov}[2]{\Nbimo[#2]{#1}} +\newcommand{\nbimOv}[2]{\nbimO[#2]{#1}} +\newcommand{\nisov}[1]{\niso[#1]} +\newcommand{\Nisov}[2]{\Niso[#2]{#1}} +\newcommand{\nisOv}[2]{\nisO[#2]{#1}} +\newcommand{\neqlrv}[1]{\neql[#1]} +\newcommand{\nbiarv}[1]{\nbiar[#1]} +\newcommand{\Nbiarv}[3]{\Nar[#3]{#1}{#2}} +\newcommand{\nadjarv}[1]{\nadjar[#1]} +\newcommand{\Nadjarv}[3]{\Nar[#3]{#1}{#2}} +\newcommand{\ntriarv}[1]{\ntriar[#1]} +\newcommand{\Ntriarv}[4]{\Ntriar[#4]{#1}{#2}{#3}} +\newcommand{\ntriaRv}[4]{\ntriaR[#4]{#1}{#2}{#3}} +\newcommand{\ntriadjarv}[1]{\ntriadjar[#1]} +\newcommand{\Ntriadjarv}[4]{\Ntriadjar[#4]{#1}{#2}{#3}} +\newcommand{\ntriadjaRv}[4]{\ntriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\nquadriarv}[1]{\nquadriar[#1]} +\newcommand{\nquadriadjarv}[1]{\nquadriadjar[#1]} +\newcommand{\nquintiarv}[1]{\nquintiar[#1]} +\newcommand{\nquintiadjarv}[1]{\nquintiadjar[#1]} + +\newcommand{\sarv}[1]{\sar[#1]} +\newcommand{\Sarv}[2]{\Sar[#2]{#1}} +\newcommand{\saRv}[2]{\saR[#2]{#1}} +\newcommand{\sdotarv}[1]{\sdotar[#1]} +\newcommand{\Sdotarv}[2]{\Sdotar[#2]{#1}} +\newcommand{\sdotaRv}[2]{\sdotaR[#2]{#1}} +\newcommand{\smonov}[1]{\smono[#1]} +\newcommand{\Smonov}[2]{\Smono[#2]{#1}} +\newcommand{\smonOv}[2]{\smonO[#2]{#1}} +\newcommand{\sepiv}[1]{\sepi[#1]} +\newcommand{\Sepiv}[2]{\Sepi[#2]{#1}} +\newcommand{\sepIv}[2]{\sepI[#2]{#1}} +\newcommand{\sbimov}[1]{\sbimo[#1]} +\newcommand{\Sbimov}[2]{\Sbimo[#2]{#1}} +\newcommand{\sbimOv}[2]{\sbimO[#2]{#1}} +\newcommand{\sisov}[1]{\siso[#1]} +\newcommand{\Sisov}[2]{\Siso[#2]{#1}} +\newcommand{\sisOv}[2]{\sisO[#2]{#1}} +\newcommand{\seqlrv}[1]{\seql[#1]} +\newcommand{\sbiarv}[1]{\sbiar[#1]} +\newcommand{\Sbiarv}[3]{\Sar[#3]{#1}{#2}} +\newcommand{\sadjarv}[1]{\sadjar[#1]} +\newcommand{\Sadjarv}[3]{\Sar[#3]{#1}{#2}} +\newcommand{\Striarv}[4]{\Striar[#4]{#1}{#2}{#3}} +\newcommand{\striaRv}[4]{\striaR[#4]{#1}{#2}{#3}} +\newcommand{\striadjarv}[1]{\striadjar[#1]} +\newcommand{\Striadjarv}[4]{\Striadjar[#4]{#1}{#2}{#3}} +\newcommand{\striadjaRv}[4]{\striadjaR[#4]{#1}{#2}{#3}} +\newcommand{\squadriarv}[1]{\squadriar[#1]} +\newcommand{\squadriadjarv}[1]{\squadriadjar[#1]} +\newcommand{\squintiarv}[1]{\squintiar[#1]} +\newcommand{\squintiadjarv}[1]{\nquintiadjar[#1]} + +\newcommand{\searv}[1]{\sear[#1]} +\newcommand{\Searv}[2]{\Sear[#2]{#1}} +\newcommand{\seaRv}[2]{\seaR[#2]{#1}} + +\newcommand{\nearv}[1]{\near[#1]} +\newcommand{\Nearv}[2]{\Near[#2]{#1}} +\newcommand{\neaRv}[2]{\neaR[#2]{#1}} + +\newcommand{\swarv}[1]{\swar[#1]} +\newcommand{\Swarv}[2]{\Swar[#2]{#1}} +\newcommand{\swaRv}[2]{\swaR[#2]{#1}} + +\newcommand{\nwarv}[1]{\nwar[#1]} +\newcommand{\Nwarv}[2]{\Nwar[#2]{#1}} +\newcommand{\nwaRv}[2]{\nwaR[#2]{#1}} + +\newcommand{\necurve}[1]{\necurvar[#1]} +\newcommand{\nwcurve}[1]{\nwcurvar[#1]} +\newcommand{\securve}[1]{\securvar[#1]} +\newcommand{\swcurve}[1]{\swcurvar[#1]} +\newcommand{\encurve}[1]{\encurvar[#1]} +\newcommand{\escurve}[1]{\escurvar[#1]} +\newcommand{\wncurve}[1]{\wncurvar[#1]} +\newcommand{\wscurve}[1]{\wscurvar[#1]} + +\newcommand{\Freear}[8]{\begin{picture}(0,0)% +\put(#400,#500){\vector(#6,#7){#800}}% +\truex{#200}\truey{#300}% +\put(\value{x},\value{y}){$#1$}\end{picture}}% +\newcommand{\freear}[5]{\Freear{}{0}{0}{#1}{#2}{#3}{#4}{#5}}% + +\newcommand{\DIAG}[1]{% +\diagramtrue% +\SCALE=\defaultscale% +\setlength{\unitlength}{655sp}% +\initialize{\mbox{$#1$}}}% + +\newcommand{\N}[1]% +{\raisebox{0pt}[7pt][0pt]{$#1$}}% + +\let\B=\bold + +\def\newmovename(#1,#2)#3{\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% +\def\newmovearrow(#1,#2)#3{\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% +\def\newmovevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% +\newcommand{\oldmovename}[3]{\newmovename(#2,#3){#1}} +\newcommand{\oldmovearrow}[3]{\newmovearrow(#2,#3){#1}} +\newcommand{\oldmovevertex}[3]{\newmovevertex(#2,#3){#1}} +\renewcommand{\movename}{\@ifnextchar({\newmovename}{\oldmovename}} +\renewcommand{\movearrow}{\@ifnextchar({\newmovearrow}{\oldmovearrow}} +\renewcommand{\movevertex}{\@ifnextchar({\newmovevertex}{\oldmovevertex}} + +\newcount\A\newcount\B +\newcommand{\Diag}[2]{\A=0\B=0\DIAG{#2}} +\newcommand{\Diagv}[4]{\A=#2\B=#3\DIAG{#4}} +\newcommand{\diaGv}[2]{\advance\B by -#1\diagv{\A}{\B}{#2}} +\newcommand{\diaG}{\diagv{\A}{\B}{0}} +\newcommand{\move}[3]{\movename(#2,#3){#1}} + +\setdisplayarrowlength{20} + +\typeout{\string\displayarrowlength has been put to value 20 +by the file OldMaxiDiagram} + +\catcode`\@=12
\ No newline at end of file diff --git a/macros/generic/diagrams/borceux/compatibility/OldMicroDiagram b/macros/generic/diagrams/borceux/compatibility/OldMicroDiagram new file mode 100644 index 0000000000..26bd21b692 --- /dev/null +++ b/macros/generic/diagrams/borceux/compatibility/OldMicroDiagram @@ -0,0 +1,90 @@ +\catcode`\@=11 + +\newcommand{\earv}[1]{\ear[#1]} +\newcommand{\Earv}[2]{\Ear[#2]{#1}} +\newcommand{\eaRv}[2]{\eaR[#2]{#1}} + +\newcommand{\warv}[1]{\war[#1]} +\newcommand{\Warv}[2]{\War[#2]{#1}} +\newcommand{\waRv}[2]{\waR[#2]{#1}} + +\newcommand{\narv}[1]{\nar[#1]} +\newcommand{\Narv}[2]{\Nar[#2]{#1}} +\newcommand{\naRv}[2]{\naR[#2]{#1}} + +\newcommand{\sarv}[1]{\sar[#1]} +\newcommand{\Sarv}[2]{\Sar[#2]{#1}} +\newcommand{\saRv}[2]{\saR[#2]{#1}} + +\newcommand{\searv}[1]{\sear[#1]} +\newcommand{\Searv}[2]{\Sear[#2]{#1}} +\newcommand{\seaRv}[2]{\seaR[#2]{#1}} + +\newcommand{\nearv}[1]{\near[#1]} +\newcommand{\Nearv}[2]{\Near[#2]{#1}} +\newcommand{\neaRv}[2]{\neaR[#2]{#1}} + +\newcommand{\swarv}[1]{\swar[#1]} +\newcommand{\Swarv}[2]{\Swar[#2]{#1}} +\newcommand{\swaRv}[2]{\swaR[#2]{#1}} + +\newcommand{\nwarv}[1]{\nwar[#1]} +\newcommand{\Nwarv}[2]{\Nwar[#2]{#1}} +\newcommand{\nwaRv}[2]{\nwaR[#2]{#1}} + +\newcommand{\necurve}[1]{\necurvar[#1]} +\newcommand{\nwcurve}[1]{\nwcurvar[#1]} +\newcommand{\securve}[1]{\securvar[#1]} +\newcommand{\swcurve}[1]{\swcurvar[#1]} +\newcommand{\encurve}[1]{\encurvar[#1]} +\newcommand{\escurve}[1]{\escurvar[#1]} +\newcommand{\wncurve}[1]{\wncurvar[#1]} +\newcommand{\wscurve}[1]{\wscurvar[#1]} + +\newcommand{\Freear}[8]{\begin{picture}(0,0)% +\put(#400,#500){\vector(#6,#7){#800}}% +\truex{#200}\truey{#300}% +\put(\value{x},\value{y}){$#1$}\end{picture}}% +\newcommand{\freear}[5]{\Freear{}{0}{0}{#1}{#2}{#3}{#4}{#5}}% + +\newcommand{\DIAG}[1]{% +\diagramtrue% +\SCALE=\defaultscale% +\setlength{\unitlength}{655sp}% +\initialize{\mbox{$#1$}}}% + +\newcommand{\N}[1]% +{\raisebox{0pt}[7pt][0pt]{$#1$}}% + +\let\B=\bold + +\def\newmovename(#1,#2)#3{\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% +\def\newmovearrow(#1,#2)#3{\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% +\def\newmovevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% +\newcommand{\oldmovename}[3]{\newmovename(#2,#3){#1}} +\newcommand{\oldmovearrow}[3]{\newmovearrow(#2,#3){#1}} +\newcommand{\oldmovevertex}[3]{\newmovevertex(#2,#3){#1}} +\renewcommand{\movename}{\@ifnextchar({\newmovename}{\oldmovename}} +\renewcommand{\movearrow}{\@ifnextchar({\newmovearrow}{\oldmovearrow}} +\renewcommand{\movevertex}{\@ifnextchar({\newmovevertex}{\oldmovevertex}} + +\newcount\A\newcount\B +\newcommand{\Diag}[2]{\A=0\B=0\DIAG{#2}} +\newcommand{\Diagv}[4]{\A=#2\B=#3\DIAG{#4}} +\newcommand{\diaGv}[2]{\advance\B by -#1\diagv{\A}{\B}{#2}} +\newcommand{\diaG}{\diagv{\A}{\B}{0}} +\newcommand{\move}[3]{\movename(#2,#3){#1}} + +\setdisplayarrowlength{20} + +\typeout{\string\displayarrowlength has been put to value 20 +by the file OldMicroDiagram} + +\catcode`\@=12
\ No newline at end of file diff --git a/macros/generic/diagrams/borceux/compatibility/OldMiniDiagram b/macros/generic/diagrams/borceux/compatibility/OldMiniDiagram new file mode 100644 index 0000000000..af15140718 --- /dev/null +++ b/macros/generic/diagrams/borceux/compatibility/OldMiniDiagram @@ -0,0 +1,107 @@ +\catcode`\@=11 + +\newcommand{\earv}[1]{\ear[#1]} +\newcommand{\Earv}[2]{\Ear[#2]{#1}} +\newcommand{\eaRv}[2]{\eaR[#2]{#1}} +\newcommand{\ebiarv}[1]{\ebiar[#1]} +\newcommand{\Ebiarv}[3]{\Ear[#3]{#1}{#2}} +\newcommand{\eadjarv}[1]{\eadjar[#1]} +\newcommand{\Eadjarv}[3]{\Ear[#3]{#1}{#2}} + +\newcommand{\warv}[1]{\war[#1]} +\newcommand{\Warv}[2]{\War[#2]{#1}} +\newcommand{\waRv}[2]{\waR[#2]{#1}} +\newcommand{\wbiarv}[1]{\wbiar[#1]} +\newcommand{\Wbiarv}[3]{\War[#3]{#1}{#2}} +\newcommand{\wadjarv}[1]{\wadjar[#1]} +\newcommand{\Wadjarv}[3]{\War[#3]{#1}{#2}} + +\newcommand{\narv}[1]{\nar[#1]} +\newcommand{\Narv}[2]{\Nar[#2]{#1}} +\newcommand{\naRv}[2]{\naR[#2]{#1}} +\newcommand{\nbiarv}[1]{\nbiar[#1]} +\newcommand{\Nbiarv}[3]{\Nar[#3]{#1}{#2}} +\newcommand{\nadjarv}[1]{\nadjar[#1]} +\newcommand{\Nadjarv}[3]{\Nar[#3]{#1}{#2}} + +\newcommand{\sarv}[1]{\sar[#1]} +\newcommand{\Sarv}[2]{\Sar[#2]{#1}} +\newcommand{\saRv}[2]{\saR[#2]{#1}} +\newcommand{\sbiarv}[1]{\sbiar[#1]} +\newcommand{\Sbiarv}[3]{\Sar[#3]{#1}{#2}} +\newcommand{\sadjarv}[1]{\sadjar[#1]} +\newcommand{\Sadjarv}[3]{\Sar[#3]{#1}{#2}} + +\newcommand{\searv}[1]{\sear[#1]} +\newcommand{\Searv}[2]{\Sear[#2]{#1}} +\newcommand{\seaRv}[2]{\seaR[#2]{#1}} + +\newcommand{\nearv}[1]{\near[#1]} +\newcommand{\Nearv}[2]{\Near[#2]{#1}} +\newcommand{\neaRv}[2]{\neaR[#2]{#1}} + +\newcommand{\swarv}[1]{\swar[#1]} +\newcommand{\Swarv}[2]{\Swar[#2]{#1}} +\newcommand{\swaRv}[2]{\swaR[#2]{#1}} + +\newcommand{\nwarv}[1]{\nwar[#1]} +\newcommand{\Nwarv}[2]{\Nwar[#2]{#1}} +\newcommand{\nwaRv}[2]{\nwaR[#2]{#1}} + +\newcommand{\necurve}[1]{\necurvar[#1]} +\newcommand{\nwcurve}[1]{\nwcurvar[#1]} +\newcommand{\securve}[1]{\securvar[#1]} +\newcommand{\swcurve}[1]{\swcurvar[#1]} +\newcommand{\encurve}[1]{\encurvar[#1]} +\newcommand{\escurve}[1]{\escurvar[#1]} +\newcommand{\wncurve}[1]{\wncurvar[#1]} +\newcommand{\wscurve}[1]{\wscurvar[#1]} + +\newcommand{\Freear}[8]{\begin{picture}(0,0)% +\put(#400,#500){\vector(#6,#7){#800}}% +\truex{#200}\truey{#300}% +\put(\value{x},\value{y}){$#1$}\end{picture}}% +\newcommand{\freear}[5]{\Freear{}{0}{0}{#1}{#2}{#3}{#4}{#5}}% + +\newcommand{\DIAG}[1]{% +\diagramtrue% +\SCALE=\defaultscale% +\setlength{\unitlength}{655sp}% +\initialize{\mbox{$#1$}}}% + +\newcommand{\N}[1]% +{\raisebox{0pt}[7pt][0pt]{$#1$}}% + +\let\B=\bold + +\def\newmovename(#1,#2)#3{\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% +\def\newmovearrow(#1,#2)#3{\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% +\def\newmovevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% +\newcommand{\oldmovename}[3]{\newmovename(#2,#3){#1}} +\newcommand{\oldmovearrow}[3]{\newmovearrow(#2,#3){#1}} +\newcommand{\oldmovevertex}[3]{\newmovevertex(#2,#3){#1}} +\renewcommand{\movename}{\@ifnextchar({\newmovename}{\oldmovename}} +\renewcommand{\movearrow}{\@ifnextchar({\newmovearrow}{\oldmovearrow}} +\renewcommand{\movevertex}{\@ifnextchar({\newmovevertex}{\oldmovevertex}} + +\newcount\A\newcount\B +\newcommand{\Diag}[2]{\A=0\B=0\DIAG{#2}} +\newcommand{\Diagv}[4]{\A=#2\B=#3\DIAG{#4}} +\newcommand{\diaGv}[2]{\advance\B by -#1\diagv{\A}{\B}{#2}} +\newcommand{\diaG}{\diagv{\A}{\B}{0}} +\newcommand{\move}[3]{\movename(#2,#3){#1}} + +\setdisplayarrowlength{20} + +\typeout{\string\displayarrowlength has been put to value 20 +by the file OldMiniDiagram} + + +\catcode`\@=12
\ No newline at end of file diff --git a/macros/generic/diagrams/borceux/compatibility/OldMultipleArrows b/macros/generic/diagrams/borceux/compatibility/OldMultipleArrows new file mode 100644 index 0000000000..1b97736a06 --- /dev/null +++ b/macros/generic/diagrams/borceux/compatibility/OldMultipleArrows @@ -0,0 +1,49 @@ + % COMPATIBILITY WITH OLDER VERSIONS + +\newcommand{\etriarv}[1]{\etriar[#1]} +\newcommand{\Etriarv}[4]{\Etriar[#4]{#1}{#2}{#3}} +\newcommand{\etriaRv}[4]{\etriaR[#4]{#1}{#2}{#3}} +\newcommand{\etriadjarv}[1]{\etriadjar[#1]} +\newcommand{\Etriadjarv}[4]{\Etriadjar[#4]{#1}{#2}{#3}} +\newcommand{\etriadjaRv}[4]{\etriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\equadriarv}[1]{\equadriar[#1]} +\newcommand{\equadriadjarv}[1]{\equadriadjar[#1]} +\newcommand{\equintiarv}[1]{\equintiar[#1]} +\newcommand{\equintiadjarv}[1]{\equintiadjar[#1]} + +\newcommand{\wtriarv}[1]{\wtriar[#1]} +\newcommand{\Wtriarv}[4]{\Wtriar[#4]{#1}{#2}{#3}} +\newcommand{\wtriaRv}[4]{\wtriaR[#4]{#1}{#2}{#3}} +\newcommand{\wtriadjarv}[1]{\wtriadjar[#1]} +\newcommand{\Wtriadjarv}[4]{\Wtriadjar[#4]{#1}{#2}{#3}} +\newcommand{\wtriadjaRv}[4]{\wtriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\wquadriarv}[1]{\wquadriar[#1]} +\newcommand{\wquadriadjarv}[1]{\wquadriadjar[#1]} +\newcommand{\wquintiarv}[1]{\wquintiar[#1]} +\newcommand{\wquintiadjarv}[1]{\wquintiadjar[#1]} + +\newcommand{\ntriarv}[1]{\ntriar[#1]} +\newcommand{\Ntriarv}[4]{\Ntriar[#4]{#1}{#2}{#3}} +\newcommand{\ntriaRv}[4]{\ntriaR[#4]{#1}{#2}{#3}} +\newcommand{\ntriadjarv}[1]{\ntriadjar[#1]} +\newcommand{\Ntriadjarv}[4]{\Ntriadjar[#4]{#1}{#2}{#3}} +\newcommand{\ntriadjaRv}[4]{\ntriadjaR[#4]{#1}{#2}{#3}} +\newcommand{\nquadriarv}[1]{\nquadriar[#1]} +\newcommand{\nquadriadjarv}[1]{\nquadriadjar[#1]} +\newcommand{\nquintiarv}[1]{\nquintiar[#1]} +\newcommand{\nquintiadjarv}[1]{\nquintiadjar[#1]} + +\newcommand{\Striarv}[4]{\Striar[#4]{#1}{#2}{#3}} +\newcommand{\striaRv}[4]{\striaR[#4]{#1}{#2}{#3}} +\newcommand{\striadjarv}[1]{\striadjar[#1]} +\newcommand{\Striadjarv}[4]{\Striadjar[#4]{#1}{#2}{#3}} +\newcommand{\striadjaRv}[4]{\striadjaR[#4]{#1}{#2}{#3}} +\newcommand{\squadriarv}[1]{\squadriar[#1]} +\newcommand{\squadriadjarv}[1]{\squadriadjar[#1]} +\newcommand{\squintiarv}[1]{\squintiar[#1]} +\newcommand{\squintiadjarv}[1]{\nquintiadjar[#1]} + +\setdisplayarrowlength{20} + +\typeout{\string\displayarrowlength has been put to value 20 +by the file OldMultipleArrows} diff --git a/macros/generic/diagrams/borceux/diagram/Diagram b/macros/generic/diagrams/borceux/diagram/Diagram new file mode 100644 index 0000000000..0aeae85b10 --- /dev/null +++ b/macros/generic/diagrams/borceux/diagram/Diagram @@ -0,0 +1,8973 @@ +% DIAGRAM MACROS (version 3.1) + +\catcode`\@=11 + +%%%%% FIXING SOME PARAMETERS + +%%% Fixing the printerresolution +%%% unit = 1 dpi +\newcount\printerresolution +\global\printerresolution=300 + +%%% Fixing the length of a segment in an arrowhead +%%% unit = 0.01pt +\newcount\headsize +\global\headsize=450 + +%%% Fixing the thickness of an arrowhead +%%% value = 1/5 of the font size +\font\dotfont = lcircle10 at 3pt + +%%% Fixing the distance between the two heads of an epimorphism +%%% unit = 0.01pt +\newcount\epihead +\global\epihead=200 + +%%% Fixing the default scaling factor for diagrams +\newcount\defaultscale +\def\setdefaultscale#1{\global\defaultscale=#1} +\setdefaultscale{100} + +\newcount\actualtextarrowspace +\newcount\actualtextarrowlength + +% \computetextparameters computes the parameters +% required to design a text arrow +\newcommand{\computetextparameters}% +{\global\actualtextarrowspace=\textarrowlength% +\global\advance\actualtextarrowspace by 3% +\global\actualtextarrowlength=\textarrowlength% +\global\multiply\actualtextarrowlength by 100} + +%%% Fixing the default length of text arrows +\newcount\textarrowlength +\def\settextarrowlength#1{\global\textarrowlength=#1% +\computetextparameters} +\settextarrowlength{20} + +\newcount\actualdisplayarrowspace +\newcount\actualdisplayarrowlength + +% \computedisplayparameters computes the parameters +% required to design a displayed arrow +\newcommand{\computedisplayparameters}% +{\global\actualdisplayarrowspace=\displayarrowlength% +\global\advance\actualdisplayarrowspace by 3% +\global\actualdisplayarrowlength=\displayarrowlength% +\global\multiply\actualdisplayarrowlength by 100} + +%%% Fixing the default length of displayed arrows +\newcount\displayarrowlength +\def\setdisplayarrowlength#1{\global\displayarrowlength=#1% +\computedisplayparameters} +\setdisplayarrowlength{30} + + +% ERROR MESSAGES + +% Checking the next token without gobbling blanks +\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}% +\futurelet\@tempc\@ifntok} +\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% +\@tempd} + +% \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error +% halt with error help message HLP. +\def\@diagramerror#1#2{% +\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}% +\typeout{Diagram error. \space See User's guide for explanation.^^J + \space\@spaces\@spaces\@spaces Type \space H <return> \space for + immediate help.}\errmessage{#1}} + +\newif\ifdiagram + +% error test and message for text arrows +\def\testtextmode{% +\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you +should use east or west diagram arrows, not forward or backward text arrows. +Try proceeding now, typeset could succeed but with unpredictable output.} +\else\ifmmode\relax\else% +\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode. +Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi} + +% error test and message for diagram arrows +\def\testdiagrammode{\ifdiagram\relax\else +\@diagramerror{Diagram arrows are not allowed in formulas}{Here you +should use forward or backward text arrows, not diagram arrows. Proceeding +could work with unpredictable output, but overflow arithmetic +could also occur.}\fi} + +% error test and message for diagrams in math mode +\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams +allowed in math mode.}{You should leave math mode before +introducing your diagram. All items in the diagram will automatically be +processed in math mode.}\else\relax\fi\global\diagramtrue} + +\global\diagramfalse + +%%%%% DESIGING THE ARROW HEADS + +%%% Customizing the unitlength for the sake of precision +\setlength{\unitlength}{0.01pt} + +%%% Printing one dot at the required scale +\def\DOT{{\dotfont q}} + +%%% Computing the distance between two dots in an arrowhead +\newcount\basicstep +\basicstep=7227 +\global\divide\basicstep by \printerresolution + +%%% Computing the number of dots in an arrowhead +\newcount\numberofsteps +\numberofsteps=\headsize +\global\divide\numberofsteps by \basicstep + +%%% Producing an arrow head +\newcommand{\makehead}[3]{% +\begin{picture}(0,0)% +\multiput(0,0)(#1,#2){#3}{\DOT}% +\multiput(0,0)(-#2,#1){#3}{\DOT}% +\end{picture}} + +%%% Creating bitmap images of the arrowheads +\newcount\xstep +\newcount\ystep + +\newsavebox{\northhead} +\savebox{\northhead}{% +\xstep=-\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nhead}{\usebox{\northhead}} + +\newsavebox{\easthead} +\savebox{\easthead}{% +\xstep=-\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=-\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ehead}{\usebox{\easthead}} + +\newsavebox{\southhead} +\savebox{\southhead}{% +\xstep=\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\shead}{\usebox{\southhead}} + +\newsavebox{\westhead} +\savebox{\westhead}{% +\xstep=\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=-\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\whead}{\usebox{\westhead}} + +\newsavebox{\northwesthead} +\savebox{\northwesthead}{% +\makehead{0}{-\basicstep}{\numberofsteps}} +\newcommand{\nwhead}{\usebox{\northwesthead}} + +\newsavebox{\northeasthead} +\savebox{\northeasthead}{% +\makehead{-\basicstep}{0}{\numberofsteps}} +\newcommand{\nehead}{\usebox{\northeasthead}} + +\newsavebox{\southwesthead} +\savebox{\southwesthead}{% +\makehead{\basicstep}{0}{\numberofsteps}} +\newcommand{\swhead}{\usebox{\southwesthead}} + +\newsavebox{\southeasthead} +\savebox{\southeasthead}{% +\makehead{0}{\basicstep}{\numberofsteps}} +\newcommand{\sehead}{\usebox{\southeasthead}} + +\newsavebox{\eastnortheasthead} +\savebox{\eastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\enehead}{\usebox{\eastnortheasthead}} + +\newsavebox{\northnortheasthead} +\savebox{\northnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnehead}{\usebox{\northnortheasthead}} + +\newsavebox{\southsouthwesthead} +\savebox{\southsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sswhead}{\usebox{\southsouthwesthead}} + +\newsavebox{\westsouthwesthead} +\savebox{\westsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wswhead}{\usebox{\westsouthwesthead}} + +\newsavebox{\westnorthwesthead} +\savebox{\westnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wnwhead}{\usebox{\westnorthwesthead}} + +\newsavebox{\eastsoutheasthead} +\savebox{\eastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\esehead}{\usebox{\eastsoutheasthead}} + +\newsavebox{\northnorthwesthead} +\savebox{\northnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnwhead}{\usebox{\northnorthwesthead}} + +\newsavebox{\southsoutheasthead} +\savebox{\southsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ssehead}{\usebox{\southsoutheasthead}} + +\newsavebox{\easteastnortheasthead} +\savebox{\easteastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\eenehead}{\usebox{\easteastnortheasthead}} + +\newsavebox{\northnorthnortheasthead} +\savebox{\northnorthnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnnehead}{\usebox{\northnorthnortheasthead}} + +\newsavebox{\southsouthsouthwesthead} +\savebox{\southsouthsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ssswhead}{\usebox{\southsouthsouthwesthead}} + +\newsavebox{\westwestsouthwesthead} +\savebox{\westwestsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wwswhead}{\usebox{\westwestsouthwesthead}} + +\newsavebox{\westwestnorthwesthead} +\savebox{\westwestnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wwnwhead}{\usebox{\westwestnorthwesthead}} + +\newsavebox{\easteastsoutheasthead} +\savebox{\easteastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\eesehead}{\usebox{\easteastsoutheasthead}} + +\newsavebox{\northnorthnorthwesthead} +\savebox{\northnorthnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnnwhead}{\usebox{\northnorthnorthwesthead}} + +\newsavebox{\southsouthsoutheasthead} +\savebox{\southsouthsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sssehead}{\usebox{\southsouthsoutheasthead}} + +\newsavebox{\northeasteastnortheasthead} +\savebox{\northeasteastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\neenehead}{\usebox{\northeasteastnortheasthead}} + +\newsavebox{\northeastnorthnortheasthead} +\savebox{\northeastnorthnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nennehead}{\usebox{\northeastnorthnortheasthead}} + +\newsavebox{\southwestsouthsouthwesthead} +\savebox{\southwestsouthsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\swsswhead}{\usebox{\southwestsouthsouthwesthead}} + +\newsavebox{\southwestwestsouthwesthead} +\savebox{\southwestwestsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\swwswhead}{\usebox{\southwestwestsouthwesthead}} + +\newsavebox{\northwestwestnorthwesthead} +\savebox{\northwestwestnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nwwnwhead}{\usebox{\northwestwestnorthwesthead}} + +\newsavebox{\southeasteastsoutheasthead} +\savebox{\southeasteastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\seesehead}{\usebox{\southeasteastsoutheasthead}} + +\newsavebox{\northwestnorthnorthwesthead} +\savebox{\northwestnorthnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nwnnwhead}{\usebox{\northwestnorthnorthwesthead}} + +\newsavebox{\southeastsouthsoutheasthead} +\savebox{\southeastsouthsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sessehead}{\usebox{\southeastsouthsoutheasthead}} + +%%% Restoring the standard unitlength +\setlength{\unitlength}{1pt} + + +% MACROS FOR MARKED ARROWS + +\newsavebox{\isomorphismmark} +\newcommand{\isomark}[1]{\savebox{\isomorphismmark}{#1}} +\isomark{$\cong$} +\newcommand{\isosign}{\usebox{\isomorphismmark}} + +\newif\ifuserdist +\newsavebox{\distributormark} +\newcommand{\distmark}[1]{\ifx#1\distcircle\userdistfalse\else% +\userdisttrue\savebox{\distributormark}{#1}\fi} +\newsavebox{\distributorcircle} +\savebox{\distributorcircle}{\begin{picture}(0,0)% +\put(0,0){\circle{4}}\end{picture}} +\newcommand{\distsign}{\ifuserdist\usebox{\distributormark}\else% +\usebox{\distributorcircle}\fi} +\userdistfalse + + + +% MACROS FOR ADJUSTING THE LENGTH OF MONOMORPHISMS AND EPIMORPHISMS + +\newcount\monolength +\newcount\epilength +\newcount\bimolength +\newcount\secondmonolength +\newcount\secondepilength + +\newcount\monotail% +\global\monotail=\headsize% +\global\multiply\monotail by 7070% +\global\divide\monotail by 10000% + +\newcount\truemonotail% +\newcount\trueepihead% + +\def\truetail{\truemonotail=\monotail% +\multiply\truemonotail by 100% +\divide\truemonotail by \SCALE} + +\def\truehead{\trueepihead=\epihead% +\multiply\trueepihead by 100% +\divide\trueepihead by \SCALE} + +\newcount\Monotail% +\global\Monotail=\headsize% +\global\divide\Monotail by 2% + +\newcount\Epihead% +\global\Epihead=\epihead% +\global\multiply\Epihead by 7070% +\global\divide\Epihead by 10000% + +\newcount\Truemonotail% +\newcount\Trueepihead% + +\def\Truetail{\Truemonotail=\Monotail% +\multiply\Truemonotail by 100% +\divide\Truemonotail by \SCALE}% + +\def\Truehead{\Trueepihead=\Epihead% +\multiply\Trueepihead by 100% +\divide\Trueepihead by \SCALE} + +\newcount\MonoTail% +\global\MonoTail=\headsize% +\global\multiply\MonoTail by 6324% +\global\divide\MonoTail by 10000% + +\newcount\EpiHead% +\global\EpiHead=\epihead% +\global\multiply\EpiHead by 8944% +\global\divide\EpiHead by 10000% + +\newcount\TrueMonoTail% +\newcount\TrueEpiHead% + +\def\TrueTail{\TrueMonoTail=\MonoTail% +\multiply\TrueMonoTail by 100% +\divide\TrueMonoTail by \SCALE}% + +\def\TrueHead{\TrueEpiHead=\EpiHead% +\multiply\TrueEpiHead by 100% +\divide\TrueEpiHead by \SCALE} + +\newcount\monotaiL% +\global\monotaiL=\headsize% +\global\multiply\monotaiL by 3162% +\global\divide\monotaiL by 10000% + +\newcount\epiheaD% +\global\epiheaD=\epihead% +\global\multiply\epiheaD by 4472% +\global\divide\epiheaD by 10000% + +\newcount\truemonotaiL% +\newcount\trueepiheaD% + +\def\truetaiL{\truemonotaiL=\monotaiL% +\multiply\truemonotaiL by 100% +\divide\truemonotaiL by \SCALE}% + +\def\trueheaD{\trueepiheaD=\epiheaD% +\multiply\trueepiheaD by 100% +\divide\trueepiheaD by \SCALE} + + +% 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 + +% moving a name up +\newcommand{\TUP}[1]{\raisebox{0pt}[0pt][3pt]{}#1} + +% moving a name down +\newcommand{\TDOWN}[1]{\raisebox{0pt}[6pt][0pt]{}#1} + +% \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 + +% moving a name up +\newcommand{\DUP}[1]{\raisebox{0pt}[0pt][4pt]{}#1} + +% moving a name down +\newcommand{\DDOWN}[1]{\raisebox{0pt}[9pt][0pt]{}#1} + +% \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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \DIST{n} draws a distributor of length n units +\newcommand{\DIST}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\end{picture}}% + +% \DOTAR{n} draws a dotted arrow of length n units +\newcommand{\DOTAR}[1]% +{\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by 300% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(0,0)(300,0){\NUMBEROFDOTS}{\circle*{100}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \MONO{n} draws a monomorphism of length n units +\newcommand{\MONO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\begin{picture}(#1,0)% +\put(\monotail,0){\line(1,0){\monolength}}% +\put(#1,0){\ehead}% +\put(\monotail,0){\ehead}% +\end{picture}}% + +% \EPI{n} draws an epimorphism of length n units +\newcommand{\EPI}[1]% +{\epilength=#1% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-#1,0){\line(1,0){\epilength}}% +\put(-\epihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + +% \BIMO{n} draws a bimorphism of length n units +\newcommand{\BIMO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\epilength=\monolength% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monolength,0){\line(1,0){\epilength}}% +\put(-\monolength,0){\ehead}% +\put(-\epihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + +% \BIAR{n} draws a pair of arrows of length n units +\newcommand{\BIAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\end{picture}}% + +% \BIDIST{n} draws a pair of distributors of length n units +\newcommand{\BIDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\put(\NUMBER,700){\circle{400}}% +\end{picture}}% + +% \EQL{n} draws an equality of length n units +\newcommand{\EQL}[1]% +{\begin{picture}(#1,0)% +\put(0,100){\line(1,0){#1}}% +\put(0,-100){\line(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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead} +\end{picture}}% + +% \ADJDIST{n} draws a pair of adjoint distibutors of length n units +\newcommand{\ADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead} +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\put(\NUMBER,700){\circle{400}}% +\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}% + +% distributor +\newcommand{\dist}{\ifinner\tcase{\DIST}\else\dcase{\DIST}\fi}% + +% distributor with upper name [1] +\newcommand{\Dist}[1]{\ifinner\Tcase{\DIST}{\TUP{#1}}% +\else\Dcase{\DIST}{\TUP{#1}}\fi}% + +% dotted arrow +\newcommand{\dotar}{\ifinner\tcase{\DOTAR}\else\dcase{\DOTAR}\fi}% + +% dotted arrow with upper name [1] +\newcommand{\Dotar}[1]{\ifinner\Tcase{\DOTAR}{#1}% +\else\Dcase{\DOTAR}{#1}\fi}% + +% monomorphism +\newcommand{\mono}{\ifinner\tcase{\MONO}\else\dcase{\MONO}\fi}% + +% monomorphism with upper name [1] +\newcommand{\Mono}[1]{\ifinner\Tcase{\MONO}{#1}\else\Dcase{\MONO}{#1}\fi}% + +% epimorphism +\newcommand{\epi}{\ifinner\tcase{\EPI}\else\dcase{\EPI}\fi}% + +% epimorphism with upper name [1] +\newcommand{\Epi}[1]{\ifinner\Tcase{\EPI}{#1}\else\Dcase{\EPI}{#1}\fi}% + +% bimorphism +\newcommand{\bimo}{\ifinner\tcase{\BIMO}\else\dcase{\BIMO}\fi}% + +% bimorphism with upper name [1] +\newcommand{\Bimo}[1]{\ifinner\Tcase{\BIMO}{#1}% +\else\Dcase{\BIMO}{#1}\fi}% + +% isomorphism +\newcommand{\iso}{\ifinner\Tcase{\AR}{\cong}\else\Dcase{\AR}{\cong}\fi}% + +% isomorphism with upper name [1] +\newcommand{\Iso}[1]{\ifinner\Tcase{\AR}{\cong{#1}}% +\else\Dcase{\AR}{\cong{#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 distributors +\newcommand{\bidist}{\ifinner\tbicase{\BIDIST}\else\dbicase{\BIDIST}\fi}% + +% pair of distributors with names [1],[2] +\newcommand{\Bidist}[2]{\ifinner\Tbicase{\BIDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\BIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}% + +% equality +\newcommand{\eql}{\ifinner\tcase{\EQL}\else\dcase{\EQL}\fi}% + +% equality with name [1] +\newcommand{\Eql}[1]{\ifinner\Tcase{\EQL}{\TUP{#1}}% +\else\Dcase{\EQL}{\DUP{#1}}\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}% + +% pair of adjoint distributors +\newcommand{\adjdist}{\ifinner\tbicase{\ADJDIST}\else\dbicase{\ADJDIST}\fi}% + +% pair of adjoint distributors with names [1],[2] +\newcommand{\Adjdist}[2]{\ifinner\Tbicase{\ADJDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\ADJDIST}{\DUP{#1}}{\DDOWN{#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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKDIST{n} draws a pointing back distributor of length n units +\newcommand{\BKDIST}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\end{picture}}% + +% \BKDOTAR{n} draws a backward dotted arrow +% of length n units +\newcommand{\BKDOTAR}[1]% +{\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by 300% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(#1,0)(-300,0){\NUMBEROFDOTS}{\circle*{100}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKMONO{n} draws a pointing back monomorphism of length n units +\newcommand{\BKMONO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monotail,0){\line(-1,0){\monolength}}% +\put(-\monotail,0){\whead}% +\put(-#1,0){\whead}% +\end{picture}}% + +% \BKEPI{n} draws a pointing back epimorphism of length n units +\newcommand{\BKEPI}[1]% +{\epilength=#1% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){\epilength}}% +\put(\epihead,0){\whead}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKBIMO{n} draws a pointing back bimorphism of length n units +\newcommand{\BKBIMO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\epilength=\monolength% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)% +\put(\monolength,0){\line(-1,0){\epilength}}% +\put(\monolength,0){\whead}% +\put(\epihead,0){\whead}% +\put(0,0){\whead}% +\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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead}% +\end{picture}}% + +% \BKBIDIST{n} draws a pair of pointing back distributors of length n units +\newcommand{\BKBIDIST}[1]% +{\begin{picture}(#1,700)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\put(\NUMBER,700){\circle{400}}% +\end{picture}}% + +% \BKADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\BKADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\BKADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\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}% + +% back distributor +\newcommand{\bkdist}{\ifinner\tcase{\BKDIST}\else\dcase{\BKDIST}\fi}% + +% back distributor with upper name [1] +\newcommand{\Bkdist}[1]{\ifinner\Tcase{\BKDIST}{\TUP{#1}}% +\else\Dcase{\BKDIST}{\TUP{#1}}\fi}% + +% backward dotted arrow +\newcommand{\bkdotar}{\ifinner\tcase{\BKDOTAR}\else\dcase{\BKDOTAR}\fi}% + +% backward dotted arrow with upper name [1] +\newcommand{\Bkdotar}[1]{\ifinner\Tcase{\BKDOTAR}{#1}% +\else\Dcase{\BKDOTAR}{#1}\fi}% + +% back monomorphism +\newcommand{\bkmono}{\ifinner\tcase{\BKMONO}\else\dcase{\BKMONO}\fi}% + +% back monomorphism with upper name [1] +\newcommand{\Bkmono}[1]{\ifinner\Tcase{\BKMONO}{#1}% +\else\Dcase{\BKMONO}{#1}\fi}% + +% back epimorphism +\newcommand{\bkepi}{\ifinner\tcase{\BKEPI}\else\dcase{\BKEPI}\fi}% + +% back epimorphism with upper name [1] +\newcommand{\Bkepi}[1]{\ifinner\Tcase{\BKEPI}{#1}% +\else\Dcase{\BKEPI}{#1}\fi}% + +% back bimorphism +\newcommand{\bkbimo}{\ifinner\tcase{\BKBIMO}\else\dcase{\BKBIMO}\fi}% + +% back bimorphism with upper name [1] +\newcommand{\Bkbimo}[1]{\ifinner\Tcase{\BKBIMO}{\hspace{9pt}#1}% +\else\Dcase{\BKBIMO}{\hspace{9pt}#1}\fi}% + +% back isomorphism +\newcommand{\bkiso}{\ifinner\Tcase{\BKAR}{\cong}% +\else\Dcase{\BKAR}{\cong}\fi}% + +% back isomorphism with upper name [1] +\newcommand{\Bkiso}[1]{\ifinner\Tcase{\BKAR}{\cong{#1}}% +\else\Dcase{\BKAR}{\cong{#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}% + +% pair of back distributors +\newcommand{\bkbidist}{\ifinner\tbicase{\BKBIDIST}% +\else\dbicase{\BKBIDIST}\fi}% + +% pair of back distributors with names [1],[2] +\newcommand{\Bkbidist}[2]{\ifinner\Tbicase{\BKBIDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Tbicase{\BKBIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}% + +% back equality +\let\bkeql=\eql% + +% back equality with name [1] +\let\Bkeql=\Eql% + +% 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}% + +% back pair of adjoint distributors +\newcommand{\bkadjdist}{\ifinner\tbicase{\BKADJDIST}% +\else\dbicase{\BKADJDIST}\fi}% + +% back pair of adjoint distributors with names [1],[2] +\newcommand{\Bkadjdist}[2]{\ifinner\Tbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#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}}}}% + +% \Hisocase{P}{f}{g}{n} draws an arrow P with names f, g +% and length n units. +\newcommand{\Hisocase}[4]% +{\testdiagrammode\makebox[0pt] +{\raisebox{-8pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}% +{\mbox{\lowername{#1{#4}}{#3}}}$}}}% + +% \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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \EDIST{n} draws an east distributor of length n units +\newcommand{\EDIST}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\truex{400} +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{x}}} +\end{picture}}% + +% \EDOTAR draws a dotted arrow of length n units +\newcommand{\EDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(0,0)(\value{y},0){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(#1,0){\ehead}% +\end{picture}}% + + +% \EMONO{n} draws an east monomorphism of length n units +\newcommand{\EMONO}[1]% +{\truetail +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(#1,0)% +\put(\truemonotail,0){\line(1,0){\monolength}}% +\put(#1,0){\ehead}% +\put(\truemonotail,0){\ehead}% +\end{picture}}% + + +% \EEPI{n} draws an east epimorphism of length n units +\newcommand{\EEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-#1,0){\line(1,0){\epilength}}% +\put(-\trueepihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + + +% \EBIMO{n} draws an east bimorphism of length n units +\newcommand{\EBIMO}[1]% +{\truehead\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monolength,0){\line(1,0){\epilength}}% +\put(-\monolength,0){\ehead}% +\put(-\trueepihead,0){\ehead}% +\put(0,0){\ehead}% +\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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,\value{x}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\end{picture}}% + +% \EBIDIST{n} draws an east pair of distributors of length n units +\newcommand{\EBIDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\truey{400}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{y}}} +\put(\NUMBER,\value{x}){\circle{\value{y}}}% +\end{picture}}% + +% \EEQL{n} draws an east equality of length n units +\newcommand{\EEQL}[1]% +{\begin{picture}(#1,0)% +\truex{200}% +\put(0,\value{x}){\line(1,0){#1}}% +\put(0,0){\line(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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,\value{x}){\line(-1,0){#1}}% +\put(0,\value{x}){\whead}% +\end{picture}}% + +% \EADJDIST{n} draws an east pair of adjoint distributors of length n +% units +\newcommand{\EADJDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\truey{400}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{y}}} +\put(\NUMBER,\value{x}){\circle{\value{y}}}% +\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 east distributor +\def\basicedist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EDIST}{\Z}}% + +% east distributor +\newcommand{\edist}{\@ifnextchar[{\basicedist}% +{\hspace{\SOURCE\unitlength}\basicedist[\ARROWLENGTH]}}% + +% basic east distributor with upper name +\def\basicEdist[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EDIST}{\DUP{#2}}{\Z}}% + +% east distributor with upper name +\newcommand{\Edist}{\@ifnextchar[{\basicEdist}% +{\hspace{\SOURCE\unitlength}\basicEdist[\ARROWLENGTH]}}% + +% basic east distributor with lower name +\def\basicedisT[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EDIST}{\DDOWN{#2}}{\Z}}% + +% east distributor with lower name +\newcommand{\edisT}{\@ifnextchar[{\basicedisT}% +{\hspace{\SOURCE\unitlength}\basicedisT[\ARROWLENGTH]}}% + +% basic east dotted arrow +\def\basicedotar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EDOTAR}{\Z}}% + +% east dotted arrow +\newcommand{\edotar}{\@ifnextchar[{\basicedotar}% +{\hspace{\SOURCE\unitlength}\basicedotar[\ARROWLENGTH]}}% + +% basic east dotted arrow with upper name +\def\basicEdotar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EDOTAR}{#2}{\Z}}% + +% east dotted arrow with upper name +\newcommand{\Edotar}{\@ifnextchar[{\basicEdotar}% +{\hspace{\SOURCE\unitlength}\basicEdotar[\ARROWLENGTH]}}% + +% basic east dotted arrow with lower name +\def\basicedotaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EDOTAR}{#2}{\Z}}% + +% east dotted arrow with lower name +\newcommand{\edotaR}{\@ifnextchar[{\basicedotaR}% +{\hspace{\SOURCE\unitlength}\basicedotaR[\ARROWLENGTH]}}% + +% basic east monomorphism +\def\basicemono[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EMONO}{\Z}}% + +% east arrow +\newcommand{\emono}{\@ifnextchar[{\basicemono}% +{\hspace{\SOURCE\unitlength}\basicemono[\ARROWLENGTH]}}% + +% basic east monomorphism with upper name +\def\basicEmono[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EMONO}{#2}{\Z}}% + +% east monomorphism with upper name +\newcommand{\Emono}{\@ifnextchar[{\basicEmono}% +{\hspace{\SOURCE\unitlength}\basicEmono[\ARROWLENGTH]}}% + +% basic east monomorphism with lower name +\def\basicemonO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EMONO}{#2}{\Z}}% + +% east monomorphism with lower name +\newcommand{\emonO}{\@ifnextchar[{\basicemonO}% +{\hspace{\SOURCE\unitlength}\basicemonO[\ARROWLENGTH]}}% + +% basic east epimorphism +\def\basiceepi[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EEPI}{\Z}}% + +% east epimorphism +\newcommand{\eepi}{\@ifnextchar[{\basiceepi}% +{\hspace{\SOURCE\unitlength}\basiceepi[\ARROWLENGTH]}}% + +% basic east epimorphism with upper name +\def\basicEepi[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EEPI}{#2}{\Z}}% + +% east epimorphism with upper name +\newcommand{\Eepi}{\@ifnextchar[{\basicEepi}% +{\hspace{\SOURCE\unitlength}\basicEepi[\ARROWLENGTH]}}% + +% basic east epimorphism with lower name +\def\basiceepI[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EEPI}{#2}{\Z}}% + +% east epimorphism with lower name +\newcommand{\eepI}{\@ifnextchar[{\basiceepI}% +{\hspace{\SOURCE\unitlength}\basiceepI[\ARROWLENGTH]}}% + +% basic east bimorphism +\def\basicebimo[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EBIMO}{\Z}}% + +% east bimorphism +\newcommand{\ebimo}{\@ifnextchar[{\basicebimo}% +{\hspace{\SOURCE\unitlength}\basicebimo[\ARROWLENGTH]}}% + +% basic east bimorphism with upper name +\def\basicEbimo[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EBIMO}{#2}{\Z}}% + +% east bimorphism with upper name +\newcommand{\Ebimo}{\@ifnextchar[{\basicEbimo}% +{\hspace{\SOURCE\unitlength}\basicEbimo[\ARROWLENGTH]}}% + +% basic east bimorphism with lower name +\def\basicebimO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EBIMO}{#2}{\Z}}% + +% east bimorphism with lower name +\newcommand{\ebimO}{\@ifnextchar[{\basicebimO}% +{\hspace{\SOURCE\unitlength}\basicebimO[\ARROWLENGTH]}}% + +% basic east isomorphism +\def\basiceiso[#1]{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{\cong}{}{\Z}}% + +% east isomorphism +\newcommand{\eiso}{\@ifnextchar[{\basiceiso}% +{\hspace{\SOURCE\unitlength}\basiceiso[\ARROWLENGTH]}}% + +% basic east isomorphism with upper name +\def\basicEiso[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{#2}{\cong}{\Z}}% + +% east isomorphism with upper name +\newcommand{\Eiso}{\@ifnextchar[{\basicEiso}% +{\hspace{\SOURCE\unitlength}\basicEiso[\ARROWLENGTH]}}% + +% basic east isomorphism with lower name +\def\basiceisO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{\cong}{#2}{\Z}}% + +% east isomorphism with lower name +\newcommand{\eisO}{\@ifnextchar[{\basiceisO}% +{\hspace{\SOURCE\unitlength}\basiceisO[\ARROWLENGTH]}}% + +% basic east equality +\def\basiceeql[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EEQL}{\Z}}% + +% east equality +\newcommand{\eeql}{\@ifnextchar[{\basiceeql}% +{\hspace{\SOURCE\unitlength}\basiceeql[\ARROWLENGTH]}}% + +% basic east equality with upper name +\def\basicEeql[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EEQL}{\DUP{#2}}{\Z}}% + +% east equality with upper name +\newcommand{\Eeql}{\@ifnextchar[{\basicEeql}% +{\hspace{\SOURCE\unitlength}\basicEeql[\ARROWLENGTH]}}% + +% basic east equality with lower name +\def\basiceeqL[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EEQL}{#2}{\Z}}% + +% east equality with lower name +\newcommand{\eeqL}{\@ifnextchar[{\basiceeqL}% +{\hspace{\SOURCE\unitlength}\basiceeqL[\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 distributors +\def\basicebidist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EBIDIST}{\Z}}% + +% pair of east distributors +\newcommand{\ebidist}{\@ifnextchar[{\basicebidist}% +{\hspace{\SOURCE\unitlength}\basicebidist[\ARROWLENGTH]}}% + +% basic pair of east distributors with names +\def\basicEbidist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of east distributors with names +\newcommand{\Ebidist}{\@ifnextchar[{\basicEbidist}% +{\hspace{\SOURCE\unitlength}\basicEbidist[\ARROWLENGTH]}}% +\let\ebidisT=\Ebidist + +% 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 + +% basic pair of east adjoint distributors +\def\basiceadjdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EADJDIST}{\Z}}% + +% pair of east adjoint distributors +\newcommand{\eadjdist}{\@ifnextchar[{\basiceadjdist}% +{\hspace{\SOURCE\unitlength}\basiceadjdist[\ARROWLENGTH]}}% + +% basic pair of east adjoint distributors with names +\def\basicEadjdist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of east adjoint distributors with names +\newcommand{\Eadjdist}{\@ifnextchar[{\basicEadjdist}% +{\hspace{\SOURCE\unitlength}\basicEadjdist[\ARROWLENGTH]}}% +\let\eadjdisT=\Eadjdist + +% WEST ARROWS + +% \WAR{n} draws a pointing back arrow of length n units +\newcommand{\WAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WDIST{n} draws a pointing back distributor of length n units +\newcommand{\WDIST}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\truex{400}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{x}}}% +\end{picture}}% + +% \WDOTAR draws a dotted arrow of length n units +\newcommand{\WDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(#1,0)(-\value{y},0){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WMONO{n} draws a pointing back monomorphism of length n units +\newcommand{\WMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(#1,0)(-#1,0)% +\put(-\truemonotail,0){\line(-1,0){\monolength}}% +\put(-\truemonotail,0){\whead}% +\put(-#1,0){\whead}% +\end{picture}}% + + +% \WEPI{n} draws a pointing back epimorphism of length n units +\newcommand{\WEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){\epilength}}% +\put(\trueepihead,0){\whead}% +\put(0,0){\whead}% +\end{picture}}% + +% \WBIMO{n} draws a pointing back bimorphism of length n units +\newcommand{\WBIMO}[1]% +{\truehead\truetail% +\monolength=#1 +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)% +\put(\monolength,0){\line(-1,0){\epilength}}% +\put(\monolength,0){\whead}% +\put(\trueepihead,0){\whead}% +\put(0,0){\whead}% +\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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,\value{x}){\line(-1,0){#1}}% +\put(0,\value{x}){\whead}% +\end{picture}}% + +% \WBIDIST{n} draws a pair of pointing back distributors of length n units +\newcommand{\WBIDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\truey{400}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{y}}}% +\put(\NUMBER,\value{x}){\circle{\value{y}}}% +\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}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\WADJDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,\value{x}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\truey{400}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{\value{y}}}% +\put(\NUMBER,\value{x}){\circle{\value{y}}}% +\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 west distributor +\def\basicwdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WDIST}{\Z}}% + +% west distributor +\newcommand{\wdist}{\@ifnextchar[{\basicwdist}% +{\hspace{\SOURCE\unitlength}\basicwdist[\ARROWLENGTH]}}% + +% basic west distributor with upper name +\def\basicWdist[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WDIST}{\DUP{#2}}{\Z}}% + +% west distributor with upper name +\newcommand{\Wdist}{\@ifnextchar[{\basicWdist}% +{\hspace{\SOURCE\unitlength}\basicWdist[\ARROWLENGTH]}}% + +% basic west distributor with lower name +\def\basicwdisT[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WDIST}{\DDOWN{#2}}{\Z}}% + +% west distributor with lower name +\newcommand{\wdisT}{\@ifnextchar[{\basicwdisT}% +{\hspace{\SOURCE\unitlength}\basicwdisT[\ARROWLENGTH]}}% + +% basic west dotted arrow +\def\basicwdotar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WDOTAR}{\Z}}% + +% west dotted arrow +\newcommand{\wdotar}{\@ifnextchar[{\basicwdotar}% +{\hspace{\SOURCE\unitlength}\basicwdotar[\ARROWLENGTH]}}% + +% basic west dotted arrow with upper name +\def\basicWdotar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WDOTAR}{#2}{\Z}}% + +% west dotted arrow with upper name +\newcommand{\Wdotar}{\@ifnextchar[{\basicWdotar}% +{\hspace{\SOURCE\unitlength}\basicWdotar[\ARROWLENGTH]}}% + +% basic west dotted arrow with lower name +\def\basicwdotaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WDOTAR}{#2}{\Z}}% + +% west dotted arrow with lower name +\newcommand{\wdotaR}{\@ifnextchar[{\basicwdotaR}% +{\hspace{\SOURCE\unitlength}\basicwdotaR[\ARROWLENGTH]}}% + +% basic west monomorphism +\def\basicwmono[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WMONO}{\Z}}% + +% west arrow +\newcommand{\wmono}{\@ifnextchar[{\basicwmono}% +{\hspace{\SOURCE\unitlength}\basicwmono[\ARROWLENGTH]}}% + +% basic west monomorphism with upper name +\def\basicWmono[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WMONO}{#2}{\Z}}% + +% west monomorphism with upper name +\newcommand{\Wmono}{\@ifnextchar[{\basicWmono}% +{\hspace{\SOURCE\unitlength}\basicWmono[\ARROWLENGTH]}}% + +% basic west monomorphism with lower name +\def\basicwmonO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WMONO}{#2}{\Z}}% + +% west monomorphism with lower name +\newcommand{\wmonO}{\@ifnextchar[{\basicwmonO}% +{\hspace{\SOURCE\unitlength}\basicwmonO[\ARROWLENGTH]}}% + +% basic west epimorphism +\def\basicwepi[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WEPI}{\Z}}% + +% west epimorphism +\newcommand{\wepi}{\@ifnextchar[{\basicwepi}% +{\hspace{\SOURCE\unitlength}\basicwepi[\ARROWLENGTH]}}% + +% basic west epimorphism with upper name +\def\basicWepi[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WEPI}{#2}{\Z}}% + +% west epimorphism with upper name +\newcommand{\Wepi}{\@ifnextchar[{\basicWepi}% +{\hspace{\SOURCE\unitlength}\basicWepi[\ARROWLENGTH]}}% + +% basic west epimorphism with lower name +\def\basicwepI[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WEPI}{#2}{\Z}}% + +% west epimorphism with lower name +\newcommand{\wepI}{\@ifnextchar[{\basicwepI}% +{\hspace{\SOURCE\unitlength}\basicwepI[\ARROWLENGTH]}}% + +% basic west bimorphism +\def\basicwbimo[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WBIMO}{\Z}}% + +% west bimorphism +\newcommand{\wbimo}{\@ifnextchar[{\basicwbimo}% +{\hspace{\SOURCE\unitlength}\basicwbimo[\ARROWLENGTH]}}% + +% basic west bimorphism with upper name +\def\basicWbimo[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WBIMO}{#2}{\Z}}% + +% west bimorphism with upper name +\newcommand{\Wbimo}{\@ifnextchar[{\basicWbimo}% +{\hspace{\SOURCE\unitlength}\basicWbimo[\ARROWLENGTH]}}% + +% basic west bimorphism with lower name +\def\basicwbimO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WBIMO}{#2}{\Z}}% + +% west bimorphism with lower name +\newcommand{\wbimO}{\@ifnextchar[{\basicwbimO}% +{\hspace{\SOURCE\unitlength}\basicwbimO[\ARROWLENGTH]}}% + +% basic west isomorphism +\def\basicwiso[#1]{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{\cong}{}{\Z}}% + +% west isomorphism +\newcommand{\wiso}{\@ifnextchar[{\basicwiso}% +{\hspace{\SOURCE\unitlength}\basicwiso[\ARROWLENGTH]}}% + +% basic west isomorphism with upper name +\def\basicWiso[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{#2}{\cong}{\Z}}% + +% west isomorphism with upper name +\newcommand{\Wiso}{\@ifnextchar[{\basicWiso}% +{\hspace{\SOURCE\unitlength}\basicWiso[\ARROWLENGTH]}}% + +% basic west isomorphism with lower name +\def\basicwisO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{\cong}{#2}{\Z}}% + +% west isomorphism with lower name +\newcommand{\wisO}{\@ifnextchar[{\basicwisO}% +{\hspace{\SOURCE\unitlength}\basicwisO[\ARROWLENGTH]}}% + +% west equality +\let\weql=\eeql% + +% west equality with upper name +\let\Weql=\Eeql% + +% west equality with lower name +\let\weqL=\eeqL% + +% 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 distributors +\def\basicwbidist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WBIDIST}{\Z}}% + +% pair of west distributors +\newcommand{\wbidist}{\@ifnextchar[{\basicwbidist}% +{\hspace{\SOURCE\unitlength}\basicwbidist[\ARROWLENGTH]}}% + +% basic pair of west distributors with names +\def\basicWbidist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of west distributors with names +\newcommand{\Wbidist}{\@ifnextchar[{\basicWbidist}% +{\hspace{\SOURCE\unitlength}\basicWbidist[\ARROWLENGTH]}}% +\let\wbidisT=\Wbidist + +% 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 + +% basic pair of west adjoint distributors +\def\basicwadjdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WADJDIST}{\Z}}% + +% pair of west adjoint distributors +\newcommand{\wadjdist}{\@ifnextchar[{\basicwadjdist}% +{\hspace{\SOURCE\unitlength}\basicwadjdist[\ARROWLENGTH]}}% + +% basic pair of west adjoint distributors with names +\def\basicWadjdist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of west adjoint distributors with names +\newcommand{\Wadjdist}{\@ifnextchar[{\basicWadjdist}% +{\hspace{\SOURCE\unitlength}\basicWadjdist[\ARROWLENGTH]}}% +\let\wadjdisT=\Wadjdist + + +% 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$}}}}% + +% \Visocase{P}{f}{g}{n} draws the vertical picture P +% with names f, g and length n units. +\newcommand{\Visocase}[4]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{2pt}}}#1{#4}% +\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#3$}}}}% + +% \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){\line(0,-1){#1}}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SDIST{n} draws a south distributor of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SDIST}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\line(0,-1){#1}}% +\put(0,0){\shead}% +\end{picture}}}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \SDOTAR{n} draws a south dotted arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\multiput(0,#1)(0,-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SMONO{n} draws a south monomorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\monolength){\line(0,-1){\monolength}}% +\put(0,\monolength){\shead}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + + +% \SEPI{n} draws a south epimorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\line(0,-1){\epilength}}% +\put(0,\trueepihead){\shead}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SBIMO{n} draws a south bimorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIMO}[1]% +{\truehead\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\monolength){\line(0,-1){\epilength}}% +\put(0,\monolength){\shead}% +\put(0,\trueepihead){\shead}% +\put(0,0){\shead}% +\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){\line(0,-1){#1}}% +\put(-\value{x},0){\shead}% +\put(\value{x},#1){\line(0,-1){#1}}% +\put(\value{x},0){\shead}% +\end{picture}}}\end{picture}}% + +% \SBIDIST{n} draws a pair of south distributors of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIDIST}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}}% +\truey{400}% +\put(-\value{x},0){\circle{\value{y}}}% +\put(\value{x},0){\circle{\value{y}}}% +\end{picture}}% + +% \SEQL{n} draws a vertical equality of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SEQL}[1]% +{\begin{picture}(0,0)% +\truex{100}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)\put(-\value{x},#1){\line(0,-1){#1}}% +\put(\value{x},#1){\line(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){\line(0,-1){#1}}% +\put(-\value{x},0){\shead}% +\put(\value{x},0){\line(0,1){#1}}% +\put(\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \SADJDIST{n} draws a pair of vertical adjoint distributors of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SADJDIST}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}}% +\truey{400}% +\put(-\value{x},0){\circle{\value{y}}}% +\put(\value{x},0){\circle{\value{y}}}% +\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 south distributor +\def\basicsdist[#1]{\vcase{\SDIST}{#100}}% + +% south distributor +\newcommand{\sdist}{\@ifnextchar[{\basicsdist}{\basicsdist[50]}}% + +% basic south distributor with left name +\def\basicSdist[#1]#2{\Vcase{\SDIST}{#2\hspace*{2pt}}{#100}}% + +% south distributor with left name +\newcommand{\Sdist}{\@ifnextchar[{\basicSdist}{\basicSdist[50]}}% + +% basic south distributor with right name +\def\basicsdisT[#1]#2{\vcasE{\SDIST}{\hspace*{2pt}#2}{#100}}% + +% south distributor with right name +\newcommand{\sdisT}{\@ifnextchar[{\basicsdisT}{\basicsdisT[50]}}% + +% basic south dotted arrow +\def\basicsdotar[#1]{\vcase{\SDOTAR}{#100}}% + +% south dotted arrow +\newcommand{\sdotar}{\@ifnextchar[{\basicsdotar}{\basicsdotar[50]}}% + +% basic south dotted arrow with left name +\def\basicSdotar[#1]#2{\Vcase{\SDOTAR}{#2}{#100}}% + +% south dotted arrow with left name +\newcommand{\Sdotar}{\@ifnextchar[{\basicSdotar}{\basicSdotar[50]}}% + +% basic south dotted arrow with right name +\def\basicsdotaR[#1]#2{\vcasE{\SDOTAR}{#2}{#100}}% + +% south dotted arrow with right name +\newcommand{\sdotaR}{\@ifnextchar[{\basicsdotaR}{\basicsdotaR[50]}}% + +% basic south monomorphism +\def\basicsmono[#1]{\vcase{\SMONO}{#100}}% + +% south arrow +\newcommand{\smono}{\@ifnextchar[{\basicsmono}{\basicsmono[50]}}% + +% basic south monomorphism with left name +\def\basicSmono[#1]#2{\Vcase{\SMONO}{#2}{#100}}% + +% south monomorphism with left name +\newcommand{\Smono}{\@ifnextchar[{\basicSmono}{\basicSmono[50]}}% + +% basic south monomorphism with right name +\def\basicsmonO[#1]#2{\vcasE{\SMONO}{#2}{#100}}% + +% south monomorphism with right name +\newcommand{\smonO}{\@ifnextchar[{\basicsmonO}{\basicsmonO[50]}}% + +% basic south epimorphism +\def\basicsepi[#1]{\vcase{\SEPI}{#100}}% + +% south epimorphism +\newcommand{\sepi}{\@ifnextchar[{\basicsepi}{\basicsepi[50]}}% + +% basic south epimorphism with left name +\def\basicSepi[#1]#2{\Vcase{\SEPI}{#2}{#100}}% + +% south epimorphism with left name +\newcommand{\Sepi}{\@ifnextchar[{\basicSepi}{\basicSepi[50]}}% + +% basic south epimorphism with right name +\def\basicsepI[#1]#2{\vcasE{\SEPI}{#2}{#100}}% + +% south epimorphism with right name +\newcommand{\sepI}{\@ifnextchar[{\basicsepI}{\basicsepI[50]}}% + +% basic south bimorphism +\def\basicsbimo[#1]{\vcase{\SBIMO}{#100}}% + +% south bimorphism +\newcommand{\sbimo}{\@ifnextchar[{\basicsbimo}{\basicsbimo[50]}}% + +% basic south bimorphism with left name +\def\basicSbimo[#1]#2{\Vcase{\SBIMO}{#2}{#100}}% + +% south bimorphism with left name +\newcommand{\Sbimo}{\@ifnextchar[{\basicSbimo}{\basicSbimo[50]}}% + +% basic south bimorphism with right name +\def\basicsbimO[#1]#2{\vcasE{\SBIMO}{#2}{#100}}% + +% south bimorphism with right name +\newcommand{\sbimO}{\@ifnextchar[{\basicsbimO}{\basicsbimO[50]}}% + +% basic south isomorphism +\def\basicsiso[#1]{\Visocase{\SAR}{\cong}{}{#100}}% + +% south isomorphism +\newcommand{\siso}{\@ifnextchar[{\basicsiso}{\basicsiso[50]}}% + +% basic south isomorphism with left name +\def\basicSiso[#1]#2{\Visocase{\SAR}{#2}{\cong}{#100}}% + +% south isomorphism with left name +\newcommand{\Siso}{\@ifnextchar[{\basicSiso}{\basicSiso[50]}}% + +% basic south isomorphism with right name +\def\basicsisO[#1]#2{\Visocase{\SAR}{\cong}{#2}{#100}}% + +% south isomorphism with right name +\newcommand{\sisO}{\@ifnextchar[{\basicsisO}{\basicsisO[50]}}% + +% basic south equality +\def\basicseql[#1]{\vcase{\SEQL}{#100}}% + +% south equality +\newcommand{\seql}{\@ifnextchar[{\basicseql}{\basicseql[50]}}% + +% basic south equality with left name +\def\basicSeql[#1]#2{\Vcase{\SEQL}{#2\hspace*{2pt}}{#100}}% + +% south equality with left name +\newcommand{\Seql}{\@ifnextchar[{\basicSeql}{\basicSeql[50]}}% + +% basic south equality with right name +\def\basicseqL[#1]#2{\vcasE{\SEQL}{\hspace*{2pt}#2}{#100}}% + +% south equality with right name +\newcommand{\seqL}{\@ifnextchar[{\basicseqL}{\basicseqL[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 distributors +\def\basicsbidist[#1]{\vbicase{\SBIDIST}{#100}}% + +% pair of south distributors +\newcommand{\sbidist}{\@ifnextchar[{\basicsbidist}{\basicsbidist[50]}}% + +% basic pair of south distributors with names +\def\basicSbidist[#1]#2#3% +{\Vbicase{\SBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of south distributors with names +\newcommand{\Sbidist}{\@ifnextchar[{\basicSbidist}{\basicSbidist[50]}}% +\let\sbidisT=\Sbidist + +% 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 + +% basic pair of south adjoint distributors +\def\basicsadjdist[#1]{\vbicase{\SADJDIST}{#100}}% + +% pair of south adjoint distributors +\newcommand{\sadjdist}{\@ifnextchar[{\basicsadjdist}{\basicsadjdist[50]}}% + +% basic pair of south adjoint distributors with names +\def\basicSadjdist[#1]#2#3% +{\Vbicase{\SADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of south adjoint distributors with names +\newcommand{\Sadjdist}{\@ifnextchar[{\basicSadjdist}{\basicSadjdist[50]}}% +\let\sadjdisT=\Sadjdist + + +% 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){\line(0,1){#1}}% +\put(0,#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NDIST{n} draws a north distributor of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NDIST}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\line(0,1){#1}}% +\put(0,#1){\nhead}% +\end{picture}}} +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \NDOTAR{n} draws a north dotted arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\multiput(0,0)(0,\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,#1){\nhead}% +\end{picture}}}\end{picture}}% + + +% \NMONO{n} draws a north monomorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\truemonotail){\line(0,1){\monolength}}% +\put(0,#1){\nhead}% +\put(0,\truemonotail){\nhead}% +\end{picture}}}\end{picture}}% + +% \NEPI{n} draws a north epimorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\line(0,1){\epilength}}% +\put(0,#1){\nhead}% +\put(0,\epilength){\nhead}% +\end{picture}}}\end{picture}}% + +% \NBIMO{n} draws a north bimorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIMO}[1]% +{\truehead\truetail% +\epilength=#1% +\advance\epilength by -\trueepihead% +\monolength=\epilength% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\truemonotail){\line(0,1){\monolength}}% +\put(0,#1){\nhead}% +\put(0,\truemonotail){\nhead}% +\put(0,\epilength){\nhead}% +\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){\line(0,1){#1}}% +\put(-\value{x},#1){\nhead}% +\put(\value{x},0){\line(0,1){#1}}% +\put(\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NBIDIST{n} draws a pair of north distributors of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIDIST}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}} +\truey{400}% +\put(-\value{x},0){\circle{\value{y}}}% +\put(\value{x},0){\circle{\value{y}}}% +\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){\line(0,-1){#1}}% +\put(\value{x},0){\shead}% +\put(-\value{x},0){\line(0,1){#1}}% +\put(-\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NADJDIST{n} draws a pair of vertical adjoint distributors of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NADJDIST}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}} +\truey{400}% +\put(-\value{x},0){\circle{\value{y}}}% +\put(\value{x},0){\circle{\value{y}}}% +\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 north distributor +\def\basicndist[#1]{\vcase{\NDIST}{#100}}% + +% north distributor +\newcommand{\ndist}{\@ifnextchar[{\basicndist}{\basicndist[50]}}% + +% basic north distributor with left name +\def\basicNdist[#1]#2{\Vcase{\NDIST}{#2\hspace*{2pt}}{#100}}% + +% north distributor with left name +\newcommand{\Ndist}{\@ifnextchar[{\basicNdist}{\basicNdist[50]}}% + +% basic north distributor with right name +\def\basicndisT[#1]#2{\vcasE{\NDIST}{\hspace*{2pt}#2}{#100}}% + +% north distributor with right name +\newcommand{\ndisT}{\@ifnextchar[{\basicndisT}{\basicndisT[50]}}% + +% basic north dotted arrow +\def\basicndotar[#1]{\vcase{\NDOTAR}{#100}}% + +% north dotted arrow +\newcommand{\ndotar}{\@ifnextchar[{\basicndotar}{\basicndotar[50]}}% + +% basic north dotted arrow with left name +\def\basicNdotar[#1]#2{\Vcase{\NDOTAR}{#2}{#100}}% + +% north dotted arrow with left name +\newcommand{\Ndotar}{\@ifnextchar[{\basicNdotar}{\basicNdotar[50]}}% + +% basic north dotted arrow with right name +\def\basicndotaR[#1]#2{\vcasE{\NDOTAR}{#2}{#100}}% + +% north dotted arrow with right name +\newcommand{\ndotaR}{\@ifnextchar[{\basicndotaR}{\basicndotaR[50]}}% + +% basic north monomorphism +\def\basicnmono[#1]{\vcase{\NMONO}{#100}}% + +% north arrow +\newcommand{\nmono}{\@ifnextchar[{\basicnmono}% +{\basicnmono[50]}}% + +% basic north monomorphism with left name +\def\basicNmono[#1]#2{\Vcase{\NMONO}{#2}{#100}}% + +% north monomorphism with left name +\newcommand{\Nmono}{\@ifnextchar[{\basicNmono}{\basicNmono[50]}}% + +% basic north monomorphism with right name +\def\basicnmonO[#1]#2{\vcasE{\NMONO}{#2}{#100}}% + +% north monomorphism with right name +\newcommand{\nmonO}{\@ifnextchar[{\basicnmonO}{\basicnmonO[50]}}% + +% basic north epimorphism +\def\basicnepi[#1]{\vcase{\NEPI}{#100}}% + +% north epimorphism +\newcommand{\nepi}{\@ifnextchar[{\basicnepi}{\basicnepi[50]}}% + +% basic north epimorphism with left name +\def\basicNepi[#1]#2{\Vcase{\NEPI}{#2}{#100}}% + +% north epimorphism with left name +\newcommand{\Nepi}{\@ifnextchar[{\basicNepi}{\basicNepi[50]}}% + +% basic north epimorphism with right name +\def\basicnepI[#1]#2{\vcasE{\NEPI}{#2}{#100}}% + +% north epimorphism with right name +\newcommand{\nepI}{\@ifnextchar[{\basicnepI}{\basicnepI[50]}}% + +% basic north bimorphism +\def\basicnbimo[#1]{\vcase{\NBIMO}{#100}}% + +% north bimorphism +\newcommand{\nbimo}{\@ifnextchar[{\basicnbimo}{\basicnbimo[50]}}% + +% basic north bimorphism with left name +\def\basicNbimo[#1]#2{\Vcase{\NBIMO}{#2}{#100}}% + +% north bimorphism with left name +\newcommand{\Nbimo}{\@ifnextchar[{\basicNbimo}{\basicNbimo[50]}}% + +% basic north bimorphism with right name +\def\basicnbimO[#1]#2{\vcasE{\NBIMO}{#2}{#100}}% + +% north bimorphism with right name +\newcommand{\nbimO}{\@ifnextchar[{\basicnbimO}{\basicnbimO[50]}}% + +% basic north isomorphism +\def\basicniso[#1]{\Visocase{\NAR}{\cong}{}{#100}}% + +% north isomorphism +\newcommand{\niso}{\@ifnextchar[{\basicniso}{\basicniso[50]}}% + +% basic north isomorphism with left name +\def\basicNiso[#1]#2{\Visocase{\NAR}{#2}{\cong}{#100}}% + +% north isomorphism with left name +\newcommand{\Niso}{\@ifnextchar[{\basicNiso}{\basicNiso[50]}}% + +% basic north isomorphism with right name +\def\basicnisO[#1]#2{\Visocase{\NAR}{\cong}{#2}{#100}}% + +% north isomorphism with right name +\newcommand{\nisO}{\@ifnextchar[{\basicnisO}{\basicnisO[50]}}% + +% north equality +\let\neql=\seql% + +% north equality with left name +\let\Neql=\Seql% + +% north equality with right name +\let\neqL=\seqL% + +% 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 distributors +\def\basicnbidist[#1]{\vbicase{\NBIDIST}{#100}}% + +% pair of north distributors +\newcommand{\nbidist}{\@ifnextchar[{\basicnbidist}{\basicnbidist[50]}}% + +% basic pair of north distributors with names +\def\basicNbidist[#1]#2#3% +{\Vbicase{\NBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of north distributors with names +\newcommand{\Nbidist}{\@ifnextchar[{\basicNbidist}{\basicNbidist[50]}}% +\let\nbidisT=\Nbidist + +% 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 + +% basic pair of north adjoint distributors +\def\basicnadjdist[#1]{\vbicase{\NADJDIST}{#100}}% + +% pair of north adjoint distributors +\newcommand{\nadjdist}{\@ifnextchar[{\basicnadjdist}{\basicnadjdist[50]}}% + +% basic pair of north adjoint distributors with names +\def\basicNadjdist[#1]#2#3% +{\Vbicase{\NADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of north adjoint distributors with names +\newcommand{\Nadjdist}{\@ifnextchar[{\basicNadjdist}{\basicNadjdist[50]}}% +\let\nadjdisT=\Nadjdist + + + +% 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){\line(1,1){#1}}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEDIST{n} draws a north-east distributor of length n units +\newcommand{\NEDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\line(1,1){#1}}% +\put(\Y,\Y){\nehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \NEDOTAR{n} draws a north-east dotted arrow of length n units +\newcommand{\NEDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,-\Y)(\value{y},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEMONO{n} draws a north-east monomorphism of length n units +\newcommand{\NEMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(-\monolength,-\monolength){\line(1,1){\bimolength}}% +\put(-\monolength,-\monolength){\nehead}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEEPI{n} draws a north-east epimorphism of length n units +\newcommand{\NEEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\line(1,1){\bimolength}}% +\put(\epilength,\epilength){\nehead}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEBIMO{n} draws a north-east bimorphism of length n units +\newcommand{\NEBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(-\monolength,-\monolength){\line(1,1){\bimolength}}% +\put(-\monolength,-\monolength){\nehead}% +\put(\epilength,\epilength){\nehead}% +\put(\Y,\Y){\nehead}% +\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}){\line(1,1){#1}}% +\put(\value{x},-\value{x}){\line(1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\monolength,\epilength){\nehead}% +\put(\epilength,\monolength){\nehead}% +\end{picture}}\end{picture}}% + +% \NEBIDIST{n} draws a pair of north-east distributors of length n units +\newcommand{\NEBIDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\end{picture}}% +\put(-\value{x},\value{x}){\circle{\value{y}}}% +\put(\value{x},-\value{x}){\circle{\value{y}}}% +\end{picture}}% + +% \NEEQL{n} draws a north-east equality of length n units +\newcommand{\NEEQL}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{70}% +\put(-\value{x},\value{x}){\line(1,1){#1}}% +\put(\value{x},-\value{x}){\line(1,1){#1}}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}\end{picture}}% + +% \NEADJDIST{n} draws a north-east pair of adjoint distributors of length n units +\newcommand{\NEADJDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}% +\put(-\value{x},\value{x}){\circle{\value{y}}}% +\put(\value{x},-\value{x}){\circle{\value{y}}}% +\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]}}% + +% north-east distributor of length nx100 units +\def\basicnedist[#1]{\fdcase{\NEDIST}{}{}{#100}}% + +% north-east distributor +\newcommand{\nedist}{\@ifnextchar[{\basicnedist}{\basicnedist[59]}}% + +% north-east distributor with upper name [1] and length nx100 units +\def\basicNedist[#1]#2{\fdcase{\NEDIST}{#2}{}{#100}}% + +% north-east distributor with upper name +\newcommand{\Nedist}{\@ifnextchar[{\basicNedist}{\basicNedist[59]}}% + +% north-east distributor with lower name [1] and length nx100 units +\def\basicnedisT[#1]#2{\fdcase{\NEDIST}{}{#2}{#100}}% + +% north-east distributor with lower name [1] +\newcommand{\nedisT}{\@ifnextchar[{\basicnedisT}{\basicnedisT[59]}}% + +% north-east dotted arrow of length nx100 units +\def\basicnedotar[#1]{\fdcase{\NEDOTAR}{}{}{#100}}% + +% north-east dotted arrow +\newcommand{\nedotar}{\@ifnextchar[{\basicnedotar}{\basicnedotar[59]}}% + +% north-east dotted arrow with upper name [1] and length nx100 units +\def\basicNedotar[#1]#2{\fdcase{\NEDOTAR}{#2}{}{#100}}% + +% north-east dotted arrow with upper name +\newcommand{\Nedotar}{\@ifnextchar[{\basicNedotar}{\basicNedotar[59]}}% + +% north-east dotted arrow with lower name [1] and length nx100 units +\def\basicnedotaR[#1]#2{\fdcase{\NEDOTAR}{}{#2}{#100}}% + +% north-east dotted arrow with lower name [1] +\newcommand{\nedotaR}{\@ifnextchar[{\basicnedotaR}{\basicnedotaR[59]}}% + +% north-east monomorphism of length nx100 units +\def\basicnemono[#1]{\fdcase{\NEMONO}{}{}{#100}}% + +% north-east monomorphism +\newcommand{\nemono}{\@ifnextchar[{\basicnemono}{\basicnemono[59]}}% + +% north-east monomorphism with upper name [1] and length nx100 units +\def\basicNemono[#1]#2{\fdcase{\NEMONO}{#2}{}{#100}}% + +% north-east monomophism with upper name +\newcommand{\Nemono}{\@ifnextchar[{\basicNemono}{\basicNemono[59]}}% + +% north-east monomorphism with lower name [1] and length nx100 units +\def\basicnemonO[#1]#2{\fdcase{\NEMONO}{}{#2}{#100}}% + +% north-east monomorphism with lower name [1] +\newcommand{\nemonO}{\@ifnextchar[{\basicnemonO}{\basicnemonO[59]}}% + +% north-east epimorphism of length nx100 units +\def\basicneepi[#1]{\fdcase{\NEEPI}{}{}{#100}}% + +% north-east epimorphism +\newcommand{\neepi}{\@ifnextchar[{\basicneepi}{\basicneepi[59]}}% + +% north-east epimorphism with upper name [1] and length nx100 units +\def\basicNeepi[#1]#2{\fdcase{\NEEPI}{#2}{}{#100}}% + +% north-east epimorphism with upper name +\newcommand{\Neepi}{\@ifnextchar[{\basicNeepi}{\basicNeepi[59]}}% + +% north-east epimorphism with lower name [1] and length nx100 units +\def\basicneepI[#1]#2{\fdcase{\NEEPI}{}{#2}{#100}}% + +% north-east epimorphism with lower name [1] +\newcommand{\neepI}{\@ifnextchar[{\basicneepI}{\basicneepI[59]}}% + +% north-east bimorphism of length nx100 units +\def\basicnebimo[#1]{\fdcase{\NEBIMO}{}{}{#100}}% + +% north-east bimorphism +\newcommand{\nebimo}{\@ifnextchar[{\basicnebimo}{\basicnebimo[59]}}% + +% north-east bimorphism with upper name [1] and length nx100 units +\def\basicNebimo[#1]#2{\fdcase{\NEBIMO}{#2}{}{#100}}% + +% north-east bimorphism with upper name +\newcommand{\Nebimo}{\@ifnextchar[{\basicNebimo}{\basicNebimo[59]}}% + +% north-east bimorphism with lower name [1] and length nx100 units +\def\basicnebimO[#1]#2{\fdcase{\NEBIMO}{}{#2}{#100}}% + +% north-east bimorphism with lower name [1] +\newcommand{\nebimO}{\@ifnextchar[{\basicnebimO}{\basicnebimO[59]}}% + +% north-east isomorphism of length nx100 units +\def\basicneiso[#1]{\fdcase{\NEAR}{\hspace{-2pt}\cong}{}{#100}}% + +% north-east isomorphism +\newcommand{\neiso}{\@ifnextchar[{\basicneiso}{\basicneiso[59]}}% + +% north-east isomorphism with upper name [1] and length nx100 units +\def\basicNeiso[#1]#2{\fdcase{\NEAR}{#2}{\cong}{#100}}% + +% north-east isomorphism with upper name +\newcommand{\Neiso}{\@ifnextchar[{\basicNeiso}{\basicNeiso[59]}}% + +% north-east isomorphism with lower name [1] and length nx100 units +\def\basicneisO[#1]#2{\fdcase{\NEAR}{\hspace{-2pt}\cong}{#2}{#100}}% + +% north-east isomorphism with lower name [1] +\newcommand{\neisO}{\@ifnextchar[{\basicneisO}{\basicneisO[59]}}% + +% north-east equality of length nx100 units +\def\basicneeql[#1]{\fdcase{\NEEQL}{}{}{#100}}% + +% north-east equality +\newcommand{\neeql}{\@ifnextchar[{\basicneeql}{\basicneeql[59]}}% + +% north-east equality with upper name [1] and length nx100 units +\def\basicNeeql[#1]#2{\fdcase{\NEEQL}{#2}{}{#100}}% + +% north-east equality with upper name +\newcommand{\Neeql}{\@ifnextchar[{\basicNeeql}{\basicNeeql[59]}}% + +% north-east equality with lower name [1] and length nx100 units +\def\basicneeqL[#1]#2{\fdcase{\NEEQL}{}{#2}{#100}}% + +% north-east equality with lower name [1] +\newcommand{\neeqL}{\@ifnextchar[{\basicneeqL}{\basicneeqL[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 + +% pair of north-east distributors of length nx100 units +\def\basicnebidist[#1]{\fdbicase{\NEBIDIST}{}{}{#100}}% + +% pair of north-east distributors +\newcommand{\nebidist}{\@ifnextchar[{\basicnebidist}{\basicnebidist[59]}}% + +% pair of north-east distributors with names [1][2] and length nx100 units +\def\basicNebidist[#1]#2#3{\fdbicase{\NEBIDIST}{#2}{#3}{#100}}% + +% pair of north-east distributors with names +\newcommand{\Nebidist}{\@ifnextchar[{\basicNebidist}{\basicNebidist[59]}}% +\let\nebidisT=\Nebidist + +% pair of north-east adjoint distributors of length nx100 units +\def\basicneadjdist[#1]{\fdbicase{\NEADJDIST}{}{}{#100}}% + +% pair of north-east adjoint distributors +\newcommand{\neadjdist}{\@ifnextchar[{\basicneadjdist}{\basicneadjdist[59]}}% + +% pair of north-east adjoint distributors with names [1][2] and length nx100 units +\def\basicNeadjdist[#1]#2#3{\fdbicase{\NEADJDIST}{#2}{#3}{#100}}% + +% pair of north-east adjoint distributors with names +\newcommand{\Neadjdist}{\@ifnextchar[{\basicNeadjdist}{\basicNeadjdist[59]}}% +\let\neadjdisT=\Neadjdist + + + +% 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){\line(-1,-1){#1}}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWDIST{n} draws a south-west distributor of length n units +\newcommand{\SWDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\line(-1,-1){#1}}% +\put(-\Y,-\Y){\swhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \SWDOTAR{n} draws a south-west dotted arrow of length n units +\newcommand{\SWDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,\Y)(-\value{y},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWMONO{n} draws a south-west monomorphism of length n units +\newcommand{\SWMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(\monolength,\monolength){\line(-1,-1){\bimolength}}% +\put(\monolength,\monolength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWEPI{n} draws a south-west epimorphism of length n units +\newcommand{\SWEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(\Y,\Y){\line(-1,-1){\bimolength}}% +\put(-\epilength,-\epilength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWBIMO{n} draws a south-west bimorphism of length n units +\newcommand{\SWBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(\monolength,\monolength){\line(-1,-1){\bimolength}}% +\put(\monolength,\monolength){\swhead}% +\put(-\epilength,-\epilength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\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}){\line(-1,-1){#1}}% +\put(-\value{x},\value{x}){\line(-1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\monolength,-\epilength){\swhead}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}\end{picture}}% + +% \SWBIDIST{n} draws a pair of south-west distributors of length n units +\newcommand{\SWBIDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}% +\put(\value{x},-\value{x}){\circle{\value{y}}}% +\put(-\value{x},\value{x}){\circle{\value{y}}}% +\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}){\line(-1,-1){#1}}% +\put(-\monolength,-\epilength){\swhead}% +\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}){\line(1,1){#1}}% +\put(\monolength,\epilength){\nehead}% +\end{picture}}\end{picture}}% + +% \SWADJDIST{n} draws a south-west pair of adjoint distributors of length n units +\newcommand{\SWADJDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(-1,-1){#1}}% +\put(-\monolength,-\epilength){\swhead}% +\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}){\line(1,1){#1}}% +\put(\monolength,\epilength){\nehead}% +\end{picture}}% +\put(-\value{x},\value{x}){\circle{\value{y}}}% +\put(\value{x},-\value{x}){\circle{\value{y}}}% +\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]}}% + +% south-west distributor of length nx100 units +\def\basicswdist[#1]{\fdcase{\SWDIST}{}{}{#100}}% + +% south-west distributor +\newcommand{\swdist}{\@ifnextchar[{\basicswdist}{\basicswdist[59]}}% + +% south-west distributor with upper name [1] and length nx100 units +\def\basicSwdist[#1]#2{\fdcase{\SWDIST}{#2}{}{#100}}% + +% south-west distributor with upper name +\newcommand{\Swdist}{\@ifnextchar[{\basicSwdist}{\basicSwdist[59]}}% + +% south-west distributor with lower name [1] and length nx100 units +\def\basicswdisT[#1]#2{\fdcase{\SWDIST}{}{#2}{#100}}% + +% south-west distributor with lower name [1] +\newcommand{\swdisT}{\@ifnextchar[{\basicswdisT}{\basicswdisT[59]}}% + +% south-west dotted arrow of length nx100 units +\def\basicswdotar[#1]{\fdcase{\SWDOTAR}{}{}{#100}}% + +% south-west dotted arrow +\newcommand{\swdotar}{\@ifnextchar[{\basicswdotar}{\basicswdotar[59]}}% + +% south-west dotted arrow with upper name [1] and length nx100 units +\def\basicSwdotar[#1]#2{\fdcase{\SWDOTAR}{#2}{}{#100}}% + +% south-west dotted arrow with upper name +\newcommand{\Swdotar}{\@ifnextchar[{\basicSwdotar}{\basicSwdotar[59]}}% + +% south-west dotted arrow with lower name [1] and length nx100 units +\def\basicswdotaR[#1]#2{\fdcase{\SWDOTAR}{}{#2}{#100}}% + +% south-west dotted arrow with lower name [1] +\newcommand{\swdotaR}{\@ifnextchar[{\basicswdotaR}{\basicswdotaR[59]}}% + +% south-west monomorphism of length nx100 units +\def\basicswmono[#1]{\fdcase{\SWMONO}{}{}{#100}}% + +% south-west monomorphism +\newcommand{\swmono}{\@ifnextchar[{\basicswmono}{\basicswmono[59]}}% + +% south-west monomorphism with upper name [1] and length nx100 units +\def\basicSwmono[#1]#2{\fdcase{\SWMONO}{#2}{}{#100}}% + +% south-west monomophism with upper name +\newcommand{\Swmono}{\@ifnextchar[{\basicSwmono}{\basicSwmono[59]}}% + +% south-west monomorphism with lower name [1] and length nx100 units +\def\basicswmonO[#1]#2{\fdcase{\SWMONO}{}{#2}{#100}}% + +% south-west monomorphism with lower name [1] +\newcommand{\swmonO}{\@ifnextchar[{\basicswmonO}{\basicswmonO[59]}}% + +% south-west epimorphism of length nx100 units +\def\basicswepi[#1]{\fdcase{\SWEPI}{}{}{#100}}% + +% south-west epimorphism +\newcommand{\swepi}{\@ifnextchar[{\basicswepi}{\basicswepi[59]}}% + +% south-west epimorphism with upper name [1] and length nx100 units +\def\basicSwepi[#1]#2{\fdcase{\SWEPI}{#2}{}{#100}}% + +% south-west epimorphism with upper name +\newcommand{\Swepi}{\@ifnextchar[{\basicSwepi}{\basicSwepi[59]}}% + +% south-west epimorphism with lower name [1] and length nx100 units +\def\basicswepI[#1]#2{\fdcase{\SWEPI}{}{#2}{#100}}% + +% south-west epimorphism with lower name [1] +\newcommand{\swepI}{\@ifnextchar[{\basicswepI}{\basicswepI[59]}}% + +% south-west bimorphism of length nx100 units +\def\basicswbimo[#1]{\fdcase{\SWBIMO}{}{}{#100}}% + +% south-west bimorphism +\newcommand{\swbimo}{\@ifnextchar[{\basicswbimo}{\basicswbimo[59]}}% + +% south-west bimorphism with upper name [1] and length nx100 units +\def\basicSwbimo[#1]#2{\fdcase{\SWBIMO}{#2}{}{#100}}% + +% south-west bimorphism with upper name +\newcommand{\Swbimo}{\@ifnextchar[{\basicSwbimo}{\basicSwbimo[59]}}% + +% south-west bimorphism with lower name [1] and length nx100 units +\def\basicswbimO[#1]#2{\fdcase{\SWBIMO}{}{#2}{#100}}% + +% south-west bimorphism with lower name [1] +\newcommand{\swbimO}{\@ifnextchar[{\basicswbimO}{\basicswbimO[59]}}% + +% south-west isomorphism of length nx100 units +\def\basicswiso[#1]{\fdcase{\SWAR}{\hspace{-2pt}\cong}{}{#100}}% + +% south-west isomorphism +\newcommand{\swiso}{\@ifnextchar[{\basicswiso}{\basicswiso[59]}}% + +% south-west isomorphism with upper name [1] and length nx100 units +\def\basicSwiso[#1]#2{\fdcase{\SWAR}{#2}{\cong}{#100}}% + +% south-west isomorphism with upper name +\newcommand{\Swiso}{\@ifnextchar[{\basicSwiso}{\basicSwiso[59]}}% + +% south-west isomorphism with lower name [1] and length nx100 units +\def\basicswisO[#1]#2{\fdcase{\SWAR}{\hspace{-2pt}\cong}{#2}{#100}}% + +% south-west isomorphism with lower name [1] +\newcommand{\swisO}{\@ifnextchar[{\basicswisO}{\basicswisO[59]}}% + +% south-west equality +\let\sweql\neeql% + +% south-west equality with upper name [1] +\let\Sweql=\Neeql% + +% south-west equality with lower name [1] +\let\sweqL=\neeqL% + +% 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 + +% pair of south-west distributors of length nx100 units +\def\basicswbidist[#1]{\fdbicase{\SWBIDIST}{}{}{#100}}% + +% pair of south-west distributors +\newcommand{\swbidist}{\@ifnextchar[{\basicswbidist}{\basicswbidist[59]}}% + +% pair of south-west distributors with names [1][2] and length nx100 units +\def\basicSwbidist[#1]#2#3{\fdbicase{\SWBIDIST}{#2}{#3}{#100}}% + +% pair of south-west distributors with names +\newcommand{\Swbidist}{\@ifnextchar[{\basicSwbidist}{\basicSwbidist[59]}}% +\let\swbidisT=\Swbidist + +% pair of south-west adjoint distributors of length nx100 units +\def\basicswadjdist[#1]{\fdbicase{\SWADJDIST}{}{}{#100}}% + +% pair of south-west adjoint distributors +\newcommand{\swadjdist}{\@ifnextchar[{\basicswadjdist}{\basicswadjdist[59]}}% + +% pair of south-west adjoint distributors with names [1][2] and length nx100 units +\def\basicSwadjdist[#1]#2#3{\fdbicase{\SWADJDIST}{#2}{#3}{#100}}% + +% pair of south-west adjoint distributors with names +\newcommand{\Swadjdist}{\@ifnextchar[{\basicSwadjdist}{\basicSwadjdist[59]}}% +\let\swadjdisT=\Swadjdist + + + +% 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){\line(1,-1){#1}}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEDIST{n} draws a south-east distributor of length n units +\newcommand{\SEDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\line(1,-1){#1}}% +\put(\Y,-\Y){\sehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \SEDOTAR{n} draws a south-east dotted arrow of length n units +\newcommand{\SEDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,\Y)(\value{y},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEMONO{n} draws a south-east monomorphism of length n units +\newcommand{\SEMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(-\monolength,\monolength){\line(1,-1){\bimolength}}% +\put(-\monolength,\monolength){\sehead}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEEPI{n} draws a south-east epimorphism of length n units +\newcommand{\SEEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(-\Y,\Y){\line(1,-1){\bimolength}}% +\put(\epilength,-\epilength){\sehead}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEBIMO{n} draws a south-east bimorphism of length n units +\newcommand{\SEBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(-\monolength,\monolength){\line(1,-1){\bimolength}}% +\put(-\monolength,\monolength){\sehead}% +\put(\epilength,-\epilength){\sehead}% +\put(\Y,-\Y){\sehead}% +\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}){\line(1,-1){#1}}% +\put(\value{x},\value{x}){\line(1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\monolength,-\epilength){\sehead}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}\end{picture}}% + +% \SEBIDIST{n} draws a pair of south-east distributors of length n units +\newcommand{\SEBIDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\circle{\value{y}}}% +\put(\value{x},\value{x}){\circle{\value{y}}}% +\end{picture}}% + +% \SEEQL{n} draws a south-east equality of length n units +\newcommand{\SEEQL}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{70}% +\put(-\value{x},-\value{x}){\line(1,-1){#1}}% +\put(\value{x},\value{x}){\line(1,-1){#1}}% +\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}){\line(1,-1){#1}}% +\put(\monolength,-\epilength){\sehead}% +\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}){\line(-1,1){#1}}% +\put(-\monolength,\epilength){\nwhead}% +\end{picture}}\end{picture}}% + +% \SEADJDIST{n} draws a south-east pair of adjoint distributors of length n units +\newcommand{\SEADJDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(1,-1){#1}}% +\put(\monolength,-\epilength){\sehead}% +\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}){\line(-1,1){#1}}% +\put(-\monolength,\epilength){\nwhead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\circle{\value{y}}}% +\put(\value{x},\value{x}){\circle{\value{y}}}% +\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]}}% + +% south-east distributor of length nx100 units +\def\basicsedist[#1]{\sdcase{\SEDIST}{}{}{#100}}% + +% south-east distributor +\newcommand{\sedist}{\@ifnextchar[{\basicsedist}{\basicsedist[59]}}% + +% south-east distributor with upper name [1] and length nx100 units +\def\basicSedist[#1]#2{\sdcase{\SEDIST}{#2}{}{#100}}% + +% south-east distributor with upper name +\newcommand{\Sedist}{\@ifnextchar[{\basicSedist}{\basicSedist[59]}}% + +% south-east distributor with lower name [1] and length nx100 units +\def\basicsedisT[#1]#2{\sdcase{\SEDIST}{}{#2}{#100}}% + +% south-east distributor with lower name [1] +\newcommand{\sedisT}{\@ifnextchar[{\basicsedisT}{\basicsedisT[59]}}% + +% south-east dotted arrow of length nx100 units +\def\basicsedotar[#1]{\sdcase{\SEDOTAR}{}{}{#100}}% + +% south-east dotted arrow +\newcommand{\sedotar}{\@ifnextchar[{\basicsedotar}{\basicsedotar[59]}}% + +% south-east dotted arrow with upper name [1] and length nx100 units +\def\basicSedotar[#1]#2{\sdcase{\SEDOTAR}{#2}{}{#100}}% + +% south-east dotted arrow with upper name +\newcommand{\Sedotar}{\@ifnextchar[{\basicSedotar}{\basicSedotar[59]}}% + +% south-east dotted arrow with lower name [1] and length nx100 units +\def\basicsedotaR[#1]#2{\sdcase{\SEDOTAR}{}{#2}{#100}}% + +% south-east dotted arrow with lower name [1] +\newcommand{\sedotaR}{\@ifnextchar[{\basicsedotaR}{\basicsedotaR[59]}}% + +% south-east monomorphism of length nx100 units +\def\basicsemono[#1]{\sdcase{\SEMONO}{}{}{#100}}% + +% south-east monomorphism +\newcommand{\semono}{\@ifnextchar[{\basicsemono}{\basicsemono[59]}}% + +% south-east monomorphism with upper name [1] and length nx100 units +\def\basicSemono[#1]#2{\sdcase{\SEMONO}{#2}{}{#100}}% + +% south-east monomophism with upper name +\newcommand{\Semono}{\@ifnextchar[{\basicSemono}{\basicSemono[59]}}% + +% south-east monomorphism with lower name [1] and length nx100 units +\def\basicsemonO[#1]#2{\sdcase{\SEMONO}{}{#2}{#100}}% + +% south-east monomorphism with lower name [1] +\newcommand{\semonO}{\@ifnextchar[{\basicsemonO}{\basicsemonO[59]}}% + +% south-east epimorphism of length nx100 units +\def\basicseepi[#1]{\sdcase{\SEEPI}{}{}{#100}}% + +% south-east epimorphism +\newcommand{\seepi}{\@ifnextchar[{\basicseepi}{\basicseepi[59]}}% + +% south-east epimorphism with upper name [1] and length nx100 units +\def\basicSeepi[#1]#2{\sdcase{\SEEPI}{#2}{}{#100}}% + +% south-east epimorphism with upper name +\newcommand{\Seepi}{\@ifnextchar[{\basicSeepi}{\basicSeepi[59]}}% + +% south-east epimorphism with lower name [1] and length nx100 units +\def\basicseepI[#1]#2{\sdcase{\SEEPI}{}{#2}{#100}}% + +% south-east epimorphism with lower name [1] +\newcommand{\seepI}{\@ifnextchar[{\basicseepI}{\basicseepI[59]}}% + +% south-east bimorphism of length nx100 units +\def\basicsebimo[#1]{\sdcase{\SEBIMO}{}{}{#100}}% + +% south-east bimorphism +\newcommand{\sebimo}{\@ifnextchar[{\basicsebimo}{\basicsebimo[59]}}% + +% south-east bimorphism with upper name [1] and length nx100 units +\def\basicSebimo[#1]#2{\sdcase{\SEBIMO}{#2}{}{#100}}% + +% south-east bimorphism with upper name +\newcommand{\Sebimo}{\@ifnextchar[{\basicSebimo}{\basicSebimo[59]}}% + +% south-east bimorphism with lower name [1] and length nx100 units +\def\basicsebimO[#1]#2{\sdcase{\SEBIMO}{}{#2}{#100}}% + +% south-east bimorphism with lower name [1] +\newcommand{\sebimO}{\@ifnextchar[{\basicsebimO}{\basicsebimO[59]}}% + +% south-east isomorphism of length nx100 units +\def\basicseiso[#1]{\sdcase{\SEAR}{\hspace{-2pt}\cong}{}{#100}}% + +% south-east isomorphism +\newcommand{\seiso}{\@ifnextchar[{\basicseiso}{\basicseiso[59]}}% + +% south-east isomorphism with upper name [1] and length nx100 units +\def\basicSeiso[#1]#2{\sdcase{\SEAR}{#2}{\cong}{#100}}% + +% south-east isomorphism with upper name +\newcommand{\Seiso}{\@ifnextchar[{\basicSeiso}{\basicSeiso[59]}}% + +% south-east isomorphism with lower name [1] and length nx100 units +\def\basicseisO[#1]#2{\sdcase{\SEAR}{\hspace{-2pt}\cong}{#2}{#100}}% + +% south-east isomorphism with lower name [1] +\newcommand{\seisO}{\@ifnextchar[{\basicseisO}{\basicseisO[59]}}% + +% south-east equality of length nx100 units +\def\basicseeql[#1]{\sdcase{\SEEQL}{}{}{#100}}% + +% south-east equality +\newcommand{\seeql}{\@ifnextchar[{\basicseeql}{\basicseeql[59]}}% + +% south-east equality with upper name [1] and length nx100 units +\def\basicSeeql[#1]#2{\sdcase{\SEEQL}{#2}{}{#100}}% + +% south-east equality with upper name +\newcommand{\Seeql}{\@ifnextchar[{\basicSeeql}{\basicSeeql[59]}}% + +% south-east equality with lower name [1] and length nx100 units +\def\basicseeqL[#1]#2{\sdcase{\SEEQL}{}{#2}{#100}}% + +% south-east equality with lower name [1] +\newcommand{\seeqL}{\@ifnextchar[{\basicseeqL}{\basicseeqL[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 + +% pair of south-east distributors of length nx100 units +\def\basicsebidist[#1]{\sdbicase{\SEBIDIST}{}{}{#100}}% + +% pair of south-east distributors +\newcommand{\sebidist}{\@ifnextchar[{\basicsebidist}{\basicsebidist[59]}}% + +% pair of south-east distributors with names [1][2] and length nx100 units +\def\basicSebidist[#1]#2#3{\sdbicase{\SEBIDIST}{#2}{#3}{#100}}% + +% pair of south-east distributors with names +\newcommand{\Sebidist}{\@ifnextchar[{\basicSebidist}{\basicSebidist[59]}}% +\let\sebidisT=\Sebidist + +% pair of south-east adjoint distributors of length nx100 units +\def\basicseadjdist[#1]{\sdbicase{\SEADJDIST}{}{}{#100}}% + +% pair of south-east adjoint distributors +\newcommand{\seadjdist}{\@ifnextchar[{\basicseadjdist}{\basicseadjdist[59]}}% + +% pair of south-east adjoint distributors with names [1][2] and length nx100 units +\def\basicSeadjdist[#1]#2#3{\sdbicase{\SEADJDIST}{#2}{#3}{#100}}% + +% pair of south-east adjoint distributors with names +\newcommand{\Seadjdist}{\@ifnextchar[{\basicSeadjdist}{\basicSeadjdist[59]}}% +\let\seadjdisT=\Seadjdist + + +% 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){\line(-1,1){#1}}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWDIST{n} draws a north-west distributor of length n units +\newcommand{\NWDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\line(-1,1){#1}}% +\put(-\Y,\Y){\nwhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\end{picture}}% + +% \NWDOTAR{n} draws a north-west dotted arrow of length n units +\newcommand{\NWDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,-\Y)(-\value{y},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWMONO{n} draws a north-west monomorphism of length n units +\newcommand{\NWMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(\monolength,-\monolength){\line(-1,1){\bimolength}}% +\put(\monolength,-\monolength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWEPI{n} draws a north-west epimorphism of length n units +\newcommand{\NWEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(\Y,-\Y){\line(-1,1){\bimolength}}% +\put(-\epilength,\epilength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWBIMO{n} draws a north-west bimorphism of length n units +\newcommand{\NWBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(\monolength,-\monolength){\line(-1,1){\bimolength}}% +\put(\monolength,-\monolength){\nwhead}% +\put(-\epilength,\epilength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\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}){\line(-1,1){#1}}% +\put(\value{x},\value{x}){\line(-1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\monolength,\epilength){\nwhead}% +\put(-\epilength,\monolength){\nwhead}% +\end{picture}}\end{picture}}% + +% \NWBIDIST{n} draws a pair of north-west distributors of length n units +\newcommand{\NWBIDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\circle{\value{y}}}% +\put(\value{x},\value{x}){\circle{\value{y}}}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}\end{picture}}% + +% \NWADJDIST{n} draws a north-west pair of adjoint distributors of length n units +\newcommand{\NWADJDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\truey{400}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\circle{\value{y}}}% +\put(\value{x},\value{x}){\circle{\value{y}}}% +\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]}}% + +% north-west distributor of length nx100 units +\def\basicnwdist[#1]{\sdcase{\NWDIST}{}{}{#100}}% + +% north-west distributor +\newcommand{\nwdist}{\@ifnextchar[{\basicnwdist}{\basicnwdist[59]}}% + +% north-west distributor with upper name [1] and length nx100 units +\def\basicNwdist[#1]#2{\sdcase{\NWDIST}{#2}{}{#100}}% + +% north-west distributor with upper name +\newcommand{\Nwdist}{\@ifnextchar[{\basicNwdist}{\basicNwdist[59]}}% + +% north-west distributor with lower name [1] and length nx100 units +\def\basicnwdisT[#1]#2{\sdcase{\NWDIST}{}{#2}{#100}}% + +% north-west distributor with lower name [1] +\newcommand{\nwdisT}{\@ifnextchar[{\basicnwdisT}{\basicnwdisT[59]}}% + +% north-west dotted arrow of length nx100 units +\def\basicnwdotar[#1]{\sdcase{\NWDOTAR}{}{}{#100}}% + +% north-west dotted arrow +\newcommand{\nwdotar}{\@ifnextchar[{\basicnwdotar}{\basicnwdotar[59]}}% + +% north-west dotted arrow with upper name [1] and length nx100 units +\def\basicNwdotar[#1]#2{\sdcase{\NWDOTAR}{#2}{}{#100}}% + +% north-west dotted arrow with upper name +\newcommand{\Nwdotar}{\@ifnextchar[{\basicNwdotar}{\basicNwdotar[59]}}% + +% north-west dotted arrow with lower name [1] and length nx100 units +\def\basicnwdotaR[#1]#2{\sdcase{\NWDOTAR}{}{#2}{#100}}% + +% north-west dotted arrow with lower name [1] +\newcommand{\nwdotaR}{\@ifnextchar[{\basicnwdotaR}{\basicnwdotaR[59]}}% + +% north-west monomorphism of length nx100 units +\def\basicnwmono[#1]{\sdcase{\NWMONO}{}{}{#100}}% + +% north-west monomorphism +\newcommand{\nwmono}{\@ifnextchar[{\basicnwmono}{\basicnwmono[59]}}% + +% north-west monomorphism with upper name [1] and length nx100 units +\def\basicNwmono[#1]#2{\sdcase{\NWMONO}{#2}{}{#100}}% + +% north-west monomophism with upper name +\newcommand{\Nwmono}{\@ifnextchar[{\basicNwmono}{\basicNwmono[59]}}% + +% north-west monomorphism with lower name [1] and length nx100 units +\def\basicnwmonO[#1]#2{\sdcase{\NWMONO}{}{#2}{#100}}% + +% north-west monomorphism with lower name [1] +\newcommand{\nwmonO}{\@ifnextchar[{\basicnwmonO}{\basicnwmonO[59]}}% + +% north-west epimorphism of length nx100 units +\def\basicnwepi[#1]{\sdcase{\NWEPI}{}{}{#100}}% + +% north-west epimorphism +\newcommand{\nwepi}{\@ifnextchar[{\basicnwepi}{\basicnwepi[59]}}% + +% north-west epimorphism with upper name [1] and length nx100 units +\def\basicNwepi[#1]#2{\sdcase{\NWEPI}{#2}{}{#100}}% + +% north-west epimorphism with upper name +\newcommand{\Nwepi}{\@ifnextchar[{\basicNwepi}{\basicNwepi[59]}}% + +% north-west epimorphism with lower name [1] and length nx100 units +\def\basicnwepI[#1]#2{\sdcase{\NWEPI}{}{#2}{#100}}% + +% north-west epimorphism with lower name [1] +\newcommand{\nwepI}{\@ifnextchar[{\basicnwepI}{\basicnwepI[59]}}% + +% north-west bimorphism of length nx100 units +\def\basicnwbimo[#1]{\sdcase{\NWBIMO}{}{}{#100}}% + +% north-west bimorphism +\newcommand{\nwbimo}{\@ifnextchar[{\basicnwbimo}{\basicnwbimo[59]}}% + +% north-west bimorphism with upper name [1] and length nx100 units +\def\basicNwbimo[#1]#2{\sdcase{\NWBIMO}{#2}{}{#100}}% + +% north-west bimorphism with upper name +\newcommand{\Nwbimo}{\@ifnextchar[{\basicNwbimo}{\basicNwbimo[59]}}% + +% north-west bimorphism with lower name [1] and length nx100 units +\def\basicnwbimO[#1]#2{\sdcase{\NWBIMO}{}{#2}{#100}}% + +% north-west bimorphism with lower name [1] +\newcommand{\nwbimO}{\@ifnextchar[{\basicnwbimO}{\basicnwbimO[59]}}% + +% north-west isomorphism of length nx100 units +\def\basicnwiso[#1]{\sdcase{\NWAR}{\hspace{-2pt}\cong}{}{#100}}% + +% north-west isomorphism +\newcommand{\nwiso}{\@ifnextchar[{\basicnwiso}{\basicnwiso[59]}}% + +% north-west isomorphism with upper name [1] and length nx100 units +\def\basicNwiso[#1]#2{\sdcase{\NWAR}{#2}{\cong}{#100}}% + +% north-west isomorphism with upper name +\newcommand{\Nwiso}{\@ifnextchar[{\basicNwiso}{\basicNwiso[59]}}% + +% north-west isomorphism with lower name [1] and length nx100 units +\def\basicnwisO[#1]#2{\sdcase{\NWAR}{\hspace{-2pt}\cong}{#2}{#100}}% + +% north-west isomorphism with lower name [1] +\newcommand{\nwisO}{\@ifnextchar[{\basicnwisO}{\basicnwisO[59]}}% + +% north-west equality +\let\nweql=\seeql% + +% north-west equality with upper name +\let\Nweql=\Seeql% + +% north-west equality with lower name [1] +\let\nweqL=\seeqL% + +% 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 + +% pair of north-west distributors of length nx100 units +\def\basicnwbidist[#1]{\sdbicase{\NWBIDIST}{}{}{#100}}% + +% pair of north-west distributors +\newcommand{\nwbidist}{\@ifnextchar[{\basicnwbidist}{\basicnwbidist[59]}}% + +% pair of north-west distributors with names [1][2] and length nx100 units +\def\basicNwbidist[#1]#2#3{\sdbicase{\NWBIDIST}{#2}{#3}{#100}}% + +% pair of north-west distributors with names +\newcommand{\Nwbidist}{\@ifnextchar[{\basicNwbidist}{\basicNwbidist[59]}}% +\let\nwbidisT=\Nwbidist + +% pair of north-west adjoint distributors of length nx100 units +\def\basicnwadjdist[#1]{\sdbicase{\NWADJDIST}{}{}{#100}}% + +% pair of north-west adjoint distributors +\newcommand{\nwadjdist}{\@ifnextchar[{\basicnwadjdist}{\basicnwadjdist[59]}}% + +% pair of north-west adjoint distributors with names [1][2] and length nx100 units +\def\basicNwadjdist[#1]#2#3{\sdbicase{\NWADJDIST}{#2}{#3}{#100}}% + +% pair of north-west adjoint distributors with names +\newcommand{\Nwadjdist}{\@ifnextchar[{\basicNwadjdist}{\basicNwadjdist[59]}}% +\let\nwadjdisT=\Nwadjdist + + +% 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){\line(2,1){#3}}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEDIST{f}{g}{n} draws a east-north-east distributor +% with names f, g and length n units +\newcommand{\ENEDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\line(2,1){#3}}% +\put(\Y,\Z){\enehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \ENEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\ENEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,-\Z)(\value{y},\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEMONO{f}{g}{n} draws a east-north-east monomorphism +% with names f,g and length n units +\newcommand{\ENEMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}% +\put(-\monolength,-\secondmonolength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEEPI{f}{g}{n} draws a east-north-east epimorphism +% with names f, g and length n units +\newcommand{\ENEEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\line(2,1){\bimolength}}% +\put(\epilength,\secondepilength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEBIMO{f}{g}{n} draws a east-north-east bimorphism +% with names f,g and length n units +\newcommand{\ENEBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}% +\put(-\monolength,-\secondmonolength){\enehead}% +\put(\epilength,\secondepilength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEEQL{f}{g}{n} draws a east-north-east equality +% with names f,g and length n units +\newcommand{\ENEEQL}[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{44}\truey{89}% +\put(-\value{x},\value{y}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(2,1){#3}}% +\end{picture}}% +\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}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\enehead}% +\put(\epilength,\secondmonolength){\enehead}% +\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}}% + +% \ENEBIDIST{f}{g}{n} draws a pair of east-north-east distributors +% with names f,g and length n units +\newcommand{\ENEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\enehead}% +\put(\epilength,\secondmonolength){\enehead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(2,1){#3}}% +\put(\epilength,\secondmonolength){\enehead}% +\put(\monolength,\secondepilength){\line(-2,-1){#3}}% +\put(-\value{x},\value{y}){\wswhead}% +\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}}% + +% \ENEADJDIST{f}{g}{n} draws a east-north-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\ENEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\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}){\line(2,1){#3}}% +\put(\epilength,\secondmonolength){\enehead}% +\put(\monolength,\secondepilength){\line(-2,-1){#3}}% +\put(-\value{x},\value{y}){\wswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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 distributor +\def\basicenedist[#1]{\ENEDIST{}{}{#100}}% + +% east-north-east distributor +\newcommand{\enedist}{\@ifnextchar[{\basicenedist}{\basicenedist[133]}}% + +% basic east-north-east distributor with upper name +\def\basicEnedist[#1]#2{\ENEDIST{#2}{}{#100}}% + +% east-north-east distributor with upper name +\newcommand{\Enedist}{\@ifnextchar[{\basicEnedist}{\basicEnedist[133]}}% + +% basic east-north-east distributor with lower name +\def\basicenedisT[#1]#2{\ENEDIST{}{#2}{#100}}% + +% east-north-east distributor with lower name +\newcommand{\enedisT}{\@ifnextchar[{\basicenedisT}{\basicenedisT[133]}}% + +% basic east-north-east dotted arrow +\def\basicenedotar[#1]{\ENEDOTAR{}{}{#100}}% + +% east-north-east dotted arrow +\newcommand{\enedotar}{\@ifnextchar[{\basicenedotar}{\basicenedotar[133]}}% + +% basic east-north-east dotted arrow with upper name +\def\basicEnedotar[#1]#2{\ENEDOTAR{#2}{}{#100}}% + +% east-north-east dotted arrow with upper name +\newcommand{\Enedotar}{\@ifnextchar[{\basicEnedotar}{\basicEnedotar[133]}}% + +% basic east-north-east dotted arrow with lower name +\def\basicenedotaR[#1]#2{\ENEDOTAR{}{#2}{#100}}% + +% east-north-east dotted arrow with lower name +\newcommand{\enedotaR}{\@ifnextchar[{\basicenedotaR}{\basicenedotaR[133]}}% + +% basic east-north-east monomorphism +\def\basicenemono[#1]{\ENEMONO{}{}{#100}}% + +% east-north-east monomorphism +\newcommand{\enemono}{\@ifnextchar[{\basicenemono}{\basicenemono[133]}}% + +% basic east-north-east monomorphism with upper name +\def\basicEnemono[#1]#2{\ENEMONO{#2}{}{#100}}% + +% east-north-east monomorphism with upper name +\newcommand{\Enemono}{\@ifnextchar[{\basicEnemono}{\basicEnemono[133]}}% + +% basic east-north-east monomorphism with lower name +\def\basicenemonO[#1]#2{\ENEMONO{}{#2}{#100}}% + +% east-north-east monomorphism with lower name +\newcommand{\enemonO}{\@ifnextchar[{\basicenemonO}{\basicenemonO[133]}}% + +% basic east-north-east epimorphism +\def\basiceneepi[#1]{\ENEEPI{}{}{#100}}% + +% east-north-east epimorphism +\newcommand{\eneepi}{\@ifnextchar[{\basiceneepi}{\basiceneepi[133]}}% + +% basic east-north-east epimorphism with upper name +\def\basicEneepi[#1]#2{\ENEEPI{#2}{}{#100}}% + +% east-north-east epimorphism with upper name +\newcommand{\Eneepi}{\@ifnextchar[{\basicEneepi}{\basicEneepi[133]}}% + +% basic east-north-east epimorphism with lower name +\def\basiceneepI[#1]#2{\ENEEPI{}{#2}{#100}}% + +% east-north-east epimorphism with lower name +\newcommand{\eneepI}{\@ifnextchar[{\basiceneepI}{\basiceneepI[133]}}% + +% basic east-north-east bimorphism +\def\basicenebimo[#1]{\ENEBIMO{}{}{#100}}% + +% east-north-east bimorphism +\newcommand{\enebimo}{\@ifnextchar[{\basicenebimo}{\basicenebimo[133]}}% + +% basic east-north-east bimorphism with upper name +\def\basicEnebimo[#1]#2{\ENEBIMO{#2}{}{#100}}% + +% east-north-east bimorphism with upper name +\newcommand{\Enebimo}{\@ifnextchar[{\basicEnebimo}{\basicEnebimo[133]}}% + +% basic east-north-east bimorphism with lower name +\def\basicenebimO[#1]#2{\ENEBIMO{}{#2}{#100}}% + +% east-north-east bimorphism with lower name +\newcommand{\enebimO}{\@ifnextchar[{\basicenebimO}{\basicenebimO[133]}}% + +% basic east-north-east isomorphism +\def\basiceneiso[#1]{\ENEAR{\cong}{}{#100}}% + +% east-north-east isomorphism +\newcommand{\eneiso}{\@ifnextchar[{\basiceneiso}{\basiceneiso[133]}}% + +% basic east-north-east isomorphism with upper name +\def\basicEneiso[#1]#2{\ENEAR{#2}{\cong}{#100}}% + +% east-north-east isomorphism with upper name +\newcommand{\Eneiso}{\@ifnextchar[{\basicEneiso}{\basicEneiso[133]}}% + +% basic east-north-east isomorphism with lower name +\def\basiceneisO[#1]#2{\ENEAR{\cong}{#2}{#100}}% + +% east-north-east isomorphism with lower name +\newcommand{\eneisO}{\@ifnextchar[{\basiceneisO}{\basiceneisO[133]}}% + +% basic east-north-east equality +\def\basiceneeql[#1]{\ENEEQL{}{}{#100}}% + +% east-north-east equality +\newcommand{\eneeql}{\@ifnextchar[{\basiceneeql}{\basiceneeql[133]}}% + +% basic east-north-east equality with upper name +\def\basicEneeql[#1]#2{\ENEEQL{#2}{}{#100}}% + +% east-north-east equality with upper name +\newcommand{\Eneeql}{\@ifnextchar[{\basicEneeql}{\basicEneeql[133]}}% + +% basic east-north-east equality with lower name +\def\basiceneeqL[#1]#2{\ENEEQL{}{#2}{#100}}% + +% east-north-east equality with lower name +\newcommand{\eneeqL}{\@ifnextchar[{\basiceneeqL}{\basiceneeqL[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 distributors +\def\basicenebidist[#1]{\ENEBIDIST{}{}{#100}}% + +% east-north-east pair of distributors +\newcommand{\enebidist}{\@ifnextchar[{\basicenebidist}{\basicenebidist[133]}}% + +% basic east-north-east pair of distributors with names +\def\basicEnebidist[#1]#2#3{\ENEBIDIST{#2}{#3}{#100}}% + +% east-north-east pair of distributors with names +\newcommand{\Enebidist}{\@ifnextchar[{\basicEnebidist}{\basicEnebidist[133]}}% +\let\enebidisT=\Enebidist + +% 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 + +% basic east-north-east pair of adjoint distributors +\def\basiceneadjdist[#1]{\ENEADJDIST{}{}{#100}}% + +% east-north-east pair of adjoint distributors +\newcommand{\eneadjdist}{\@ifnextchar[{\basiceneadjdist}{\basiceneadjdist[133]}}% + +% basic east-north-east pair of adjoint distributors with names +\def\basicEneadjdist[#1]#2#3{\ENEADJDIST{#2}{#3}{#100}}% + +% east-north-east pair of adjoint distributors with names +\newcommand{\Eneadjdist}{\@ifnextchar[{\basicEneadjdist}{\basicEneadjdist[133]}}% +\let\eneadjdisT=\Eneadjdist + + +% 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){\line(2,-1){#3}}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEDIST{f}{g}{n} draws a east-south-east distributor +% with names f, g and length n units +\newcommand{\ESEDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\line(2,-1){#3}}% +\put(\Y,-\Z){\esehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \ESEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\ESEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,\Z)(\value{y},-\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEMONO{f}{g}{n} draws a east-south-east monomorphism +% with names f,g and length n units +\newcommand{\ESEMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}% +\put(-\monolength,\secondmonolength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEEPI{f}{g}{n} draws a east-south-east epimorphism +% with names f, g and length n units +\newcommand{\ESEEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\line(2,-1){\bimolength}}% +\put(\epilength,-\secondepilength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEBIMO{f}{g}{n} draws a east-south-east bimorphism +% with names f,g and length n units +\newcommand{\ESEBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}% +\put(-\monolength,\secondmonolength){\esehead}% +\put(\epilength,-\secondepilength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEEQL{f}{g}{n} draws a east-south-east equality +% with names f,g and length n units +\newcommand{\ESEEQL}[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{44}\truey{89}% +\put(-\value{x},-\value{y}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(2,-1){#3}}% +\end{picture}}% +\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]{% +\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}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\esehead}% +\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}}% + +% \ESEBIDIST{f}{g}{n} draws a pair of east-south-east distributors +% with names f,g and length n units +\newcommand{\ESEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,\Z){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\esehead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(2,-1){#3}}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\wnwhead}% +\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}}% + +% \ESEADJDIST{f}{g}{n} draws a east-south-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\ESEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,\Z){\begin{picture}(0,0)% +\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}){\line(2,-1){#3}}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\wnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\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 distributor +\def\basicesedist[#1]{\ESEDIST{}{}{#100}}% + +% east-south-east distributor +\newcommand{\esedist}{\@ifnextchar[{\basicesedist}{\basicesedist[133]}}% + +% basic east-south-east distributor with upper name +\def\basicEsedist[#1]#2{\ESEDIST{#2}{}{#100}}% + +% east-south-east distributor with upper name +\newcommand{\Esedist}{\@ifnextchar[{\basicEsedist}{\basicEsedist[133]}}% + +% basic east-south-east distributor with lower name +\def\basicesedisT[#1]#2{\ESEDIST{}{#2}{#100}}% + +% east-south-east distributor with lower name +\newcommand{\esedisT}{\@ifnextchar[{\basicesedisT}{\basicesedisT[133]}}% + +% basic east-south-east dotted arrow +\def\basicesedotar[#1]{\ESEDOTAR{}{}{#100}}% + +% east-south-east dotted arrow +\newcommand{\esedotar}{\@ifnextchar[{\basicesedotar}{\basicesedotar[133]}}% + +% basic east-south-east dotted arrow with upper name +\def\basicEsedotar[#1]#2{\ESEDOTAR{#2}{}{#100}}% + +% east-south-east dotted arrow with upper name +\newcommand{\Esedotar}{\@ifnextchar[{\basicEsedotar}{\basicEsedotar[133]}}% + +% basic east-south-east dotted arrow with lower name +\def\basicesedotaR[#1]#2{\ESEDOTAR{}{#2}{#100}}% + +% east-south-east dotted arrow with lower name +\newcommand{\esedotaR}{\@ifnextchar[{\basicesedotaR}{\basicesedotaR[133]}}% + +% basic east-south-east monomorphism +\def\basicesemono[#1]{\ESEMONO{}{}{#100}}% + +% east-south-east monomorphism +\newcommand{\esemono}{\@ifnextchar[{\basicesemono}{\basicesemono[133]}}% + +% basic east-south-east monomorphism with upper name +\def\basicEsemono[#1]#2{\ESEMONO{#2}{}{#100}}% + +% east-south-east monomorphism with upper name +\newcommand{\Esemono}{\@ifnextchar[{\basicEsemono}{\basicEsemono[133]}}% + +% basic east-south-east monomorphism with lower name +\def\basicesemonO[#1]#2{\ESEMONO{}{#2}{#100}}% + +% east-south-east monomorphism with lower name +\newcommand{\esemonO}{\@ifnextchar[{\basicesemonO}{\basicesemonO[133]}}% + +% basic east-south-east epimorphism +\def\basiceseepi[#1]{\ESEEPI{}{}{#100}}% + +% east-south-east epimorphism +\newcommand{\eseepi}{\@ifnextchar[{\basiceseepi}{\basiceseepi[133]}}% + +% basic east-south-east epimorphism with upper name +\def\basicEseepi[#1]#2{\ESEEPI{#2}{}{#100}}% + +% east-south-east epimorphism with upper name +\newcommand{\Eseepi}{\@ifnextchar[{\basicEseepi}{\basicEseepi[133]}}% + +% basic east-south-east epimorphism with lower name +\def\basiceseepI[#1]#2{\ESEEPI{}{#2}{#100}}% + +% east-south-east epimorphism with lower name +\newcommand{\eseepI}{\@ifnextchar[{\basiceseepI}{\basiceseepI[133]}}% + +% basic east-south-east bimorphism +\def\basicesebimo[#1]{\ESEBIMO{}{}{#100}}% + +% east-south-east bimorphism +\newcommand{\esebimo}{\@ifnextchar[{\basicesebimo}{\basicesebimo[133]}}% + +% basic east-south-east bimorphism with upper name +\def\basicEsebimo[#1]#2{\ESEBIMO{#2}{}{#100}}% + +% east-south-east bimorphism with upper name +\newcommand{\Esebimo}{\@ifnextchar[{\basicEsebimo}{\basicEsebimo[133]}}% + +% basic east-south-east bimorphism with lower name +\def\basicesebimO[#1]#2{\ESEBIMO{}{#2}{#100}}% + +% east-south-east bimorphism with lower name +\newcommand{\esebimO}{\@ifnextchar[{\basicesebimO}{\basicesebimO[133]}}% + +% basic east-south-east isomorphism +\def\basiceseiso[#1]{\ESEAR{\cong}{}{#100}}% + +% east-south-east isomorphism +\newcommand{\eseiso}{\@ifnextchar[{\basiceseiso}{\basiceseiso[133]}}% + +% basic east-south-east isomorphism with upper name +\def\basicEseiso[#1]#2{\ESEAR{#2}{\cong}{#100}}% + +% east-south-east isomorphism with upper name +\newcommand{\Eseiso}{\@ifnextchar[{\basicEseiso}{\basicEseiso[133]}}% + +% basic east-south-east isomorphism with lower name +\def\basiceseisO[#1]#2{\ESEAR{\cong}{#2}{#100}}% + +% east-south-east isomorphism with lower name +\newcommand{\eseisO}{\@ifnextchar[{\basiceseisO}{\basiceseisO[133]}}% + +% basic east-south-east equality +\def\basiceseeql[#1]{\ESEEQL{}{}{#100}}% + +% east-south-east equality +\newcommand{\eseeql}{\@ifnextchar[{\basiceseeql}{\basiceseeql[133]}}% + +% basic east-south-east equality with upper name +\def\basicEseeql[#1]#2{\ESEEQL{#2}{}{#100}}% + +% east-south-east equality with upper name +\newcommand{\Eseeql}{\@ifnextchar[{\basicEseeql}{\basicEseeql[133]}}% + +% basic east-south-east equality with lower name +\def\basiceseeqL[#1]#2{\ESEEQL{}{#2}{#100}}% + +% east-south-east equality with lower name +\newcommand{\eseeqL}{\@ifnextchar[{\basiceseeqL}{\basiceseeqL[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 distributors +\def\basicesebidist[#1]{\ESEBIDIST{}{}{#100}}% + +% east-south-east pair of distributors +\newcommand{\esebidist}{\@ifnextchar[{\basicesebidist}{\basicesebidist[133]}}% + +% basic east-south-east pair of distributors with names +\def\basicEsebidist[#1]#2#3{\ESEBIDIST{#2}{#3}{#100}}% + +% east-south-east pair of distributors with names +\newcommand{\Esebidist}{\@ifnextchar[{\basicEsebidist}{\basicEsebidist[133]}}% +\let\esebidisT=\Esebidist + +% 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 + +% basic east-south-east pair of adjoint distributors +\def\basiceseadjdist[#1]{\ESEADJDIST{}{}{#100}}% + +% east-south-east pair of adjoint distributors +\newcommand{\eseadjdist}{\@ifnextchar[{\basiceseadjdist}{\basiceseadjdist[133]}}% + +% basic east-south-east pair of adjoint distributors with names +\def\basicEseadjdist[#1]#2#3{\ESEADJDIST{#2}{#3}{#100}}% + +% east-south-east pair of adjoint distributors with names +\newcommand{\Eseadjdist}{\@ifnextchar[{\basicEseadjdist}{\basicEseadjdist[133]}}% +\let\eseadjdisT=\Eseadjdist + +% 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){\line(-2,-1){#3}}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWDIST{f}{g}{n} draws a west-south-west distributor +% with names f, g and length n units +\newcommand{\WSWDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\line(-2,-1){#3}}% +\put(-\Y,-\Z){\wswhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \WSWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\WSWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,\Z)(-\value{y},-\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWMONO{f}{g}{n} draws a west-south-west monomorphism +% with names f,g and length n units +\newcommand{\WSWMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}% +\put(\monolength,\secondmonolength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWEPI{f}{g}{n} draws a west-south-west epimorphism +% with names f, g and length n units +\newcommand{\WSWEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\line(-2,-1){\bimolength}}% +\put(-\epilength,-\secondepilength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWBIMO{f}{g}{n} draws a west-south-west bimorphism +% with names f,g and length n units +\newcommand{\WSWBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}% +\put(\monolength,\secondmonolength){\wswhead}% +\put(-\epilength,-\secondepilength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}){\line(-2,-1){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\wswhead}% +\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}}% + +% \WSWBIDIST{f}{g}{n} draws a pair of west-south-west distributors +% with names f,g and length n units +\newcommand{\WSWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,\Z){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(-2,-1){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\wswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(-2,-1){#3}}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\line(2,1){#3}}% +\put(-\value{x},\value{y}){\enehead}% +\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}}% + +% \WSWADJDIST{f}{g}{n} draws a west-south-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\WSWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,\Z){\begin{picture}(0,0)% +\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}){\line(-2,-1){#3}}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\line(2,1){#3}}% +\put(-\value{x},\value{y}){\enehead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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 distributor +\def\basicwswdist[#1]{\WSWDIST{}{}{#100}}% + +% west-south-west distributor +\newcommand{\wswdist}{\@ifnextchar[{\basicwswdist}{\basicwswdist[133]}}% + +% basic west-south-west distributor with upper name +\def\basicWswdist[#1]#2{\WSWDIST{#2}{}{#100}}% + +% west-south-west distributor with upper name +\newcommand{\Wswdist}{\@ifnextchar[{\basicWswdist}{\basicWswdist[133]}}% + +% basic west-south-west distributor with lower name +\def\basicwswdisT[#1]#2{\WSWDIST{}{#2}{#100}}% + +% west-south-west distributor with lower name +\newcommand{\wswdisT}{\@ifnextchar[{\basicwswdisT}{\basicwswdisT[133]}}% + +% basic west-south-west dotted arrow +\def\basicwswdotar[#1]{\WSWDOTAR{}{}{#100}}% + +% west-south-west dotted arrow +\newcommand{\wswdotar}{\@ifnextchar[{\basicwswdotar}{\basicwswdotar[133]}}% + +% basic west-south-west dotted arrow with upper name +\def\basicWswdotar[#1]#2{\WSWDOTAR{#2}{}{#100}}% + +% west-south-west dotted arrow with upper name +\newcommand{\Wswdotar}{\@ifnextchar[{\basicWswdotar}{\basicWswdotar[133]}}% + +% basic west-south-west dotted arrow with lower name +\def\basicwswdotaR[#1]#2{\WSWDOTAR{}{#2}{#100}}% + +% west-south-west dotted arrow with lower name +\newcommand{\wswdotaR}{\@ifnextchar[{\basicwswdotaR}{\basicwswdotaR[133]}}% + +% basic west-south-west monomorphism +\def\basicwswmono[#1]{\WSWMONO{}{}{#100}}% + +% west-south-west monomorphism +\newcommand{\wswmono}{\@ifnextchar[{\basicwswmono}{\basicwswmono[133]}}% + +% basic west-south-west monomorphism with upper name +\def\basicWswmono[#1]#2{\WSWMONO{#2}{}{#100}}% + +% west-south-west monomorphism with upper name +\newcommand{\Wswmono}{\@ifnextchar[{\basicWswmono}{\basicWswmono[133]}}% + +% basic west-south-west monomorphism with lower name +\def\basicwswmonO[#1]#2{\WSWMONO{}{#2}{#100}}% + +% west-south-west monomorphism with lower name +\newcommand{\wswmonO}{\@ifnextchar[{\basicwswmonO}{\basicwswmonO[133]}}% + +% basic west-south-west epimorphism +\def\basicwswepi[#1]{\WSWEPI{}{}{#100}}% + +% west-south-west epimorphism +\newcommand{\wswepi}{\@ifnextchar[{\basicwswepi}{\basicwswepi[133]}}% + +% basic west-south-west epimorphism with upper name +\def\basicWswepi[#1]#2{\WSWEPI{#2}{}{#100}}% + +% west-south-west epimorphism with upper name +\newcommand{\Wswepi}{\@ifnextchar[{\basicWswepi}{\basicWswepi[133]}}% + +% basic west-south-west epimorphism with lower name +\def\basicwswepI[#1]#2{\WSWEPI{}{#2}{#100}}% + +% west-south-west epimorphism with lower name +\newcommand{\wswepI}{\@ifnextchar[{\basicwswepI}{\basicwswepI[133]}}% + +% basic west-south-west bimorphism +\def\basicwswbimo[#1]{\WSWBIMO{}{}{#100}}% + +% west-south-west bimorphism +\newcommand{\wswbimo}{\@ifnextchar[{\basicwswbimo}{\basicwswbimo[133]}}% + +% basic west-south-west bimorphism with upper name +\def\basicWswbimo[#1]#2{\WSWBIMO{#2}{}{#100}}% + +% west-south-west bimorphism with upper name +\newcommand{\Wswbimo}{\@ifnextchar[{\basicWswbimo}{\basicWswbimo[133]}}% + +% basic west-south-west bimorphism with lower name +\def\basicwswbimO[#1]#2{\WSWBIMO{}{#2}{#100}}% + +% west-south-west bimorphism with lower name +\newcommand{\wswbimO}{\@ifnextchar[{\basicwswbimO}{\basicwswbimO[133]}}% + +% basic west-south-west isomorphism +\def\basicwswiso[#1]{\WSWAR{\cong}{}{#100}}% + +% west-south-west isomorphism +\newcommand{\wswiso}{\@ifnextchar[{\basicwswiso}{\basicwswiso[133]}}% + +% basic west-south-west isomorphism with upper name +\def\basicWswiso[#1]#2{\WSWAR{#2}{\cong}{#100}}% + +% west-south-west isomorphism with upper name +\newcommand{\Wswiso}{\@ifnextchar[{\basicWswiso}{\basicWswiso[133]}}% + +% basic west-south-west isomorphism with lower name +\def\basicwswisO[#1]#2{\WSWAR{\cong}{#2}{#100}}% + +% west-south-west isomorphism with lower name +\newcommand{\wswisO}{\@ifnextchar[{\basicwswisO}{\basicwswisO[133]}}% + +% west-south-west equality +\let\wsweql=\eneeql% + +% west-south-west equality with upper name +\let\Wsweql=\Eneeql% + +% west-south-west equality with lower name +\let\wsweqL=\eneeqL% + +% 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 distributors +\def\basicwswbidist[#1]{\WSWBIDIST{}{}{#100}}% + +% west-south-west pair of distributors +\newcommand{\wswbidist}{\@ifnextchar[{\basicwswbidist}{\basicwswbidist[133]}}% + +% basic west-south-west pair of distributors with names +\def\basicWswbidist[#1]#2#3{\WSWBIDIST{#2}{#3}{#100}}% + +% west-south-west pair of distributors with names +\newcommand{\Wswbidist}{\@ifnextchar[{\basicWswbidist}{\basicWswbidist[133]}}% +\let\wswbidisT=\Wswbidist + +% 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 + +% basic west-south-west pair of adjoint distributors +\def\basicwswadjdist[#1]{\WSWADJDIST{}{}{#100}}% + +% west-south-west pair of adjoint distributors +\newcommand{\wswadjdist}{\@ifnextchar[{\basicwswadjdist}{\basicwswadjdist[133]}}% + +% basic west-south-west pair of adjoint distributors with names +\def\basicWswadjdist[#1]#2#3{\WSWADJDIST{#2}{#3}{#100}}% + +% west-south-west pair of adjoint distributors with names +\newcommand{\Wswadjdist}{\@ifnextchar[{\basicWswadjdist}{\basicWswadjdist[133]}}% +\let\wswadjdisT=\Wswadjdist + + +% 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){\line(-2,1){#3}}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWDIST{f}{g}{n} draws a west-north-west distributor +% with names f, g and length n units +\newcommand{\WNWDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\line(-2,1){#3}}% +\put(-\Y,\Z){\wnwhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \WNWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\WNWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,-\Z)(-\value{y},\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWMONO{f}{g}{n} draws a west-north-west monomorphism +% with names f,g and length n units +\newcommand{\WNWMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}% +\put(\monolength,-\secondmonolength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWEPI{f}{g}{n} draws a west-north-west epimorphism +% with names f, g and length n units +\newcommand{\WNWEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\line(-2,1){\bimolength}}% +\put(-\epilength,\secondepilength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWBIMO{f}{g}{n} draws a west-north-west bimorphism +% with names f,g and length n units +\newcommand{\WNWBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}% +\put(\monolength,-\secondmonolength){\wnwhead}% +\put(-\epilength,\secondepilength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\wnwhead}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\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}}% + +% \WNWBIDIST{f}{g}{n} draws a pair of west-north-west distributors +% with names f,g and length n units +\newcommand{\WNWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,-\Z){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\wnwhead}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(-2,1){#3}}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\put(-\monolength,\secondepilength){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\esehead}% +\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}}% + +% \WNWADJDIST{f}{g}{n} draws a west-north-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\WNWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,-\Z){\begin{picture}(0,0)% +\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}){\line(-2,1){#3}}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\put(-\monolength,\secondepilength){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\esehead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\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}}% + +% west-north-west distributor +\newcommand{\wnwdist}{\@ifnextchar[{\basicwnwdist}{\basicwnwdist[133]}}% + +% basic west-north-west distributor with upper name +\def\basicWnwdist[#1]#2{\WNWDIST{#2}{}{#100}}% + +% west-north-west distributor with upper name +\newcommand{\Wnwdist}{\@ifnextchar[{\basicWnwdist}{\basicWnwdist[133]}}% + +% basic west-north-west distributor with lower name +\def\basicwnwdisT[#1]#2{\WNWDIST{}{#2}{#100}}% + +% west-north-west distributor with lower name +\newcommand{\wnwdisT}{\@ifnextchar[{\basicwnwdisT}{\basicwnwdisT[133]}}% + +% basic west-north-west dotted arrow +\def\basicwnwdotar[#1]{\WNWDOTAR{}{}{#100}}% + +% west-north-west dotted arrow +\newcommand{\wnwdotar}{\@ifnextchar[{\basicwnwdotar}{\basicwnwdotar[133]}}% + +% basic west-north-west dotted arrow with upper name +\def\basicWnwdotar[#1]#2{\WNWDOTAR{#2}{}{#100}}% + +% west-north-west dotted arrow with upper name +\newcommand{\Wnwdotar}{\@ifnextchar[{\basicWnwdotar}{\basicWnwdotar[133]}}% + +% basic west-north-west dotted arrow with lower name +\def\basicwnwdotaR[#1]#2{\WNWDOTAR{}{#2}{#100}}% + +% west-north-west dotted arrow with lower name +\newcommand{\wnwdotaR}{\@ifnextchar[{\basicwnwdotaR}{\basicwnwdotaR[133]}}% + +% basic west-north-west monomorphism +\def\basicwnwmono[#1]{\WNWMONO{}{}{#100}}% + +% west-north-west monomorphism +\newcommand{\wnwmono}{\@ifnextchar[{\basicwnwmono}{\basicwnwmono[133]}}% + +% basic west-north-west monomorphism with upper name +\def\basicWnwmono[#1]#2{\WNWMONO{#2}{}{#100}}% + +% west-north-west monomorphism with upper name +\newcommand{\Wnwmono}{\@ifnextchar[{\basicWnwmono}{\basicWnwmono[133]}}% + +% basic west-north-west monomorphism with lower name +\def\basicwnwmonO[#1]#2{\WNWMONO{}{#2}{#100}}% + +% west-north-west monomorphism with lower name +\newcommand{\wnwmonO}{\@ifnextchar[{\basicwnwmonO}{\basicwnwmonO[133]}}% + +% basic west-north-west epimorphism +\def\basicwnwepi[#1]{\WNWEPI{}{}{#100}}% + +% west-north-west epimorphism +\newcommand{\wnwepi}{\@ifnextchar[{\basicwnwepi}{\basicwnwepi[133]}}% + +% basic west-north-west epimorphism with upper name +\def\basicWnwepi[#1]#2{\WNWEPI{#2}{}{#100}}% + +% west-north-west epimorphism with upper name +\newcommand{\Wnwepi}{\@ifnextchar[{\basicWnwepi}{\basicWnwepi[133]}}% + +% basic west-north-west epimorphism with lower name +\def\basicwnwepI[#1]#2{\WNWEPI{}{#2}{#100}}% + +% west-north-west epimorphism with lower name +\newcommand{\wnwepI}{\@ifnextchar[{\basicwnwepI}{\basicwnwepI[133]}}% + +% basic west-north-west bimorphism +\def\basicwnwbimo[#1]{\WNWBIMO{}{}{#100}}% + +% west-north-west bimorphism +\newcommand{\wnwbimo}{\@ifnextchar[{\basicwnwbimo}{\basicwnwbimo[133]}}% + +% basic west-north-west bimorphism with upper name +\def\basicWnwbimo[#1]#2{\WNWBIMO{#2}{}{#100}}% + +% west-north-west bimorphism with upper name +\newcommand{\Wnwbimo}{\@ifnextchar[{\basicWnwbimo}{\basicWnwbimo[133]}}% + +% basic west-north-west bimorphism with lower name +\def\basicwnwbimO[#1]#2{\WNWBIMO{}{#2}{#100}}% + +% west-north-west bimorphism with lower name +\newcommand{\wnwbimO}{\@ifnextchar[{\basicwnwbimO}{\basicwnwbimO[133]}}% + +% basic west-north-west isomorphism +\def\basicwnwiso[#1]{\WNWAR{\cong}{}{#100}}% + +% west-north-west isomorphism +\newcommand{\wnwiso}{\@ifnextchar[{\basicwnwiso}{\basicwnwiso[133]}}% + +% basic west-north-west isomorphism with upper name +\def\basicWnwiso[#1]#2{\WNWAR{#2}{\cong}{#100}}% + +% west-north-west isomorphism with upper name +\newcommand{\Wnwiso}{\@ifnextchar[{\basicWnwiso}{\basicWnwiso[133]}}% + +% basic west-north-west isomorphism with lower name +\def\basicwnwisO[#1]#2{\WNWAR{\cong}{#2}{#100}}% + +% west-north-west isomorphism with lower name +\newcommand{\wnwisO}{\@ifnextchar[{\basicwnwisO}{\basicwnwisO[133]}}% + +% west-north-west equality +\let\wnweql=\eseeql% + +% west-north-west equality with upper name +\let\Wnweql=\Eseeql% + +% west-north-west equality with lower name +\let\wnweqL=\eseeqL% + +% 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 distributors +\def\basicwnwbidist[#1]{\WNWBIDIST{}{}{#100}}% + +% west-north-west pair of distributors +\newcommand{\wnwbidist}{\@ifnextchar[{\basicwnwbidist}{\basicwnwbidist[133]}}% + +% basic west-north-west pair of distributors with names +\def\basicWnwbidist[#1]#2#3{\WNWBIDIST{#2}{#3}{#100}}% + +% west-north-west pair of distributors with names +\newcommand{\Wnwbidist}{\@ifnextchar[{\basicWnwbidist}{\basicWnwbidist[133]}}% +\let\wnwbidisT=\Wnwbidist + +% 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 + +% basic west-north-west pair of adjoint distributors +\def\basicwnwadjdist[#1]{\WNWADJDIST{}{}{#100}}% + +% west-north-west pair of adjoint distributors +\newcommand{\wnwadjdist}{\@ifnextchar[{\basicwnwadjdist}{\basicwnwadjdist[133]}}% + +% basic west-north-west pair of adjoint distributors with names +\def\basicWnwadjdist[#1]#2#3{\WNWADJDIST{#2}{#3}{#100}}% + +% west-north-west pair of adjoint distributors with names +\newcommand{\Wnwadjdist}{\@ifnextchar[{\basicWnwadjdist}{\basicWnwadjdist[133]}}% +\let\wnwadjdisT=\Wnwadjdist + + +% 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){\line(1,2){#3}}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEDIST{f}{g}{n} draws a north-north-east distributor +% with names f, g and length n units +\newcommand{\NNEDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\line(1,2){#3}}% +\put(\Z,#3){\nnehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \NNEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\NNEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Z,-#3)(\value{z},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEMONO{f}{g}{n} draws a north-north-east monomorphism +% with names f,g and length n units +\newcommand{\NNEMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}% +\put(-\monolength,-\secondmonolength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEEPI{f}{g}{n} draws a north-north-east epimorphism +% with names f, g and length n units +\newcommand{\NNEEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\line(1,2){\bimolength}}% +\put(\epilength,\secondepilength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEBIMO{f}{g}{n} draws a north-north-east bimorphism +% with names f,g and length n units +\newcommand{\NNEBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}% +\put(-\monolength,-\secondmonolength){\nnehead}% +\put(\epilength,\secondepilength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEEQL{f}{g}{n} draws a north-north-east equality +% with names f,g and length n units +\newcommand{\NNEEQL}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\begin{picture}(0,0)% +\truex{44}\truey{89}% +\put(-\value{y},\value{x}){\line(1,2){#3}}% +\put(\value{y},-\value{x}){\line(1,2){#3}}% +\end{picture}}% +\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}){\line(1,2){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\nnehead}% +\put(\epilength,\secondmonolength){\nnehead}% +\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}}% + +% \NNEBIDIST{f}{g}{n} draws a pair of north-north-east distributors +% with names f,g and length n units +\newcommand{\NNEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,-#3){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(1,2){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\nnehead}% +\put(\epilength,\secondmonolength){\nnehead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(1,2){#3}}% +\put(\epilength,\secondmonolength){\nnehead}% +\put(\monolength,\secondepilength){\line(-1,-2){#3}}% +\put(-\value{x},\value{y}){\sswhead}% +\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}}% + +% \NNEADJDIST{f}{g}{n} draws a north-north-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\NNEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,-#3){\begin{picture}(0,0)% +\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}){\line(1,2){#3}}% +\put(\epilength,\secondmonolength){\nnehead}% +\put(\monolength,\secondepilength){\line(-1,-2){#3}}% +\put(-\value{x},\value{y}){\sswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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 distributor +\def\basicnnedist[#1]{\NNEDIST{}{}{#100}}% + +% north-north-east distributor +\newcommand{\nnedist}{\@ifnextchar[{\basicnnedist}{\basicnnedist[67]}}% + +% basic north-north-east distributor with upper name +\def\basicNnedist[#1]#2{\NNEDIST{#2}{}{#100}}% + +% north-north-east distributor with upper name +\newcommand{\Nnedist}{\@ifnextchar[{\basicNnedist}{\basicNnedist[67]}}% + +% basic north-north-east distributor with lower name +\def\basicnnedisT[#1]#2{\NNEDIST{}{#2}{#100}}% + +% north-north-east distributor with lower name +\newcommand{\nnedisT}{\@ifnextchar[{\basicnnedisT}{\basicnnedisT[67]}}% + +% basic north-north-east dotted arrow +\def\basicnnedotar[#1]{\NNEDOTAR{}{}{#100}}% + +% north-north-east dotted arrow +\newcommand{\nnedotar}{\@ifnextchar[{\basicnnedotar}{\basicnnedotar[67]}}% + +% basic north-north-east dotted arrow with upper name +\def\basicNnedotar[#1]#2{\NNEDOTAR{#2}{}{#100}}% + +% north-north-east dotted arrow with upper name +\newcommand{\Nnedotar}{\@ifnextchar[{\basicNnedotar}{\basicNnedotar[67]}}% + +% basic north-north-east dotted arrow with lower name +\def\basicnnedotaR[#1]#2{\NNEDOTAR{}{#2}{#100}}% + +% north-north-east dotted arrow with lower name +\newcommand{\nnedotaR}{\@ifnextchar[{\basicnnedotaR}{\basicnnedotaR[67]}}% + +% basic north-north-east monomorphism +\def\basicnnemono[#1]{\NNEMONO{}{}{#100}}% + +% north-north-east monomorphism +\newcommand{\nnemono}{\@ifnextchar[{\basicnnemono}{\basicnnemono[67]}}% + +% basic north-north-east monomorphism with upper name +\def\basicNnemono[#1]#2{\NNEMONO{#2}{}{#100}}% + +% north-north-east monomorphism with upper name +\newcommand{\Nnemono}{\@ifnextchar[{\basicNnemono}{\basicNnemono[67]}}% + +% basic north-north-east monomorphism with lower name +\def\basicnnemonO[#1]#2{\NNEMONO{}{#2}{#100}}% + +% north-north-east monomorphism with lower name +\newcommand{\nnemonO}{\@ifnextchar[{\basicnnemonO}{\basicnnemonO[67]}}% + +% basic north-north-east epimorphism +\def\basicnneepi[#1]{\NNEEPI{}{}{#100}}% + +% north-north-east epimorphism +\newcommand{\nneepi}{\@ifnextchar[{\basicnneepi}{\basicnneepi[67]}}% + +% basic north-north-east epimorphism with upper name +\def\basicNneepi[#1]#2{\NNEEPI{#2}{}{#100}}% + +% north-north-east epimorphism with upper name +\newcommand{\Nneepi}{\@ifnextchar[{\basicNneepi}{\basicNneepi[67]}}% + +% basic north-north-east epimorphism with lower name +\def\basicnneepI[#1]#2{\NNEEPI{}{#2}{#100}}% + +% north-north-east epimorphism with lower name +\newcommand{\nneepI}{\@ifnextchar[{\basicnneepI}{\basicnneepI[67]}}% + +% basic north-north-east bimorphism +\def\basicnnebimo[#1]{\NNEBIMO{}{}{#100}}% + +% north-north-east bimorphism +\newcommand{\nnebimo}{\@ifnextchar[{\basicnnebimo}{\basicnnebimo[67]}}% + +% basic north-north-east bimorphism with upper name +\def\basicNnebimo[#1]#2{\NNEBIMO{#2}{}{#100}}% + +% north-north-east bimorphism with upper name +\newcommand{\Nnebimo}{\@ifnextchar[{\basicNnebimo}{\basicNnebimo[67]}}% + +% basic north-north-east bimorphism with lower name +\def\basicnnebimO[#1]#2{\NNEBIMO{}{#2}{#100}}% + +% north-north-east bimorphism with lower name +\newcommand{\nnebimO}{\@ifnextchar[{\basicnnebimO}{\basicnnebimO[67]}}% + +% basic north-north-east isomorphism +\def\basicnneiso[#1]{\NNEAR{\cong}{}{#100}}% + +% north-north-east isomorphism +\newcommand{\nneiso}{\@ifnextchar[{\basicnneiso}{\basicnneiso[67]}}% + +% basic north-north-east isomorphism with upper name +\def\basicNneiso[#1]#2{\NNEAR{#2}{\cong}{#100}}% + +% north-north-east isomorphism with upper name +\newcommand{\Nneiso}{\@ifnextchar[{\basicNneiso}{\basicNneiso[67]}}% + +% basic north-north-east isomorphism with lower name +\def\basicnneisO[#1]#2{\NNEAR{\cong}{#2}{#100}}% + +% north-north-east isomorphism with lower name +\newcommand{\nneisO}{\@ifnextchar[{\basicnneisO}{\basicnneisO[67]}}% + +% basic north-north-east equality +\def\basicnneeql[#1]{\NNEEQL{}{}{#100}}% + +% north-north-east equality +\newcommand{\nneeql}{\@ifnextchar[{\basicnneeql}{\basicnneeql[67]}}% + +% basic north-north-east equality with upper name +\def\basicNneeql[#1]#2{\NNEEQL{#2}{}{#100}}% + +% north-north-east equality with upper name +\newcommand{\Nneeql}{\@ifnextchar[{\basicNneeql}{\basicNneeql[67]}}% + +% basic north-north-east equality with lower name +\def\basicnneeqL[#1]#2{\NNEEQL{}{#2}{#100}}% + +% north-north-east equality with lower name +\newcommand{\nneeqL}{\@ifnextchar[{\basicnneeqL}{\basicnneeqL[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 distributors +\def\basicnnebidist[#1]{\NNEBIDIST{}{}{#100}}% + +% north-north-east pair of distributors +\newcommand{\nnebidist}{\@ifnextchar[{\basicnnebidist}{\basicnnebidist[67]}}% + +% basic north-north-east pair of distributors with names +\def\basicNnebidist[#1]#2#3{\NNEBIDIST{#2}{#3}{#100}}% + +% north-north-east pair of distributors with names +\newcommand{\Nnebidist}{\@ifnextchar[{\basicNnebidist}{\basicNnebidist[67]}}% +\let\nnebidisT=\Nnebidist + +% 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 + +% basic north-north-east pair of adjoint distributors +\def\basicnneadjdist[#1]{\NNEADJDIST{}{}{#100}}% + +% north-north-east pair of adjoint distributors +\newcommand{\nneadjdist}{\@ifnextchar[{\basicnneadjdist}{\basicnneadjdist[67]}}% + +% basic north-north-east pair of adjoint distributors with names +\def\basicNneadjdist[#1]#2#3{\NNEADJDIST{#2}{#3}{#100}}% + +% north-north-east pair of adjoint distributors with names +\newcommand{\Nneadjdist}{\@ifnextchar[{\basicNneadjdist}{\basicNneadjdist[67]}}% +\let\nneadjdisT=\Nneadjdist + + +% 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){\line(1,-2){#3}}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEDIST{f}{g}{n} draws a south-south-east distributor +% with names f, g and length n units +\newcommand{\SSEDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\line(1,-2){#3}}% +\put(\Z,-#3){\ssehead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \SSEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\SSEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Z,#3)(\value{z},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEMONO{f}{g}{n} draws a south-south-east monomorphism +% with names f,g and length n units +\newcommand{\SSEMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}% +\put(-\monolength,\secondmonolength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEEPI{f}{g}{n} draws a south-south-east epimorphism +% with names f, g and length n units +\newcommand{\SSEEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\line(1,-2){\bimolength}}% +\put(\epilength,-\secondepilength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEBIMO{f}{g}{n} draws a south-south-east bimorphism +% with names f,g and length n units +\newcommand{\SSEBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}% +\put(-\monolength,\secondmonolength){\ssehead}% +\put(\epilength,-\secondepilength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEEQL{f}{g}{n} draws a south-south-east equality +% with names f,g and length n units +\newcommand{\SSEEQL}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\begin{picture}(0,0)% +\truex{44}\truey{89}% +\put(-\value{y},-\value{x}){\line(1,-2){#3}}% +\put(\value{y},\value{x}){\line(1,-2){#3}}% +\end{picture}}% +\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}){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\ssehead}% +\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}}% + +% \SSEBIDIST{f}{g}{n} draws a pair of south-south-east distributors +% with names f,g and length n units +\newcommand{\SSEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,#3){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\ssehead}% +\end{picture}} +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\put(\value{x},\value{y}){\circle{\value{z}}}% +\truex{500}\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}){\line(1,-2){#3}}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\nnwhead}% +\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}}% + +% \SSEADJDIST{f}{g}{n} draws a south-south-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\SSEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,#3){\begin{picture}(0,0)% +\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}){\line(1,-2){#3}}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\nnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\truex{500}\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 distributor +\def\basicssedist[#1]{\SSEDIST{}{}{#100}}% + +% south-south-east distributor +\newcommand{\ssedist}{\@ifnextchar[{\basicssedist}{\basicssedist[67]}}% + +% basic south-south-east distributor with upper name +\def\basicSsedist[#1]#2{\SSEDIST{#2}{}{#100}}% + +% south-south-east distributor with upper name +\newcommand{\Ssedist}{\@ifnextchar[{\basicSsedist}{\basicSsedist[67]}}% + +% basic south-south-east distributor with lower name +\def\basicssedisT[#1]#2{\SSEDIST{}{#2}{#100}}% + +% south-south-east distributor with lower name +\newcommand{\ssedisT}{\@ifnextchar[{\basicssedisT}{\basicssedisT[67]}}% + +% basic south-south-east dotted arrow +\def\basicssedotar[#1]{\SSEDOTAR{}{}{#100}}% + +% south-south-east dotted arrow +\newcommand{\ssedotar}{\@ifnextchar[{\basicssedotar}{\basicssedotar[67]}}% + +% basic south-south-east dotted arrow with upper name +\def\basicSsedotar[#1]#2{\SSEDOTAR{#2}{}{#100}}% + +% south-south-east dotted arrow with upper name +\newcommand{\Ssedotar}{\@ifnextchar[{\basicSsedotar}{\basicSsedotar[67]}}% + +% basic south-south-east dotted arrow with lower name +\def\basicssedotaR[#1]#2{\SSEDOTAR{}{#2}{#100}}% + +% south-south-east dotted arrow with lower name +\newcommand{\ssedotaR}{\@ifnextchar[{\basicssedotaR}{\basicssedotaR[67]}}% + +% basic south-south-east monomorphism +\def\basicssemono[#1]{\SSEMONO{}{}{#100}}% + +% south-south-east monomorphism +\newcommand{\ssemono}{\@ifnextchar[{\basicssemono}{\basicssemono[67]}}% + +% basic south-south-east monomorphism with upper name +\def\basicSsemono[#1]#2{\SSEMONO{#2}{}{#100}}% + +% south-south-east monomorphism with upper name +\newcommand{\Ssemono}{\@ifnextchar[{\basicSsemono}{\basicSsemono[67]}}% + +% basic south-south-east monomorphism with lower name +\def\basicssemonO[#1]#2{\SSEMONO{}{#2}{#100}}% + +% south-south-east monomorphism with lower name +\newcommand{\ssemonO}{\@ifnextchar[{\basicssemonO}{\basicssemonO[67]}}% + +% basic south-south-east epimorphism +\def\basicsseepi[#1]{\SSEEPI{}{}{#100}}% + +% south-south-east epimorphism +\newcommand{\sseepi}{\@ifnextchar[{\basicsseepi}{\basicsseepi[67]}}% + +% basic south-south-east epimorphism with upper name +\def\basicSseepi[#1]#2{\SSEEPI{#2}{}{#100}}% + +% south-south-east epimorphism with upper name +\newcommand{\Sseepi}{\@ifnextchar[{\basicSseepi}{\basicSseepi[67]}}% + +% basic south-south-east epimorphism with lower name +\def\basicsseepI[#1]#2{\SSEEPI{}{#2}{#100}}% + +% south-south-east epimorphism with lower name +\newcommand{\sseepI}{\@ifnextchar[{\basicsseepI}{\basicsseepI[67]}}% + +% basic south-south-east bimorphism +\def\basicssebimo[#1]{\SSEBIMO{}{}{#100}}% + +% south-south-east bimorphism +\newcommand{\ssebimo}{\@ifnextchar[{\basicssebimo}{\basicssebimo[67]}}% + +% basic south-south-east bimorphism with upper name +\def\basicSsebimo[#1]#2{\SSEBIMO{#2}{}{#100}}% + +% south-south-east bimorphism with upper name +\newcommand{\Ssebimo}{\@ifnextchar[{\basicSsebimo}{\basicSsebimo[67]}}% + +% basic south-south-east bimorphism with lower name +\def\basicssebimO[#1]#2{\SSEBIMO{}{#2}{#100}}% + +% south-south-east bimorphism with lower name +\newcommand{\ssebimO}{\@ifnextchar[{\basicssebimO}{\basicssebimO[67]}}% + +% basic south-south-east isomorphism +\def\basicsseiso[#1]{\SSEAR{\cong}{}{#100}}% + +% south-south-east isomorphism +\newcommand{\sseiso}{\@ifnextchar[{\basicsseiso}{\basicsseiso[67]}}% + +% basic south-south-east isomorphism with upper name +\def\basicSseiso[#1]#2{\SSEAR{#2}{\cong}{#100}}% + +% south-south-east isomorphism with upper name +\newcommand{\Sseiso}{\@ifnextchar[{\basicSseiso}{\basicSseiso[67]}}% + +% basic south-south-east isomorphism with lower name +\def\basicsseisO[#1]#2{\SSEAR{\cong}{#2}{#100}}% + +% south-south-east isomorphism with lower name +\newcommand{\sseisO}{\@ifnextchar[{\basicsseisO}{\basicsseisO[67]}}% + +% basic south-south-east equality +\def\basicsseeql[#1]{\SSEEQL{}{}{#100}}% + +% south-south-east equality +\newcommand{\sseeql}{\@ifnextchar[{\basicsseeql}{\basicsseeql[67]}}% + +% basic south-south-east equality with upper name +\def\basicSseeql[#1]#2{\SSEEQL{#2}{}{#100}}% + +% south-south-east equality with upper name +\newcommand{\Sseeql}{\@ifnextchar[{\basicSseeql}{\basicSseeql[67]}}% + +% basic south-south-east equality with lower name +\def\basicsseeqL[#1]#2{\SSEEQL{}{#2}{#100}}% + +% south-south-east equality with lower name +\newcommand{\sseeqL}{\@ifnextchar[{\basicsseeqL}{\basicsseeqL[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 distributors +\def\basicssebidist[#1]{\SSEBIDIST{}{}{#100}}% + +% south-south-east pair of distributors +\newcommand{\ssebidist}{\@ifnextchar[{\basicssebidist}{\basicssebidist[67]}}% + +% basic south-south-east pair of distributors with names +\def\basicSsebidist[#1]#2#3{\SSEBIDIST{#2}{#3}{#100}}% + +% south-south-east pair of distributors with names +\newcommand{\Ssebidist}{\@ifnextchar[{\basicSsebidist}{\basicSsebidist[67]}}% +\let\ssebidisT=\Ssebidist + +% 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 + +% basic south-south-east pair of adjoint distributors +\def\basicsseadjdist[#1]{\SSEADJDIST{}{}{#100}}% + +% south-south-east pair of adjoint distributors +\newcommand{\sseadjdist}{\@ifnextchar[{\basicsseadjdist}{\basicsseadjdist[67]}}% + +% basic south-south-east pair of adjoint distributors with names +\def\basicSseadjdist[#1]#2#3{\SSEADJDIST{#2}{#3}{#100}}% + +% south-south-east pair of adjoint distributors with names +\newcommand{\Sseadjdist}{\@ifnextchar[{\basicSseadjdist}{\basicSseadjdist[67]}}% +\let\sseadjdisT=\Sseadjdist + + +% 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){\line(-1,-2){#3}}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWDIST{f}{g}{n} draws a south-south-west distributor +% with names f, g and length n units +\newcommand{\SSWDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\line(-1,-2){#3}}% +\put(-\Z,-#3){\sswhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \SSWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\SSWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Z,#3)(-\value{z},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWMONO{f}{g}{n} draws a south-south-west monomorphism +% with names f,g and length n units +\newcommand{\SSWMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}% +\put(\monolength,\secondmonolength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWEPI{f}{g}{n} draws a south-south-west epimorphism +% with names f, g and length n units +\newcommand{\SSWEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\line(-1,-2){\bimolength}}% +\put(-\epilength,-\secondepilength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWBIMO{f}{g}{n} draws a south-south-west bimorphism +% with names f,g and length n units +\newcommand{\SSWBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}% +\put(\monolength,\secondmonolength){\sswhead}% +\put(-\epilength,-\secondepilength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}){\line(-1,-2){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\sswhead}% +\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}}% + +% \SSWBIDIST{f}{g}{n} draws a pair of south-south-west distributors +% with names f,g and length n units +\newcommand{\SSWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,#3){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(-1,-2){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\sswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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}){\line(-1,-2){#3}}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\line(1,2){#3}}% +\put(-\value{x},\value{y}){\nnehead}% +\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}}% + +% \SSWADJDIST{f}{g}{n} draws a south-south-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\SSWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,#3){\begin{picture}(0,0)% +\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}){\line(-1,-2){#3}}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\line(1,2){#3}}% +\put(-\value{x},\value{y}){\nnehead}% +\end{picture}} +\put(-\value{x},\value{y}){\circle{\value{z}}}% +\put(\value{x},-\value{y}){\circle{\value{z}}}% +\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 distributor +\def\basicsswdist[#1]{\SSWDIST{}{}{#100}}% + +% south-south-west distributor +\newcommand{\sswdist}{\@ifnextchar[{\basicsswdist}{\basicsswdist[67]}}% + +% basic south-south-west distributor with upper name +\def\basicSswdist[#1]#2{\SSWDIST{#2}{}{#100}}% + +% south-south-west distributor with upper name +\newcommand{\Sswdist}{\@ifnextchar[{\basicSswdist}{\basicSswdist[67]}}% + +% basic south-south-west distributor with lower name +\def\basicsswdisT[#1]#2{\SSWDIST{}{#2}{#100}}% + +% south-south-west distributor with lower name +\newcommand{\sswdisT}{\@ifnextchar[{\basicsswdisT}{\basicsswdisT[67]}}% + +% basic south-south-west dotted arrow +\def\basicsswdotar[#1]{\SSWDOTAR{}{}{#100}}% + +% south-south-west dotted arrow +\newcommand{\sswdotar}{\@ifnextchar[{\basicsswdotar}{\basicsswdotar[67]}}% + +% basic south-south-west dotted arrow with upper name +\def\basicSswdotar[#1]#2{\SSWDOTAR{#2}{}{#100}}% + +% south-south-west dotted arrow with upper name +\newcommand{\Sswdotar}{\@ifnextchar[{\basicSswdotar}{\basicSswdotar[67]}}% + +% basic south-south-west dotted arrow with lower name +\def\basicsswdotaR[#1]#2{\SSWDOTAR{}{#2}{#100}}% + +% south-south-west dotted arrow with lower name +\newcommand{\sswdotaR}{\@ifnextchar[{\basicsswdotaR}{\basicsswdotaR[67]}}% + +% basic south-south-west monomorphism +\def\basicsswmono[#1]{\SSWMONO{}{}{#100}}% + +% south-south-west monomorphism +\newcommand{\sswmono}{\@ifnextchar[{\basicsswmono}{\basicsswmono[67]}}% + +% basic south-south-west monomorphism with upper name +\def\basicSswmono[#1]#2{\SSWMONO{#2}{}{#100}}% + +% south-south-west monomorphism with upper name +\newcommand{\Sswmono}{\@ifnextchar[{\basicSswmono}{\basicSswmono[67]}}% + +% basic south-south-west monomorphism with lower name +\def\basicsswmonO[#1]#2{\SSWMONO{}{#2}{#100}}% + +% south-south-west monomorphism with lower name +\newcommand{\sswmonO}{\@ifnextchar[{\basicsswmonO}{\basicsswmonO[67]}}% + +% basic south-south-west epimorphism +\def\basicsswepi[#1]{\SSWEPI{}{}{#100}}% + +% south-south-west epimorphism +\newcommand{\sswepi}{\@ifnextchar[{\basicsswepi}{\basicsswepi[67]}}% + +% basic south-south-west epimorphism with upper name +\def\basicSswepi[#1]#2{\SSWEPI{#2}{}{#100}}% + +% south-south-west epimorphism with upper name +\newcommand{\Sswepi}{\@ifnextchar[{\basicSswepi}{\basicSswepi[67]}}% + +% basic south-south-west epimorphism with lower name +\def\basicsswepI[#1]#2{\SSWEPI{}{#2}{#100}}% + +% south-south-west epimorphism with lower name +\newcommand{\sswepI}{\@ifnextchar[{\basicsswepI}{\basicsswepI[67]}}% + +% basic south-south-west bimorphism +\def\basicsswbimo[#1]{\SSWBIMO{}{}{#100}}% + +% south-south-west bimorphism +\newcommand{\sswbimo}{\@ifnextchar[{\basicsswbimo}{\basicsswbimo[67]}}% + +% basic south-south-west bimorphism with upper name +\def\basicSswbimo[#1]#2{\SSWBIMO{#2}{}{#100}}% + +% south-south-west bimorphism with upper name +\newcommand{\Sswbimo}{\@ifnextchar[{\basicSswbimo}{\basicSswbimo[67]}}% + +% basic south-south-west bimorphism with lower name +\def\basicsswbimO[#1]#2{\SSWBIMO{}{#2}{#100}}% + +% south-south-west bimorphism with lower name +\newcommand{\sswbimO}{\@ifnextchar[{\basicsswbimO}{\basicsswbimO[67]}}% + +% basic south-south-west isomorphism +\def\basicsswiso[#1]{\SSWAR{\cong}{}{#100}}% + +% south-south-west isomorphism +\newcommand{\sswiso}{\@ifnextchar[{\basicsswiso}{\basicsswiso[67]}}% + +% basic south-south-west isomorphism with upper name +\def\basicSswiso[#1]#2{\SSWAR{#2}{\cong}{#100}}% + +% south-south-west isomorphism with upper name +\newcommand{\Sswiso}{\@ifnextchar[{\basicSswiso}{\basicSswiso[67]}}% + +% basic south-south-west isomorphism with lower name +\def\basicsswisO[#1]#2{\SSWAR{\cong}{#2}{#100}}% + +% south-south-west isomorphism with lower name +\newcommand{\sswisO}{\@ifnextchar[{\basicsswisO}{\basicsswisO[67]}}% + +% south-south-west equality +\let\ssweql=\nneeql% + +% south-south-west equality with upper name +\let\Ssweql=\Nneeql% + +% south-south-west equality with lower name +\let\ssweqL=\nneeqL% + +% 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 distributors +\def\basicsswbidist[#1]{\SSWBIDIST{}{}{#100}}% + +% south-south-west pair of distributors +\newcommand{\sswbidist}{\@ifnextchar[{\basicsswbidist}{\basicsswbidist[67]}}% + +% basic south-south-west pair of distributors with names +\def\basicSswbidist[#1]#2#3{\SSWBIDIST{#2}{#3}{#100}}% + +% south-south-west pair of distributors with names +\newcommand{\Sswbidist}{\@ifnextchar[{\basicSswbidist}{\basicSswbidist[67]}}% +\let\sswbidisT=\Sswbidist + +% 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 + +% basic south-south-west pair of adjoint distributors +\def\basicsswadjdist[#1]{\SSWADJDIST{}{}{#100}}% + +% south-south-west pair of adjoint distributors +\newcommand{\sswadjdist}{\@ifnextchar[{\basicsswadjdist}{\basicsswadjdist[67]}}% + +% basic south-south-west pair of adjoint distributors with names +\def\basicSswadjdist[#1]#2#3{\SSWADJDIST{#2}{#3}{#100}}% + +% south-south-west pair of adjoint distributors with names +\newcommand{\Sswadjdist}{\@ifnextchar[{\basicSswadjdist}{\basicSswadjdist[67]}}% +\let\sswadjdisT=\Sswadjdist + + +% 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){\line(-1,2){#3}}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWDIST{f}{g}{n} draws a north-north-west distributor +% with names f, g and length n units +\newcommand{\NNWDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\line(-1,2){#3}}% +\put(-\Z,#3){\nnwhead}% +\truex{400}% +\put(0,0){\circle{\value{x}}}% +\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}}% + +% \NNWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\NNWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Z,-#3)(-\value{z},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWMONO{f}{g}{n} draws a north-north-west monomorphism +% with names f,g and length n units +\newcommand{\NNWMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}% +\put(\monolength,-\secondmonolength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWEPI{f}{g}{n} draws a north-north-west epimorphism +% with names f, g and length n units +\newcommand{\NNWEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\line(-1,2){\bimolength}}% +\put(-\epilength,\secondepilength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWBIMO{f}{g}{n} draws a north-north-west bimorphism +% with names f,g and length n units +\newcommand{\NNWBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}% +\put(\monolength,-\secondmonolength){\nnwhead}% +\put(-\epilength,\secondepilength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\nnwhead}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\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}}% + +% \NNWBIDIST{f}{g}{n} draws a pair of north-north-west distributors +% with names f,g and length n units +\newcommand{\NNWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,-#3){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\nnwhead}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\end{picture}} +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\put(\value{x},\value{y}){\circle{\value{z}}}% +\truex{500}\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}){\line(-1,2){#3}}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\put(-\monolength,\secondepilength){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\ssehead}% +\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}}% + +% \NNWADJDIST{f}{g}{n} draws a north-north-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\NNWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,-#3){\begin{picture}(0,0)% +\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}){\line(-1,2){#3}}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\put(-\monolength,\secondepilength){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\ssehead}% +\end{picture}} +\put(\value{x},\value{y}){\circle{\value{z}}}% +\put(-\value{x},-\value{y}){\circle{\value{z}}}% +\truex{500}\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-west distributor +\def\basicnnwdist[#1]{\NNWDIST{}{}{#100}}% + +% north-north-west distributor +\newcommand{\nnwdist}{\@ifnextchar[{\basicnnwdist}{\basicnnwdist[67]}}% + +% basic north-north-west distributor with upper name +\def\basicNnwdist[#1]#2{\NNWDIST{#2}{}{#100}}% + +% north-north-west distributor with upper name +\newcommand{\Nnwdist}{\@ifnextchar[{\basicNnwdist}{\basicNnwdist[67]}}% + +% basic north-north-west distributor with lower name +\def\basicnnwdisT[#1]#2{\NNWDIST{}{#2}{#100}}% + +% north-north-west distributor with lower name +\newcommand{\nnwdisT}{\@ifnextchar[{\basicnnwdisT}{\basicnnwdisT[67]}}% + +% basic north-north-west dotted arrow +\def\basicnnwdotar[#1]{\NNWDOTAR{}{}{#100}}% + +% north-north-west dotted arrow +\newcommand{\nnwdotar}{\@ifnextchar[{\basicnnwdotar}{\basicnnwdotar[67]}}% + +% basic north-north-west dotted arrow with upper name +\def\basicNnwdotar[#1]#2{\NNWDOTAR{#2}{}{#100}}% + +% north-north-west dotted arrow with upper name +\newcommand{\Nnwdotar}{\@ifnextchar[{\basicNnwdotar}{\basicNnwdotar[67]}}% + +% basic north-north-west dotted arrow with lower name +\def\basicnnwdotaR[#1]#2{\NNWDOTAR{}{#2}{#100}}% + +% north-north-west dotted arrow with lower name +\newcommand{\nnwdotaR}{\@ifnextchar[{\basicnnwdotaR}{\basicnnwdotaR[67]}}% + +% basic north-north-west monomorphism +\def\basicnnwmono[#1]{\NNWMONO{}{}{#100}}% + +% north-north-west monomorphism +\newcommand{\nnwmono}{\@ifnextchar[{\basicnnwmono}{\basicnnwmono[67]}}% + +% basic north-north-west monomorphism with upper name +\def\basicNnwmono[#1]#2{\NNWMONO{#2}{}{#100}}% + +% north-north-west monomorphism with upper name +\newcommand{\Nnwmono}{\@ifnextchar[{\basicNnwmono}{\basicNnwmono[67]}}% + +% basic north-north-west monomorphism with lower name +\def\basicnnwmonO[#1]#2{\NNWMONO{}{#2}{#100}}% + +% north-north-west monomorphism with lower name +\newcommand{\nnwmonO}{\@ifnextchar[{\basicnnwmonO}{\basicnnwmonO[67]}}% + +% basic north-north-west epimorphism +\def\basicnnwepi[#1]{\NNWEPI{}{}{#100}}% + +% north-north-west epimorphism +\newcommand{\nnwepi}{\@ifnextchar[{\basicnnwepi}{\basicnnwepi[67]}}% + +% basic north-north-west epimorphism with upper name +\def\basicNnwepi[#1]#2{\NNWEPI{#2}{}{#100}}% + +% north-north-west epimorphism with upper name +\newcommand{\Nnwepi}{\@ifnextchar[{\basicNnwepi}{\basicNnwepi[67]}}% + +% basic north-north-west epimorphism with lower name +\def\basicnnwepI[#1]#2{\NNWEPI{}{#2}{#100}}% + +% north-north-west epimorphism with lower name +\newcommand{\nnwepI}{\@ifnextchar[{\basicnnwepI}{\basicnnwepI[67]}}% + +% basic north-north-west bimorphism +\def\basicnnwbimo[#1]{\NNWBIMO{}{}{#100}}% + +% north-north-west bimorphism +\newcommand{\nnwbimo}{\@ifnextchar[{\basicnnwbimo}{\basicnnwbimo[67]}}% + +% basic north-north-west bimorphism with upper name +\def\basicNnwbimo[#1]#2{\NNWBIMO{#2}{}{#100}}% + +% north-north-west bimorphism with upper name +\newcommand{\Nnwbimo}{\@ifnextchar[{\basicNnwbimo}{\basicNnwbimo[67]}}% + +% basic north-north-west bimorphism with lower name +\def\basicnnwbimO[#1]#2{\NNWBIMO{}{#2}{#100}}% + +% north-north-west bimorphism with lower name +\newcommand{\nnwbimO}{\@ifnextchar[{\basicnnwbimO}{\basicnnwbimO[67]}}% + +% basic north-north-west isomorphism +\def\basicnnwiso[#1]{\NNWAR{\cong}{}{#100}}% + +% north-north-west isomorphism +\newcommand{\nnwiso}{\@ifnextchar[{\basicnnwiso}{\basicnnwiso[67]}}% + +% basic north-north-west isomorphism with upper name +\def\basicNnwiso[#1]#2{\NNWAR{#2}{\cong}{#100}}% + +% north-north-west isomorphism with upper name +\newcommand{\Nnwiso}{\@ifnextchar[{\basicNnwiso}{\basicNnwiso[67]}}% + +% basic north-north-west isomorphism with lower name +\def\basicnnwisO[#1]#2{\NNWAR{\cong}{#2}{#100}}% + +% north-north-west isomorphism with lower name +\newcommand{\nnwisO}{\@ifnextchar[{\basicnnwisO}{\basicnnwisO[67]}}% + +% north-north-west equality +\let\nnweql=\sseeql% + +% north-north-west equality with upper name +\let\Nnweql=\Sseeql% + +% north-north-west equality with lower name +\let\nnweqL=\sseeqL% + +% 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 distributors +\def\basicnnwbidist[#1]{\NNWBIDIST{}{}{#100}}% + +% north-north-east pair of distributors +\newcommand{\nnwbidist}{\@ifnextchar[{\basicnnwbidist}{\basicnnwbidist[67]}}% + +% basic north-north-east pair of distributors with names +\def\basicNnwbidist[#1]#2#3{\NNWBIDIST{#2}{#3}{#100}}% + +% north-north-east pair of distributors with names +\newcommand{\Nnwbidist}{\@ifnextchar[{\basicNnwbidist}{\basicNnwbidist[67]}}% +\let\nnwbidisT=\Nnwbidist + +% 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 + +% basic north-north-east pair of adjoint distributors +\def\basicnnwadjdist[#1]{\NNWADJDIST{}{}{#100}}% + +% north-north-east pair of adjoint distributors +\newcommand{\nnwadjdist}{\@ifnextchar[{\basicnnwadjdist}{\basicnnwadjdist[67]}}% + +% basic north-north-east pair of adjoint distributors with names +\def\basicNnwadjdist[#1]#2#3{\NNWADJDIST{#2}{#3}{#100}}% + +% north-north-east pair of adjoint distributors with names +\newcommand{\Nnwadjdist}{\@ifnextchar[{\basicNnwadjdist}{\basicNnwadjdist[67]}}% +\let\nnwadjdisT=\Nnwadjdist + + +% 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){\line(3,1){#3}}% +\put(\Y,\Z){\eenehead}% +\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){\line(3,-1){#3}}% +\put(\Y,-\Z){\eesehead}% +\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){\line(-3,1){#3}}% +\put(-\Y,\Z){\wwnwhead}% +\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){\line(-3,-1){#3}}% +\put(-\Y,-\Z){\wwswhead}% +\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){\line(1,3){#3}}% +\put(\Y,\Z){\nnnehead}% +\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){\line(-1,-3){#3}}% +\put(-\Y,-\Z){\ssswhead}% +\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){\line(1,-3){#3}}% +\put(\Y,-\Z){\sssehead}% +\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){\line(-1,3){#3}}% +\put(-\Y,\Z){\nnnwhead}% +\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){\line(3,2){#3}}% +\put(\Y,\Z){\neenehead}% +\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){\line(3,-2){#3}}% +\put(\Y,-\Z){\seesehead}% +\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-WEST-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){\line(-3,2){#3}}% +\put(-\Y,\Z){\nwwnwhead}% +\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){\line(-3,-2){#3}}% +\put(-\Y,-\Z){\swwswhead}% +\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){\line(2,3){#3}}% +\put(\Y,\Z){\nennehead}% +\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){\line(-2,-3){#3}}% +\put(-\Y,-\Z){\swsswhead}% +\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){\line(2,-3){#3}}% +\put(\Y,-\Z){\sessehead}% +\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){\line(-2,3){#3}}% +\put(-\Y,\Z){\nwnnwhead}% +\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 diff --git a/macros/generic/diagrams/borceux/diagram/MaxiDiagram b/macros/generic/diagrams/borceux/diagram/MaxiDiagram new file mode 100644 index 0000000000..c5d3537322 --- /dev/null +++ b/macros/generic/diagrams/borceux/diagram/MaxiDiagram @@ -0,0 +1,10213 @@ +% DIAGRAM MACROS (version 3.1) +% MAXI-DIAGRAM FILE +% FILE DIAGRAM AUGMENTED WITH triar, triadjar (with or without names) +% AND quadriar, quadriadjar, quintiar, quintiadjar (without names) + +\catcode`\@=11 + +%%%%% FIXING SOME PARAMETERS + +%%% Fixing the printerresolution +%%% unit = 1 dpi +\newcount\printerresolution +\global\printerresolution=300 + +%%% Fixing the length of a segment in an arrowhead +%%% unit = 0.01pt +\newcount\headsize +\global\headsize=450 + +%%% Fixing the thickness of an arrowhead +%%% value = 1/5 of the font size +\font\dotfont = lcircle10 at 3pt + +%%% Fixing the distance between the two heads of an epimorphism +%%% unit = 0.01pt +\newcount\epihead +\global\epihead=200 + +%%% Fixing the default scaling factor for diagrams +\newcount\defaultscale +\def\setdefaultscale#1{\global\defaultscale=#1} +\setdefaultscale{100} + +\newcount\actualtextarrowspace +\newcount\actualtextarrowlength + +% \computetextparameters computes the parameters +% required to design a text arrow +\newcommand{\computetextparameters}% +{\global\actualtextarrowspace=\textarrowlength% +\global\advance\actualtextarrowspace by 3% +\global\actualtextarrowlength=\textarrowlength% +\global\multiply\actualtextarrowlength by 100} + +%%% Fixing the default length of text arrows +\newcount\textarrowlength +\def\settextarrowlength#1{\global\textarrowlength=#1% +\computetextparameters} +\settextarrowlength{20} + +\newcount\actualdisplayarrowspace +\newcount\actualdisplayarrowlength + +% \computedisplayparameters computes the parameters +% required to design a displayed arrow +\newcommand{\computedisplayparameters}% +{\global\actualdisplayarrowspace=\displayarrowlength% +\global\advance\actualdisplayarrowspace by 3% +\global\actualdisplayarrowlength=\displayarrowlength% +\global\multiply\actualdisplayarrowlength by 100} + +%%% Fixing the default length of displayed arrows +\newcount\displayarrowlength +\def\setdisplayarrowlength#1{\global\displayarrowlength=#1% +\computedisplayparameters} +\setdisplayarrowlength{30} + + +% ERROR MESSAGES + +% Checking the next token without gobbling blanks +\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}% +\futurelet\@tempc\@ifntok} +\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% +\@tempd} + +% \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error +% halt with error help message HLP. +\def\@diagramerror#1#2{% +\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}% +\typeout{Diagram error. \space See User's guide for explanation.^^J + \space\@spaces\@spaces\@spaces Type \space H <return> \space for + immediate help.}\errmessage{#1}} + +\newif\ifdiagram + +% error test and message for text arrows +\def\testtextmode{% +\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you +should use east or west diagram arrows, not forward or backward text arrows. +Try proceeding now, typeset could succeed but with unpredictable output.} +\else\ifmmode\relax\else% +\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode. +Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi} + +% error test and message for diagram arrows +\def\testdiagrammode{\ifdiagram\relax\else +\@diagramerror{Diagram arrows are not allowed in formulas}{Here you +should use forward or backward text arrows, not diagram arrows. Proceeding +could work with unpredictable output, but overflow arithmetic +could also occur.}\fi} + +% error test and message for diagrams in math mode +\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams +allowed in math mode.}{You should leave math mode before +introducing your diagram. All items in the diagram will automatically be +processed in math mode.}\else\relax\fi\global\diagramtrue} + +\global\diagramfalse + +%%%%% DESIGING THE ARROW HEADS + +%%% Customizing the unitlength for the sake of precision +\setlength{\unitlength}{0.01pt} + +%%% Printing one dot at the required scale +\def\DOT{{\dotfont q}} + +%%% Computing the distance between two dots in an arrowhead +\newcount\basicstep +\basicstep=7227 +\global\divide\basicstep by \printerresolution + +%%% Computing the number of dots in an arrowhead +\newcount\numberofsteps +\numberofsteps=\headsize +\global\divide\numberofsteps by \basicstep + +%%% Producing an arrow head +\newcommand{\makehead}[3]{% +\begin{picture}(0,0)% +\multiput(0,0)(#1,#2){#3}{\DOT}% +\multiput(0,0)(-#2,#1){#3}{\DOT}% +\end{picture}} + +%%% Creating bitmap images of the arrowheads +\newcount\xstep +\newcount\ystep + +\newsavebox{\northhead} +\savebox{\northhead}{% +\xstep=-\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nhead}{\usebox{\northhead}} + +\newsavebox{\easthead} +\savebox{\easthead}{% +\xstep=-\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=-\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ehead}{\usebox{\easthead}} + +\newsavebox{\southhead} +\savebox{\southhead}{% +\xstep=\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\shead}{\usebox{\southhead}} + +\newsavebox{\westhead} +\savebox{\westhead}{% +\xstep=\basicstep% +\multiply\xstep by 7071% +\divide\xstep by 10000% +\ystep=-\xstep% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\whead}{\usebox{\westhead}} + +\newsavebox{\northwesthead} +\savebox{\northwesthead}{% +\makehead{0}{-\basicstep}{\numberofsteps}} +\newcommand{\nwhead}{\usebox{\northwesthead}} + +\newsavebox{\northeasthead} +\savebox{\northeasthead}{% +\makehead{-\basicstep}{0}{\numberofsteps}} +\newcommand{\nehead}{\usebox{\northeasthead}} + +\newsavebox{\southwesthead} +\savebox{\southwesthead}{% +\makehead{\basicstep}{0}{\numberofsteps}} +\newcommand{\swhead}{\usebox{\southwesthead}} + +\newsavebox{\southeasthead} +\savebox{\southeasthead}{% +\makehead{0}{\basicstep}{\numberofsteps}} +\newcommand{\sehead}{\usebox{\southeasthead}} + +\newsavebox{\eastnortheasthead} +\savebox{\eastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\enehead}{\usebox{\eastnortheasthead}} + +\newsavebox{\northnortheasthead} +\savebox{\northnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnehead}{\usebox{\northnortheasthead}} + +\newsavebox{\southsouthwesthead} +\savebox{\southsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sswhead}{\usebox{\southsouthwesthead}} + +\newsavebox{\westsouthwesthead} +\savebox{\westsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9486% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wswhead}{\usebox{\westsouthwesthead}} + +\newsavebox{\westnorthwesthead} +\savebox{\westnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wnwhead}{\usebox{\westnorthwesthead}} + +\newsavebox{\eastsoutheasthead} +\savebox{\eastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\esehead}{\usebox{\eastsoutheasthead}} + +\newsavebox{\northnorthwesthead} +\savebox{\northnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnwhead}{\usebox{\northnorthwesthead}} + +\newsavebox{\southsoutheasthead} +\savebox{\southsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 3162% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 3% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ssehead}{\usebox{\southsoutheasthead}} + +\newsavebox{\easteastnortheasthead} +\savebox{\easteastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\eenehead}{\usebox{\easteastnortheasthead}} + +\newsavebox{\northnorthnortheasthead} +\savebox{\northnorthnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnnehead}{\usebox{\northnorthnortheasthead}} + +\newsavebox{\southsouthsouthwesthead} +\savebox{\southsouthsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\ssswhead}{\usebox{\southsouthsouthwesthead}} + +\newsavebox{\westwestsouthwesthead} +\savebox{\westwestsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 8944% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wwswhead}{\usebox{\westwestsouthwesthead}} + +\newsavebox{\westwestnorthwesthead} +\savebox{\westwestnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\wwnwhead}{\usebox{\westwestnorthwesthead}} + +\newsavebox{\easteastsoutheasthead} +\savebox{\easteastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\eesehead}{\usebox{\easteastsoutheasthead}} + +\newsavebox{\northnorthnorthwesthead} +\savebox{\northnorthnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nnnwhead}{\usebox{\northnorthnorthwesthead}} + +\newsavebox{\southsouthsoutheasthead} +\savebox{\southsouthsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 4472% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 2% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sssehead}{\usebox{\southsouthsoutheasthead}} + +\newsavebox{\northeasteastnortheasthead} +\savebox{\northeasteastnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\neenehead}{\usebox{\northeasteastnortheasthead}} + +\newsavebox{\northeastnorthnortheasthead} +\savebox{\northeastnorthnortheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nennehead}{\usebox{\northeastnorthnortheasthead}} + +\newsavebox{\southwestsouthsouthwesthead} +\savebox{\southwestsouthsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\swsswhead}{\usebox{\southwestsouthsouthwesthead}} + +\newsavebox{\southwestwestsouthwesthead} +\savebox{\southwestwestsouthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 9806% +\divide\xstep by 10000% +\ystep=\xstep% +\divide\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\swwswhead}{\usebox{\southwestwestsouthwesthead}} + +\newsavebox{\northwestwestnorthwesthead} +\savebox{\northwestwestnorthwesthead}{% +\xstep=\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nwwnwhead}{\usebox{\northwestwestnorthwesthead}} + +\newsavebox{\southeasteastsoutheasthead} +\savebox{\southeasteastsoutheasthead}{% +\xstep=-\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by -5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\seesehead}{\usebox{\southeasteastsoutheasthead}} + +\newsavebox{\northwestnorthnorthwesthead} +\savebox{\northwestnorthnorthwesthead}{% +\xstep=-\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\nwnnwhead}{\usebox{\northwestnorthnorthwesthead}} + +\newsavebox{\southeastsouthsoutheasthead} +\savebox{\southeastsouthsoutheasthead}{% +\xstep=\basicstep% +\multiply\xstep by 1961% +\divide\xstep by 10000% +\ystep=\xstep% +\multiply\ystep by 5% +\makehead{\xstep}{\ystep}{\numberofsteps}} +\newcommand{\sessehead}{\usebox{\southeastsouthsoutheasthead}} + +%%% Restoring the standard unitlength +\setlength{\unitlength}{1pt} + + +% MACROS FOR MARKED ARROWS + +\newsavebox{\isomorphismmark} +\newcommand{\isomark}[1]{\savebox{\isomorphismmark}{#1}} +\isomark{$\cong$} +\newcommand{\isosign}{\usebox{\isomorphismmark}} + +\newif\ifuserdist +\newsavebox{\distributormark} +\newcommand{\distmark}[1]{\ifx#1\distcircle\userdistfalse\else% +\userdisttrue\savebox{\distributormark}{#1}\fi} +\newsavebox{\distributorcircle} +\savebox{\distributorcircle}{\begin{picture}(0,0)% +\put(0,0){\circle{4}}\end{picture}} +\newcommand{\distsign}{\ifuserdist\usebox{\distributormark}\else% +\usebox{\distributorcircle}\fi} +\userdistfalse + + + +% MACROS FOR ADJUSTING THE LENGTH OF MONOMORPHISMS AND EPIMORPHISMS + +\newcount\monolength +\newcount\epilength +\newcount\bimolength +\newcount\secondmonolength +\newcount\secondepilength + +\newcount\monotail% +\global\monotail=\headsize% +\global\multiply\monotail by 7070% +\global\divide\monotail by 10000% + +\newcount\truemonotail% +\newcount\trueepihead% + +\def\truetail{\truemonotail=\monotail% +\multiply\truemonotail by 100% +\divide\truemonotail by \SCALE} + +\def\truehead{\trueepihead=\epihead% +\multiply\trueepihead by 100% +\divide\trueepihead by \SCALE} + +\newcount\Monotail% +\global\Monotail=\headsize% +\global\divide\Monotail by 2% + +\newcount\Epihead% +\global\Epihead=\epihead% +\global\multiply\Epihead by 7070% +\global\divide\Epihead by 10000% + +\newcount\Truemonotail% +\newcount\Trueepihead% + +\def\Truetail{\Truemonotail=\Monotail% +\multiply\Truemonotail by 100% +\divide\Truemonotail by \SCALE}% + +\def\Truehead{\Trueepihead=\Epihead% +\multiply\Trueepihead by 100% +\divide\Trueepihead by \SCALE} + +\newcount\MonoTail% +\global\MonoTail=\headsize% +\global\multiply\MonoTail by 6324% +\global\divide\MonoTail by 10000% + +\newcount\EpiHead% +\global\EpiHead=\epihead% +\global\multiply\EpiHead by 8944% +\global\divide\EpiHead by 10000% + +\newcount\TrueMonoTail% +\newcount\TrueEpiHead% + +\def\TrueTail{\TrueMonoTail=\MonoTail% +\multiply\TrueMonoTail by 100% +\divide\TrueMonoTail by \SCALE}% + +\def\TrueHead{\TrueEpiHead=\EpiHead% +\multiply\TrueEpiHead by 100% +\divide\TrueEpiHead by \SCALE} + +\newcount\monotaiL% +\global\monotaiL=\headsize% +\global\multiply\monotaiL by 3162% +\global\divide\monotaiL by 10000% + +\newcount\epiheaD% +\global\epiheaD=\epihead% +\global\multiply\epiheaD by 4472% +\global\divide\epiheaD by 10000% + +\newcount\truemonotaiL% +\newcount\trueepiheaD% + +\def\truetaiL{\truemonotaiL=\monotaiL% +\multiply\truemonotaiL by 100% +\divide\truemonotaiL by \SCALE}% + +\def\trueheaD{\trueepiheaD=\epiheaD% +\multiply\trueepiheaD by 100% +\divide\trueepiheaD by \SCALE} + + +% 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 + +% moving a name up +\newcommand{\TUP}[1]{\raisebox{0pt}[0pt][3pt]{}#1} + +% moving a name down +\newcommand{\TDOWN}[1]{\raisebox{0pt}[6pt][0pt]{}#1} + +% \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}}% + +% \ttricase{P} draws the tri-picture P +% with length \textarrowlength pt. +\newcommand{\ttricase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\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}% +\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}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{1pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + + +% MACROS FOR DRAWING DISPLAYED PICTURES + +% moving a name up +\newcommand{\DUP}[1]{\raisebox{0pt}[0pt][4pt]{}#1} + +% moving a name down +\newcommand{\DDOWN}[1]{\raisebox{0pt}[9pt][0pt]{}#1} + +% \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}}% + +% \dtricase{P} draws the tri-picture P +% with length \displayarrowlength pt. +\newcommand{\dtricase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\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}% +\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}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{1pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% IN-TEXT ARROWS + +% \AR{n} draws an arrow of length n units +\newcommand{\AR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \DIST{n} draws a distributor of length n units +\newcommand{\DIST}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\end{picture}}% + +% \DOTAR{n} draws a dotted arrow of length n units +\newcommand{\DOTAR}[1]% +{\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by 300% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(0,0)(300,0){\NUMBEROFDOTS}{\circle*{100}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \MONO{n} draws a monomorphism of length n units +\newcommand{\MONO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\begin{picture}(#1,0)% +\put(\monotail,0){\line(1,0){\monolength}}% +\put(#1,0){\ehead}% +\put(\monotail,0){\ehead}% +\end{picture}}% + +% \EPI{n} draws an epimorphism of length n units +\newcommand{\EPI}[1]% +{\epilength=#1% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-#1,0){\line(1,0){\epilength}}% +\put(-\epihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + +% \BIMO{n} draws a bimorphism of length n units +\newcommand{\BIMO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\epilength=\monolength% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monolength,0){\line(1,0){\epilength}}% +\put(-\monolength,0){\ehead}% +\put(-\epihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + +% \BIAR{n} draws a pair of arrows of length n units +\newcommand{\BIAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\end{picture}}% + +% \BIDIST{n} draws a pair of distributors of length n units +\newcommand{\BIDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,700){\distsign}% +\end{picture}}% + +% \EQL{n} draws an equality of length n units +\newcommand{\EQL}[1]% +{\begin{picture}(#1,0)% +\put(0,100){\line(1,0){#1}}% +\put(0,-100){\line(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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead} +\end{picture}}% + +% \ADJDIST{n} draws a pair of adjoint distibutors of length n units +\newcommand{\ADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead} +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,700){\distsign}% +\end{picture}}% + +% \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}}% + +% 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}% + +% distributor +\newcommand{\dist}{\ifinner\tcase{\DIST}\else\dcase{\DIST}\fi}% + +% distributor with upper name [1] +\newcommand{\Dist}[1]{\ifinner\Tcase{\DIST}{\TUP{#1}}% +\else\Dcase{\DIST}{\TUP{#1}}\fi}% + +% dotted arrow +\newcommand{\dotar}{\ifinner\tcase{\DOTAR}\else\dcase{\DOTAR}\fi}% + +% dotted arrow with upper name [1] +\newcommand{\Dotar}[1]{\ifinner\Tcase{\DOTAR}{#1}% +\else\Dcase{\DOTAR}{#1}\fi}% + +% monomorphism +\newcommand{\mono}{\ifinner\tcase{\MONO}\else\dcase{\MONO}\fi}% + +% monomorphism with upper name [1] +\newcommand{\Mono}[1]{\ifinner\Tcase{\MONO}{#1}\else\Dcase{\MONO}{#1}\fi}% + +% epimorphism +\newcommand{\epi}{\ifinner\tcase{\EPI}\else\dcase{\EPI}\fi}% + +% epimorphism with upper name [1] +\newcommand{\Epi}[1]{\ifinner\Tcase{\EPI}{#1}\else\Dcase{\EPI}{#1}\fi}% + +% bimorphism +\newcommand{\bimo}{\ifinner\tcase{\BIMO}\else\dcase{\BIMO}\fi}% + +% bimorphism with upper name [1] +\newcommand{\Bimo}[1]{\ifinner\Tcase{\BIMO}{#1}% +\else\Dcase{\BIMO}{#1}\fi}% + +% isomorphism +\newcommand{\iso}{\ifinner\Tcase{\AR}{\isosign}\else\Dcase{\AR}{\isosign}\fi}% + +% isomorphism with upper name [1] +\newcommand{\Iso}[1]{\ifinner\Tcase{\AR}{\isosign{#1}}% +\else\Dcase{\AR}{\isosign{#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 distributors +\newcommand{\bidist}{\ifinner\tbicase{\BIDIST}\else\dbicase{\BIDIST}\fi}% + +% pair of distributors with names [1],[2] +\newcommand{\Bidist}[2]{\ifinner\Tbicase{\BIDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\BIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}% + +% equality +\newcommand{\eql}{\ifinner\tcase{\EQL}\else\dcase{\EQL}\fi}% + +% equality with name [1] +\newcommand{\Eql}[1]{\ifinner\Tcase{\EQL}{\TUP{#1}}% +\else\Dcase{\EQL}{\DUP{#1}}\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}% + +% pair of adjoint distributors +\newcommand{\adjdist}{\ifinner\tbicase{\ADJDIST}\else\dbicase{\ADJDIST}\fi}% + +% pair of adjoint distributors with names [1],[2] +\newcommand{\Adjdist}[2]{\ifinner\Tbicase{\ADJDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\ADJDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}% + +% 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}% + + +% 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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKDIST{n} draws a pointing back distributor of length n units +\newcommand{\BKDIST}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\end{picture}}% + +% \BKDOTAR{n} draws a backward dotted arrow +% of length n units +\newcommand{\BKDOTAR}[1]% +{\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by 300% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(#1,0)(-300,0){\NUMBEROFDOTS}{\circle*{100}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKMONO{n} draws a pointing back monomorphism of length n units +\newcommand{\BKMONO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monotail,0){\line(-1,0){\monolength}}% +\put(-\monotail,0){\whead}% +\put(-#1,0){\whead}% +\end{picture}}% + +% \BKEPI{n} draws a pointing back epimorphism of length n units +\newcommand{\BKEPI}[1]% +{\epilength=#1% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){\epilength}}% +\put(\epihead,0){\whead}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKBIMO{n} draws a pointing back bimorphism of length n units +\newcommand{\BKBIMO}[1]% +{\monolength=#1% +\advance\monolength by -\monotail% +\epilength=\monolength% +\advance\epilength by -\epihead% +\begin{picture}(#1,0)% +\put(\monolength,0){\line(-1,0){\epilength}}% +\put(\monolength,0){\whead}% +\put(\epihead,0){\whead}% +\put(0,0){\whead}% +\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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead}% +\end{picture}}% + +% \BKBIDIST{n} draws a pair of pointing back distributors of length n units +\newcommand{\BKBIDIST}[1]% +{\begin{picture}(#1,700)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,700){\line(-1,0){#1}}% +\put(0,700){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,700){\distsign}% +\end{picture}}% + +% \BKADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\BKADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \BKADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\BKADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\line(1,0){#1}}% +\put(#1,700){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,700){\distsign}% +\end{picture}}% + +% \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}}% + +% 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}% + +% back distributor +\newcommand{\bkdist}{\ifinner\tcase{\BKDIST}\else\dcase{\BKDIST}\fi}% + +% back distributor with upper name [1] +\newcommand{\Bkdist}[1]{\ifinner\Tcase{\BKDIST}{\TUP{#1}}% +\else\Dcase{\BKDIST}{\TUP{#1}}\fi}% + +% backward dotted arrow +\newcommand{\bkdotar}{\ifinner\tcase{\BKDOTAR}\else\dcase{\BKDOTAR}\fi}% + +% backward dotted arrow with upper name [1] +\newcommand{\Bkdotar}[1]{\ifinner\Tcase{\BKDOTAR}{#1}% +\else\Dcase{\BKDOTAR}{#1}\fi}% + +% back monomorphism +\newcommand{\bkmono}{\ifinner\tcase{\BKMONO}\else\dcase{\BKMONO}\fi}% + +% back monomorphism with upper name [1] +\newcommand{\Bkmono}[1]{\ifinner\Tcase{\BKMONO}{#1}% +\else\Dcase{\BKMONO}{#1}\fi}% + +% back epimorphism +\newcommand{\bkepi}{\ifinner\tcase{\BKEPI}\else\dcase{\BKEPI}\fi}% + +% back epimorphism with upper name [1] +\newcommand{\Bkepi}[1]{\ifinner\Tcase{\BKEPI}{#1}% +\else\Dcase{\BKEPI}{#1}\fi}% + +% back bimorphism +\newcommand{\bkbimo}{\ifinner\tcase{\BKBIMO}\else\dcase{\BKBIMO}\fi}% + +% back bimorphism with upper name [1] +\newcommand{\Bkbimo}[1]{\ifinner\Tcase{\BKBIMO}{\hspace{9pt}#1}% +\else\Dcase{\BKBIMO}{\hspace{9pt}#1}\fi}% + +% back isomorphism +\newcommand{\bkiso}{\ifinner\Tcase{\BKAR}{\isosign}% +\else\Dcase{\BKAR}{\isosign}\fi}% + +% back isomorphism with upper name [1] +\newcommand{\Bkiso}[1]{\ifinner\Tcase{\BKAR}{\isosign{#1}}% +\else\Dcase{\BKAR}{\isosign{#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}% + +% pair of back distributors +\newcommand{\bkbidist}{\ifinner\tbicase{\BKBIDIST}% +\else\dbicase{\BKBIDIST}\fi}% + +% pair of back distributors with names [1],[2] +\newcommand{\Bkbidist}[2]{\ifinner\Tbicase{\BKBIDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Tbicase{\BKBIDIST}{\DUP{#1}}{\DDOWN{#2}}\fi}% + +% back equality +\let\bkeql=\eql% + +% back equality with name [1] +\let\Bkeql=\Eql% + +% 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}% + +% back pair of adjoint distributors +\newcommand{\bkadjdist}{\ifinner\tbicase{\BKADJDIST}% +\else\dbicase{\BKADJDIST}\fi}% + +% back pair of adjoint distributors with names [1],[2] +\newcommand{\Bkadjdist}[2]{\ifinner\Tbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#2}}% +\else\Dbicase{\BKADJDIST}{\TUP{#1}}{\TDOWN{#2}}\fi}% + +% 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}% + + +% 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 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}}}}% + +% \Hisocase{P}{f}{g}{n} draws an arrow P with names f, g +% and length n units. +\newcommand{\Hisocase}[4]% +{\testdiagrammode\makebox[0pt] +{\raisebox{-8pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}% +{\mbox{\lowername{#1{#4}}{#3}}}$}}}% + +% \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}}}$}}}% + +% \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 + +% \EAR{n} draws an east arrow of length n units +\newcommand{\EAR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\end{picture}}% + +% \EDIST{n} draws an east distributor of length n units +\newcommand{\EDIST}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\truex{400} +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign} +\end{picture}}% + +% \EDOTAR draws a dotted arrow of length n units +\newcommand{\EDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(0,0)(\value{y},0){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(#1,0){\ehead}% +\end{picture}}% + + +% \EMONO{n} draws an east monomorphism of length n units +\newcommand{\EMONO}[1]% +{\truetail +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(#1,0)% +\put(\truemonotail,0){\line(1,0){\monolength}}% +\put(#1,0){\ehead}% +\put(\truemonotail,0){\ehead}% +\end{picture}}% + + +% \EEPI{n} draws an east epimorphism of length n units +\newcommand{\EEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-#1,0){\line(1,0){\epilength}}% +\put(-\trueepihead,0){\ehead}% +\put(0,0){\ehead}% +\end{picture}}% + + +% \EBIMO{n} draws an east bimorphism of length n units +\newcommand{\EBIMO}[1]% +{\truehead\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)(-#1,0)% +\put(-\monolength,0){\line(1,0){\epilength}}% +\put(-\monolength,0){\ehead}% +\put(-\trueepihead,0){\ehead}% +\put(0,0){\ehead}% +\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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(0,\value{x}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\end{picture}}% + +% \EBIDIST{n} draws an east pair of distributors of length n units +\newcommand{\EBIDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign} +\put(\NUMBER,\value{x}){\distsign}% +\end{picture}}% + +% \EEQL{n} draws an east equality of length n units +\newcommand{\EEQL}[1]% +{\begin{picture}(#1,0)% +\truex{200}% +\put(0,\value{x}){\line(1,0){#1}}% +\put(0,0){\line(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){\line(1,0){#1}}% +\put(#1,0){\ehead}% +\put(#1,\value{x}){\line(-1,0){#1}}% +\put(0,\value{x}){\whead}% +\end{picture}}% + +% \EADJDIST{n} draws an east pair of adjoint distributors of length n +% units +\newcommand{\EADJDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign} +\put(\NUMBER,\value{x}){\distsign}% +\end{picture}}% + +% \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}}% + + +% 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 east distributor +\def\basicedist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EDIST}{\Z}}% + +% east distributor +\newcommand{\edist}{\@ifnextchar[{\basicedist}% +{\hspace{\SOURCE\unitlength}\basicedist[\ARROWLENGTH]}}% + +% basic east distributor with upper name +\def\basicEdist[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EDIST}{\DUP{#2}}{\Z}}% + +% east distributor with upper name +\newcommand{\Edist}{\@ifnextchar[{\basicEdist}% +{\hspace{\SOURCE\unitlength}\basicEdist[\ARROWLENGTH]}}% + +% basic east distributor with lower name +\def\basicedisT[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EDIST}{\DDOWN{#2}}{\Z}}% + +% east distributor with lower name +\newcommand{\edisT}{\@ifnextchar[{\basicedisT}% +{\hspace{\SOURCE\unitlength}\basicedisT[\ARROWLENGTH]}}% + +% basic east dotted arrow +\def\basicedotar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EDOTAR}{\Z}}% + +% east dotted arrow +\newcommand{\edotar}{\@ifnextchar[{\basicedotar}% +{\hspace{\SOURCE\unitlength}\basicedotar[\ARROWLENGTH]}}% + +% basic east dotted arrow with upper name +\def\basicEdotar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EDOTAR}{#2}{\Z}}% + +% east dotted arrow with upper name +\newcommand{\Edotar}{\@ifnextchar[{\basicEdotar}% +{\hspace{\SOURCE\unitlength}\basicEdotar[\ARROWLENGTH]}}% + +% basic east dotted arrow with lower name +\def\basicedotaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EDOTAR}{#2}{\Z}}% + +% east dotted arrow with lower name +\newcommand{\edotaR}{\@ifnextchar[{\basicedotaR}% +{\hspace{\SOURCE\unitlength}\basicedotaR[\ARROWLENGTH]}}% + +% basic east monomorphism +\def\basicemono[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EMONO}{\Z}}% + +% east arrow +\newcommand{\emono}{\@ifnextchar[{\basicemono}% +{\hspace{\SOURCE\unitlength}\basicemono[\ARROWLENGTH]}}% + +% basic east monomorphism with upper name +\def\basicEmono[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EMONO}{#2}{\Z}}% + +% east monomorphism with upper name +\newcommand{\Emono}{\@ifnextchar[{\basicEmono}% +{\hspace{\SOURCE\unitlength}\basicEmono[\ARROWLENGTH]}}% + +% basic east monomorphism with lower name +\def\basicemonO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EMONO}{#2}{\Z}}% + +% east monomorphism with lower name +\newcommand{\emonO}{\@ifnextchar[{\basicemonO}% +{\hspace{\SOURCE\unitlength}\basicemonO[\ARROWLENGTH]}}% + +% basic east epimorphism +\def\basiceepi[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EEPI}{\Z}}% + +% east epimorphism +\newcommand{\eepi}{\@ifnextchar[{\basiceepi}% +{\hspace{\SOURCE\unitlength}\basiceepi[\ARROWLENGTH]}}% + +% basic east epimorphism with upper name +\def\basicEepi[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EEPI}{#2}{\Z}}% + +% east epimorphism with upper name +\newcommand{\Eepi}{\@ifnextchar[{\basicEepi}% +{\hspace{\SOURCE\unitlength}\basicEepi[\ARROWLENGTH]}}% + +% basic east epimorphism with lower name +\def\basiceepI[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EEPI}{#2}{\Z}}% + +% east epimorphism with lower name +\newcommand{\eepI}{\@ifnextchar[{\basiceepI}% +{\hspace{\SOURCE\unitlength}\basiceepI[\ARROWLENGTH]}}% + +% basic east bimorphism +\def\basicebimo[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EBIMO}{\Z}}% + +% east bimorphism +\newcommand{\ebimo}{\@ifnextchar[{\basicebimo}% +{\hspace{\SOURCE\unitlength}\basicebimo[\ARROWLENGTH]}}% + +% basic east bimorphism with upper name +\def\basicEbimo[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EBIMO}{#2}{\Z}}% + +% east bimorphism with upper name +\newcommand{\Ebimo}{\@ifnextchar[{\basicEbimo}% +{\hspace{\SOURCE\unitlength}\basicEbimo[\ARROWLENGTH]}}% + +% basic east bimorphism with lower name +\def\basicebimO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EBIMO}{#2}{\Z}}% + +% east bimorphism with lower name +\newcommand{\ebimO}{\@ifnextchar[{\basicebimO}% +{\hspace{\SOURCE\unitlength}\basicebimO[\ARROWLENGTH]}}% + +% basic east isomorphism +\def\basiceiso[#1]{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{\isosign}{}{\Z}}% + +% east isomorphism +\newcommand{\eiso}{\@ifnextchar[{\basiceiso}% +{\hspace{\SOURCE\unitlength}\basiceiso[\ARROWLENGTH]}}% + +% basic east isomorphism with upper name +\def\basicEiso[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{#2}{\isosign}{\Z}}% + +% east isomorphism with upper name +\newcommand{\Eiso}{\@ifnextchar[{\basicEiso}% +{\hspace{\SOURCE\unitlength}\basicEiso[\ARROWLENGTH]}}% + +% basic east isomorphism with lower name +\def\basiceisO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\EAR}{\isosign}{#2}{\Z}}% + +% east isomorphism with lower name +\newcommand{\eisO}{\@ifnextchar[{\basiceisO}% +{\hspace{\SOURCE\unitlength}\basiceisO[\ARROWLENGTH]}}% + +% basic east equality +\def\basiceeql[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EEQL}{\Z}}% + +% east equality +\newcommand{\eeql}{\@ifnextchar[{\basiceeql}% +{\hspace{\SOURCE\unitlength}\basiceeql[\ARROWLENGTH]}}% + +% basic east equality with upper name +\def\basicEeql[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EEQL}{\DUP{#2}}{\Z}}% + +% east equality with upper name +\newcommand{\Eeql}{\@ifnextchar[{\basicEeql}% +{\hspace{\SOURCE\unitlength}\basicEeql[\ARROWLENGTH]}}% + +% basic east equality with lower name +\def\basiceeqL[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EEQL}{#2}{\Z}}% + +% east equality with lower name +\newcommand{\eeqL}{\@ifnextchar[{\basiceeqL}% +{\hspace{\SOURCE\unitlength}\basiceeqL[\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 distributors +\def\basicebidist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EBIDIST}{\Z}}% + +% pair of east distributors +\newcommand{\ebidist}{\@ifnextchar[{\basicebidist}% +{\hspace{\SOURCE\unitlength}\basicebidist[\ARROWLENGTH]}}% + +% basic pair of east distributors with names +\def\basicEbidist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of east distributors with names +\newcommand{\Ebidist}{\@ifnextchar[{\basicEbidist}% +{\hspace{\SOURCE\unitlength}\basicEbidist[\ARROWLENGTH]}}% +\let\ebidisT=\Ebidist + +% 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 + +% basic pair of east adjoint distributors +\def\basiceadjdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EADJDIST}{\Z}}% + +% pair of east adjoint distributors +\newcommand{\eadjdist}{\@ifnextchar[{\basiceadjdist}% +{\hspace{\SOURCE\unitlength}\basiceadjdist[\ARROWLENGTH]}}% + +% basic pair of east adjoint distributors with names +\def\basicEadjdist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of east adjoint distributors with names +\newcommand{\Eadjdist}{\@ifnextchar[{\basicEadjdist}% +{\hspace{\SOURCE\unitlength}\basicEadjdist[\ARROWLENGTH]}}% +\let\eadjdisT=\Eadjdist + +% 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 + +% \WAR{n} draws a pointing back arrow of length n units +\newcommand{\WAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WDIST{n} draws a pointing back distributor of length n units +\newcommand{\WDIST}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\end{picture}}% + +% \WDOTAR draws a dotted arrow of length n units +\newcommand{\WDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(#1,0)% +\multiput(#1,0)(-\value{y},0){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WMONO{n} draws a pointing back monomorphism of length n units +\newcommand{\WMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(#1,0)(-#1,0)% +\put(-\truemonotail,0){\line(-1,0){\monolength}}% +\put(-\truemonotail,0){\whead}% +\put(-#1,0){\whead}% +\end{picture}}% + + +% \WEPI{n} draws a pointing back epimorphism of length n units +\newcommand{\WEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)% +\put(#1,0){\line(-1,0){\epilength}}% +\put(\trueepihead,0){\whead}% +\put(0,0){\whead}% +\end{picture}}% + +% \WBIMO{n} draws a pointing back bimorphism of length n units +\newcommand{\WBIMO}[1]% +{\truehead\truetail% +\monolength=#1 +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(#1,0)% +\put(\monolength,0){\line(-1,0){\epilength}}% +\put(\monolength,0){\whead}% +\put(\trueepihead,0){\whead}% +\put(0,0){\whead}% +\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){\line(-1,0){#1}}% +\put(0,0){\whead}% +\put(#1,\value{x}){\line(-1,0){#1}}% +\put(0,\value{x}){\whead}% +\end{picture}}% + +% \WBIDIST{n} draws a pair of pointing back distributors of length n units +\newcommand{\WBIDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{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}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,\value{x}){\distsign}% +\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}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\end{picture}}% + +% \WADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\WADJDIST}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,\value{x}){\line(1,0){#1}}% +\put(#1,\value{x}){\ehead}% +\put(#1,0){\line(-1,0){#1}}% +\put(0,0){\whead}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\distsign}% +\put(\NUMBER,\value{x}){\distsign}% +\end{picture}}% + +% \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}}% + + +% 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 west distributor +\def\basicwdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WDIST}{\Z}}% + +% west distributor +\newcommand{\wdist}{\@ifnextchar[{\basicwdist}% +{\hspace{\SOURCE\unitlength}\basicwdist[\ARROWLENGTH]}}% + +% basic west distributor with upper name +\def\basicWdist[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WDIST}{\DUP{#2}}{\Z}}% + +% west distributor with upper name +\newcommand{\Wdist}{\@ifnextchar[{\basicWdist}% +{\hspace{\SOURCE\unitlength}\basicWdist[\ARROWLENGTH]}}% + +% basic west distributor with lower name +\def\basicwdisT[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WDIST}{\DDOWN{#2}}{\Z}}% + +% west distributor with lower name +\newcommand{\wdisT}{\@ifnextchar[{\basicwdisT}% +{\hspace{\SOURCE\unitlength}\basicwdisT[\ARROWLENGTH]}}% + +% basic west dotted arrow +\def\basicwdotar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WDOTAR}{\Z}}% + +% west dotted arrow +\newcommand{\wdotar}{\@ifnextchar[{\basicwdotar}% +{\hspace{\SOURCE\unitlength}\basicwdotar[\ARROWLENGTH]}}% + +% basic west dotted arrow with upper name +\def\basicWdotar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WDOTAR}{#2}{\Z}}% + +% west dotted arrow with upper name +\newcommand{\Wdotar}{\@ifnextchar[{\basicWdotar}% +{\hspace{\SOURCE\unitlength}\basicWdotar[\ARROWLENGTH]}}% + +% basic west dotted arrow with lower name +\def\basicwdotaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WDOTAR}{#2}{\Z}}% + +% west dotted arrow with lower name +\newcommand{\wdotaR}{\@ifnextchar[{\basicwdotaR}% +{\hspace{\SOURCE\unitlength}\basicwdotaR[\ARROWLENGTH]}}% + +% basic west monomorphism +\def\basicwmono[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WMONO}{\Z}}% + +% west arrow +\newcommand{\wmono}{\@ifnextchar[{\basicwmono}% +{\hspace{\SOURCE\unitlength}\basicwmono[\ARROWLENGTH]}}% + +% basic west monomorphism with upper name +\def\basicWmono[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WMONO}{#2}{\Z}}% + +% west monomorphism with upper name +\newcommand{\Wmono}{\@ifnextchar[{\basicWmono}% +{\hspace{\SOURCE\unitlength}\basicWmono[\ARROWLENGTH]}}% + +% basic west monomorphism with lower name +\def\basicwmonO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WMONO}{#2}{\Z}}% + +% west monomorphism with lower name +\newcommand{\wmonO}{\@ifnextchar[{\basicwmonO}% +{\hspace{\SOURCE\unitlength}\basicwmonO[\ARROWLENGTH]}}% + +% basic west epimorphism +\def\basicwepi[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WEPI}{\Z}}% + +% west epimorphism +\newcommand{\wepi}{\@ifnextchar[{\basicwepi}% +{\hspace{\SOURCE\unitlength}\basicwepi[\ARROWLENGTH]}}% + +% basic west epimorphism with upper name +\def\basicWepi[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WEPI}{#2}{\Z}}% + +% west epimorphism with upper name +\newcommand{\Wepi}{\@ifnextchar[{\basicWepi}% +{\hspace{\SOURCE\unitlength}\basicWepi[\ARROWLENGTH]}}% + +% basic west epimorphism with lower name +\def\basicwepI[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WEPI}{#2}{\Z}}% + +% west epimorphism with lower name +\newcommand{\wepI}{\@ifnextchar[{\basicwepI}% +{\hspace{\SOURCE\unitlength}\basicwepI[\ARROWLENGTH]}}% + +% basic west bimorphism +\def\basicwbimo[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WBIMO}{\Z}}% + +% west bimorphism +\newcommand{\wbimo}{\@ifnextchar[{\basicwbimo}% +{\hspace{\SOURCE\unitlength}\basicwbimo[\ARROWLENGTH]}}% + +% basic west bimorphism with upper name +\def\basicWbimo[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WBIMO}{#2}{\Z}}% + +% west bimorphism with upper name +\newcommand{\Wbimo}{\@ifnextchar[{\basicWbimo}% +{\hspace{\SOURCE\unitlength}\basicWbimo[\ARROWLENGTH]}}% + +% basic west bimorphism with lower name +\def\basicwbimO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WBIMO}{#2}{\Z}}% + +% west bimorphism with lower name +\newcommand{\wbimO}{\@ifnextchar[{\basicwbimO}% +{\hspace{\SOURCE\unitlength}\basicwbimO[\ARROWLENGTH]}}% + +% basic west isomorphism +\def\basicwiso[#1]{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{\isosign}{}{\Z}}% + +% west isomorphism +\newcommand{\wiso}{\@ifnextchar[{\basicwiso}% +{\hspace{\SOURCE\unitlength}\basicwiso[\ARROWLENGTH]}}% + +% basic west isomorphism with upper name +\def\basicWiso[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{#2}{\isosign}{\Z}}% + +% west isomorphism with upper name +\newcommand{\Wiso}{\@ifnextchar[{\basicWiso}% +{\hspace{\SOURCE\unitlength}\basicWiso[\ARROWLENGTH]}}% + +% basic west isomorphism with lower name +\def\basicwisO[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hisocase{\WAR}{\isosign}{#2}{\Z}}% + +% west isomorphism with lower name +\newcommand{\wisO}{\@ifnextchar[{\basicwisO}% +{\hspace{\SOURCE\unitlength}\basicwisO[\ARROWLENGTH]}}% + +% west equality +\let\weql=\eeql% + +% west equality with upper name +\let\Weql=\Eeql% + +% west equality with lower name +\let\weqL=\eeqL% + +% 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 distributors +\def\basicwbidist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WBIDIST}{\Z}}% + +% pair of west distributors +\newcommand{\wbidist}{\@ifnextchar[{\basicwbidist}% +{\hspace{\SOURCE\unitlength}\basicwbidist[\ARROWLENGTH]}}% + +% basic pair of west distributors with names +\def\basicWbidist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WBIDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of west distributors with names +\newcommand{\Wbidist}{\@ifnextchar[{\basicWbidist}% +{\hspace{\SOURCE\unitlength}\basicWbidist[\ARROWLENGTH]}}% +\let\wbidisT=\Wbidist + +% 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 + +% basic pair of west adjoint distributors +\def\basicwadjdist[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WADJDIST}{\Z}}% + +% pair of west adjoint distributors +\newcommand{\wadjdist}{\@ifnextchar[{\basicwadjdist}% +{\hspace{\SOURCE\unitlength}\basicwadjdist[\ARROWLENGTH]}}% + +% basic pair of west adjoint distributors with names +\def\basicWadjdist[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WADJDIST}{\DUP{#2}}{\DDOWN{#3}}{\Z}}% + +% pair of west adjoint distributors with names +\newcommand{\Wadjdist}{\@ifnextchar[{\basicWadjdist}% +{\hspace{\SOURCE\unitlength}\basicWadjdist[\ARROWLENGTH]}}% +\let\wadjdisT=\Wadjdist + +% 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 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$}}}}% + +% \Visocase{P}{f}{g}{n} draws the vertical picture P +% with names f, g and length n units. +\newcommand{\Visocase}[4]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{2pt}}}#1{#4}% +\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#3$}}}}% + +% \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$}}}}% + +% \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 + +% \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){\line(0,-1){#1}}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SDIST{n} draws a south distributor of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SDIST}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\line(0,-1){#1}}% +\put(0,0){\shead}% +\end{picture}}}% +\put(0,0){\distsign}% +\end{picture}}% + +% \SDOTAR{n} draws a south dotted arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\multiput(0,#1)(0,-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SMONO{n} draws a south monomorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\monolength){\line(0,-1){\monolength}}% +\put(0,\monolength){\shead}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + + +% \SEPI{n} draws a south epimorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\line(0,-1){\epilength}}% +\put(0,\trueepihead){\shead}% +\put(0,0){\shead}% +\end{picture}}}\end{picture}}% + +% \SBIMO{n} draws a south bimorphism of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIMO}[1]% +{\truehead\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\epilength=\monolength% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\monolength){\line(0,-1){\epilength}}% +\put(0,\monolength){\shead}% +\put(0,\trueepihead){\shead}% +\put(0,0){\shead}% +\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){\line(0,-1){#1}}% +\put(-\value{x},0){\shead}% +\put(\value{x},#1){\line(0,-1){#1}}% +\put(\value{x},0){\shead}% +\end{picture}}}\end{picture}}% + +% \SBIDIST{n} draws a pair of south distributors of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIDIST}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}}% +\put(-\value{x},0){\distsign}% +\put(\value{x},0){\distsign}% +\end{picture}}% + +% \SEQL{n} draws a vertical equality of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SEQL}[1]% +{\begin{picture}(0,0)% +\truex{100}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)\put(-\value{x},#1){\line(0,-1){#1}}% +\put(\value{x},#1){\line(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){\line(0,-1){#1}}% +\put(-\value{x},0){\shead}% +\put(\value{x},0){\line(0,1){#1}}% +\put(\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \SADJDIST{n} draws a pair of vertical adjoint distributors of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SADJDIST}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}}% +\put(-\value{x},0){\distsign}% +\put(\value{x},0){\distsign}% +\end{picture}}% + +% \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}}% + + +% 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 south distributor +\def\basicsdist[#1]{\vcase{\SDIST}{#100}}% + +% south distributor +\newcommand{\sdist}{\@ifnextchar[{\basicsdist}{\basicsdist[50]}}% + +% basic south distributor with left name +\def\basicSdist[#1]#2{\Vcase{\SDIST}{#2\hspace*{2pt}}{#100}}% + +% south distributor with left name +\newcommand{\Sdist}{\@ifnextchar[{\basicSdist}{\basicSdist[50]}}% + +% basic south distributor with right name +\def\basicsdisT[#1]#2{\vcasE{\SDIST}{\hspace*{2pt}#2}{#100}}% + +% south distributor with right name +\newcommand{\sdisT}{\@ifnextchar[{\basicsdisT}{\basicsdisT[50]}}% + +% basic south dotted arrow +\def\basicsdotar[#1]{\vcase{\SDOTAR}{#100}}% + +% south dotted arrow +\newcommand{\sdotar}{\@ifnextchar[{\basicsdotar}{\basicsdotar[50]}}% + +% basic south dotted arrow with left name +\def\basicSdotar[#1]#2{\Vcase{\SDOTAR}{#2}{#100}}% + +% south dotted arrow with left name +\newcommand{\Sdotar}{\@ifnextchar[{\basicSdotar}{\basicSdotar[50]}}% + +% basic south dotted arrow with right name +\def\basicsdotaR[#1]#2{\vcasE{\SDOTAR}{#2}{#100}}% + +% south dotted arrow with right name +\newcommand{\sdotaR}{\@ifnextchar[{\basicsdotaR}{\basicsdotaR[50]}}% + +% basic south monomorphism +\def\basicsmono[#1]{\vcase{\SMONO}{#100}}% + +% south arrow +\newcommand{\smono}{\@ifnextchar[{\basicsmono}{\basicsmono[50]}}% + +% basic south monomorphism with left name +\def\basicSmono[#1]#2{\Vcase{\SMONO}{#2}{#100}}% + +% south monomorphism with left name +\newcommand{\Smono}{\@ifnextchar[{\basicSmono}{\basicSmono[50]}}% + +% basic south monomorphism with right name +\def\basicsmonO[#1]#2{\vcasE{\SMONO}{#2}{#100}}% + +% south monomorphism with right name +\newcommand{\smonO}{\@ifnextchar[{\basicsmonO}{\basicsmonO[50]}}% + +% basic south epimorphism +\def\basicsepi[#1]{\vcase{\SEPI}{#100}}% + +% south epimorphism +\newcommand{\sepi}{\@ifnextchar[{\basicsepi}{\basicsepi[50]}}% + +% basic south epimorphism with left name +\def\basicSepi[#1]#2{\Vcase{\SEPI}{#2}{#100}}% + +% south epimorphism with left name +\newcommand{\Sepi}{\@ifnextchar[{\basicSepi}{\basicSepi[50]}}% + +% basic south epimorphism with right name +\def\basicsepI[#1]#2{\vcasE{\SEPI}{#2}{#100}}% + +% south epimorphism with right name +\newcommand{\sepI}{\@ifnextchar[{\basicsepI}{\basicsepI[50]}}% + +% basic south bimorphism +\def\basicsbimo[#1]{\vcase{\SBIMO}{#100}}% + +% south bimorphism +\newcommand{\sbimo}{\@ifnextchar[{\basicsbimo}{\basicsbimo[50]}}% + +% basic south bimorphism with left name +\def\basicSbimo[#1]#2{\Vcase{\SBIMO}{#2}{#100}}% + +% south bimorphism with left name +\newcommand{\Sbimo}{\@ifnextchar[{\basicSbimo}{\basicSbimo[50]}}% + +% basic south bimorphism with right name +\def\basicsbimO[#1]#2{\vcasE{\SBIMO}{#2}{#100}}% + +% south bimorphism with right name +\newcommand{\sbimO}{\@ifnextchar[{\basicsbimO}{\basicsbimO[50]}}% + +% basic south isomorphism +\def\basicsiso[#1]{\Visocase{\SAR}{\isosign}{}{#100}}% + +% south isomorphism +\newcommand{\siso}{\@ifnextchar[{\basicsiso}{\basicsiso[50]}}% + +% basic south isomorphism with left name +\def\basicSiso[#1]#2{\Visocase{\SAR}{#2}{\isosign}{#100}}% + +% south isomorphism with left name +\newcommand{\Siso}{\@ifnextchar[{\basicSiso}{\basicSiso[50]}}% + +% basic south isomorphism with right name +\def\basicsisO[#1]#2{\Visocase{\SAR}{\isosign}{#2}{#100}}% + +% south isomorphism with right name +\newcommand{\sisO}{\@ifnextchar[{\basicsisO}{\basicsisO[50]}}% + +% basic south equality +\def\basicseql[#1]{\vcase{\SEQL}{#100}}% + +% south equality +\newcommand{\seql}{\@ifnextchar[{\basicseql}{\basicseql[50]}}% + +% basic south equality with left name +\def\basicSeql[#1]#2{\Vcase{\SEQL}{#2\hspace*{2pt}}{#100}}% + +% south equality with left name +\newcommand{\Seql}{\@ifnextchar[{\basicSeql}{\basicSeql[50]}}% + +% basic south equality with right name +\def\basicseqL[#1]#2{\vcasE{\SEQL}{\hspace*{2pt}#2}{#100}}% + +% south equality with right name +\newcommand{\seqL}{\@ifnextchar[{\basicseqL}{\basicseqL[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 distributors +\def\basicsbidist[#1]{\vbicase{\SBIDIST}{#100}}% + +% pair of south distributors +\newcommand{\sbidist}{\@ifnextchar[{\basicsbidist}{\basicsbidist[50]}}% + +% basic pair of south distributors with names +\def\basicSbidist[#1]#2#3% +{\Vbicase{\SBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of south distributors with names +\newcommand{\Sbidist}{\@ifnextchar[{\basicSbidist}{\basicSbidist[50]}}% +\let\sbidisT=\Sbidist + +% 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 + +% basic pair of south adjoint distributors +\def\basicsadjdist[#1]{\vbicase{\SADJDIST}{#100}}% + +% pair of south adjoint distributors +\newcommand{\sadjdist}{\@ifnextchar[{\basicsadjdist}{\basicsadjdist[50]}}% + +% basic pair of south adjoint distributors with names +\def\basicSadjdist[#1]#2#3% +{\Vbicase{\SADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of south adjoint distributors with names +\newcommand{\Sadjdist}{\@ifnextchar[{\basicSadjdist}{\basicSadjdist[50]}}% +\let\sadjdisT=\Sadjdist + +% 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 + +% \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){\line(0,1){#1}}% +\put(0,#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NDIST{n} draws a north distributor of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NDIST}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\line(0,1){#1}}% +\put(0,#1){\nhead}% +\end{picture}}} +\put(0,0){\distsign}% +\end{picture}}% + +% \NDOTAR{n} draws a north dotted arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NDOTAR}[1]% +{\truex{100}\truey{300}% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\multiput(0,0)(0,\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(0,#1){\nhead}% +\end{picture}}}\end{picture}}% + + +% \NMONO{n} draws a north monomorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NMONO}[1]% +{\truetail% +\monolength=#1% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\truemonotail){\line(0,1){\monolength}}% +\put(0,#1){\nhead}% +\put(0,\truemonotail){\nhead}% +\end{picture}}}\end{picture}}% + +% \NEPI{n} draws a north epimorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NEPI}[1]% +{\truehead% +\epilength=#1% +\advance\epilength by -\trueepihead% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\line(0,1){\epilength}}% +\put(0,#1){\nhead}% +\put(0,\epilength){\nhead}% +\end{picture}}}\end{picture}}% + +% \NBIMO{n} draws a north bimorphism of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIMO}[1]% +{\truehead\truetail% +\epilength=#1% +\advance\epilength by -\trueepihead% +\monolength=\epilength% +\advance\monolength by -\truemonotail% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,\truemonotail){\line(0,1){\monolength}}% +\put(0,#1){\nhead}% +\put(0,\truemonotail){\nhead}% +\put(0,\epilength){\nhead}% +\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){\line(0,1){#1}}% +\put(-\value{x},#1){\nhead}% +\put(\value{x},0){\line(0,1){#1}}% +\put(\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NBIDIST{n} draws a pair of north distributors of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIDIST}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}} +\put(-\value{x},0){\distsign}% +\put(\value{x},0){\distsign}% +\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){\line(0,-1){#1}}% +\put(\value{x},0){\shead}% +\put(-\value{x},0){\line(0,1){#1}}% +\put(-\value{x},#1){\nhead}% +\end{picture}}}\end{picture}}% + +% \NADJDIST{n} draws a pair of vertical adjoint distributors of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NADJDIST}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\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}% +\end{picture}}} +\put(-\value{x},0){\distsign}% +\put(\value{x},0){\distsign}% +\end{picture}}% + +% \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}}% + + +% 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 north distributor +\def\basicndist[#1]{\vcase{\NDIST}{#100}}% + +% north distributor +\newcommand{\ndist}{\@ifnextchar[{\basicndist}{\basicndist[50]}}% + +% basic north distributor with left name +\def\basicNdist[#1]#2{\Vcase{\NDIST}{#2\hspace*{2pt}}{#100}}% + +% north distributor with left name +\newcommand{\Ndist}{\@ifnextchar[{\basicNdist}{\basicNdist[50]}}% + +% basic north distributor with right name +\def\basicndisT[#1]#2{\vcasE{\NDIST}{\hspace*{2pt}#2}{#100}}% + +% north distributor with right name +\newcommand{\ndisT}{\@ifnextchar[{\basicndisT}{\basicndisT[50]}}% + +% basic north dotted arrow +\def\basicndotar[#1]{\vcase{\NDOTAR}{#100}}% + +% north dotted arrow +\newcommand{\ndotar}{\@ifnextchar[{\basicndotar}{\basicndotar[50]}}% + +% basic north dotted arrow with left name +\def\basicNdotar[#1]#2{\Vcase{\NDOTAR}{#2}{#100}}% + +% north dotted arrow with left name +\newcommand{\Ndotar}{\@ifnextchar[{\basicNdotar}{\basicNdotar[50]}}% + +% basic north dotted arrow with right name +\def\basicndotaR[#1]#2{\vcasE{\NDOTAR}{#2}{#100}}% + +% north dotted arrow with right name +\newcommand{\ndotaR}{\@ifnextchar[{\basicndotaR}{\basicndotaR[50]}}% + +% basic north monomorphism +\def\basicnmono[#1]{\vcase{\NMONO}{#100}}% + +% north arrow +\newcommand{\nmono}{\@ifnextchar[{\basicnmono}% +{\basicnmono[50]}}% + +% basic north monomorphism with left name +\def\basicNmono[#1]#2{\Vcase{\NMONO}{#2}{#100}}% + +% north monomorphism with left name +\newcommand{\Nmono}{\@ifnextchar[{\basicNmono}{\basicNmono[50]}}% + +% basic north monomorphism with right name +\def\basicnmonO[#1]#2{\vcasE{\NMONO}{#2}{#100}}% + +% north monomorphism with right name +\newcommand{\nmonO}{\@ifnextchar[{\basicnmonO}{\basicnmonO[50]}}% + +% basic north epimorphism +\def\basicnepi[#1]{\vcase{\NEPI}{#100}}% + +% north epimorphism +\newcommand{\nepi}{\@ifnextchar[{\basicnepi}{\basicnepi[50]}}% + +% basic north epimorphism with left name +\def\basicNepi[#1]#2{\Vcase{\NEPI}{#2}{#100}}% + +% north epimorphism with left name +\newcommand{\Nepi}{\@ifnextchar[{\basicNepi}{\basicNepi[50]}}% + +% basic north epimorphism with right name +\def\basicnepI[#1]#2{\vcasE{\NEPI}{#2}{#100}}% + +% north epimorphism with right name +\newcommand{\nepI}{\@ifnextchar[{\basicnepI}{\basicnepI[50]}}% + +% basic north bimorphism +\def\basicnbimo[#1]{\vcase{\NBIMO}{#100}}% + +% north bimorphism +\newcommand{\nbimo}{\@ifnextchar[{\basicnbimo}{\basicnbimo[50]}}% + +% basic north bimorphism with left name +\def\basicNbimo[#1]#2{\Vcase{\NBIMO}{#2}{#100}}% + +% north bimorphism with left name +\newcommand{\Nbimo}{\@ifnextchar[{\basicNbimo}{\basicNbimo[50]}}% + +% basic north bimorphism with right name +\def\basicnbimO[#1]#2{\vcasE{\NBIMO}{#2}{#100}}% + +% north bimorphism with right name +\newcommand{\nbimO}{\@ifnextchar[{\basicnbimO}{\basicnbimO[50]}}% + +% basic north isomorphism +\def\basicniso[#1]{\Visocase{\NAR}{\isosign}{}{#100}}% + +% north isomorphism +\newcommand{\niso}{\@ifnextchar[{\basicniso}{\basicniso[50]}}% + +% basic north isomorphism with left name +\def\basicNiso[#1]#2{\Visocase{\NAR}{#2}{\isosign}{#100}}% + +% north isomorphism with left name +\newcommand{\Niso}{\@ifnextchar[{\basicNiso}{\basicNiso[50]}}% + +% basic north isomorphism with right name +\def\basicnisO[#1]#2{\Visocase{\NAR}{\isosign}{#2}{#100}}% + +% north isomorphism with right name +\newcommand{\nisO}{\@ifnextchar[{\basicnisO}{\basicnisO[50]}}% + +% north equality +\let\neql=\seql% + +% north equality with left name +\let\Neql=\Seql% + +% north equality with right name +\let\neqL=\seqL% + +% 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 distributors +\def\basicnbidist[#1]{\vbicase{\NBIDIST}{#100}}% + +% pair of north distributors +\newcommand{\nbidist}{\@ifnextchar[{\basicnbidist}{\basicnbidist[50]}}% + +% basic pair of north distributors with names +\def\basicNbidist[#1]#2#3% +{\Vbicase{\NBIDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of north distributors with names +\newcommand{\Nbidist}{\@ifnextchar[{\basicNbidist}{\basicNbidist[50]}}% +\let\nbidisT=\Nbidist + +% 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 + +% basic pair of north adjoint distributors +\def\basicnadjdist[#1]{\vbicase{\NADJDIST}{#100}}% + +% pair of north adjoint distributors +\newcommand{\nadjdist}{\@ifnextchar[{\basicnadjdist}{\basicnadjdist[50]}}% + +% basic pair of north adjoint distributors with names +\def\basicNadjdist[#1]#2#3% +{\Vbicase{\NADJDIST}{#2\hspace*{2pt}}{\hspace*{2pt}#3}{#100}}% + +% pair of north adjoint distributors with names +\newcommand{\Nadjdist}{\@ifnextchar[{\basicNadjdist}{\basicNadjdist[50]}}% +\let\nadjdisT=\Nadjdist + +% 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]}}% + + +% 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){\line(1,1){#1}}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEDIST{n} draws a north-east distributor of length n units +\newcommand{\NEDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\line(1,1){#1}}% +\put(\Y,\Y){\nehead}% +\put(0,0){\distsign}% +\end{picture}}% + +% \NEDOTAR{n} draws a north-east dotted arrow of length n units +\newcommand{\NEDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,-\Y)(\value{y},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEMONO{n} draws a north-east monomorphism of length n units +\newcommand{\NEMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(-\monolength,-\monolength){\line(1,1){\bimolength}}% +\put(-\monolength,-\monolength){\nehead}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEEPI{n} draws a north-east epimorphism of length n units +\newcommand{\NEEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\line(1,1){\bimolength}}% +\put(\epilength,\epilength){\nehead}% +\put(\Y,\Y){\nehead}% +\end{picture}}% + +% \NEBIMO{n} draws a north-east bimorphism of length n units +\newcommand{\NEBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(-\monolength,-\monolength){\line(1,1){\bimolength}}% +\put(-\monolength,-\monolength){\nehead}% +\put(\epilength,\epilength){\nehead}% +\put(\Y,\Y){\nehead}% +\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}){\line(1,1){#1}}% +\put(\value{x},-\value{x}){\line(1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\monolength,\epilength){\nehead}% +\put(\epilength,\monolength){\nehead}% +\end{picture}}\end{picture}}% + +% \NEBIDIST{n} draws a pair of north-east distributors of length n units +\newcommand{\NEBIDIST}[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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\end{picture}}% +\put(-\value{x},\value{x}){\distsign}% +\put(\value{x},-\value{x}){\distsign}% +\end{picture}}% + +% \NEEQL{n} draws a north-east equality of length n units +\newcommand{\NEEQL}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{70}% +\put(-\value{x},\value{x}){\line(1,1){#1}}% +\put(\value{x},-\value{x}){\line(1,1){#1}}% +\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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}\end{picture}}% + +% \NEADJDIST{n} draws a north-east pair of adjoint distributors of length n units +\newcommand{\NEADJDIST}[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}){\line(1,1){#1}}% +\put(\epilength,\monolength){\nehead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}% +\put(-\value{x},\value{x}){\distsign}% +\put(\value{x},-\value{x}){\distsign}% +\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]}}% + +% north-east distributor of length nx100 units +\def\basicnedist[#1]{\fdcase{\NEDIST}{}{}{#100}}% + +% north-east distributor +\newcommand{\nedist}{\@ifnextchar[{\basicnedist}{\basicnedist[59]}}% + +% north-east distributor with upper name [1] and length nx100 units +\def\basicNedist[#1]#2{\fdcase{\NEDIST}{#2}{}{#100}}% + +% north-east distributor with upper name +\newcommand{\Nedist}{\@ifnextchar[{\basicNedist}{\basicNedist[59]}}% + +% north-east distributor with lower name [1] and length nx100 units +\def\basicnedisT[#1]#2{\fdcase{\NEDIST}{}{#2}{#100}}% + +% north-east distributor with lower name [1] +\newcommand{\nedisT}{\@ifnextchar[{\basicnedisT}{\basicnedisT[59]}}% + +% north-east dotted arrow of length nx100 units +\def\basicnedotar[#1]{\fdcase{\NEDOTAR}{}{}{#100}}% + +% north-east dotted arrow +\newcommand{\nedotar}{\@ifnextchar[{\basicnedotar}{\basicnedotar[59]}}% + +% north-east dotted arrow with upper name [1] and length nx100 units +\def\basicNedotar[#1]#2{\fdcase{\NEDOTAR}{#2}{}{#100}}% + +% north-east dotted arrow with upper name +\newcommand{\Nedotar}{\@ifnextchar[{\basicNedotar}{\basicNedotar[59]}}% + +% north-east dotted arrow with lower name [1] and length nx100 units +\def\basicnedotaR[#1]#2{\fdcase{\NEDOTAR}{}{#2}{#100}}% + +% north-east dotted arrow with lower name [1] +\newcommand{\nedotaR}{\@ifnextchar[{\basicnedotaR}{\basicnedotaR[59]}}% + +% north-east monomorphism of length nx100 units +\def\basicnemono[#1]{\fdcase{\NEMONO}{}{}{#100}}% + +% north-east monomorphism +\newcommand{\nemono}{\@ifnextchar[{\basicnemono}{\basicnemono[59]}}% + +% north-east monomorphism with upper name [1] and length nx100 units +\def\basicNemono[#1]#2{\fdcase{\NEMONO}{#2}{}{#100}}% + +% north-east monomophism with upper name +\newcommand{\Nemono}{\@ifnextchar[{\basicNemono}{\basicNemono[59]}}% + +% north-east monomorphism with lower name [1] and length nx100 units +\def\basicnemonO[#1]#2{\fdcase{\NEMONO}{}{#2}{#100}}% + +% north-east monomorphism with lower name [1] +\newcommand{\nemonO}{\@ifnextchar[{\basicnemonO}{\basicnemonO[59]}}% + +% north-east epimorphism of length nx100 units +\def\basicneepi[#1]{\fdcase{\NEEPI}{}{}{#100}}% + +% north-east epimorphism +\newcommand{\neepi}{\@ifnextchar[{\basicneepi}{\basicneepi[59]}}% + +% north-east epimorphism with upper name [1] and length nx100 units +\def\basicNeepi[#1]#2{\fdcase{\NEEPI}{#2}{}{#100}}% + +% north-east epimorphism with upper name +\newcommand{\Neepi}{\@ifnextchar[{\basicNeepi}{\basicNeepi[59]}}% + +% north-east epimorphism with lower name [1] and length nx100 units +\def\basicneepI[#1]#2{\fdcase{\NEEPI}{}{#2}{#100}}% + +% north-east epimorphism with lower name [1] +\newcommand{\neepI}{\@ifnextchar[{\basicneepI}{\basicneepI[59]}}% + +% north-east bimorphism of length nx100 units +\def\basicnebimo[#1]{\fdcase{\NEBIMO}{}{}{#100}}% + +% north-east bimorphism +\newcommand{\nebimo}{\@ifnextchar[{\basicnebimo}{\basicnebimo[59]}}% + +% north-east bimorphism with upper name [1] and length nx100 units +\def\basicNebimo[#1]#2{\fdcase{\NEBIMO}{#2}{}{#100}}% + +% north-east bimorphism with upper name +\newcommand{\Nebimo}{\@ifnextchar[{\basicNebimo}{\basicNebimo[59]}}% + +% north-east bimorphism with lower name [1] and length nx100 units +\def\basicnebimO[#1]#2{\fdcase{\NEBIMO}{}{#2}{#100}}% + +% north-east bimorphism with lower name [1] +\newcommand{\nebimO}{\@ifnextchar[{\basicnebimO}{\basicnebimO[59]}}% + +% north-east isomorphism of length nx100 units +\def\basicneiso[#1]{\fdcase{\NEAR}{\hspace{-2pt}\isosign}{}{#100}}% + +% north-east isomorphism +\newcommand{\neiso}{\@ifnextchar[{\basicneiso}{\basicneiso[59]}}% + +% north-east isomorphism with upper name [1] and length nx100 units +\def\basicNeiso[#1]#2{\fdcase{\NEAR}{#2}{\isosign}{#100}}% + +% north-east isomorphism with upper name +\newcommand{\Neiso}{\@ifnextchar[{\basicNeiso}{\basicNeiso[59]}}% + +% north-east isomorphism with lower name [1] and length nx100 units +\def\basicneisO[#1]#2{\fdcase{\NEAR}{\hspace{-2pt}\isosign}{#2}{#100}}% + +% north-east isomorphism with lower name [1] +\newcommand{\neisO}{\@ifnextchar[{\basicneisO}{\basicneisO[59]}}% + +% north-east equality of length nx100 units +\def\basicneeql[#1]{\fdcase{\NEEQL}{}{}{#100}}% + +% north-east equality +\newcommand{\neeql}{\@ifnextchar[{\basicneeql}{\basicneeql[59]}}% + +% north-east equality with upper name [1] and length nx100 units +\def\basicNeeql[#1]#2{\fdcase{\NEEQL}{#2}{}{#100}}% + +% north-east equality with upper name +\newcommand{\Neeql}{\@ifnextchar[{\basicNeeql}{\basicNeeql[59]}}% + +% north-east equality with lower name [1] and length nx100 units +\def\basicneeqL[#1]#2{\fdcase{\NEEQL}{}{#2}{#100}}% + +% north-east equality with lower name [1] +\newcommand{\neeqL}{\@ifnextchar[{\basicneeqL}{\basicneeqL[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 + +% pair of north-east distributors of length nx100 units +\def\basicnebidist[#1]{\fdbicase{\NEBIDIST}{}{}{#100}}% + +% pair of north-east distributors +\newcommand{\nebidist}{\@ifnextchar[{\basicnebidist}{\basicnebidist[59]}}% + +% pair of north-east distributors with names [1][2] and length nx100 units +\def\basicNebidist[#1]#2#3{\fdbicase{\NEBIDIST}{#2}{#3}{#100}}% + +% pair of north-east distributors with names +\newcommand{\Nebidist}{\@ifnextchar[{\basicNebidist}{\basicNebidist[59]}}% +\let\nebidisT=\Nebidist + +% pair of north-east adjoint distributors of length nx100 units +\def\basicneadjdist[#1]{\fdbicase{\NEADJDIST}{}{}{#100}}% + +% pair of north-east adjoint distributors +\newcommand{\neadjdist}{\@ifnextchar[{\basicneadjdist}{\basicneadjdist[59]}}% + +% pair of north-east adjoint distributors with names [1][2] and length nx100 units +\def\basicNeadjdist[#1]#2#3{\fdbicase{\NEADJDIST}{#2}{#3}{#100}}% + +% pair of north-east adjoint distributors with names +\newcommand{\Neadjdist}{\@ifnextchar[{\basicNeadjdist}{\basicNeadjdist[59]}}% +\let\neadjdisT=\Neadjdist + + + +% 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){\line(-1,-1){#1}}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWDIST{n} draws a south-west distributor of length n units +\newcommand{\SWDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\line(-1,-1){#1}}% +\put(-\Y,-\Y){\swhead}% +\put(0,0){\distsign}% +\end{picture}}% + +% \SWDOTAR{n} draws a south-west dotted arrow of length n units +\newcommand{\SWDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,\Y)(-\value{y},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWMONO{n} draws a south-west monomorphism of length n units +\newcommand{\SWMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(\monolength,\monolength){\line(-1,-1){\bimolength}}% +\put(\monolength,\monolength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWEPI{n} draws a south-west epimorphism of length n units +\newcommand{\SWEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(\Y,\Y){\line(-1,-1){\bimolength}}% +\put(-\epilength,-\epilength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\end{picture}}% + +% \SWBIMO{n} draws a south-west bimorphism of length n units +\newcommand{\SWBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(\monolength,\monolength){\line(-1,-1){\bimolength}}% +\put(\monolength,\monolength){\swhead}% +\put(-\epilength,-\epilength){\swhead}% +\put(-\Y,-\Y){\swhead}% +\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}){\line(-1,-1){#1}}% +\put(-\value{x},\value{x}){\line(-1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\monolength,-\epilength){\swhead}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}\end{picture}}% + +% \SWBIDIST{n} draws a pair of south-west distributors of length n units +\newcommand{\SWBIDIST}[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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\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}){\line(-1,-1){#1}}% +\put(-\epilength,-\monolength){\swhead}% +\end{picture}}% +\put(\value{x},-\value{x}){\distsign}% +\put(-\value{x},\value{x}){\distsign}% +\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}){\line(-1,-1){#1}}% +\put(-\monolength,-\epilength){\swhead}% +\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}){\line(1,1){#1}}% +\put(\monolength,\epilength){\nehead}% +\end{picture}}\end{picture}}% + +% \SWADJDIST{n} draws a south-west pair of adjoint distributors of length n units +\newcommand{\SWADJDIST}[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}){\line(-1,-1){#1}}% +\put(-\monolength,-\epilength){\swhead}% +\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}){\line(1,1){#1}}% +\put(\monolength,\epilength){\nehead}% +\end{picture}}% +\put(-\value{x},\value{x}){\distsign}% +\put(\value{x},-\value{x}){\distsign}% +\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]}}% + +% south-west distributor of length nx100 units +\def\basicswdist[#1]{\fdcase{\SWDIST}{}{}{#100}}% + +% south-west distributor +\newcommand{\swdist}{\@ifnextchar[{\basicswdist}{\basicswdist[59]}}% + +% south-west distributor with upper name [1] and length nx100 units +\def\basicSwdist[#1]#2{\fdcase{\SWDIST}{#2}{}{#100}}% + +% south-west distributor with upper name +\newcommand{\Swdist}{\@ifnextchar[{\basicSwdist}{\basicSwdist[59]}}% + +% south-west distributor with lower name [1] and length nx100 units +\def\basicswdisT[#1]#2{\fdcase{\SWDIST}{}{#2}{#100}}% + +% south-west distributor with lower name [1] +\newcommand{\swdisT}{\@ifnextchar[{\basicswdisT}{\basicswdisT[59]}}% + +% south-west dotted arrow of length nx100 units +\def\basicswdotar[#1]{\fdcase{\SWDOTAR}{}{}{#100}}% + +% south-west dotted arrow +\newcommand{\swdotar}{\@ifnextchar[{\basicswdotar}{\basicswdotar[59]}}% + +% south-west dotted arrow with upper name [1] and length nx100 units +\def\basicSwdotar[#1]#2{\fdcase{\SWDOTAR}{#2}{}{#100}}% + +% south-west dotted arrow with upper name +\newcommand{\Swdotar}{\@ifnextchar[{\basicSwdotar}{\basicSwdotar[59]}}% + +% south-west dotted arrow with lower name [1] and length nx100 units +\def\basicswdotaR[#1]#2{\fdcase{\SWDOTAR}{}{#2}{#100}}% + +% south-west dotted arrow with lower name [1] +\newcommand{\swdotaR}{\@ifnextchar[{\basicswdotaR}{\basicswdotaR[59]}}% + +% south-west monomorphism of length nx100 units +\def\basicswmono[#1]{\fdcase{\SWMONO}{}{}{#100}}% + +% south-west monomorphism +\newcommand{\swmono}{\@ifnextchar[{\basicswmono}{\basicswmono[59]}}% + +% south-west monomorphism with upper name [1] and length nx100 units +\def\basicSwmono[#1]#2{\fdcase{\SWMONO}{#2}{}{#100}}% + +% south-west monomophism with upper name +\newcommand{\Swmono}{\@ifnextchar[{\basicSwmono}{\basicSwmono[59]}}% + +% south-west monomorphism with lower name [1] and length nx100 units +\def\basicswmonO[#1]#2{\fdcase{\SWMONO}{}{#2}{#100}}% + +% south-west monomorphism with lower name [1] +\newcommand{\swmonO}{\@ifnextchar[{\basicswmonO}{\basicswmonO[59]}}% + +% south-west epimorphism of length nx100 units +\def\basicswepi[#1]{\fdcase{\SWEPI}{}{}{#100}}% + +% south-west epimorphism +\newcommand{\swepi}{\@ifnextchar[{\basicswepi}{\basicswepi[59]}}% + +% south-west epimorphism with upper name [1] and length nx100 units +\def\basicSwepi[#1]#2{\fdcase{\SWEPI}{#2}{}{#100}}% + +% south-west epimorphism with upper name +\newcommand{\Swepi}{\@ifnextchar[{\basicSwepi}{\basicSwepi[59]}}% + +% south-west epimorphism with lower name [1] and length nx100 units +\def\basicswepI[#1]#2{\fdcase{\SWEPI}{}{#2}{#100}}% + +% south-west epimorphism with lower name [1] +\newcommand{\swepI}{\@ifnextchar[{\basicswepI}{\basicswepI[59]}}% + +% south-west bimorphism of length nx100 units +\def\basicswbimo[#1]{\fdcase{\SWBIMO}{}{}{#100}}% + +% south-west bimorphism +\newcommand{\swbimo}{\@ifnextchar[{\basicswbimo}{\basicswbimo[59]}}% + +% south-west bimorphism with upper name [1] and length nx100 units +\def\basicSwbimo[#1]#2{\fdcase{\SWBIMO}{#2}{}{#100}}% + +% south-west bimorphism with upper name +\newcommand{\Swbimo}{\@ifnextchar[{\basicSwbimo}{\basicSwbimo[59]}}% + +% south-west bimorphism with lower name [1] and length nx100 units +\def\basicswbimO[#1]#2{\fdcase{\SWBIMO}{}{#2}{#100}}% + +% south-west bimorphism with lower name [1] +\newcommand{\swbimO}{\@ifnextchar[{\basicswbimO}{\basicswbimO[59]}}% + +% south-west isomorphism of length nx100 units +\def\basicswiso[#1]{\fdcase{\SWAR}{\hspace{-2pt}\isosign}{}{#100}}% + +% south-west isomorphism +\newcommand{\swiso}{\@ifnextchar[{\basicswiso}{\basicswiso[59]}}% + +% south-west isomorphism with upper name [1] and length nx100 units +\def\basicSwiso[#1]#2{\fdcase{\SWAR}{#2}{\isosign}{#100}}% + +% south-west isomorphism with upper name +\newcommand{\Swiso}{\@ifnextchar[{\basicSwiso}{\basicSwiso[59]}}% + +% south-west isomorphism with lower name [1] and length nx100 units +\def\basicswisO[#1]#2{\fdcase{\SWAR}{\hspace{-2pt}\isosign}{#2}{#100}}% + +% south-west isomorphism with lower name [1] +\newcommand{\swisO}{\@ifnextchar[{\basicswisO}{\basicswisO[59]}}% + +% south-west equality +\let\sweql\neeql% + +% south-west equality with upper name [1] +\let\Sweql=\Neeql% + +% south-west equality with lower name [1] +\let\sweqL=\neeqL% + +% 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 + +% pair of south-west distributors of length nx100 units +\def\basicswbidist[#1]{\fdbicase{\SWBIDIST}{}{}{#100}}% + +% pair of south-west distributors +\newcommand{\swbidist}{\@ifnextchar[{\basicswbidist}{\basicswbidist[59]}}% + +% pair of south-west distributors with names [1][2] and length nx100 units +\def\basicSwbidist[#1]#2#3{\fdbicase{\SWBIDIST}{#2}{#3}{#100}}% + +% pair of south-west distributors with names +\newcommand{\Swbidist}{\@ifnextchar[{\basicSwbidist}{\basicSwbidist[59]}}% +\let\swbidisT=\Swbidist + +% pair of south-west adjoint distributors of length nx100 units +\def\basicswadjdist[#1]{\fdbicase{\SWADJDIST}{}{}{#100}}% + +% pair of south-west adjoint distributors +\newcommand{\swadjdist}{\@ifnextchar[{\basicswadjdist}{\basicswadjdist[59]}}% + +% pair of south-west adjoint distributors with names [1][2] and length nx100 units +\def\basicSwadjdist[#1]#2#3{\fdbicase{\SWADJDIST}{#2}{#3}{#100}}% + +% pair of south-west adjoint distributors with names +\newcommand{\Swadjdist}{\@ifnextchar[{\basicSwadjdist}{\basicSwadjdist[59]}}% +\let\swadjdisT=\Swadjdist + + + +% 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){\line(1,-1){#1}}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEDIST{n} draws a south-east distributor of length n units +\newcommand{\SEDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\line(1,-1){#1}}% +\put(\Y,-\Y){\sehead}% +\put(0,0){\distsign}% +\end{picture}}% + +% \SEDOTAR{n} draws a south-east dotted arrow of length n units +\newcommand{\SEDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,\Y)(\value{y},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEMONO{n} draws a south-east monomorphism of length n units +\newcommand{\SEMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(-\monolength,\monolength){\line(1,-1){\bimolength}}% +\put(-\monolength,\monolength){\sehead}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEEPI{n} draws a south-east epimorphism of length n units +\newcommand{\SEEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(-\Y,\Y){\line(1,-1){\bimolength}}% +\put(\epilength,-\epilength){\sehead}% +\put(\Y,-\Y){\sehead}% +\end{picture}}% + +% \SEBIMO{n} draws a south-east bimorphism of length n units +\newcommand{\SEBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(-\monolength,\monolength){\line(1,-1){\bimolength}}% +\put(-\monolength,\monolength){\sehead}% +\put(\epilength,-\epilength){\sehead}% +\put(\Y,-\Y){\sehead}% +\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}){\line(1,-1){#1}}% +\put(\value{x},\value{x}){\line(1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\monolength,-\epilength){\sehead}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}\end{picture}}% + +% \SEBIDIST{n} draws a pair of south-east distributors of length n units +\newcommand{\SEBIDIST}[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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\distsign}% +\put(\value{x},\value{x}){\distsign}% +\end{picture}}% + +% \SEEQL{n} draws a south-east equality of length n units +\newcommand{\SEEQL}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{70}% +\put(-\value{x},-\value{x}){\line(1,-1){#1}}% +\put(\value{x},\value{x}){\line(1,-1){#1}}% +\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}){\line(1,-1){#1}}% +\put(\monolength,-\epilength){\sehead}% +\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}){\line(-1,1){#1}}% +\put(-\monolength,\epilength){\nwhead}% +\end{picture}}\end{picture}}% + +% \SEADJDIST{n} draws a south-east pair of adjoint distributors of length n units +\newcommand{\SEADJDIST}[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}){\line(1,-1){#1}}% +\put(\monolength,-\epilength){\sehead}% +\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}){\line(-1,1){#1}}% +\put(-\monolength,\epilength){\nwhead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\distsign}% +\put(\value{x},\value{x}){\distsign}% +\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]}}% + +% south-east distributor of length nx100 units +\def\basicsedist[#1]{\sdcase{\SEDIST}{}{}{#100}}% + +% south-east distributor +\newcommand{\sedist}{\@ifnextchar[{\basicsedist}{\basicsedist[59]}}% + +% south-east distributor with upper name [1] and length nx100 units +\def\basicSedist[#1]#2{\sdcase{\SEDIST}{#2}{}{#100}}% + +% south-east distributor with upper name +\newcommand{\Sedist}{\@ifnextchar[{\basicSedist}{\basicSedist[59]}}% + +% south-east distributor with lower name [1] and length nx100 units +\def\basicsedisT[#1]#2{\sdcase{\SEDIST}{}{#2}{#100}}% + +% south-east distributor with lower name [1] +\newcommand{\sedisT}{\@ifnextchar[{\basicsedisT}{\basicsedisT[59]}}% + +% south-east dotted arrow of length nx100 units +\def\basicsedotar[#1]{\sdcase{\SEDOTAR}{}{}{#100}}% + +% south-east dotted arrow +\newcommand{\sedotar}{\@ifnextchar[{\basicsedotar}{\basicsedotar[59]}}% + +% south-east dotted arrow with upper name [1] and length nx100 units +\def\basicSedotar[#1]#2{\sdcase{\SEDOTAR}{#2}{}{#100}}% + +% south-east dotted arrow with upper name +\newcommand{\Sedotar}{\@ifnextchar[{\basicSedotar}{\basicSedotar[59]}}% + +% south-east dotted arrow with lower name [1] and length nx100 units +\def\basicsedotaR[#1]#2{\sdcase{\SEDOTAR}{}{#2}{#100}}% + +% south-east dotted arrow with lower name [1] +\newcommand{\sedotaR}{\@ifnextchar[{\basicsedotaR}{\basicsedotaR[59]}}% + +% south-east monomorphism of length nx100 units +\def\basicsemono[#1]{\sdcase{\SEMONO}{}{}{#100}}% + +% south-east monomorphism +\newcommand{\semono}{\@ifnextchar[{\basicsemono}{\basicsemono[59]}}% + +% south-east monomorphism with upper name [1] and length nx100 units +\def\basicSemono[#1]#2{\sdcase{\SEMONO}{#2}{}{#100}}% + +% south-east monomophism with upper name +\newcommand{\Semono}{\@ifnextchar[{\basicSemono}{\basicSemono[59]}}% + +% south-east monomorphism with lower name [1] and length nx100 units +\def\basicsemonO[#1]#2{\sdcase{\SEMONO}{}{#2}{#100}}% + +% south-east monomorphism with lower name [1] +\newcommand{\semonO}{\@ifnextchar[{\basicsemonO}{\basicsemonO[59]}}% + +% south-east epimorphism of length nx100 units +\def\basicseepi[#1]{\sdcase{\SEEPI}{}{}{#100}}% + +% south-east epimorphism +\newcommand{\seepi}{\@ifnextchar[{\basicseepi}{\basicseepi[59]}}% + +% south-east epimorphism with upper name [1] and length nx100 units +\def\basicSeepi[#1]#2{\sdcase{\SEEPI}{#2}{}{#100}}% + +% south-east epimorphism with upper name +\newcommand{\Seepi}{\@ifnextchar[{\basicSeepi}{\basicSeepi[59]}}% + +% south-east epimorphism with lower name [1] and length nx100 units +\def\basicseepI[#1]#2{\sdcase{\SEEPI}{}{#2}{#100}}% + +% south-east epimorphism with lower name [1] +\newcommand{\seepI}{\@ifnextchar[{\basicseepI}{\basicseepI[59]}}% + +% south-east bimorphism of length nx100 units +\def\basicsebimo[#1]{\sdcase{\SEBIMO}{}{}{#100}}% + +% south-east bimorphism +\newcommand{\sebimo}{\@ifnextchar[{\basicsebimo}{\basicsebimo[59]}}% + +% south-east bimorphism with upper name [1] and length nx100 units +\def\basicSebimo[#1]#2{\sdcase{\SEBIMO}{#2}{}{#100}}% + +% south-east bimorphism with upper name +\newcommand{\Sebimo}{\@ifnextchar[{\basicSebimo}{\basicSebimo[59]}}% + +% south-east bimorphism with lower name [1] and length nx100 units +\def\basicsebimO[#1]#2{\sdcase{\SEBIMO}{}{#2}{#100}}% + +% south-east bimorphism with lower name [1] +\newcommand{\sebimO}{\@ifnextchar[{\basicsebimO}{\basicsebimO[59]}}% + +% south-east isomorphism of length nx100 units +\def\basicseiso[#1]{\sdcase{\SEAR}{\hspace{-2pt}\isosign}{}{#100}}% + +% south-east isomorphism +\newcommand{\seiso}{\@ifnextchar[{\basicseiso}{\basicseiso[59]}}% + +% south-east isomorphism with upper name [1] and length nx100 units +\def\basicSeiso[#1]#2{\sdcase{\SEAR}{#2}{\isosign}{#100}}% + +% south-east isomorphism with upper name +\newcommand{\Seiso}{\@ifnextchar[{\basicSeiso}{\basicSeiso[59]}}% + +% south-east isomorphism with lower name [1] and length nx100 units +\def\basicseisO[#1]#2{\sdcase{\SEAR}{\hspace{-2pt}\isosign}{#2}{#100}}% + +% south-east isomorphism with lower name [1] +\newcommand{\seisO}{\@ifnextchar[{\basicseisO}{\basicseisO[59]}}% + +% south-east equality of length nx100 units +\def\basicseeql[#1]{\sdcase{\SEEQL}{}{}{#100}}% + +% south-east equality +\newcommand{\seeql}{\@ifnextchar[{\basicseeql}{\basicseeql[59]}}% + +% south-east equality with upper name [1] and length nx100 units +\def\basicSeeql[#1]#2{\sdcase{\SEEQL}{#2}{}{#100}}% + +% south-east equality with upper name +\newcommand{\Seeql}{\@ifnextchar[{\basicSeeql}{\basicSeeql[59]}}% + +% south-east equality with lower name [1] and length nx100 units +\def\basicseeqL[#1]#2{\sdcase{\SEEQL}{}{#2}{#100}}% + +% south-east equality with lower name [1] +\newcommand{\seeqL}{\@ifnextchar[{\basicseeqL}{\basicseeqL[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 + +% pair of south-east distributors of length nx100 units +\def\basicsebidist[#1]{\sdbicase{\SEBIDIST}{}{}{#100}}% + +% pair of south-east distributors +\newcommand{\sebidist}{\@ifnextchar[{\basicsebidist}{\basicsebidist[59]}}% + +% pair of south-east distributors with names [1][2] and length nx100 units +\def\basicSebidist[#1]#2#3{\sdbicase{\SEBIDIST}{#2}{#3}{#100}}% + +% pair of south-east distributors with names +\newcommand{\Sebidist}{\@ifnextchar[{\basicSebidist}{\basicSebidist[59]}}% +\let\sebidisT=\Sebidist + +% pair of south-east adjoint distributors of length nx100 units +\def\basicseadjdist[#1]{\sdbicase{\SEADJDIST}{}{}{#100}}% + +% pair of south-east adjoint distributors +\newcommand{\seadjdist}{\@ifnextchar[{\basicseadjdist}{\basicseadjdist[59]}}% + +% pair of south-east adjoint distributors with names [1][2] and length nx100 units +\def\basicSeadjdist[#1]#2#3{\sdbicase{\SEADJDIST}{#2}{#3}{#100}}% + +% pair of south-east adjoint distributors with names +\newcommand{\Seadjdist}{\@ifnextchar[{\basicSeadjdist}{\basicSeadjdist[59]}}% +\let\seadjdisT=\Seadjdist + + +% 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){\line(-1,1){#1}}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWDIST{n} draws a north-west distributor of length n units +\newcommand{\NWDIST}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\line(-1,1){#1}}% +\put(-\Y,\Y){\nwhead}% +\put(0,0){\distsign}% +\end{picture}}% + +% \NWDOTAR{n} draws a north-west dotted arrow of length n units +\newcommand{\NWDOTAR}[1]% +{\truex{100}\truey{212}% +\Y=#1% +\divide\Y by 2% +\NUMBEROFDOTS=#1% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,-\Y)(-\value{y},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWMONO{n} draws a north-west monomorphism of length n units +\newcommand{\NWMONO}[1]{% +\Y=#1% +\divide \Y by 2% +\Truetail% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\begin{picture}(0,0)% +\put(\monolength,-\monolength){\line(-1,1){\bimolength}}% +\put(\monolength,-\monolength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWEPI{n} draws a north-west epimorphism of length n units +\newcommand{\NWEPI}[1]{% +\Y=#1% +\divide\Y by 2% +\Truehead% +\bimolength=#1% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\begin{picture}(0,0)% +\put(\Y,-\Y){\line(-1,1){\bimolength}}% +\put(-\epilength,\epilength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\end{picture}}% + +% \NWBIMO{n} draws a north-west bimorphism of length n units +\newcommand{\NWBIMO}[1]{% +\Y=#1% +\divide\Y by 2% +\Truetail\Truehead% +\bimolength=#1% +\advance\bimolength by -\Truemonotail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\Trueepihead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\begin{picture}(0,0)% +\put(\monolength,-\monolength){\line(-1,1){\bimolength}}% +\put(\monolength,-\monolength){\nwhead}% +\put(-\epilength,\epilength){\nwhead}% +\put(-\Y,\Y){\nwhead}% +\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}){\line(-1,1){#1}}% +\put(\value{x},\value{x}){\line(-1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\monolength,\epilength){\nwhead}% +\put(-\epilength,\monolength){\nwhead}% +\end{picture}}\end{picture}}% + +% \NWBIDIST{n} draws a pair of north-west distributors of length n units +\newcommand{\NWBIDIST}[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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\distsign}% +\put(\value{x},\value{x}){\distsign}% +\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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}\end{picture}}% + +% \NWADJDIST{n} draws a north-west pair of adjoint distributors of length n units +\newcommand{\NWADJDIST}[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}){\line(-1,1){#1}}% +\put(-\epilength,\monolength){\nwhead}% +\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}){\line(1,-1){#1}}% +\put(\epilength,-\monolength){\sehead}% +\end{picture}}% +\put(-\value{x},-\value{x}){\distsign}% +\put(\value{x},\value{x}){\distsign}% +\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]}}% + +% north-west distributor of length nx100 units +\def\basicnwdist[#1]{\sdcase{\NWDIST}{}{}{#100}}% + +% north-west distributor +\newcommand{\nwdist}{\@ifnextchar[{\basicnwdist}{\basicnwdist[59]}}% + +% north-west distributor with upper name [1] and length nx100 units +\def\basicNwdist[#1]#2{\sdcase{\NWDIST}{#2}{}{#100}}% + +% north-west distributor with upper name +\newcommand{\Nwdist}{\@ifnextchar[{\basicNwdist}{\basicNwdist[59]}}% + +% north-west distributor with lower name [1] and length nx100 units +\def\basicnwdisT[#1]#2{\sdcase{\NWDIST}{}{#2}{#100}}% + +% north-west distributor with lower name [1] +\newcommand{\nwdisT}{\@ifnextchar[{\basicnwdisT}{\basicnwdisT[59]}}% + +% north-west dotted arrow of length nx100 units +\def\basicnwdotar[#1]{\sdcase{\NWDOTAR}{}{}{#100}}% + +% north-west dotted arrow +\newcommand{\nwdotar}{\@ifnextchar[{\basicnwdotar}{\basicnwdotar[59]}}% + +% north-west dotted arrow with upper name [1] and length nx100 units +\def\basicNwdotar[#1]#2{\sdcase{\NWDOTAR}{#2}{}{#100}}% + +% north-west dotted arrow with upper name +\newcommand{\Nwdotar}{\@ifnextchar[{\basicNwdotar}{\basicNwdotar[59]}}% + +% north-west dotted arrow with lower name [1] and length nx100 units +\def\basicnwdotaR[#1]#2{\sdcase{\NWDOTAR}{}{#2}{#100}}% + +% north-west dotted arrow with lower name [1] +\newcommand{\nwdotaR}{\@ifnextchar[{\basicnwdotaR}{\basicnwdotaR[59]}}% + +% north-west monomorphism of length nx100 units +\def\basicnwmono[#1]{\sdcase{\NWMONO}{}{}{#100}}% + +% north-west monomorphism +\newcommand{\nwmono}{\@ifnextchar[{\basicnwmono}{\basicnwmono[59]}}% + +% north-west monomorphism with upper name [1] and length nx100 units +\def\basicNwmono[#1]#2{\sdcase{\NWMONO}{#2}{}{#100}}% + +% north-west monomophism with upper name +\newcommand{\Nwmono}{\@ifnextchar[{\basicNwmono}{\basicNwmono[59]}}% + +% north-west monomorphism with lower name [1] and length nx100 units +\def\basicnwmonO[#1]#2{\sdcase{\NWMONO}{}{#2}{#100}}% + +% north-west monomorphism with lower name [1] +\newcommand{\nwmonO}{\@ifnextchar[{\basicnwmonO}{\basicnwmonO[59]}}% + +% north-west epimorphism of length nx100 units +\def\basicnwepi[#1]{\sdcase{\NWEPI}{}{}{#100}}% + +% north-west epimorphism +\newcommand{\nwepi}{\@ifnextchar[{\basicnwepi}{\basicnwepi[59]}}% + +% north-west epimorphism with upper name [1] and length nx100 units +\def\basicNwepi[#1]#2{\sdcase{\NWEPI}{#2}{}{#100}}% + +% north-west epimorphism with upper name +\newcommand{\Nwepi}{\@ifnextchar[{\basicNwepi}{\basicNwepi[59]}}% + +% north-west epimorphism with lower name [1] and length nx100 units +\def\basicnwepI[#1]#2{\sdcase{\NWEPI}{}{#2}{#100}}% + +% north-west epimorphism with lower name [1] +\newcommand{\nwepI}{\@ifnextchar[{\basicnwepI}{\basicnwepI[59]}}% + +% north-west bimorphism of length nx100 units +\def\basicnwbimo[#1]{\sdcase{\NWBIMO}{}{}{#100}}% + +% north-west bimorphism +\newcommand{\nwbimo}{\@ifnextchar[{\basicnwbimo}{\basicnwbimo[59]}}% + +% north-west bimorphism with upper name [1] and length nx100 units +\def\basicNwbimo[#1]#2{\sdcase{\NWBIMO}{#2}{}{#100}}% + +% north-west bimorphism with upper name +\newcommand{\Nwbimo}{\@ifnextchar[{\basicNwbimo}{\basicNwbimo[59]}}% + +% north-west bimorphism with lower name [1] and length nx100 units +\def\basicnwbimO[#1]#2{\sdcase{\NWBIMO}{}{#2}{#100}}% + +% north-west bimorphism with lower name [1] +\newcommand{\nwbimO}{\@ifnextchar[{\basicnwbimO}{\basicnwbimO[59]}}% + +% north-west isomorphism of length nx100 units +\def\basicnwiso[#1]{\sdcase{\NWAR}{\hspace{-2pt}\isosign}{}{#100}}% + +% north-west isomorphism +\newcommand{\nwiso}{\@ifnextchar[{\basicnwiso}{\basicnwiso[59]}}% + +% north-west isomorphism with upper name [1] and length nx100 units +\def\basicNwiso[#1]#2{\sdcase{\NWAR}{#2}{\isosign}{#100}}% + +% north-west isomorphism with upper name +\newcommand{\Nwiso}{\@ifnextchar[{\basicNwiso}{\basicNwiso[59]}}% + +% north-west isomorphism with lower name [1] and length nx100 units +\def\basicnwisO[#1]#2{\sdcase{\NWAR}{\hspace{-2pt}\isosign}{#2}{#100}}% + +% north-west isomorphism with lower name [1] +\newcommand{\nwisO}{\@ifnextchar[{\basicnwisO}{\basicnwisO[59]}}% + +% north-west equality +\let\nweql=\seeql% + +% north-west equality with upper name +\let\Nweql=\Seeql% + +% north-west equality with lower name [1] +\let\nweqL=\seeqL% + +% 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 + +% pair of north-west distributors of length nx100 units +\def\basicnwbidist[#1]{\sdbicase{\NWBIDIST}{}{}{#100}}% + +% pair of north-west distributors +\newcommand{\nwbidist}{\@ifnextchar[{\basicnwbidist}{\basicnwbidist[59]}}% + +% pair of north-west distributors with names [1][2] and length nx100 units +\def\basicNwbidist[#1]#2#3{\sdbicase{\NWBIDIST}{#2}{#3}{#100}}% + +% pair of north-west distributors with names +\newcommand{\Nwbidist}{\@ifnextchar[{\basicNwbidist}{\basicNwbidist[59]}}% +\let\nwbidisT=\Nwbidist + +% pair of north-west adjoint distributors of length nx100 units +\def\basicnwadjdist[#1]{\sdbicase{\NWADJDIST}{}{}{#100}}% + +% pair of north-west adjoint distributors +\newcommand{\nwadjdist}{\@ifnextchar[{\basicnwadjdist}{\basicnwadjdist[59]}}% + +% pair of north-west adjoint distributors with names [1][2] and length nx100 units +\def\basicNwadjdist[#1]#2#3{\sdbicase{\NWADJDIST}{#2}{#3}{#100}}% + +% pair of north-west adjoint distributors with names +\newcommand{\Nwadjdist}{\@ifnextchar[{\basicNwadjdist}{\basicNwadjdist[59]}}% +\let\nwadjdisT=\Nwadjdist + + +% 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){\line(2,1){#3}}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEDIST{f}{g}{n} draws a east-north-east distributor +% with names f, g and length n units +\newcommand{\ENEDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\line(2,1){#3}}% +\put(\Y,\Z){\enehead}% +\put(0,0){\distsign}% +\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}}% + +% \ENEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\ENEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,-\Z)(\value{y},\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEMONO{f}{g}{n} draws a east-north-east monomorphism +% with names f,g and length n units +\newcommand{\ENEMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}% +\put(-\monolength,-\secondmonolength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEEPI{f}{g}{n} draws a east-north-east epimorphism +% with names f, g and length n units +\newcommand{\ENEEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\line(2,1){\bimolength}}% +\put(\epilength,\secondepilength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEBIMO{f}{g}{n} draws a east-north-east bimorphism +% with names f,g and length n units +\newcommand{\ENEBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(2,1){\bimolength}}% +\put(-\monolength,-\secondmonolength){\enehead}% +\put(\epilength,\secondepilength){\enehead}% +\put(\Y,\Z){\enehead}% +\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}}% + +% \ENEEQL{f}{g}{n} draws a east-north-east equality +% with names f,g and length n units +\newcommand{\ENEEQL}[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{44}\truey{89}% +\put(-\value{x},\value{y}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(2,1){#3}}% +\end{picture}}% +\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}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\enehead}% +\put(\epilength,\secondmonolength){\enehead}% +\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}}% + +% \ENEBIDIST{f}{g}{n} draws a pair of east-north-east distributors +% with names f,g and length n units +\newcommand{\ENEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(2,1){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\enehead}% +\put(\epilength,\secondmonolength){\enehead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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}){\line(2,1){#3}}% +\put(\epilength,\secondmonolength){\enehead}% +\put(\monolength,\secondepilength){\line(-2,-1){#3}}% +\put(-\value{x},\value{y}){\wswhead}% +\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}}% + +% \ENEADJDIST{f}{g}{n} draws a east-north-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\ENEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\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}){\line(2,1){#3}}% +\put(\epilength,\secondmonolength){\enehead}% +\put(\monolength,\secondepilength){\line(-2,-1){#3}}% +\put(-\value{x},\value{y}){\wswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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 distributor +\def\basicenedist[#1]{\ENEDIST{}{}{#100}}% + +% east-north-east distributor +\newcommand{\enedist}{\@ifnextchar[{\basicenedist}{\basicenedist[133]}}% + +% basic east-north-east distributor with upper name +\def\basicEnedist[#1]#2{\ENEDIST{#2}{}{#100}}% + +% east-north-east distributor with upper name +\newcommand{\Enedist}{\@ifnextchar[{\basicEnedist}{\basicEnedist[133]}}% + +% basic east-north-east distributor with lower name +\def\basicenedisT[#1]#2{\ENEDIST{}{#2}{#100}}% + +% east-north-east distributor with lower name +\newcommand{\enedisT}{\@ifnextchar[{\basicenedisT}{\basicenedisT[133]}}% + +% basic east-north-east dotted arrow +\def\basicenedotar[#1]{\ENEDOTAR{}{}{#100}}% + +% east-north-east dotted arrow +\newcommand{\enedotar}{\@ifnextchar[{\basicenedotar}{\basicenedotar[133]}}% + +% basic east-north-east dotted arrow with upper name +\def\basicEnedotar[#1]#2{\ENEDOTAR{#2}{}{#100}}% + +% east-north-east dotted arrow with upper name +\newcommand{\Enedotar}{\@ifnextchar[{\basicEnedotar}{\basicEnedotar[133]}}% + +% basic east-north-east dotted arrow with lower name +\def\basicenedotaR[#1]#2{\ENEDOTAR{}{#2}{#100}}% + +% east-north-east dotted arrow with lower name +\newcommand{\enedotaR}{\@ifnextchar[{\basicenedotaR}{\basicenedotaR[133]}}% + +% basic east-north-east monomorphism +\def\basicenemono[#1]{\ENEMONO{}{}{#100}}% + +% east-north-east monomorphism +\newcommand{\enemono}{\@ifnextchar[{\basicenemono}{\basicenemono[133]}}% + +% basic east-north-east monomorphism with upper name +\def\basicEnemono[#1]#2{\ENEMONO{#2}{}{#100}}% + +% east-north-east monomorphism with upper name +\newcommand{\Enemono}{\@ifnextchar[{\basicEnemono}{\basicEnemono[133]}}% + +% basic east-north-east monomorphism with lower name +\def\basicenemonO[#1]#2{\ENEMONO{}{#2}{#100}}% + +% east-north-east monomorphism with lower name +\newcommand{\enemonO}{\@ifnextchar[{\basicenemonO}{\basicenemonO[133]}}% + +% basic east-north-east epimorphism +\def\basiceneepi[#1]{\ENEEPI{}{}{#100}}% + +% east-north-east epimorphism +\newcommand{\eneepi}{\@ifnextchar[{\basiceneepi}{\basiceneepi[133]}}% + +% basic east-north-east epimorphism with upper name +\def\basicEneepi[#1]#2{\ENEEPI{#2}{}{#100}}% + +% east-north-east epimorphism with upper name +\newcommand{\Eneepi}{\@ifnextchar[{\basicEneepi}{\basicEneepi[133]}}% + +% basic east-north-east epimorphism with lower name +\def\basiceneepI[#1]#2{\ENEEPI{}{#2}{#100}}% + +% east-north-east epimorphism with lower name +\newcommand{\eneepI}{\@ifnextchar[{\basiceneepI}{\basiceneepI[133]}}% + +% basic east-north-east bimorphism +\def\basicenebimo[#1]{\ENEBIMO{}{}{#100}}% + +% east-north-east bimorphism +\newcommand{\enebimo}{\@ifnextchar[{\basicenebimo}{\basicenebimo[133]}}% + +% basic east-north-east bimorphism with upper name +\def\basicEnebimo[#1]#2{\ENEBIMO{#2}{}{#100}}% + +% east-north-east bimorphism with upper name +\newcommand{\Enebimo}{\@ifnextchar[{\basicEnebimo}{\basicEnebimo[133]}}% + +% basic east-north-east bimorphism with lower name +\def\basicenebimO[#1]#2{\ENEBIMO{}{#2}{#100}}% + +% east-north-east bimorphism with lower name +\newcommand{\enebimO}{\@ifnextchar[{\basicenebimO}{\basicenebimO[133]}}% + +% basic east-north-east isomorphism +\def\basiceneiso[#1]{\ENEAR{\isosign}{}{#100}}% + +% east-north-east isomorphism +\newcommand{\eneiso}{\@ifnextchar[{\basiceneiso}{\basiceneiso[133]}}% + +% basic east-north-east isomorphism with upper name +\def\basicEneiso[#1]#2{\ENEAR{#2}{\isosign}{#100}}% + +% east-north-east isomorphism with upper name +\newcommand{\Eneiso}{\@ifnextchar[{\basicEneiso}{\basicEneiso[133]}}% + +% basic east-north-east isomorphism with lower name +\def\basiceneisO[#1]#2{\ENEAR{\isosign}{#2}{#100}}% + +% east-north-east isomorphism with lower name +\newcommand{\eneisO}{\@ifnextchar[{\basiceneisO}{\basiceneisO[133]}}% + +% basic east-north-east equality +\def\basiceneeql[#1]{\ENEEQL{}{}{#100}}% + +% east-north-east equality +\newcommand{\eneeql}{\@ifnextchar[{\basiceneeql}{\basiceneeql[133]}}% + +% basic east-north-east equality with upper name +\def\basicEneeql[#1]#2{\ENEEQL{#2}{}{#100}}% + +% east-north-east equality with upper name +\newcommand{\Eneeql}{\@ifnextchar[{\basicEneeql}{\basicEneeql[133]}}% + +% basic east-north-east equality with lower name +\def\basiceneeqL[#1]#2{\ENEEQL{}{#2}{#100}}% + +% east-north-east equality with lower name +\newcommand{\eneeqL}{\@ifnextchar[{\basiceneeqL}{\basiceneeqL[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 distributors +\def\basicenebidist[#1]{\ENEBIDIST{}{}{#100}}% + +% east-north-east pair of distributors +\newcommand{\enebidist}{\@ifnextchar[{\basicenebidist}{\basicenebidist[133]}}% + +% basic east-north-east pair of distributors with names +\def\basicEnebidist[#1]#2#3{\ENEBIDIST{#2}{#3}{#100}}% + +% east-north-east pair of distributors with names +\newcommand{\Enebidist}{\@ifnextchar[{\basicEnebidist}{\basicEnebidist[133]}}% +\let\enebidisT=\Enebidist + +% 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 + +% basic east-north-east pair of adjoint distributors +\def\basiceneadjdist[#1]{\ENEADJDIST{}{}{#100}}% + +% east-north-east pair of adjoint distributors +\newcommand{\eneadjdist}{\@ifnextchar[{\basiceneadjdist}{\basiceneadjdist[133]}}% + +% basic east-north-east pair of adjoint distributors with names +\def\basicEneadjdist[#1]#2#3{\ENEADJDIST{#2}{#3}{#100}}% + +% east-north-east pair of adjoint distributors with names +\newcommand{\Eneadjdist}{\@ifnextchar[{\basicEneadjdist}{\basicEneadjdist[133]}}% +\let\eneadjdisT=\Eneadjdist + + +% 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){\line(2,-1){#3}}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEDIST{f}{g}{n} draws a east-south-east distributor +% with names f, g and length n units +\newcommand{\ESEDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\line(2,-1){#3}}% +\put(\Y,-\Z){\esehead}% +\put(0,0){\distsign}% +\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}}% + +% \ESEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\ESEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Y,\Z)(\value{y},-\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEMONO{f}{g}{n} draws a east-south-east monomorphism +% with names f,g and length n units +\newcommand{\ESEMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}% +\put(-\monolength,\secondmonolength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEEPI{f}{g}{n} draws a east-south-east epimorphism +% with names f, g and length n units +\newcommand{\ESEEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\line(2,-1){\bimolength}}% +\put(\epilength,-\secondepilength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEBIMO{f}{g}{n} draws a east-south-east bimorphism +% with names f,g and length n units +\newcommand{\ESEBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(2,-1){\bimolength}}% +\put(-\monolength,\secondmonolength){\esehead}% +\put(\epilength,-\secondepilength){\esehead}% +\put(\Y,-\Z){\esehead}% +\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}}% + +% \ESEEQL{f}{g}{n} draws a east-south-east equality +% with names f,g and length n units +\newcommand{\ESEEQL}[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{44}\truey{89}% +\put(-\value{x},-\value{y}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(2,-1){#3}}% +\end{picture}}% +\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}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\esehead}% +\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}}% + +% \ESEBIDIST{f}{g}{n} draws a pair of east-south-east distributors +% with names f,g and length n units +\newcommand{\ESEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,\Z){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\esehead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\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}){\line(2,-1){#3}}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\wnwhead}% +\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}}% + +% \ESEADJDIST{f}{g}{n} draws a east-south-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\ESEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(-\Y,\Z){\begin{picture}(0,0)% +\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}){\line(2,-1){#3}}% +\put(\monolength,-\secondepilength){\esehead}% +\put(\epilength,-\secondmonolength){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\wnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\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 distributor +\def\basicesedist[#1]{\ESEDIST{}{}{#100}}% + +% east-south-east distributor +\newcommand{\esedist}{\@ifnextchar[{\basicesedist}{\basicesedist[133]}}% + +% basic east-south-east distributor with upper name +\def\basicEsedist[#1]#2{\ESEDIST{#2}{}{#100}}% + +% east-south-east distributor with upper name +\newcommand{\Esedist}{\@ifnextchar[{\basicEsedist}{\basicEsedist[133]}}% + +% basic east-south-east distributor with lower name +\def\basicesedisT[#1]#2{\ESEDIST{}{#2}{#100}}% + +% east-south-east distributor with lower name +\newcommand{\esedisT}{\@ifnextchar[{\basicesedisT}{\basicesedisT[133]}}% + +% basic east-south-east dotted arrow +\def\basicesedotar[#1]{\ESEDOTAR{}{}{#100}}% + +% east-south-east dotted arrow +\newcommand{\esedotar}{\@ifnextchar[{\basicesedotar}{\basicesedotar[133]}}% + +% basic east-south-east dotted arrow with upper name +\def\basicEsedotar[#1]#2{\ESEDOTAR{#2}{}{#100}}% + +% east-south-east dotted arrow with upper name +\newcommand{\Esedotar}{\@ifnextchar[{\basicEsedotar}{\basicEsedotar[133]}}% + +% basic east-south-east dotted arrow with lower name +\def\basicesedotaR[#1]#2{\ESEDOTAR{}{#2}{#100}}% + +% east-south-east dotted arrow with lower name +\newcommand{\esedotaR}{\@ifnextchar[{\basicesedotaR}{\basicesedotaR[133]}}% + +% basic east-south-east monomorphism +\def\basicesemono[#1]{\ESEMONO{}{}{#100}}% + +% east-south-east monomorphism +\newcommand{\esemono}{\@ifnextchar[{\basicesemono}{\basicesemono[133]}}% + +% basic east-south-east monomorphism with upper name +\def\basicEsemono[#1]#2{\ESEMONO{#2}{}{#100}}% + +% east-south-east monomorphism with upper name +\newcommand{\Esemono}{\@ifnextchar[{\basicEsemono}{\basicEsemono[133]}}% + +% basic east-south-east monomorphism with lower name +\def\basicesemonO[#1]#2{\ESEMONO{}{#2}{#100}}% + +% east-south-east monomorphism with lower name +\newcommand{\esemonO}{\@ifnextchar[{\basicesemonO}{\basicesemonO[133]}}% + +% basic east-south-east epimorphism +\def\basiceseepi[#1]{\ESEEPI{}{}{#100}}% + +% east-south-east epimorphism +\newcommand{\eseepi}{\@ifnextchar[{\basiceseepi}{\basiceseepi[133]}}% + +% basic east-south-east epimorphism with upper name +\def\basicEseepi[#1]#2{\ESEEPI{#2}{}{#100}}% + +% east-south-east epimorphism with upper name +\newcommand{\Eseepi}{\@ifnextchar[{\basicEseepi}{\basicEseepi[133]}}% + +% basic east-south-east epimorphism with lower name +\def\basiceseepI[#1]#2{\ESEEPI{}{#2}{#100}}% + +% east-south-east epimorphism with lower name +\newcommand{\eseepI}{\@ifnextchar[{\basiceseepI}{\basiceseepI[133]}}% + +% basic east-south-east bimorphism +\def\basicesebimo[#1]{\ESEBIMO{}{}{#100}}% + +% east-south-east bimorphism +\newcommand{\esebimo}{\@ifnextchar[{\basicesebimo}{\basicesebimo[133]}}% + +% basic east-south-east bimorphism with upper name +\def\basicEsebimo[#1]#2{\ESEBIMO{#2}{}{#100}}% + +% east-south-east bimorphism with upper name +\newcommand{\Esebimo}{\@ifnextchar[{\basicEsebimo}{\basicEsebimo[133]}}% + +% basic east-south-east bimorphism with lower name +\def\basicesebimO[#1]#2{\ESEBIMO{}{#2}{#100}}% + +% east-south-east bimorphism with lower name +\newcommand{\esebimO}{\@ifnextchar[{\basicesebimO}{\basicesebimO[133]}}% + +% basic east-south-east isomorphism +\def\basiceseiso[#1]{\ESEAR{\isosign}{}{#100}}% + +% east-south-east isomorphism +\newcommand{\eseiso}{\@ifnextchar[{\basiceseiso}{\basiceseiso[133]}}% + +% basic east-south-east isomorphism with upper name +\def\basicEseiso[#1]#2{\ESEAR{#2}{\isosign}{#100}}% + +% east-south-east isomorphism with upper name +\newcommand{\Eseiso}{\@ifnextchar[{\basicEseiso}{\basicEseiso[133]}}% + +% basic east-south-east isomorphism with lower name +\def\basiceseisO[#1]#2{\ESEAR{\isosign}{#2}{#100}}% + +% east-south-east isomorphism with lower name +\newcommand{\eseisO}{\@ifnextchar[{\basiceseisO}{\basiceseisO[133]}}% + +% basic east-south-east equality +\def\basiceseeql[#1]{\ESEEQL{}{}{#100}}% + +% east-south-east equality +\newcommand{\eseeql}{\@ifnextchar[{\basiceseeql}{\basiceseeql[133]}}% + +% basic east-south-east equality with upper name +\def\basicEseeql[#1]#2{\ESEEQL{#2}{}{#100}}% + +% east-south-east equality with upper name +\newcommand{\Eseeql}{\@ifnextchar[{\basicEseeql}{\basicEseeql[133]}}% + +% basic east-south-east equality with lower name +\def\basiceseeqL[#1]#2{\ESEEQL{}{#2}{#100}}% + +% east-south-east equality with lower name +\newcommand{\eseeqL}{\@ifnextchar[{\basiceseeqL}{\basiceseeqL[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 distributors +\def\basicesebidist[#1]{\ESEBIDIST{}{}{#100}}% + +% east-south-east pair of distributors +\newcommand{\esebidist}{\@ifnextchar[{\basicesebidist}{\basicesebidist[133]}}% + +% basic east-south-east pair of distributors with names +\def\basicEsebidist[#1]#2#3{\ESEBIDIST{#2}{#3}{#100}}% + +% east-south-east pair of distributors with names +\newcommand{\Esebidist}{\@ifnextchar[{\basicEsebidist}{\basicEsebidist[133]}}% +\let\esebidisT=\Esebidist + +% 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 + +% basic east-south-east pair of adjoint distributors +\def\basiceseadjdist[#1]{\ESEADJDIST{}{}{#100}}% + +% east-south-east pair of adjoint distributors +\newcommand{\eseadjdist}{\@ifnextchar[{\basiceseadjdist}{\basiceseadjdist[133]}}% + +% basic east-south-east pair of adjoint distributors with names +\def\basicEseadjdist[#1]#2#3{\ESEADJDIST{#2}{#3}{#100}}% + +% east-south-east pair of adjoint distributors with names +\newcommand{\Eseadjdist}{\@ifnextchar[{\basicEseadjdist}{\basicEseadjdist[133]}}% +\let\eseadjdisT=\Eseadjdist + +% 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){\line(-2,-1){#3}}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWDIST{f}{g}{n} draws a west-south-west distributor +% with names f, g and length n units +\newcommand{\WSWDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\line(-2,-1){#3}}% +\put(-\Y,-\Z){\wswhead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \WSWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\WSWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,\Z)(-\value{y},-\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWMONO{f}{g}{n} draws a west-south-west monomorphism +% with names f,g and length n units +\newcommand{\WSWMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}% +\put(\monolength,\secondmonolength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWEPI{f}{g}{n} draws a west-south-west epimorphism +% with names f, g and length n units +\newcommand{\WSWEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\line(-2,-1){\bimolength}}% +\put(-\epilength,-\secondepilength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}}% + +% \WSWBIMO{f}{g}{n} draws a west-south-west bimorphism +% with names f,g and length n units +\newcommand{\WSWBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-2,-1){\bimolength}}% +\put(\monolength,\secondmonolength){\wswhead}% +\put(-\epilength,-\secondepilength){\wswhead}% +\put(-\Y,-\Z){\wswhead}% +\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}){\line(-2,-1){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\wswhead}% +\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}}% + +% \WSWBIDIST{f}{g}{n} draws a pair of west-south-west distributors +% with names f,g and length n units +\newcommand{\WSWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,\Z){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(-2,-1){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\wswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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}){\line(-2,-1){#3}}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\line(2,1){#3}}% +\put(-\value{x},\value{y}){\enehead}% +\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}}% + +% \WSWADJDIST{f}{g}{n} draws a west-south-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\WSWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,\Z){\begin{picture}(0,0)% +\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}){\line(-2,-1){#3}}% +\put(-\monolength,-\secondepilength){\wswhead}% +\put(-\epilength,-\secondmonolength){\line(2,1){#3}}% +\put(-\value{x},\value{y}){\enehead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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 distributor +\def\basicwswdist[#1]{\WSWDIST{}{}{#100}}% + +% west-south-west distributor +\newcommand{\wswdist}{\@ifnextchar[{\basicwswdist}{\basicwswdist[133]}}% + +% basic west-south-west distributor with upper name +\def\basicWswdist[#1]#2{\WSWDIST{#2}{}{#100}}% + +% west-south-west distributor with upper name +\newcommand{\Wswdist}{\@ifnextchar[{\basicWswdist}{\basicWswdist[133]}}% + +% basic west-south-west distributor with lower name +\def\basicwswdisT[#1]#2{\WSWDIST{}{#2}{#100}}% + +% west-south-west distributor with lower name +\newcommand{\wswdisT}{\@ifnextchar[{\basicwswdisT}{\basicwswdisT[133]}}% + +% basic west-south-west dotted arrow +\def\basicwswdotar[#1]{\WSWDOTAR{}{}{#100}}% + +% west-south-west dotted arrow +\newcommand{\wswdotar}{\@ifnextchar[{\basicwswdotar}{\basicwswdotar[133]}}% + +% basic west-south-west dotted arrow with upper name +\def\basicWswdotar[#1]#2{\WSWDOTAR{#2}{}{#100}}% + +% west-south-west dotted arrow with upper name +\newcommand{\Wswdotar}{\@ifnextchar[{\basicWswdotar}{\basicWswdotar[133]}}% + +% basic west-south-west dotted arrow with lower name +\def\basicwswdotaR[#1]#2{\WSWDOTAR{}{#2}{#100}}% + +% west-south-west dotted arrow with lower name +\newcommand{\wswdotaR}{\@ifnextchar[{\basicwswdotaR}{\basicwswdotaR[133]}}% + +% basic west-south-west monomorphism +\def\basicwswmono[#1]{\WSWMONO{}{}{#100}}% + +% west-south-west monomorphism +\newcommand{\wswmono}{\@ifnextchar[{\basicwswmono}{\basicwswmono[133]}}% + +% basic west-south-west monomorphism with upper name +\def\basicWswmono[#1]#2{\WSWMONO{#2}{}{#100}}% + +% west-south-west monomorphism with upper name +\newcommand{\Wswmono}{\@ifnextchar[{\basicWswmono}{\basicWswmono[133]}}% + +% basic west-south-west monomorphism with lower name +\def\basicwswmonO[#1]#2{\WSWMONO{}{#2}{#100}}% + +% west-south-west monomorphism with lower name +\newcommand{\wswmonO}{\@ifnextchar[{\basicwswmonO}{\basicwswmonO[133]}}% + +% basic west-south-west epimorphism +\def\basicwswepi[#1]{\WSWEPI{}{}{#100}}% + +% west-south-west epimorphism +\newcommand{\wswepi}{\@ifnextchar[{\basicwswepi}{\basicwswepi[133]}}% + +% basic west-south-west epimorphism with upper name +\def\basicWswepi[#1]#2{\WSWEPI{#2}{}{#100}}% + +% west-south-west epimorphism with upper name +\newcommand{\Wswepi}{\@ifnextchar[{\basicWswepi}{\basicWswepi[133]}}% + +% basic west-south-west epimorphism with lower name +\def\basicwswepI[#1]#2{\WSWEPI{}{#2}{#100}}% + +% west-south-west epimorphism with lower name +\newcommand{\wswepI}{\@ifnextchar[{\basicwswepI}{\basicwswepI[133]}}% + +% basic west-south-west bimorphism +\def\basicwswbimo[#1]{\WSWBIMO{}{}{#100}}% + +% west-south-west bimorphism +\newcommand{\wswbimo}{\@ifnextchar[{\basicwswbimo}{\basicwswbimo[133]}}% + +% basic west-south-west bimorphism with upper name +\def\basicWswbimo[#1]#2{\WSWBIMO{#2}{}{#100}}% + +% west-south-west bimorphism with upper name +\newcommand{\Wswbimo}{\@ifnextchar[{\basicWswbimo}{\basicWswbimo[133]}}% + +% basic west-south-west bimorphism with lower name +\def\basicwswbimO[#1]#2{\WSWBIMO{}{#2}{#100}}% + +% west-south-west bimorphism with lower name +\newcommand{\wswbimO}{\@ifnextchar[{\basicwswbimO}{\basicwswbimO[133]}}% + +% basic west-south-west isomorphism +\def\basicwswiso[#1]{\WSWAR{\isosign}{}{#100}}% + +% west-south-west isomorphism +\newcommand{\wswiso}{\@ifnextchar[{\basicwswiso}{\basicwswiso[133]}}% + +% basic west-south-west isomorphism with upper name +\def\basicWswiso[#1]#2{\WSWAR{#2}{\isosign}{#100}}% + +% west-south-west isomorphism with upper name +\newcommand{\Wswiso}{\@ifnextchar[{\basicWswiso}{\basicWswiso[133]}}% + +% basic west-south-west isomorphism with lower name +\def\basicwswisO[#1]#2{\WSWAR{\isosign}{#2}{#100}}% + +% west-south-west isomorphism with lower name +\newcommand{\wswisO}{\@ifnextchar[{\basicwswisO}{\basicwswisO[133]}}% + +% west-south-west equality +\let\wsweql=\eneeql% + +% west-south-west equality with upper name +\let\Wsweql=\Eneeql% + +% west-south-west equality with lower name +\let\wsweqL=\eneeqL% + +% 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 distributors +\def\basicwswbidist[#1]{\WSWBIDIST{}{}{#100}}% + +% west-south-west pair of distributors +\newcommand{\wswbidist}{\@ifnextchar[{\basicwswbidist}{\basicwswbidist[133]}}% + +% basic west-south-west pair of distributors with names +\def\basicWswbidist[#1]#2#3{\WSWBIDIST{#2}{#3}{#100}}% + +% west-south-west pair of distributors with names +\newcommand{\Wswbidist}{\@ifnextchar[{\basicWswbidist}{\basicWswbidist[133]}}% +\let\wswbidisT=\Wswbidist + +% 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 + +% basic west-south-west pair of adjoint distributors +\def\basicwswadjdist[#1]{\WSWADJDIST{}{}{#100}}% + +% west-south-west pair of adjoint distributors +\newcommand{\wswadjdist}{\@ifnextchar[{\basicwswadjdist}{\basicwswadjdist[133]}}% + +% basic west-south-west pair of adjoint distributors with names +\def\basicWswadjdist[#1]#2#3{\WSWADJDIST{#2}{#3}{#100}}% + +% west-south-west pair of adjoint distributors with names +\newcommand{\Wswadjdist}{\@ifnextchar[{\basicWswadjdist}{\basicWswadjdist[133]}}% +\let\wswadjdisT=\Wswadjdist + + +% 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){\line(-2,1){#3}}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWDIST{f}{g}{n} draws a west-north-west distributor +% with names f, g and length n units +\newcommand{\WNWDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\line(-2,1){#3}}% +\put(-\Y,\Z){\wnwhead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \WNWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\WNWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{y}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Y,-\Z)(-\value{y},\value{z}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWMONO{f}{g}{n} draws a west-north-west monomorphism +% with names f,g and length n units +\newcommand{\WNWMONO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}% +\put(\monolength,-\secondmonolength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWEPI{f}{g}{n} draws a west-north-west epimorphism +% with names f, g and length n units +\newcommand{\WNWEPI}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\Y% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\line(-2,1){\bimolength}}% +\put(-\epilength,\secondepilength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}}% + +% \WNWBIMO{f}{g}{n} draws a west-north-west bimorphism +% with names f,g and length n units +\newcommand{\WNWBIMO}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\TrueTail\TrueHead% +\bimolength=#3% +\advance\bimolength by -\TrueMonoTail% +\monolength=\bimolength% +\advance\monolength by -\Y% +\advance\bimolength by -\TrueEpiHead% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\divide\secondmonolength by 2% +\secondepilength=\epilength% +\divide\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-2,1){\bimolength}}% +\put(\monolength,-\secondmonolength){\wnwhead}% +\put(-\epilength,\secondepilength){\wnwhead}% +\put(-\Y,\Z){\wnwhead}% +\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}){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\wnwhead}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\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}}% + +% \WNWBIDIST{f}{g}{n} draws a pair of west-north-west distributors +% with names f,g and length n units +\newcommand{\WNWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,-\Z){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(-2,1){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\wnwhead}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\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}){\line(-2,1){#3}}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\put(-\monolength,\secondepilength){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\esehead}% +\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}}% + +% \WNWADJDIST{f}{g}{n} draws a west-north-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\WNWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\truex{156}\truey{313}\truez{400}% +\put(\Y,-\Z){\begin{picture}(0,0)% +\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}){\line(-2,1){#3}}% +\put(-\epilength,\secondmonolength){\wnwhead}% +\put(-\monolength,\secondepilength){\line(2,-1){#3}}% +\put(\value{x},\value{y}){\esehead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\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}}% + +% west-north-west distributor +\newcommand{\wnwdist}{\@ifnextchar[{\basicwnwdist}{\basicwnwdist[133]}}% + +% basic west-north-west distributor with upper name +\def\basicWnwdist[#1]#2{\WNWDIST{#2}{}{#100}}% + +% west-north-west distributor with upper name +\newcommand{\Wnwdist}{\@ifnextchar[{\basicWnwdist}{\basicWnwdist[133]}}% + +% basic west-north-west distributor with lower name +\def\basicwnwdisT[#1]#2{\WNWDIST{}{#2}{#100}}% + +% west-north-west distributor with lower name +\newcommand{\wnwdisT}{\@ifnextchar[{\basicwnwdisT}{\basicwnwdisT[133]}}% + +% basic west-north-west dotted arrow +\def\basicwnwdotar[#1]{\WNWDOTAR{}{}{#100}}% + +% west-north-west dotted arrow +\newcommand{\wnwdotar}{\@ifnextchar[{\basicwnwdotar}{\basicwnwdotar[133]}}% + +% basic west-north-west dotted arrow with upper name +\def\basicWnwdotar[#1]#2{\WNWDOTAR{#2}{}{#100}}% + +% west-north-west dotted arrow with upper name +\newcommand{\Wnwdotar}{\@ifnextchar[{\basicWnwdotar}{\basicWnwdotar[133]}}% + +% basic west-north-west dotted arrow with lower name +\def\basicwnwdotaR[#1]#2{\WNWDOTAR{}{#2}{#100}}% + +% west-north-west dotted arrow with lower name +\newcommand{\wnwdotaR}{\@ifnextchar[{\basicwnwdotaR}{\basicwnwdotaR[133]}}% + +% basic west-north-west monomorphism +\def\basicwnwmono[#1]{\WNWMONO{}{}{#100}}% + +% west-north-west monomorphism +\newcommand{\wnwmono}{\@ifnextchar[{\basicwnwmono}{\basicwnwmono[133]}}% + +% basic west-north-west monomorphism with upper name +\def\basicWnwmono[#1]#2{\WNWMONO{#2}{}{#100}}% + +% west-north-west monomorphism with upper name +\newcommand{\Wnwmono}{\@ifnextchar[{\basicWnwmono}{\basicWnwmono[133]}}% + +% basic west-north-west monomorphism with lower name +\def\basicwnwmonO[#1]#2{\WNWMONO{}{#2}{#100}}% + +% west-north-west monomorphism with lower name +\newcommand{\wnwmonO}{\@ifnextchar[{\basicwnwmonO}{\basicwnwmonO[133]}}% + +% basic west-north-west epimorphism +\def\basicwnwepi[#1]{\WNWEPI{}{}{#100}}% + +% west-north-west epimorphism +\newcommand{\wnwepi}{\@ifnextchar[{\basicwnwepi}{\basicwnwepi[133]}}% + +% basic west-north-west epimorphism with upper name +\def\basicWnwepi[#1]#2{\WNWEPI{#2}{}{#100}}% + +% west-north-west epimorphism with upper name +\newcommand{\Wnwepi}{\@ifnextchar[{\basicWnwepi}{\basicWnwepi[133]}}% + +% basic west-north-west epimorphism with lower name +\def\basicwnwepI[#1]#2{\WNWEPI{}{#2}{#100}}% + +% west-north-west epimorphism with lower name +\newcommand{\wnwepI}{\@ifnextchar[{\basicwnwepI}{\basicwnwepI[133]}}% + +% basic west-north-west bimorphism +\def\basicwnwbimo[#1]{\WNWBIMO{}{}{#100}}% + +% west-north-west bimorphism +\newcommand{\wnwbimo}{\@ifnextchar[{\basicwnwbimo}{\basicwnwbimo[133]}}% + +% basic west-north-west bimorphism with upper name +\def\basicWnwbimo[#1]#2{\WNWBIMO{#2}{}{#100}}% + +% west-north-west bimorphism with upper name +\newcommand{\Wnwbimo}{\@ifnextchar[{\basicWnwbimo}{\basicWnwbimo[133]}}% + +% basic west-north-west bimorphism with lower name +\def\basicwnwbimO[#1]#2{\WNWBIMO{}{#2}{#100}}% + +% west-north-west bimorphism with lower name +\newcommand{\wnwbimO}{\@ifnextchar[{\basicwnwbimO}{\basicwnwbimO[133]}}% + +% basic west-north-west isomorphism +\def\basicwnwiso[#1]{\WNWAR{\isosign}{}{#100}}% + +% west-north-west isomorphism +\newcommand{\wnwiso}{\@ifnextchar[{\basicwnwiso}{\basicwnwiso[133]}}% + +% basic west-north-west isomorphism with upper name +\def\basicWnwiso[#1]#2{\WNWAR{#2}{\isosign}{#100}}% + +% west-north-west isomorphism with upper name +\newcommand{\Wnwiso}{\@ifnextchar[{\basicWnwiso}{\basicWnwiso[133]}}% + +% basic west-north-west isomorphism with lower name +\def\basicwnwisO[#1]#2{\WNWAR{\isosign}{#2}{#100}}% + +% west-north-west isomorphism with lower name +\newcommand{\wnwisO}{\@ifnextchar[{\basicwnwisO}{\basicwnwisO[133]}}% + +% west-north-west equality +\let\wnweql=\eseeql% + +% west-north-west equality with upper name +\let\Wnweql=\Eseeql% + +% west-north-west equality with lower name +\let\wnweqL=\eseeqL% + +% 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 distributors +\def\basicwnwbidist[#1]{\WNWBIDIST{}{}{#100}}% + +% west-north-west pair of distributors +\newcommand{\wnwbidist}{\@ifnextchar[{\basicwnwbidist}{\basicwnwbidist[133]}}% + +% basic west-north-west pair of distributors with names +\def\basicWnwbidist[#1]#2#3{\WNWBIDIST{#2}{#3}{#100}}% + +% west-north-west pair of distributors with names +\newcommand{\Wnwbidist}{\@ifnextchar[{\basicWnwbidist}{\basicWnwbidist[133]}}% +\let\wnwbidisT=\Wnwbidist + +% 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 + +% basic west-north-west pair of adjoint distributors +\def\basicwnwadjdist[#1]{\WNWADJDIST{}{}{#100}}% + +% west-north-west pair of adjoint distributors +\newcommand{\wnwadjdist}{\@ifnextchar[{\basicwnwadjdist}{\basicwnwadjdist[133]}}% + +% basic west-north-west pair of adjoint distributors with names +\def\basicWnwadjdist[#1]#2#3{\WNWADJDIST{#2}{#3}{#100}}% + +% west-north-west pair of adjoint distributors with names +\newcommand{\Wnwadjdist}{\@ifnextchar[{\basicWnwadjdist}{\basicWnwadjdist[133]}}% +\let\wnwadjdisT=\Wnwadjdist + + +% 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){\line(1,2){#3}}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEDIST{f}{g}{n} draws a north-north-east distributor +% with names f, g and length n units +\newcommand{\NNEDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\line(1,2){#3}}% +\put(\Z,#3){\nnehead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \NNEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\NNEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Z,-#3)(\value{z},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEMONO{f}{g}{n} draws a north-north-east monomorphism +% with names f,g and length n units +\newcommand{\NNEMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}% +\put(-\monolength,-\secondmonolength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEEPI{f}{g}{n} draws a north-north-east epimorphism +% with names f, g and length n units +\newcommand{\NNEEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\line(1,2){\bimolength}}% +\put(\epilength,\secondepilength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEBIMO{f}{g}{n} draws a north-north-east bimorphism +% with names f,g and length n units +\newcommand{\NNEBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,-\secondmonolength){\line(1,2){\bimolength}}% +\put(-\monolength,-\secondmonolength){\nnehead}% +\put(\epilength,\secondepilength){\nnehead}% +\put(\Z,#3){\nnehead}% +\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}}% + +% \NNEEQL{f}{g}{n} draws a north-north-east equality +% with names f,g and length n units +\newcommand{\NNEEQL}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\begin{picture}(0,0)% +\truex{44}\truey{89}% +\put(-\value{y},\value{x}){\line(1,2){#3}}% +\put(\value{y},-\value{x}){\line(1,2){#3}}% +\end{picture}}% +\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}){\line(1,2){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\nnehead}% +\put(\epilength,\secondmonolength){\nnehead}% +\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}}% + +% \NNEBIDIST{f}{g}{n} draws a pair of north-north-east distributors +% with names f,g and length n units +\newcommand{\NNEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,-#3){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(1,2){#3}}% +\put(\value{x},-\value{y}){\line(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}% +\put(\monolength,\secondepilength){\nnehead}% +\put(\epilength,\secondmonolength){\nnehead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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}){\line(1,2){#3}}% +\put(\epilength,\secondmonolength){\nnehead}% +\put(\monolength,\secondepilength){\line(-1,-2){#3}}% +\put(-\value{x},\value{y}){\sswhead}% +\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}}% + +% \NNEADJDIST{f}{g}{n} draws a north-north-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\NNEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,-#3){\begin{picture}(0,0)% +\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}){\line(1,2){#3}}% +\put(\epilength,\secondmonolength){\nnehead}% +\put(\monolength,\secondepilength){\line(-1,-2){#3}}% +\put(-\value{x},\value{y}){\sswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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 distributor +\def\basicnnedist[#1]{\NNEDIST{}{}{#100}}% + +% north-north-east distributor +\newcommand{\nnedist}{\@ifnextchar[{\basicnnedist}{\basicnnedist[67]}}% + +% basic north-north-east distributor with upper name +\def\basicNnedist[#1]#2{\NNEDIST{#2}{}{#100}}% + +% north-north-east distributor with upper name +\newcommand{\Nnedist}{\@ifnextchar[{\basicNnedist}{\basicNnedist[67]}}% + +% basic north-north-east distributor with lower name +\def\basicnnedisT[#1]#2{\NNEDIST{}{#2}{#100}}% + +% north-north-east distributor with lower name +\newcommand{\nnedisT}{\@ifnextchar[{\basicnnedisT}{\basicnnedisT[67]}}% + +% basic north-north-east dotted arrow +\def\basicnnedotar[#1]{\NNEDOTAR{}{}{#100}}% + +% north-north-east dotted arrow +\newcommand{\nnedotar}{\@ifnextchar[{\basicnnedotar}{\basicnnedotar[67]}}% + +% basic north-north-east dotted arrow with upper name +\def\basicNnedotar[#1]#2{\NNEDOTAR{#2}{}{#100}}% + +% north-north-east dotted arrow with upper name +\newcommand{\Nnedotar}{\@ifnextchar[{\basicNnedotar}{\basicNnedotar[67]}}% + +% basic north-north-east dotted arrow with lower name +\def\basicnnedotaR[#1]#2{\NNEDOTAR{}{#2}{#100}}% + +% north-north-east dotted arrow with lower name +\newcommand{\nnedotaR}{\@ifnextchar[{\basicnnedotaR}{\basicnnedotaR[67]}}% + +% basic north-north-east monomorphism +\def\basicnnemono[#1]{\NNEMONO{}{}{#100}}% + +% north-north-east monomorphism +\newcommand{\nnemono}{\@ifnextchar[{\basicnnemono}{\basicnnemono[67]}}% + +% basic north-north-east monomorphism with upper name +\def\basicNnemono[#1]#2{\NNEMONO{#2}{}{#100}}% + +% north-north-east monomorphism with upper name +\newcommand{\Nnemono}{\@ifnextchar[{\basicNnemono}{\basicNnemono[67]}}% + +% basic north-north-east monomorphism with lower name +\def\basicnnemonO[#1]#2{\NNEMONO{}{#2}{#100}}% + +% north-north-east monomorphism with lower name +\newcommand{\nnemonO}{\@ifnextchar[{\basicnnemonO}{\basicnnemonO[67]}}% + +% basic north-north-east epimorphism +\def\basicnneepi[#1]{\NNEEPI{}{}{#100}}% + +% north-north-east epimorphism +\newcommand{\nneepi}{\@ifnextchar[{\basicnneepi}{\basicnneepi[67]}}% + +% basic north-north-east epimorphism with upper name +\def\basicNneepi[#1]#2{\NNEEPI{#2}{}{#100}}% + +% north-north-east epimorphism with upper name +\newcommand{\Nneepi}{\@ifnextchar[{\basicNneepi}{\basicNneepi[67]}}% + +% basic north-north-east epimorphism with lower name +\def\basicnneepI[#1]#2{\NNEEPI{}{#2}{#100}}% + +% north-north-east epimorphism with lower name +\newcommand{\nneepI}{\@ifnextchar[{\basicnneepI}{\basicnneepI[67]}}% + +% basic north-north-east bimorphism +\def\basicnnebimo[#1]{\NNEBIMO{}{}{#100}}% + +% north-north-east bimorphism +\newcommand{\nnebimo}{\@ifnextchar[{\basicnnebimo}{\basicnnebimo[67]}}% + +% basic north-north-east bimorphism with upper name +\def\basicNnebimo[#1]#2{\NNEBIMO{#2}{}{#100}}% + +% north-north-east bimorphism with upper name +\newcommand{\Nnebimo}{\@ifnextchar[{\basicNnebimo}{\basicNnebimo[67]}}% + +% basic north-north-east bimorphism with lower name +\def\basicnnebimO[#1]#2{\NNEBIMO{}{#2}{#100}}% + +% north-north-east bimorphism with lower name +\newcommand{\nnebimO}{\@ifnextchar[{\basicnnebimO}{\basicnnebimO[67]}}% + +% basic north-north-east isomorphism +\def\basicnneiso[#1]{\NNEAR{\isosign}{}{#100}}% + +% north-north-east isomorphism +\newcommand{\nneiso}{\@ifnextchar[{\basicnneiso}{\basicnneiso[67]}}% + +% basic north-north-east isomorphism with upper name +\def\basicNneiso[#1]#2{\NNEAR{#2}{\isosign}{#100}}% + +% north-north-east isomorphism with upper name +\newcommand{\Nneiso}{\@ifnextchar[{\basicNneiso}{\basicNneiso[67]}}% + +% basic north-north-east isomorphism with lower name +\def\basicnneisO[#1]#2{\NNEAR{\isosign}{#2}{#100}}% + +% north-north-east isomorphism with lower name +\newcommand{\nneisO}{\@ifnextchar[{\basicnneisO}{\basicnneisO[67]}}% + +% basic north-north-east equality +\def\basicnneeql[#1]{\NNEEQL{}{}{#100}}% + +% north-north-east equality +\newcommand{\nneeql}{\@ifnextchar[{\basicnneeql}{\basicnneeql[67]}}% + +% basic north-north-east equality with upper name +\def\basicNneeql[#1]#2{\NNEEQL{#2}{}{#100}}% + +% north-north-east equality with upper name +\newcommand{\Nneeql}{\@ifnextchar[{\basicNneeql}{\basicNneeql[67]}}% + +% basic north-north-east equality with lower name +\def\basicnneeqL[#1]#2{\NNEEQL{}{#2}{#100}}% + +% north-north-east equality with lower name +\newcommand{\nneeqL}{\@ifnextchar[{\basicnneeqL}{\basicnneeqL[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 distributors +\def\basicnnebidist[#1]{\NNEBIDIST{}{}{#100}}% + +% north-north-east pair of distributors +\newcommand{\nnebidist}{\@ifnextchar[{\basicnnebidist}{\basicnnebidist[67]}}% + +% basic north-north-east pair of distributors with names +\def\basicNnebidist[#1]#2#3{\NNEBIDIST{#2}{#3}{#100}}% + +% north-north-east pair of distributors with names +\newcommand{\Nnebidist}{\@ifnextchar[{\basicNnebidist}{\basicNnebidist[67]}}% +\let\nnebidisT=\Nnebidist + +% 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 + +% basic north-north-east pair of adjoint distributors +\def\basicnneadjdist[#1]{\NNEADJDIST{}{}{#100}}% + +% north-north-east pair of adjoint distributors +\newcommand{\nneadjdist}{\@ifnextchar[{\basicnneadjdist}{\basicnneadjdist[67]}}% + +% basic north-north-east pair of adjoint distributors with names +\def\basicNneadjdist[#1]#2#3{\NNEADJDIST{#2}{#3}{#100}}% + +% north-north-east pair of adjoint distributors with names +\newcommand{\Nneadjdist}{\@ifnextchar[{\basicNneadjdist}{\basicNneadjdist[67]}}% +\let\nneadjdisT=\Nneadjdist + + +% 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){\line(1,-2){#3}}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEDIST{f}{g}{n} draws a south-south-east distributor +% with names f, g and length n units +\newcommand{\SSEDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\line(1,-2){#3}}% +\put(\Z,-#3){\ssehead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \SSEDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\SSEDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(-\Z,#3)(\value{z},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEMONO{f}{g}{n} draws a south-south-east monomorphism +% with names f,g and length n units +\newcommand{\SSEMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}% +\put(-\monolength,\secondmonolength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEEPI{f}{g}{n} draws a south-south-east epimorphism +% with names f, g and length n units +\newcommand{\SSEEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\line(1,-2){\bimolength}}% +\put(\epilength,-\secondepilength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEBIMO{f}{g}{n} draws a south-south-east bimorphism +% with names f,g and length n units +\newcommand{\SSEBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(-\monolength,\secondmonolength){\line(1,-2){\bimolength}}% +\put(-\monolength,\secondmonolength){\ssehead}% +\put(\epilength,-\secondepilength){\ssehead}% +\put(\Z,-#3){\ssehead}% +\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}}% + +% \SSEEQL{f}{g}{n} draws a south-south-east equality +% with names f,g and length n units +\newcommand{\SSEEQL}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\begin{picture}(0,0)% +\truex{44}\truey{89}% +\put(-\value{y},-\value{x}){\line(1,-2){#3}}% +\put(\value{y},\value{x}){\line(1,-2){#3}}% +\end{picture}}% +\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}){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\ssehead}% +\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}}% + +% \SSEBIDIST{f}{g}{n} draws a pair of south-south-east distributors +% with names f,g and length n units +\newcommand{\SSEBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,#3){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\line(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}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\ssehead}% +\end{picture}} +\put(-\value{x},-\value{y}){\distsign}% +\put(\value{x},\value{y}){\distsign}% +\truex{500}\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}){\line(1,-2){#3}}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\nnwhead}% +\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}}% + +% \SSEADJDIST{f}{g}{n} draws a south-south-east pair of adjoint distributors +% with names f,g and length n units +\newcommand{\SSEADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(-\Y,#3){\begin{picture}(0,0)% +\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}){\line(1,-2){#3}}% +\put(\monolength,-\secondepilength){\ssehead}% +\put(\epilength,-\secondmonolength){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\nnwhead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\truex{500}\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 distributor +\def\basicssedist[#1]{\SSEDIST{}{}{#100}}% + +% south-south-east distributor +\newcommand{\ssedist}{\@ifnextchar[{\basicssedist}{\basicssedist[67]}}% + +% basic south-south-east distributor with upper name +\def\basicSsedist[#1]#2{\SSEDIST{#2}{}{#100}}% + +% south-south-east distributor with upper name +\newcommand{\Ssedist}{\@ifnextchar[{\basicSsedist}{\basicSsedist[67]}}% + +% basic south-south-east distributor with lower name +\def\basicssedisT[#1]#2{\SSEDIST{}{#2}{#100}}% + +% south-south-east distributor with lower name +\newcommand{\ssedisT}{\@ifnextchar[{\basicssedisT}{\basicssedisT[67]}}% + +% basic south-south-east dotted arrow +\def\basicssedotar[#1]{\SSEDOTAR{}{}{#100}}% + +% south-south-east dotted arrow +\newcommand{\ssedotar}{\@ifnextchar[{\basicssedotar}{\basicssedotar[67]}}% + +% basic south-south-east dotted arrow with upper name +\def\basicSsedotar[#1]#2{\SSEDOTAR{#2}{}{#100}}% + +% south-south-east dotted arrow with upper name +\newcommand{\Ssedotar}{\@ifnextchar[{\basicSsedotar}{\basicSsedotar[67]}}% + +% basic south-south-east dotted arrow with lower name +\def\basicssedotaR[#1]#2{\SSEDOTAR{}{#2}{#100}}% + +% south-south-east dotted arrow with lower name +\newcommand{\ssedotaR}{\@ifnextchar[{\basicssedotaR}{\basicssedotaR[67]}}% + +% basic south-south-east monomorphism +\def\basicssemono[#1]{\SSEMONO{}{}{#100}}% + +% south-south-east monomorphism +\newcommand{\ssemono}{\@ifnextchar[{\basicssemono}{\basicssemono[67]}}% + +% basic south-south-east monomorphism with upper name +\def\basicSsemono[#1]#2{\SSEMONO{#2}{}{#100}}% + +% south-south-east monomorphism with upper name +\newcommand{\Ssemono}{\@ifnextchar[{\basicSsemono}{\basicSsemono[67]}}% + +% basic south-south-east monomorphism with lower name +\def\basicssemonO[#1]#2{\SSEMONO{}{#2}{#100}}% + +% south-south-east monomorphism with lower name +\newcommand{\ssemonO}{\@ifnextchar[{\basicssemonO}{\basicssemonO[67]}}% + +% basic south-south-east epimorphism +\def\basicsseepi[#1]{\SSEEPI{}{}{#100}}% + +% south-south-east epimorphism +\newcommand{\sseepi}{\@ifnextchar[{\basicsseepi}{\basicsseepi[67]}}% + +% basic south-south-east epimorphism with upper name +\def\basicSseepi[#1]#2{\SSEEPI{#2}{}{#100}}% + +% south-south-east epimorphism with upper name +\newcommand{\Sseepi}{\@ifnextchar[{\basicSseepi}{\basicSseepi[67]}}% + +% basic south-south-east epimorphism with lower name +\def\basicsseepI[#1]#2{\SSEEPI{}{#2}{#100}}% + +% south-south-east epimorphism with lower name +\newcommand{\sseepI}{\@ifnextchar[{\basicsseepI}{\basicsseepI[67]}}% + +% basic south-south-east bimorphism +\def\basicssebimo[#1]{\SSEBIMO{}{}{#100}}% + +% south-south-east bimorphism +\newcommand{\ssebimo}{\@ifnextchar[{\basicssebimo}{\basicssebimo[67]}}% + +% basic south-south-east bimorphism with upper name +\def\basicSsebimo[#1]#2{\SSEBIMO{#2}{}{#100}}% + +% south-south-east bimorphism with upper name +\newcommand{\Ssebimo}{\@ifnextchar[{\basicSsebimo}{\basicSsebimo[67]}}% + +% basic south-south-east bimorphism with lower name +\def\basicssebimO[#1]#2{\SSEBIMO{}{#2}{#100}}% + +% south-south-east bimorphism with lower name +\newcommand{\ssebimO}{\@ifnextchar[{\basicssebimO}{\basicssebimO[67]}}% + +% basic south-south-east isomorphism +\def\basicsseiso[#1]{\SSEAR{\isosign}{}{#100}}% + +% south-south-east isomorphism +\newcommand{\sseiso}{\@ifnextchar[{\basicsseiso}{\basicsseiso[67]}}% + +% basic south-south-east isomorphism with upper name +\def\basicSseiso[#1]#2{\SSEAR{#2}{\isosign}{#100}}% + +% south-south-east isomorphism with upper name +\newcommand{\Sseiso}{\@ifnextchar[{\basicSseiso}{\basicSseiso[67]}}% + +% basic south-south-east isomorphism with lower name +\def\basicsseisO[#1]#2{\SSEAR{\isosign}{#2}{#100}}% + +% south-south-east isomorphism with lower name +\newcommand{\sseisO}{\@ifnextchar[{\basicsseisO}{\basicsseisO[67]}}% + +% basic south-south-east equality +\def\basicsseeql[#1]{\SSEEQL{}{}{#100}}% + +% south-south-east equality +\newcommand{\sseeql}{\@ifnextchar[{\basicsseeql}{\basicsseeql[67]}}% + +% basic south-south-east equality with upper name +\def\basicSseeql[#1]#2{\SSEEQL{#2}{}{#100}}% + +% south-south-east equality with upper name +\newcommand{\Sseeql}{\@ifnextchar[{\basicSseeql}{\basicSseeql[67]}}% + +% basic south-south-east equality with lower name +\def\basicsseeqL[#1]#2{\SSEEQL{}{#2}{#100}}% + +% south-south-east equality with lower name +\newcommand{\sseeqL}{\@ifnextchar[{\basicsseeqL}{\basicsseeqL[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 distributors +\def\basicssebidist[#1]{\SSEBIDIST{}{}{#100}}% + +% south-south-east pair of distributors +\newcommand{\ssebidist}{\@ifnextchar[{\basicssebidist}{\basicssebidist[67]}}% + +% basic south-south-east pair of distributors with names +\def\basicSsebidist[#1]#2#3{\SSEBIDIST{#2}{#3}{#100}}% + +% south-south-east pair of distributors with names +\newcommand{\Ssebidist}{\@ifnextchar[{\basicSsebidist}{\basicSsebidist[67]}}% +\let\ssebidisT=\Ssebidist + +% 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 + +% basic south-south-east pair of adjoint distributors +\def\basicsseadjdist[#1]{\SSEADJDIST{}{}{#100}}% + +% south-south-east pair of adjoint distributors +\newcommand{\sseadjdist}{\@ifnextchar[{\basicsseadjdist}{\basicsseadjdist[67]}}% + +% basic south-south-east pair of adjoint distributors with names +\def\basicSseadjdist[#1]#2#3{\SSEADJDIST{#2}{#3}{#100}}% + +% south-south-east pair of adjoint distributors with names +\newcommand{\Sseadjdist}{\@ifnextchar[{\basicSseadjdist}{\basicSseadjdist[67]}}% +\let\sseadjdisT=\Sseadjdist + + +% 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){\line(-1,-2){#3}}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWDIST{f}{g}{n} draws a south-south-west distributor +% with names f, g and length n units +\newcommand{\SSWDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\line(-1,-2){#3}}% +\put(-\Z,-#3){\sswhead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \SSWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\SSWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Z,#3)(-\value{z},-\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWMONO{f}{g}{n} draws a south-south-west monomorphism +% with names f,g and length n units +\newcommand{\SSWMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}% +\put(\monolength,\secondmonolength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWEPI{f}{g}{n} draws a south-south-west epimorphism +% with names f, g and length n units +\newcommand{\SSWEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\line(-1,-2){\bimolength}}% +\put(-\epilength,-\secondepilength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}}% + +% \SSWBIMO{f}{g}{n} draws a south-south-west bimorphism +% with names f,g and length n units +\newcommand{\SSWBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,\secondmonolength){\line(-1,-2){\bimolength}}% +\put(\monolength,\secondmonolength){\sswhead}% +\put(-\epilength,-\secondepilength){\sswhead}% +\put(-\Z,-#3){\sswhead}% +\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}){\line(-1,-2){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\sswhead}% +\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}}% + +% \SSWBIDIST{f}{g}{n} draws a pair of south-south-west distributors +% with names f,g and length n units +\newcommand{\SSWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,#3){\begin{picture}(0,0)% +\put(-\value{x},\value{y}){\line(-1,-2){#3}}% +\put(\value{x},-\value{y}){\line(-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}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\sswhead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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}){\line(-1,-2){#3}}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\line(1,2){#3}}% +\put(-\value{x},\value{y}){\nnehead}% +\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}}% + +% \SSWADJDIST{f}{g}{n} draws a south-south-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\SSWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,#3){\begin{picture}(0,0)% +\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}){\line(-1,-2){#3}}% +\put(-\monolength,-\secondepilength){\sswhead}% +\put(-\epilength,-\secondmonolength){\line(1,2){#3}}% +\put(-\value{x},\value{y}){\nnehead}% +\end{picture}} +\put(-\value{x},\value{y}){\distsign}% +\put(\value{x},-\value{y}){\distsign}% +\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 distributor +\def\basicsswdist[#1]{\SSWDIST{}{}{#100}}% + +% south-south-west distributor +\newcommand{\sswdist}{\@ifnextchar[{\basicsswdist}{\basicsswdist[67]}}% + +% basic south-south-west distributor with upper name +\def\basicSswdist[#1]#2{\SSWDIST{#2}{}{#100}}% + +% south-south-west distributor with upper name +\newcommand{\Sswdist}{\@ifnextchar[{\basicSswdist}{\basicSswdist[67]}}% + +% basic south-south-west distributor with lower name +\def\basicsswdisT[#1]#2{\SSWDIST{}{#2}{#100}}% + +% south-south-west distributor with lower name +\newcommand{\sswdisT}{\@ifnextchar[{\basicsswdisT}{\basicsswdisT[67]}}% + +% basic south-south-west dotted arrow +\def\basicsswdotar[#1]{\SSWDOTAR{}{}{#100}}% + +% south-south-west dotted arrow +\newcommand{\sswdotar}{\@ifnextchar[{\basicsswdotar}{\basicsswdotar[67]}}% + +% basic south-south-west dotted arrow with upper name +\def\basicSswdotar[#1]#2{\SSWDOTAR{#2}{}{#100}}% + +% south-south-west dotted arrow with upper name +\newcommand{\Sswdotar}{\@ifnextchar[{\basicSswdotar}{\basicSswdotar[67]}}% + +% basic south-south-west dotted arrow with lower name +\def\basicsswdotaR[#1]#2{\SSWDOTAR{}{#2}{#100}}% + +% south-south-west dotted arrow with lower name +\newcommand{\sswdotaR}{\@ifnextchar[{\basicsswdotaR}{\basicsswdotaR[67]}}% + +% basic south-south-west monomorphism +\def\basicsswmono[#1]{\SSWMONO{}{}{#100}}% + +% south-south-west monomorphism +\newcommand{\sswmono}{\@ifnextchar[{\basicsswmono}{\basicsswmono[67]}}% + +% basic south-south-west monomorphism with upper name +\def\basicSswmono[#1]#2{\SSWMONO{#2}{}{#100}}% + +% south-south-west monomorphism with upper name +\newcommand{\Sswmono}{\@ifnextchar[{\basicSswmono}{\basicSswmono[67]}}% + +% basic south-south-west monomorphism with lower name +\def\basicsswmonO[#1]#2{\SSWMONO{}{#2}{#100}}% + +% south-south-west monomorphism with lower name +\newcommand{\sswmonO}{\@ifnextchar[{\basicsswmonO}{\basicsswmonO[67]}}% + +% basic south-south-west epimorphism +\def\basicsswepi[#1]{\SSWEPI{}{}{#100}}% + +% south-south-west epimorphism +\newcommand{\sswepi}{\@ifnextchar[{\basicsswepi}{\basicsswepi[67]}}% + +% basic south-south-west epimorphism with upper name +\def\basicSswepi[#1]#2{\SSWEPI{#2}{}{#100}}% + +% south-south-west epimorphism with upper name +\newcommand{\Sswepi}{\@ifnextchar[{\basicSswepi}{\basicSswepi[67]}}% + +% basic south-south-west epimorphism with lower name +\def\basicsswepI[#1]#2{\SSWEPI{}{#2}{#100}}% + +% south-south-west epimorphism with lower name +\newcommand{\sswepI}{\@ifnextchar[{\basicsswepI}{\basicsswepI[67]}}% + +% basic south-south-west bimorphism +\def\basicsswbimo[#1]{\SSWBIMO{}{}{#100}}% + +% south-south-west bimorphism +\newcommand{\sswbimo}{\@ifnextchar[{\basicsswbimo}{\basicsswbimo[67]}}% + +% basic south-south-west bimorphism with upper name +\def\basicSswbimo[#1]#2{\SSWBIMO{#2}{}{#100}}% + +% south-south-west bimorphism with upper name +\newcommand{\Sswbimo}{\@ifnextchar[{\basicSswbimo}{\basicSswbimo[67]}}% + +% basic south-south-west bimorphism with lower name +\def\basicsswbimO[#1]#2{\SSWBIMO{}{#2}{#100}}% + +% south-south-west bimorphism with lower name +\newcommand{\sswbimO}{\@ifnextchar[{\basicsswbimO}{\basicsswbimO[67]}}% + +% basic south-south-west isomorphism +\def\basicsswiso[#1]{\SSWAR{\isosign}{}{#100}}% + +% south-south-west isomorphism +\newcommand{\sswiso}{\@ifnextchar[{\basicsswiso}{\basicsswiso[67]}}% + +% basic south-south-west isomorphism with upper name +\def\basicSswiso[#1]#2{\SSWAR{#2}{\isosign}{#100}}% + +% south-south-west isomorphism with upper name +\newcommand{\Sswiso}{\@ifnextchar[{\basicSswiso}{\basicSswiso[67]}}% + +% basic south-south-west isomorphism with lower name +\def\basicsswisO[#1]#2{\SSWAR{\isosign}{#2}{#100}}% + +% south-south-west isomorphism with lower name +\newcommand{\sswisO}{\@ifnextchar[{\basicsswisO}{\basicsswisO[67]}}% + +% south-south-west equality +\let\ssweql=\nneeql% + +% south-south-west equality with upper name +\let\Ssweql=\Nneeql% + +% south-south-west equality with lower name +\let\ssweqL=\nneeqL% + +% 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 distributors +\def\basicsswbidist[#1]{\SSWBIDIST{}{}{#100}}% + +% south-south-west pair of distributors +\newcommand{\sswbidist}{\@ifnextchar[{\basicsswbidist}{\basicsswbidist[67]}}% + +% basic south-south-west pair of distributors with names +\def\basicSswbidist[#1]#2#3{\SSWBIDIST{#2}{#3}{#100}}% + +% south-south-west pair of distributors with names +\newcommand{\Sswbidist}{\@ifnextchar[{\basicSswbidist}{\basicSswbidist[67]}}% +\let\sswbidisT=\Sswbidist + +% 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 + +% basic south-south-west pair of adjoint distributors +\def\basicsswadjdist[#1]{\SSWADJDIST{}{}{#100}}% + +% south-south-west pair of adjoint distributors +\newcommand{\sswadjdist}{\@ifnextchar[{\basicsswadjdist}{\basicsswadjdist[67]}}% + +% basic south-south-west pair of adjoint distributors with names +\def\basicSswadjdist[#1]#2#3{\SSWADJDIST{#2}{#3}{#100}}% + +% south-south-west pair of adjoint distributors with names +\newcommand{\Sswadjdist}{\@ifnextchar[{\basicSswadjdist}{\basicSswadjdist[67]}}% +\let\sswadjdisT=\Sswadjdist + + +% 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){\line(-1,2){#3}}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWDIST{f}{g}{n} draws a north-north-west distributor +% with names f, g and length n units +\newcommand{\NNWDIST}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\line(-1,2){#3}}% +\put(-\Z,#3){\nnwhead}% +\truex{400}% +\put(0,0){\distsign}% +\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}}% + +% \NNWDOTAR{f}{g}{n} draws a north-east dotted arrow +% with names f,g and length n units +\newcommand{\NNWDOTAR}[3]{\testdiagrammode% +\truex{100}\truey{268}\truez{134}% +\Z=#3% +\divide\Z by 2% +\NUMBEROFDOTS=#3% +\divide\NUMBEROFDOTS by \value{z}% +\advance\NUMBEROFDOTS by 1% +\begin{picture}(0,0)% +\multiput(\Z,-#3)(-\value{z},\value{y}){\NUMBEROFDOTS}% +{\circle*{\value{x}}}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWMONO{f}{g}{n} draws a north-north-west monomorphism +% with names f,g and length n units +\newcommand{\NNWMONO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}% +\put(\monolength,-\secondmonolength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWEPI{f}{g}{n} draws a north-north-west epimorphism +% with names f, g and length n units +\newcommand{\NNWEPI}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\trueheaD% +\bimolength=#3% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\Z% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\line(-1,2){\bimolength}}% +\put(-\epilength,\secondepilength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}}% + +% \NNWBIMO{f}{g}{n} draws a north-north-west bimorphism +% with names f,g and length n units +\newcommand{\NNWBIMO}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\truetaiL\trueheaD% +\bimolength=#3% +\advance\bimolength by -\truemonotaiL% +\monolength=\bimolength% +\advance\monolength by -\Z% +\advance\bimolength by -\trueepiheaD% +\epilength=\bimolength% +\advance\epilength by -\monolength% +\secondmonolength=\monolength% +\multiply\secondmonolength by 2% +\secondepilength=\epilength% +\multiply\secondepilength by 2% +\begin{picture}(0,0)% +\put(\monolength,-\secondmonolength){\line(-1,2){\bimolength}}% +\put(\monolength,-\secondmonolength){\nnwhead}% +\put(-\epilength,\secondepilength){\nnwhead}% +\put(-\Z,#3){\nnwhead}% +\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}){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\nnwhead}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\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}}% + +% \NNWBIDIST{f}{g}{n} draws a pair of north-north-west distributors +% with names f,g and length n units +\newcommand{\NNWBIDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,-#3){\begin{picture}(0,0)% +\put(-\value{x},-\value{y}){\line(-1,2){#3}}% +\put(\value{x},\value{y}){\line(-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}% +\put(-\monolength,\secondepilength){\nnwhead}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\end{picture}} +\put(-\value{x},-\value{y}){\distsign}% +\put(\value{x},\value{y}){\distsign}% +\truex{500}\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}){\line(-1,2){#3}}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\put(-\monolength,\secondepilength){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\ssehead}% +\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}}% + +% \NNWADJDIST{f}{g}{n} draws a north-north-west pair of adjoint distributors +% with names f,g and length n units +\newcommand{\NNWADJDIST}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\truex{313}\truey{156}\truez{400}% +\put(\Y,-#3){\begin{picture}(0,0)% +\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}){\line(-1,2){#3}}% +\put(-\epilength,\secondmonolength){\nnwhead}% +\put(-\monolength,\secondepilength){\line(1,-2){#3}}% +\put(\value{x},\value{y}){\ssehead}% +\end{picture}} +\put(\value{x},\value{y}){\distsign}% +\put(-\value{x},-\value{y}){\distsign}% +\truex{500}\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-west distributor +\def\basicnnwdist[#1]{\NNWDIST{}{}{#100}}% + +% north-north-west distributor +\newcommand{\nnwdist}{\@ifnextchar[{\basicnnwdist}{\basicnnwdist[67]}}% + +% basic north-north-west distributor with upper name +\def\basicNnwdist[#1]#2{\NNWDIST{#2}{}{#100}}% + +% north-north-west distributor with upper name +\newcommand{\Nnwdist}{\@ifnextchar[{\basicNnwdist}{\basicNnwdist[67]}}% + +% basic north-north-west distributor with lower name +\def\basicnnwdisT[#1]#2{\NNWDIST{}{#2}{#100}}% + +% north-north-west distributor with lower name +\newcommand{\nnwdisT}{\@ifnextchar[{\basicnnwdisT}{\basicnnwdisT[67]}}% + +% basic north-north-west dotted arrow +\def\basicnnwdotar[#1]{\NNWDOTAR{}{}{#100}}% + +% north-north-west dotted arrow +\newcommand{\nnwdotar}{\@ifnextchar[{\basicnnwdotar}{\basicnnwdotar[67]}}% + +% basic north-north-west dotted arrow with upper name +\def\basicNnwdotar[#1]#2{\NNWDOTAR{#2}{}{#100}}% + +% north-north-west dotted arrow with upper name +\newcommand{\Nnwdotar}{\@ifnextchar[{\basicNnwdotar}{\basicNnwdotar[67]}}% + +% basic north-north-west dotted arrow with lower name +\def\basicnnwdotaR[#1]#2{\NNWDOTAR{}{#2}{#100}}% + +% north-north-west dotted arrow with lower name +\newcommand{\nnwdotaR}{\@ifnextchar[{\basicnnwdotaR}{\basicnnwdotaR[67]}}% + +% basic north-north-west monomorphism +\def\basicnnwmono[#1]{\NNWMONO{}{}{#100}}% + +% north-north-west monomorphism +\newcommand{\nnwmono}{\@ifnextchar[{\basicnnwmono}{\basicnnwmono[67]}}% + +% basic north-north-west monomorphism with upper name +\def\basicNnwmono[#1]#2{\NNWMONO{#2}{}{#100}}% + +% north-north-west monomorphism with upper name +\newcommand{\Nnwmono}{\@ifnextchar[{\basicNnwmono}{\basicNnwmono[67]}}% + +% basic north-north-west monomorphism with lower name +\def\basicnnwmonO[#1]#2{\NNWMONO{}{#2}{#100}}% + +% north-north-west monomorphism with lower name +\newcommand{\nnwmonO}{\@ifnextchar[{\basicnnwmonO}{\basicnnwmonO[67]}}% + +% basic north-north-west epimorphism +\def\basicnnwepi[#1]{\NNWEPI{}{}{#100}}% + +% north-north-west epimorphism +\newcommand{\nnwepi}{\@ifnextchar[{\basicnnwepi}{\basicnnwepi[67]}}% + +% basic north-north-west epimorphism with upper name +\def\basicNnwepi[#1]#2{\NNWEPI{#2}{}{#100}}% + +% north-north-west epimorphism with upper name +\newcommand{\Nnwepi}{\@ifnextchar[{\basicNnwepi}{\basicNnwepi[67]}}% + +% basic north-north-west epimorphism with lower name +\def\basicnnwepI[#1]#2{\NNWEPI{}{#2}{#100}}% + +% north-north-west epimorphism with lower name +\newcommand{\nnwepI}{\@ifnextchar[{\basicnnwepI}{\basicnnwepI[67]}}% + +% basic north-north-west bimorphism +\def\basicnnwbimo[#1]{\NNWBIMO{}{}{#100}}% + +% north-north-west bimorphism +\newcommand{\nnwbimo}{\@ifnextchar[{\basicnnwbimo}{\basicnnwbimo[67]}}% + +% basic north-north-west bimorphism with upper name +\def\basicNnwbimo[#1]#2{\NNWBIMO{#2}{}{#100}}% + +% north-north-west bimorphism with upper name +\newcommand{\Nnwbimo}{\@ifnextchar[{\basicNnwbimo}{\basicNnwbimo[67]}}% + +% basic north-north-west bimorphism with lower name +\def\basicnnwbimO[#1]#2{\NNWBIMO{}{#2}{#100}}% + +% north-north-west bimorphism with lower name +\newcommand{\nnwbimO}{\@ifnextchar[{\basicnnwbimO}{\basicnnwbimO[67]}}% + +% basic north-north-west isomorphism +\def\basicnnwiso[#1]{\NNWAR{\isosign}{}{#100}}% + +% north-north-west isomorphism +\newcommand{\nnwiso}{\@ifnextchar[{\basicnnwiso}{\basicnnwiso[67]}}% + +% basic north-north-west isomorphism with upper name +\def\basicNnwiso[#1]#2{\NNWAR{#2}{\isosign}{#100}}% + +% north-north-west isomorphism with upper name +\newcommand{\Nnwiso}{\@ifnextchar[{\basicNnwiso}{\basicNnwiso[67]}}% + +% basic north-north-west isomorphism with lower name +\def\basicnnwisO[#1]#2{\NNWAR{\isosign}{#2}{#100}}% + +% north-north-west isomorphism with lower name +\newcommand{\nnwisO}{\@ifnextchar[{\basicnnwisO}{\basicnnwisO[67]}}% + +% north-north-west equality +\let\nnweql=\sseeql% + +% north-north-west equality with upper name +\let\Nnweql=\Sseeql% + +% north-north-west equality with lower name +\let\nnweqL=\sseeqL% + +% 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 distributors +\def\basicnnwbidist[#1]{\NNWBIDIST{}{}{#100}}% + +% north-north-east pair of distributors +\newcommand{\nnwbidist}{\@ifnextchar[{\basicnnwbidist}{\basicnnwbidist[67]}}% + +% basic north-north-east pair of distributors with names +\def\basicNnwbidist[#1]#2#3{\NNWBIDIST{#2}{#3}{#100}}% + +% north-north-east pair of distributors with names +\newcommand{\Nnwbidist}{\@ifnextchar[{\basicNnwbidist}{\basicNnwbidist[67]}}% +\let\nnwbidisT=\Nnwbidist + +% 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 + +% basic north-north-east pair of adjoint distributors +\def\basicnnwadjdist[#1]{\NNWADJDIST{}{}{#100}}% + +% north-north-east pair of adjoint distributors +\newcommand{\nnwadjdist}{\@ifnextchar[{\basicnnwadjdist}{\basicnnwadjdist[67]}}% + +% basic north-north-east pair of adjoint distributors with names +\def\basicNnwadjdist[#1]#2#3{\NNWADJDIST{#2}{#3}{#100}}% + +% north-north-east pair of adjoint distributors with names +\newcommand{\Nnwadjdist}{\@ifnextchar[{\basicNnwadjdist}{\basicNnwadjdist[67]}}% +\let\nnwadjdisT=\Nnwadjdist + + +% 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){\line(3,1){#3}}% +\put(\Y,\Z){\eenehead}% +\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){\line(3,-1){#3}}% +\put(\Y,-\Z){\eesehead}% +\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){\line(-3,1){#3}}% +\put(-\Y,\Z){\wwnwhead}% +\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){\line(-3,-1){#3}}% +\put(-\Y,-\Z){\wwswhead}% +\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){\line(1,3){#3}}% +\put(\Y,\Z){\nnnehead}% +\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){\line(-1,-3){#3}}% +\put(-\Y,-\Z){\ssswhead}% +\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){\line(1,-3){#3}}% +\put(\Y,-\Z){\sssehead}% +\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){\line(-1,3){#3}}% +\put(-\Y,\Z){\nnnwhead}% +\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){\line(3,2){#3}}% +\put(\Y,\Z){\neenehead}% +\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){\line(3,-2){#3}}% +\put(\Y,-\Z){\seesehead}% +\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){\line(-3,2){#3}}% +\put(-\Y,\Z){\nwwnwhead}% +\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){\line(-3,-2){#3}}% +\put(-\Y,-\Z){\swwswhead}% +\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){\line(2,3){#3}}% +\put(\Y,\Z){\nennehead}% +\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){\line(-2,-3){#3}}% +\put(-\Y,-\Z){\swsswhead}% +\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){\line(2,-3){#3}}% +\put(\Y,-\Z){\sessehead}% +\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){\line(-2,3){#3}}% +\put(-\Y,\Z){\nwnnwhead}% +\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 diff --git a/macros/generic/diagrams/borceux/diagram/MicroDiagram b/macros/generic/diagrams/borceux/diagram/MicroDiagram new file mode 100644 index 0000000000..3ab5c4bd85 --- /dev/null +++ b/macros/generic/diagrams/borceux/diagram/MicroDiagram @@ -0,0 +1,1917 @@ +% DIAGRAM MACROS (version 3.1) +% MICRO-DIAGRAM FILE +% JUST PLAIN ARROWS +% ARROWHEADS DESIGNED AS \vector + +\catcode`\@=11 + +%%%%% FIXING SOME PARAMETERS + +%%% Fixing the default scaling factor for diagrams +\newcount\defaultscale +\def\setdefaultscale#1{\global\defaultscale=#1} +\setdefaultscale{100} + +\newcount\actualtextarrowspace +\newcount\actualtextarrowlength + +% \computetextparameters computes the parameters +% required to design a text arrow +\newcommand{\computetextparameters}% +{\global\actualtextarrowspace=\textarrowlength% +\global\advance\actualtextarrowspace by 3% +\global\actualtextarrowlength=\textarrowlength% +\global\multiply\actualtextarrowlength by 100} + +%%% Fixing the default length of text arrows +\newcount\textarrowlength +\def\settextarrowlength#1{\global\textarrowlength=#1% +\computetextparameters} +\settextarrowlength{20} + +\newcount\actualdisplayarrowspace +\newcount\actualdisplayarrowlength + +% \computedisplayparameters computes the parameters +% required to design a displayed arrow +\newcommand{\computedisplayparameters}% +{\global\actualdisplayarrowspace=\displayarrowlength% +\global\advance\actualdisplayarrowspace by 3% +\global\actualdisplayarrowlength=\displayarrowlength% +\global\multiply\actualdisplayarrowlength by 100} + +%%% Fixing the default length of displayed arrows +\newcount\displayarrowlength +\def\setdisplayarrowlength#1{\global\displayarrowlength=#1% +\computedisplayparameters} +\setdisplayarrowlength{30} + +% ERROR MESSAGES + +% Checking the next token without gobbling blanks +\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}% +\futurelet\@tempc\@ifntok} +\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% +\@tempd} + +% \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error +% halt with error help message HLP. +\def\@diagramerror#1#2{% +\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}% +\typeout{Diagram error. \space See User's guide for explanation.^^J + \space\@spaces\@spaces\@spaces Type \space H <return> \space for + immediate help.}\errmessage{#1}} + +\newif\ifdiagram + +% error test and message for text arrows +\def\testtextmode{% +\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you +should use east or west diagram arrows, not forward or backward text arrows. +Try proceeding now, typeset could succeed but with unpredictable output.} +\else\ifmmode\relax\else% +\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode. +Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi} + +% error test and message for diagram arrows +\def\testdiagrammode{\ifdiagram\relax\else +\@diagramerror{Diagram arrows are not allowed in formulas}{Here you +should use forward or backward text arrows, not diagram arrows. Proceeding +could work with unpredictable output, but overflow arithmetic +could also occur.}\fi} + +% error test and message for diagrams in math mode +\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams +allowed in math mode.}{You should leave math mode before +introducing your diagram. All items in the diagram will automatically be +processed in math mode.}\else\relax\fi\global\diagramtrue} + +\global\diagramfalse + +% INITIALIZATION + +\newcount\SCALE% + +\newcount\NUMBER% + +\newcount\LINE% + +\newcount\COLUMN% + +\newcount\WIDTH% + +\newcount\SOURCE% + +\newcount\ARROW% + +\newcount\TARGET% + +\newcount\ARROWLENGTH% + +\newcounter{x}% + +\newcounter{y}% + +\newcounter{z}% + +\newcounter{horizontal}% + +\newcounter{vertical}% + +\newskip\itemlength% + +\newskip\firstitem% + +\newskip\seconditem% + +\newcommand{\printarrow}{}% + +\newcount\Y% + +\newcount\Z% + + +% MACROS FOR DESIGNING DIAGRAMS + + +% \truex{n} divides n x 100 by the scaling factor and puts the result +% in counter x +\newcommand{\truex}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{x}{\NUMBER}}% + +% \truey{n} divides n x 100 by the scaling factor and puts the result +% in counter y +\newcommand{\truey}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{y}{\NUMBER}}% + +% \truez{n} divides n x 100 by the scaling factor and puts the result +% in counter z +\newcommand{\truez}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{z}{\NUMBER}}% + + +% \changecounters computes the values of the various parameters required +% to design an arrow with adjusted length. +\newcommand{\changecounters}[1]{% +\SOURCE=\ARROW% +\ARROW=\TARGET% +\settowidth{\itemlength}{#1}% +\ifdim \itemlength > 2800\unitlength% +\addtolength{\itemlength}{-2800\unitlength}% +\TARGET=\itemlength% +\divide\TARGET by 1310% +\multiply\TARGET by 100% +\divide\TARGET by \SCALE% +\else% +\TARGET=0% +\fi% +\ARROWLENGTH=5000% +\advance\ARROWLENGTH by -\SOURCE% +\advance\ARROWLENGTH by -\TARGET% +\divide\ARROWLENGTH by 100% +\advance\SOURCE by -\TARGET}% + +% \initialize initializes the counters required to produce the diagram +% and defines the formal dimensions of the diagram to be (0,0). +\newcommand{\initialize}[1]{% +\LINE=0% +\COLUMN=0% +\WIDTH=0% +\ARROW=0% +\TARGET=0% +\changecounters{#1}% +\renewcommand{\printarrow}{#1}% +\begin{center}% +\vspace{2pt}% +\begin{picture}(0,0)}% + +% \DIAGV{n} starts the construction of a diagram scaled by a factor +% n percent, computes the scaled unit length and the unscaling factor. +\newcommand{\DIAGV}[2]{% +\checkmode% +\SCALE=#1% +\setlength{\unitlength}{655sp}% +\multiply\unitlength by \SCALE% +\divide\unitlength by 100% +\initialize{\mbox{$#2$}}}% + +% \n introduces the next item of the diagram, computes its parameters +% and prints the previous item. +\newcommand{\n}[1]{% +\changecounters{\mbox{$#1$}}% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\renewcommand{\printarrow}{\mbox{$#1$}}% +\advance\COLUMN by 4000}% + +% \nn prints the last item of a line and starts a new line. +\newcommand{\nn}[1]{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\advance\LINE by -4000% +\COLUMN=0% +\ARROW=0% +\TARGET=0% +\changecounters{\mbox{$#1$}}% +\renewcommand{\printarrow}{\mbox{$#1$}}}% + +% \conclude prints the last item of the diagram and sets the +% dimensions of the diagram; +\newcommand{\conclude}{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\setcounter{horizontal}{\WIDTH}% +\setcounter{vertical}{-\LINE}% +\end{picture}}% + +% \diag prints the last item of the diagram and takes care of the spacing +\newcommand{\diag}{% +\conclude% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}% +\vspace{12pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \diagv{t}{l}{b} prints the last item of the diagram and +% adds a t points extra space at the top of the diagram +% adds a l points extra space at the left of the diagram +% adds a b points extra space at the bottom of the diagram +\newcommand{\diagv}[3]{% +\conclude% +\NUMBER=#1% +\rule{0pt}{\NUMBER pt}% +\hspace*{-#2pt}% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}%6 +\NUMBER=#3% +\advance\NUMBER by 12% +\vspace*{\NUMBER pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \movename(n,m){f} moves the name f of the arrow n points right +% and m points up. +\def\movename(#1,#2)#3{% +\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% + +% \movearrow(n,m){\...} moves arrow \... n points right +% and m points up. +\def\movearrow(#1,#2)#3{% +\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% + +% \movevertex(n,m){A} moves vertex A n points right and m points up +\def\movevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% + +% \movevertexleft{XXX} moves vertex XXX left +\newcommand{\movevertexleft}[1]{\makebox[2800\unitlength][r]{$#1$}} + +% \movevertexright{XXX} moves vertex XXX right +\newcommand{\movevertexright}[1]{\makebox[2800\unitlength][l]{$#1$}} + +% \crosslength{P}{Q} computes the formal dimensions of the +% superposition of pictures P and Q +\newcommand{\crosslength}[2]{% +\settowidth{\firstitem}{#1}% +\settowidth{\seconditem}{#2}% +\ifdim\firstitem < \seconditem% +\itemlength=\seconditem% +\else% +\itemlength=\firstitem% +\fi% +\divide\itemlength by 2% +\hspace{\itemlength}}% + +% \cross{P}{Q} superposes pictures P and Q +\newcommand{\cross}[2]{% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0){$#1$}}% +\thinlines% +\put(0,0){\makebox(0,0){$#2$}}% +\thinlines% +\end{picture}% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}}% + +% \bold prints the next arrow in bold-face type +\newcommand{\bold}{\ifdiagram\thicklines\else\typeout{Sorry: command +\string\bold does not apply to text arrows; I am ignoring it.}\fi} + +% \unbold switches back to normal arrows +\newcommand{\unbold}{\thinlines} + +% SHORTENING THE TYPING OF DIAGRAMS + +\def\basicDIAG#1¤{\DIAGV{\defaultscale}{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicDIAGV[#1]#2¤{\DIAGV{#1}{#2}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicn#1¤{\n{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicnn#1¤{\nn{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\finishline#1{\@ifnextchar\end{\diag}% +{\@ifnextchar\spacing{\relax}{\basicnn}}} +\def\spacing(#1,#2,#3){\diagv{#1}{#2}{#3}} + +\newif\ifcaption% + +\newenvironment{diagram}{% +\iffloatdiag\relax\else +\global\def\diagramcaption##1{% +\global\captiontrue% +\global\def\@diagcaption{##1}}% +\global\def\@diagcaption{}\fi% +\@ifnextchar[{\basicDIAGV}{\basicDIAG}}% +{\iffloatdiag\relax\else% +\ifcaption +\begin{center}\mbox{}\@diagcaption\end{center}% +\else\relax\fi\fi\global\captionfalse} + +\global\captionfalse + + +% MACROS FOR FLOATING DIAGRAMS + +\gdef\@diaglabel{Diagram} +\gdef\diagramlabel#1{\gdef\@diaglabel{#1}} + +\newcounter{Diagram} +\setcounter{Diagram}{0} +\def\theDiagram{\@arabic\c@Diagram} +\def\fps@Diagram{tbp} +\def\ftype@Diagram{1} +\def\ext@Diagram{lof} +\def\fnum@Diagram{\@diaglabel\ \theDiagram} +\def\Diagram{\@float{Diagram}} +\let\endDiagram\end@float +\@namedef{Diagram*}{\@dblfloat{Diagram}} +\@namedef{endDiagram*}{\end@dblfloat} + +\def\setdiagramcounter#1{\@addtoreset{Diagram}{#1}% +\def\theDiagram{\arabic{#1}.\@arabic\c@Diagram}} + +\newif\iffloatdiag + +\newenvironment{floatingdiagram}{% +\global\floatdiagtrue% +\long\def\@makecaption##1##2{ + \vskip 0pt + \setbox\@tempboxa\hbox{##1##2} + \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi}% +\global\def\diagramcaption##1{\global\def\@diagcaption{: ##1}}% +\global\def\@diagcaption{}% +\begin{Diagram}[tbp]\begin{diagram}}% +{\end{diagram}\caption{\@diagcaption}\end{Diagram}% +\global\floatdiagfalse} + +\global\floatdiagfalse + +% MACROS FOR DRAWING TEXT PICTURES + +% \tlowername{P}{f} puts the name f under the picture P +\newcommand{\tlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\scriptstyle#2$}}}% +\end{picture}}$}% + +% \tcase{P} draws the picture P with length \textarrowlength pt. +\newcommand{\tcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Tcase{P}{f} draws the picture P with upper name f +% and length \textarrowlength pt. +\newcommand{\Tcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\scriptstyle #2}{#1{\actualtextarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% MACROS FOR DRAWING DISPLAYED PICTURES + +% \dlowername{P}{f} puts the name f under the picture P +\newcommand{\dlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\textstyle#2$}}}% +\end{picture}}$}% + +% \dcase{P} draws the picture P with length \displayarrowlength pt. +\newcommand{\dcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Dcase{P}{f} draws the picture P with upper name f +% and length \displayarrowlength pt. +\newcommand{\Dcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\textstyle #2}{#1{\actualdisplayarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% IN-TEXT ARROWS + +% \AR{n} draws an arrow of length n units +\newcommand{\AR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% All the following commands produce arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength pt and textstyle names in display math mode. + +% arrow +\newcommand{\ar}{\ifinner\tcase{\AR}\else\dcase{\AR}\fi}% + +% arrow with upper name [1] +\newcommand{\Ar}[1]{\ifinner\Tcase{\AR}{#1}\else\Dcase{\AR}{#1}\fi}% + +% IN-TEXT BACK ARROWS + +% \BKAR{n} draws a pointing back arrow of length n units +\newcommand{\BKAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce back arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength and textstyle names in display math mode. + +% back arrow +\newcommand{\bkar}{\ifinner\tcase{\BKAR}\else\dcase{\BKAR}\fi}% + +% back arrow with upper name [1] +\newcommand{\Bkar}[1]{\ifinner\Tcase{\BKAR}{#1}\else\Dcase{\BKAR}{#1}\fi}% + + +% MACROS FOR DRAWING HORIZONTAL PICTURES + + +% \lowername{P}{f} puts the name f under the picture P +\newcommand{\lowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\truex{600}% +\put(0,0){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}% +\end{picture}}$}% + +% \hcase{P}{n} draws the picture P with length n units +\newcommand{\hcase}[2]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{0pt}[0pt][0pt]{#1{#2}}}}% + +% \Hcase{P}{f}{n} draws the picture P with upper name f +% and length n units. +\newcommand{\Hcase}[3]% +{\testdiagrammode\makebox[0pt] +{\raisebox{0pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}{#1{#3}}$}}}% + +% \hcasE{P}{f}{n} draws the picture P with lower name f +% and length n units. +\newcommand{\hcasE}[3]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{-8pt}[0pt][0pt]% +{\lowername{#1{#3}}{#2}}}}% + +% EAST ARROWS + +% \EAR{n} draws an east arrow of length n units +\newcommand{\EAR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% All the following commands produce east arrows + +% basic east arrow +\def\basicear[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EAR}{\Z}}% + +% east arrow +\newcommand{\ear}{\@ifnextchar[{\basicear}% +{\hspace{\SOURCE\unitlength}\basicear[\ARROWLENGTH]}}% + +% basic east arrow with upper name +\def\basicEar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EAR}{#2}{\Z}}% + +% east arrow with upper name +\newcommand{\Ear}{\@ifnextchar[{\basicEar}% +{\hspace{\SOURCE\unitlength}\basicEar[\ARROWLENGTH]}}% + +% basic east arrow with lower name +\def\basiceaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EAR}{#2}{\Z}}% + +% east arrow with lower name +\newcommand{\eaR}{\@ifnextchar[{\basiceaR}% +{\hspace{\SOURCE\unitlength}\basiceaR[\ARROWLENGTH]}}% + +% WEST ARROWS + +% \WAR{n} draws a pointing back arrow of length n units +\newcommand{\WAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce west arrows + +% basic west arrow +\def\basicwar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WAR}{\Z}}% + +% west arrow +\newcommand{\war}{\@ifnextchar[{\basicwar}% +{\hspace{\SOURCE\unitlength}\basicwar[\ARROWLENGTH]}}% + +% basic west arrow with upper name +\def\basicWar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WAR}{#2}{\Z}}% + +% west arrow with upper name +\newcommand{\War}{\@ifnextchar[{\basicWar}% +{\hspace{\SOURCE\unitlength}\basicWar[\ARROWLENGTH]}}% + +% basic west arrow with lower name +\def\basicwaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WAR}{#2}{\Z}}% + +% west arrow with lower name +\newcommand{\waR}{\@ifnextchar[{\basicwaR}% +{\hspace{\SOURCE\unitlength}\basicwaR[\ARROWLENGTH]}}% + +% MACROS FOR DRAWING VERTICAL PICTURES + +% \vcase{P}{n} draws the vertical picture P with length n units. +\newcommand{\vcase}[2]{\testdiagrammode#1{#2}}% + +% \Vcase{P}{f}{n} draws the vertical picture P +% with left name f and length n units. +\newcommand{\Vcase}[3]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{${#2}\hspace{2pt}$}}}#1{#3}}% + +% \vcasE{P}{f}{n} draws the vertical picture P +% with right name f and length n units. +\newcommand{\vcasE}[3]{\testdiagrammode\makebox[0pt]% +{#1{#3}\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#2$}}}}% + +% SOUTH ARROWS + +% \SAR{n} draws a south arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\vector(0,-1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce south arrows + +% basic south arrow +\def\basicsar[#1]{\vcase{\SAR}{#100}}% + +% south arrow +\newcommand{\sar}{\@ifnextchar[{\basicsar}{\basicsar[50]}}% + +% basic south arrow with left name +\def\basicSar[#1]#2{\Vcase{\SAR}{#2}{#100}}% + +% south arrow with left name +\newcommand{\Sar}{\@ifnextchar[{\basicSar}{\basicSar[50]}}% + +% basic south arrow with right name +\def\basicsaR[#1]#2{\vcasE{\SAR}{#2}{#100}}% + +% south arrow with right name +\newcommand{\saR}{\@ifnextchar[{\basicsaR}{\basicsaR[50]}}% + +% NORTH ARROWS + +% \NAR{n} draws a north arrow of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce north arrows + +% basic north arrow +\def\basicnar[#1]{\vcase{\NAR}{#100}}% + +% north arrow +\newcommand{\nar}{\@ifnextchar[{\basicnar}{\basicnar[50]}}% + +% basic north arrow with left name +\def\basicNar[#1]#2{\Vcase{\NAR}{#2}{#100}}% + +% north arrow with left name +\newcommand{\Nar}{\@ifnextchar[{\basicNar}{\basicNar[50]}}% + +% basic north arrow with right name +\def\basicnaR[#1]#2{\vcasE{\NAR}{#2}{#100}}% + +% north arrow with right name +\newcommand{\naR}{\@ifnextchar[{\basicnaR}{\basicnaR[50]}}% + +% MACROS FOR FIRST DIAGONAL PICTURES + +% \fdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\fdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{200}\truey{600}\truez{600}% +\put(-\value{x},-\value{x}){\makebox(0,\value{z})[r]{${#2}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#3}$}}% +\end{picture}}% + +% NORTH-EAST ARROWS + +% \NEAR{n} draws a north-east arrow of length nx100 units +\newcommand{\NEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\vector(1,1){#1}}% +\end{picture}}% + +% All the following commands draw north-east arrows + +% north-east arrow of length nx100 units +\def\basicnear[#1]{\fdcase{\NEAR}{}{}{#100}}% + +% north-east arrow +\newcommand{\near}{\@ifnextchar[{\basicnear}{\basicnear[59]}}% + +% north-east arrow with upper name [1] and length nx100 units +\def\basicNear[#1]#2{\fdcase{\NEAR}{#2}{}{#100}}% + +% north-east arrow with upper name +\newcommand{\Near}{\@ifnextchar[{\basicNear}{\basicNear[59]}}% + +% north-east arrow with lower name [1] and length nx100 units +\def\basicneaR[#1]#2{\fdcase{\NEAR}{}{#2}{#100}}% + +% north-east arrow with lower name [1] +\newcommand{\neaR}{\@ifnextchar[{\basicneaR}{\basicneaR[59]}}% + +% SOUT-WEST ARROWS + +% \SWAR{n} draws a south-west arrow of length nx100 units +\newcommand{\SWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\vector(-1,-1){#1}}% +\end{picture}}% + +% All the following commands draw south-west arrows + +% south-west arrow of length nx100 units +\def\basicswar[#1]{\fdcase{\SWAR}{}{}{#100}}% + +% south-west arrow +\newcommand{\swar}{\@ifnextchar[{\basicswar}{\basicswar[59]}}% + +% south-west arrow with upper name [1] and length nx100 units +\def\basicSwar[#1]#2{\fdcase{\SWAR}{#2}{}{#100}}% + +% south-west arrow with upper name +\newcommand{\Swar}{\@ifnextchar[{\basicSwar}{\basicSwar[59]}}% + +% south-west arrow with lower name [1] and length nx100 units +\def\basicswaR[#1]#2{\fdcase{\SWAR}{}{#2}{#100}}% + +% south-west arrow with lower name [1] +\newcommand{\swaR}{\@ifnextchar[{\basicswaR}{\basicswaR[59]}}% + +% MACROS FOR SECOND DIAGONAL PICTURES + +% \sdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\sdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{100}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#2}$}}% +\truex{300}\truey{800}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#3}$}}% +\end{picture}}% + +% SOUTH-EAST ARROWS + +% \SEAR{n} draws a south-east arrow of length nx100 units +\newcommand{\SEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\vector(1,-1){#1}}% +\end{picture}}% + +% All the following commands draw south-east arrows + +% south-east arrow of length nx100 units +\def\basicsear[#1]{\sdcase{\SEAR}{}{}{#100}}% + +% south-east arrow +\newcommand{\sear}{\@ifnextchar[{\basicsear}{\basicsear[59]}}% + +% south-east arrow with upper name [1] and length nx100 units +\def\basicSear[#1]#2{\sdcase{\SEAR}{#2}{}{#100}}% + +% south-east arrow with upper name +\newcommand{\Sear}{\@ifnextchar[{\basicSear}{\basicSear[59]}}% + +% south-east arrow with lower name [1] and length nx100 units +\def\basicseaR[#1]#2{\sdcase{\SEAR}{}{#2}{#100}}% + +% south-east arrow with lower name [1] +\newcommand{\seaR}{\@ifnextchar[{\basicseaR}{\basicseaR[59]}}% + +% NORTH-WEST ARROWS + +% \NWAR{n} draws a north-west arrow of length nx100 units +\newcommand{\NWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\vector(-1,1){#1}}% +\end{picture}}% + +% All the following commands draw north-west arrows + +% north-west arrow of length nx100 units +\def\basicnwar[#1]{\sdcase{\NWAR}{}{}{#100}}% + +% north-west arrow +\newcommand{\nwar}{\@ifnextchar[{\basicnwar}{\basicnwar[59]}}% + +% north-west arrow with upper name [1] and length nx100 units +\def\basicNwar[#1]#2{\sdcase{\NWAR}{#2}{}{#100}}% + +% north-west arrow with upper name +\newcommand{\Nwar}{\@ifnextchar[{\basicNwar}{\basicNwar[59]}}% + +% north-west arrow with lower name [1] and length nx100 units +\def\basicnwaR[#1]#2{\sdcase{\NWAR}{}{#2}{#100}}% + +% north-west arrow with lower name [1] +\newcommand{\nwaR}{\@ifnextchar[{\basicnwaR}{\basicnwaR[59]}}% + +% EAST-NORTH-EAST ARROWS + +% The following commands produce east-north-east arrows +% of horizontal extent n units + +% \ENEAR{f}{g}{n} draws a east-north-east arrow with names f, g +% and length n units +\newcommand{\ENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-north-east arrows; +% the default length is 13300 units + +% basic east-north-east arrow +\def\basicenear[#1]{\ENEAR{}{}{#100}}% + +% east-north-east arrow +\newcommand{\enear}{\@ifnextchar[{\basicenear}{\basicenear[133]}}% + +% basic east-north-east arrow with upper name +\def\basicWnear[#1]#2{\ENEAR{#2}{}{#100}}% + +% east-north-east arrow with upper name +\newcommand{\Enear}{\@ifnextchar[{\basicEnear}{\basicEnear[133]}}% + +% basic east-north-east arrow with lower name +\def\basiceneaR[#1]#2{\ENEAR{}{#2}{#100}}% + +% east-north-east arrow with lower name +\newcommand{\eneaR}{\@ifnextchar[{\basiceneaR}{\basiceneaR[133]}}% + + +% EAST-SOUTH-EAST ARROWS + +% The following commands produce east-south-east arrows +% of horizontal extent n units + +% \ESEAR{f}{g}{n} draws a east-south-east arrow with names f, g +% and length n units +\newcommand{\ESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-south-east arrows; +% the default length is 13300 units + +% basic east-south-east arrow +\def\basicesear[#1]{\ESEAR{}{}{#100}}% + +% east-south-east arrow +\newcommand{\esear}{\@ifnextchar[{\basicesear}{\basicesear[133]}}% + +% basic east-south-east arrow with upper name +\def\basicEsear[#1]#2{\ESEAR{#2}{}{#100}}% + +% east-south-east arrow with upper name +\newcommand{\Esear}{\@ifnextchar[{\basicEsear}{\basicEsear[133]}}% + +% basic east-south-east arrow with lower name +\def\basiceseaR[#1]#2{\ESEAR{}{#2}{#100}}% + +% east-south-east arrow with lower name +\newcommand{\eseaR}{\@ifnextchar[{\basiceseaR}{\basiceseaR[133]}}% + +% WEST-SOUTH-WEST ARROWS + +% The following commands produce west-south-west arrows +% of horizontal extent n units + +% \WSWAR{f}{g}{n} draws a west-south-west arrow with names f, g +% and length n units +\newcommand{\WSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-south-west arrows; +% the default length is 13300 units + +% basic west-south-west arrow +\def\basicwswar[#1]{\WSWAR{}{}{#100}}% + +% west-south-west arrow +\newcommand{\wswar}{\@ifnextchar[{\basicwswar}{\basicwswar[133]}}% + +% basic west-south-west arrow with upper name +\def\basicWswar[#1]#2{\WSWAR{#2}{}{#100}}% + +% west-south-west arrow with upper name +\newcommand{\Wswar}{\@ifnextchar[{\basicWswar}{\basicWswar[133]}}% + +% basic west-south-west arrow with lower name +\def\basicwswaR[#1]#2{\WSWAR{}{#2}{#100}}% + +% west-south-west arrow with lower name +\newcommand{\wswaR}{\@ifnextchar[{\basicwswaR}{\basicwswaR[133]}}% + +% WEST-NORTH-WEST ARROWS + +% The following commands produce west-north-west arrows +% of horizontal extent n units + +% \WNWAR{f}{g}{n} draws a west-north-west arrow with names f, g +% and length n units +\newcommand{\WNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-north-west arrows; +% the default length is 13300 units + +% basic west-north-west arrow +\def\basicwnwar[#1]{\WNWAR{}{}{#100}}% + +% west-north-west arrow +\newcommand{\wnwar}{\@ifnextchar[{\basicwnwar}{\basicwnwar[133]}}% + +% basic west-north-west arrow with upper name +\def\basicWnwar[#1]#2{\WNWAR{#2}{}{#100}}% + +% west-north-west arrow with upper name +\newcommand{\Wnwar}{\@ifnextchar[{\basicWnwar}{\basicWnwar[133]}}% + +% basic west-north-west arrow with lower name +\def\basicwnwaR[#1]#2{\WNWAR{}{#2}{#100}}% + +% west-north-west arrow with lower name +\newcommand{\wnwaR}{\@ifnextchar[{\basicwnwaR}{\basicwnwaR[133]}}% + +% NORTH-NORTH-EAST ARROWS + +% The following commands produce north-north-east arrows +% of horizontal extent n units + +% \NNEAR{f}{g}{n} draws a north-north-east arrow with names f, g +% and length n units +\newcommand{\NNEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\vector(1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-east arrows; +% the default length is 6700 units + +% basic north-north-east arrow +\def\basicnnear[#1]{\NNEAR{}{}{#100}}% + +% north-north-east arrow +\newcommand{\nnear}{\@ifnextchar[{\basicnnear}{\basicnnear[67]}}% + +% basic north-north-east arrow with upper name +\def\basicNnear[#1]#2{\NNEAR{#2}{}{#100}}% + +% north-north-east arrow with upper name +\newcommand{\Nnear}{\@ifnextchar[{\basicNnear}{\basicNnear[67]}}% + +% basic north-north-east arrow with lower name +\def\basicnneaR[#1]#2{\NNEAR{}{#2}{#100}}% + +% north-north-east arrow with lower name +\newcommand{\nneaR}{\@ifnextchar[{\basicnneaR}{\basicnneaR[67]}}% + + +% SOUTH-SOUTH-EAST ARROWS + +% The following commands produce south-south-east arrows +% of horizontal extent n units + +% \SSEAR{f}{g}{n} draws a south-south-east arrow with names f, g +% and length n units +\newcommand{\SSEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\vector(1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-east arrows; +% the default length is 6700 units + +% basic south-south-east arrow +\def\basicssear[#1]{\SSEAR{}{}{#100}}% + +% south-south-east arrow +\newcommand{\ssear}{\@ifnextchar[{\basicssear}{\basicssear[67]}}% + +% basic south-south-east arrow with upper name +\def\basicSsear[#1]#2{\SSEAR{#2}{}{#100}}% + +% south-south-east arrow with upper name +\newcommand{\Ssear}{\@ifnextchar[{\basicSsear}{\basicSsear[67]}}% + +% basic south-south-east arrow with lower name +\def\basicsseaR[#1]#2{\SSEAR{}{#2}{#100}}% + +% south-south-east arrow with lower name +\newcommand{\sseaR}{\@ifnextchar[{\basicsseaR}{\basicsseaR[67]}}% + +% SOUTH-SOUTH-WEST ARROWS + +% The following commands produce south-south-west arrows +% of horizontal extent n units + +% \SSWAR{f}{g}{n} draws a south-south-west arrow with names f, g +% and length n units +\newcommand{\SSWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\vector(-1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-west arrows; +% the default length is 6700 units + +% basic south-south-west arrow +\def\basicsswar[#1]{\SSWAR{}{}{#100}}% + +% south-south-west arrow +\newcommand{\sswar}{\@ifnextchar[{\basicsswar}{\basicsswar[67]}}% + +% basic south-south-west arrow with upper name +\def\basicSswar[#1]#2{\SSWAR{#2}{}{#100}}% + +% south-south-west arrow with upper name +\newcommand{\Sswar}{\@ifnextchar[{\basicSswar}{\basicSswar[67]}}% + +% basic south-south-west arrow with lower name +\def\basicsswaR[#1]#2{\SSWAR{}{#2}{#100}}% + +% south-south-west arrow with lower name +\newcommand{\sswaR}{\@ifnextchar[{\basicsswaR}{\basicsswaR[67]}}% + +% NORTH-NORTH-WEST ARROWS + +% The following commands produce north-north-west arrows +% of horizontal extent n units + +% \NNWAR{f}{g}{n} draws a north-north-west arrow with names f, g +% and length n units +\newcommand{\NNWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\vector(-1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-west arrows; +% the default length is 6700 units + +% basic north-north-west arrow +\def\basicnnwar[#1]{\NNWAR{}{}{#100}}% + +% north-north-west arrow +\newcommand{\nnwar}{\@ifnextchar[{\basicnnwar}{\basicnnwar[67]}}% + +% basic north-north-west arrow with upper name +\def\basicNnwar[#1]#2{\NNWAR{#2}{}{#100}}% + +% north-north-west arrow with upper name +\newcommand{\Nnwar}{\@ifnextchar[{\basicNnwar}{\basicNnwar[67]}}% + +% basic north-north-west arrow with lower name +\def\basicnnwaR[#1]#2{\NNWAR{}{#2}{#100}}% + +% north-north-west arrow with lower name +\newcommand{\nnwaR}{\@ifnextchar[{\basicnnwaR}{\basicnnwaR[67]}}% + +% EAST-EAST-NORTH-EAST ARROWS +% default length: 21100 units + +% \EENEAR{f}{g}{n} draws a east-east-north-east arrow with names f, g +% and length n units +\newcommand{\EENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic east-east-north-east arrow +\def\basiceenear[#1]{\EENEAR{}{}{#100}}% + +% east-east-north-east arrow +\newcommand{\eenear}{\@ifnextchar[{\basiceenear}{\basiceenear[211]}}% + +% basic east-east-north-east arrow with upper name +\def\basicEenear[#1]#2{\EENEAR{#2}{}{#100}}% + +% east-east-north-east arrow with upper name +\newcommand{\Eenear}{\@ifnextchar[{\basicEenear}{\basicEenear[211]}}% + +% basic east-east-north-east arrow with lower name +\def\basiceeneaR[#1]#2{\EENEAR{}{#2}{#100}}% + +% east-east-north-east arrow with lower name +\newcommand{\eeneaR}{\@ifnextchar[{\basiceeneaR}{\basiceeneaR[211]}}% + +% EAST-EAST-SOUTH-EAST ARROWS +% default length: 21100 units + +% \EESEAR{f}{g}{n} draws an east-east-south-east arrow with names f, g +% and length n units +\newcommand{\EESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic east-east-south-east arrow +\def\basiceesear[#1]{\EESEAR{}{}{#100}}% + +% east-east-south-east arrow +\newcommand{\eesear}{\@ifnextchar[{\basiceesear}{\basiceesear[211]}}% + +% basic east-east-south-east arrow with upper name +\def\basicEesear[#1]#2{\EESEAR{#2}{}{#100}}% + +% east-east-south-east arrow with upper name +\newcommand{\Eesear}{\@ifnextchar[{\basicEesear}{\basicEesear[211]}}% + +% basic east-east-south-east arrow with lower name +\def\basiceeseaR[#1]#2{\EESEAR{}{#2}{#100}}% + +% east-east-south-east arrow with lower name +\newcommand{\eeseaR}{\@ifnextchar[{\basiceeseaR}{\basiceeseaR[211]}}% + +% WEST-WEST-NORTH-WEST ARROWS +% default length: 21100 units + +% \WWNWAR{f}{g}{n} draws a west-west-north-west arrow with names f, g +% and length n units +\newcommand{\WWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic west-west-north-west arrow +\def\basicwwnwar[#1]{\WWNWAR{}{}{#100}}% + +% west-west-north-west arrow +\newcommand{\wwnwar}{\@ifnextchar[{\basicwwnwar}{\basicwwnwar[211]}}% + +% basic west-west-north-west arrow with upper name +\def\basicWwnwar[#1]#2{\WWNWAR{#2}{}{#100}}% + +% west-west-north-west arrow with upper name +\newcommand{\Wwnwar}{\@ifnextchar[{\basicWwnwar}{\basicWwnwar[211]}}% + +% basic west-west-north-west arrow with lower name +\def\basicwwnwaR[#1]#2{\WWNWAR{}{#2}{#100}}% + +% west-west-north-west arrow with lower name +\newcommand{\wwnwaR}{\@ifnextchar[{\basicwwnwaR}{\basicwwnwaR[211]}}% + +% WEST-WEST-SOUTH-WEST ARROWS +% default length: 21100 units + +% \WWSWAR{f}{g} draws a west-west-south-west arrow with names f, g +\newcommand{\WWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic west-west-south-west arrow +\def\basicwwswar[#1]{\WWSWAR{}{}{#100}}% + +% west-west-south-west arrow +\newcommand{\wwswar}{\@ifnextchar[{\basicwwswar}{\basicwwswar[211]}}% + +% basic west-west-south-west arrow with upper name +\def\basicWwswar[#1]#2{\WWSWAR{#2}{}{#100}}% + +% west-west-south-west arrow with upper name +\newcommand{\Wwswar}{\@ifnextchar[{\basicWwswar}{\basicWwswar[211]}}% + +% basic west-west-south-west arrow with lower name +\def\basicwwswaR[#1]#2{\WWSWAR{}{#2}{#100}}% + +% west-west-south-west arrow with lower name +\newcommand{\wwswaR}{\@ifnextchar[{\basicwwswaR}{\basicwwswaR[211]}}% + + +% NORTH-NORTH-NORTH-EAST ARROWS +% default length: 7100 units + +% \NNNEAR{f}{g}{n} draws a north-north-north-east arrow with names f, g +% and length n units +\newcommand{\NNNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(1,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-east arrow +\def\basicnnnear[#1]{\NNNEAR{}{}{#100}}% + +% north-north-north-east arrow +\newcommand{\nnnear}{\@ifnextchar[{\basicnnnear}{\basicnnnear[71]}}% + +% basic north-north-north-east arrow with upper name +\def\basicNnnear[#1]#2{\NNNEAR{#2}{}{#100}}% + +% north-north-north-east arrow with upper name +\newcommand{\Nnnear}{\@ifnextchar[{\basicNnnear}{\basicNnnear[71]}}% + +% basic north-north-north-east arrow with lower name +\def\basicnnneaR[#1]#2{\NNNEAR{}{#2}{#100}}% + +% north-north-north-east arrow with lower name +\newcommand{\nnneaR}{\@ifnextchar[{\basicnnneaR}{\basicnnneaR[71]}}% + +% SOUTH-SOUTH-SOUTH-WEST ARROWS +% default length: 7100 units + +% \SSSWAR{f}{g}{n} draws a south-south-south-west arrow with names f, g +% and length n units +\newcommand{\SSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-1,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-west arrow +\def\basicssswar[#1]{\SSSWAR{}{}{#100}}% + +% south-south-south-west arrow +\newcommand{\ssswar}{\@ifnextchar[{\basicssswar}{\basicssswar[71]}}% + +% basic south-south-south-west arrow with upper name +\def\basicSsswar[#1]#2{\SSSWAR{#2}{}{#100}}% + +% south-south-south-west arrow with upper name +\newcommand{\Ssswar}{\@ifnextchar[{\basicSsswar}{\basicSsswar[71]}}% + +% basic south-south-south-west arrow with lower name +\def\basicssswaR[#1]#2{\SSSWAR{}{#2}{#100}}% + +% south-south-south-west arrow with lower name +\newcommand{\ssswaR}{\@ifnextchar[{\basicssswaR}{\basicssswaR[71]}}% + +% SOUTH-SOUTH-SOUTH-EAST ARROWS +% default length: 7100 units + +% \SSSEAR{f}{g}{n} draws a south-south-south-east arrow with names f, g +% and length n units +\newcommand{\SSSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(1,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-east arrow +\def\basicsssear[#1]{\SSSEAR{}{}{#100}}% + +% south-south-south-east arrow +\newcommand{\sssear}{\@ifnextchar[{\basicsssear}{\basicsssear[71]}}% + +% basic south-south-south-east arrow with upper name +\def\basicSssear[#1]#2{\SSSEAR{#2}{}{#100}}% + +% south-south-south-east arrow with upper name +\newcommand{\Sssear}{\@ifnextchar[{\basicSssear}{\basicSssear[71]}}% + +% basic south-south-south-east arrow with lower name +\def\basicssseaR[#1]#2{\SSSEAR{}{#2}{#100}}% + +% south-south-south-east arrow with lower name +\newcommand{\ssseaR}{\@ifnextchar[{\basicssseaR}{\basicssseaR[71]}}% + +% NORTH-NORTH-NORTH-WEST ARROWS +% default length: 7100 units + +% \NNNWAR{f}{g}{n} draws a north-north-north-west arrow with names f, g +% and length n units +\newcommand{\NNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-1,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-west arrow +\def\basicnnnwar[#1]{\NNNWAR{}{}{#100}}% + +% north-north-north-west arrow +\newcommand{\nnnwar}{\@ifnextchar[{\basicnnnwar}{\basicnnnwar[71]}}% + +% basic north-north-north-west arrow with upper name +\def\basicNnnwar[#1]#2{\NNNWAR{#2}{}{#100}}% + +% north-north-north-west arrow with upper name +\newcommand{\Nnnwar}{\@ifnextchar[{\basicNnnwar}{\basicNnnwar[71]}}% + +% basic north-north-north-west arrow with lower name +\def\basicnnnwaR[#1]#2{\NNNWAR{}{#2}{#100}}% + +% north-north-north-west arrow with lower name +\newcommand{\nnnwaR}{\@ifnextchar[{\basicnnnwaR}{\basicnnnwaR[71]}}% + +% NORTH-EAST-EAST-NORTH-EAST ARROWS +% default length: 21500 units + +% \NEENEAR{f}{g}{n} draws a north-east-east-north-east arrow with names f, g +% and length n units +\newcommand{\NEENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-east-north-east arrow +\def\basicneenear[#1]{\NEENEAR{}{}{#100}}% + +% north-east-east-north-east arrow +\newcommand{\neenear}{\@ifnextchar[{\basicneenear}{\basicneenear[215]}}% + +% basic north-east-east-north-east arrow with upper name +\def\basicNeenear[#1]#2{\NEENEAR{#2}{}{#100}}% + +% north-east-east-north-east arrow with upper name +\newcommand{\Neenear}{\@ifnextchar[{\basicNeenear}{\basicNeenear[215]}}% + +% basic north-east-east-north-east arrow with lower name +\def\basicneeneaR[#1]#2{\NEENEAR{}{#2}{#100}}% + +% north-east-east-north-east arrow with lower name +\newcommand{\neeneaR}{\@ifnextchar[{\basicneeneaR}{\basicneeneaR[215]}}% + +% SOUTH-EAST-EAST-SOUTH-EAST ARROWS +% DEFAULT LENGTH: 21500 UNITS + +% \SEESEAR{f}{g} draws an sout-east-east-south-east arrow with names f, g +% and length n units +\newcommand{\SEESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-east-south-east arrow +\def\basicseesear[#1]{\SEESEAR{}{}{#100}}% + +% south-east-east-south-east arrow +\newcommand{\seesear}{\@ifnextchar[{\basicseesear}{\basicseesear[215]}}% + +% basic south-east-east-south-east arrow with upper name +\def\basicSeesear[#1]#2{\SEESEAR{#2}{}{#100}}% + +% south-east-east-south-east arrow with upper name +\newcommand{\Seesear}{\@ifnextchar[{\basicSeesear}{\basicSeesear[215]}}% + +% basic south-east-east-south-east arrow with lower name +\def\basicseeseaR[#1]#2{\SEESEAR{}{#2}{#100}}% + +% south-east-east-south-east arrow with lower name +\newcommand{\seeseaR}{\@ifnextchar[{\basicseeseaR}{\basicseeseaR[215]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 21500 units + +% \NWWNWAR{f}{g}{n} draws a north-west-west-north-west arrow with names f, g +% and length n units +\newcommand{\NWWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-west-north-west arrow +\def\basicnwwnwar[#1]{\NWWNWAR{}{}{#100}}% + +% north-west-west-north-west arrow +\newcommand{\nwwnwar}{\@ifnextchar[{\basicnwwnwar}{\basicnwwnwar[215]}}% + +% basic north-west-west-north-west arrow with upper name +\def\basicNwwnwar[#1]#2{\NWWNWAR{#2}{}{#100}}% + +% north-west-west-north-west arrow with upper name +\newcommand{\Nwwnwar}{\@ifnextchar[{\basicNwwnwar}{\basicNwwnwar[215]}}% + +% basic north-west-west-north-west arrow with lower name +\def\basicnwwnwaR[#1]#2{\NWWNWAR{}{#2}{#100}}% + +% north-west-west-north-west arrow with lower name +\newcommand{\nwwnwaR}{\@ifnextchar[{\basicnwwnwaR}{\basicnwwnwaR[215]}}% + +% SOUTH-WEST-WEST-SOUTH-WEST ARROWS +% default length: 21500 units + +% \SWWSWAR{f}{g}{n} draws a south-west-west-south-west arrow with names f, g +% and length n units +\newcommand{\SWWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-west-south-west arrow +\def\basicswwswar[#1]{\SWWSWAR{}{}{#100}}% + +% south-west-west-south-west arrow +\newcommand{\swwswar}{\@ifnextchar[{\basicswwswar}{\basicswwswar[215]}}% + +% basic south-west-west-south-west arrow with upper name +\def\basicSwwswar[#1]#2{\SWWSWAR{#2}{}{#100}}% + +% south-west-west-south-west arrow with upper name +\newcommand{\Swwswar}{\@ifnextchar[{\basicSwwswar}{\basicSwwswar[215]}}% + +% basic south-west-west-south-west arrow with lower name +\def\basicswwswaR[#1]#2{\SWWSWAR{}{#2}{#100}}% + +% south-west-west-south-west arrow with lower name +\newcommand{\swwswaR}{\@ifnextchar[{\basicswwswaR}{\basicswwswaR[215]}}% + + +% NORTH-EAST-NORTH-NORTH-EAST ARROWS +% default length 14300 units + +% \NENNEAR{f}{g}{n} draws a north-east-north-north-east arrow with names f, g +% and length n units +\newcommand{\NENNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-north-north-east arrow +\def\basicnennear[#1]{\NENNEAR{}{}{#100}}% + +% north-east-north-north-east arrow +\newcommand{\nennear}{\@ifnextchar[{\basicnennear}{\basicnennear[143]}}% + +% basic north-east-north-north-east arrow with upper name +\def\basicNennear[#1]#2{\NENNEAR{#2}{}{#100}}% + +% north-east-north-north-east arrow with upper name +\newcommand{\Nennear}{\@ifnextchar[{\basicNennear}{\basicNennear[143]}}% + +% basic north-east-north-north-east arrow with lower name +\def\basicnenneaR[#1]#2{\NENNEAR{}{#2}{#100}}% + +% north-east-north-north-east arrow with lower name +\newcommand{\nenneaR}{\@ifnextchar[{\basicnenneaR}{\basicnenneaR[143]}}% + +% SOUTH-WEST-SOUTH-SOUTH-WEST ARROWS +% default length: 14300 units + +% \SWSSWAR{f}{g}{n} draws a south-west-south-south-west arrow with names f, g +% and length n units +\newcommand{\SWSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-south-south-west arrow +\def\basicswsswar[#1]{\SWSSWAR{}{}{#100}}% + +% south-west-south-south-west arrow +\newcommand{\swsswar}{\@ifnextchar[{\basicswsswar}{\basicswsswar[143]}}% + +% basic south-west-south-south-west arrow with upper name +\def\basicSwsswar[#1]#2{\SWSSWAR{#2}{}{#100}}% + +% south-west-south-south-west arrow with upper name +\newcommand{\Swsswar}{\@ifnextchar[{\basicSwsswar}{\basicSwsswar[143]}}% + +% basic south-west-south-south-west arrow with lower name +\def\basicswsswaR[#1]#2{\SWSSWAR{}{#2}{#100}}% + +% south-west-south-south-west arrow with lower name +\newcommand{\swsswaR}{\@ifnextchar[{\basicswsswaR}{\basicswsswaR[143]}}% + +% SOUT-EAST-SOUTH-SOUTH-EAST ARROWS +% default length: 14300 units + +% \SESSEAR{f}{g}{n} draws a south-east-south-south-east arrow with names f, g +% and length n units +\newcommand{\SESSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-south-south-east arrow +\def\basicsessear[#1]{\SESSEAR{}{}{#100}}% + +% south-east-south-south-east arrow +\newcommand{\sessear}{\@ifnextchar[{\basicsessear}{\basicsessear[143]}}% + +% basic south-east-south-south-east arrow with upper name +\def\basicSessear[#1]#2{\SESSEAR{#2}{}{#100}}% + +% south-east-south-south-east arrow with upper name +\newcommand{\Sessear}{\@ifnextchar[{\basicSessear}{\basicSessear[143]}}% + +% basic south-east-south-south-east arrow with lower name +\def\basicsesseaR[#1]#2{\SESSEAR{}{#2}{#100}}% + +% south-east-south-south-east arrow with lower name +\newcommand{\sesseaR}{\@ifnextchar[{\basicsesseaR}{\basicsesseaR[143]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 14300 units + +% \NWNNWAR{f}{g}{n} draws a north-west-north-north-west arrow with names f, g +% and length n units +\newcommand{\NWNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-north-north-west arrow +\def\basicnwnnwar[#1]{\NWNNWAR{}{}{#100}}% + +% north-west-north-north-west arrow +\newcommand{\nwnnwar}{\@ifnextchar[{\basicnwnnwar}{\basicnwnnwar[143]}}% + +% basic north-west-north-north-west arrow with upper name +\def\basicNwnnwar[#1]#2{\NWNNWAR{#2}{}{#100}}% + +% north-west-north-north-west arrow with upper name +\newcommand{\Nwnnwar}{\@ifnextchar[{\basicNwnnwar}{\basicNwnnwar[143]}}% + +% basic north-west-north-north-west arrow with lower name +\def\basicnwnnwaR[#1]#2{\NWNNWAR{}{#2}{#100}}% + +% north-west-north-north-west arrow with lower name +\newcommand{\nwnnwaR}{\@ifnextchar[{\basicnwnnwaR}{\basicnwnnwaR[143]}}% + +% HORIZONTAL CURVED ARROWS + +% The following commands produce horizontal curved arrows +% default length: 160 units + +% North\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Necurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(#200,-\value{z}){\shead}% +\put(0,0){\line(0,-1){\value{z}}}\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\east curved arrow +\def\basicnecurvar[#1]{\Necurve{}{#1}} + +% north\east curved arrow +\newcommand{\necurvar}{\@ifnextchar[{\basicnecurvar}{\basicnecurvar[160]}}% + +% basic north\east curved arrow with name +\def\basicNecurvar[#1]#2{\Necurve{#2}{#1}}% + +% north\east curved arrow with name +\newcommand{\Necurvar}{\@ifnextchar[{\basicNecurvar}{\basicNecurvar[160]}}% +\let\necurvaR=\Necurvar + +% North\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Nwcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(0,0){\line(0,-1){\value{z}}}% +\put(0,-\value{z}){\shead}% +\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\west curved arrow +\def\basicnwcurvar[#1]{\Nwcurve{}{#1}} + +% north\west curved arrow +\newcommand{\nwcurvar}{\@ifnextchar[{\basicnwcurvar}{\basicnwcurvar[160]}}% + +% basic north\west curved arrow with name +\def\basicNwcurvar[#1]#2{\Nwcurve{#2}{#1}}% + +% north\west curved arrow with name +\newcommand{\Nwcurvar}{\@ifnextchar[{\basicNwcurvar}{\basicNwcurvar[160]}}% +\let\nwcurvaR=\Nwcurvar + +% South\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Securve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(#200,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\east curved arrow +\def\basicsecurvar[#1]{\Securve{}{#1}} + +% south\east curved arrow +\newcommand{\securvar}{\@ifnextchar[{\basicsecurvar}{\basicsecurvar[160]}}% + +% basic south\east curved arrow with name +\def\basicSecurvar[#1]#2{\Securve{#2}{#1}}% + +% south\east curved arrow with name +\newcommand{\Securvar}{\@ifnextchar[{\basicSecurvar}{\basicSecurvar[160]}}% +\let\securvaR=\Securvar + +% South\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Swcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(0,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\west curved arrow +\def\basicswcurvar[#1]{\Swcurve{}{#1}} + +% south\west curved arrow +\newcommand{\swcurvar}{\@ifnextchar[{\basicswcurvar}{\basicswcurvar[160]}}% + +% basic south\west curved arrow with name +\def\basicSwcurvar[#1]#2{\Swcurve{#2}{#1}}% + +% south\west curved arrow with name +\newcommand{\Swcurvar}{\@ifnextchar[{\basicSwcurvar}{\basicSwcurvar[160]}}% +\let\swcurvaR=\Swcurvar + +% VERTICAL CURVED ARROWS + +% The following commands produce vertical curved arrows +% default length: 160pt + +% East\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Escurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},0){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\south curved arrow +\def\basicescurvar[#1]{\Escurve{}{#1}} + +% east\south curved arrow +\newcommand{\escurvar}{\@ifnextchar[{\basicescurvar}{\basicescurvar[160]}}% + +% basic east\south curved arrow with name +\def\basicEscurvar[#1]#2{\Escurve{#2}{#1}}% + +% east\south curved arrow with name +\newcommand{\Escurvar}{\@ifnextchar[{\basicEscurvar}{\basicEscurvar[160]}}% +\let\escurvaR=\Escurvar + +% East\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Encurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},#200){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\north curved arrow +\def\basicencurvar[#1]{\Encurve{}{#1}} + +% east\north curved arrow +\newcommand{\encurvar}{\@ifnextchar[{\basicencurvar}{\basicencurvar[160]}}% + +% basic east\north curved arrow with name +\def\basicEncurvar[#1]#2{\Encurve{#2}{#1}}% + +% east\north curved arrow with name +\newcommand{\Encurvar}{\@ifnextchar[{\basicEncurvar}{\basicEncurvar[160]}}% +\let\encurvaR=\Encurvar + +% West\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Wscurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(0,#200){\line(1,0){\value{z}}}% +\put(\value{z},0){\ehead}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\south curved arrow +\def\basicwscurvar[#1]{\Wscurve{}{#1}} + +% west\south curved arrow +\newcommand{\wscurvar}{\@ifnextchar[{\basicwscurvar}{\basicwscurvar[160]}}% + +% basic west\south curved arrow with name +\def\basicWscurvar[#1]#2{\Wscurve{#2}{#1}}% + +% west\south curved arrow with name +\newcommand{\Wscurvar}{\@ifnextchar[{\basicWscurvar}{\basicWscurvar[160]}}% +\let\wscurvaR=\Wscurvar + +% West\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Wncurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(\value{z},#200){\ehead}% +\put(0,#200){\line(1,0){\value{z}}}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\north curved arrow +\def\basicwncurvar[#1]{\Wncurve{}{#1}} + +% west\north curved arrow +\newcommand{\wncurvar}{\@ifnextchar[{\basicwncurvar}{\basicwncurvar[160]}}% + +% basic west\north curved arrow with name +\def\basicWncurvar[#1]#2{\Wncurve{#2}{#1}}% + +% west\north curved arrow with name +\newcommand{\Wncurvar}{\@ifnextchar[{\basicWncurvar}{\basicWncurvar[160]}}% +\let\wncurvaR=\Wncurvar + +\catcode`\@=12 diff --git a/macros/generic/diagrams/borceux/diagram/MiniDiagram b/macros/generic/diagrams/borceux/diagram/MiniDiagram new file mode 100644 index 0000000000..39c08f673b --- /dev/null +++ b/macros/generic/diagrams/borceux/diagram/MiniDiagram @@ -0,0 +1,3164 @@ +% DIAGRAM MACROS (version 3.1) +% MINI-DIAGRAM FILE +% PLAIN ARROWS, PAIRS OF PLAIN ARROWS, ADJOINT PAIRS OF PLAIN ARROWS +% ARROWHEADS DESIGNED AS \vector + +\catcode`\@=11 + +%%%%% FIXING SOME PARAMETERS + +%%% Fixing the default scaling factor for diagrams +\newcount\defaultscale +\def\setdefaultscale#1{\global\defaultscale=#1} +\setdefaultscale{100} + +\newcount\actualtextarrowspace +\newcount\actualtextarrowlength + +% \computetextparameters computes the parameters +% required to design a text arrow +\newcommand{\computetextparameters}% +{\global\actualtextarrowspace=\textarrowlength% +\global\advance\actualtextarrowspace by 3% +\global\actualtextarrowlength=\textarrowlength% +\global\multiply\actualtextarrowlength by 100} + +%%% Fixing the default length of text arrows +\newcount\textarrowlength +\def\settextarrowlength#1{\global\textarrowlength=#1% +\computetextparameters} +\settextarrowlength{20} + +\newcount\actualdisplayarrowspace +\newcount\actualdisplayarrowlength + +% \computedisplayparameters computes the parameters +% required to design a displayed arrow +\newcommand{\computedisplayparameters}% +{\global\actualdisplayarrowspace=\displayarrowlength% +\global\advance\actualdisplayarrowspace by 3% +\global\actualdisplayarrowlength=\displayarrowlength% +\global\multiply\actualdisplayarrowlength by 100} + +%%% Fixing the default length of displayed arrows +\newcount\displayarrowlength +\def\setdisplayarrowlength#1{\global\displayarrowlength=#1% +\computedisplayparameters} +\setdisplayarrowlength{30} + + +% ERROR MESSAGES + +% Checking the next token without gobbling blanks +\def\@ifnexttok#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}% +\futurelet\@tempc\@ifntok} +\def\@ifntok{\ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% +\@tempd} + +% \@diagramerror{MSG}{HLP}: Types a Diagram error message MSG and gives an error +% halt with error help message HLP. +\def\@diagramerror#1#2{% +\edef\@@tempc{#2}\expandafter\errhelp\expandafter{\@@tempc}% +\typeout{Diagram error. \space See User's guide for explanation.^^J + \space\@spaces\@spaces\@spaces Type \space H <return> \space for + immediate help.}\errmessage{#1}} + +\newif\ifdiagram + +% error test and message for text arrows +\def\testtextmode{% +\ifdiagram\@diagramerror{Text arrows are not allowed in diagrams}{Here you +should use east or west diagram arrows, not forward or backward text arrows. +Try proceeding now, typeset could succeed but with unpredictable output.} +\else\ifmmode\relax\else% +\@diagramerror{Missing \string$}{Text arrows should be introduced in math mode. +Try proceeding now, typeset could succeed but output could not be what you expected.}\fi\fi} + +% error test and message for diagram arrows +\def\testdiagrammode{\ifdiagram\relax\else +\@diagramerror{Diagram arrows are not allowed in formulas}{Here you +should use forward or backward text arrows, not diagram arrows. Proceeding +could work with unpredictable output, but overflow arithmetic +could also occur.}\fi} + +% error test and message for diagrams in math mode +\def\checkmode{\ifmmode\@diagramerror{Wrong mode: no diagrams +allowed in math mode.}{You should leave math mode before +introducing your diagram. All items in the diagram will automatically be +processed in math mode.}\else\relax\fi\global\diagramtrue} + +\global\diagramfalse + +% INITIALIZATION + +\newcount\SCALE% + +\newcount\NUMBER% + +\newcount\LINE% + +\newcount\COLUMN% + +\newcount\WIDTH% + +\newcount\SOURCE% + +\newcount\ARROW% + +\newcount\TARGET% + +\newcount\ARROWLENGTH% + +\newcount\NUMBEROFDOTS% + +\newcounter{x}% + +\newcounter{y}% + +\newcounter{z}% + +\newcounter{horizontal}% + +\newcounter{vertical}% + +\newskip\itemlength% + +\newskip\firstitem% + +\newskip\seconditem% + +\newcommand{\printarrow}{}% + +\newcount\X% + +\newcount\Y% + +\newcount\Z% + + +% MACROS FOR DESIGNING DIAGRAMS + + +% \truex{n} divides n x 100 by the scaling factor and puts the result +% in counter x +\newcommand{\truex}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{x}{\NUMBER}}% + +% \truey{n} divides n x 100 by the scaling factor and puts the result +% in counter y +\newcommand{\truey}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{y}{\NUMBER}}% + +% \truez{n} divides n x 100 by the scaling factor and puts the result +% in counter z +\newcommand{\truez}[1]{% +\NUMBER=#1% +\multiply\NUMBER by 100% +\divide\NUMBER by \SCALE% +\setcounter{z}{\NUMBER}}% + + +% \changecounters computes the values of the various parameters required +% to design an arrow with adjusted length. +\newcommand{\changecounters}[1]{% +\SOURCE=\ARROW% +\ARROW=\TARGET% +\settowidth{\itemlength}{#1}% +\ifdim \itemlength > 2800\unitlength% +\addtolength{\itemlength}{-2800\unitlength}% +\TARGET=\itemlength% +\divide\TARGET by 1310% +\multiply\TARGET by 100% +\divide\TARGET by \SCALE% +\else% +\TARGET=0% +\fi% +\ARROWLENGTH=5000% +\advance\ARROWLENGTH by -\SOURCE% +\advance\ARROWLENGTH by -\TARGET% +\divide\ARROWLENGTH by 100% +\advance\SOURCE by -\TARGET}% + +% \initialize initializes the counters required to produce the diagram +% and defines the formal dimensions of the diagram to be (0,0). +\newcommand{\initialize}[1]{% +\LINE=0% +\COLUMN=0% +\WIDTH=0% +\ARROW=0% +\TARGET=0% +\changecounters{#1}% +\renewcommand{\printarrow}{#1}% +\begin{center}% +\vspace{2pt}% +\begin{picture}(0,0)}% + +% \DIAGV{n} starts the construction of a diagram scaled by a factor +% n percent, computes the scaled unit length and the unscaling factor. +\newcommand{\DIAGV}[2]{% +\checkmode% +\SCALE=#1% +\setlength{\unitlength}{655sp}% +\multiply\unitlength by \SCALE% +\divide\unitlength by 100% +\initialize{\mbox{$#2$}}}% + +% \n introduces the next item of the diagram, computes its parameters +% and prints the previous item. +\newcommand{\n}[1]{% +\changecounters{\mbox{$#1$}}% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\renewcommand{\printarrow}{\mbox{$#1$}}% +\advance\COLUMN by 4000}% + +% \nn prints the last item of a line and starts a new line. +\newcommand{\nn}[1]{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\advance\LINE by -4000% +\COLUMN=0% +\ARROW=0% +\TARGET=0% +\changecounters{\mbox{$#1$}}% +\renewcommand{\printarrow}{\mbox{$#1$}}}% + +% \conclude prints the last item of the diagram and sets the +% dimensions of the diagram; +\newcommand{\conclude}{% +\put(\COLUMN,\LINE){\makebox(0,0){\printarrow}}% +\thinlines% +\ifnum \WIDTH < \COLUMN% +\WIDTH=\COLUMN% +\else% +\fi% +\setcounter{horizontal}{\WIDTH}% +\setcounter{vertical}{-\LINE}% +\end{picture}}% + +% \diag prints the last item of the diagram and takes care of the spacing +\newcommand{\diag}{% +\conclude% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}% +\vspace{12pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \diagv{t}{l}{b} prints the last item of the diagram and +% adds a t points extra space at the top of the diagram +% adds a l points extra space at the left of the diagram +% adds a b points extra space at the bottom of the diagram +\newcommand{\diagv}[3]{% +\conclude% +\NUMBER=#1% +\rule{0pt}{\NUMBER pt}% +\hspace*{-#2pt}% +\raisebox{0pt}[0pt][\value{vertical}\unitlength]{}% +\hspace*{\value{horizontal}\unitlength}%6 +\NUMBER=#3% +\advance\NUMBER by 12% +\vspace*{\NUMBER pt}% +\end{center}% +\setlength{\unitlength}{1pt}% +\global\diagramfalse}% + +% \movename(n,m){f} moves the name f of the arrow n points right +% and m points up. +\def\movename(#1,#2)#3{% +\hspace{#1pt}% +\raisebox{#2pt}[5pt][2pt]{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}% + +% \movearrow(n,m){\...} moves arrow \... n points right +% and m points up. +\def\movearrow(#1,#2)#3{% +\makebox[0pt]{% +\hspace{#1pt}\hspace{#1pt}% +\raisebox{#2pt}[0pt][0pt]{\raisebox{#2pt}{$#3$}}}}% + +% \movevertex(n,m){A} moves vertex A n points right and m points up +\def\movevertex(#1,#2)#3{% +\mbox{\hspace{#1pt}% +\raisebox{#2pt}{\raisebox{#2pt}{$#3$}}% +\hspace{-#1pt}}}% + +% \movevertexleft{XXX} moves vertex XXX left +\newcommand{\movevertexleft}[1]{\makebox[2800\unitlength][r]{$#1$}} + +% \movevertexright{XXX} moves vertex XXX right +\newcommand{\movevertexright}[1]{\makebox[2800\unitlength][l]{$#1$}} + +% \crosslength{P}{Q} computes the formal dimensions of the +% superposition of pictures P and Q +\newcommand{\crosslength}[2]{% +\settowidth{\firstitem}{#1}% +\settowidth{\seconditem}{#2}% +\ifdim\firstitem < \seconditem% +\itemlength=\seconditem% +\else% +\itemlength=\firstitem% +\fi% +\divide\itemlength by 2% +\hspace{\itemlength}}% + +% \cross{P}{Q} superposes pictures P and Q +\newcommand{\cross}[2]{% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}% +\begin{picture}(0,0)% +\put(0,0){\makebox(0,0){$#1$}}% +\thinlines% +\put(0,0){\makebox(0,0){$#2$}}% +\thinlines% +\end{picture}% +\crosslength{\mbox{$#1$}}{\mbox{$#2$}}}% + +% \bold prints the next arrow in bold-face type +\newcommand{\bold}{\ifdiagram\thicklines\else\typeout{Sorry: command +\string\bold does not apply to text arrows; I am ignoring it.}\fi} + +% \unbold switches back to normal arrows +\newcommand{\unbold}{\thinlines} + +% SHORTENING THE TYPING OF DIAGRAMS + +\def\basicDIAG#1¤{\DIAGV{\defaultscale}{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicDIAGV[#1]#2¤{\DIAGV{#1}{#2}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicn#1¤{\n{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\basicnn#1¤{\nn{#1}\@ifnexttok¤{\finishline}{\basicn}} +\def\finishline#1{\@ifnextchar\end{\diag}% +{\@ifnextchar\spacing{\relax}{\basicnn}}} +\def\spacing(#1,#2,#3){\diagv{#1}{#2}{#3}} + +\newif\ifcaption% + +\newenvironment{diagram}{% +\iffloatdiag\relax\else +\global\def\diagramcaption##1{% +\global\captiontrue% +\global\def\@diagcaption{##1}}% +\global\def\@diagcaption{}\fi% +\@ifnextchar[{\basicDIAGV}{\basicDIAG}}% +{\iffloatdiag\relax\else% +\ifcaption +\begin{center}\mbox{}\@diagcaption\end{center}% +\else\relax\fi\fi\global\captionfalse} + +\global\captionfalse + + +% MACROS FOR FLOATING DIAGRAMS + +\gdef\@diaglabel{Diagram} +\gdef\diagramlabel#1{\gdef\@diaglabel{#1}} + +\newcounter{Diagram} +\setcounter{Diagram}{0} +\def\theDiagram{\@arabic\c@Diagram} +\def\fps@Diagram{tbp} +\def\ftype@Diagram{1} +\def\ext@Diagram{lof} +\def\fnum@Diagram{\@diaglabel\ \theDiagram} +\def\Diagram{\@float{Diagram}} +\let\endDiagram\end@float +\@namedef{Diagram*}{\@dblfloat{Diagram}} +\@namedef{endDiagram*}{\end@dblfloat} + +\def\setdiagramcounter#1{\@addtoreset{Diagram}{#1}% +\def\theDiagram{\arabic{#1}.\@arabic\c@Diagram}} + +\newif\iffloatdiag + +\newenvironment{floatingdiagram}{% +\global\floatdiagtrue% +\long\def\@makecaption##1##2{ + \vskip 0pt + \setbox\@tempboxa\hbox{##1##2} + \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox +to\hsize{\hfil\box\@tempboxa\hfil} + \fi}% +\global\def\diagramcaption##1{\global\def\@diagcaption{: ##1}}% +\global\def\@diagcaption{}% +\begin{Diagram}[tbp]\begin{diagram}}% +{\end{diagram}\caption{\@diagcaption}\end{Diagram}% +\global\floatdiagfalse} + +\global\floatdiagfalse + +% MACROS FOR DRAWING TEXT PICTURES + +% \tlowername{P}{f} puts the name f under the picture P +\newcommand{\tlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\scriptstyle#2$}}}% +\end{picture}}$}% + +% \tcase{P} draws the picture P with length \textarrowlength pt. +\newcommand{\tcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Tcase{P}{f} draws the picture P with upper name f +% and length \textarrowlength pt. +\newcommand{\Tcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\scriptstyle #2}{#1{\actualtextarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% \tbicase{P} draws the bi-picture P +% with length \textarrowlength pt. +\newcommand{\tbicase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{1pt}{#1{\actualtextarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Tbicase{P}{f}{g} draws the bi-picture P with names f, g +% and length \textarrowlength pt. +\newcommand{\Tbicase}[3]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualtextarrowspace pt]% +{\raisebox{-1pt}% +{$\stackrel{\scriptstyle #2}% +{\mbox{\tlowername{#1{\actualtextarrowlength}}% +{\scriptstyle #3}}}$}}% +\setlength{\unitlength}{1pt}}% + +% MACROS FOR DRAWING DISPLAYED PICTURES + +% \dlowername{P}{f} puts the name f under the picture P +\newcommand{\dlowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,6)[t]{\makebox[1pt]{$\textstyle#2$}}}% +\end{picture}}$}% + +% \dcase{P} draws the picture P with length \displayarrowlength pt. +\newcommand{\dcase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Dcase{P}{f} draws the picture P with upper name f +% and length \displayarrowlength pt. +\newcommand{\Dcase}[2]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{2.5pt}{$\stackrel{\textstyle #2}{#1{\actualdisplayarrowlength}}$}}% +\setlength{\unitlength}{1pt}}% + +% \dbicase{P} draws the bi-picture P +% with length \displayarrowlength pt. +\newcommand{\dbicase}[1]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{1pt}{#1{\actualdisplayarrowlength}}}% +\setlength{\unitlength}{1pt}}% + +% \Dbicase{P}{f}{g} draws the bi-picture P with names f, g +% and length \displayarrowlength pt. +\newcommand{\Dbicase}[3]{% +\testtextmode% +\setlength{\unitlength}{0.01pt}% +\makebox[\actualdisplayarrowspace pt]% +{\raisebox{-1pt}% +{$\stackrel{\textstyle #2}% +{\mbox{\tlowername{#1{\actualdisplayarrowlength}}% +{\textstyle #3}}}$}}% +\setlength{\unitlength}{1pt}}% + + +% IN-TEXT ARROWS + +% \AR{n} draws an arrow of length n units +\newcommand{\AR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% \BIAR{n} draws a pair of arrows of length n units +\newcommand{\BIAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\vector(1,0){#1}}% +\put(0,700){\vector(1,0){#1}}% +\end{picture}}% + +% \ADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\ADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,0){\vector(1,0){#1}}% +\put(#1,700){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength pt and textstyle names in display math mode. + +% arrow +\newcommand{\ar}{\ifinner\tcase{\AR}\else\dcase{\AR}\fi}% + +% arrow with upper name [1] +\newcommand{\Ar}[1]{\ifinner\Tcase{\AR}{#1}\else\Dcase{\AR}{#1}\fi}% + +% pair of arrows +\newcommand{\biar}{\ifinner\tbicase{\BIAR}\else\dbicase{\BIAR}\fi}% + +% pair of arrows with names [1],[2] +\newcommand{\Biar}[2]{\ifinner\Tbicase{\BIAR}{#1}{#2}% +\else\Dbicase{\BIAR}{#1}{#2}\fi}% + +% pair of adjoint arrows +\newcommand{\adjar}{\ifinner\tbicase{\ADJAR}\else\dbicase{\ADJAR}\fi}% + +% pair of adjoint arrows with names [1],[2] +\newcommand{\Adjar}[2]{\ifinner\Tbicase{\ADJAR}{#1}{#2}% +\else\Dbicase{\ADJAR}{#1}{#2}\fi}% + +% IN-TEXT BACK ARROWS + +% \BKAR{n} draws a pointing back arrow of length n units +\newcommand{\BKAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% \BKBIAR{n} draws a pair of pointing back arrows of length n units +\newcommand{\BKBIAR}[1]% +{\begin{picture}(#1,700)% +\put(#1,0){\vector(-1,0){#1}}% +\put(#1,700){\vector(-1,0){#1}}% +\end{picture}}% + +% \BKADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\BKADJAR}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\vector(1,0){#1}}% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% \BKADJDIST{n} draws a pair of adjoint distributors of length n units +\newcommand{\BKADJDIST}[1]% +{\begin{picture}(#1,700)% +\put(0,700){\vector(1,0){#1}}% +\put(#1,0){\vector(-1,0){#1}}% +\NUMBER=#1% +\divide\NUMBER by 2% +\put(\NUMBER,0){\circle{400}}% +\put(\NUMBER,700){\circle{400}}% +\end{picture}}% + +% All the following commands produce back arrows with length 20pt +% and scriptstyle names in math mode but arrows with length +% \displayarrowlength and textstyle names in display math mode. + +% back arrow +\newcommand{\bkar}{\ifinner\tcase{\BKAR}\else\dcase{\BKAR}\fi}% + +% back arrow with upper name [1] +\newcommand{\Bkar}[1]{\ifinner\Tcase{\BKAR}{#1}\else\Dcase{\BKAR}{#1}\fi}% + +% pair of back arrows +\newcommand{\bkbiar}{\ifinner\tbicase{\BKBIAR}\else\dbicase{\BKBIAR}\fi}% + +% pair of back arrows with names [1],[2] +\newcommand{\Bkbiar}[2]{\ifinner\Tbicase{\BKBIAR}{#1}{#2}% +\else\Dbicase{\BKBIAR}{#1}{#2}\fi}% + +% back pair of adjoint arrows +\newcommand{\bkadjar}{\ifinner\tbicase{\BKADJAR}% +\else\dbicase{\BKADJAR}\fi}% + +% back pair of adjoint arrows with names [1],[2] +\newcommand{\Bkadjar}[2]{\ifinner\Tbicase{\BKADJAR}{#1}{#2}% +\else\Dbicase{\BKADJAR}{#1}{#2}\fi}% + +% MACROS FOR DRAWING HORIZONTAL PICTURES + +% \lowername{P}{f} puts the name f under the picture P +\newcommand{\lowername}[2]% +{$\stackrel{\makebox[1pt]{#1}}% +{\begin{picture}(0,0)% +\truex{600}% +\put(0,0){\makebox(0,\value{x})[t]{\makebox[1pt]{$#2$}}}% +\end{picture}}$}% + +% \hcase{P}{n} draws the picture P with length n units +\newcommand{\hcase}[2]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{0pt}[0pt][0pt]{#1{#2}}}}% + +% \Hcase{P}{f}{n} draws the picture P with upper name f +% and length n units. +\newcommand{\Hcase}[3]% +{\testdiagrammode\makebox[0pt] +{\raisebox{0pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}{#1{#3}}$}}}% + +% \hcasE{P}{f}{n} draws the picture P with lower name f +% and length n units. +\newcommand{\hcasE}[3]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{-8pt}[0pt][0pt]% +{\lowername{#1{#3}}{#2}}}}% + +% \hbicase{P}{n} draws the bi-picture P with length n units. +\newcommand{\hbicase}[2]% +{\testdiagrammode\makebox[0pt]% +{\raisebox{-2.4pt}[0pt][0pt]{#1{#2}}}}% + +% \Hbicase{P}{f}{g}{n} draws the bi-picture P with names f, g +% and length n units. +\newcommand{\Hbicase}[4]% +{\testdiagrammode\makebox[0pt] +{\raisebox{-10.4pt}[0pt][0pt]% +{$\stackrel{\makebox[0pt]{$\textstyle{#2}$}}% +{\mbox{\lowername{#1{#4}}{#3}}}$}}}% + +% EAST ARROWS + +% \EAR{n} draws an east arrow of length n units +\newcommand{\EAR}[1]% +{\begin{picture}(#1,0)% +\put(0,0){\vector(1,0){#1}}% +\end{picture}}% + +% \EBIAR{n} draws an east pair of arrows of length n units +\newcommand{\EBIAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,0){\vector(1,0){#1}}% +\put(0,\value{x}){\vector(1,0){#1}}% +\end{picture}}% + +% \EADJAR{n} draws an east pair of adjoint arrows of length n +% units +\newcommand{\EADJAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,0){\vector(1,0){#1}}% +\put(#1,\value{x}){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce east arrows + +% basic east arrow +\def\basicear[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\EAR}{\Z}}% + +% east arrow +\newcommand{\ear}{\@ifnextchar[{\basicear}% +{\hspace{\SOURCE\unitlength}\basicear[\ARROWLENGTH]}}% + +% basic east arrow with upper name +\def\basicEar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\EAR}{#2}{\Z}}% + +% east arrow with upper name +\newcommand{\Ear}{\@ifnextchar[{\basicEar}% +{\hspace{\SOURCE\unitlength}\basicEar[\ARROWLENGTH]}}% + +% basic east arrow with lower name +\def\basiceaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\EAR}{#2}{\Z}}% + +% east arrow with lower name +\newcommand{\eaR}{\@ifnextchar[{\basiceaR}% +{\hspace{\SOURCE\unitlength}\basiceaR[\ARROWLENGTH]}}% + +% basic pair of east arrows +\def\basicebiar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EBIAR}{\Z}}% + +% pair of east arrows +\newcommand{\ebiar}{\@ifnextchar[{\basicebiar}% +{\hspace{\SOURCE\unitlength}\basicebiar[\ARROWLENGTH]}}% + +% basic pair of east arrows with names +\def\basicEbiar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EBIAR}{#2}{#3}{\Z}}% + +% pair of east arrows with names +\newcommand{\Ebiar}{\@ifnextchar[{\basicEbiar}% +{\hspace{\SOURCE\unitlength}\basicEbiar[\ARROWLENGTH]}}% +\let\ebiaR=\Ebiar + +% basic pair of east adjoint arrows +\def\basiceadjar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\EADJAR}{\Z}}% + +% pair of east adjoint arrows +\newcommand{\eadjar}{\@ifnextchar[{\basiceadjar}% +{\hspace{\SOURCE\unitlength}\basiceadjar[\ARROWLENGTH]}}% + +% basic pair of east adjoint arrows with names +\def\basicEadjar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\EADJAR}{#2}{#3}{\Z}}% + +% pair of east adjoint arrows with names +\newcommand{\Eadjar}{\@ifnextchar[{\basicEadjar}% +{\hspace{\SOURCE\unitlength}\basicEadjar[\ARROWLENGTH]}}% +\let\eadjaR=\Eadjar + +% WEST ARROWS + +% \WAR{n} draws a pointing back arrow of length n units +\newcommand{\WAR}[1]% +{\begin{picture}(#1,0)% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% \WBIAR{n} draws a pair of pointing back arrows of length n units +\newcommand{\WBIAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(#1,0){\vector(-1,0){#1}}% +\put(#1,\value{x}){\vector(-1,0){#1}}% +\end{picture}}% + +% \WADJAR{n} draws a pair of adjoint arrows of length n units +\newcommand{\WADJAR}[1]% +{\truex{700}% +\begin{picture}(#1,\value{x})% +\put(0,\value{x}){\vector(1,0){#1}}% +\put(#1,0){\vector(-1,0){#1}}% +\end{picture}}% + +% All the following commands produce west arrows + +% basic west arrow +\def\basicwar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hcase{\WAR}{\Z}}% + +% west arrow +\newcommand{\war}{\@ifnextchar[{\basicwar}% +{\hspace{\SOURCE\unitlength}\basicwar[\ARROWLENGTH]}}% + +% basic west arrow with upper name +\def\basicWar[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\Hcase{\WAR}{#2}{\Z}}% + +% west arrow with upper name +\newcommand{\War}{\@ifnextchar[{\basicWar}% +{\hspace{\SOURCE\unitlength}\basicWar[\ARROWLENGTH]}}% + +% basic west arrow with lower name +\def\basicwaR[#1]#2{% +\Z=#1% +\multiply \Z by 100% +\hcasE{\WAR}{#2}{\Z}}% + +% west arrow with lower name +\newcommand{\waR}{\@ifnextchar[{\basicwaR}% +{\hspace{\SOURCE\unitlength}\basicwaR[\ARROWLENGTH]}}% + +% basic pair of west arrows +\def\basicwbiar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WBIAR}{\Z}}% + +% pair of west arrows +\newcommand{\wbiar}{\@ifnextchar[{\basicwbiar}% +{\hspace{\SOURCE\unitlength}\basicwbiar[\ARROWLENGTH]}}% + +% basic pair of west arrows with names +\def\basicWbiar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WBIAR}{#2}{#3}{\Z}}% + +% pair of west arrows with names +\newcommand{\Wbiar}{\@ifnextchar[{\basicWbiar}% +{\hspace{\SOURCE\unitlength}\basicWbiar[\ARROWLENGTH]}}% +\let\wbiaR=\Wbiar + +% basic pair of west adjoint arrows +\def\basicwadjar[#1]{% +\Z=#1% +\multiply \Z by 100% +\hbicase{\WADJAR}{\Z}}% + +% pair of west adjoint arrows +\newcommand{\wadjar}{\@ifnextchar[{\basicwadjar}% +{\hspace{\SOURCE\unitlength}\basicwadjar[\ARROWLENGTH]}}% + +% basic pair of west adjoint arrows with names +\def\basicWadjar[#1]#2#3{% +\Z=#1% +\multiply \Z by 100% +\Hbicase{\WADJAR}{#2}{#3}{\Z}}% + +% pair of west adjoint arrows with names +\newcommand{\Wadjar}{\@ifnextchar[{\basicWadjar}% +{\hspace{\SOURCE\unitlength}\basicWadjar[\ARROWLENGTH]}}% +\let\wadjaR=\Wadjar + +% MACROS FOR DRAWING VERTICAL PICTURES + +% \vcase{P}{n} draws the vertical picture P with length n units. +\newcommand{\vcase}[2]{\testdiagrammode#1{#2}}% + +% \Vcase{P}{f}{n} draws the vertical picture P +% with left name f and length n units. +\newcommand{\Vcase}[3]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{${#2}\hspace{2pt}$}}}#1{#3}}% + +% \vcasE{P}{f}{n} draws the vertical picture P +% with right name f and length n units. +\newcommand{\vcasE}[3]{\testdiagrammode\makebox[0pt]% +{#1{#3}\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{2pt}$#2$}}}}% + +% \vbicase{P}{n} draws the vertical bi-picture P with length n units. +\newcommand{\vbicase}[2]{\testdiagrammode\makebox[0pt]{{#1{#2}}}}% + +% \Vbicase{P}{f}{g}{n} draws the vertical bi-picture P +% with names f, g and length n units. +\newcommand{\Vbicase}[4]{\testdiagrammode\makebox[0pt]% +{\makebox[0pt][r]{\raisebox{0pt}[0pt][0pt]{$#2$\hspace{5.5pt}}}#1{#4}% +\makebox[0pt][l]{\raisebox{0pt}[0pt][0pt]{\hspace{6.5pt}$#3$}}}}% + +% SOUTH ARROWS + +% \SAR{n} draws a south arrow of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,#1){\vector(0,-1){#1}}% +\end{picture}}}\end{picture}}% + +% \SBIAR{n} draws a pair of south arrows of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SBIAR}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},#1){\vector(0,-1){#1}}% +\put(\value{x},#1){\vector(0,-1){#1}}% +\end{picture}}}\end{picture}}% + +% \SADJAR{n} draws a pair of vertical adjoint arrows of length n units +% and centers it in a box of width 0pt and height 0pt +\newcommand{\SADJAR}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},#1){\vector(0,-1){#1}}% +\put(\value{x},0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce south arrows + +% basic south arrow +\def\basicsar[#1]{\vcase{\SAR}{#100}}% + +% south arrow +\newcommand{\sar}{\@ifnextchar[{\basicsar}{\basicsar[50]}}% + +% basic south arrow with left name +\def\basicSar[#1]#2{\Vcase{\SAR}{#2}{#100}}% + +% south arrow with left name +\newcommand{\Sar}{\@ifnextchar[{\basicSar}{\basicSar[50]}}% + +% basic south arrow with right name +\def\basicsaR[#1]#2{\vcasE{\SAR}{#2}{#100}}% + +% south arrow with right name +\newcommand{\saR}{\@ifnextchar[{\basicsaR}{\basicsaR[50]}}% + +% basic pair of south arrows +\def\basicsbiar[#1]{\vbicase{\SBIAR}{#100}}% + +% pair of south arrows +\newcommand{\sbiar}{\@ifnextchar[{\basicsbiar}{\basicsbiar[50]}}% + +% basic pair of south arrows with names +\def\basicSbiar[#1]#2#3{\Vbicase{\SBIAR}{#2}{#3}{#100}}% + +% pair of south arrows with names +\newcommand{\Sbiar}{\@ifnextchar[{\basicSbiar}{\basicSbiar[50]}}% +\let\sbiaR=\Sbiar + +% basic pair of south adjoint arrows +\def\basicsadjar[#1]{\vbicase{\SADJAR}{#100}}% + +% pair of south adjoint arrows +\newcommand{\sadjar}{\@ifnextchar[{\basicsadjar}{\basicsadjar[50]}}% + +% basic pair of south adjoint arrows with names +\def\basicSadjar[#1]#2#3{\Vbicase{\SADJAR}{#2}{#3}{#100}}% + +% pair of south adjoint arrows with names +\newcommand{\Sadjar}{\@ifnextchar[{\basicSadjar}{\basicSadjar[50]}}% +\let\sadjaR=\Sadjar + +% NORTH ARROWS + +% \NAR{n} draws a north arrow of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NAR}[1]% +{\begin{picture}(0,0)% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(0,0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% \NBIAR{n} draws a pair of north arrows of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NBIAR}[1]% +{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(-\value{x},0){\vector(0,1){#1}}% +\put(\value{x},0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% \NADJAR{n} draws a pair of vertical adjoint arrows of length n pt +% and centers it in a box of width 0pt and height 0pt +\newcommand{\NADJAR}[1]{\begin{picture}(0,0)% +\truex{350}% +\put(0,0){\makebox(0,0)% +{\begin{picture}(0,#1)% +\put(\value{x},#1){\vector(0,-1){#1}}% +\put(-\value{x},0){\vector(0,1){#1}}% +\end{picture}}}\end{picture}}% + +% All the following commands produce north arrows + +% basic north arrow +\def\basicnar[#1]{\vcase{\NAR}{#100}}% + +% north arrow +\newcommand{\nar}{\@ifnextchar[{\basicnar}{\basicnar[50]}}% + +% basic north arrow with left name +\def\basicNar[#1]#2{\Vcase{\NAR}{#2}{#100}}% + +% north arrow with left name +\newcommand{\Nar}{\@ifnextchar[{\basicNar}{\basicNar[50]}}% + +% basic north arrow with right name +\def\basicnaR[#1]#2{\vcasE{\NAR}{#2}{#100}}% + +% north arrow with right name +\newcommand{\naR}{\@ifnextchar[{\basicnaR}{\basicnaR[50]}}% + +% basic pair of north arrows +\def\basicnbiar[#1]{\vbicase{\NBIAR}{#100}}% + +% pair of north arrows +\newcommand{\nbiar}{\@ifnextchar[{\basicnbiar}{\basicnbiar[50]}}% + +% basic pair of north arrows with names +\def\basicNbiar[#1]#2#3{\Vbicase{\NBIAR}{#2}{#3}{#100}}% + +% pair of north arrows with names +\newcommand{\Nbiar}{\@ifnextchar[{\basicNbiar}{\basicNbiar[50]}}% +\let\nbiaR=\Nbiar + +% basic pair of north adjoint arrows +\def\basicnadjar[#1]{\vbicase{\NADJAR}{#100}}% + +% pair of north adjoint arrows +\newcommand{\nadjar}{\@ifnextchar[{\basicnadjar}{\basicnadjar[50]}}% + +% basic pair of north adjoint arrows with names +\def\basicNadjar[#1]#2#3{\Vbicase{\NADJAR}{#2}{#3}{#100}}% + +% pair of north adjoint arrows with names +\newcommand{\Nadjar}{\@ifnextchar[{\basicNadjar}{\basicNadjar[50]}}% +\let\nadjaR=\Nadjar + +% MACROS FOR FIRST DIAGONAL PICTURES + + +% \fdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\fdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{200}\truey{600}\truez{600}% +\put(-\value{x},-\value{x}){\makebox(0,\value{z})[r]{${#2}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#3}$}}% +\end{picture}}% + +% \fdbicase{P}{f}{g}{n} draws the bipicture P with names f, g +% and length n units +\newcommand{\fdbicase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{900}\truey{150}% +\put(-\value{x},\value{y}){${#2}$}% +\truex{300}\truey{1050}% +\put(\value{x},-\value{y}){${#3}$}% +\end{picture}}% + + +% NORTH-EAST ARROWS + +% \NEAR{n} draws a north-east arrow of length nx100 units +\newcommand{\NEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\vector(1,1){#1}}% +\end{picture}}% + +% \NEBIAR{n} draws a pair of north-east arrows of length n units +\newcommand{\NEBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},\value{x}){\vector(1,1){#1}}% +\put(\value{x},-\value{x}){\vector(1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \NEADJAR{n} draws a north-east pair of adjoint arrows of length n units +\newcommand{\NEADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},-\value{x}){\vector(1,1){#1}}% +\end{picture}}% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},\value{x}){\vector(-1,-1){#1}}% +\end{picture}}\end{picture}}% + +% All the following commands draw north-east arrows + +% north-east arrow of length nx100 units +\def\basicnear[#1]{\fdcase{\NEAR}{}{}{#100}}% + +% north-east arrow +\newcommand{\near}{\@ifnextchar[{\basicnear}{\basicnear[59]}}% + +% north-east arrow with upper name [1] and length nx100 units +\def\basicNear[#1]#2{\fdcase{\NEAR}{#2}{}{#100}}% + +% north-east arrow with upper name +\newcommand{\Near}{\@ifnextchar[{\basicNear}{\basicNear[59]}}% + +% north-east arrow with lower name [1] and length nx100 units +\def\basicneaR[#1]#2{\fdcase{\NEAR}{}{#2}{#100}}% + +% north-east arrow with lower name [1] +\newcommand{\neaR}{\@ifnextchar[{\basicneaR}{\basicneaR[59]}}% + +% pair of north-east arrows of length nx100 units +\def\basicnebiar[#1]{\fdbicase{\NEBIAR}{}{}{#100}}% + +% pair of north-east arrows +\newcommand{\nebiar}{\@ifnextchar[{\basicnebiar}{\basicnebiar[59]}}% + +% pair of north-east arrows with names [1][2] and length nx100 units +\def\basicNebiar[#1]#2#3{\fdbicase{\NEBIAR}{#2}{#3}{#100}}% + +% pair of north-east arrows with names +\newcommand{\Nebiar}{\@ifnextchar[{\basicNebiar}{\basicNebiar[59]}}% +\let\nebiaR=\Nebiar + +% pair of north-east adjoint arrows of length nx100 units +\def\basicneadjar[#1]{\fdbicase{\NEADJAR}{}{}{#100}}% + +% pair of north-east adjoint arrows +\newcommand{\neadjar}{\@ifnextchar[{\basicneadjar}{\basicneadjar[59]}}% + +% pair of north-east adjoint arrows with names [1][2] and length nx100 units +\def\basicNeadjar[#1]#2#3{\fdbicase{\NEADJAR}{#2}{#3}{#100}}% + +% pair of north-east adjoint arrows with names +\newcommand{\Neadjar}{\@ifnextchar[{\basicNeadjar}{\basicNeadjar[59]}}% +\let\neadjaR=\Neadjar + +% SOUT-WEST ARROWS + +% \SWAR{n} draws a south-west arrow of length nx100 units +\newcommand{\SWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\vector(-1,-1){#1}}% +\end{picture}}% + +% \SWBIAR{n} draws a pair of south-west arrows of length n units +\newcommand{\SWBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\put(\value{x},-\value{x}){\vector(-1,-1){#1}}% +\put(-\value{x},\value{x}){\vector(-1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \SWADJAR{n} draws a south-west pair of adjoint arrows of length n units +\newcommand{\SWADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},-\value{x}){\vector(-1,-1){#1}}% +\end{picture}}% +\put(-\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},\value{x}){\vector(1,1){#1}}% +\end{picture}}\end{picture}}% + +% All the following commands draw south-west arrows + +% south-west arrow of length nx100 units +\def\basicswar[#1]{\fdcase{\SWAR}{}{}{#100}}% + +% south-west arrow +\newcommand{\swar}{\@ifnextchar[{\basicswar}{\basicswar[59]}}% + +% south-west arrow with upper name [1] and length nx100 units +\def\basicSwar[#1]#2{\fdcase{\SWAR}{#2}{}{#100}}% + +% south-west arrow with upper name +\newcommand{\Swar}{\@ifnextchar[{\basicSwar}{\basicSwar[59]}}% + +% south-west arrow with lower name [1] and length nx100 units +\def\basicswaR[#1]#2{\fdcase{\SWAR}{}{#2}{#100}}% + +% south-west arrow with lower name [1] +\newcommand{\swaR}{\@ifnextchar[{\basicswaR}{\basicswaR[59]}}% + +% pair of south-west arrows of length nx100 units +\def\basicswbiar[#1]{\fdbicase{\SWBIAR}{}{}{#100}}% + +% pair of south-west arrows +\newcommand{\swbiar}{\@ifnextchar[{\basicswbiar}{\basicswbiar[59]}}% + +% pair of south-west arrows with names [1][2] and length nx100 units +\def\basicSwbiar[#1]#2#3{\fdbicase{\SWBIAR}{#2}{#3}{#100}}% + +% pair of south-west arrows with names +\newcommand{\Swbiar}{\@ifnextchar[{\basicSwbiar}{\basicSwbiar[59]}}% +\let\swbiaR=\Swbiar + +% pair of south-west adjoint arrows of length nx100 units +\def\basicswadjar[#1]{\fdbicase{\SWADJAR}{}{}{#100}}% + +% pair of south-west adjoint arrows +\newcommand{\swadjar}{\@ifnextchar[{\basicswadjar}{\basicswadjar[59]}}% + +% pair of south-west adjoint arrows with names [1][2] and length nx100 units +\def\basicSwadjar[#1]#2#3{\fdbicase{\SWADJAR}{#2}{#3}{#100}}% + +% pair of south-west adjoint arrows with names +\newcommand{\Swadjar}{\@ifnextchar[{\basicSwadjar}{\basicSwadjar[59]}}% +\let\swadjaR=\Swadjar + +% MACROS FOR SECOND DIAGONAL PICTURES + +% \sdcase{P}{f}{g}{n} draws the picture P with names f, g +% and length n units +\newcommand{\sdcase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{100}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#2}$}}% +\truex{300}\truey{800}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#3}$}}% +\end{picture}}% + +% \sdbicase{P}{f}{g}{n} draws the bipicture P with names f, g +% and length n units +\newcommand{\sdbicase}[4]{\testdiagrammode\begin{picture}(0,0)% +\put(0,0){#1{#4}}% +\truex{350}\truey{600}\truez{950}% +\put(\value{x},\value{x}){\makebox(0,\value{y})[l]{${#2}$}}% +\truex{450}\truey{600}\truez{1050}% +\put(-\value{x},-\value{z}){\makebox(0,\value{y})[r]{${#3}$}}% +\end{picture}}% + + +% SOUTH-EAST ARROWS + +% \SEAR{n} draws a south-east arrow of length nx100 units +\newcommand{\SEAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\vector(1,-1){#1}}% +\end{picture}}% + +% \SEBIAR{n} draws a pair of south-east arrows of length n units +\newcommand{\SEBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},-\value{x}){\vector(1,-1){#1}}% +\put(\value{x},\value{x}){\vector(1,-1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \SEADJAR{n} draws a south-east pair of adjoint arrows of length n units +\newcommand{\SEADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},-\value{x}){\vector(1,-1){#1}}% +\end{picture}}% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},\value{x}){\vector(-1,1){#1}}% +\end{picture}}\end{picture}}% + +% All the following commands draw south-east arrows + +% south-east arrow of length nx100 units +\def\basicsear[#1]{\sdcase{\SEAR}{}{}{#100}}% + +% south-east arrow +\newcommand{\sear}{\@ifnextchar[{\basicsear}{\basicsear[59]}}% + +% south-east arrow with upper name [1] and length nx100 units +\def\basicSear[#1]#2{\sdcase{\SEAR}{#2}{}{#100}}% + +% south-east arrow with upper name +\newcommand{\Sear}{\@ifnextchar[{\basicSear}{\basicSear[59]}}% + +% south-east arrow with lower name [1] and length nx100 units +\def\basicseaR[#1]#2{\sdcase{\SEAR}{}{#2}{#100}}% + +% south-east arrow with lower name [1] +\newcommand{\seaR}{\@ifnextchar[{\basicseaR}{\basicseaR[59]}}% + +% pair of south-east arrows of length nx100 units +\def\basicsebiar[#1]{\sdbicase{\SEBIAR}{}{}{#100}}% + +% pair of south-east arrows +\newcommand{\sebiar}{\@ifnextchar[{\basicsebiar}{\basicsebiar[59]}}% + +% pair of south-east arrows with names [1][2] and length nx100 units +\def\basicSebiar[#1]#2#3{\sdbicase{\SEBIAR}{#2}{#3}{#100}}% + +% pair of south-east arrows with names +\newcommand{\Sebiar}{\@ifnextchar[{\basicSebiar}{\basicSebiar[59]}}% +\let\sebiaR=\Sebiar + +% pair of south-east adjoint arrows of length nx100 units +\def\basicseadjar[#1]{\sdbicase{\SEADJAR}{}{}{#100}}% + +% pair of south-east adjoint arrows +\newcommand{\seadjar}{\@ifnextchar[{\basicseadjar}{\basicseadjar[59]}}% + +% pair of south-east adjoint arrows with names [1][2] and length nx100 units +\def\basicSeadjar[#1]#2#3{\sdbicase{\SEADJAR}{#2}{#3}{#100}}% + +% pair of south-east adjoint arrows with names +\newcommand{\Seadjar}{\@ifnextchar[{\basicSeadjar}{\basicSeadjar[59]}}% +\let\seadjaR=\Seadjar + +% NORTH-WEST ARROWS + +% \NWAR{n} draws a north-west arrow of length nx100 units +\newcommand{\NWAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\vector(-1,1){#1}}% +\end{picture}}% + +% \NWBIAR{n} draws a pair of north-west arrows of length n units +\newcommand{\NWBIAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\put(-\value{x},-\value{x}){\vector(-1,1){#1}}% +\put(\value{x},\value{x}){\vector(-1,1){#1}}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\end{picture}}\end{picture}}% + +% \NWADJAR{n} draws a north-west pair of adjoint arrows of length n units +\newcommand{\NWADJAR}[1]{% +\Y=#1% +\divide\Y by 2% +\begin{picture}(0,0)% +\put(\Y,-\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(-\value{x},-\value{x}){\vector(-1,1){#1}}% +\end{picture}}% +\put(-\Y,\Y){\begin{picture}(0,0)% +\truex{247}% +\monolength=#1% +\advance\monolength by -\value{x}% +\epilength=#1% +\advance\epilength by \value{x}% +\put(\value{x},\value{x}){\vector(1,-1){#1}}% +\end{picture}}\end{picture}}% + +% All the following commands draw north-west arrows + +% north-west arrow of length nx100 units +\def\basicnwar[#1]{\sdcase{\NWAR}{}{}{#100}}% + +% north-west arrow +\newcommand{\nwar}{\@ifnextchar[{\basicnwar}{\basicnwar[59]}}% + +% north-west arrow with upper name [1] and length nx100 units +\def\basicNwar[#1]#2{\sdcase{\NWAR}{#2}{}{#100}}% + +% north-west arrow with upper name +\newcommand{\Nwar}{\@ifnextchar[{\basicNwar}{\basicNwar[59]}}% + +% north-west arrow with lower name [1] and length nx100 units +\def\basicnwaR[#1]#2{\sdcase{\NWAR}{}{#2}{#100}}% + +% north-west arrow with lower name [1] +\newcommand{\nwaR}{\@ifnextchar[{\basicnwaR}{\basicnwaR[59]}}% + +% pair of north-west arrows of length nx100 units +\def\basicnwbiar[#1]{\sdbicase{\NWBIAR}{}{}{#100}}% + +% pair of north-west arrows +\newcommand{\nwbiar}{\@ifnextchar[{\basicnwbiar}{\basicnwbiar[59]}}% + +% pair of north-west arrows with names [1][2] and length nx100 units +\def\basicNwbiar[#1]#2#3{\sdbicase{\NWBIAR}{#2}{#3}{#100}}% + +% pair of north-west arrows with names +\newcommand{\Nwbiar}{\@ifnextchar[{\basicNwbiar}{\basicNwbiar[59]}}% +\let\nwbiaR=\Nwbiar + +% pair of north-west adjoint arrows of length nx100 units +\def\basicnwadjar[#1]{\sdbicase{\NWADJAR}{}{}{#100}}% + +% pair of north-west adjoint arrows +\newcommand{\nwadjar}{\@ifnextchar[{\basicnwadjar}{\basicnwadjar[59]}}% + +% pair of north-west adjoint arrows with names [1][2] and length nx100 units +\def\basicNwadjar[#1]#2#3{\sdbicase{\NWADJAR}{#2}{#3}{#100}}% + +% pair of north-west adjoint arrows with names +\newcommand{\Nwadjar}{\@ifnextchar[{\basicNwadjar}{\basicNwadjar[59]}}% +\let\nwadjaR=\Nwadjar + +% EAST-NORTH-EAST ARROWS + +% The following commands produce east-north-east arrows +% of horizontal extent n units + +% \ENEAR{f}{g}{n} draws a east-north-east arrow with names f, g +% and length n units +\newcommand{\ENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \ENEBIAR{f}{g}{n} draws a pair of east-north-east arrows +% with names f,g and length n units +\newcommand{\ENEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},\value{y}){\vector(2,1){#3}}% +\put(\value{x},-\value{y}){\vector(2,1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \ENEADJAR{f}{g}{n} draws a east-north-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\ENEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(2,1){#3}}% +\put(\monolength,\secondepilength){\vector(-2,-1){#3}}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-north-east arrows; +% the default length is 13300 units + +% basic east-north-east arrow +\def\basicenear[#1]{\ENEAR{}{}{#100}}% + +% east-north-east arrow +\newcommand{\enear}{\@ifnextchar[{\basicenear}{\basicenear[133]}}% + +% basic east-north-east arrow with upper name +\def\basicEnear[#1]#2{\ENEAR{#2}{}{#100}}% + +% east-north-east arrow with upper name +\newcommand{\Enear}{\@ifnextchar[{\basicEnear}{\basicEnear[133]}}% + +% basic east-north-east arrow with lower name +\def\basiceneaR[#1]#2{\ENEAR{}{#2}{#100}}% + +% east-north-east arrow with lower name +\newcommand{\eneaR}{\@ifnextchar[{\basiceneaR}{\basiceneaR[133]}}% + +% basic east-north-east pair of arrows +\def\basicenebiar[#1]{\ENEBIAR{}{}{#100}}% + +% east-north-east pair of arrows +\newcommand{\enebiar}{\@ifnextchar[{\basicenebiar}{\basicenebiar[133]}}% + +% basic east-north-east pair of arrows with names +\def\basicEnebiar[#1]#2#3{\ENEBIAR{#2}{#3}{#100}}% + +% east-north-east pair of arrows with names +\newcommand{\Enebiar}{\@ifnextchar[{\basicEnebiar}{\basicEnebiar[133]}}% +\let\enebiaR=\Enebiar + +% basic east-north-east pair of adjoint arrows +\def\basiceneadjar[#1]{\ENEADJAR{}{}{#100}}% + +% east-north-east pair of adjoint arrows +\newcommand{\eneadjar}{\@ifnextchar[{\basiceneadjar}{\basiceneadjar[133]}}% + +% basic east-north-east pair of adjoint arrows with names +\def\basicEneadjar[#1]#2#3{\ENEADJAR{#2}{#3}{#100}}% + +% east-north-east pair of adjoint arrows with names +\newcommand{\Eneadjar}{\@ifnextchar[{\basicEneadjar}{\basicEneadjar[133]}}% +\let\eneadjaR=\Eneadjar + +% EAST-SOUTH-EAST ARROWS + +% The following commands produce east-south-east arrows +% of horizontal extent n units + +% \ESEAR{f}{g}{n} draws a east-south-east arrow with names f, g +% and length n units +\newcommand{\ESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \ESEBIAR{f}{g}{n} draws a pair of east-south-east arrows +% with names f,g and length n units +\newcommand{\ESEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},-\value{y}){\vector(2,-1){#3}}% +\put(\value{x},\value{y}){\vector(2,-1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \ESEADJAR{f}{g}{n} draws a east-south-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\ESEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(2,-1){#3}}% +\put(\epilength,-\secondmonolength){\vector(-2,1){#3}}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce east-south-east arrows; +% the default length is 13300 units + +% basic east-south-east arrow +\def\basicesear[#1]{\ESEAR{}{}{#100}}% + +% east-south-east arrow +\newcommand{\esear}{\@ifnextchar[{\basicesear}{\basicesear[133]}}% + +% basic east-south-east arrow with upper name +\def\basicEsear[#1]#2{\ESEAR{#2}{}{#100}}% + +% east-south-east arrow with upper name +\newcommand{\Esear}{\@ifnextchar[{\basicEsear}{\basicEsear[133]}}% + +% basic east-south-east arrow with lower name +\def\basiceseaR[#1]#2{\ESEAR{}{#2}{#100}}% + +% east-south-east arrow with lower name +\newcommand{\eseaR}{\@ifnextchar[{\basiceseaR}{\basiceseaR[133]}}% + +% basic east-south-east pair of arrows +\def\basicesebiar[#1]{\ESEBIAR{}{}{#100}}% + +% east-south-east pair of arrows +\newcommand{\esebiar}{\@ifnextchar[{\basicesebiar}{\basicesebiar[133]}}% + +% basic east-south-east pair of arrows with names +\def\basicEsebiar[#1]#2#3{\ESEBIAR{#2}{#3}{#100}}% + +% east-south-east pair of arrows with names +\newcommand{\Esebiar}{\@ifnextchar[{\basicEsebiar}{\basicEsebiar[133]}}% +\let\esebiaR=\Esebiar + +% basic east-south-east pair of adjoint arrows +\def\basiceseadjar[#1]{\ESEADJAR{}{}{#100}}% + +% east-south-east pair of adjoint arrows +\newcommand{\eseadjar}{\@ifnextchar[{\basiceseadjar}{\basiceseadjar[133]}}% + +% basic east-south-east pair of adjoint arrows with names +\def\basicEseadjar[#1]#2#3{\ESEADJAR{#2}{#3}{#100}}% + +% east-south-east pair of adjoint arrows with names +\newcommand{\Eseadjar}{\@ifnextchar[{\basicEseadjar}{\basicEseadjar[133]}}% +\let\eseadjaR=\Eseadjar + +% WEST-SOUTH-WEST ARROWS + +% The following commands produce west-south-west arrows +% of horizontal extent n units + +% \WSWAR{f}{g}{n} draws a west-south-west arrow with names f, g +% and length n units +\newcommand{\WSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \WSWBIAR{f}{g}{n} draws a pair of west-south-west arrows +% with names f,g and length n units +\newcommand{\WSWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},\value{y}){\vector(-2,-1){#3}}% +\put(\value{x},-\value{y}){\vector(-2,-1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \WSWADJAR{f}{g}{n} draws a west-south-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\WSWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(-2,-1){#3}}% +\put(-\epilength,-\secondmonolength){\vector(2,1){#3}}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-south-west arrows; +% the default length is 13300 units + +% basic west-south-west arrow +\def\basicwswar[#1]{\WSWAR{}{}{#100}}% + +% west-south-west arrow +\newcommand{\wswar}{\@ifnextchar[{\basicwswar}{\basicwswar[133]}}% + +% basic west-south-west arrow with upper name +\def\basicWswar[#1]#2{\WSWAR{#2}{}{#100}}% + +% west-south-west arrow with upper name +\newcommand{\Wswar}{\@ifnextchar[{\basicWswar}{\basicWswar[133]}}% + +% basic west-south-west arrow with lower name +\def\basicwswaR[#1]#2{\WSWAR{}{#2}{#100}}% + +% west-south-west arrow with lower name +\newcommand{\wswaR}{\@ifnextchar[{\basicwswaR}{\basicwswaR[133]}}% + +% basic west-south-west pair of arrows +\def\basicwswbiar[#1]{\WSWBIAR{}{}{#100}}% + +% west-south-west pair of arrows +\newcommand{\wswbiar}{\@ifnextchar[{\basicwswbiar}{\basicwswbiar[133]}}% + +% basic west-south-west pair of arrows with names +\def\basicWswbiar[#1]#2#3{\WSWBIAR{#2}{#3}{#100}}% + +% west-south-west pair of arrows with names +\newcommand{\Wswbiar}{\@ifnextchar[{\basicWswbiar}{\basicWswbiar[133]}}% +\let\wswbiaR=\Wswbiar + +% basic west-south-west pair of adjoint arrows +\def\basicwswadjar[#1]{\WSWADJAR{}{}{#100}}% + +% west-south-west pair of adjoint arrows +\newcommand{\wswadjar}{\@ifnextchar[{\basicwswadjar}{\basicwswadjar[133]}}% + +% basic west-south-west pair of adjoint arrows with names +\def\basicWswadjar[#1]#2#3{\WSWADJAR{#2}{#3}{#100}}% + +% west-south-west pair of adjoint arrows with names +\newcommand{\Wswadjar}{\@ifnextchar[{\basicWswadjar}{\basicWswadjar[133]}}% +\let\wswadjaR=\Wswadjar + +% WEST-NORTH-WEST ARROWS + +% The following commands produce west-north-west arrows +% of horizontal extent n units + +% \WNWAR{f}{g}{n} draws a west-north-west arrow with names f, g +% and length n units +\newcommand{\WNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \WNWBIAR{f}{g}{n} draws a pair of west-north-west arrows +% with names f,g and length n units +\newcommand{\WNWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\put(-\value{x},-\value{y}){\vector(-2,1){#3}}% +\put(\value{x},\value{y}){\vector(-2,1){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \WNWADJAR{f}{g}{n} draws a west-north-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\WNWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=\Y% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Y,-\Z){\begin{picture}(0,0)% +\truex{156}\truey{313}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Y% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Y% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(-2,1){#3}}% +\put(-\monolength,\secondepilength){\vector(2,-1){#3}}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce west-north-west arrows; +% the default length is 13300 units + +% basic west-north-west arrow +\def\basicwnwar[#1]{\WNWAR{}{}{#100}}% + +% west-north-west arrow +\newcommand{\wnwar}{\@ifnextchar[{\basicwnwar}{\basicwnwar[133]}}% + +% basic west-north-west arrow with upper name +\def\basicWnwar[#1]#2{\WNWAR{#2}{}{#100}}% + +% west-north-west arrow with upper name +\newcommand{\Wnwar}{\@ifnextchar[{\basicWnwar}{\basicWnwar[133]}}% + +% basic west-north-west arrow with lower name +\def\basicwnwaR[#1]#2{\WNWAR{}{#2}{#100}}% + +% west-north-west arrow with lower name +\newcommand{\wnwaR}{\@ifnextchar[{\basicwnwaR}{\basicwnwaR[133]}}% + +% basic west-north-west distributor +\def\basicwnwdist[#1]{\WNWDIST{}{}{#100}}% + +% basic west-north-west pair of arrows +\def\basicwnwbiar[#1]{\WNWBIAR{}{}{#100}}% + +% west-north-west pair of arrows +\newcommand{\wnwbiar}{\@ifnextchar[{\basicwnwbiar}{\basicwnwbiar[133]}}% + +% basic west-north-west pair of arrows with names +\def\basicWnwbiar[#1]#2#3{\WNWBIAR{#2}{#3}{#100}}% + +% west-north-west pair of arrows with names +\newcommand{\Wnwbiar}{\@ifnextchar[{\basicWnwbiar}{\basicWnwbiar[133]}}% +\let\wnwbiaR=\Wnwbiar + +% basic west-north-west pair of adjoint arrows +\def\basicwnwadjar[#1]{\WNWADJAR{}{}{#100}}% + +% west-north-west pair of adjoint arrows +\newcommand{\wnwadjar}{\@ifnextchar[{\basicwnwadjar}{\basicwnwadjar[133]}}% + +% basic west-north-west pair of adjoint arrows with names +\def\basicWnwadjar[#1]#2#3{\WNWADJAR{#2}{#3}{#100}}% + +% west-north-west pair of adjoint arrows with names +\newcommand{\Wnwadjar}{\@ifnextchar[{\basicWnwadjar}{\basicWnwadjar[133]}}% +\let\wnwadjaR=\Wnwadjar + +% NORTH-NORTH-EAST ARROWS + +% The following commands produce north-north-east arrows +% of horizontal extent n units + +% \NNEAR{f}{g}{n} draws a north-north-east arrow with names f, g +% and length n units +\newcommand{\NNEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,-#3){\vector(1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \NNEBIAR{f}{g}{n} draws a pair of north-north-east arrows +% with names f,g and length n units +\newcommand{\NNEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},\value{y}){\vector(1,2){#3}}% +\put(\value{x},-\value{y}){\vector(1,2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \NNEADJAR{f}{g}{n} draws a north-north-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\NNEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(1,2){#3}}% +\put(\monolength,\secondepilength){\vector(-1,-2){#3}}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-east arrows; +% the default length is 6700 units + +% basic north-north-east arrow +\def\basicnnear[#1]{\NNEAR{}{}{#100}}% + +% north-north-east arrow +\newcommand{\nnear}{\@ifnextchar[{\basicnnear}{\basicnnear[67]}}% + +% basic north-north-east arrow with upper name +\def\basicNnear[#1]#2{\NNEAR{#2}{}{#100}}% + +% north-north-east arrow with upper name +\newcommand{\Nnear}{\@ifnextchar[{\basicNnear}{\basicNnear[67]}}% + +% basic north-north-east arrow with lower name +\def\basicnneaR[#1]#2{\NNEAR{}{#2}{#100}}% + +% north-north-east arrow with lower name +\newcommand{\nneaR}{\@ifnextchar[{\basicnneaR}{\basicnneaR[67]}}% + +% basic north-north-east pair of arrows +\def\basicnnebiar[#1]{\NNEBIAR{}{}{#100}}% + +% north-north-east pair of arrows +\newcommand{\nnebiar}{\@ifnextchar[{\basicnnebiar}{\basicnnebiar[67]}}% + +% basic north-north-east pair of arrows with names +\def\basicNnebiar[#1]#2#3{\NNEBIAR{#2}{#3}{#100}}% + +% north-north-east pair of arrows with names +\newcommand{\Nnebiar}{\@ifnextchar[{\basicNnebiar}{\basicNnebiar[67]}}% +\let\nnebiaR=\Nnebiar + +% basic north-north-east pair of adjoint arrows +\def\basicnneadjar[#1]{\NNEADJAR{}{}{#100}}% + +% north-north-east pair of adjoint arrows +\newcommand{\nneadjar}{\@ifnextchar[{\basicnneadjar}{\basicnneadjar[67]}}% + +% basic north-north-east pair of adjoint arrows with names +\def\basicNneadjar[#1]#2#3{\NNEADJAR{#2}{#3}{#100}}% + +% north-north-east pair of adjoint arrows with names +\newcommand{\Nneadjar}{\@ifnextchar[{\basicNneadjar}{\basicNneadjar[67]}}% +\let\nneadjaR=\Nneadjar + +% SOUTH-SOUTH-EAST ARROWS + +% The following commands produce south-south-east arrows +% of horizontal extent n units + +% \SSEAR{f}{g}{n} draws a south-south-east arrow with names f, g +% and length n units +\newcommand{\SSEAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(-\Z,#3){\vector(1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \SSEBIAR{f}{g}{n} draws a pair of south-south-east arrows +% with names f,g and length n units +\newcommand{\SSEBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},-\value{y}){\vector(1,-2){#3}}% +\put(\value{x},\value{y}){\vector(1,-2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \SSEADJAR{f}{g}{n} draws a south-south-east pair of adjoint arrows +% with names f,g and length n units +\newcommand{\SSEADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(-\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(1,-2){#3}}% +\put(\epilength,-\secondmonolength){\vector(-1,2){#3}}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-east arrows; +% the default length is 6700 units + +% basic south-south-east arrow +\def\basicssear[#1]{\SSEAR{}{}{#100}}% + +% south-south-east arrow +\newcommand{\ssear}{\@ifnextchar[{\basicssear}{\basicssear[67]}}% + +% basic south-south-east arrow with upper name +\def\basicSsear[#1]#2{\SSEAR{#2}{}{#100}}% + +% south-south-east arrow with upper name +\newcommand{\Ssear}{\@ifnextchar[{\basicSsear}{\basicSsear[67]}}% + +% basic south-south-east arrow with lower name +\def\basicsseaR[#1]#2{\SSEAR{}{#2}{#100}}% + +% south-south-east arrow with lower name +\newcommand{\sseaR}{\@ifnextchar[{\basicsseaR}{\basicsseaR[67]}}% + +% basic south-south-east pair of arrows +\def\basicssebiar[#1]{\SSEBIAR{}{}{#100}}% + +% south-south-east pair of arrows +\newcommand{\ssebiar}{\@ifnextchar[{\basicssebiar}{\basicssebiar[67]}}% + +% basic south-south-east pair of arrows with names +\def\basicSsebiar[#1]#2#3{\SSEBIAR{#2}{#3}{#100}}% + +% south-south-east pair of arrows with names +\newcommand{\Ssebiar}{\@ifnextchar[{\basicSsebiar}{\basicSsebiar[67]}}% +\let\ssebiaR=\Ssebiar + +% basic south-south-east pair of adjoint arrows +\def\basicsseadjar[#1]{\SSEADJAR{}{}{#100}}% + +% south-south-east pair of adjoint arrows +\newcommand{\sseadjar}{\@ifnextchar[{\basicsseadjar}{\basicsseadjar[67]}}% + +% basic south-south-east pair of adjoint arrows with names +\def\basicSseadjar[#1]#2#3{\SSEADJAR{#2}{#3}{#100}}% + +% south-south-east pair of adjoint arrows with names +\newcommand{\Sseadjar}{\@ifnextchar[{\basicSseadjar}{\basicSseadjar[67]}}% +\let\sseadjaR=\Sseadjar + +% SOUTH-SOUTH-WEST ARROWS + +% The following commands produce south-south-west arrows +% of horizontal extent n units + +% \SSWAR{f}{g}{n} draws a south-south-west arrow with names f, g +% and length n units +\newcommand{\SSWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,#3){\vector(-1,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \SSWBIAR{f}{g}{n} draws a pair of south-south-west arrows +% with names f,g and length n units +\newcommand{\SSWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},\value{y}){\vector(-1,-2){#3}}% +\put(\value{x},-\value{y}){\vector(-1,-2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% \SSWADJAR{f}{g}{n} draws a south-south-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\SSWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(\value{x},-\value{y}){\vector(-1,-2){#3}}% +\put(-\epilength,-\secondmonolength){\vector(1,2){#3}}% +\end{picture}} +\truex{300}\truey{1000}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% The following commands produce south-south-west arrows; +% the default length is 6700 units + +% basic south-south-west arrow +\def\basicsswar[#1]{\SSWAR{}{}{#100}}% + +% south-south-west arrow +\newcommand{\sswar}{\@ifnextchar[{\basicsswar}{\basicsswar[67]}}% + +% basic south-south-west arrow with upper name +\def\basicSswar[#1]#2{\SSWAR{#2}{}{#100}}% + +% south-south-west arrow with upper name +\newcommand{\Sswar}{\@ifnextchar[{\basicSswar}{\basicSswar[67]}}% + +% basic south-south-west arrow with lower name +\def\basicsswaR[#1]#2{\SSWAR{}{#2}{#100}}% + +% south-south-west arrow with lower name +\newcommand{\sswaR}{\@ifnextchar[{\basicsswaR}{\basicsswaR[67]}}% + +% basic south-south-west pair of arrows +\def\basicsswbiar[#1]{\SSWBIAR{}{}{#100}}% + +% south-south-west pair of arrows +\newcommand{\sswbiar}{\@ifnextchar[{\basicsswbiar}{\basicsswbiar[67]}}% + +% basic south-south-west pair of arrows with names +\def\basicSswbiar[#1]#2#3{\SSWBIAR{#2}{#3}{#100}}% + +% south-south-west pair of arrows with names +\newcommand{\Sswbiar}{\@ifnextchar[{\basicSswbiar}{\basicSswbiar[67]}}% +\let\sswbiaR=\Sswbiar + +% basic south-south-west pair of adjoint arrows +\def\basicsswadjar[#1]{\SSWADJAR{}{}{#100}}% + +% south-south-west pair of adjoint arrows +\newcommand{\sswadjar}{\@ifnextchar[{\basicsswadjar}{\basicsswadjar[67]}}% + +% basic south-south-west pair of adjoint arrows with names +\def\basicSswadjar[#1]#2#3{\SSWADJAR{#2}{#3}{#100}}% + +% south-south-west pair of adjoint arrows with names +\newcommand{\Sswadjar}{\@ifnextchar[{\basicSswadjar}{\basicSswadjar[67]}}% +\let\sswadjaR=\Sswadjar + +% NORTH-NORTH-WEST ARROWS + +% The following commands produce north-north-west arrows +% of horizontal extent n units + +% \NNWAR{f}{g}{n} draws a north-north-west arrow with names f, g +% and length n units +\newcommand{\NNWAR}[3]{\testdiagrammode% +\Z=#3% +\divide\Z by 2% +\begin{picture}(0,0)% +\put(\Z,-#3){\vector(-1,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \NNWBIAR{f}{g}{n} draws a pair of north-north-west arrows +% with names f,g and length n units +\newcommand{\NNWBIAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\put(-\value{x},-\value{y}){\vector(-1,2){#3}}% +\put(\value{x},\value{y}){\vector(-1,2){#3}}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% \NNWADJAR{f}{g}{n} draws a north-north-west pair of adjoint arrows +% with names f,g and length n units +\newcommand{\NNWADJAR}[3]{\testdiagrammode% +\Y=#3% +\divide\Y by 2% +\Z=#3% +\multiply \Z by 2% +\begin{picture}(0,0)% +\put(\Y,-#3){\begin{picture}(0,0)% +\truex{313}\truey{156}% +\monolength=#3% +\advance\monolength by -\value{x}% +\epilength=#3% +\advance\epilength by \value{x}% +\secondmonolength=\Z% +\advance\secondmonolength by -\value{y}% +\secondepilength=\Z% +\advance\secondepilength by \value{y}% +\put(-\value{x},-\value{y}){\vector(-1,2){#3}}% +\put(-\monolength,\secondepilength){\vector(1,-2){#3}}% +\end{picture}} +\truex{400}\truey{1000}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% The following commands produce north-north-west arrows; +% the default length is 6700 units + +% basic north-north-west arrow +\def\basicnnwar[#1]{\NNWAR{}{}{#100}}% + +% north-north-west arrow +\newcommand{\nnwar}{\@ifnextchar[{\basicnnwar}{\basicnnwar[67]}}% + +% basic north-north-west arrow with upper name +\def\basicNnwar[#1]#2{\NNWAR{#2}{}{#100}}% + +% north-north-west arrow with upper name +\newcommand{\Nnwar}{\@ifnextchar[{\basicNnwar}{\basicNnwar[67]}}% + +% basic north-north-west arrow with lower name +\def\basicnnwaR[#1]#2{\NNWAR{}{#2}{#100}}% + +% north-north-west arrow with lower name +\newcommand{\nnwaR}{\@ifnextchar[{\basicnnwaR}{\basicnnwaR[67]}}% + +% basic north-north-east pair of arrows +\def\basicnnwbiar[#1]{\NNWBIAR{}{}{#100}}% + +% north-north-east pair of arrows +\newcommand{\nnwbiar}{\@ifnextchar[{\basicnnwbiar}{\basicnnwbiar[67]}}% + +% basic north-north-east pair of arrows with names +\def\basicNnwbiar[#1]#2#3{\NNWBIAR{#2}{#3}{#100}}% + +% north-north-east pair of arrows with names +\newcommand{\Nnwbiar}{\@ifnextchar[{\basicNnwbiar}{\basicNnwbiar[67]}}% +\let\nnwbiaR=\Nnwbiar + +% basic north-north-east pair of adjoint arrows +\def\basicnnwadjar[#1]{\NNWADJAR{}{}{#100}}% + +% north-north-east pair of adjoint arrows +\newcommand{\nnwadjar}{\@ifnextchar[{\basicnnwadjar}{\basicnnwadjar[67]}}% + +% basic north-north-east pair of adjoint arrows with names +\def\basicNnwadjar[#1]#2#3{\NNWADJAR{#2}{#3}{#100}}% + +% north-north-east pair of adjoint arrows with names +\newcommand{\Nnwadjar}{\@ifnextchar[{\basicNnwadjar}{\basicNnwadjar[67]}}% +\let\nnwadjaR=\Nnwadjar + +% EAST-EAST-NORTH-EAST ARROWS +% default length: 21100 units + +% \EENEAR{f}{g}{n} draws a east-east-north-east arrow with names f, g +% and length n units +\newcommand{\EENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic east-east-north-east arrow +\def\basiceenear[#1]{\EENEAR{}{}{#100}}% + +% east-east-north-east arrow +\newcommand{\eenear}{\@ifnextchar[{\basiceenear}{\basiceenear[211]}}% + +% basic east-east-north-east arrow with upper name +\def\basicEenear[#1]#2{\EENEAR{#2}{}{#100}}% + +% east-east-north-east arrow with upper name +\newcommand{\Eenear}{\@ifnextchar[{\basicEenear}{\basicEenear[211]}}% + +% basic east-east-north-east arrow with lower name +\def\basiceeneaR[#1]#2{\EENEAR{}{#2}{#100}}% + +% east-east-north-east arrow with lower name +\newcommand{\eeneaR}{\@ifnextchar[{\basiceeneaR}{\basiceeneaR[211]}}% + +% EAST-EAST-SOUTH-EAST ARROWS +% default length: 21100 units + +% \EESEAR{f}{g}{n} draws an east-east-south-east arrow with names f, g +% and length n units +\newcommand{\EESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic east-east-south-east arrow +\def\basiceesear[#1]{\EESEAR{}{}{#100}}% + +% east-east-south-east arrow +\newcommand{\eesear}{\@ifnextchar[{\basiceesear}{\basiceesear[211]}}% + +% basic east-east-south-east arrow with upper name +\def\basicEesear[#1]#2{\EESEAR{#2}{}{#100}}% + +% east-east-south-east arrow with upper name +\newcommand{\Eesear}{\@ifnextchar[{\basicEesear}{\basicEesear[211]}}% + +% basic east-east-south-east arrow with lower name +\def\basiceeseaR[#1]#2{\EESEAR{}{#2}{#100}}% + +% east-east-south-east arrow with lower name +\newcommand{\eeseaR}{\@ifnextchar[{\basiceeseaR}{\basiceeseaR[211]}}% + +% WEST-WEST-NORTH-WEST ARROWs +% default length: 21100 units + +% \WWNWAR{f}{g}{n} draws a west-west-north-west arrow with names f, g +% and length n units +\newcommand{\WWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic west-west-north-west arrow +\def\basicwwnwar[#1]{\WWNWAR{}{}{#100}}% + +% west-west-north-west arrow +\newcommand{\wwnwar}{\@ifnextchar[{\basicwwnwar}{\basicwwnwar[211]}}% + +% basic west-west-north-west arrow with upper name +\def\basicWwnwar[#1]#2{\WWNWAR{#2}{}{#100}}% + +% west-west-north-west arrow with upper name +\newcommand{\Wwnwar}{\@ifnextchar[{\basicWwnwar}{\basicWwnwar[211]}}% + +% basic west-west-north-west arrow with lower name +\def\basicwwnwaR[#1]#2{\WWNWAR{}{#2}{#100}}% + +% west-west-north-west arrow with lower name +\newcommand{\wwnwaR}{\@ifnextchar[{\basicwwnwaR}{\basicwwnwaR[211]}}% + +% WEST-WEST-SOUTH-WEST ARROWS +% default length: 21100 units + +% \WWSWAR{f}{g} draws a west-west-south-west arrow with names f, g +\newcommand{\WWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-1){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic west-west-south-west arrow +\def\basicwwswar[#1]{\WWSWAR{}{}{#100}}% + +% west-west-south-west arrow +\newcommand{\wwswar}{\@ifnextchar[{\basicwwswar}{\basicwwswar[211]}}% + +% basic west-west-south-west arrow with upper name +\def\basicWwswar[#1]#2{\WWSWAR{#2}{}{#100}}% + +% west-west-south-west arrow with upper name +\newcommand{\Wwswar}{\@ifnextchar[{\basicWwswar}{\basicWwswar[211]}}% + +% basic west-west-south-west arrow with lower name +\def\basicwwswaR[#1]#2{\WWSWAR{}{#2}{#100}}% + +% west-west-south-west arrow with lower name +\newcommand{\wwswaR}{\@ifnextchar[{\basicwwswaR}{\basicwwswaR[211]}}% + + +% NORTH-NORTH-NORTH-EAST ARROWS +% default length: 7100 units + +% \NNNEAR{f}{g}{n} draws a north-north-north-east arrow with names f, g +% and length n units +\newcommand{\NNNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(1,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-east arrow +\def\basicnnnear[#1]{\NNNEAR{}{}{#100}}% + +% north-north-north-east arrow +\newcommand{\nnnear}{\@ifnextchar[{\basicnnnear}{\basicnnnear[71]}}% + +% basic north-north-north-east arrow with upper name +\def\basicNnnear[#1]#2{\NNNEAR{#2}{}{#100}}% + +% north-north-north-east arrow with upper name +\newcommand{\Nnnear}{\@ifnextchar[{\basicNnnear}{\basicNnnear[71]}}% + +% basic north-north-north-east arrow with lower name +\def\basicnnneaR[#1]#2{\NNNEAR{}{#2}{#100}}% + +% north-north-north-east arrow with lower name +\newcommand{\nnneaR}{\@ifnextchar[{\basicnnneaR}{\basicnnneaR[71]}}% + +% SOUTH-SOUTH-SOUTH-WEST ARROWS +% default length: 7100 units + +% \SSSWAR{f}{g}{n} draws a south-south-south-west arrow with names f, g +% and length n units +\newcommand{\SSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-1,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-west arrow +\def\basicssswar[#1]{\SSSWAR{}{}{#100}}% + +% south-south-south-west arrow +\newcommand{\ssswar}{\@ifnextchar[{\basicssswar}{\basicssswar[71]}}% + +% basic south-south-south-west arrow with upper name +\def\basicSsswar[#1]#2{\SSSWAR{#2}{}{#100}}% + +% south-south-south-west arrow with upper name +\newcommand{\Ssswar}{\@ifnextchar[{\basicSsswar}{\basicSsswar[71]}}% + +% basic south-south-south-west arrow with lower name +\def\basicssswaR[#1]#2{\SSSWAR{}{#2}{#100}}% + +% south-south-south-west arrow with lower name +\newcommand{\ssswaR}{\@ifnextchar[{\basicssswaR}{\basicssswaR[71]}}% + +% SOUTH-SOUTH-SOUTH-EAST ARROWS +% default length: 7100 units + +% \SSSEAR{f}{g}{n} draws a south-south-south-east arrow with names f, g +% and length n units +\newcommand{\SSSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(1,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-south-south-east arrow +\def\basicsssear[#1]{\SSSEAR{}{}{#100}}% + +% south-south-south-east arrow +\newcommand{\sssear}{\@ifnextchar[{\basicsssear}{\basicsssear[71]}}% + +% basic south-south-south-east arrow with upper name +\def\basicSssear[#1]#2{\SSSEAR{#2}{}{#100}}% + +% south-south-south-east arrow with upper name +\newcommand{\Sssear}{\@ifnextchar[{\basicSssear}{\basicSssear[71]}}% + +% basic south-south-south-east arrow with lower name +\def\basicssseaR[#1]#2{\SSSEAR{}{#2}{#100}}% + +% south-south-south-east arrow with lower name +\newcommand{\ssseaR}{\@ifnextchar[{\basicssseaR}{\basicssseaR[71]}}% + +% NORTH-NORTH-NORTH-WEST ARROWS +% default length: 7100 units + +% \NNNWAR{f}{g}{n} draws a north-north-north-west arrow with names f, g +% and length n units +\newcommand{\NNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=\Y% +\multiply \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-1,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-north-north-west arrow +\def\basicnnnwar[#1]{\NNNWAR{}{}{#100}}% + +% north-north-north-west arrow +\newcommand{\nnnwar}{\@ifnextchar[{\basicnnnwar}{\basicnnnwar[71]}}% + +% basic north-north-north-west arrow with upper name +\def\basicNnnwar[#1]#2{\NNNWAR{#2}{}{#100}}% + +% north-north-north-west arrow with upper name +\newcommand{\Nnnwar}{\@ifnextchar[{\basicNnnwar}{\basicNnnwar[71]}}% + +% basic north-north-north-west arrow with lower name +\def\basicnnnwaR[#1]#2{\NNNWAR{}{#2}{#100}}% + +% north-north-north-west arrow with lower name +\newcommand{\nnnwaR}{\@ifnextchar[{\basicnnnwaR}{\basicnnnwaR[71]}}% + +% NORTH-EAST-EAST-NORTH-EAST ARROWS +% default length: 21500 units + +% \NEENEAR{f}{g}{n} draws a north-east-east-north-east arrow with names f, g +% and length n units +\newcommand{\NEENEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-east-north-east arrow +\def\basicneenear[#1]{\NEENEAR{}{}{#100}}% + +% north-east-east-north-east arrow +\newcommand{\neenear}{\@ifnextchar[{\basicneenear}{\basicneenear[215]}}% + +% basic north-east-east-north-east arrow with upper name +\def\basicNeenear[#1]#2{\NEENEAR{#2}{}{#100}}% + +% north-east-east-north-east arrow with upper name +\newcommand{\Neenear}{\@ifnextchar[{\basicNeenear}{\basicNeenear[215]}}% + +% basic north-east-east-north-east arrow with lower name +\def\basicneeneaR[#1]#2{\NEENEAR{}{#2}{#100}}% + +% north-east-east-north-east arrow with lower name +\newcommand{\neeneaR}{\@ifnextchar[{\basicneeneaR}{\basicneeneaR[215]}}% + +% SOUTH-EAST-EAST-SOUTH-EAST ARROWS +% DEFAULT LENGTH: 21500 UNITS + +% \SEESEAR{f}{g} draws an sout-east-east-south-east arrow with names f, g +% and length n units +\newcommand{\SEESEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-east-south-east arrow +\def\basicseesear[#1]{\SEESEAR{}{}{#100}}% + +% south-east-east-south-east arrow +\newcommand{\seesear}{\@ifnextchar[{\basicseesear}{\basicseesear[215]}}% + +% basic south-east-east-south-east arrow with upper name +\def\basicSeesear[#1]#2{\SEESEAR{#2}{}{#100}}% + +% south-east-east-south-east arrow with upper name +\newcommand{\Seesear}{\@ifnextchar[{\basicSeesear}{\basicSeesear[215]}}% + +% basic south-east-east-south-east arrow with lower name +\def\basicseeseaR[#1]#2{\SEESEAR{}{#2}{#100}}% + +% south-east-east-south-east arrow with lower name +\newcommand{\seeseaR}{\@ifnextchar[{\basicseeseaR}{\basicseeseaR[215]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 21500 units + +% \NWWNWAR{f}{g}{n} draws a north-west-west-north-west arrow with names f, g +% and length n units +\newcommand{\NWWNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-3,2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{y}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-west-north-west arrow +\def\basicnwwnwar[#1]{\NWWNWAR{}{}{#100}}% + +% north-west-west-north-west arrow +\newcommand{\nwwnwar}{\@ifnextchar[{\basicnwwnwar}{\basicnwwnwar[215]}}% + +% basic north-west-west-north-west arrow with upper name +\def\basicNwwnwar[#1]#2{\NWWNWAR{#2}{}{#100}}% + +% north-west-west-north-west arrow with upper name +\newcommand{\Nwwnwar}{\@ifnextchar[{\basicNwwnwar}{\basicNwwnwar[215]}}% + +% basic north-west-west-north-west arrow with lower name +\def\basicnwwnwaR[#1]#2{\NWWNWAR{}{#2}{#100}}% + +% north-west-west-north-west arrow with lower name +\newcommand{\nwwnwaR}{\@ifnextchar[{\basicnwwnwaR}{\basicnwwnwaR[215]}}% + +% SOUTH-WEST-WEST-SOUTH-WEST ARROWS +% default length: 21500 units + +% \SWWSWAR{f}{g}{n} draws a south-west-west-south-west arrow with names f, g +% and length n units +\newcommand{\SWWSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\divide \Z by 3% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-3,-2){#3}}% +\truex{200}\truey{800}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{y}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-west-south-west arrow +\def\basicswwswar[#1]{\SWWSWAR{}{}{#100}}% + +% south-west-west-south-west arrow +\newcommand{\swwswar}{\@ifnextchar[{\basicswwswar}{\basicswwswar[215]}}% + +% basic south-west-west-south-west arrow with upper name +\def\basicSwwswar[#1]#2{\SWWSWAR{#2}{}{#100}}% + +% south-west-west-south-west arrow with upper name +\newcommand{\Swwswar}{\@ifnextchar[{\basicSwwswar}{\basicSwwswar[215]}}% + +% basic south-west-west-south-west arrow with lower name +\def\basicswwswaR[#1]#2{\SWWSWAR{}{#2}{#100}}% + +% south-west-west-south-west arrow with lower name +\newcommand{\swwswaR}{\@ifnextchar[{\basicswwswaR}{\basicswwswaR[215]}}% + + +% NORTH-EAST-NORTH-NORTH-EAST ARROWS +% default length 14300 units + +% \NENNEAR{f}{g}{n} draws a north-east-north-north-east arrow with names f, g +% and length n units +\newcommand{\NENNEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,-\Z){\vector(2,3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic north-east-north-north-east arrow +\def\basicnennear[#1]{\NENNEAR{}{}{#100}}% + +% north-east-north-north-east arrow +\newcommand{\nennear}{\@ifnextchar[{\basicnennear}{\basicnennear[143]}}% + +% basic north-east-north-north-east arrow with upper name +\def\basicNennear[#1]#2{\NENNEAR{#2}{}{#100}}% + +% north-east-north-north-east arrow with upper name +\newcommand{\Nennear}{\@ifnextchar[{\basicNennear}{\basicNennear[143]}}% + +% basic north-east-north-north-east arrow with lower name +\def\basicnenneaR[#1]#2{\NENNEAR{}{#2}{#100}}% + +% north-east-north-north-east arrow with lower name +\newcommand{\nenneaR}{\@ifnextchar[{\basicnenneaR}{\basicnenneaR[143]}}% + +% SOUTH-WEST-SOUTH-SOUTH-WEST ARROWS +% default length: 14300 units + +% \SWSSWAR{f}{g}{n} draws a south-west-south-south-west arrow with names f, g +% and length n units +\newcommand{\SWSSWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,\Z){\vector(-2,-3){#3}}% +\truex{100}\truez{600}% +\put(-\value{x},\value{x}){\makebox(0,\value{z})[r]{${#1}$}}% +\put(\value{x},-\value{z}){\makebox(0,\value{z})[l]{${#2}$}}% +\end{picture}}% + +% basic south-west-south-south-west arrow +\def\basicswsswar[#1]{\SWSSWAR{}{}{#100}}% + +% south-west-south-south-west arrow +\newcommand{\swsswar}{\@ifnextchar[{\basicswsswar}{\basicswsswar[143]}}% + +% basic south-west-south-south-west arrow with upper name +\def\basicSwsswar[#1]#2{\SWSSWAR{#2}{}{#100}}% + +% south-west-south-south-west arrow with upper name +\newcommand{\Swsswar}{\@ifnextchar[{\basicSwsswar}{\basicSwsswar[143]}}% + +% basic south-west-south-south-west arrow with lower name +\def\basicswsswaR[#1]#2{\SWSSWAR{}{#2}{#100}}% + +% south-west-south-south-west arrow with lower name +\newcommand{\swsswaR}{\@ifnextchar[{\basicswsswaR}{\basicswsswaR[143]}}% + +% SOUT-EAST-SOUTH-SOUTH-EAST ARROWS +% default length: 14300 units + +% \SESSEAR{f}{g}{n} draws a south-east-south-south-east arrow with names f, g +% and length n units +\newcommand{\SESSEAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(-\Y,\Z){\vector(2,-3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic south-east-south-south-east arrow +\def\basicsessear[#1]{\SESSEAR{}{}{#100}}% + +% south-east-south-south-east arrow +\newcommand{\sessear}{\@ifnextchar[{\basicsessear}{\basicsessear[143]}}% + +% basic south-east-south-south-east arrow with upper name +\def\basicSessear[#1]#2{\SESSEAR{#2}{}{#100}}% + +% south-east-south-south-east arrow with upper name +\newcommand{\Sessear}{\@ifnextchar[{\basicSessear}{\basicSessear[143]}}% + +% basic south-east-south-south-east arrow with lower name +\def\basicsesseaR[#1]#2{\SESSEAR{}{#2}{#100}}% + +% south-east-south-south-east arrow with lower name +\newcommand{\sesseaR}{\@ifnextchar[{\basicsesseaR}{\basicsesseaR[143]}}% + +% NORTH-WEST-NORTH-NORTH-WEST ARROWS +% default length: 14300 units + +% \NWNNWAR{f}{g}{n} draws a north-west-north-north-west arrow with names f, g +% and length n units +\newcommand{\NWNNWAR}[3]{\testdiagrammode% +\Y=#3% +\divide \Y by 2% +\Z=#3% +\multiply \Z by 3% +\divide \Z by 4% +\begin{picture}(0,0)% +\put(\Y,-\Z){\vector(-2,3){#3}}% +\truex{200}\truez{600}% +\put(\value{x},\value{x}){\makebox(0,\value{z})[l]{${#1}$}}% +\put(-\value{x},-\value{z}){\makebox(0,\value{z})[r]{${#2}$}}% +\end{picture}}% + +% basic north-west-north-north-west arrow +\def\basicnwnnwar[#1]{\NWNNWAR{}{}{#100}}% + +% north-west-north-north-west arrow +\newcommand{\nwnnwar}{\@ifnextchar[{\basicnwnnwar}{\basicnwnnwar[143]}}% + +% basic north-west-north-north-west arrow with upper name +\def\basicNwnnwar[#1]#2{\NWNNWAR{#2}{}{#100}}% + +% north-west-north-north-west arrow with upper name +\newcommand{\Nwnnwar}{\@ifnextchar[{\basicNwnnwar}{\basicNwnnwar[143]}}% + +% basic north-west-north-north-west arrow with lower name +\def\basicnwnnwaR[#1]#2{\NWNNWAR{}{#2}{#100}}% + +% north-west-north-north-west arrow with lower name +\newcommand{\nwnnwaR}{\@ifnextchar[{\basicnwnnwaR}{\basicnwnnwaR[143]}}% + +% HORIZONTAL CURVED ARROWS + +% The following commands produce horizontal curved arrows +% default length: 160 units + +% North\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Necurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(#200,-\value{z}){\shead}% +\put(0,0){\line(0,-1){\value{z}}}\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\east curved arrow +\def\basicnecurvar[#1]{\Necurve{}{#1}} + +% north\east curved arrow +\newcommand{\necurvar}{\@ifnextchar[{\basicnecurvar}{\basicnecurvar[160]}}% + +% basic north\east curved arrow with name +\def\basicNecurvar[#1]#2{\Necurve{#2}{#1}}% + +% north\east curved arrow with name +\newcommand{\Necurvar}{\@ifnextchar[{\basicNecurvar}{\basicNecurvar[160]}}% +\let\necurvaR=\Necurvar + +% North\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Nwcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,\value{x}){\oval(#200,\value{y})[t]}% +\put(0,\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,-1){\value{z}}}% +\put(0,0){\line(0,-1){\value{z}}}% +\put(0,-\value{z}){\shead}% +\end{picture}}}% +\truex{2500}% +\put(0,\value{x}){\makebox(0,0)[b]{${#1}$}}% +\end{picture}}% + +% basic north\west curved arrow +\def\basicnwcurvar[#1]{\Nwcurve{}{#1}} + +% north\west curved arrow +\newcommand{\nwcurvar}{\@ifnextchar[{\basicnwcurvar}{\basicnwcurvar[160]}}% + +% basic north\west curved arrow with name +\def\basicNwcurvar[#1]#2{\Nwcurve{#2}{#1}}% + +% north\west curved arrow with name +\newcommand{\Nwcurvar}{\@ifnextchar[{\basicNwcurvar}{\basicNwcurvar[160]}}% +\let\nwcurvaR=\Nwcurvar + +% South\East curved arrow with name [1] and length [2]x100 units +\newcommand{\Securve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(#200,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\east curved arrow +\def\basicsecurvar[#1]{\Securve{}{#1}} + +% south\east curved arrow +\newcommand{\securvar}{\@ifnextchar[{\basicsecurvar}{\basicsecurvar[160]}}% + +% basic south\east curved arrow with name +\def\basicSecurvar[#1]#2{\Securve{#2}{#1}}% + +% south\east curved arrow with name +\newcommand{\Securvar}{\@ifnextchar[{\basicSecurvar}{\basicSecurvar[160]}}% +\let\securvaR=\Securvar + +% South\West curved arrow with name [1] and length [2]x100 units +\newcommand{\Swcurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(0,-\value{x}){\oval(#200,\value{y})[b]}% +\put(0,-\value{x}){\makebox(0,0){\begin{picture}(#200,0)% +\put(#200,0){\line(0,1){\value{z}}}% +\put(0,0){\line(0,1){\value{z}}}% +\put(0,\value{z}){\nhead}% +\end{picture}}}% +\truex{2500}% +\put(0,-\value{x}){\makebox(0,0)[t]{${#1}$}}% +\end{picture}}% + +% basic south\west curved arrow +\def\basicswcurvar[#1]{\Swcurve{}{#1}} + +% south\west curved arrow +\newcommand{\swcurvar}{\@ifnextchar[{\basicswcurvar}{\basicswcurvar[160]}}% + +% basic south\west curved arrow with name +\def\basicSwcurvar[#1]#2{\Swcurve{#2}{#1}}% + +% south\west curved arrow with name +\newcommand{\Swcurvar}{\@ifnextchar[{\basicSwcurvar}{\basicSwcurvar[160]}}% +\let\swcurvaR=\Swcurvar + +% VERTICAL CURVED ARROWS + +% The following commands produce vertical curved arrows +% default length: 160pt + +% East\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Escurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},0){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\south curved arrow +\def\basicescurvar[#1]{\Escurve{}{#1}} + +% east\south curved arrow +\newcommand{\escurvar}{\@ifnextchar[{\basicescurvar}{\basicescurvar[160]}}% + +% basic east\south curved arrow with name +\def\basicEscurvar[#1]#2{\Escurve{#2}{#1}}% + +% east\south curved arrow with name +\newcommand{\Escurvar}{\@ifnextchar[{\basicEscurvar}{\basicEscurvar[160]}}% +\let\escurvaR=\Escurvar + +% East\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Encurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1400}\truey{2000}\truez{200}% +\put(\value{x},0){\oval(\value{y},#200)[r]}% +\put(\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(-1,0){\value{z}}}% +\put(0,#200){\line(-1,0){\value{z}}}% +\put(-\value{z},#200){\whead}% +\end{picture}}}% +\truex{2500}% +\put(\value{x},0){\makebox(0,0)[l]{${#1}$}}% +\end{picture}}% + +% basic east\north curved arrow +\def\basicencurvar[#1]{\Encurve{}{#1}} + +% east\north curved arrow +\newcommand{\encurvar}{\@ifnextchar[{\basicencurvar}{\basicencurvar[160]}}% + +% basic east\north curved arrow with name +\def\basicEncurvar[#1]#2{\Encurve{#2}{#1}}% + +% east\north curved arrow with name +\newcommand{\Encurvar}{\@ifnextchar[{\basicEncurvar}{\basicEncurvar[160]}}% +\let\encurvaR=\Encurvar + +% West\South curved arrow with name [1] and length [2]x100 units +\newcommand{\Wscurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(0,#200){\line(1,0){\value{z}}}% +\put(\value{z},0){\ehead}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\south curved arrow +\def\basicwscurvar[#1]{\Wscurve{}{#1}} + +% west\south curved arrow +\newcommand{\wscurvar}{\@ifnextchar[{\basicwscurvar}{\basicwscurvar[160]}}% + +% basic west\south curved arrow with name +\def\basicWscurvar[#1]#2{\Wscurve{#2}{#1}}% + +% west\south curved arrow with name +\newcommand{\Wscurvar}{\@ifnextchar[{\basicWscurvar}{\basicWscurvar[160]}}% +\let\wscurvaR=\Wscurvar + +% West\North curved arrow with name [1] and length [2]x100 units +\newcommand{\Wncurve}[2]% +{\testdiagrammode\begin{picture}(0,0)% +\truex{1300}\truey{2000}\truez{200}% +\put(-\value{x},0){\oval(\value{y},#200)[l]}% +\put(-\value{x},0){\makebox(0,0){\begin{picture}(0,#200)% +\put(0,0){\line(1,0){\value{z}}}% +\put(\value{z},#200){\ehead}% +\put(0,#200){\line(1,0){\value{z}}}% +\end{picture}}}% +\truex{2400}% +\put(-\value{x},0){\makebox(0,0)[r]{${#1}$}}% +\end{picture}}% + +% basic west\north curved arrow +\def\basicwncurvar[#1]{\Wncurve{}{#1}} + +% west\north curved arrow +\newcommand{\wncurvar}{\@ifnextchar[{\basicwncurvar}{\basicwncurvar[160]}}% + +% basic west\north curved arrow with name +\def\basicWncurvar[#1]#2{\Wncurve{#2}{#1}}% + +% west\north curved arrow with name +\newcommand{\Wncurvar}{\@ifnextchar[{\basicWncurvar}{\basicWncurvar[160]}}% +\let\wncurvaR=\Wncurvar + +\catcode`\@=12 diff --git a/macros/generic/diagrams/borceux/diagram/MultipleArrows b/macros/generic/diagrams/borceux/diagram/MultipleArrows new file mode 100644 index 0000000000..9ac6aa2f85 --- /dev/null +++ b/macros/generic/diagrams/borceux/diagram/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 diff --git a/macros/generic/diagrams/borceux/user-guides/Diagram_Mode_d_Emploi b/macros/generic/diagrams/borceux/user-guides/Diagram_Mode_d_Emploi new file mode 100644 index 0000000000..4e28d199be --- /dev/null +++ b/macros/generic/diagrams/borceux/user-guides/Diagram_Mode_d_Emploi @@ -0,0 +1,588 @@ +\documentstyle{article} + +\textheight532pt +\textwidth355pt +\footskip15pt + +\hoffset-35mm +\voffset-35mm + +\language=1 +\hyphenation{dia-gram-me} +\diagramlabel{Diagramme} + +\title{Mode d'emploi de {\em Diagram 3}\thanks{Par rapport aux versions~1 et +~2, le dessin des flches a t amlior, la varit de directions et de +flches disponibles a t plus que double, toutes les flches pour diagrammes +admettent un argument optionnel de longueur, la frappe des diagrammes a t +simplifie, des messages d'erreur et d'aide ont t introduits. Pour compiler +avec {\em Diagram~3}, des documents prpars avec les versions~1 ou~2, lire le +fichier {\em OldDiagram} aprs le fichier {\em Diagram}.}} +\author{Francis Borceux, Louvain-la-Neuve} + +\font\bldfc=cmmib10 +\def\boldface#1{\mbox{\bldfc#1}} + +\newcommand{\XA}% +{\truex{300}% +\begin{picture}(0,0)% +\put(0,0){\circle{\value{x}}}% +\end{picture}} + +\newcommand{\XB}% +{\truex{500}% +\begin{picture}(0,0)% +\put(0,0){\circle*{\value{x}}}% +\end{picture}} + +\newcommand{\V}[3]{\cross{\XB}{\movevertex(#1,#2){\scriptstyle#3}}} + +\begin{document} + +\maketitle + +\section{A propos de {\em Diagram}} + +Le fichier {\em Diagram} ralise la construction de diagrammes du type de ceux +apparaissant dans les textes de thorie des catgories. L'utilisateur donne la +liste des objets et des flches constituant le diagramme, comme s'il composait +une matrice, et le programme prend soin de calculer les dimensions des flches +et de raliser la mise en page. Tout ce que l'utilisateur doit faire en ce qui +concerne les flches est prciser leur type (monomorphisme, paire de flches, +\ldots) et leur direction (nord, sud-est,\ldots): 12 types de flches et 32 +directions sont disponibles; voir figures~1 et~3 pour des listes exhaustives. + +Un fichier {\em MultipleArrows} existe galement: il produit des flches +triples, quadruples et quintuples, parallles ou adjointes. La taille de ces +lments est telle que de svres restrictions s'appliquent ceux-ci. + +{\em Diagram} fait un usage abondant des commandes \LaTeX\ et ne peut donc +fonctionner sans \LaTeX. + +Certaines implmentations de \TeX, surtout celles limites $2^{16}$ mots de +m\-moi\-re, sont incapables de manipuler {\em Diagram}. Pour ces situations, +deux fichiers rduits de macros ont t crs; la restriction s'applique +uniquement aux types de flches disponibles. +\begin{itemize} +\item {\em MicroDiagram} ne dessine que des flches simples; +\item {\em MiniDiagram} dessine des flches simples, des paires de flches et +des flches adjointes. +\end{itemize} +La restriction est d'ailleurs plus subtile, car les flches sont produites ici +d'une manire plus conomique. + +Compiler de grands diagrammes requiert beaucoup de mmoire \TeX; si vous tes +fortement limit cet gard, esssayez de produire ces diagrammes commes +documents spars. Pour conomiser de la mmoire, vous pouvez aussi supprimer +du fichier les macros que vous n'envisagez pas d'utiliser. Ne copiez pas des +macros de {\em Diagram} vers {\em MiniDiagram} ou {\em MicroDiagram}: cela ne +fonctionnerait pas. + +{\em Diagram} a t conu pour fournir des rsultats optimaux sur les +imprimantes avec une rsolution allant jusque 300dpi. Dans le cas d'imprimantes + plus haute rsolution, il convient d'adapter en consquence le paramtre {\em +printerresolution} donn comme premire instruction du fichier {\em Diagram}. +Notez en passant que diminuer ce paramtre est une autre manire d'conomiser +de la mmoire. + +\section{Les flches dans les formules} + +Des flches peuvent tre introduites dans les formules, donc dans une ligne de +texte entre simples dollars ou dans une formule hors-texte, entre doubles +dollars. La commande est la mme dans les deux cas, mais l'effet produit est +diffrent. La varit de flches disponibles est donne la figure~1. +\begin{figure} +\settextarrowlength{45} +\begin{center} +\begin{tabular}{|l|c|l|} +\hline +{\bf Nom}&{\bf Flche}&{\bf Code}\\ +\hline\hline +flche simple&$\ar$&ar\\ +flche pointille&$\dotar$&dotar\\ +distributeur&$\dist$&dist\\ +monomorphisme&$\mono$&mono\\ +pimorphisme&$\epi$&epi\\ +bimorphisme&$\bimo$&bimo\\ +isomorphisme&$\iso$&iso\\ +galit&$\eql$&eql\\ & & \\ +paire de flches&$\biar$&biar\\ & & \\ +flches adjointes&$\adjar$&adjar\\ & & \\ +paire de distributeurs&$\bidist$&bidist\\ & & \\ +distributeurs adjoints&$\adjdist$&adjdist\\ +\hline +\end{tabular} +\hspace{5mm} +\begin{minipage}{30mm} +Les codes {\em iso, dist, bidist, adjdist} sont g\-n\-ri\-ques: +les mar\-ques $\cong$, $\circ$ peu\-vent tre chan\-ges a tout mo\-ment +par les ins\-truc\-tions \verb+\isomark{...}+, \verb+\distmark{...}+ +o \verb+...+ sont les nou\-vel\-les mar\-ques. Les mar\-ques par d\-faut sont +\verb+\cong+ et \verb+\distcircle+. +\end{minipage} +\end{center} +\caption{Les divers types de flches.} +\settextarrowlength{20} +\end{figure} +\begin{itemize} +\item Pour produire un type donn de flche dans le sens direct (comme la +figure~1), il suffit de frapper un {\em backslash} suivi du code pour ce type +de flche: donc +\verb+$f \colon A \mono B$+ produit $f \colon A \mono B$. +\item Pour produire un type donn de flche dans le sens oppos, frappez une +commande commenant par \verb+\bk+ et se terminant par le code pour ce type de +flche: donc +\verb+$g \colon B \bkepi C$+ produit $g \colon B \bkepi C$. +\item Pour donner un nom l'une des flches prcdentes, il suffit de frapper +en majuscule la premire lettre de la commande et de donner le nom comme +argument: donc +\verb+$C \Dist h D$+ produit $C \Dist h D$. +Bien entendu, dans le cas de doubles flches, il faut donner deux noms: +d'abord celui de la flche suprieure puis celui de la flche infrieure: +par exemple +\verb+$D \Bkadjar ij E$+ produit $D \Bkadjar ij E$. Comme d'habitude, quand les +noms ne sont pas des caractres uniques, utilisez des accolades pour les +dlimiter. +\end{itemize} +Pour vous permettre de juger la diffrence entre les flches +dans le texte et les flches hors-texte, voici les flches prcdentes +produites hors-texte +$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$ +via les commandes +\begin{verbatim} +$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$ +\end{verbatim} + +La longueur par dfaut d'une flche dans le texte est 20pt et son nom ventuel +est produit en taille {\em scriptstyle}; la longueur par dfaut d'une flche +hors-texte est 30pt et son nom ventuel est produit en taille {\em textstyle}. +Ces longueurs par dfaut peuvent tre modifies tout moment via des +instructions +\begin{verbatim} +\settextarrowlength{25} +\setdisplayarrowlength{40} +\end{verbatim} +o 25 et 40 expriment les nouvelles longueurs en points. + +\section{Construire un diagramme} + +Pour construire un diagramme bi-dimensionnel, imaginez un rseau de points, +visualis par des cercles et des ``boulets'' dans la figure~2: +\begin{figure} +\begin{diagram} +\XB¤\XA¤\XB¤\XA¤\XB¤\XA¤\XB¤¤ +\XA¤\cross{\XA}{\sear}¤\cross{\XA}{\esear}¤\cross{\XA}{\eesear}¤\XA¤\XA¤\XA¤¤ +\XB¤\cross{\XA}{\ssear}¤\XB¤\cross{\XA}{\ear}¤\XB¤\cross{\XA}{\ear}¤\XB¤¤ +\XA¤\XA¤\cross{\XA}{\sar}¤\XA¤\cross{\XA}{\sar}¤\XA¤\cross{\XA}{\sar}¤¤ +\XB¤\XA¤\XB¤\cross{\XA}{\ear}¤\XB¤\cross{\XA}{\ear}¤\XB¤¤ +\end{diagram} +\caption{Conception d'un diagramme bi-dimensionnel.} +\end{figure} +les boulets indiquent les points du rseau o l'on peut s'attendre trouver un +objet. Chaque objet et chaque flche est attach par son centre en un point du +rseau. Il suffit maintenant d'numrer les lments, ligne par ligne et +colonne par colonne, comme pour une matrice; en particulier quand tous les +lments non vides d'une ligne ont t numrs, on peut passer directement +la ligne suivante. Tous les lments sont traits automatiquement en mode +mathmatique. Le programme prend soin de choisir correctement la longueur de +chaque flche. + +Un objet se frappe comme n'importe quelle formule mathmatique. Les rgles pour +introduire une flche sont compltement analogues celles de la section~2: les +divers types de flches sont de nouveau ceux de la figure ~1 tandis que les +directions possibles et leur code sont donnes la figure~3. +\begin{figure} +\begin{diagram}[60] +\XB¤\XA¤\V{0}{10}{nwnnw}¤\XA¤\V{0}{10}{nnnw}¤\XA¤\XB¤\XA¤\V{0}{10}{nnne}¤ +\XA¤\V{0}{10}{nenne}¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle nwwnw$}}¤\XA¤\XB¤\XA¤ +\V{-5}{10}{\boldface{nnw}}¤\XA¤\XB¤\XA¤\V{5}{10}{\boldface{nne}}¤\XA¤\XB¤\XA¤ +\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +neene$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\cross{\XA}{\nwnnwar}¤\cross{\XA}{\nnnwar}¤\XA¤\cross{\XA}{\nnnear}¤ +\cross{\XA}{\nennear}¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +wwnw$}}¤\XA¤\V{-10}{10}{\boldface{wnw}}¤\cross{\XA}{\nwwnwar}¤ +\V{-5}{10}{\boldface{nw}}¤\cross{\XA}{\bold\nnwar}¤\V{0}{10}{\boldface{n}}¤ +\cross{\XA}{\bold\nnear}¤\V{5}{10}{\boldface{ne}}¤\cross{\XA}{\neenear}¤ +\V{10}{10}{\boldface{ene}}¤\XA¤\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +eene$}}¤¤ +\XA¤\XA¤\XA¤\cross{\XA}{\wwnwar}¤\cross{\XA}{\bold\wnwar}¤\cross{\XA}{\bold\nwar}¤ +\cross{\XA}{\bold\nar}¤\cross{\XA}{\bold\near}¤\cross{\XA}{\bold\enear}¤ +\cross{\XA}{\eenear}¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\XB¤\XA¤\V{-10}{0}{\boldface{w}}¤\cross{\XA}{\bold\war}¤\XB¤ +\cross{\XA}{\bold\ear}¤\V{10}{0}{\boldface{e}}¤\XA¤\XB¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\cross{\XA}{\wwswar}¤\cross{\XA}{\bold\wswar}¤\cross{\XA}{\bold\swar}¤ +\cross{\XA}{\bold\sar}¤\cross{\XA}{\bold\sear}¤\cross{\XA}{\bold\esear}¤ +\cross{\XA}{\eesear}¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +wwsw$}}¤\XA¤\V{-10}{-10}{\boldface{wsw}}¤\cross{\XA}{\swwswar}¤ +\V{-5}{-10}{\boldface{sw}}¤\cross{\XA}{\bold\sswar}¤\V{0}{-10}{\boldface{s}}¤ +\cross{\XA}{\bold\ssear}¤\V{5}{-10}{\boldface{se}}¤\cross{\XA}{\seesear}¤ +\V{10}{-10}{\boldface{ese}}¤\XA¤\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +eese$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\cross{\XA}{\swsswar}¤\cross{\XA}{\ssswar}¤\XA¤\cross{\XA}{\sssear}¤ +\cross{\XA}{\sessear}¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +swwsw$}}¤\XA¤\XB¤\XA¤\V{-5}{-10}{\boldface{ssw}}¤\XA¤\XB¤\XA¤ +\V{5}{-10}{\boldface{sse}}¤\XA¤\XB¤\XA¤ +\V{10}{0}{\makebox[0pt][l]{$\scriptstyle seese$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\V{0}{-10}{swssw}¤\XA¤\V{0}{-10}{sssw}¤\XA¤\XB¤\XA¤\V{0}{-10}{ssse}¤ +\XA¤\V{0}{-10}{sesse}¤\XA¤\XB¤¤ +\end{diagram} +\caption{Les 32 directions de flches dans un diagramme.} +\end{figure} +Prenant une certaine libert avec la gographie et la trigonomtrie, +les 32 directions considres ont reu les noms habituels dans +la rose des vents. +\begin{itemize} +\item Pour produire un type de flche dans une direction donne, frappez un +{\em backslash} suivi du code de la direction et du code de la flche. +Par exemple +\verb+\nemono+ founit un monomorphisme orient au nord-est. +\item Pour mettre un nom au-dessus d'une flche, frappez la premire lettre de +la commande en majuscule et donnez le nom comme argument. Par exemple +\verb+\Ssedist f+ fournit un distributeur $f$ orient au sud-sud-est. Bien +entendu dans le cas de doubles flches il faut donner deux noms: d'abord celui +de la flche suprieure puis celui de la flche infrieure. Dans le cas de +flches verticales, le nom apparat gauche de la flche. +\item La procdure pour mettre un nom en-dessous d'une flche est analogue: +frappez cette fois la dernire lettre de la commande en majuscule et donnez le +nom comme argument. Donc \verb+\wbimO f+ produit un bimorphisme $f$ orient +l'ouest. Dans le cas de flches verticales, le nom apparat cette fois +droite. Pour les doubles flches, les deux procdures pour insrer les noms +sont quivalentes. +\end{itemize} +Les 12 types de flches de la figure~1 existent dans les 16 directions +principales, imprimes en gras la figure~3; dans les 16 autres directions, +seules les flches simples existent. + +Il reste expliquer la syntaxe pour frapper un diagramme. C'est simplement +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\end{diagram} +\end{verbatim}% +\endgroup% +\noindent o \verb+...+ indiquent les lments successifs. Donc un simple \S\ +est le dlimiteur entre deux lments d'une mme ligne, tandis qu'un double +\S\S\ indique la fin d'une ligne\footnote{Si l'utilisation du symbole \S\ vous +cause un problme, remplacez-le par n'importe quel symbole que vous ne risquez +gure d'utiliser dans un diagramme, par exemple ?; vous pouvez effectuer ce +changement de manire globale et automatique dans le fichier {\em Diagram}.}. Il +est impratif de frapper le double \S\S\ la fin de la dernire ligne et rien ne +peut se trouver entre ce double \S\S\ et l'instruction \verb+\end{diagram}+ (il +y a une seule exception, expose dans la section~6). N'oubliez pas un espace +blanc pour indiquer un lment vide, car deux \S\S\ conscutifs seraient +interprts comme la fin de la ligne. Plusieurs blancs sont, comme toujours, +quivalents un seul. + + +Donc le diagramme~1, +\begin{floatingdiagram} +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{floatingdiagram} +qui a exactement la forme voque par la figure ~2, est produit +par les instructions suivantes: +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram} +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{diagram} +\end{verbatim}% +\endgroup% + +Il existe un second environnement, parfaitement analogue, pour produire des +diagrammes; il prend la forme +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{floatingdiagram} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\end{floatingdiagram} +\end{verbatim}% +\endgroup% +\noindent Comme son nom l'indique, le diagramme est cette fois introduit comme +corps flottant et se trouve numrot automatiquement (cf.~diagrammes~1 ~3). Le +choix par dfaut est de numroter successivement les diagrammes travers tout +le document. Vous pouvez prfrer un numro 3.12 pour, par exemple, le douzime +diagramme du chapitre~3 (dans un style avec des chapitres!). Ceci s'obtient par +l'instruction +\begin{verbatim} +\setdiagramcounter{chapter} +\end{verbatim} +o bien entendu {\em chapter} peut tre remplac par tout autre niveau de +sectionnement: {\em part, section,\ldots} Pour des textes rdigs dans une +autre langue que l'anglais, vous pouvez traduire le mot {\em Diagram} +prcdant le numro en donnant, par exemple, l'instruction +\begin{verbatim} +\diagramlabel{Diagramme} +\end{verbatim} +n'importe o dans le texte, mais pas l'intrieur d'un diagramme. + +Chaque diagramme, flottant ou non, peut en outre recevoir une lgende. +Cela se fait via une instruction +\begin{verbatim} +\diagramcaption{...} +\end{verbatim} +qui peut se donner n'importe o dans le diagramme, mais avant les derniers +\S\S. Dans le cas d'un diagramme flottant, cette lgende complte la +numrotation automatique, comme au diagramme~4. + +\section{Modifications de tailles} + +Le pas du rseau formel de points sous-tendant un diagramme est de 40 units, +o l'unit par dfaut est le point. Un facteur d'chelle peut tre +appliqu cette valeur par dfaut, via une instruction +\begin{verbatim} +\setdefaultscale{75} +\end{verbatim} +(facteur d'chelle 75\%); cette instruction s'applique tous les diagrammes +ul\-t\-rieurs et doit tre donne en dehors de tout environnement {\em +diagram} ou {\em floatingdiagram}. Si vous souhaitez appliquer un facteur +d'chelle un seul diagramme, donnez ce facteur d'chelle comme argument +optionnel de l'environnement correspondant; par exemple +\begin{verbatim} +\begin{diagram}[125] +........ +\end{diagram} +\end{verbatim} +pour un agrandissement de 125\%, et de manire analogue pour les diagrammes +flottants. Le facteur d'chelle donn ainsi pour un diagramme spcifique se +subsitue la valeur par dfaut en vigueur, juste le temps du digramme +concern. Par exemple le digramme~1 est l'chelle 100\% et le diagramme~2 +l'chelle 75\%. Observez l'effet prcis d'un tel facteur d'chelle, qui n'est +en rien une homthtie brutale. +\begin{floatingdiagram}[75] +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{floatingdiagram} + +Pour motiver les notions suivantes, considrons la conception d'un diagramme +tri-dimensionnel, comme la figure~4. Comparez tout d'abord la dispositon +des ``boulets'' par rapport celle de la figure~2. +\begin{figure} +\begin{diagram}[50] +\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\XA¤¤ +\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤¤ +\cross{\XA}{\sar[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA + ¤\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤ + ¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤\XA¤\cross{\XA}{\sar[130]}¤¤ +\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤¤ +\XA¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤¤ +\end{diagram} +\caption{Conception d'un diagramme tri-dimensionnel} +\end{figure} +Dans ce cas non seulement il faut ``croiser'' des flches en un mme point du +rseau formel, mais il faut aussi considrer des flches traversant plusieurs +points du rseau avant d'atteindre les objets qu'elles relient. En fait {\em +Diagram} suppose toujours qu'une flche relie les deux points adjacents du +rseau dans la direction de la flche. Si ce n'est pas le cas, c'est vous de +dterminer la longueur de la flche correspondante. + +Pour imposer une longueur spcifique une flche d'un diagramme, donnez +l'tendue correspondante de la flche comme argument optionnel\footnote{Cet +argument doit imprativement tre un nombre entier positif; toute autre chose, y +compris la valeur d'un compteur, troublerait profondment \TeX. Les flches +inclure dans le texte (section~2) n'admettent pas cet argument optionnel.}: +l'tendue d'une flche horizontale ou verticale est sa longueur; l'tendue des +autres flches est la longueur de leur projection horizontale (voir le manuel +\LaTeX, {\em Picture environment}, pour de plus amples dtails). Donc +\verb+\Near[60]f+ dessine une flche $f$ d'tendue 60 units, oriente au +nord-est. Voici les valeurs par dfaut des tendues des diverses flches: 50 +dans les directions n, s, e, w; 59 dans les directions ne, nw, se, sw; 133 dans +les directions ene, ese, wnw, wsw; 67 dans les directions nne, sse, nnw, ssw; +211 dans les directions eene, eese, wwnw, wwsw; 71 dans les directions nnne, +ssse, nnnw, sssw; 215 dans les direction neene, seese, nwwnw, swwsw; 143 dans +les directions nenne, sesse, nwnnw, swssw. Dans la plupart des cas, vous +obtiendrez l'tendue requise en augmentant la valeur par dfaut d'autant de fois +40 que la flche traverse de points supplmentaires du rseau. + +En ce qui concerne les flches ``croises'', la commande +\begin{verbatim} +\cross{element 1}{element 2} +\end{verbatim} +vous permet d'introduire simultanment {\em element 1} et {\em element 2} +en un mme point du rseau, sans perturber la construction gnrale +du diagramme; ces deux {\em elements} peuvent tre indiffremment des +objets ou des flches. +Le diagramme~3, conu la figure~4, peut donc s'obtenir comme +\begingroup +\catcode`\¤=\active\def¤{{\S}} +\begin{verbatim} +\begin{floatingdiagram}[50] +A¤ ¤\ear[130]¤ ¤B¤ ¤\ear[130]¤ ¤C¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear ¤¤ +\sar[130]¤ ¤D¤ ¤\cross{\ear[130]}{\sar[130]}¤ + ¤E¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤F¤¤ ¤¤ +G¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤H¤ + ¤\cross{\ear[130]}{\sar[130]}¤ ¤I¤ ¤\sar[130]¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear¤¤ +¤ ¤J¤ ¤\ear[130]¤ ¤K¤ ¤\ear[130]¤ ¤L¤¤ +\end{floatingdiagram} +\end{verbatim} +\endgroup +\begin{floatingdiagram}[50] +A¤ ¤\ear[130]¤ ¤B¤ ¤\ear[130]¤ ¤C¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear ¤¤ +\sar[130]¤ ¤D¤ ¤\cross{\ear[130]}{\sar[130]}¤ + ¤E¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤F¤¤ ¤¤ +G¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤H¤ + ¤\cross{\ear[130]}{\sar[130]}¤ ¤I¤ ¤\sar[130]¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear¤¤ +¤ ¤J¤ ¤\ear[130]¤ ¤K¤ ¤\ear[130]¤ ¤L¤¤ +\end{floatingdiagram} + +Enfin vous pouvez modifier l'paisseur du trait d'une flche en frappant +d'abord la commande \verb+\bold+; donc \verb+\bold\nar+ produit une flche +grasse oriente au nord. Cette option \verb+\bold+ est supprime +automatiquement par le symbole \S\ suivant; vous pouvez aussi l'annuler plus +tt (par exemple dans une commande \verb+\cross+) par l'instruction +\verb+\unbold+. Voyez la figure~3 pour des exemples de flches grasses. + + +\section{Les flches courbes} + +{\em Diagram} fournit galement huit flches courbes pouvant tre utilises +pour relier des points distants le long d'un bord d'un diagramme; +le code pour une flche courbe est {\em curvar}. Ces flches sont prsentes +la figure ~5, l'chelle 50\%, +\begin{figure} +\begin{diagram}[50] +\cdot¤\ear¤\cross{\XB}{\Necurvar{ne}}¤\ear¤\cdot¤ ¤ ¤ ¤ ¤ +\cdot¤\ear¤\cross{\XB}{\Nwcurvar{nw}}¤\ear¤\cdot¤¤ +\sar¤ ¤\sar¤ ¤\sar¤ ¤ ¤ ¤ ¤\sar¤ ¤\sar¤ ¤\sar¤¤ +\cross{\XB}{\Wncurvar{wn}}¤\ear¤\cdot¤\ear¤\cross{\XB}{\Escurvar{es}}¤ ¤ ¤ ¤ ¤ +\cross{\XB}{\Wscurvar{ws}}¤\ear¤\cdot¤\ear¤\cross{\XB}{\Encurvar{en}}¤¤ +\sar¤ ¤\sar¤ ¤\sar¤ ¤ ¤ ¤ ¤\sar¤ ¤\sar¤ ¤\sar¤¤ +\cdot¤\ear¤\cross{\XB}{\Swcurvar{sw}}¤\ear¤\cdot¤ ¤ ¤ ¤ ¤ +\cdot¤\ear¤\cross{\XB}{\Securvar{se}}¤\ear¤\cdot¤¤ +\spacing(15,0,15) +\end{diagram} +\caption{Les huit flches courbes.} +\end{figure} +avec les codes de direction correspondants. La premire lettre du code de +direction indique la position de la flche par rapport au diagramme; la seconde +lettre prcise l'orientation globale de la flche. Ainsi \verb+\wscurvar+ +dessine une flche courbe, l'ouest du diagramme, oriente au sud. Comme pour +les autres flches, une premire (ou dernire) lettre majuscule permet +d'affubler la flche d'un nom. + +Les flches courbes sont des exemples typiques d'lments qui sont +g\-n\-ra\-le\-ment introduits via la commande \verb+\cross+ de la section~4, en +un point du rseau partag avec un objet ou une autre flche. Dans la figure~5, +les ``boulets'' indiquent le centre formel des flches courbes, c'est--dire le +point du rseau en lequel elles sont attaches. + +La longueur par dfaut des flches courbes est 160 units, fournissant la +situation de la figure~5. Comme les autres flches introduites dans un +diagramme, une longueur arbitraire peut tre impose comme premier argument +optionnel. + +Les flches courbes sont galement incluses dans {\em MiniDiagram} et {\em +MicroDiagram}. + + +\section{Corrections d'espacements} + +{\em Diagram} dtermine les dimensions d'un diagramme en comptant le nombre de +lignes et de colonnes. Quand les dimensions relles diffrent sensiblement de +celles estimes par ce procd, par exemple quand vous introduisez des flches +courbes le long d'un diagramme, une correction d'espacement peut tre +ncessaire. Elle se ralise via l'instruction \verb+\spacing(t,b,l)+ qui doit +im\-p\-ra\-ti\-ve\-ment tre donne entre les derniers \S\S\ et l'instruction +\verb+\end{diagram}+ (ou \verb+\end{floatingdiagram}+). Cette +commande\footnote{N'abbrviez pas cette commande, cela troublerait profondment +\TeX.} ajoute un espacement de $t$ points au dessus du diagramme, $l$ points +gauche et $b$ points en dessous. $t$, $l$, $b$ sont des entiers positifs ou +ngatifs. + +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram}[80] +\diagramcaption{What a nice diagram!} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\spacing(10,-15,10) +\end{diagram} +\end{verbatim}% +\endgroup% + +L'usage de la commande \verb+\cross+ peut provoquer des collisons +entre une flche et le nom d'une autre flche. Ceci et d'autres situations +inhabituelles peuvent tre corriges par les instructions suivantes, +qui ne perturbent pas la construction gnrale du diagramme. +\begin{itemize} +\item \verb+\movename(n,m){f}+ dplace le nom $f$ d'une flche $n$ points vers +la droite et $m$ points vers le haut. +\item \verb+\movearrow(n,m){\arrow}+ dplace la flche \verb+\arrow+ (et son +nom ventuel) $n$ points vers la droite et $m$ points vers le haut. +\item +\verb+\movevertex(n,m){XXX}+ dplace l'objet $XXX$ $n$ points vers la droite et +$m$ points vers le haut. +\item \verb+\movevertexleft{XXX}+ dplace un trop long objet $XXX$ situ +gauche d'un diagramme de sorte que la flche horizontale suivante garde une +longueur maximale. +\item \verb+\movevertexright{XXX}+ dplace un trop long objet $XXX$ +situ droite d'un diagramme de sorte que la flche horizontale +prcdente garde une longueur maximale. +\end{itemize} + +Par exemple, le diagramme~4 +\begin{floatingdiagram} +(A\oplus B)\otimes(C\oplus D) ¤ \Ear f¤ X\oplus V ¤¤ +\Sar g¤ ¤ \saR h¤¤ +Y\oplus W ¤ \eaR i¤ (E\oplus F)\otimes(G\oplus H) ¤¤ +\movevertexleft{(A\oplus B)\otimes(C\oplus D)} ¤ \Ear f¤ X\oplus V ¤¤ +\Sar g¤ ¤ \saR h¤¤ +Y\oplus W ¤ \eaR i¤ \movevertexright{(E\oplus F)\otimes(G\oplus H)} +\diagramcaption{Ajustements automatiques et manuels.} ¤¤ +\end{floatingdiagram} +a t obtenu en frappant +\begingroup +\catcode`\¤=\active\def¤{{\S}} +\begin{verbatim} +\begin{floatingdiagram} +(A\oplus B)\otimes(C\oplus D)¤\Ear f¤X\oplus V¤¤ +\Sar g¤ ¤\saR h¤¤ +Y\oplus W¤\eaR i¤(E\oplus F)\otimes(G\oplus H)¤¤ +\movevertexleft{(A\oplus B)\otimes(C\oplus D)}¤\Ear f¤X\oplus V¤¤ +\Sar g¤ ¤\saR h¤¤ +Y\oplus W¤\eaR i¤\movevertexright{(E\oplus F)\otimes(G\oplus H)} +\diagramcaption{Ajustements automatiques et manuels.}¤¤ +\end{floatingdiagram} +\end{verbatim} +\endgroup +Le carr suprieur est donc produit automatiquement par {\em Diagram} +tandis que le carr infrieur a t ajust par l'utilisateur. A vous de +choisir.\vfill + +\mbox{}\hfill{\footnotesize An English version of this user's guide is also +available.} + + +\end{document} diff --git a/macros/generic/diagrams/borceux/user-guides/Diagram_Read_Me b/macros/generic/diagrams/borceux/user-guides/Diagram_Read_Me new file mode 100644 index 0000000000..f15aefe8e4 --- /dev/null +++ b/macros/generic/diagrams/borceux/user-guides/Diagram_Read_Me @@ -0,0 +1,579 @@ +\documentstyle{article} + +\textheight520pt +\textwidth349pt +\footskip15pt + +\hoffset-35mm +\voffset-35mm + +\title{User's guide for {\em Diagram 3}\thanks{With respect +to versions 1 and 2, the shape of arrows has been improved, the variety of +directions and arrows available has been more than doubled, all diagram arrows +admit an optional length argument, the typing of diagrams has been shortened, error +and help messages have been introduced. To typeset with {\em Diagram~3}, diagrams +prepared with versions~1 or~2, read the file {\em OldDiagram} after the file {\em +Diagram}.}} +\author{Francis Borceux, Louvain-la-Neuve} + +\font\bldfc=cmmib10 +\def\boldface#1{\mbox{\bldfc#1}} + +\newcommand{\XA}% +{\truex{300}% +\begin{picture}(0,0)% +\put(0,0){\circle{\value{x}}}% +\end{picture}} + +\newcommand{\XB}% +{\truex{500}% +\begin{picture}(0,0)% +\put(0,0){\circle*{\value{x}}}% +\end{picture}} + +\newcommand{\V}[3]{\cross{\XB}{\movevertex(#1,#2){\scriptstyle#3}}} + +\begin{document} + +\maketitle + +\section{The {\em Diagram} macros} + +The {\em Diagram macros} realize the construction of diagrams as +those appearing in category theory texts. The user gives the list +of vertices and arrows to be included, just as when composing a +matrix, and the program takes care of computing the dimensions of +the arrows and realizing the pagesetting. All the user has to do +about the arrows is precising their type (monomorphism, pair of +adjoint arrows,\ldots) and their direction (north, +south-east,\ldots): 12 types and 32 directions are available; see +figures~1 and~3 for exhaustive lists. + +A file {\em MultipleArrows} exists, producing additional +triple, quadruple and quintuple arrows, parallel or adjoint, but +the size of those pictures is so big that severe restrictions apply +to them. + +The {\em Diagram macros} make a big use of \LaTeX\ commands and +cannot work without \LaTeX\ being loaded. + +Some small implementations of \TeX, essentially those limited to +$2^{16}$ words of memory, are unable to handle the {\em Diagram +macros}. For those cases, two levels of restricted files have been +created, where the restriction applies just to the number of types +of arrows: +\begin{itemize} +\item {\em MicroDiagram} is only able to design plain arrows; +\item {\em MiniDiagram} designs plain arrows, pairs of +plain arrows and adjoint pairs of plain arrows. +\end{itemize} +The restriction is even more subtle, since arrows are produced +here in a more economical way. + +Big diagrams require much \TeX\ memory when typesetting; if you are +badly limited, try to produce them as separate one-page documents. To save +memory, you can also cancel from a file those macros you are not intending to +use. Do not copy macros from {\em Diagram} to {\em MiniDiagram} or {\em +MicroDiagram}\/: this would not work. + +The {\em Diagram macros} have been designed to give optimal results +on printers with resolutions up to 300dpi. In the case of printers +with higher resolutions, the parameter {\em printerresolution} +given as a first instruction of the file {\em Diagram} must be changed +accordingly. Notice that reducing this parameter is another way of +saving \TeX\ memory. This parameter does not exist in the files +{\em MicroDiagram} and {\em Minidiagram}. + +\section{Arrows in formulas} + +Arrows can be introduced in formulas, thus in a line of +text between single dollars or in a displayed formula, between +double dollars. While the command to be given is the same, the +effect which is produced is different in the text and in a +displayed formula. The variety of arrows available is described in +figure~1. +\begin{figure} +\settextarrowlength{45} +\begin{center} +\begin{tabular}{|l|c|l|} +\hline +{\bf Name}&{\bf Arrow}&{\bf Code}\\ +\hline\hline +plain arrow&$\ar$&ar\\ +dotted arrow&$\dotar$&dotar\\ +distributor&$\dist$&dist\\ +monomorphism&$\mono$&mono\\ +epimorphism&$\epi$&epi\\ +bimorphism&$\bimo$&bimo\\ +isomorphism&$\iso$&iso\\ +equality&$\eql$&eql\\ & & \\ +pair of arrows&$\biar$&biar\\ & & \\ +adjoint arrows&$\adjar$&adjar\\ & & \\ +pair of distributors&$\bidist$&bidist\\ & & \\ +adjoint distributors&$\adjdist$&adjdist\\ +\hline +\end{tabular} +\hspace{5mm} +\begin{minipage}{30mm} +The codes {\em iso, dist, bidist, adjdist} are generic: +the marks $\cong$, $\circ$ can be changed anywhere in the document via the +instructions \verb+\isomark{...}+, \verb+\distmark{...}+, +where \verb+...+ are the new marks. The default marks are \verb+\cong+ and +\verb+\distcircle+. +\end{minipage} +\end{center} +\caption{The various types of arrows.} +\settextarrowlength{20} +\end{figure} +\begin{itemize} +\item To produce a given type of formula arrow +in the forward direction (as in figure~1), just type a {\em +backslash} followed by the code for this type of arrow: thus +\verb+$f \colon A \mono B$+ will produce $f \colon A \mono B$. +\item To produce a given type of formula arrow in the ``backward'' direction, type a +command starting with \verb+\bk+ and ending with the code for the type of +arrow: thus \verb+$g \colon B \bkepi C$+ produces $g \colon B \bkepi C$. +\item To give an upper name to one of the previous arrows, just use +a first uppercase letter and give the name as an argument: thus +\verb+$C \Dist h D$+ will produce $C \Dist h D$. Of course, when +the picture consists of two arrows, two names must be given, first +the top one and next the bottom one; for example +\verb+$D \Bkadjar ij E$+ to produce $D \Bkadjar ij E$. As usual, when +the names are not single tokens, use curly brackets to delimit them. +\end{itemize} +To let you appreciate the difference between {\em textstyle} and +{\em displaystyle}, here are the previous arrows in {\em display +style} +$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$ +introduced via the commands +\begin{verbatim} +$$ A \Mono f B \Bkepi g C \Dist h D \Bkadjar ij E $$ +\end{verbatim} + +The default length of a {\em text arrow} is 20pt while the names +are processed in {\em scriptstyle}; the default length of a {\em display +arrow} is 30 pt and the names are processed in {\em textstyle}. The +default lengthes can be changed at any time in the document via +instructions of the form +\begin{verbatim} +\settextarrowlength{25} +\setdisplayarrowlength{40} +\end{verbatim} +where 25 and 40 express the new lengthes in points. + +\section{Constructing a diagram} + +To construct a 2-dimensional diagram, imagine a pattern of +points, visualized by circles and bullets as in figure~2: +\begin{figure} +\begin{diagram} +\XB¤\XA¤\XB¤\XA¤\XB¤\XA¤\XB¤¤ +\XA¤\cross{\XA}{\sear}¤\cross{\XA}{\esear}¤\cross{\XA}{\eesear}¤\XA¤\XA¤\XA¤¤ +\XB¤\cross{\XA}{\ssear}¤\XB¤\cross{\XA}{\ear}¤\XB¤\cross{\XA}{\ear}¤\XB¤¤ +\XA¤\XA¤\cross{\XA}{\sar}¤\XA¤\cross{\XA}{\sar}¤\XA¤\cross{\XA}{\sar}¤¤ +\XB¤\XA¤\XB¤\cross{\XA}{\ear}¤\XB¤\cross{\XA}{\ear}¤\XB¤¤ +\end{diagram} +\caption{Conceiving a 2-dimensional diagram.} +\end{figure} +the bullets indicate the points of this pattern where vertices +could be expected. Each vertex and each arrow is attached by its center at a +point of the pattern. It suffices now to enumerate the items, line by line and +column by column, like for a matrix; in particular when all actual items of a +line have been enumerated, you can pass directly to the next line. All items are +processed in math mode. The program will take care of choosing correctly the +length of each arrow. + +A vertex is typed as any mathematical formula. The rules for typing +an arrow are completely analogous to those of section~2: +the various types of arrows are again those of figure~1 while +the possible directions and their codes are given in figure~3. +\begin{figure} +\begin{diagram}[60] +\XB¤\XA¤\V{0}{10}{nwnnw}¤\XA¤\V{0}{10}{nnnw}¤\XA¤\XB¤\XA¤\V{0}{10}{nnne}¤ +\XA¤\V{0}{10}{nenne}¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle nwwnw$}}¤\XA¤\XB¤\XA¤ +\V{-5}{10}{\boldface{nnw}}¤\XA¤\XB¤\XA¤\V{5}{10}{\boldface{nne}}¤\XA¤\XB¤\XA¤ +\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +neene$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\cross{\XA}{\nwnnwar}¤\cross{\XA}{\nnnwar}¤\XA¤\cross{\XA}{\nnnear}¤ +\cross{\XA}{\nennear}¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +wwnw$}}¤\XA¤\V{-10}{10}{\boldface{wnw}}¤\cross{\XA}{\nwwnwar}¤ +\V{-5}{10}{\boldface{nw}}¤\cross{\XA}{\bold\nnwar}¤\V{0}{10}{\boldface{n}}¤ +\cross{\XA}{\bold\nnear}¤\V{5}{10}{\boldface{ne}}¤\cross{\XA}{\neenear}¤ +\V{10}{10}{\boldface{ene}}¤\XA¤\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +eene$}}¤¤ +\XA¤\XA¤\XA¤\cross{\XA}{\wwnwar}¤\cross{\XA}{\bold\wnwar}¤\cross{\XA}{\bold\nwar}¤ +\cross{\XA}{\bold\nar}¤\cross{\XA}{\bold\near}¤\cross{\XA}{\bold\enear}¤ +\cross{\XA}{\eenear}¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\XB¤\XA¤\V{-10}{0}{\boldface{w}}¤\cross{\XA}{\bold\war}¤\XB¤ +\cross{\XA}{\bold\ear}¤\V{10}{0}{\boldface{e}}¤\XA¤\XB¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\cross{\XA}{\wwswar}¤\cross{\XA}{\bold\wswar}¤\cross{\XA}{\bold\swar}¤ +\cross{\XA}{\bold\sar}¤\cross{\XA}{\bold\sear}¤\cross{\XA}{\bold\esear}¤ +\cross{\XA}{\eesear}¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +wwsw$}}¤\XA¤\V{-10}{-10}{\boldface{wsw}}¤\cross{\XA}{\swwswar}¤ +\V{-5}{-10}{\boldface{sw}}¤\cross{\XA}{\bold\sswar}¤\V{0}{-10}{\boldface{s}}¤ +\cross{\XA}{\bold\ssear}¤\V{5}{-10}{\boldface{se}}¤\cross{\XA}{\seesear}¤ +\V{10}{-10}{\boldface{ese}}¤\XA¤\V{10}{0}{\makebox[0pt][l]{$\scriptstyle +eese$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\cross{\XA}{\swsswar}¤\cross{\XA}{\ssswar}¤\XA¤\cross{\XA}{\sssear}¤ +\cross{\XA}{\sessear}¤\XA¤\XA¤\XA¤\XA¤¤ +\V{-10}{0}{\makebox[0pt][r]{$\scriptstyle +swwsw$}}¤\XA¤\XB¤\XA¤\V{-5}{-10}{\boldface{ssw}}¤\XA¤\XB¤\XA¤ +\V{5}{-10}{\boldface{sse}}¤\XA¤\XB¤\XA¤ +\V{10}{0}{\makebox[0pt][l]{$\scriptstyle seese$}}¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\V{0}{-10}{swssw}¤\XA¤\V{0}{-10}{sssw}¤\XA¤\XB¤\XA¤\V{0}{-10}{ssse}¤ +\XA¤\V{0}{-10}{sesse}¤\XA¤\XB¤¤ +\end{diagram} +\caption{The 32 directions for {\em Diagram} arrows.} +\end{figure} +Taking some +liberty with geography and trigonometry, the 32 directions considered +by the {\em Diagram macros} are named after those of the compass card. +\begin{itemize} +\item To produce a type of arrow in a given direction, type a {\em +backslash} followed by the code of the direction and the code of +the arrow. For example \verb+\nemono+ draws a north-east +monomorphism. +\item To give an upper name to a diagram arrow, use a first upper case +letter and give the name as an argument. For example +\verb+\Ssedist f+ draws a south-sout-east distributor with upper +name $f$. Of course, when the picture consists in two arrows, +two names must be given: first the upper one and next the lower one. +In the case of vertical arrows, read {\em left} instead of {\em +upper}. +\item The procedure for giving a lower name is analogous, but uses +a last uppercase letter. Thus \verb+\wbimO f+ produces a west +bimorphism with lower name $f$. In the case of vertical arrows, +read {\em right} instead of {\em lower}. For two-arrow pictures, +both naming procedures are equivalent. +\end{itemize} +All 12 types of arrows exist in all 16 principal directions printed in bold +in figure~3; just plain arrows are provided in the 16 other +directions. + +It remains to explain the syntax\footnote{This syntax uses the character \S. If +this is a problem for you, just replace \S\ by any character you are unlikely to +use in a digram, for example ?; you can safely make this change globally and +automatically in the file {\em Diagram}.} for typing diagrams. This is just +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\end{diagram} +\end{verbatim}% +\endgroup% +\noindent where \verb+...+ denote the various items of the diagram. So a +single \S\ is the delimiter between two items of a same line, while +a double \S\S\ indicate the end of a line. Typing the double \S\S\ at the end of the last line is +compulsory and nothing should stand between this double \S\S\ and the +\verb+\end{diagram}+ instruction (well, there is a single exception to this rule, +explained in section~6). Do not forget a blank space to indicate an empty item, +since two consecutive \S\S\ would be interpreted as an {\em end of line} symbol; of +course several blank spaces are always equivalent to a single one. + +So diagram~1, +\begin{floatingdiagram} +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{floatingdiagram} +which has the precise shape of the diagram conceived in figure~2, is produced by +the following commands: +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram} +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{diagram} +\end{verbatim}% +\endgroup% + +There is a second, completely analogous environment for producing +diagrams; it has the form +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{floatingdiagram} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\end{floatingdiagram} +\end{verbatim}% +\endgroup% +\noindent As the name indicates, the diagram is then introduced as +a floating body and will automatically receive a numbered label +(cf.~diagrams~1~to~3). The default is to number successively the +diagrams through all the document. You can prefer +a number 3.12 for, let us say, the twelfth diagram of chapter~3 +(in a style which contains chapters!). This is forced +by the instruction +\begin{verbatim} +\setdiagramcounter{chapter} +\end{verbatim} +where, of course, {\em chapter} can be replaced by any sectioning +level, for example {\em part, section,\ldots} For non-English texts, you +will also want to ``translate'' the word {\em Diagram} in the label: this +is achieved by an instruction like +\begin{verbatim} +\diagramlabel{Diagramme} +\end{verbatim} +given anywhere in the text, but not inside a diagram. + +Every diagram, floating or not, can be given a caption. This is done +by the instruction +\begin{verbatim} +\diagramcaption{...} +\end{verbatim} +which can be introduced anywhere in the diagram, but before the last two +\S\S. In the case of a floating diagram, this caption completes the automatic +label, as in diagram~4. + +\section{Changing the sizes} + +The step of the pattern +underlying a diagram is 40~units, where the default value of the unit is 1pt. +This default value can be ``scaled'' at any time in the document by giving an +instruction like +\begin{verbatim} +\setdefaultscale{75} +\end{verbatim} +(scaling factor of 75\%); this instruction applies to all subsequent diagrams +and must be given outside a diagram environment. +If you want to apply a scaling factor to just one specific diagram, give the +scaling factor as an optional argument of the corresponding environment; thus +type +\begin{verbatim} +\begin{diagram}[125] +........ +\end{diagram} +\end{verbatim} +for an enlargement of 125\%, and correspondingly for floating diagrams. The +scaling factor given for a specific diagram overrides the {\em defaultscale} +value just for this specific diagram. For example, diagram~1 is not scaled and +diagram~2 is the same diagram, scaled at 75\%. Observe the precise +effect of the scaling option: this is by no way a brute homothetic process. +\begin{floatingdiagram}[75] +A¤¤ + ¤\Sedotar x¤\eseaR y ¤\Eesear z¤¤ + ¤\sseaR u ¤A ¤\Eepi a ¤B ¤\Emono b¤C ¤¤ + ¤ ¤\saR c ¤ ¤\Sadjar de¤ ¤\seqL{1_C}¤¤ + ¤ ¤D ¤\waR g ¤D\oplus E ¤\eaR h ¤C ¤¤ +\end{floatingdiagram} + +To motivate the next features, consider the conception of a +3-dimensional diagram, as in figure~4. Compare first the subpattern of bullets +with that of figure~2. +\begin{figure} +\begin{diagram}[50] +\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\XA¤¤ +\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤¤ +\cross{\XA}{\sar[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA + ¤\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤¤ +\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤\XA¤¤ +\XB¤\XA¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤ + ¤\cross{\XA}{\cross{\ear[130]}{\sar[130]}}¤\XA¤\XB¤\XA¤\cross{\XA}{\sar[130]}¤¤ +\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤\XA¤\XA¤\cross{\XA}{\sear}¤\XA¤¤ +\XA¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤\XA¤\cross{\XA}{\ear[130]}¤\XA¤\XB¤¤ +\end{diagram} +\caption{Conceiving a 3-dimensional diagram} +\end{figure} +In this case, not only you must +``cross'' different arrows at a same point of the pattern, +but you must also consider arrows which cross several points +of the pattern before reaching the objects they connect. In fact, the {\em +Diagram macros} assume that an arrow attached at some point of the +pattern connects the two adjacent points of the pattern, in the direction of the +arrow. When this is not the case, it is left on you to determine the length of +the corresponding arrow. + +To impose a specific length to a diagram arrow, just give the corresponding extent as +an optional argument\footnote{This argument should be an actual positive +integer; anything else, including the value of a counter, could put \TeX\ in +deep trouble. The formula arrows (section~2) do not admit this optional +argument.}:the extent of vertical and horizontal arrows is their length; the extent +of other arrows is the length of their horizontal projection (see \LaTeX\ manual, +{\em Picture environment}, for further explanations). Thus \verb+\Near[60]f+ draws a +north-east arrow of horizontal extent 60 units with upper name $f$. Here are +the basic default extents of diagram arrows: 50 in the directions n, s, e, w; +59 in the directions ne, nw, se, sw; 133 in the directions ene, ese, wnw, +wsw; 67 in the directions nne, sse, nnw, ssw; 211 in the directions +eene, eese, wwnw, wwsw; 71 in the directions nnne, ssse, nnnw, +sssw; 215 in the direction neene, seese, nwwnw, swwsw; 143 in the +directions nenne, sesse, nwnnw, swssw. In most circumstances, you will obtain +the required extent by augmenting the basic default extent by 40 for +each additional point of the formal pattern crossed by the arrow. + +As far as ``crossing arrows'' is concerned, the command +\begin{verbatim} +\cross{item 1}{item 2} +\end{verbatim} +allows you to introduce at the same time {\em item~1} and {\em +item~2} at the same point of the pattern; those two items can be +indifferently vertices or arrows. Diagram~3, +conceived in figure~4, must thus be typed as +\begingroup +\catcode`\¤=\active\def¤{{\S}} +\begin{verbatim} +\begin{floatingdiagram}[50] +A¤ ¤\ear[130]¤ ¤B¤ ¤\ear[130]¤ ¤C¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear ¤¤ +\sar[130]¤ ¤D¤ ¤\cross{\ear[130]}{\sar[130]}¤ + ¤E¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤F¤¤ ¤¤ +G¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤H¤ + ¤\cross{\ear[130]}{\sar[130]}¤ ¤I¤ ¤\sar[130]¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear¤¤ +¤ ¤J¤ ¤\ear[130]¤ ¤K¤ ¤\ear[130]¤ ¤L¤¤ +\end{floatingdiagram} +\end{verbatim} +\endgroup +\begin{floatingdiagram}[50] +A¤ ¤\ear[130]¤ ¤B¤ ¤\ear[130]¤ ¤C¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear ¤¤ +\sar[130]¤ ¤D¤ ¤\cross{\ear[130]}{\sar[130]}¤ + ¤E¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤F¤¤ ¤¤ +G¤ ¤\cross{\ear[130]}{\sar[130]}¤ ¤H¤ + ¤\cross{\ear[130]}{\sar[130]}¤ ¤I¤ ¤\sar[130]¤¤ +¤\sear¤ ¤ ¤ ¤\sear¤ ¤ ¤ ¤\sear¤¤ +¤ ¤J¤ ¤\ear[130]¤ ¤K¤ ¤\ear[130]¤ ¤L¤¤ +\end{floatingdiagram} + +Finally you can change the thickness of a diagram arrow by typing first the command +\verb+\bold+; thus \verb+\bold\nar+ produces a bold north arrow. This +\verb+\bold+ option will be cancelled by the next \S\ sign; you can cancel its +effects earlier (for example during a \verb+\cross+ command) by the +instruction \verb+\unbold+. See figure~3 for examples of bold arrows. + +\section{Curved arrows} + +The {\em Diagram macros} provide also eight curved arrows which can be used +for connecting two rather distant points lying on a same edge of a diagram; +the code for curved arrows is {\em curvar}. +These arrows are presented in figure~5, scaled at 50\%, +\begin{figure} +\begin{diagram}[50] +\cdot¤\ear¤\cross{\XB}{\Necurvar{ne}}¤\ear¤\cdot¤ ¤ ¤ ¤ ¤ +\cdot¤\ear¤\cross{\XB}{\Nwcurvar{nw}}¤\ear¤\cdot¤¤ +\sar¤ ¤\sar¤ ¤\sar¤ ¤ ¤ ¤ ¤\sar¤ ¤\sar¤ ¤\sar¤¤ +\cross{\XB}{\Wncurvar{wn}}¤\ear¤\cdot¤\ear¤\cross{\XB}{\Escurvar{es}}¤ ¤ ¤ ¤ ¤ +\cross{\XB}{\Wscurvar{ws}}¤\ear¤\cdot¤\ear¤\cross{\XB}{\Encurvar{en}}¤¤ +\sar¤ ¤\sar¤ ¤\sar¤ ¤ ¤ ¤ ¤\sar¤ ¤\sar¤ ¤\sar¤¤ +\cdot¤\ear¤\cross{\XB}{\Swcurvar{sw}}¤\ear¤\cdot¤ ¤ ¤ ¤ ¤ +\cdot¤\ear¤\cross{\XB}{\Securvar{se}}¤\ear¤\cdot¤¤ +\spacing(15,0,15) +\end{diagram} +\caption{The eight curved arrows} +\end{figure} +together with the +corresponding direction codes. The first +letter of the direction code indicates the position of the arrow with respect to the +diagram; the second letter indicates the global direction of the arrow. So +\verb+\wscurvar+ draws a curved arrow, on the west side of the diagram, oriented +to the south. As for the other arrows, a first (or last) upper case letter allows you +to name the curved arrows. + +Curved arrows are a typical example of items which are generally introduced +via the \verb+\cross+ command of section~4, at a formal point of the pattern +which they share with a vertex or another arrow. In figure~5, the bullets +indicate the formal ``center'' of the curved arrows; i.e.~the point of the +pattern where to attach them. + +The default extent of curved arrows is 160 units, yielding the situation of +figure~5. As for other diagram arrows, an arbitary extent can be imposed as a +first optional argument (again an actual positive integer!). + +Curved arrows are also part of the {\em MicroDiagram} and {\em Minidiagram} +packages. + +\section{Spacing adjustments} + +The {\em Diagram macros} determine the dimensions of a diagram by counting the +number of rows and columns in the formal pattern. When the actual dimensions +are rather different from those estimated in this way, for example when you +introduce curved arrows along a diagram, a spacing correction can be needed. +This is realized via the command \verb+\spacing(t,l,b)+ +which must imperatively be given between the \S\S\ of the last line and the +instruction \verb+\end{diagram}+ (or \verb+\end{floatingdiagram}+). This +command\footnote{Do not +abbreviate that command, this would put \TeX\ in deep trouble.} +adds $t$ points space at the top of the diagram, $l$ points space at the left and +$b$ points space at the bottom. $t$, $l$, $b$ should be positive or negative +integers. +\begingroup% +\catcode`\¤=\active\def¤{{\S}}% +\begin{verbatim} +\begin{diagram}[80] +\diagramcaption{What a nice diagram!} +...¤...¤...¤¤ +...¤...¤...¤...¤¤ +...¤...¤...¤...¤¤ +\spacing(10,-15,10) +\end{diagram} +\end{verbatim}% +\endgroup% + +When using the \verb+\cross+ command, it can also happen that an arrow +collides with the name of another arrow. To take care of this and other +unusual situations, commands exist to move elements of a diagram without +disturbing the general construction. +\begin{itemize} +\item \verb+\movename(n,m){f}+ moves the name $f$ of an arrow $n$ points right +and $m$ points up. +\item \verb+\movearrow(n,m){\arrow}+ moves the arrow \verb+\arrow+ (and its +name when there is one) $n$ points right and $m$ points up. +\item \verb+\movevertex(n,m){XXX}+ moves the vertex $XXX$ $n$ points right and +$m$ points up. +\item \verb+\movevertexleft{XXX}+ moves a too long vertex $XXX$ +positioned on the left edge of a diagram, +so that the next horizontal arrow keeps maximal length. +\item \verb+\movevertexright{XXX}+ moves a too long vertex $XXX$ +positioned on the right edge of a diagram, +so that the previous horizontal arrow keeps a maximal length. +\end{itemize} + +For example, diagram~4 +\begin{floatingdiagram} +(A\oplus B)\otimes(C\oplus D) ¤ \Ear f¤ X\oplus V ¤¤ +\Sar g¤ ¤ \saR h¤¤ +Y\oplus W ¤ \eaR i¤ (E\oplus F)\otimes(G\oplus H) ¤¤ +\movevertexleft{(A\oplus B)\otimes(C\oplus D)} ¤ \Ear f¤ X\oplus V ¤¤ +\Sar g¤ ¤ \saR h¤¤ +Y\oplus W ¤ \eaR i¤ \movevertexright{(E\oplus F)\otimes(G\oplus H)} +\diagramcaption{Automatic and manual adjustments} ¤¤ +\end{floatingdiagram} +has been obtained by just typing +\begingroup +\catcode`\¤=\active\def¤{{\S}} +\begin{verbatim} +\begin{floatingdiagram} +(A\oplus B)\otimes(C\oplus D)¤\Ear f¤X\oplus V¤¤ +\Sar g¤ ¤ \saR h¤¤ +Y\oplus W¤\eaR i¤(E\oplus F)\otimes(G\oplus H)¤¤ +\movevertexleft{(A\oplus B)\otimes(C\oplus D)}¤\Ear f¤ X\oplus V¤¤ +\Sar g¤ ¤\saR h¤¤ +Y\oplus W¤\eaR i¤\movevertexright{(E\oplus F)\otimes(G\oplus H)} +\diagramcaption{Automatic and manual adjustments}¤¤ +\end{floatingdiagram} +\end{verbatim} +\endgroup +The upper square is thus produced automatically by the {\em Diagram macros}, +while the lower square has been adjusted by the user. Make your choice. +\vfill + +\mbox{}\hfill{\footnotesize Une version fran\c caise de ce mode d'emploi est +\'egalement disponible.} + + +\end{document} |