From 09c2e34333852c976a2bfb988393426be3139ea5 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 26 Dec 2007 00:46:06 +0000 Subject: barr update (2005-12-13) git-svn-id: svn://tug.org/texlive/trunk@5911 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/barr/diagxy.tex | 1149 +++++++++++++++++++++++++ Master/texmf-dist/tex/latex/barr/diagram.tex | 1048 ---------------------- Master/texmf-dist/tex/latex/barr/diagxy.tex | 952 -------------------- 3 files changed, 1149 insertions(+), 2000 deletions(-) create mode 100644 Master/texmf-dist/tex/generic/barr/diagxy.tex delete mode 100644 Master/texmf-dist/tex/latex/barr/diagram.tex delete mode 100644 Master/texmf-dist/tex/latex/barr/diagxy.tex (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/generic/barr/diagxy.tex b/Master/texmf-dist/tex/generic/barr/diagxy.tex new file mode 100644 index 00000000000..b71b70e50bf --- /dev/null +++ b/Master/texmf-dist/tex/generic/barr/diagxy.tex @@ -0,0 +1,1149 @@ + \def\dated#1{\def\thedate{#1}}% + \dated{2004-12-08}% + % This is a package of commutative diagram macros built on top of Xy-pic% + % by Michael Barr (email: barr@barrs.org). Its use is unrestricted. It% + % may be freely distributed, unchanged, for non-commercial or commercial% + % use. If changed, it must be renamed. Inclusion in a commercial% + % software package is also permitted, but I would appreciate receiving a% + % free copy for my personal examination and use. There are no guarantees% + % that this package is good for anything. I have tested it with LaTeX 2e,% + % LaTeX 2.09 and Plain TeX. Although I know of no reason it will not work% + % with AMSTeX, I have not tested it.% + % Added 2003-05-10: I now know that the only clash is with \square in% + % amssymb, which should therefore be loaded first. If the amssymb% + % \square is required, you can \let\box\square and use \box instead.% + +\newcount\atcode \atcode=\catcode`\@% +\catcode`\@=12% +\input xy +\xyoption{arrow} +\xyoption{curve} + +\newdir{ >}{{ }*!/-.9em/@{>}}% +\newdir{ (}{{ }*!/-.5em/@{(}}% +\newdir^{ (}{{ }*!/-.5em/@^{(}}% +\newdir{< }{!/.9em/@{<}*{ }}% + +\newdimen\high% +\newdimen\ul% +\newcount\deltax% +\newcount\deltay% +\newcount\deltaX% +\newcount\deltaXprime% +\newcount\deltaY% +\newcount\deltaYprime% + +\newdimen\wdth% +\newcount\xend% +\newcount\yend% +\newcount\Xend% +\newcount\Yend% +\newcount\xpos% +\newcount\ypos% +\newcount\default \default=500% +\newcount\defaultmargin \defaultmargin=150% +\newcount\topw% +\newcount\botw% +\newcount\Xpos% +\newcount\Ypos% +\def\ratchet#1#2{\ifnum#1<#2\global #1=#2\fi}% + +\catcode`\@=11% +\expandafter\ifx\csname @ifnextchar\endcsname\relax% +\def\ifnextchar#1#2#3{\let\@tempe% +#1\def\@tempa{#2}\def\@tempb{#3}\futurelet% + \@tempc\@ifnch}% +\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch% + \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi% + \fi \@tempd}% +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token% +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch}% +\else% +\let\ifnextchar\@ifnextchar% +\fi% +\ifx\check@mathfonts\undefined% +\else \check@mathfonts% +\fi% +\newdimen\axis \axis=\fontdimen22\textfont2% +\ul=.01em% +\X@xbase =.01em% +\Y@ybase =.01em% +\def\scalefactor#1{\ul=#1\ul \X@xbase=#1\X@xbase \Y@ybase=#1\Y@ybase}% +\catcode`\@=12% + +\def\fontscale#1{% +\if#1h\relax% +\font\xydashfont=xydash10 scaled \magstephalf% +\font\xyatipfont=xyatip10 scaled \magstephalf% +\font\xybtipfont=xybtip10 scaled \magstephalf% +\font\xybsqlfont=xybsql10 scaled \magstephalf% +\font\xycircfont=xycirc10 scaled \magstephalf% +\else% +\font\xydashfont=xydash10 scaled \magstep#1% +\font\xyatipfont=xyatip10 scaled \magstep#1% +\font\xybtipfont=xybtip10 scaled \magstep#1% +\font\xybsqlfont=xybsql10 scaled \magstep#1% +\font\xycircfont=xycirc10 scaled \magstep#1% +\fi}% + +\def\bfig{\vcenter\bgroup\xy}% +\def\efig{\endxy\egroup}% + +\def\car#1#2\nil{#1}% + +\def\morphism{\ifnextchar({\morphismp}{\morphismp(0,0)}}% +\def\morphismp(#1){\ifnextchar|{\morphismpp(#1)}{\morphismpp(#1)|a|}}% +\def\morphismpp(#1)|#2|{\ifnextchar/{\morphismppp(#1)|#2|}% + {\morphismppp(#1)|#2|/>/}}% +\def\morphismppp(#1)|#2|/#3/{% + \ifnextchar<{\morphismpppp(#1)|#2|/#3/}% + {\morphismpppp(#1)|#2|/#3/<\default,0>}}% + +\def\morphismpppp(#1,#2)|#3|/#4/<#5,#6>[#7`#8;#9]{% +\xend#1\advance \xend by #5% +\yend#2\advance \yend by #6% +\domorphism(#1,#2)|#3|/#4/<#5,#6>[{#7}`{#8};{#9}]}% + + +\def\domorphism(#1,#2)|#3|/#4/<#5,#6>[#7`#8;#9]{% + % Check if arrow arg has an @; then don't add it.% +\def\next{\car#4.\nil}% +\if@\next\relax% + \if#3l% + \ifnum #6>0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3m% + \setbox0\hbox{$#9$}% + \ifdim \wd0=0pt% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4 (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4|-*+<1pt,4pt>{\labelstyle#9}% + (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3r% + \ifnum #6<0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3a% + \ifnum #5>0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3b% + \ifnum #5<0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar#4 (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi\fi\fi\fi\fi% + %% Otherwise, have to add @{..}% +\else% + \if#3l% + \ifnum #6>0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3m% + \setbox0\hbox{$#9$}% + \ifdim \wd0=0pt% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}|-*+<1pt,4pt>{\labelstyle#9}% + (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3r% + \ifnum #6<0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3a% + \ifnum #5>0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else \if#3b% + \ifnum #5<0% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi% + \else% + \POS(#1,#2)*+!!<0ex,\axis>{#7}\ar@{#4} (\xend,\yend)*+!!<0ex,\axis>{#8}% + \fi\fi\fi\fi\fi% +\fi\ignorespaces}% + +\def\vect(#1,#2)/#3/<#4,#5>{% + \xend#1 \yend#2 \advance\xend by #4 \advance\yend by #5% + \POS(#1,#2)\ar#3 (\xend,\yend)}% + +\def\squarepppp(#1,#2)|#3|/#4`#5`#6`#7/<#8>[#9]{% +\xpos#1\ypos#2% +\def\next|##1##2##3##4|{% + \def\xa{##1}\def\xb{##2}\def\xc{##3}\def\xd{##4}\ignorespaces}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#8>% +\def\next[##1`##2`##3`##4;##5`##6`##7`##8]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% + \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\ignorespaces}% +\next[#9]% +\morphism(\xpos,\ypos)|\xd|/{#7}/<\deltax,0>[\nodec`\noded;\labeld]% +\advance \ypos by \deltay% +\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% + \advance \xpos by \deltax% +\morphism(\xpos,\ypos)|\xc|/{#6}/<0,-\deltay>[\nodeb`\noded;\labelc]% +\ignorespaces}% + +\def\square{\ifnextchar({\squarep}{\squarep(0,0)}}% +\def\squarep(#1){\ifnextchar|{\squarepp(#1)}{\squarepp(#1)|alrb|}}% +\def\squarepp(#1)|#2|{\ifnextchar/{\squareppp(#1)|#2|}% + {\squareppp(#1)|#2|/>`>`>`>/}}% +\def\squareppp(#1)|#2|/#3`#4`#5`#6/{% + \ifnextchar<{\squarepppp(#1)|#2|/#3`#4`#5`#6/}% + {\squarepppp(#1)|#2|/#3`#4`#5`#6/<\default,\default>}}% + +\def\ptrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% +\ignorespaces}% + +\def\qtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xc|/{#6}/<0,-\deltay>[\nodeb`\nodec;\labelc]% +\ignorespaces}% + +\def\dtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% +\advance\ypos by \deltay\advance \xpos by \deltax% +\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\ignorespaces}% + +\def\btrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#4}/<0,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% +\ignorespaces}% + +\def\Atrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\multiply\deltax by 2% +\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% +\divide\deltax by 2% +\advance\ypos by \deltay\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% +\ignorespaces}% + +\def\Vtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% +\multiply\deltax by 2% +\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% +\advance\xpos by \deltax \divide \deltax by 2% +\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% +\ignorespaces}% + +\def\Ctrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\advance \ypos by \deltay% +\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,-\deltay>[\nodeb`\nodec;\labelc]% +\advance\ypos by \deltay \advance \xpos by \deltax% +\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% +\multiply\deltay by 2% +\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\ignorespaces}% + +\def\Dtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% +\xpos#1\ypos#2% +\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% +\next|#3|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#7>% +\def\next[##1`##2`##3;##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% +\next[#8]% +\advance\xpos by \deltax \advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% +\advance\xpos by -\deltax \advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodeb;\labelb]% +\multiply \deltay by 2% +\morphism(\xpos,\ypos)|\xa|/{#4}/<0,-\deltay>[\nodea`\nodec;\labela]% +\ignorespaces}% + +\def\ptriangle{\ifnextchar({\ptrianglep}{\ptrianglep(0,0)}}% +\def\ptrianglep(#1){\ifnextchar|{\ptrianglepp(#1)}{\ptrianglepp(#1)|alr|}}% +\def\ptrianglepp(#1)|#2|{\ifnextchar/{\ptriangleppp(#1)|#2|}% + {\ptriangleppp(#1)|#2|/>`>`>/}}% +\def\ptriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\ptrianglepppp(#1)|#2|/#3`#4`#5/}% + {\ptrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\qtriangle{\ifnextchar({\qtrianglep}{\qtrianglep(0,0)}}% +\def\qtrianglep(#1){\ifnextchar|{\qtrianglepp(#1)}{\qtrianglepp(#1)|alr|}}% +\def\qtrianglepp(#1)|#2|{\ifnextchar/{\qtriangleppp(#1)|#2|}% + {\qtriangleppp(#1)|#2|/>`>`>/}}% +\def\qtriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\qtrianglepppp(#1)|#2|/#3`#4`#5/}% + {\qtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\dtriangle{\ifnextchar({\dtrianglep}{\dtrianglep(0,0)}}% +\def\dtrianglep(#1){\ifnextchar|{\dtrianglepp(#1)}{\dtrianglepp(#1)|lrb|}}% +\def\dtrianglepp(#1)|#2|{\ifnextchar/{\dtriangleppp(#1)|#2|}% + {\dtriangleppp(#1)|#2|/>`>`>/}}% +\def\dtriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\dtrianglepppp(#1)|#2|/#3`#4`#5/}% + {\dtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\btriangle{\ifnextchar({\btrianglep}{\btrianglep(0,0)}}% +\def\btrianglep(#1){\ifnextchar|{\btrianglepp(#1)}{\btrianglepp(#1)|lrb|}}% +\def\btrianglepp(#1)|#2|{\ifnextchar/{\btriangleppp(#1)|#2|}% + {\btriangleppp(#1)|#2|/>`>`>/}}% +\def\btriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\btrianglepppp(#1)|#2|/#3`#4`#5/}% + {\btrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\Atriangle{\ifnextchar({\Atrianglep}{\Atrianglep(0,0)}}% +\def\Atrianglep(#1){\ifnextchar|{\Atrianglepp(#1)}{\Atrianglepp(#1)|lrb|}}% +\def\Atrianglepp(#1)|#2|{\ifnextchar/{\Atriangleppp(#1)|#2|}% + {\Atriangleppp(#1)|#2|/>`>`>/}}% +\def\Atriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\Atrianglepppp(#1)|#2|/#3`#4`#5/}% + {\Atrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\Vtriangle{\ifnextchar({\Vtrianglep}{\Vtrianglep(0,0)}}% +\def\Vtrianglep(#1){\ifnextchar|{\Vtrianglepp(#1)}{\Vtrianglepp(#1)|alb|}}% +\def\Vtrianglepp(#1)|#2|{\ifnextchar/{\Vtriangleppp(#1)|#2|}% + {\Vtriangleppp(#1)|#2|/>`>`>/}}% +\def\Vtriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\Vtrianglepppp(#1)|#2|/#3`#4`#5/}% + {\Vtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\Ctriangle{\ifnextchar({\Ctrianglep}{\Ctrianglep(0,0)}}% +\def\Ctrianglep(#1){\ifnextchar|{\Ctrianglepp(#1)}{\Ctrianglepp(#1)|arb|}}% +\def\Ctrianglepp(#1)|#2|{\ifnextchar/{\Ctriangleppp(#1)|#2|}% + {\Ctriangleppp(#1)|#2|/>`>`>/}}% +\def\Ctriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\Ctrianglepppp(#1)|#2|/#3`#4`#5/}% + {\Ctrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + +\def\Dtriangle{\ifnextchar({\Dtrianglep}{\Dtrianglep(0,0)}}% +\def\Dtrianglep(#1){\ifnextchar|{\Dtrianglepp(#1)}{\Dtrianglepp(#1)|alb|}}% +\def\Dtrianglepp(#1)|#2|{\ifnextchar/{\Dtriangleppp(#1)|#2|}% + {\Dtriangleppp(#1)|#2|/>`>`>/}}% +\def\Dtriangleppp(#1)|#2|/#3`#4`#5/{% + \ifnextchar<{\Dtrianglepppp(#1)|#2|/#3`#4`#5/}% + {\Dtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% + + +\def\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% +\def\next(##1,##2){\xpos##1\ypos##2}% +\next(#1)% +\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% +\def\xc{##3}\def\xd{##4}\def\xe{##5}}% +\next|#2|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#8>% +\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% + \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% +\next[#9]% +\morphism(\xpos,\ypos)|\xd|/{#6}/<\deltax,0>[\nodeb`\nodec;\labeld]% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xe|/{#7}/<\deltax,0>[\nodec`\noded;\labele]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#3}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#4}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,-\deltay>[\nodea`\noded;\labelc]% +\ignorespaces}% + +\def\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% +\def\next(##1,##2){\xpos##1\ypos##2}% +\next(#1)% +\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% +\def\xc{##3}\def\xd{##4}\def\xe{##5}}% +\next|#2|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#8>% +\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% + \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% +\next[#9]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#3}/<\deltax,0>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,-\deltay>[\nodea`\noded;\labelc]% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xb|/{#4}/<\deltax,0>[\nodeb`\nodec;\labelb]% +\morphism(\xpos,\ypos)|\xd|/{#6}/<0,-\deltay>[\nodeb`\noded;\labeld]% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xe|/{#7}/<-\deltax,-\deltay>[\nodec`\noded;\labele]% +\ignorespaces}% + +\def\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% +\def\next(##1,##2){\xpos##1\ypos##2}% +\next(#1)% +\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% +\def\xc{##3}\def\xd{##4}\def\xe{##5}}% +\next|#2|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#8>% +\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% + \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% +\next[#9]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xe|/{#7}/<0,-\deltay>[\nodec`\noded;\labele]% +\advance\xpos by -\deltax% +\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,0>[\nodeb`\nodec;\labelc]% +\morphism(\xpos,\ypos)|\xd|/{#6}/<\deltax,-\deltay>[\nodeb`\noded;\labeld]% +\advance\ypos by \deltay% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xa|/{#3}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#4}/<0,-\deltay>[\nodea`\nodec;\labelb]% +\ignorespaces}% + +\def\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% +\def\next(##1,##2){\xpos##1\ypos##2}% +\next(#1)% +\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% +\def\xc{##3}\def\xd{##4}\def\xe{##5}}% +\next|#2|% +\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% +\next<#8>% +\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% + \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% +\next[#9]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,0>[\nodeb`\nodec;\labelc]% +\morphism(\xpos,\ypos)|\xd|/{#6}/<0,-\deltay>[\nodeb`\noded;\labeld]% +\advance\ypos by \deltay% +\morphism(\xpos,\ypos)|\xa|/{#3}/<0,-\deltay>[\nodea`\nodeb;\labela]% +\morphism(\xpos,\ypos)|\xb|/{#4}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% +\advance\ypos by -\deltay% +\advance\xpos by \deltax% +\morphism(\xpos,\ypos)|\xe|/{#7}/<-\deltax,-\deltay>[\nodec`\noded;\labele]% +\ignorespaces}% +\def\Atrianglepair{\ifnextchar({\Atrianglepairp}{\Atrianglepairp(0,0)}}% +\def\Atrianglepairp(#1){\ifnextchar|{\Atrianglepairpp(#1)}% +{\Atrianglepairpp(#1)|lmrbb|}}% +\def\Atrianglepairpp(#1)|#2|{\ifnextchar/{\Atrianglepairppp(#1)|#2|}% + {\Atrianglepairppp(#1)|#2|/>`>`>`>`>/}}% +\def\Atrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% + \ifnextchar<{\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% + {\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% + +\def\Vtrianglepair{\ifnextchar({\Vtrianglepairp}{\Vtrianglepairp(0,0)}}% +\def\Vtrianglepairp(#1){\ifnextchar|{\Vtrianglepairpp(#1)}% +{\Vtrianglepairpp(#1)|aalmr|}}% +\def\Vtrianglepairpp(#1)|#2|{\ifnextchar/{\Vtrianglepairppp(#1)|#2|}% + {\Vtrianglepairppp(#1)|#2|/>`>`>`>`>/}}% +\def\Vtrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% + \ifnextchar<{\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% + {\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% + +\def\Ctrianglepair{\ifnextchar({\Ctrianglepairp}{\Ctrianglepairp(0,0)}}% +\def\Ctrianglepairp(#1){\ifnextchar|{\Ctrianglepairpp(#1)}% +{\Ctrianglepairpp(#1)|lrmlr|}}% +\def\Ctrianglepairpp(#1)|#2|{\ifnextchar/{\Ctrianglepairppp(#1)|#2|}% + {\Ctrianglepairppp(#1)|#2|/>`>`>`>`>/}}% +\def\Ctrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% + \ifnextchar<{\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% + {\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% + +\def\Dtrianglepair{\ifnextchar({\Dtrianglepairp}{\Dtrianglepairp(0,0)}}% +\def\Dtrianglepairp(#1){\ifnextchar|{\Dtrianglepairpp(#1)}% +{\Dtrianglepairpp(#1)|lrmlr|}}% +\def\Dtrianglepairpp(#1)|#2|{\ifnextchar/{\Dtrianglepairppp(#1)|#2|}% + {\Dtrianglepairppp(#1)|#2|/>`>`>`>`>/}}% +\def\Dtrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% + \ifnextchar<{\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% + {\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% + +\def\pplace[#1](#2,#3)[#4]{\POS(#2,#3)*+!!<0ex,\axis>!#1{#4}\ignorespaces}% +\def\cplace(#1,#2)[#3]{\POS(#1,#2)*+!!<0ex,\axis>{#3}\ignorespaces}% +\def\place{\ifnextchar[{\pplace}{\cplace}}% + +\def\pullback#1]#2]{\square#1]\trident#2]\ignorespaces}% + +\def\tridentppp|#1#2#3|/#4`#5`#6/<#7,#8>[#9]{% +\def\next[##1;##2`##3`##4]{\def\nodee{##1}\def\labele{##2}% + \def\labelf{##3}\def\labelg{##4}}% +\next[#9]% +\advance \xpos by -\deltax% +\advance \xpos by -#7\advance \ypos by #8% +\advance\deltax by #7% +\morphism(\xpos,\ypos)|#1|/{#4}/<\deltax,-#8>[\nodee`\nodeb;\labele]% +\advance\deltax by -#7% +\morphism(\xpos,\ypos)|#2|/{#5}/<#7,-#8>[\nodee`\nodea;\labelf]% +\advance\deltay by #8% +\morphism(\xpos,\ypos)|#3|/{#6}/<#7,-\deltay>[\nodee`\nodec;\labelg]% +\ignorespaces}% + +\def\trident{\ifnextchar|{\tridentp}{\tridentp|amb|}}% +\def\tridentp|#1|{\ifnextchar/{\tridentpp|#1|}{\tridentpp|#1|/{>}`{>}`{>}/}}% +\def\tridentpp|#1|/#2/{\ifnextchar<{\tridentppp|#1|/#2/}% + {\tridentppp|#1|/#2/<500,500>}}% + +\def\setmorphismwidth#1#2#3#4{% + \setbox0=\hbox{$#1{\labelstyle#3#3}#2$}#4=\wd0% + \divide #4 by 2 \divide #4 by \ul% + \advance #4 by 350 \ratchet{#4}{500}}% + +\def\setSquarewidth[#1`#2`#3`#4;#5`#6`#7`#8]{% + \setmorphismwidth{#1}{#2}{#5}{\topw}% + \setmorphismwidth{#3}{#4}{#8}{\botw}% +\ratchet{\topw}{\botw}}% + +\def\Squarepppp(#1)|#2|/#3/<#4>[#5]{% + \setSquarewidth[#5]% + \squarepppp(#1)|#2|/#3/<\topw,#4>[#5]% +\ignorespaces}% + +\def\Square{\ifnextchar({\Squarep}{\Squarep(0,0)}}% +\def\Squarep(#1){\ifnextchar|{\Squarepp(#1)}{\Squarepp(#1)|alrb|}}% +\def\Squarepp(#1)|#2|{\ifnextchar/{\Squareppp(#1)|#2|}% + {\Squareppp(#1)|#2|/>`>`>`>/}}% +\def\Squareppp(#1)|#2|/#3`#4`#5`#6/{% + \ifnextchar<{\Squarepppp(#1)|#2|/#3`#4`#5`#6/}% + {\Squarepppp(#1)|#2|/#3`#4`#5`#6/<\default>}}% + +\def\hsquarespppp(#1,#2)|#3|/#4/<#5>[#6;#7]{% +\Xpos=#1\Ypos=#2% +\def\next|##1##2##3##4##5##6##7|{% + \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% + \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% +\next|#3|% +\def\next<##1,##2,##3>{\deltaX=##1\deltaXprime=##2\deltaY=##3}% +\next<#5>% +\def\next[##1`##2`##3`##4`##5`##6]{% + \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% + \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% +\next[#6]% +\def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% + \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% +\next[#7]% +\dohsquares/#4/}% + +\def\dohsquares/#1`#2`#3`#4`#5`#6`#7/{% +\squarepppp(\Xpos,\Ypos)|\Xa\Xc\Xd\Xf|/#1`#3`#4`#6/<\deltaX,\deltaY>% + [\Nodea`\Nodeb`\Noded`\Nodee;\Labela`\Labelc`\Labeld`\Labelf]% + \advance \Xpos by \deltaX% +\squarepppp(\Xpos,\Ypos)|\Xb\Xd\Xe\Xg|/#2``#5`#7/<\deltaXprime,\deltaY>% +[\Nodeb`\Nodec`\Nodee`\Nodef;\Labelb``\Labele`\Labelg]% +\ignorespaces}% + +\def\hsquares{\ifnextchar({\hsquaresp}{\hsquaresp(0,0)}}% +\def\hsquaresp(#1){\ifnextchar|{\hsquarespp(#1)}{\hsquarespp% +(#1)|aalmrbb|}}% +\def\hsquarespp(#1)|#2|{\ifnextchar/{\hsquaresppp(#1)|#2|}% + {\hsquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% +\def\hsquaresppp(#1)|#2|/#3/{% + \ifnextchar<{\hsquarespppp(#1)|#2|/#3/}% + {\hsquarespppp(#1)|#2|/#3/<\default,\default,\default>}}% + +\def\hSquarespppp(#1,#2)|#3|/#4/<#5>[#6;#7]{% +\Xpos=#1\Ypos=#2% +\def\next|##1##2##3##4##5##6##7|{% + \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% + \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% +\next|#3|% +\deltaY=#5% +\def\next[##1`##2`##3`##4`##5`##6]{% + \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% + \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% +\next[#6]% +\def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% + \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% +\next[#7]% +\dohSquares/#4/}% + +\def\dohSquares/#1`#2`#3`#4`#5`#6`#7/{% +\Squarepppp(\Xpos,\Ypos)|\Xa\Xc\Xd\Xf|/#1`#3`#4`#6/<\deltaY>% + [\Nodea`\Nodeb`\Noded`\Nodee;\Labela`\Labelc`\Labeld`\Labelf]% + \advance \Xpos by \topw% +\Squarepppp(\Xpos,\Ypos)|\Xb\Xd\Xe\Xg|/#2``#5`#7/<\deltaY>% +[\Nodeb`\Nodec`\Nodee`\Nodef;\Labelb``\Labele`\Labelg]% +\ignorespaces}% + +\def\hSquares{\ifnextchar({\hSquaresp}{\hSquaresp(0,0)}}% +\def\hSquaresp(#1){\ifnextchar|{\hSquarespp(#1)}{\hSquarespp% +(#1)|aalmrbb|}}% +\def\hSquarespp(#1)|#2|{\ifnextchar/{\hSquaresppp(#1)|#2|}% + {\hSquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% +\def\hSquaresppp(#1)|#2|/#3/{% + \ifnextchar<{\hSquarespppp(#1)|#2|/#3/}% + {\hSquarespppp(#1)|#2|/#3/<\default>}}% + +\def\vsquarespppp(#1,#2)|#3|/#4/<#5>[#6;#7]{% +\Xpos=#1\Ypos=#2% +\def\next|##1##2##3##4##5##6##7|{% + \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% + \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% +\next|#3|% +\def\next<##1,##2,##3>{\deltaX=##1\deltaY=##2\deltaYprime=##3}% +\next<#5>% +\def\next[##1`##2`##3`##4`##5`##6]{% + \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% + \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% +\next[#6]% +\def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% + \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% +\next[#7]% +\dovsquares/#4/}% + +\def\dovsquares/#1`#2`#3`#4`#5`#6`#7/{% +\squarepppp(\Xpos,\Ypos)|\Xd\Xe\Xf\Xg|/`#5`#6`#7/<\deltaX,\deltaYprime>% +[\Nodec`\Noded`\Nodee`\Nodef;`\Labele`\Labelf`\Labelg]% + \advance\Ypos by \deltaYprime% +\squarepppp(\Xpos,\Ypos)|\Xa\Xb\Xc\Xd|/#1`#2`#3`#4/<\deltaX,\deltaY>% + [\Nodea`\Nodeb`\Nodec`\Noded;\Labela`\Labelb`\Labelc`\Labeld]% +\ignorespaces}% + +\def\vsquares{\ifnextchar({\vsquaresp}{\vsquaresp(0,0)}}% +\def\vsquaresp(#1){\ifnextchar|{\vsquarespp(#1)}{\vsquarespp% +(#1)|aalmrbb|}}% +\def\vsquarespp(#1)|#2|{\ifnextchar/{\vsquaresppp(#1)|#2|}% + {\vsquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% +\def\vsquaresppp(#1)|#2|/#3/{% + \ifnextchar<{\vsquarespppp(#1)|#2|/#3/}% + {\vsquarespppp(#1)|#2|/#3/<\default,\default,\default>}}% + + +\def\vSquarespppp(#1,#2)|#3|/#4/<#5,#6>[#7;#8]{% +\Xpos=#1\Ypos=#2% +\def\next|##1##2##3##4##5##6##7|{% + \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% + \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% +\next|#3|% +\deltaX=#5% +\deltaY=#6% +\def\next[##1`##2`##3`##4`##5`##6]{% + \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% + \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% +\next[#7]% +\def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% + \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% +\next[#8]% +\dovSquares/#4/\ignorespaces}% + +\def\dovSquares/#1`#2`#3`#4`#5`#6`#7/{% +\setmorphismwidth{\Nodea}{\Nodeb}{\Labela}{\topw}% +\setmorphismwidth{\Nodec}{\Noded}{\Labeld}{\botw}% +\ratchet{\topw}{\botw}% +\setmorphismwidth{\Nodee}{\Nodef}{\Labelg}{\botw}% +\ratchet{\topw}{\botw}% +\square(\Xpos,\Ypos)|\Xd\Xe\Xf\Xg|/`#5`#6`#7/<\topw,\deltaX>% + [\Nodec`\Noded`\Nodee`\Nodef;`\Labele`\Labelf`\Labelg]% +\advance \Ypos by \deltaX% +\square(\Xpos,\Ypos)|\Xa\Xb\Xc\Xd|/#1`#2`#3`#4/<\topw,\deltaY>% + [\Nodea`\Nodeb`\Nodec`\Noded;\Labela`\Labelb`\Labelc`\Labeld]% +}% + +\def\vSquares{\ifnextchar({\vSquaresp}{\vSquaresp(0,0)}}% +\def\vSquaresp(#1){\ifnextchar|{\vSquarespp(#1)}{\vSquarespp% +(#1)|alrmlrb|}}% +\def\vSquarespp(#1)|#2|{\ifnextchar/{\vSquaresppp(#1)|#2|}% + {\vSquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% +\def\vSquaresppp(#1)|#2|/#3/{% + \ifnextchar<{\vSquarespppp(#1)|#2|/#3/}% + {\vSquarespppp(#1)|#2|/#3/<\default,\default>}}% + +\def\osquarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]{\squarepppp% + (#1)|#2|/#3`#4`#5`#6/<#7>[#8]% + \let\Nodea\nodea\let\Nodeb\nodeb% +\let\Nodec\nodec\let\Noded\noded\Xpos=\xpos\Ypos=\ypos% +\deltaX=\deltax \deltaY=\deltay \isquare}% + +\def\cube{\ifnextchar({\osquarep}{\osquarep(0,0)}}% +\def\osquarep(#1){\ifnextchar|{\osquarepp(#1)}{\osquarepp(#1)|alrb|}}% +\def\osquarepp(#1)|#2|{\ifnextchar/{\osquareppp(#1)|#2|}% + {\osquareppp(#1)|#2|/>`>`>`>/}}% +\def\osquareppp(#1)|#2|/#3`#4`#5`#6/{% + \ifnextchar<{\osquarepppp(#1)|#2|/#3`#4`#5`#6/}% + {\osquarepppp(#1)|#2|/#3`#4`#5`#6/<1500,1500>}}% + +\def\isquarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]{% + \squarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]% +\ifnextchar|{\cubep}{\cubep|mmmm|}}% +\def\cubep|#1|{\ifnextchar/{\cubepp|#1|}{\cubepp|#1|/>`>`>`>/}}% + +\def\isquare{\ifnextchar({\isquarep}{\isquarep(\default,\default)}}% +\def\isquarep(#1){\ifnextchar|{\isquarepp(#1)}{\isquarepp(#1)|alrb|}}% +\def\isquarepp(#1)|#2|{\ifnextchar/{\isquareppp(#1)|#2|}% + {\isquareppp(#1)|#2|/>`>`>`>/}}% +\def\isquareppp(#1)|#2|/#3`#4`#5`#6/{% + \ifnextchar<{\isquarepppp(#1)|#2|/#3`#4`#5`#6/}% + {\isquarepppp(#1)|#2|/#3`#4`#5`#6/<500,500>}}% + +\def\cubepp|#1#2#3#4|/#5`#6`#7`#8/[#9]{% +\def\next[##1`##2`##3`##4]{\gdef\Labela{##1}% +\gdef\Labelb{##2}\gdef\Labelc{##3}\gdef\Labeld{##4}}\next[#9]% +\xend\xpos \yend\ypos% +\Xend\xend\advance\Xend by -\Xpos% +\Yend\yend\advance\Yend by -\Ypos% +\domorphism(\Xpos,\Ypos)|#2|/#6/<\Xend,\Yend>[\Nodeb`\nodeb;\Labelb]% +\advance\Xpos by-\deltaX% +\advance\xend by-\deltax% +\Xend\xend\advance\Xend by -\Xpos% +\domorphism(\Xpos,\Ypos)|#1|/#5/<\Xend,\Yend>[\Nodea`\nodea;\Labela]% +\advance\Ypos by-\deltaY% +\advance\yend by-\deltay% +\Yend\yend\advance\Yend by -\Ypos% +\domorphism(\Xpos,\Ypos)|#3|/#7/<\Xend,\Yend>[\Nodec`\nodec;\Labelc]% +\advance\Xpos by\deltaX% +\advance\xend by\deltax% +\Xend\xend\advance\Xend by -\Xpos% +\domorphism(\Xpos,\Ypos)|#4|/#8/<\Xend,\Yend>[\Noded`\noded;\Labeld]% +\ignorespaces}% + +\def\setwdth#1#2{\setbox0\hbox{$\labelstyle#1$}\wdth=\wd0% +\setbox0\hbox{$\labelstyle#2$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi}% + +\def\topppp/#1/<#2>^#3_#4{\:% +\ifnum#2=0% + \setwdth{#3}{#4}\deltax=\wdth \divide \deltax by \ul% + \advance \deltax by \defaultmargin \ratchet{\deltax}{200}% +\else \deltax #2% +\fi% +\xy\ar@{#1}^{#3}_{#4}(\deltax,0) \endxy% +\:}% + +\def\toppp/#1/<#2>^#3{\ifnextchar_{\topppp/#1/<#2>^{#3}}{\topppp/#1/<#2>^{#3}_{}}}% +\def\topp/#1/<#2>{\ifnextchar^{\toppp/#1/<#2>}{\toppp/#1/<#2>^{}}}% +\def\toop/#1/{\ifnextchar<{\topp/#1/}{\topp/#1/<0>}}% +\def\to{\ifnextchar/{\toop}{\toop/>/}}% + + +\def\mon{\to/ >->/}% +\def\epi{\to/->>/}% +\def\toleft{\to/<-/}% +\def\monleft{\to/<-< /}% +\def\epileft{\to/<<-/}% + + +\def\twopppp/#1`#2/<#3>^#4_#5{\:% +\ifnum0=#3% + \setwdth{#4}{#5}\deltax=\wdth \divide \deltax by \ul \advance \deltax% + by \defaultmargin \ratchet{\deltax}{200}% +\else \deltax#3 \fi% +\xy\ar@{#1}@<2.5pt>^{#4}(\deltax,0)% +\ar@{#2}@<-2.5pt>_{#5}(\deltax,0)\endxy\:}% + +\def\twoppp/#1`#2/<#3>^#4{\ifnextchar_{\twopppp/#1`#2/<#3>^{#4}}% + {\twopppp/#1`#2/<#3>^{#4}_{}}}% +\def\twopp/#1`#2/<#3>{\ifnextchar^{\twoppp/#1`#2/<#3>}{\twoppp/#1`#2/<#3>^{}}}% +\def\twop/#1`#2/{\ifnextchar<{\twopp/#1`#2/}{\twopp/#1`#2/<0>}}% +\def\two{\ifnextchar/{\twop}{\twop/>`>/}}% + +\def\twoleft{\two/<-`<-/}% + +\def\threeppppp/#1`#2`#3/<#4>^#5|#6_#7{\:% +\ifnum0=#4% +\setbox0\hbox{$\labelstyle#5$}\wdth=\wd0% +\setbox0\hbox{$\labelstyle#6$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi% +\setbox0\hbox{$\labelstyle#7$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi% +\deltax=\wdth \divide \deltax by \ul \advance \deltax by% +\defaultmargin \ratchet{\deltax}{300}% +\else\deltax#4 \fi% + \xy \ifnum\wd0=0 \ar@{#2}(\deltax,0)% + \else \ar@{#2}|{#6}(\deltax,0)\fi% +\ar@{#1}@<4.5pt>^{#5}(\deltax,0)% +\ar@{#3}@<-4.5pt>_{#7}(\deltax,0)\endxy\:}% + +\def\threepppp/#1`#2`#3/<#4>^#5|#6{\ifnextchar_{\threeppppp% + /#1`#2`#3/<#4>^{#5}|{#6}}{\threeppppp/#1`#2`#3/<#4>^{#5}|{#6}_{}}}% +\def\threeppp/#1`#2`#3/<#4>^#5{\ifnextchar|{\threepppp% + /#1`#2`#3/<#4>^{#5}}{\threepppp/#1`#2`#3/<#4>^{#5}|{}}}% +\def\threepp/#1`#2`#3/<#4>{\ifnextchar^{\threeppp/#1`#2`#3/<#4>}% + {\threeppp/#1`#2`#3/<#4>^{}}}% +\def\threep/#1`#2`#3/{\ifnextchar<{\threepp/#1`#2`#3/}% + {\threepp/#1`#2`#3/<0>}}% +\def\three{\ifnextchar/{\threep}{\threep/>`>`>/}}% + + +\def\twoar(#1,#2){{% + \scalefactor{0.1}% + \deltax#1\deltay#2% + \deltaX=\ifnum\deltax<0-\fi\deltax% + \deltaY=\ifnum\deltay<0-\fi\deltay% + \Xend\deltax \multiply \Xend by \deltax% + \Yend\deltay \multiply \Yend by \deltay% + \advance\Xend by \Yend \multiply \Xend by 3% + \ifnum \deltaX > \deltaY% + \multiply \deltaX by 3 \advance \deltaX by \deltaY% + \else% + \multiply \deltaY by 3 \advance \deltaX by \deltaY% + \fi% + \multiply\deltax by 500% + \multiply\deltay by 500% + \xpos\deltax \multiply \xpos by 3 \divide\xpos by \deltaX% + \Xpos\deltax \multiply \Xpos by \deltaX \divide \Xpos by \Xend% + \advance \xpos by \Xpos% + \ypos\deltay \multiply \ypos by 3 \divide\ypos by \deltaX% + \Ypos\deltay \multiply \Ypos by \deltaX \divide \Ypos by \Xend% + \advance \ypos by \Ypos% + \xy \ar@{=>}(\xpos,\ypos) \endxy% +}\ignorespaces}% + +\def\iiixiiipppppp(#1,#2)|#3|/#4/<#5>#6<#7>[#8;#9]{% + \xpos#1\ypos#2\relax% + \def\next|##1##2##3##4##5##6##7|{\def\xa{##1}\def\xb{##2}% + \def\xc{##3}\def\xd{##4}\def\xe{##5}\def\xf{##6}\nextt|##7|}% + \def\nextt|##1##2##3##4##5##6|{\def\xg{##1}\def\xh{##2}% + \def\xi{##3}\def\xj{##4}\def\xk{##5}\def\xl{##6}}% + \next|#3|% + \def\next<##1,##2>{\deltax##1\deltay##2}% + \next<#5>% + \def\next<##1,##2>{\deltaX##1\deltaY##2}% + \next<#7>% + \def\next##1{\topw##1\relax% + \ifodd\topw \def\zl{}\else\def\zl{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zk{}\else\def\zk{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zj{}\else\def\zj{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zi{}\else\def\zi{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zh{}\else\def\zh{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zg{}\else\def\zg{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zf{}\else\def\zf{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\ze{}\else\def\ze{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zd{}\else\def\zd{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zc{}\else\def\zc{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zb{}\else\def\zb{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\za{}\else\def\za{\relax}\fi}% + \next{#6}% + \def\next[##1`##2`##3`##4`##5`##6`##7`##8`##9]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\noded{##4}\def\nodee{##5}\def\nodef{##6}% + \def\nodeg{##7}\def\nodeh{##8}\def\nodei{##9}}% + \next[#8]% + \def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\labela{##1}\def\labelb{##2}\def\labelc{##3}% + \def\labeld{##4}\def\labele{##5}\def\labelf{##6}\nextt[##7]}% + \def\nextt[##1`##2`##3`##4`##5`##6]{% + \def\labelg{##1}\def\labelh{##2}\def\labeli{##3}% + \def\labelj{##4}\def\labelk{##5}\def\labell{##6}}% + \next[#9]% + \def\next/##1`##2`##3`##4`##5`##6`##7/{% +\morphism(\xpos,\ypos)|\xe|/{##5}/<\deltax,0>[\nodeg`\nodeh;\labele]% + \ifx\zi\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\nodeg`0;]\fi% + \ifx\zd\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodeg`0;]\fi% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xf|/{##6}/<\deltax,0>[\nodeh`\nodei;\labelf]% + \ifx\ze\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodeh`0;]\fi% + \advance\xpos by \deltax% + \ifx\zf\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodei`0;]\fi% + \ifx\zl\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodei`0;]\fi% + \advance\ypos by \deltay% + \ifx\zk\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodef`0;]\fi% + \advance\xpos by -\deltax% + \morphism(\xpos,\ypos)|\xd|/{##4}/<\deltax,0>[\nodee`\nodef;\labeld]% + \advance\xpos by -\deltax% + \morphism(\xpos,\ypos)|\xc|/{##3}/<\deltax,0>[\noded`\nodee;\labelc]% + \ifx\zh\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\noded`0;]\fi% + \advance\ypos by \deltay% + \morphism(\xpos,\ypos)|\xa|/{##1}/<\deltax,0>[\nodea`\nodeb;\labela]% + \ifx\zg\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\nodea`0;]\fi% + \ifx\za\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodea`0;]\fi% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xb|/{##2}/<\deltax,0>[\nodeb`\nodec;\labelb]% + \ifx\zb\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodeb`0;]\fi% + \advance\xpos by \deltax% + \ifx\zc\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodec`0;]\fi% + \ifx\zj\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodec`0;]\fi% + \nextt/##7/}% + \def\nextt/##1`##2`##3`##4`##5`##6/{% + \morphism(\xpos,\ypos)|\xi|/{##3}/<0,-\deltay>[\nodec`\nodef;\labeli]% + \advance\xpos by -\deltax% + \morphism(\xpos,\ypos)|\xh|/{##2}/<0,-\deltay>[\nodeb`\nodee;\labelh]% + \advance\xpos by -\deltax% + \morphism(\xpos,\ypos)|\xg|/{##1}/<0,-\deltay>[\nodea`\noded;\labelg]% + \advance\ypos by -\deltay% + \morphism(\xpos,\ypos)|\xj|/{##4}/<0,-\deltay>[\noded`\nodeg;\labelj]% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xk|/{##5}/<0,-\deltay>[\nodee`\nodeh;\labelk]% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xl|/{##6}/<0,-\deltay>[\nodef`\nodei;\labell]}% + \next/#4/\ignorespaces}% + +\def\iiixiii{\ifnextchar({\iiixiiip}{\iiixiiip(0,0)}}% +\def\iiixiiip(#1){\ifnextchar|{\iiixiiipp(#1)}% + {\iiixiiipp(#1)|aammbblmrlmr|}}% +\def\iiixiiipp(#1)|#2|{\ifnextchar/{\iiixiiippp(#1)|#2|}% + {\iiixiiippp(#1)|#2|/>`>`>`>`>`>`>`>`>`>`>`>/}}% +\def\iiixiiippp(#1)|#2|/#3/{% + \ifnextchar<{\iiixiiipppp(#1)|#2|/#3/}% + {\iiixiiipppp(#1)|#2|/#3/<\default,\default>}}% +\def\iiixiiipppp(#1)|#2|/#3/<#4>{\ifnextchar[{\iiixiiippppp(#1)|#2|/#3/% + <#4>0<0,0>}{\iiixiiippppp(#1)|#2|/#3/<#4>}}% +\def\iiixiiippppp(#1)|#2|/#3/<#4>#5{\ifnextchar<% + {\iiixiiipppppp(#1)|#2|/#3/<#4>{#5}}% + {\iiixiiipppppp(#1)|#2|/#3/<#4>{#5}<400,400>}}% + +\def\iiixiipppppp(#1,#2)|#3|/#4/<#5>#6<#7>[#8;#9]{% + \xpos#1\ypos#2\relax% + \def\next|##1##2##3##4##5##6##7|{\def\xa{##1}\def\xb{##2}% + \def\xc{##3}\def\xd{##4}\def\xe{##5}\def\xf{##6}\def\xg{##7}}% + \next|#3|% + \def\next<##1,##2>{\deltax##1\deltay##2}% + \next<#5>% + \deltaX#7 + \topw#6 + \def\next{% + \ifodd\topw \def\za{}\else\def\za{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zb{}\else\def\zb{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zc{}\else\def\zc{\relax}\fi \divide\topw by 2 + \ifodd\topw \def\zd{}\else\def\zd{\relax}\fi}% + \next% + \def\next[##1`##2`##3`##4`##5`##6]{% + \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% + \def\noded{##4}\def\nodee{##5}\def\nodef{##6}}% + \next[#8]% + \def\next[##1`##2`##3`##4`##5`##6`##7]{% + \def\labela{##1}\def\labelb{##2}\def\labelc{##3}% + \def\labeld{##4}\def\labele{##5}\def\labelf{##6}\def\labelg{##7}}% + \next[#9]% + \def\next/##1`##2`##3`##4`##5`##6`##7/{% + \ifx\zc\empty\relax\morphism(\xpos,\ypos)<\deltaX,0>[0`\noded;]\fi% + \advance\xpos by\deltaX% + \morphism(\xpos,\ypos)|\xc|/##3/<\deltax,0>[\noded`\nodee;\labelc]% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xd|/##4/<\deltax,0>[\nodee`\nodef;\labeld]% + \advance\xpos by \deltax% + \ifx\zd\empty\relax \morphism(\xpos,\ypos)<\deltaX,0>[\nodef`0;]\fi% + \advance\xpos by -\deltaX \advance\xpos by -\deltax + \advance\xpos by -\deltax \advance\ypos by \deltay + \ifx\za\empty\relax\morphism(\xpos,\ypos)<\deltaX,0>[0`\nodea;]\fi% + \advance\xpos by\deltaX% + \morphism(\xpos,\ypos)|\xa|/##1/<\deltax,0>[\nodea`\nodeb;\labela]% + \morphism(\xpos,\ypos)|\xe|/##5/<0,-\deltay>[\nodea`\noded;\labele]% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xb|/##2/<\deltax,0>[\nodeb`\nodec;\labelb]% + \morphism(\xpos,\ypos)|\xf|/##6/<0,-\deltay>[\nodeb`\nodee;\labelf]% + \advance\xpos by \deltax% + \morphism(\xpos,\ypos)|\xg|/##7/<0,-\deltay>[\nodec`\nodef;\labelg]% + \ifx\zb\empty\relax \morphism(\xpos,\ypos)<\deltaX,0>[\nodec`0;]\fi}% + \next/#4/\ignorespaces}% + + +\def\iiixii{\ifnextchar({\iiixiip}{\iiixiip(0,0)}}% +\def\iiixiip(#1){\ifnextchar|{\iiixiipp(#1)}% + {\iiixiipp(#1)|aabblmr|}}% +\def\iiixiipp(#1)|#2|{\ifnextchar/{\iiixiippp(#1)|#2|}% + {\iiixiippp(#1)|#2|/>`>`>`>`>`>`>/}}% +\def\iiixiippp(#1)|#2|/#3/{% + \ifnextchar<{\iiixiipppp(#1)|#2|/#3/}% + {\iiixiipppp(#1)|#2|/#3/<\default,\default>}}% +\def\iiixiipppp(#1)|#2|/#3/<#4>{\ifnextchar[{\iiixiippppp(#1)|#2|/#3/% + <#4>{0}<0>}{\iiixiippppp(#1)|#2|/#3/<#4>}}% +\def\iiixiippppp(#1)|#2|/#3/<#4>#5{\ifnextchar<% + {\iiixiipppppp(#1)|#2|/#3/<#4>{#5}}% + {\iiixiipppppp(#1)|#2|/#3/<#4>{#5}<400>}}% + +\def\node#1(#2,#3)[#4]{% +\expandafter\gdef\csname x@#1\endcsname{#2}% +\expandafter\gdef\csname y@#1\endcsname{#3}% +\expandafter\gdef\csname ob@#1\endcsname{#4}% +\ignorespaces}% + +\newcount\xfinish% +\newcount\yfinish% +\def\arrow{\ifnextchar|{\arrowp}{\arrowp|a|}}% +\def\arrowp|#1|{\ifnextchar/{\arrowpp|#1|}{\arrowpp|#1|/>/}}% +\def\arrowpp|#1|/#2/[#3`#4;#5]{% +\xfinish=\csname x@#4\endcsname% +\yfinish=\csname y@#4\endcsname% +\advance\xfinish by -\csname x@#3\endcsname% +\advance\yfinish by -\csname y@#3\endcsname% +\morphism(\csname x@#3\endcsname,\csname y@#3\endcsname)|#1|/{#2}/% +<\xfinish,\yfinish>[\csname ob@#3\endcsname`\csname ob@#4\endcsname;#5]% +}% + + +\def\Loop(#1,#2)#3(#4,#5){\POS(#1,#2)*+!!<0ex,\axis>{#3}\ar@(#4,#5)}% +\def\iloop#1(#2,#3){\xy\Loop(0,0)#1(#2,#3)\endxy}% + + +\catcode`\@=\atcode% +\endinput% +\entrymodifiers={+!!<0pt,\fontdimen22\textfont2>}% + + + + the \xybox does not allow control over *where*,% +inside the that it builds,% +the reference point is to be located.% + +Accordingly, I've just devised a variant that builds% +the same kind of compound , but also sets% +its reference-point to be at the of the% +last within the box; i.e., the for% +the that has been built is at the current% + when the Xy-pic parsing has been completed.% +The LRUD extents are the size of the complete box;% +i.e., *not* the extents of the final .% + +Here is coding that should go in your document's% +preamble -- eventually it should be added to xy.tex% + + + +--------- start of new Xy-pic definitions -------% + + +> \makeatletter % adjust the \catcode of @% + + this is a better definition for the new \xyobjbox% + + \xydef@\xyobjbox#1{\xy% + \let \PATHafterPOS\PATHafterPOS@default% + \let \arsavedPATHafterPOS@@\relax% + \let\afterar@@\relax% + \POS#1\endxyobj\Edge@c={\rectangleEdge}\computeLeftUpness@}% + +> \xydef@\endxyobj{\if\inxy@\else\xyerror@{Unexpected \string\endxy}{}\fi% +> \relax% +> \dimen@=\Y@max \advance\dimen@-\Y@min% +> \ifdim\dimen@<\z@ \dimen@=\z@ \Y@min=\z@ \Y@max=\z@ \fi% +> \dimen@=\X@max \advance\dimen@-\X@min% +> \ifdim\dimen@<\z@ \dimen@=\z@ \X@min=\z@ \X@max=\z@ \fi% +> \edef\tmp@{\egroup% +> \setboxz@h{\kern-\the\X@min \boxz@}% +> \ht\z@=\the\Y@max \dp\z@=-\the\Y@min \wdz@=\the\dimen@% +> \noexpand\maybeunraise@ \raise\dimen@\boxz@% +> \noexpand\recoverXyStyle@ \egroup \noexpand\xy@end% +> \U@c=\the\Y@max \advance\U@c-\the\Y@c% +> \D@c=-\the\Y@min \advance\D@c\the\Y@c% +> \L@c=-\the\X@min \advance\L@c\the\X@c% +> \R@c=\the\X@max \advance\R@c-\the\X@c% +> }\tmp@}% +>% +> \makeatother % revert \catcode of @% +>% +> --------- end of new Xy-pic definitions -------% +\makeatletter% +\gdef\xymerge@MinMax{}% +\xydef@\twocell{\hbox\bgroup\xysave@MinMax\@twocell}% +\xydef@\uppertwocell{\hbox\bgroup\xysave@MinMax\@uppertwocell}% +\xydef@\lowertwocell{\hbox\bgroup\xysave@MinMax\@lowertwocell}% +\xydef@\compositemap{\hbox\bgroup\xysave@MinMax\@compositemap}% +\xydef@\twocelll#1#{\hbox\bgroup\xysave@MinMax\xy@\save\save@\@twocelll{% +#1}}% + +\xydef@\xysave@MinMax{\xdef\xymerge@MinMax{% + \noexpand\ifdim\X@max<\the\X@max \X@max=\the\X@max\noexpand\fi% + \noexpand\ifdim\X@min>\the\X@min \X@min=\the\X@min\noexpand\fi% + \noexpand\ifdim\Y@max<\the\Y@max \Y@max=\the\Y@max\noexpand\fi% + \noexpand\ifdim\Y@min>\the\Y@min \Y@min=\the\Y@min\noexpand\fi% + }}% +\xydef@\drop@Twocell{\boxz@ \xymerge@MinMax}% + + +\xydef@\twocell@DONE{% + \edef\tmp@{\egroup% + \X@min=\the\X@min \X@max=\the\X@max% + \Y@min=\the\Y@min \Y@max=\the\Y@max}\tmp@% + \L@c=\X@c \advance\L@c-\X@min \R@c=\X@max \advance\R@c-\X@c% + \D@c=\Y@c \advance\D@c-\Y@min \U@c=\Y@max \advance\U@c-\Y@c% + \ht\z@=\U@c \dp\z@=\D@c \dimen@=\L@c \advance\dimen@\R@c \wdz@=\dimen@% + \computeLeftUpness@% + \setboxz@h{\kern-\X@p \raise-\Y@c\boxz@ }% + \dimen@=\L@c \advance\dimen@\R@c \wdz@=\dimen@ \ht\z@=\U@c \dp\z@=\D@c% + \Edge@c={\rectangleEdge}\Invisible@false \Hidden@false% + \edef\Drop@@{\noexpand\drop@Twocell% + \noexpand\def\noexpand\Leftness@{\Leftness@}% + \noexpand\def\noexpand\Upness@{\Upness@}}% + \edef\Connect@@{\noexpand\connect@Twocell% + \noexpand\ifdim\X@max<\the\X@max \X@max=\the\X@max\noexpand\fi% + \noexpand\ifdim\X@min>\the\X@min \X@min=\the\X@min\noexpand\fi% + \noexpand\ifdim\Y@max<\the\Y@max \Y@max=\the\Y@max\noexpand\fi% + \noexpand\ifdim\Y@min>\the\Y@min \Y@min=\the\Y@min\noexpand\fi }% + \xymerge@MinMax% +}% +\makeatother% + + diff --git a/Master/texmf-dist/tex/latex/barr/diagram.tex b/Master/texmf-dist/tex/latex/barr/diagram.tex deleted file mode 100644 index 2a322759d3b..00000000000 --- a/Master/texmf-dist/tex/latex/barr/diagram.tex +++ /dev/null @@ -1,1048 +0,0 @@ -% This should appear in a file named diagram.tex -% Copyright 1988,1989 Michael Barr -% Department of Mathematics and Statistics -% McGill University -% 805 Sherbrooke St., W -% Montreal, Quebec, Canada -% H3P 1S4 -% -% barr@triples.math.mcgill.ca -% -% All commercial rights reserved. May be freely distributed -% and used with the following exceptions: -% 1. No commercial use without explicit permission. -% 2. It may not be used by any employee of a telephone -% company. -% 3. It may not be distributed without this notice. -% -% Last revised 91-05-04 - -% Ascii character test: -% 32: 33: ! 34: " 35: # 36: $ 37: % 38: & 39: ' -% 40: ( 41: ) 42: * 43: + 44: , 45: - 46: . 47: / -% 48: 0 49: 1 50: 2 51: 3 52: 4 53: 5 54: 6 55: 7 -% 56: 8 57: 9 58: : 59: ; 60: < 61: = 62: > 63: ? -% 64: @ 65: A 66: B 67: C 68: D 69: E 70: F 71: G -% 72: H 73: I 74: J 75: K 76: L 77: M 78: N 79: O -% 80: P 81: Q 82: R 83: S 84: T 85: U 86: V 87: W -% 88: X 89: Y 90: Z 91: [ 92: \ 93: ] 94: ^ 95: _ -% 96: ` 97: a 98: b 99: c 100: d 101: e 102: f 103: g -% 104: h 105: i 106: j 107: k 108: l 109: m 110: n 111: o -% 112: p 113: q 114: r 115: s 116: t 117: u 118: v 119: w -% 120: x 121: y 122: z 123: { 124: | 125: } 126: ~ - - -\makeatletter - -\def\diagram{\m@th\leftwidth=\z@ \rightwidth=\z@ \topheight=\z@ -\botheight=\z@ \setbox\@picbox\hbox\bgroup} - -\def\enddiagram{\egroup\wd\@picbox\rightwidth\unitlength -\ht\@picbox\topheight\unitlength \dp\@picbox\botheight\unitlength -\hskip\leftwidth\unitlength\box\@picbox} - -\def\bfig{\begin{diagram}} -\def\efig{\end{diagram}} -\newcount\wideness \newcount\leftwidth \newcount\rightwidth -\newcount\highness \newcount\topheight \newcount\botheight - -\def\ratchet#1#2{\ifnum#1<#2 \global #1=#2 \fi} - -\def\putbox(#1,#2)#3{% -\horsize{\wideness}{#3} \divide\wideness by 2 -{\advance\wideness by #1 \ratchet{\rightwidth}{\wideness}} -{\advance\wideness by -#1 \ratchet{\leftwidth}{\wideness}} -\vertsize{\highness}{#3} \divide\highness by 2 -{\advance\highness by #2 \ratchet{\topheight}{\highness}} -{\advance\highness by -#2 \ratchet{\botheight}{\highness}} -\put(#1,#2){\makebox(0,0){$#3$}}} - -\def\putlbox(#1,#2)#3{% -\horsize{\wideness}{#3} -{\advance\wideness by #1 \ratchet{\rightwidth}{\wideness}} -{\ratchet{\leftwidth}{-#1}} -\vertsize{\highness}{#3} \divide\highness by 2 -{\advance\highness by #2 \ratchet{\topheight}{\highness}} -{\advance\highness by -#2 \ratchet{\botheight}{\highness}} -\put(#1,#2){\makebox(0,0)[l]{$#3$}}} - -\def\putrbox(#1,#2)#3{% -\horsize{\wideness}{#3} -{\ratchet{\rightwidth}{#1}} -{\advance\wideness by -#1 \ratchet{\leftwidth}{\wideness}} -\vertsize{\highness}{#3} \divide\highness by 2 -{\advance\highness by #2 \ratchet{\topheight}{\highness}} -{\advance\highness by -#2 \ratchet{\botheight}{\highness}} -\put(#1,#2){\makebox(0,0)[r]{$#3$}}} - - -\def\adjust[#1]{} % For compatibility - -\newcount \coefa -\newcount \coefb -\newcount \coefc -\newcount\tempcounta -\newcount\tempcountb -\newcount\tempcountc -\newcount\tempcountd -\newcount\xext -\newcount\yext -\newcount\xoff -\newcount\yoff -\newcount\gap% -\newcount\arrowtypea -\newcount\arrowtypeb -\newcount\arrowtypec -\newcount\arrowtyped -\newcount\arrowtypee -\newcount\height -\newcount\width -\newcount\xpos -\newcount\ypos -\newcount\run -\newcount\rise -\newcount\arrowlength -\newcount\halflength -\newcount\arrowtype -\newdimen\tempdimen -\newdimen\xlen -\newdimen\ylen -\newsavebox{\tempboxa}% -\newsavebox{\tempboxb}% -\newsavebox{\tempboxc}% - -\newdimen\w@dth - -\def\setw@dth#1#2{\setbox\z@\hbox{\m@th$#1$}\w@dth=\wd\z@ -\setbox\@ne\hbox{\m@th$#2$}\ifnum\w@dth<\wd\@ne \w@dth=\wd\@ne \fi -\advance\w@dth by 1.2em} - -%The definitions below look more elaborate than they need to be. -%The reason is that an empty asscript will still cause extra vertical -%spacing and the only way to avoid ugly extra space seems to be using -%some such method as this. - -\def\t@^#1_#2{\allowbreak\def\n@one{#1}\def\n@two{#2}\mathrel -{\setw@dth{#1}{#2} -\mathop{\hbox to \w@dth{\rightarrowfill}}\limits -\ifx\n@one\empty\else ^{\box\z@}\fi -\ifx\n@two\empty\else _{\box\@ne}\fi}} -%\def\t@^#1_#2{\mathrel{\mathop{\hbox{\rightarrowfill}}\limits -%^{\mkern12mu#1\mkern12mu}_{\mkern12mu#2\mkern12mu}}} -\def\t@@^#1{\@ifnextchar_{\t@^{#1}}{\t@^{#1}_{}}} -\def\to{\@ifnextchar^{\t@@}{\t@@^{}}} - -\def\t@left^#1_#2{\def\n@one{#1}\def\n@two{#2}\mathrel{\setw@dth{#1}{#2} -\mathop{\hbox to \w@dth{\leftarrowfill}}\limits -\ifx\n@one\empty\else ^{\box\z@}\fi -\ifx\n@two\empty\else _{\box\@ne}\fi}} -%\def\t@left^#1_#2{\mathrel{\mathop{\hbox{\leftarrowfill}}\limits -%^{\mkern12mu#1\mkern12mu}_{\mkern12mu#2\mkern12mu}}} -\def\t@@left^#1{\@ifnextchar_{\t@left^{#1}}{\t@left^{#1}_{}}} -\def\toleft{\@ifnextchar^{\t@@left}{\t@@left^{}}} - -\def\two@^#1_#2{\allowbreak -\def\n@one{#1}\def\n@two{#2}\mathrel{\setw@dth{#1}{#2} -\mathop{\vcenter{\lineskip\z@\baselineskip\z@ - \hbox to \w@dth{\rightarrowfill}% - \hbox to \w@dth{\rightarrowfill}}% - }\limits -\ifx\n@one\empty\else ^{\box\z@}\fi -\ifx\n@two\empty\else _{\box\@ne}\fi}} -\def\tw@@^#1{\@ifnextchar _{\two@^{#1}}{\two@^{#1}_{}}} -\def\two{\@ifnextchar ^{\tw@@}{\tw@@^{}}} - -\def\tofr@^#1_#2{\def\n@one{#1}\def\n@two{#2}\mathrel{\setw@dth{#1}{#2} -\mathop{\vcenter{\hbox to \w@dth{\rightarrowfill}\kern-1.7ex - \hbox to \w@dth{\leftarrowfill}}% - }\limits -\ifx\n@one\empty\else ^{\box\z@}\fi -\ifx\n@two\empty\else _{\box\@ne}\fi}} -\def\t@fr@^#1{\@ifnextchar_ {\tofr@^{#1}}{\tofr@^{#1}_{}}} -\def\tofro{\@ifnextchar^ {\t@fr@}{\t@fr@^{}}} - -\def\epi{\mathop{\mathchar"221\mkern -12mu\mathchar"221}\limits} -\def\leftepi{\mathop{\mathchar"220\mkern -12mu\mathchar"220}\limits} -\def\mon{\mathop{\m@th\hbox to - 14.6\P@{\lasyb\char'51\hskip-2.1\P@$\arrext$\hss -$\mathord\rightarrow$}}\limits} % width of \epi -\def\leftmono{\mathrel{\m@th\hbox to -14.6\P@{$\mathord\leftarrow$\hss$\arrext$\hskip-2.1\P@\lasyb\char'50% -}}\limits} % width of \epi -\mathchardef\arrext="0200 % amr minus for arrow extension (see \into) - - -\setlength{\unitlength}{.01em}% -\def\settypes(#1,#2,#3){\arrowtypea#1 \arrowtypeb#2 \arrowtypec#3} -\def\settoheight#1#2{\setbox\@tempboxa\hbox{#2}#1\ht\@tempboxa\relax}% -\def\settodepth#1#2{\setbox\@tempboxa\hbox{#2}#1\dp\@tempboxa\relax}% -\def\settokens`#1`#2`#3`#4`{% - \def\tokena{#1}\def\tokenb{#2}\def\tokenc{#3}\def\tokend{#4}} -\def\setsqparms[#1`#2`#3`#4;#5`#6]{% -\arrowtypea #1 -\arrowtypeb #2 -\arrowtypec #3 -\arrowtyped #4 -\width #5 -\height #6 -} -\def\setpos(#1,#2){\xpos=#1 \ypos#2} - - - -\def\settriparms[#1`#2`#3;#4]{\settripairparms[#1`#2`#3`1`1;#4]}% - -\def\settripairparms[#1`#2`#3`#4`#5;#6]{% -\arrowtypea #1 -\arrowtypeb #2 -\arrowtypec #3 -\arrowtyped #4 -\arrowtypee #5 -\width #6 -\height #6 -} - -\def\resetparms{\settripairparms[1`1`1`1`1;500]\width 500}%default values% - -\resetparms - -\def\mvector(#1,#2)#3{%% -\put(0,0){\vector(#1,#2){#3}}% -\put(0,0){\vector(#1,#2){26}}% -} -\def\evector(#1,#2)#3{{%% -\arrowlength #3 -\put(0,0){\vector(#1,#2){\arrowlength}}% -\advance \arrowlength by-30 -\put(0,0){\vector(#1,#2){\arrowlength}}% -}} - -\def\horsize#1#2{% -\settowidth{\tempdimen}{$#2$}% -#1=\tempdimen -\divide #1 by\unitlength -} - -\def\vertsize#1#2{% -\settoheight{\tempdimen}{$#2$}% -#1=\tempdimen -\settodepth{\tempdimen}{$#2$}% -\advance #1 by\tempdimen -\divide #1 by\unitlength -} - -\def\putvector(#1,#2)(#3,#4)#5#6{{% -\ifnum3<\arrowtype -\putdashvector(#1,#2)(#3,#4)#5\arrowtype -\else -\ifnum\arrowtype<-3 -\putdashvector(#1,#2)(#3,#4)#5\arrowtype -\else -\xpos=#1 -\ypos=#2 -\run=#3 -\rise=#4 -\arrowlength=#5 -\ifnum \arrowtype<0 - \ifnum \run=0 - \advance \ypos by-\arrowlength - \else - \tempcounta \arrowlength - \multiply \tempcounta by\rise - \divide \tempcounta by\run - \ifnum\run>0 - \advance \xpos by\arrowlength - \advance \ypos by\tempcounta - \else - \advance \xpos by-\arrowlength - \advance \ypos by-\tempcounta - \fi - \fi - \multiply \arrowtype by-1 - \multiply \rise by-1 - \multiply \run by-1 -\fi -\ifcase \arrowtype -\or \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}% -\or \put(\xpos,\ypos){\mvector(\run,\rise)\arrowlength}% -\or \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}% -\fi\fi\fi -}} - -\def\putsplitvector(#1,#2)#3#4{%% -\xpos #1 -\ypos #2 -\arrowtype #4 -\halflength #3 -\arrowlength #3 -\gap 140 -\advance \halflength by-\gap -\divide \halflength by2 -\ifnum\arrowtype>0 - \ifcase \arrowtype - \or \put(\xpos,\ypos){\line(0,-1){\halflength}}% - \advance\ypos by-\halflength - \advance\ypos by-\gap - \put(\xpos,\ypos){\vector(0,-1){\halflength}}% - \or \put(\xpos,\ypos){\line(0,-1)\halflength}% - \put(\xpos,\ypos){\vector(0,-1)3}% - \advance\ypos by-\halflength - \advance\ypos by-\gap - \put(\xpos,\ypos){\vector(0,-1){\halflength}}% - \or \put(\xpos,\ypos){\line(0,-1)\halflength}% - \advance\ypos by-\halflength - \advance\ypos by-\gap - \put(\xpos,\ypos){\evector(0,-1){\halflength}}% - \fi -\else \arrowtype=-\arrowtype - \ifcase\arrowtype - \or \advance \ypos by-\arrowlength - \put(\xpos,\ypos){\line(0,1){\halflength}}% - \advance\ypos by\halflength - \advance\ypos by\gap - \put(\xpos,\ypos){\vector(0,1){\halflength}}% - \or \advance \ypos by-\arrowlength - \put(\xpos,\ypos){\line(0,1)\halflength}% - \put(\xpos,\ypos){\vector(0,1)3}% - \advance\ypos by\halflength - \advance\ypos by\gap - \put(\xpos,\ypos){\vector(0,1){\halflength}}% - \or \advance \ypos by-\arrowlength - \put(\xpos,\ypos){\line(0,1)\halflength}% - \advance\ypos by\halflength - \advance\ypos by\gap - \put(\xpos,\ypos){\evector(0,1){\halflength}}% - \fi -\fi -} - -\def\putmorphism(#1)(#2,#3)[#4`#5`#6]#7#8#9{{% -\run #2 -\rise #3 -\ifnum\rise=0 - \puthmorphism(#1)[#4`#5`#6]{#7}{#8}#9% -\else\ifnum\run=0 - \putvmorphism(#1)[#4`#5`#6]{#7}{#8}#9% -\else -\setpos(#1)% -\arrowlength #7 -\arrowtype #8 -\ifnum\run=0 -\else\ifnum\rise=0 -\else -\ifnum\run>0 - \coefa=1 -\else - \coefa=-1 -\fi -\ifnum\arrowtype>0 - \coefb=0 - \coefc=-1 -\else - \coefb=\coefa - \coefc=1 - \arrowtype=-\arrowtype -\fi -\width=2 -\multiply \width by\run -\divide \width by\rise -\ifnum \width<0 \width=-\width\fi -\advance\width by60 -\if l#9 \width=-\width\fi -\putbox(\xpos,\ypos){#4}% %node 1 -{\multiply \coefa by\arrowlength% %node 2 -\advance\xpos by\coefa -\multiply \coefa by\rise -\divide \coefa by\run -\advance \ypos by\coefa -\putbox(\xpos,\ypos){#5} }% -{\multiply \coefa by\arrowlength% %label -\divide \coefa by2 -\advance \xpos by\coefa -\advance \xpos by\width -\multiply \coefa by\rise -\divide \coefa by\run -\advance \ypos by\coefa -\if l#9% - \putrbox(\xpos,\ypos){#6}% -\else\if r#9% - \putlbox(\xpos,\ypos){#6}% -\fi\fi }% -{\multiply \rise by-\coefc% %arrow -\multiply \run by-\coefc -\multiply \coefb by\arrowlength -\advance \xpos by\coefb -\multiply \coefb by\rise -\divide \coefb by\run -\advance \ypos by\coefb -\multiply \coefc by70 -\advance \ypos by\coefc -\multiply \coefc by\run -\divide \coefc by\rise -\advance \xpos by\coefc -\multiply \coefa by140 -\multiply \coefa by\run -\divide \coefa by\rise -\advance \arrowlength by\coefa -\ifcase\arrowtype -\or \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}% -\or \put(\xpos,\ypos){\mvector(\run,\rise){\arrowlength}}% -\or \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}% -\fi}\fi\fi\fi\fi}} - - -\newcount\numbdashes \newcount\lengthdash \newcount\increment - -\def\howmanydashes{% Actually returns both number and length -\numbdashes=\arrowlength \lengthdash=40 -\divide\numbdashes by \lengthdash -\lengthdash=\arrowlength -\divide\lengthdash by \numbdashes -%This futzing around is to minimize round-off error. -\increment=\lengthdash -\multiply\lengthdash by 3 -\divide\lengthdash by 5 -} - -\def\putdashvector(#1)(#2,#3)#4#5{% -\ifnum#3=0 \putdashhvector(#1){#4}#5 -\else -\ifnum#2=0 -\putdashvvector(#1){#4}#5\fi\fi} - -\def\putdashhvector(#1,#2)#3#4{{% -\arrowlength=#3 \howmanydashes -\multiput(#1,#2)(\increment,0){\numbdashes}% -{\vrule height .4pt width \lengthdash\unitlength} -\arrowtype=#4 \xpos=#1 -\ifnum\arrowtype<0 \advance\arrowtype by 7 \fi -\ifcase\arrowtype -\or \advance\xpos by 10 - \put(\xpos,#2){\vector(-1,0){\lengthdash}} - \advance\xpos by 40 - \put(\xpos,#2){\vector(-1,0){\lengthdash}} -\or \advance \xpos by 10 - \put(\xpos,#2){\vector(-1,0){\lengthdash}} - \advance\xpos by \arrowlength - \advance\xpos by -50 - \put(\xpos,#2){\vector(-1,0){\lengthdash}} -\or \advance\xpos by 10 - \put(\xpos,#2){\vector(-1,0){\lengthdash}} -\or \advance\xpos by \arrowlength - \advance\xpos by -\lengthdash - \put(\xpos,#2){\vector(1,0){\lengthdash}} -\or {\advance\xpos by 10 - \put(\xpos,#2){\vector(1,0){\lengthdash}}} - \advance\xpos by \arrowlength - \advance\xpos by -\lengthdash - \put(\xpos,#2){\vector(1,0){\lengthdash}} -\or \advance\xpos by \arrowlength - \advance\xpos by -\lengthdash - \put(\xpos,#2){\vector(1,0){\lengthdash}} - \advance\xpos by -40 - \put(\xpos,#2){\vector(1,0){\lengthdash}} - \fi -}} - -\def\putdashvvector(#1,#2)#3#4{{% -\arrowlength=#3 \howmanydashes -\ypos=#2 \advance\ypos by -\arrowlength -\multiput(#1,#2)(0,\increment){\numbdashes}% - {\vrule width .4pt height \lengthdash\unitlength} -\arrowtype=#4 \ypos=#2 -\ifnum\arrowtype<0 \advance\arrowtype by 7 \fi -\ifcase\arrowtype -\or \advance\ypos by \arrowlength \advance\ypos by -40 - \put(#1,\ypos){\vector(0,1){\lengthdash}} - \advance\ypos by -40 - \put(#1,\ypos){\vector(0,1){\lengthdash}} -\or \advance\ypos by 10 - \put(#1,\ypos){\vector(0,1){\lengthdash}} - \advance\ypos by \arrowlength \advance\ypos by -40 - \put(#1,\ypos){\vector(0,1){\lengthdash}} -\or \advance\ypos by \arrowlength \advance\ypos by -40 - \put(#1,\ypos){\vector(0,1){\lengthdash}} -\or \advance\ypos by 10 - \put(#1,\ypos){\vector(0,-1){\lengthdash}} -\or \advance\ypos by 10 - \put(#1,\ypos){\vector(0,-1){\lengthdash}} - \advance\ypos by \arrowlength \advance\ypos by -40 - \put(#1,\ypos){\vector(0,-1){\lengthdash}} -\or \advance\ypos by 10 - \put(#1,\ypos){\vector(0,-1){\lengthdash}} - \advance\ypos by 40 - \put(#1,\ypos){\vector(0,-1){\lengthdash}} -\fi -}} - -\def\puthmorphism(#1,#2)[#3`#4`#5]#6#7#8{{% -\xpos #1 -\ypos #2 -\width #6 -\arrowlength #6 -\arrowtype=#7 -\putbox(\xpos,\ypos){#3\vphantom{#4}}% -{\advance \xpos by\arrowlength -\putbox(\xpos,\ypos){\vphantom{#3}#4}}% -\horsize{\tempcounta}{#3}% -\horsize{\tempcountb}{#4}% -\divide \tempcounta by2 -\divide \tempcountb by2 -\advance \tempcounta by30 -\advance \tempcountb by30 -\advance \xpos by\tempcounta -\advance \arrowlength by-\tempcounta -\advance \arrowlength by-\tempcountb -\putvector(\xpos,\ypos)(1,0)\arrowlength\arrowtype -\divide \arrowlength by2 -\advance \xpos by\arrowlength -\vertsize{\tempcounta}{#5}% -\divide\tempcounta by2 -\advance \tempcounta by20 -\if a#8 % - \advance \ypos by\tempcounta - \putbox(\xpos,\ypos){#5}% -\else - \advance \ypos by-\tempcounta - \putbox(\xpos,\ypos){#5}% -\fi}} - -\def\putvmorphism(#1,#2)[#3`#4`#5]#6#7#8{{% -\xpos #1 -\ypos #2 -\arrowlength #6 -\arrowtype #7 -\settowidth{\xlen}{$#5$}% -\putbox(\xpos,\ypos){#3}% -{\advance \ypos by-\arrowlength -\putbox(\xpos,\ypos){#4}}% -{\advance\arrowlength by-140 -\advance \ypos by-70 -\ifdim\xlen>0pt - \if m#8% - \putsplitvector(\xpos,\ypos)\arrowlength\arrowtype - \else - \putvector(\xpos,\ypos)(0,-1)\arrowlength\arrowtype - \fi -\else - \putvector(\xpos,\ypos)(0,-1)\arrowlength\arrowtype -\fi}% -\ifdim\xlen>0pt - \divide \arrowlength by2 - \advance\ypos by-\arrowlength - \if l#8% - \advance \xpos by-40 - \putrbox(\xpos,\ypos){#5}% - \else\if r#8% - \advance \xpos by40 - \putlbox(\xpos,\ypos){#5}% - \else - \putbox(\xpos,\ypos){#5}% - \fi\fi -\fi -}} - -\def\putsquarep<#1>(#2)[#3;#4`#5`#6`#7]{{% -\setsqparms[#1]% -\setpos(#2)% -\settokens`#3`% -\puthmorphism(\xpos,\ypos)[\tokenc`\tokend`{#7}]{\width}{\arrowtyped}b% -\advance\ypos by \height -\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\width}{\arrowtypea}a% -\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}l% -\advance\xpos by \width -\putvmorphism(\xpos,\ypos)[``{#6}]{\height}{\arrowtypec}r% -}} - -\def\putsquare{\@ifnextchar <{\putsquarep}{\putsquarep% - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}} -\def\square{\@ifnextchar< {\squarep}{\squarep - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}} - % #6 -\def\squarep<#1>[#2`#3`#4`#5;#6`#7`#8`#9]{{% % #2------>#3 -\setsqparms[#1]% % | | -\diagram% % | | -\putsquarep<\arrowtypea`\arrowtypeb`\arrowtypec`% % #7| |#8 -\arrowtyped;\width`\height>% % | | -(0,0)[#2`#3`#4`{#5};#6`#7`#8`{#9}]% % | | -\enddiagram% % v v -}} % #4------>#5 - % #9 -\def\putptrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\advance\ypos by \height -\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a% -\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}l% -\advance\xpos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% -}} - -\def\putptriangle{\@ifnextchar <{\putptrianglep}{\putptrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\ptriangle{\@ifnextchar <{\ptrianglep}{\ptrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #5 -\def\ptrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % #2----->#3 -\settriparms[#1]% % | / -\diagram% % | / -\putptrianglep<\arrowtypea`\arrowtypeb`% % #6| /#7 -\arrowtypec;\height>% % | / -(0,0)[#2`#3`#4;#5`#6`{#7}]% % | / -\enddiagram%% % v v -}} % #4 - -\def\putqtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\advance\ypos by\height -\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a% -\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}l% -\advance\xpos by\height -\putvmorphism(\xpos,\ypos)[`#6`{#9}]{\height}{\arrowtypec}r% -}} - -\def\putqtriangle{\@ifnextchar <{\putqtrianglep}{\putqtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\qtriangle{\@ifnextchar <{\qtrianglep}{\qtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #5 -\def\qtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % #2----->#3 -\settriparms[#1]% % \ | -\width=\height % \ | -\diagram% % #6\ |#7 -\putqtrianglep<\arrowtypea`\arrowtypeb`% % \ | -\arrowtypec;\height>% % \ | -(0,0)[#2`#3`#4;#5`#6`{#7}]% % v v -\enddiagram%% % #4 -}} - -\def\putdtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b% -\advance\xpos by \height \advance\ypos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[``{#7}]{\height}{\arrowtypea}l% -\putvmorphism(\xpos,\ypos)[#4``{#8}]{\height}{\arrowtypeb}r% -}} - -\def\putdtriangle{\@ifnextchar <{\putdtrianglep}{\putdtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\dtriangle{\@ifnextchar <{\dtrianglep}{\dtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #2 -\def\dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % / | -\settriparms[#1]% % / | -\width=\height % #5/ |#6 -\diagram% % / | -\putdtrianglep<\arrowtypea`\arrowtypeb`% % / | -\arrowtypec;\height>% % v v -(0,0)[#2`#3`#4;#5`#6`{#7}]% % #3----->#4 -\enddiagram%% % #7 -}} - -\def\putbtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b% -\advance\ypos by\height -\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r% -\putvmorphism(\xpos,\ypos)[#4``{#7}]{\height}{\arrowtypea}l% -}} - -\def\putbtriangle{\@ifnextchar <{\putbtrianglep}{\putbtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\btriangle{\@ifnextchar <{\btrianglep}{\btrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #2 -\def\btrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % | \ -\settriparms[#1]% % | \ -\width=\height % #5| \#6 -\diagram% % | \ -\putbtrianglep<\arrowtypea`\arrowtypeb`% % | \ -\arrowtypec;\height>% % v v -(0,0)[#2`#3`#4;#5`#6`{#7}]% % #3----->#4 -\enddiagram%% % #7 -}} - -\def\putAtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -{\multiply \height by2 -\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b}% -\advance\xpos by\height \advance\ypos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[#4``{#7}]{\height}{\arrowtypea}l% -\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r% -}} - -\def\putAtriangle{\@ifnextchar <{\putAtrianglep}{\putAtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\Atriangle{\@ifnextchar <{\Atrianglep}{\Atrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #2 -\def\Atrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % / \ -\settriparms[#1]% % / \ -\width=\height % #5/ \#6 -\diagram% % / \ -\putAtrianglep<\arrowtypea`\arrowtypeb`% % / \ -\arrowtypec;\height>% % v v -(0,0)[#2`#3`#4;#5`#6`{#7}]% % #3------------>#4 -\enddiagram%% % #7 -}} - -\def\putAtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{% -\settripairparms[#1]% -\setpos(#2)% -\settokens`#3`% -\puthmorphism(\xpos,\ypos)[\tokenb`\tokenc`{#7}]{\height}{\arrowtyped}b% -\advance\xpos by\height -\puthmorphism(\xpos,\ypos)[\phantom{\tokenc}`\tokend`{#8}]% -{\height}{\arrowtypee}b% -\advance\ypos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[\tokena``{#4}]{\height}{\arrowtypea}l% -\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}m% -\putmorphism(\xpos,\ypos)(1,-1)[``{#6}]{\height}{\arrowtypec}r% -}} - -\def\putAtrianglepair{\@ifnextchar <{\putAtrianglepairp}{\putAtrianglepairp% - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} -\def\Atrianglepair{\@ifnextchar <{\Atrianglepairp}{\Atrianglepairp% - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} - -\def\Atrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{% % #2a -\settripairparms[#1]% % / | \ -\settokens`#2`% % / | \ -\width=\height % #3/ #4 \#5 -\diagram% % / | \ -\putAtrianglepairp % / | \ -<\arrowtypea`\arrowtypeb`\arrowtypec`% % v v v -\arrowtyped`\arrowtypee;\height>% % #2b---->#2c---->#2d -(0,0)[{#2};#3`#4`#5`#6`{#7}]% % #6 #7 -\enddiagram%% -}} - -\def\putVtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\advance\ypos by\height -{\multiply\height by2 -\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a}% -\putmorphism(\xpos,\ypos)(1,-1)[`#6`{#8}]{\height}{\arrowtypeb}l% -\advance\xpos by\height -\advance\xpos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% -}} - -\def\putVtriangle{\@ifnextchar <{\putVtrianglep}{\putVtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\Vtriangle{\@ifnextchar <{\Vtrianglep}{\Vtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #5 -\def\Vtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % #2------------->#3 -\settriparms[#1]% % \ / -\width=\height % \ / -\diagram% % #6\ /#7 -\putVtrianglep<\arrowtypea`\arrowtypeb`% % \ / -\arrowtypec;\height>% % \ / -(0,0)[#2`#3`#4;#5`#6`{#7}]% % v v -\enddiagram%% % #4 -}} - -\def\putVtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{ -\settripairparms[#1]% -\setpos(#2)% -\settokens`#3`% -\advance\ypos by\height -\putmorphism(\xpos,\ypos)(1,-1)[`\tokend`{#6}]{\height}{\arrowtypec}l% -\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\height}{\arrowtypea}a% -\advance\xpos by\height -\puthmorphism(\xpos,\ypos)[\phantom{\tokenb}`\tokenc`{#5}]% -{\height}{\arrowtypeb}a% -\putvmorphism(\xpos,\ypos)[``{#7}]{\height}{\arrowtyped}m% -\advance\xpos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[``{#8}]{\height}{\arrowtypee}r% -}} - -\def\putVtrianglepair{\@ifnextchar <{\putVtrianglepairp}{\putVtrianglepairp% - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} -\def\Vtrianglepair{\@ifnextchar <{\Vtrianglepairp}{\Vtrianglepairp% - <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}} - % #3 #4 -\def\Vtrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{% % #2a---->#2b---->#2c -\settripairparms[#1]% % \ | / -\settokens`#2`% % \ | / -\diagram% % #5\ #6 /#7 -\putVtrianglepairp % \ | / -<\arrowtypea`\arrowtypeb`\arrowtypec`% % \ | / -\arrowtyped`\arrowtypee;\height>% % v v v -(0,0)[{#2};#3`#4`#5`#6`{#7}]% % #2d -\enddiagram%% -}} - - -\def\putCtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\advance\ypos by\height -\putmorphism(\xpos,\ypos)(1,-1)[``{#9}]{\height}{\arrowtypec}l% -\advance\xpos by\height -\advance\ypos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[#4`#5`{#7}]{\height}{\arrowtypea}l% -{\multiply\height by 2 -\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}r}% -}} - -\def\putCtriangle{\@ifnextchar <{\putCtrianglep}{\putCtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\Ctriangle{\@ifnextchar <{\Ctrianglep}{\Ctrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #2 -\def\Ctrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % / | -\settriparms[#1]% % #5/ | -\width=\height % / | -\diagram% % v | -\putCtrianglep<\arrowtypea`\arrowtypeb`% % #3 |#6 -\arrowtypec;\height>% % \ | -(0,0)[#2`#3`#4;#5`#6`{#7}]% % #7\ | -\enddiagram%% % \ | -}} % v v - % #4 -\def\putDtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{% -\settriparms[#1]% -\xpos=#2 \ypos=#3 -\advance\xpos by\height \advance\ypos by\height -\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r% -\advance\xpos by-\height \advance\ypos by\height -\putmorphism(\xpos,\ypos)(1,-1)[`#5`{#8}]{\height}{\arrowtypeb}r% -{\multiply\height by 2 -\putvmorphism(\xpos,\ypos)[#4`#6`{#7}]{\height}{\arrowtypea}l}% -}} - -\def\putDtriangle{\@ifnextchar <{\putDtrianglep}{\putDtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} -\def\Dtriangle{\@ifnextchar <{\Dtrianglep}{\Dtrianglep - <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}} - % #2 -\def\Dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% % | \ -\settriparms[#1]% % | \#6 -\width=\height % | \ -\diagram% % | v -\putDtrianglep<\arrowtypea`\arrowtypeb`% % #5| #3 -\arrowtypec;\height>% % | / -(0,0)[#2`#3`#4;#5`#6`{#7}]% % | /#7 -\enddiagram%% % | / -}} % v v - % #4 -\def\setrecparms[#1`#2]{\width=#1 \height=#2}% -% #4 -% #3b<-------#3a x #3b -% ^ | | -% / | | -% #5/ | | -% / | | -% / | | -% / | | -% #3c |#6 |#3a x #5 -% \ | | -% \ | | -% #8\ | | -% \ | | -% \ | | -% v v v -% #3d<-------#3a x #3d -% #8 - -\def\recursep<#1`#2>[#3;#4`#5`#6`#7`#8]{{\m@th -\width=#1 \height=#2 -\settokens`#3` -\settowidth{\tempdimen}{$\tokena$} -\ifdim\tempdimen=0pt - \savebox{\tempboxa}{\hbox{$\tokenb$}}% - \savebox{\tempboxb}{\hbox{$\tokend$}}% - \savebox{\tempboxc}{\hbox{$#6$}}% -\else - \savebox{\tempboxa}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokenb$}$}}% - \savebox{\tempboxb}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokend$}$}}% - \savebox{\tempboxc}{\hbox{$\hbox{$\tokena$}\times\hbox{$#6$}$}}% -\fi -\ypos=\height -\divide\ypos by 2 -\xpos=\ypos -\advance\xpos by \width -\bfig -\putCtrianglep<-1`1`1;\ypos>(0,0)[`\tokenc`;#5`#6`{#7}]% -\puthmorphism(\ypos,0)[\tokend`\usebox{\tempboxb}`{#8}]{\width}{-1}b% -\puthmorphism(\ypos,\height)[\tokenb`\usebox{\tempboxa}`{#4}]{\width}{-1}a% -\advance\ypos by \width -\putvmorphism(\ypos,\height)[``\usebox{\tempboxc}]{\height}1r% -\efig -}} - -\def\recurse{\@ifnextchar <{\recursep}{\recursep<\width`\height>}} - -\def\puttwohmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{% -% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels, -% 7 the distance between node centers and 8 & 9 are the arrow types. -% #5 -% #3 ===========> #4 -% #6 -% -\puthmorphism(#1,#2)[#3`#4`]{#7}0a -\ypos=#2 -\advance\ypos by 20 -\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}a -\advance\ypos by -40 -\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}b -}} - -\def\puttwovmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{% -% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels, -% 7 the distance between node centers and 8 & 9 are the arrow types. -% -% #3 -% || -% || -% #5 || #6 -% || -% || -% vv -% #4 -% -\putvmorphism(#1,#2)[#3`#4`]{#7}0a -\xpos=#1 -\advance\xpos by -20 -\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}l -\advance\xpos by 40 -\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}r -}} - -\def\puthcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{% -% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels -% #8 is the distance between each pair of nodes and #9 is the pos of #7 -% either a (above) or b (below) -% #5 #7 -% #2 ===========> #3 --------> #4 -% #6 -% -\setpos(#1)% -\puttwohmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11% -\advance\xpos by #8 -\puthmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9} -}} - -\def\putvcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{% -% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels -% #8 is the distance between each pair of nodes and #9 is the pos of #7 -% either l (left) or r (right) -% -% #2 -% | | -% | | -% #5 | | #6 -% | | -% | | -% v v -% #3 -% | -% | -% #7 | -% | -% v -% #4 -% -\setpos(#1)% -\puttwovmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11% -\advance\ypos by -#8 -\putvmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9} -}} - -\def\putthreehmorphisms(#1)[#2`#3;#4`#5`#6]#7(#8)#9{{% -% Use: \putthreehmorphisms(xpos,ypos)[lnode`rnode;toplabel`midlabel% -% botlabel]{distance}(toparrowtype,midarrowtype,botarrowtype){position} -\setpos(#1) \settypes(#8) -\if a#9 % - \vertsize{\tempcounta}{#5}% - \vertsize{\tempcountb}{#6}% - \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi -\else - \vertsize{\tempcounta}{#4}% - \vertsize{\tempcountb}{#5}% - \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi -\fi -\advance \tempcounta by 60 -\puthmorphism(\xpos,\ypos)[#2`#3`#5]{#7}{\arrowtypeb}{#9} -\advance\ypos by \tempcounta -\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#4]{#7}{\arrowtypea}{#9} -\advance\ypos by -\tempcounta \advance\ypos by -\tempcounta -\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#6]{#7}{\arrowtypec}{#9} -}} - -\def\setarrowtoks[#1`#2`#3`#4`#5`#6]{% -\def\toka{#1} -\def\tokb{#2} -\def\tokc{#3} -\def\tokd{#4} -\def\toke{#5} -\def\tokf{#6} -} -\def\hex{\@ifnextchar <{\hexp}{\hexp<1000`400>}} -\def\hexp<#1`#2>[#3`#4`#5`#6`#7`#8;#9]{% -\setarrowtoks[#9] -\yext=#2 \advance \yext by #2 -\xext=#1 \advance\xext by \yext -\bfig -\putCtriangle<-1`0`1;#2>(0,0)[`#5`;\tokb``\tokd] -\xext=#1 \yext=#2 \advance \yext by #2 -\putsquare<1`0`0`1;\xext`\yext>(#2,0)[#3`#4`#7`#8;\toka```\tokf] -\advance \xext by #2 -\putDtriangle<0`1`-1;#2>(\xext,0)[`#6`;`\tokc`\toke] -\efig -} -%\def\doublecomplex[#1`#2`#3`#4`#5`#6`#7`#8`#9]{% -%\bfig -%\putsquare<0`0`1`1;500`500>(0,1700)[`\vdots`\cdots`{#1};```] -%\puthmorphism(500,1700)[\ph{#1}`\cdots`]{500}1a -%\puthmorphism(1000,1700)[\ph{\cdots}`\ph{#2}`]{500}1a -%\putsquare<0`1`1`1;700`500>(1500,1700)[\vdots`\vdots`{#2}`{#3};```] -%\puthmorphism(2200,1700)[\ph{#3}`0`]{500}1a -%\putvmorphism(500,1700)[`\vdots`]{400}1a \putvmorphism(500,1300)[``]{400}1a -%\putvmorphism(1500,1700)[`\vdots`]{400}1a \putvmorphism(1500,1300)[``]{400}1a -%\putvmorphism(2200,1700)[`\vdots`]{400}1a \putvmorphism(2200,1300)[``]{400}1a -%\putsquare<1`0`1`1;500`500>(0,400)[\cdots`{#4}`\cdots`{#7};```] -%\puthmorphism(500,900)[\ph{#1}`\cdots`]{500}1a -%\puthmorphism(1000,900)[\ph{\cdots}`\ph{#2}`]{500}1a -%\puthmorphism(500,400)[\ph{#1}`\cdots`]{500}1a -%\puthmorphism(1000,400)[\ph{\cdots}`\ph{#2}`]{500}1a -%\putsquare<1`1`1`1;700`500>(1500,400)[{#5}`{#6}`{#8}`{#9};```] -%\puthmorphism(2200,900)[\ph{#6}`0`]{500}1a -%\puthmorphism(2200,400)[\ph{#9}`0`]{500}1a -%\putvmorphism(500,400)[`0`]{400}1a -%\putvmorphism(1500,400)[`0`]{400}1a -%\putvmorphism(2200,400)[`0`]{400}1a -%\efig -%} -% -%\def\doublecocomplex[#1`#2`#3`#4`#5`#6`#7`#8`#9]{% -%\bfig -%\putsquare<0`0`-1`-1;500`500>(0,1700)[`\vdots`\cdots`{#1};```] -%\puthmorphism(500,1700)[\ph{#1}`\cdots`]{500}{-1}a -%\puthmorphism(1000,1700)[\ph{\cdots}`\ph{#2}`]{500}{-1}a -%\putsquare<0`-1`-1`-1;500`500>(1500,1700)[\vdots`\vdots`{#2}`{#3};```] -%\puthmorphism(2000,1700)[\ph{#3}`0`]{500}{-1}a -%\putvmorphism(500,1700)[`\vdots`]{400}{-1}a \putvmorphism(500,1300)[``]{400}{-1}a -%\putvmorphism(1500,1700)[`\vdots`]{400}{-1}a \putvmorphism(1500,1300)[``]{400}{-1}a -%\putvmorphism(2000,1700)[`\vdots`]{400}{-1}a \putvmorphism(2000,1300)[``]{400}{-1}a -%\putsquare<-1`0`-1`-1;500`500>(0,400)[\cdots`{#4}`\cdots`{#7};```] -%\puthmorphism(500,900)[\ph{#1}`\cdots`]{500}{-1}a -%\puthmorphism(1000,900)[\ph{\cdots}`\ph{#2}`]{500}{-1}a -%\puthmorphism(500,400)[\ph{#1}`\cdots`]{500}{-1}a -%\puthmorphism(1000,400)[\ph{\cdots}`\ph{#2}`]{500}{-1}a -%\putsquare<-1`-1`-1`-1;500`500>(1500,400)[{#5}`{#6}`{#8}`{#9};```] -%\puthmorphism(2000,900)[\ph{#6}`0`]{500}{-1}a -%\puthmorphism(2000,400)[\ph{#9}`0`]{500}{-1}a -%\putvmorphism(500,400)[`0`]{400}{-1}a -%\putvmorphism(1500,400)[`0`]{400}{-1}a -%\putvmorphism(2000,400)[`0`]{400}{-1}a -%\efig -%} -\makeatother diff --git a/Master/texmf-dist/tex/latex/barr/diagxy.tex b/Master/texmf-dist/tex/latex/barr/diagxy.tex deleted file mode 100644 index 5fc36e7cf54..00000000000 --- a/Master/texmf-dist/tex/latex/barr/diagxy.tex +++ /dev/null @@ -1,952 +0,0 @@ - \def\dated#1{\def\thedate{#1}} - \dated{2001-10-14} - % This is a package of commutative diagram macros built on top of Xy-pic - % by Michael Barr (email: barr@barrs.org). Its use is unrestricted. It - % may be freely distributed, unchanged, for non-commercial or commercial - % use. If changed, it must be renamed. Inclusion in a commercial - % software package is also permitted, but I would appreciate receiving a - % free copy for my personal examination and use. There are no guarantees - % that this package is good for anything. I have tested it with LaTeX 2e, - % LaTeX 2.09 and Plain TeX. Although I know of no reason it will not work - % with AMSTeX, I have not tested it. - -\input xy -\xyoption{arrow} - -\newdir{ >}{{ }*!/-9pt/@{>}} -\newdir{ (}{{ }*!/-5pt/@{(}} -\newdir^{ (}{{ }*!/-5pt/@^{(}} -\newdir{< }{!/9pt/@{<}*{ }} - -\newbox\Label% -\newdimen\high% -\newdimen\deep% -\newdimen\ul% -\newcount\deltax% -\newcount\deltay% -\newcount\deltaX% -\newcount\deltaY% - -\newdimen\wdth -\newcount\xend% -\newcount\yend% -\newcount\Xend -\newcount\Yend -\newcount\xpos% -\newcount\ypos% -\newcount\default \default=500% -\newcount\defaultmargin \defaultmargin=150 -\newcount\topw% -\newcount\botw% -\newcount\Xpos% -\newcount\Ypos% -\def\ratchet#1#2{\ifnum#1<#2\global #1=#2\fi}% - -\newcount\atcode \atcode=\catcode`\@% -\catcode`\@=11 -\expandafter\ifx\csname @ifnextchar\endcsname\relax -\def\ifnextchar#1#2#3{\let\@tempe -#1\def\@tempa{#2}\def\@tempb{#3}\futurelet - \@tempc\@ifnch}% -\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch - \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi - \fi \@tempd}% -\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token -\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch}% -\else -\let\ifnextchar\@ifnextchar -\fi -\ul=.01em% -\X@xbase =.01em% -\Y@ybase =.01em% -\def\scalefactor#1{\ul=#1\ul \X@xbase=#1\X@xbase \Y@ybase=#1\Y@ybase}% -\catcode`\@=12% - -\def\fontscale#1{% -\if#1h\relax -\font\xydashfont=xydash10 scaled \magstephalf -\font\xyatipfont=xyatip10 scaled \magstephalf -\font\xybtipfont=xybtip10 scaled \magstephalf -\font\xybsqlfont=xybsql10 scaled \magstephalf -\font\xycircfont=xycirc10 scaled \magstephalf -\else -\font\xydashfont=xydash10 scaled \magstep#1% -\font\xyatipfont=xyatip10 scaled \magstep#1% -\font\xybtipfont=xybtip10 scaled \magstep#1% -\font\xybsqlfont=xybsql10 scaled \magstep#1% -\font\xycircfont=xycirc10 scaled \magstep#1% -\fi} - -\let\bfig\xy% -\let\efig\endxy% - -\def\car#1#2\nil{#1}% - -\def\morphism{\ifnextchar({\morphismp}{\morphismp(0,0)}}% -\def\morphismp(#1){\ifnextchar|{\morphismpp(#1)}{\morphismpp(#1)|a|}}% -\def\morphismpp(#1)|#2|{\ifnextchar/{\morphismppp(#1)|#2|}% - {\morphismppp(#1)|#2|/>/}}% -\def\morphismppp(#1)|#2|/#3/{% - \ifnextchar<{\morphismpppp(#1)|#2|/#3/}% - {\morphismpppp(#1)|#2|/#3/<\default,0>}}% - -\def\morphismpppp(#1,#2)|#3|/#4/<#5,#6>[#7`#8;#9]{% -\xend#1\advance \xend by #5% -\yend#2\advance \yend by #6% -\domorphism(#1,#2)|#3|/#4/<#5,#6>[#7`#8;#9]} - -\def\domorphism(#1,#2)|#3|/#4/<#5,#6>[#7`#8;#9]{% -\edef\next{#4}% -\ifx\next\empty\relax - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{} (\xend,\yend)*+!!<0ex,.75ex>{#8}% -\else \def\next{\car#4\nil}\fi -\if@\next\relax - \if#3l% - \ifnum #6>0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3m% - \setbox0\hbox{$#9$}% - \ifdim \wd0=0pt - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4 (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else - \setbox\Label=\hbox{\kern .5pt $\labelstyle #9$\kern .5pt}% - \high=\ht\Label \advance\high by 2pt \ht\Label=\high% - \deep=\dp\Label \advance\deep by 2pt \dp\Label=\deep% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4|-{\box\Label} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi - \else \if#3r% - \ifnum #6<0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3a% - \ifnum #5>0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3b% - \ifnum #5<0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar#4 (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi\fi\fi\fi\fi% -\else% -\edef\next{#4}% - \ifx\next\empty\relax - \POS(#1,#2)*+!!<0ex,.75ex>{#7}; (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else \edef\next{#4}% - \ifx\next\empty\relax - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else \if#3l% - \ifnum #6>0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3m% - \setbox0\hbox{$#9$}% - \ifdim \wd0=0pt - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else - \setbox\Label=\hbox{\kern .5pt $\labelstyle #9$\kern .5pt}% - \high=\ht\Label \advance\high by 2pt \ht\Label=\high% - \deep=\dp\Label \advance\deep by 2pt \dp\Label=\deep% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}|-{\box\Label} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi - \else \if#3r% - \ifnum #6<0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3a% - \ifnum #5>0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else \if#3b% - \ifnum #5<0% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}^-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \else% - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4}_-{#9} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi% - \else - \POS(#1,#2)*+!!<0ex,.75ex>{#7}\ar@{#4} (\xend,\yend)*+!!<0ex,.75ex>{#8}% - \fi\fi\fi\fi\fi\fi\fi% -\fi\ignorespaces}% - -\def\squarepppp(#1,#2)|#3|/#4`#5`#6`#7/<#8>[#9]{% -\xpos#1\ypos#2% -\def\next|##1##2##3##4|{% - \def\xa{##1}\def\xb{##2}\def\xc{##3}\def\xd{##4}\ignorespaces}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#8>% -\def\next[##1`##2`##3`##4;##5`##6`##7`##8]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% - \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\ignorespaces}% -\next[#9]% -\morphism(\xpos,\ypos)|\xd|/{#7}/<\deltax,0>[\nodec`\noded;\labeld]% -\advance \ypos by \deltay% -\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% - \advance \xpos by \deltax% -\morphism(\xpos,\ypos)|\xc|/{#6}/<0,-\deltay>[\nodeb`\noded;\labelc]% -\ignorespaces}% - -\def\square{\ifnextchar({\squarep}{\squarep(0,0)}}% -\def\squarep(#1){\ifnextchar|{\squarepp(#1)}{\squarepp(#1)|alrb|}}% -\def\squarepp(#1)|#2|{\ifnextchar/{\squareppp(#1)|#2|}% - {\squareppp(#1)|#2|/>`>`>`>/}}% -\def\squareppp(#1)|#2|/#3`#4`#5`#6/{% - \ifnextchar<{\squarepppp(#1)|#2|/#3`#4`#5`#6/}% - {\squarepppp(#1)|#2|/#3`#4`#5`#6/<\default,\default>}}% - -\def\ptrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% -\ignorespaces}% - -\def\qtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xc|/{#6}/<0,-\deltay>[\nodeb`\nodec;\labelc]% -\ignorespaces}% - -\def\dtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% -\advance\ypos by \deltay\advance \xpos by \deltax% -\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\ignorespaces}% - -\def\btrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#4}/<0,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% -\ignorespaces}% - -\def\Atrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\multiply\deltax by 2% -\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,0>[\nodeb`\nodec;\labelc]% -\divide\deltax by 2 -\advance\ypos by \deltay\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% -\ignorespaces}% - -\def\Vtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% -\multiply\deltax by 2% -\morphism(\xpos,\ypos)|\xa|/{#4}/<\deltax,0>[\nodea`\nodeb;\labela]% -\advance\xpos by \deltax \divide \deltax by 2 -\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% -\ignorespaces}% - -\def\Ctrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\advance \ypos by \deltay% -\morphism(\xpos,\ypos)|\xc|/{#6}/<\deltax,-\deltay>[\nodeb`\nodec;\labelc]% -\advance\ypos by \deltay \advance \xpos by \deltax% -\morphism(\xpos,\ypos)|\xa|/{#4}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% -\multiply\deltay by 2% -\morphism(\xpos,\ypos)|\xb|/{#5}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\ignorespaces}% - -\def\Dtrianglepppp(#1,#2)|#3|/#4`#5`#6/<#7>[#8]{% -\xpos#1\ypos#2% -\def\next|##1##2##3|{\def\xa{##1}\def\xb{##2}\def\xc{##3}}% -\next|#3|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#7>% -\def\next[##1`##2`##3;##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\labela{##4}\def\labelb{##5}\def\labelc{##6}}% -\next[#8]% -\advance\xpos by \deltax \advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xc|/{#6}/<-\deltax,-\deltay>[\nodeb`\nodec;\labelc]% -\advance\xpos by -\deltax \advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xb|/{#5}/<\deltax,-\deltay>[\nodea`\nodeb;\labelb]% -\multiply \deltay by 2% -\morphism(\xpos,\ypos)|\xa|/{#4}/<0,-\deltay>[\nodea`\nodec;\labela]% -\ignorespaces}% - -\def\ptriangle{\ifnextchar({\ptrianglep}{\ptrianglep(0,0)}}% -\def\ptrianglep(#1){\ifnextchar|{\ptrianglepp(#1)}{\ptrianglepp(#1)|alr|}}% -\def\ptrianglepp(#1)|#2|{\ifnextchar/{\ptriangleppp(#1)|#2|}% - {\ptriangleppp(#1)|#2|/>`>`>/}}% -\def\ptriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\ptrianglepppp(#1)|#2|/#3`#4`#5/}% - {\ptrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\qtriangle{\ifnextchar({\qtrianglep}{\qtrianglep(0,0)}}% -\def\qtrianglep(#1){\ifnextchar|{\qtrianglepp(#1)}{\qtrianglepp(#1)|alr|}}% -\def\qtrianglepp(#1)|#2|{\ifnextchar/{\qtriangleppp(#1)|#2|}% - {\qtriangleppp(#1)|#2|/>`>`>/}}% -\def\qtriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\qtrianglepppp(#1)|#2|/#3`#4`#5/}% - {\qtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\dtriangle{\ifnextchar({\dtrianglep}{\dtrianglep(0,0)}}% -\def\dtrianglep(#1){\ifnextchar|{\dtrianglepp(#1)}{\dtrianglepp(#1)|lrb|}}% -\def\dtrianglepp(#1)|#2|{\ifnextchar/{\dtriangleppp(#1)|#2|}% - {\dtriangleppp(#1)|#2|/>`>`>/}}% -\def\dtriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\dtrianglepppp(#1)|#2|/#3`#4`#5/}% - {\dtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\btriangle{\ifnextchar({\btrianglep}{\btrianglep(0,0)}}% -\def\btrianglep(#1){\ifnextchar|{\btrianglepp(#1)}{\btrianglepp(#1)|lrb|}}% -\def\btrianglepp(#1)|#2|{\ifnextchar/{\btriangleppp(#1)|#2|}% - {\btriangleppp(#1)|#2|/>`>`>/}}% -\def\btriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\btrianglepppp(#1)|#2|/#3`#4`#5/}% - {\btrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\Atriangle{\ifnextchar({\Atrianglep}{\Atrianglep(0,0)}}% -\def\Atrianglep(#1){\ifnextchar|{\Atrianglepp(#1)}{\Atrianglepp(#1)|lrb|}}% -\def\Atrianglepp(#1)|#2|{\ifnextchar/{\Atriangleppp(#1)|#2|}% - {\Atriangleppp(#1)|#2|/>`>`>/}}% -\def\Atriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\Atrianglepppp(#1)|#2|/#3`#4`#5/}% - {\Atrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\Vtriangle{\ifnextchar({\Vtrianglep}{\Vtrianglep(0,0)}}% -\def\Vtrianglep(#1){\ifnextchar|{\Vtrianglepp(#1)}{\Vtrianglepp(#1)|alb|}}% -\def\Vtrianglepp(#1)|#2|{\ifnextchar/{\Vtriangleppp(#1)|#2|}% - {\Vtriangleppp(#1)|#2|/>`>`>/}}% -\def\Vtriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\Vtrianglepppp(#1)|#2|/#3`#4`#5/}% - {\Vtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\Ctriangle{\ifnextchar({\Ctrianglep}{\Ctrianglep(0,0)}}% -\def\Ctrianglep(#1){\ifnextchar|{\Ctrianglepp(#1)}{\Ctrianglepp(#1)|arb|}}% -\def\Ctrianglepp(#1)|#2|{\ifnextchar/{\Ctriangleppp(#1)|#2|}% - {\Ctriangleppp(#1)|#2|/>`>`>/}}% -\def\Ctriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\Ctrianglepppp(#1)|#2|/#3`#4`#5/}% - {\Ctrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - -\def\Dtriangle{\ifnextchar({\Dtrianglep}{\Dtrianglep(0,0)}}% -\def\Dtrianglep(#1){\ifnextchar|{\Dtrianglepp(#1)}{\Dtrianglepp(#1)|alb|}}% -\def\Dtrianglepp(#1)|#2|{\ifnextchar/{\Dtriangleppp(#1)|#2|}% - {\Dtriangleppp(#1)|#2|/>`>`>/}}% -\def\Dtriangleppp(#1)|#2|/#3`#4`#5/{% - \ifnextchar<{\Dtrianglepppp(#1)|#2|/#3`#4`#5/}% - {\Dtrianglepppp(#1)|#2|/#3`#4`#5/<\default,\default>}}% - - -\def\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% -\def\next(##1,##2){\xpos##1\ypos##2}% -\next(#1)% -\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% -\def\xc{##3}\def\xd{##4}\def\xe{##5}}% -\next|#2|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#8>% -\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% - \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% -\next[#9]% -\morphism(\xpos,\ypos)|\xd|/{#6}/<\deltax,0>[\nodeb`\nodec;\labeld]% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xe|/{#7}/<\deltax,0>[\nodec`\noded;\labele]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#3}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#4}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,-\deltay>[\nodea`\noded;\labelc]% -\ignorespaces}% - -\def\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% -\def\next(##1,##2){\xpos##1\ypos##2}% -\next(#1)% -\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% -\def\xc{##3}\def\xd{##4}\def\xe{##5}}% -\next|#2|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#8>% -\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% - \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% -\next[#9]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#3}/<\deltax,0>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,-\deltay>[\nodea`\noded;\labelc]% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xb|/{#4}/<\deltax,0>[\nodeb`\nodec;\labelb]% -\morphism(\xpos,\ypos)|\xd|/{#6}/<0,-\deltay>[\nodeb`\noded;\labeld]% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xe|/{#7}/<-\deltax,-\deltay>[\nodec`\noded;\labele]% -\ignorespaces}% - -\def\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% -\def\next(##1,##2){\xpos##1\ypos##2}% -\next(#1)% -\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% -\def\xc{##3}\def\xd{##4}\def\xe{##5}}% -\next|#2|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#8>% -\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% - \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% -\next[#9]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xe|/{#7}/<0,-\deltay>[\nodec`\noded;\labele]% -\advance\xpos by -\deltax% -\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,0>[\nodeb`\nodec;\labelc]% -\morphism(\xpos,\ypos)|\xd|/{#6}/<\deltax,-\deltay>[\nodeb`\noded;\labeld]% -\advance\ypos by \deltay% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xa|/{#3}/<-\deltax,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#4}/<0,-\deltay>[\nodea`\nodec;\labelb]% -\ignorespaces}% - -\def\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<#8>[#9]{% -\def\next(##1,##2){\xpos##1\ypos##2}% -\next(#1)% -\def\next|##1##2##3##4##5|{\def\xa{##1}\def\xb{##2}% -\def\xc{##3}\def\xd{##4}\def\xe{##5}}% -\next|#2|% -\def\next<##1,##2>{\deltax=##1\deltay=##2\ignorespaces}% -\next<#8>% -\def\next[##1`##2`##3`##4;##5`##6`##7`##8`##9]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}\def\noded{##4}% - \def\labela{##5}\def\labelb{##6}\def\labelc{##7}\def\labeld{##8}\def\labele{##9}}% -\next[#9]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xc|/{#5}/<\deltax,0>[\nodeb`\nodec;\labelc]% -\morphism(\xpos,\ypos)|\xd|/{#6}/<0,-\deltay>[\nodeb`\noded;\labeld]% -\advance\ypos by \deltay% -\morphism(\xpos,\ypos)|\xa|/{#3}/<0,-\deltay>[\nodea`\nodeb;\labela]% -\morphism(\xpos,\ypos)|\xb|/{#4}/<\deltax,-\deltay>[\nodea`\nodec;\labelb]% -\advance\ypos by -\deltay% -\advance\xpos by \deltax% -\morphism(\xpos,\ypos)|\xe|/{#7}/<-\deltax,-\deltay>[\nodec`\noded;\labele]% -\ignorespaces}% - -\def\Atrianglepair{\ifnextchar({\Atrianglepairp}{\Atrianglepairp(0,0)}}% -\def\Atrianglepairp(#1){\ifnextchar|{\Atrianglepairpp(#1)}% -{\Atrianglepairpp(#1)|lmrbb|}}% -\def\Atrianglepairpp(#1)|#2|{\ifnextchar/{\Atrianglepairppp(#1)|#2|}% - {\Atrianglepairppp(#1)|#2|/>`>`>`>`>/}}% -\def\Atrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% - \ifnextchar<{\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% - {\Atrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% - -\def\Vtrianglepair{\ifnextchar({\Vtrianglepairp}{\Vtrianglepairp(0,0)}}% -\def\Vtrianglepairp(#1){\ifnextchar|{\Vtrianglepairpp(#1)}% -{\Vtrianglepairpp(#1)|aalmr|}}% -\def\Vtrianglepairpp(#1)|#2|{\ifnextchar/{\Vtrianglepairppp(#1)|#2|}% - {\Vtrianglepairppp(#1)|#2|/>`>`>`>`>/}}% -\def\Vtrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% - \ifnextchar<{\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% - {\Vtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% - -\def\Ctrianglepair{\ifnextchar({\Ctrianglepairp}{\Ctrianglepairp(0,0)}}% -\def\Ctrianglepairp(#1){\ifnextchar|{\Ctrianglepairpp(#1)}% -{\Ctrianglepairpp(#1)|lrmlr|}}% -\def\Ctrianglepairpp(#1)|#2|{\ifnextchar/{\Ctrianglepairppp(#1)|#2|}% - {\Ctrianglepairppp(#1)|#2|/>`>`>`>`>/}}% -\def\Ctrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% - \ifnextchar<{\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% - {\Ctrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% - -\def\Dtrianglepair{\ifnextchar({\Dtrianglepairp}{\Dtrianglepairp(0,0)}}% -\def\Dtrianglepairp(#1){\ifnextchar|{\Dtrianglepairpp(#1)}% -{\Dtrianglepairpp(#1)|lrmlr|}}% -\def\Dtrianglepairpp(#1)|#2|{\ifnextchar/{\Dtrianglepairppp(#1)|#2|}% - {\Dtrianglepairppp(#1)|#2|/>`>`>`>`>/}}% -\def\Dtrianglepairppp(#1)|#2|/#3`#4`#5`#6`#7/{% - \ifnextchar<{\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/}% - {\Dtrianglepairpppp(#1)|#2|/#3`#4`#5`#6`#7/<\default,\default>}}% - -\def\place(#1,#2)[#3]{\POS(#1,#2)*+!!<0ex,.75ex>{#3}\ignorespaces}% - -\def\pullback#1]#2]{\square#1]\trident#2]\ignorespaces}% - -\def\tridentppp|#1#2#3|/#4`#5`#6/<#7,#8>[#9]{% -\def\next[##1;##2`##3`##4]{\def\nodee{##1}\def\labele{##2}% - \def\labelf{##3}\def\labelg{##4}}% -\next[#9]% -\advance \xpos by -\deltax% -\advance \xpos by -#7\advance \ypos by #8% -\advance\deltax by #7% -\morphism(\xpos,\ypos)|#1|/{#4}/<\deltax,-#8>[\nodee`\nodeb;\labele]% -\advance\deltax by -#7% -\morphism(\xpos,\ypos)|#2|/{#5}/<#7,-#8>[\nodee`\nodea;\labelf]% -\advance\deltay by #8% -\morphism(\xpos,\ypos)|#3|/{#6}/<#7,-\deltay>[\nodee`\nodec;\labelg]% -\ignorespaces}% - -\def\trident{\ifnextchar|{\tridentp}{\tridentp|amb|}}% -\def\tridentp|#1|{\ifnextchar/{\tridentpp|#1|}{\tridentpp|#1|/{>}`{>}`{>}/}}% -\def\tridentpp|#1|/#2/{\ifnextchar<{\tridentppp|#1|/#2/}% - {\tridentppp|#1|/#2/<500,500>}}% - -\def\setmorphismwidth#1#2#3#4{% - \setbox0=\hbox{$#1{\labelstyle#3#3}#2$}#4=\wd0% - \divide #4 by 2 \divide #4 by \ul% - \advance #4 by 350 \ratchet{#4}{500}}% - -\def\setSquarewidth[#1`#2`#3`#4;#5`#6`#7`#8]{% - \setmorphismwidth{#1}{#2}{#5}{\topw}% - \setmorphismwidth{#3}{#4}{#8}{\botw}% -\ratchet{\topw}{\botw}}% - -\def\Squarepppp(#1)|#2|/#3/<#4>[#5]{% - \setSquarewidth[#5]% - \squarepppp(#1)|#2|/#3/<\topw,#4>[#5]% -\ignorespaces}% - -\def\Square{\ifnextchar({\Squarep}{\Squarep(0,0)}}% -\def\Squarep(#1){\ifnextchar|{\Squarepp(#1)}{\Squarepp(#1)|alrb|}}% -\def\Squarepp(#1)|#2|{\ifnextchar/{\Squareppp(#1)|#2|}% - {\Squareppp(#1)|#2|/>`>`>`>/}}% -\def\Squareppp(#1)|#2|/#3`#4`#5`#6/{% - \ifnextchar<{\Squarepppp(#1)|#2|/#3`#4`#5`#6/}% - {\Squarepppp(#1)|#2|/#3`#4`#5`#6/<\default>}}% - -\def\hSquarespppp(#1,#2)|#3|/#4/<#5>[#6;#7]{% -\Xpos=#1\Ypos=#2% -\def\next|##1##2##3##4##5##6##7|{% - \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% - \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% -\next|#3|% -\deltaY=#5% -\def\next[##1`##2`##3`##4`##5`##6]{% - \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% - \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% -\next[#6]% -\def\next[##1`##2`##3`##4`##5`##6`##7]{% - \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% - \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% -\next[#7]% -\dohSquares/#4/}% - -\def\dohSquares/#1`#2`#3`#4`#5`#6`#7/{% -\Squarepppp(\Xpos,\Ypos)|\Xa\Xc\Xd\Xf|/#1`#3`#4`#6/<\deltaY>% - [\Nodea`\Nodeb`\Noded`\Nodee;\Labela`\Labelc`\Labeld`\Labelf]% - \advance \Xpos by \topw -\Squarepppp(\Xpos,\Ypos)|\Xb\Xd\Xe\Xg|/#2``#5`#7/<\deltaY>% -[\Nodeb`\Nodec`\Nodee`\Nodef;\Labelb``\Labele`\Labelg]% -\ignorespaces}% - -\def\hSquares{\ifnextchar({\hSquaresp}{\hSquaresp(0,0)}}% -\def\hSquaresp(#1){\ifnextchar|{\hSquarespp(#1)}{\hSquarespp% -(#1)|aalmrbb|}}% -\def\hSquarespp(#1)|#2|{\ifnextchar/{\hSquaresppp(#1)|#2|}% - {\hSquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% -\def\hSquaresppp(#1)|#2|/#3/{% - \ifnextchar<{\hSquarespppp(#1)|#2|/#3/}% - {\hSquarespppp(#1)|#2|/#3/<\default>}}% - -\def\vSquarespppp(#1,#2)|#3|/#4/<#5,#6>[#7;#8]{% -\Xpos=#1\Ypos=#2% -\def\next|##1##2##3##4##5##6##7|{% - \def\Xa{##1}\def\Xb{##2}\def\Xc{##3}\def\Xd{##4}% - \def\Xe{##5}\def\Xf{##6}\def\Xg{##7}}% -\next|#3|% -\deltaX=#5% -\deltaY=#6% -\def\next[##1`##2`##3`##4`##5`##6]{% - \def\Nodea{##1}\def\Nodeb{##2}\def\Nodec{##3}% - \def\Noded{##4}\def\Nodee{##5}\def\Nodef{##6}}% -\next[#7]% -\def\next[##1`##2`##3`##4`##5`##6`##7]{% - \def\Labela{##1}\def\Labelb{##2}\def\Labelc{##3}\def\Labeld{##4}% - \def\Labele{##5}\def\Labelf{##6}\def\Labelg{##7}}% -\next[#8]% -\dovSquares/#4/\ignorespaces}% - -\def\dovSquares/#1`#2`#3`#4`#5`#6`#7/{% -\setmorphismwidth{\Nodea}{\Nodeb}{\Labela}{\topw}% -\setmorphismwidth{\Nodec}{\Noded}{\Labeld}{\botw}% -\ratchet{\topw}{\botw}% -\setmorphismwidth{\Nodee}{\Nodef}{\Labelg}{\botw}% -\ratchet{\topw}{\botw}% -\square(\Xpos,\Ypos)|\Xd\Xe\Xf\Xg|/`#5`#6`#7/<\topw,\deltaX>% - [\Nodec`\Noded`\Nodee`\Nodef;`\Labele`\Labelf`\Labelg]% -\advance \Ypos by \deltaX% -\square(\Xpos,\Ypos)|\Xa\Xb\Xc\Xd|/#1`#2`#3`#4/<\topw,\deltaY>% - [\Nodea`\Nodeb`\Nodec`\Noded;\Labela`\Labelb`\Labelc`\Labeld]% -}% - -\def\vSquares{\ifnextchar({\vSquaresp}{\vSquaresp(0,0)}}% -\def\vSquaresp(#1){\ifnextchar|{\vSquarespp(#1)}{\vSquarespp% -(#1)|alrmlrb|}}% -\def\vSquarespp(#1)|#2|{\ifnextchar/{\vSquaresppp(#1)|#2|}% - {\vSquaresppp(#1)|#2|/>`>`>`>`>`>`>/}}% -\def\vSquaresppp(#1)|#2|/#3/{% - \ifnextchar<{\vSquarespppp(#1)|#2|/#3/}% - {\vSquarespppp(#1)|#2|/#3/<\default,\default>}}% - -\def\osquarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]{\squarepppp% - (#1)|#2|/#3`#4`#5`#6/<#7>[#8]% - \let\Nodea\nodea\let\Nodeb\nodeb% -\let\Nodec\nodec\let\Noded\noded\Xpos=\xpos\Ypos=\ypos% -\deltaX=\deltax \deltaY=\deltay \isquare} - -\def\cube{\ifnextchar({\osquarep}{\osquarep(0,0)}}% -\def\osquarep(#1){\ifnextchar|{\osquarepp(#1)}{\osquarepp(#1)|alrb|}}% -\def\osquarepp(#1)|#2|{\ifnextchar/{\osquareppp(#1)|#2|}% - {\osquareppp(#1)|#2|/>`>`>`>/}}% -\def\osquareppp(#1)|#2|/#3`#4`#5`#6/{% - \ifnextchar<{\osquarepppp(#1)|#2|/#3`#4`#5`#6/}% - {\osquarepppp(#1)|#2|/#3`#4`#5`#6/<1500,1500>}}% - -\def\isquarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]{% - \squarepppp(#1)|#2|/#3`#4`#5`#6/<#7>[#8]% -\ifnextchar|{\cubep}{\cubep|mmmm|}}% -\def\cubep|#1|{\ifnextchar/{\cubepp|#1|}{\cubepp|#1|/>`>`>`>/}}% - -\def\isquare{\ifnextchar({\isquarep}{\isquarep(\default,\default)}}% -\def\isquarep(#1){\ifnextchar|{\isquarepp(#1)}{\isquarepp(#1)|alrb|}} -\def\isquarepp(#1)|#2|{\ifnextchar/{\isquareppp(#1)|#2|}% - {\isquareppp(#1)|#2|/>`>`>`>/}}% -\def\isquareppp(#1)|#2|/#3`#4`#5`#6/{% - \ifnextchar<{\isquarepppp(#1)|#2|/#3`#4`#5`#6/}% - {\isquarepppp(#1)|#2|/#3`#4`#5`#6/<500,500>}}% - -\def\cubepp|#1#2#3#4|/#5`#6`#7`#8/[#9]{% -\def\next[##1`##2`##3`##4]{\gdef\Labela{##1}% -\gdef\Labelb{##2}\gdef\Labelc{##3}\gdef\Labeld{##4}}\next[#9]% -\xend\xpos \yend\ypos -\Xend\xend\advance\Xend by -\Xpos -\Yend\yend\advance\Yend by -\Ypos -\domorphism(\Xpos,\Ypos)|#2|/#6/<\Xend,\Yend>[\Nodeb`\nodeb;\Labelb]% -\advance\Xpos by-\deltaX -\advance\xend by-\deltax -\Xend\xend\advance\Xend by -\Xpos -\domorphism(\Xpos,\Ypos)|#1|/#5/<\Xend,\Yend>[\Nodea`\nodea;\Labela]% -\advance\Ypos by-\deltaY -\advance\yend by-\deltay -\Yend\yend\advance\Yend by -\Ypos -\domorphism(\Xpos,\Ypos)|#3|/#7/<\Xend,\Yend>[\Nodec`\nodec;\Labelc]% -\advance\Xpos by\deltaX -\advance\xend by\deltax -\Xend\xend\advance\Xend by -\Xpos -\domorphism(\Xpos,\Ypos)|#4|/#8/<\Xend,\Yend>[\Noded`\noded;\Labeld]% -\ignorespaces} - -\def\setwdth#1#2{\setbox0\hbox{$\labelstyle#1$}\wdth=\wd0 -\setbox0\hbox{$\labelstyle#2$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi} - -\def\topppp/#1/<#2>^#3_#4{\allowbreak\mathrel{% -\ifnum#2=0 - \setwdth{#3}{#4}\deltax=\wdth \divide \deltax by \ul - \advance \deltax by \defaultmargin \ratchet{\deltax}{200}% -\else \deltax #2 -\fi -\xy\ar@{#1}^{#3}_{#4}(\deltax,0) \endxy -\ignorespaces}} - -\def\toppp/#1/<#2>^#3{\ifnextchar_{\topppp/#1/<#2>^{#3}}{\topppp/#1/<#2>^{#3}_{}}} -\def\topp/#1/<#2>{\ifnextchar^{\toppp/#1/<#2>}{\toppp/#1/<#2>^{}}} -\def\top/#1/{\ifnextchar<{\topp/#1/}{\topp/#1/<0>}} -\def\to{\ifnextchar/{\top}{\top/>/}} - -\def\mon{\to/ >->/} -\def\epi{\to/->>/} -\def\toleft{\to/<-/} -\def\monleft{\to/<-< /} -\def\epileft{\to/<<-/} - - -\def\twopppp/#1`#2/<#3>^#4_#5{\allowbreak\mathrel{% -\ifnum0=#3 - \setwdth{#4}{#5}\deltax=\wdth \divide \deltax by \ul \advance \deltax - by \defaultmargin \ratchet{\deltax}{200}% -\else \deltax#3 \fi -\xy\ar@{#1}@<2.5pt>^{#4}(\deltax,0)% -\ar@{#2}@<-2.5pt>_{#5}(\deltax,0)\endxy\ignorespaces}} - -\def\twoppp/#1`#2/<#3>^#4{\ifnextchar_{\twopppp/#1`#2/<#3>^{#4}}% - {\twopppp/#1`#2/<#3>^{#4}_{}}} -\def\twopp/#1`#2/<#3>{\ifnextchar^{\twoppp/#1`#2/<#3>}{\twoppp/#1`#2/<#3>^{}}} -\def\twop/#1`#2/{\ifnextchar<{\twopp/#1`#2/}{\twopp/#1`#2/<0>}} -\def\two{\ifnextchar/{\twop}{\twop/>`>/}} - -\def\twoleft{\two/<-`<-/} - -\def\threeppppp/#1`#2`#3/<#4>^#5|#6_#7{\allowbreak\mathrel{% -\ifnum0=#4 -\setbox0\hbox{$\labelstyle#5$}\wdth=\wd0 -\setbox0\hbox{$\labelstyle#6$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi -\setbox0\hbox{$\labelstyle#7$}\ifnum\wdth<\wd0 \wdth=\wd0 \fi -\deltax=\wdth \divide \deltax by \ul \advance \deltax by -\defaultmargin \ratchet{\deltax}{300}% -\else\deltax#4 \fi - \xy \ifnum\wd0=0 \ar@{#2}(\deltax,0) - \else \ar@{#2}|{#6}(\deltax,0)\fi -\ar@{#1}@<4.5pt>^{#5}(\deltax,0) -\ar@{#3}@<-4.5pt>_{#7}(\deltax,0)\endxy\ignorespaces}} - -\def\threepppp/#1`#2`#3/<#4>^#5|#6{\ifnextchar_{\threeppppp - /#1`#2`#3/<#4>^{#5}|{#6}}{\threeppppp/#1`#2`#3/<#4>^{#5}|{#6}_{}}} -\def\threeppp/#1`#2`#3/<#4>^#5{\ifnextchar|{\threepppp - /#1`#2`#3/<#4>^{#5}}{\threepppp/#1`#2`#3/<#4>^{#5}|{}}} -\def\threepp/#1`#2`#3/<#4>{\ifnextchar^{\threeppp/#1`#2`#3/<#4>}% - {\threeppp/#1`#2`#3/<#4>^{}}} -\def\threep/#1`#2`#3/{\ifnextchar<{\threepp/#1`#2`#3/}% - {\threepp/#1`#2`#3/<0>}} -\def\three{\ifnextchar/{\threep}{\threep/>`>`>/}} - - -\def\twoar(#1,#2){{% - \scalefactor{0.1} - \deltax#1\deltay#2% - \deltaX=\ifnum\deltax<0-\fi\deltax - \deltaY=\ifnum\deltay<0-\fi\deltay - \Xend\deltax \multiply \Xend by \deltax - \Yend\deltay \multiply \Yend by \deltay - \advance\Xend by \Yend \multiply \Xend by 3 - \ifnum \deltaX > \deltaY - \multiply \deltaX by 3 \advance \deltaX by \deltaY - \else - \multiply \deltaY by 3 \advance \deltaX by \deltaY - \fi - \multiply\deltax by 500 - \multiply\deltay by 500 - \xpos\deltax \multiply \xpos by 3 \divide\xpos by \deltaX - \Xpos\deltax \multiply \Xpos by \deltaX \divide \Xpos by \Xend - \advance \xpos by \Xpos - \ypos\deltay \multiply \ypos by 3 \divide\ypos by \deltaX - \Ypos\deltay \multiply \Ypos by \deltaX \divide \Ypos by \Xend - \advance \ypos by \Ypos - \xy \ar@{=>}(\xpos,\ypos) \endxy -}\ignorespaces} - -\def\iiixiiipppppp(#1,#2)|#3|/#4/<#5>#6<#7>[#8;#9]{% - \xpos#1\ypos#2\relax - \def\next|##1##2##3##4##5##6##7|{\def\xa{##1}\def\xb{##2}% - \def\xc{##3}\def\xd{##4}\def\xe{##5}\def\xf{##6}\nextt|##7|}% - \def\nextt|##1##2##3##4##5##6|{\def\xg{##1}\def\xh{##2}% - \def\xi{##3}\def\xj{##4}\def\xk{##5}\def\xl{##6}}% - \next|#3|% - \def\next<##1,##2>{\deltax##1\deltay##2}% - \next<#5>% - \def\next<##1,##2>{\deltaX##1\deltaY##2}% - \next<#7>% - \def\next##1{\topw##1\relax - \ifodd\topw \def\zl{}\else\def\zl{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zk{}\else\def\zk{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zj{}\else\def\zj{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zi{}\else\def\zi{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zh{}\else\def\zh{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zg{}\else\def\zg{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zf{}\else\def\zf{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\ze{}\else\def\ze{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zd{}\else\def\zd{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zc{}\else\def\zc{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zb{}\else\def\zb{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\za{}\else\def\za{\relax}\fi}% - \next{#6}% - \def\next[##1`##2`##3`##4`##5`##6`##7`##8`##9]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\noded{##4}\def\nodee{##5}\def\nodef{##6}% - \def\nodeg{##7}\def\nodeh{##8}\def\nodei{##9}}% - \next[#8]% - \def\next[##1`##2`##3`##4`##5`##6`##7]{% - \def\labela{##1}\def\labelb{##2}\def\labelc{##3}% - \def\labeld{##4}\def\labele{##5}\def\labelf{##6}\nextt[##7]}% - \def\nextt[##1`##2`##3`##4`##5`##6]{% - \def\labelg{##1}\def\labelh{##2}\def\labeli{##3}% - \def\labelj{##4}\def\labelk{##5}\def\labell{##6}}% - \next[#9]% - \def\next/##1`##2`##3`##4`##5`##6`##7/{% -\morphism(\xpos,\ypos)|\xe|/{##5}/<\deltax,0>[\nodeg`\nodeh;\labele]% - \ifx\zi\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\nodeg`0;]\fi - \ifx\zd\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodeg`0;]\fi - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xf|/{##6}/<\deltax,0>[\nodeh`\nodei;\labelf]% - \ifx\ze\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodeh`0;]\fi - \advance\xpos by \deltax - \ifx\zf\empty\relax \morphism(\xpos,\ypos)||<0,-\deltaY>[\nodei`0;]\fi - \ifx\zl\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodei`0;]\fi - \advance\ypos by \deltay - \ifx\zk\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodef`0;]\fi - \advance\xpos by -\deltax - \morphism(\xpos,\ypos)|\xd|/{##4}/<\deltax,0>[\nodee`\nodef;\labeld]% - \advance\xpos by -\deltax - \morphism(\xpos,\ypos)|\xc|/{##3}/<\deltax,0>[\noded`\nodee;\labelc]% - \ifx\zh\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\noded`0;]\fi - \advance\ypos by \deltay - \morphism(\xpos,\ypos)|\xa|/{##1}/<\deltax,0>[\nodea`\nodeb;\labela]% - \ifx\zg\empty\relax \morphism(\xpos,\ypos)||/<-/<-\deltaX,0>[\nodea`0;]\fi - \ifx\za\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodea`0;]\fi - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xb|/{##2}/<\deltax,0>[\nodeb`\nodec;\labelb]% - \ifx\zb\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodeb`0;]\fi - \advance\xpos by \deltax - \ifx\zc\empty\relax \morphism(\xpos,\ypos)||/<-/<0,\deltaY>[\nodec`0;]\fi - \ifx\zj\empty\relax \morphism(\xpos,\ypos)||<\deltaX,0>[\nodec`0;]\fi - \nextt/##7/}% - \def\nextt/##1`##2`##3`##4`##5`##6/{% - \morphism(\xpos,\ypos)|\xi|/{##3}/<0,-\deltay>[\nodec`\nodef;\labeli]% - \advance\xpos by -\deltax - \morphism(\xpos,\ypos)|\xh|/{##2}/<0,-\deltay>[\nodeb`\nodee;\labelh]% - \advance\xpos by -\deltax - \morphism(\xpos,\ypos)|\xg|/{##1}/<0,-\deltay>[\nodea`\noded;\labelg]% - \advance\ypos by -\deltay - \morphism(\xpos,\ypos)|\xj|/{##4}/<0,-\deltay>[\noded`\nodeg;\labelj]% - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xk|/{##5}/<0,-\deltay>[\nodee`\nodeh;\labelk]% - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xl|/{##6}/<0,-\deltay>[\nodef`\nodei;\labell]}% - \next/#4/\ignorespaces} - -\def\iiixiii{\ifnextchar({\iiixiiip}{\iiixiiip(0,0)}}% -\def\iiixiiip(#1){\ifnextchar|{\iiixiiipp(#1)}% - {\iiixiiipp(#1)|aammbblmrlmr|}}% -\def\iiixiiipp(#1)|#2|{\ifnextchar/{\iiixiiippp(#1)|#2|}% - {\iiixiiippp(#1)|#2|/>`>`>`>`>`>`>`>`>`>`>`>/}}% -\def\iiixiiippp(#1)|#2|/#3/{% - \ifnextchar<{\iiixiiipppp(#1)|#2|/#3/}% - {\iiixiiipppp(#1)|#2|/#3/<\default,\default>}}% -\def\iiixiiipppp(#1)|#2|/#3/<#4>{\ifnextchar[{\iiixiiippppp(#1)|#2|/#3/% - <#4>0<0,0>}{\iiixiiippppp(#1)|#2|/#3/<#4>}}% -\def\iiixiiippppp(#1)|#2|/#3/<#4>#5{\ifnextchar<% - {\iiixiiipppppp(#1)|#2|/#3/<#4>{#5}}% - {\iiixiiipppppp(#1)|#2|/#3/<#4>{#5}<400,400>}}% - -\def\iiixiipppppp(#1,#2)|#3|/#4/<#5>#6<#7>[#8;#9]{% - \xpos#1\ypos#2\relax - \def\next|##1##2##3##4##5##6##7|{\def\xa{##1}\def\xb{##2}% - \def\xc{##3}\def\xd{##4}\def\xe{##5}\def\xf{##6}\def\xg{##7}}% - \next|#3|% - \def\next<##1,##2>{\deltax##1\deltay##2}% - \next<#5>% - \deltaX#7 - \topw#6 - \def\next{% - \ifodd\topw \def\zd{}\else\def\zd{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zc{}\else\def\zc{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\zb{}\else\def\zb{\relax}\fi \divide\topw by 2 - \ifodd\topw \def\za{}\else\def\za{\relax}\fi}% - \next - \def\next[##1`##2`##3`##4`##5`##6]{% - \def\nodea{##1}\def\nodeb{##2}\def\nodec{##3}% - \def\noded{##4}\def\nodee{##5}\def\nodef{##6}}% - \next[#8]% - \def\next[##1`##2`##3`##4`##5`##6`##7]{% - \def\labela{##1}\def\labelb{##2}\def\labelc{##3}% - \def\labeld{##4}\def\labele{##5}\def\labelf{##6}\def\labelg{##7}}% - \next[#9]% - \def\next/##1`##2`##3`##4`##5`##6`##7/{% - \ifx\zc\empty\relax\morphism(\xpos,\ypos)<\deltaX,0>[0`\noded;]\fi - \advance\xpos by\deltaX - \morphism(\xpos,\ypos)|\xc|/##3/<\deltax,0>[\noded`\nodee;\labelc]% - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xd|/##4/<\deltax,0>[\nodee`\nodef;\labeld]% - \advance\xpos by \deltax - \ifx\zd\empty\relax \morphism(\xpos,\ypos)<\deltaX,0>[\nodef`0;]\fi - \advance\xpos by -\deltaX \advance\xpos by -\deltax - \advance\xpos by -\deltax \advance\ypos by \deltay - \ifx\za\empty\relax\morphism(\xpos,\ypos)<\deltaX,0>[0`\nodea;]\fi - \advance\xpos by\deltaX - \morphism(\xpos,\ypos)|\xa|/##1/<\deltax,0>[\nodea`\nodeb;\labela]% - \morphism(\xpos,\ypos)|\xe|/##5/<0,-\deltay>[\nodea`\noded;\labele]% - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xb|/##2/<\deltax,0>[\nodeb`\nodec;\labelb]% - \morphism(\xpos,\ypos)|\xf|/##6/<0,-\deltay>[\nodeb`\nodee;\labelf]% - \advance\xpos by \deltax - \morphism(\xpos,\ypos)|\xg|/##7/<0,-\deltay>[\nodec`\nodef;\labelg]% - \ifx\zb\empty\relax \morphism(\xpos,\ypos)<\deltaX,0>[\nodec`0;]\fi}% - \next/#4/\ignorespaces} - - -\def\iiixii{\ifnextchar({\iiixiip}{\iiixiip(0,0)}}% -\def\iiixiip(#1){\ifnextchar|{\iiixiipp(#1)}% - {\iiixiipp(#1)|aabblmr|}}% -\def\iiixiipp(#1)|#2|{\ifnextchar/{\iiixiippp(#1)|#2|}% - {\iiixiippp(#1)|#2|/>`>`>`>`>`>`>/}}% -\def\iiixiippp(#1)|#2|/#3/{% - \ifnextchar<{\iiixiipppp(#1)|#2|/#3/}% - {\iiixiipppp(#1)|#2|/#3/<\default,\default>}}% -\def\iiixiipppp(#1)|#2|/#3/<#4>{\ifnextchar[{\iiixiippppp(#1)|#2|/#3/% - <#4>{0}<0>}{\iiixiippppp(#1)|#2|/#3/<#4>}}% -\def\iiixiippppp(#1)|#2|/#3/<#4>#5{\ifnextchar<% - {\iiixiipppppp(#1)|#2|/#3/<#4>{#5}}% - {\iiixiipppppp(#1)|#2|/#3/<#4>{#5}<0>}}% - -\catcode`\@=\atcode% -\endinput -- cgit v1.2.3