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