diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/xypic/xy2cell.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/xypic/xy2cell.tex | 669 |
1 files changed, 669 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xypic/xy2cell.tex b/Master/texmf-dist/tex/generic/xypic/xy2cell.tex new file mode 100644 index 00000000000..732d18573a5 --- /dev/null +++ b/Master/texmf-dist/tex/generic/xypic/xy2cell.tex @@ -0,0 +1,669 @@ +%% xy2cell.tex from $Id: xy2cell.doc,v 3.3 1996/12/18 14:21:23 ross Exp $ +%% +%% Xy-pic ``2-cell'' feature. +%% Copyright (c) 1993-1996 Ross Moore <ross@mpce.mq.edu.au> +%% +%% This file is part of the Xy-pic package for graphs and diagrams in TeX. +%% See the companion README and INSTALL files for further information. +%% Copyright (c) 1991-1996 Kristoffer H. Rose <krisrose@brics.dk> +%% +%% The Xy-pic package is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by the +%% Free Software Foundation; either version 2 of the License, or (at your +%% option) any later version. +%% +%% The Xy-pic package is distributed in the hope that it will be useful, but +%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +%% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +%% for more details. +%% +%% You should have received a copy of the GNU General Public License along +%% with this macro package; if not, write to the Free Software Foundation, +%% Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +\ifx\xyloaded\undefined \input xy \fi +\xyprovide{2cell}{Two-cell feature}{\stripRCS$Revision: 3.3 $}% + {Ross Moore}{ross@mpce.mq.edu.au}% + {Mathematics Department, Macquarie University, NSW~2109, Australia} +\xyrequire{curve}\xycatcodes +\message{two-cells,} +\xydef@\UseTwocells{\definesupermorphism{twocell}{% + \xy@{start of 2-cell}{\begingroup}% + \twocell@}} +\xydef@\UseHalfTwocells{% + \definesupermorphism{uppertwocell}{% + \xy@{start of 2-cell}{\begingroup}% + \uppertwocell@}% + \definesupermorphism{lowertwocell}{% + \xy@{start of 2-cell}{\begingroup}% + \lowertwocell@}} +\xydef@\UseCompositeMaps{\definesupermorphism{compositemap}{% + \xy@{start composite-map}{\begingroup}% + \compositemap@}} +\xydef@\UseAllTwocells{% + \UseTwocells \UseHalfTwocells \UseCompositeMaps } +\xydef@\supermorphism#1[#2]#3{\def\afterMORPHISM{[#2]#3}#1} +\xydef@\afterMORPHISM{} +\xydef@\definesupermorphism#1#2{% + \expandafter\def\csname x#1\endcsname{\supermorphism{#2}}% + \expandafter\def\csname u#1\endcsname{\supermorphism{#2}[-1,0]{}}% + \expandafter\def\csname d#1\endcsname{\supermorphism{#2}[1,0]{}}% + \expandafter\def\csname l#1\endcsname{\supermorphism{#2}[0,-1]{}}% + \expandafter\def\csname r#1\endcsname{\supermorphism{#2}[0,1]{}}% + \expandafter\def\csname uu#1\endcsname{\supermorphism{#2}[-2,0]{}}% + \expandafter\def\csname dd#1\endcsname{\supermorphism{#2}[2,0]{}}% + \expandafter\def\csname ll#1\endcsname{\supermorphism{#2}[0,-2]{}}% + \expandafter\def\csname rr#1\endcsname{\supermorphism{#2}[0,2]{}}% + \expandafter\def\csname ur#1\endcsname{\supermorphism{#2}[-1,1]{}}% + \expandafter\def\csname ul#1\endcsname{\supermorphism{#2}[-1,-1]{}}% + \expandafter\def\csname dr#1\endcsname{\supermorphism{#2}[1,1]{}}% + \expandafter\def\csname dl#1\endcsname{\supermorphism{#2}[1,-1]{}}% + \expandafter\def\csname uul#1\endcsname{\supermorphism{#2}[-2,-1]{}}% + \expandafter\def\csname uur#1\endcsname{\supermorphism{#2}[-2,1]{}}% + \expandafter\def\csname ull#1\endcsname{\supermorphism{#2}[-1,-2]{}}% + \expandafter\def\csname urr#1\endcsname{\supermorphism{#2}[-1,2]{}}% + \expandafter\def\csname ddl#1\endcsname{\supermorphism{#2}[2,-1]{}}% + \expandafter\def\csname ddr#1\endcsname{\supermorphism{#2}[2,1]{}}% + \expandafter\def\csname dll#1\endcsname{\supermorphism{#2}[1,-2]{}}% + \expandafter\def\csname drr#1\endcsname{\supermorphism{#2}[1,2]{}}% + \expandafter\def\csname uull#1\endcsname{\supermorphism{#2}[-2,-2]{}}% + \expandafter\def\csname uurr#1\endcsname{\supermorphism{#2}[-2,2]{}}% + \expandafter\def\csname ddll#1\endcsname{\supermorphism{#2}[2,-2]{}}% + \expandafter\def\csname ddrr#1\endcsname{\supermorphism{#2}[2,2]{}}} +\newdir{=>}{!/5pt/\dir{=}!/2.5pt/\dir{=}*!/-5pt/\dir2{>}} +\xydef@\arrowobject#1{\def\Arrowobject@{#1}} +\xydef@\Arrowobject@{\dir{=>}} +\xydef@\twocell@{\toks6={3.5}\toks5={@}\toks7={@}\toks8={@}\toks3={f}% + \tw@cell@ } +\xydef@\uppertwocell@{\toks6={7}\toks5={@}\toks7={@}\toks8={@}\toks3={o}% + \tw@cell@ } +\xydef@\lowertwocell@{\toks6={-7}\toks5={@}\toks7={@}\toks8={@}\toks3={o}% + \tw@cell@ } +\xydef@\compositemap@{\toks6={3.5}\toks5={@}\toks7={@}\toks8={@}\toks3={t}% + \tw@cell@ } +\xydef@\tw@cell@@@{% + \expandafter\ifx\the\toks6\omit\relax\toks6={}\else + \expandafter\ifx\expandafter @\the\toks7\relax\expandafter\dimen@\the\toks6\p@ + \expandafter\if\the\toks3t\relax\dimen@=\p@ + \else\expandafter\if\the\toks3o\divide\dimen@\tw@ + \ifdim\dimen@<\z@ \dimen@ii-\p@ \advance\dimen@ii\dimen@ + \dimen@=\dimen@ii \else \dimen@\p@ \fi + \else\dimen@\p@ + \fi\fi + \edef\tmp@{\expandafter\removePT@\the\dimen@}% + \expandafter\toks\expandafter7\expandafter{\tmp@}\fi + \expandafter\ifx\expandafter @\the\toks8\relax + \expandafter\dimen@\the\toks6\p@ + \expandafter\if\the\toks3t\relax\dimen@\p@ + \else\expandafter\if\the\toks3o\divide\dimen@\tw@ + \ifdim\dimen@<\z@ \dimen@ii-\p@ \advance\dimen@ii\dimen@ + \dimen@=\dimen@ii \else \dimen@\p@ \fi + \else\dimen@\p@ + \fi\fi + \edef\tmp@{\expandafter\removePT@\the\dimen@}% + \expandafter\toks\expandafter8\expandafter{\tmp@}\fi + \expandafter\ifx\expandafter @\the\toks5\relax + \expandafter\dimen@\the\toks6\p@ + \expandafter\if\the\toks3o\divide\dimen@ by-4\relax + \else\dimen@\z@\fi + \edef\tmp@{\expandafter\removePT@\the\dimen@}% + \expandafter\toks\expandafter5\expandafter{\tmp@}\fi + \fi + \twocellmod@ + \expandafter\if\the\toks3t\relax + \edef\tmp@{.[\noexpand\twocell@@@@{\the\toks6}{\the\toks5}% + {\the\toks7}{\the\toks8}{\the\toks3}% + {\the\toks2}{\the\toks1}{\the\toks@}{\the\toks4}!!!].\afterMORPHISM}% + \else + \edef\tmp@{.[\noexpand\twocell@@@@{\the\toks6}{\the\toks5}% + {\the\toks7}{\the\toks8}{\the\toks3}% + {\the\toks1}{\the\toks2}{\the\toks@}{\the\toks4}!!!].\afterMORPHISM}% + \fi + \toks@={\endgroup}% + \expandafter\def\expandafter\next@\expandafter{% + \expandafter\def\expandafter\twocellhead@\expandafter{\twocellhead@}}% + \expandafter\addtotoks@\expandafter{\next@}% + \expandafter\def\expandafter\next@\expandafter{% + \expandafter\def\expandafter\twocelltail@\expandafter{\twocelltail@}}% + \expandafter\addtotoks@\expandafter{\next@}% + \expandafter\addtotoks@\expandafter{\expandafter\twocellPATH\tmp@}% + \the\toks@ }% +\xydef@\twocellstyle{\scriptstyle} +\xydef@\droptwocelllabel@#1{\xyFN@\droptwocelllabel@@#1@!} +\xydef@\droptwocelllabel@@{% + \ifx*\next\DN@*{\droptwocelldrop@}% + \else\DN@##1@!{\droptwocelltext@{##1}}% + \fi \next@ } +{\xyuncatcodes \gdef\next#1{\drop+!C{\twocellstyle #1}}} +\xylet@\droptwocelltext@=\next +\xydef@\droptwocelldrop@#1@!{\bgroup \let\xy@=\oxy@ + \let\objectstyle=\twocellstyle \drop#1{}% + \edef\tmp@{\egroup \X@min=\the\X@min \X@max=\the\X@max + \Y@min=\the\Y@min \Y@max=\the\Y@max}\tmp@ } +\xydef@\twocellhead#1{\def\twocellhead@{#1}} +\xydef@\twocelltail#1{\def\twocelltail@{#1}} +\xydef@\twocellhead@{\dir{>}} +\xydef@\twocelltail@{} +\xywarnifdefined\twocellmod@ +\xydef@\tw@cell@{\begingroup + \toks@={{}}\toks1={{}}\toks2={{}}\toks4={{}}% + \def\twocellmod@{}\xyFN@\tw@@cell@}% +\xydef@\tw@@cell@{% + \ifx\space@\next\expandafter\DN@\space{\xyFN@\tw@@cell@}% + \else\ifx\bgroup\next \let\next@=\toks@\afterassignment\tw@@cell@@ + \else\ifx ^\next \DN@^##1{\toks@={##1}\nudgepos@71\tw@@cell@}% + \else\ifx _\next \DN@_##1{\toks@={##1}\nudgepos@82\tw@@cell@}% + \else\addLT@\ifx \next \addGT@{\addLT@\DN@##1}{% + \toks6={##1}\ifx\omit##1\relax\toks3={t}\toks5={0}\fi\xyFN@\tw@@cell@}% + \else\ifx\omit\next \DN@\omit{\omitarrows@\xyFN@\tw@@cell@}% + \else\ifx~\next \DN@~{\xyFN@\whichCurveObject@}% + \else \DN@{\xyFN@\tw@cell@@\empty @}% + \fi\fi\fi\fi\fi\fi\fi% + \next@ } +\xydef@\whichCurveObject@{% + \ifx\space@\next\expandafter\DN@\space{\xyFN@\whichCurveObject@}% + \else\ifx\next^\DN@^##1{\xy@{~^{##1}}{\uppercurveobject{##1}}\xyFN@\tw@@cell@}% + \else\ifx\next_\DN@_##1{\xy@{~_{##1}}{\lowercurveobject{##1}}\xyFN@\tw@@cell@}% + \else\addRQ@\ifx\next \addRQ@\DN@##1{% + \xy@{~'{##1}}{\def\twocellhead@{##1}}\xyFN@\tw@@cell@}% + \else\addLQ@\ifx\next \addLQ@\DN@##1{% + \xy@{~`{##1}}{\def\twocelltail@{##1}}\xyFN@\tw@@cell@}% + \else\ifx!\next \DN@!{\xyFN@\checkmodmap@}% + \else\ifx\next\bgroup\DN@##1{\xy@{~{##1}}{\curveobject{##1}}\xyFN@\tw@@cell@}% + \else\DN@##1{\xy@{~##1}{\curveobject{##1}}\xyFN@\tw@@cell@}% + \fi\fi\fi\fi \fi\fi\fi + \next@ } +\xydef@\checkmodmap@{% + \ifx\space@\next\expandafter\DN@\space{\xyFN@\checkmodmap@}% + \else \def\twocellmod@{\modmap@}% + \ifx\next!\DN@!##1{% + \xy@{~!!{##1}}{\def\modmapobject@{##1}}\xyFN@\tw@@cell@}% + \else \DN@{\xyFN@\tw@@cell@}\fi + \fi \next@ } +\xydef@\omitarrows@{\toks5={0}\toks6={}\toks7={0}\toks8={0}} +\xydef@\tw@@cell@@{\expandafter\xyFN@\expandafter\tw@cell@@\the\toks@ @} +\xydef@\tw@cell@@{\ifx \space@\next\expandafter\DN@\space{\xyFN@\tw@cell@@}% + \else\ifx ^\next + \DN@^##1@{\toks@={##1}\toks4={^}\nudgepos@50\tw@cell@@@}% + \else\addEQ@\ifx\next + \addEQ@\DN@##1@{\toks@={##1}\toks4={=}\nudgepos@50\tw@cell@@@}% + \else\ifx _\next + \DN@_##1@{\toks@={##1}\toks4={_}\nudgepos@50\tw@cell@@@}% + \else\addLT@\ifx \next + \DN@##1@{\toks@={##1}\toks4={_}\nudgepos@50\tw@cell@@@}% + \else\ifx\omit\next \DN@\omit##1@{\toks4={@}\toks@={##1}\tw@cell@@@}% + \else\addRQ@\ifx\next \addRQ@\DN@##1@{\toks4={@}\toks3={/}\toks@={##1}% + \nudgepos@50\tw@cell@@@}% + \else\addLQ@\ifx\next \addLQ@\DN@##1@{\toks4={@}\toks3={b}\toks@={##1}% + \nudgepos@50\tw@cell@@@}% + \else\ifx"\next \DN@"##1@{\toks4={@}\toks3={B}\toks@={##1}% + \nudgepos@50\tw@cell@@@}% + \else\ifx!\next \DN@!##1@{\toks4={@}\toks3={@}\toks@={##1}% + \nudgepos@50\tw@cell@@@}% + \else\ifx\next\empty\DN@##1@{\toks@={{}}\toks4={_}\tw@cell@@@}% + \else\DN@##1@{\toks@={##1}\toks4={_}\tw@cell@@@}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next@ } +\xywarnifdefined\whichnudge +\xywarnifdefined\whichinfo +\xywarnifdefined\afternudge +\xydef@\nudgepos@#1#2#3{\def\whichnudge{\toks#1}\def\whichinfo{\toks#2}% + \def\afternudge{#3}\expandafter\xyFN@\expandafter\nudgepos@@\the\toks@ @} +\xydef@\nudgepos@@{\ifx \space@\next\expandafter\DN@\space{\xyFN@\nudgepos@}% + \else\addLT@\ifx \next + \addGT@{\addLT@\DN@##1}##2@{% + \ifx\omit##1\relax\whichnudge={0}\whichinfo={}% + \else\whichnudge={##1}\whichinfo={##2}\fi\xyFN@\afternudge}% + \else \DN@##1@{\whichinfo={##1}\xyFN@\afternudge}% + \fi\fi \next@ } +\xydef@\modmap@{% + \expandafter\ifx\the\toks4@\toks4={!}% + \else\expandafter\ifx\the\toks4=\toks4={H}% + \else\expandafter\ifx\the\toks4^\toks4={A}% + \else\expandafter\ifx\the\toks4_\toks4={V}\fi\fi\fi\fi + \expandafter\DN@\expandafter{\the\toks6}% + \ifx\next@\empty\relax\else\expandafter\moddefs@\fi} +\xydef@\moddefs@{% + \expandafter\dimen@\the\toks6\p@ + \ifdim\dimen@=\z@\relax + \expandafter\dimen@\the\toks7\p@ + \ifdim\dimen@<\z@\advance\dimen@.5\p@\else\advance\dimen@-.5\p@\fi + \edef\tmp@{\noexpand\toks7={\expandafter\removePT@\the\dimen@}}\tmp@ + \expandafter\dimen@\the\toks8\p@ + \ifdim\dimen@<\z@\advance\dimen@-.5\p@\else\advance\dimen@.5\p@\fi + \expandafter\ifx\the\toks3t\advance\dimen@-1\p@\fi + \edef\tmp@{\noexpand\toks8={\expandafter\removePT@\the\dimen@}}\tmp@ + \else + \ifdim\dimen@<\z@\advance\dimen@-.5\p@\else\advance\dimen@.5\p@\fi + \edef\tmp@{\noexpand\toks6={\expandafter\removePT@\the\dimen@}}\tmp@ + \expandafter\dimen@\the\toks7\p@ + \ifdim\dimen@<\z@\advance\dimen@-.5\p@\else\advance\dimen@.5\p@\fi + \expandafter\ifx\the\toks3t\advance\dimen@-2\p@\fi + \edef\tmp@{\noexpand\toks7={\expandafter\removePT@\the\dimen@}}\tmp@ + \expandafter\dimen@\the\toks8\p@ + \ifdim\dimen@<\z@\advance\dimen@-.5\p@\else\advance\dimen@.5\p@\fi + \expandafter\ifx\the\toks3t\advance\dimen@-2\p@\fi + \edef\tmp@{\noexpand\toks8={\expandafter\removePT@\the\dimen@}}\tmp@ + \fi }% +\xydef@\modmapobject#1{\def\modmapobject@{#1}} +\xydef@\modmapobject@{\dir{|}} +\xydef@\@modmapobject@{{\if\@mod@\relax\expandafter\empty + \else\expandafter\modmapobject@\fi}} +\xydef@\curveobject#1{\def\ucurveObject@{~*#1}\def\dcurveObject@{~*#1}} +\xydef@\uppercurveobject#1{\def\ucurveObject@{~*#1}} +\xydef@\lowercurveobject#1{\def\dcurveObject@{~*#1}} +\xydef@\ucurveObject@{} +\xydef@\dcurveObject@{} +\xydef@\savetwocellobjects{% + \xy@{twocell objects}{% + \expandafter\uppercurveobject\expandafter{\ucurveObject@}% + \expandafter\lowercurveobject\expandafter{\dcurveObject@}% + \expandafter\modmapobject\expandafter{\modmapobject@}% + \expandafter\twocellhead\expandafter{\twocellhead@}% + \expandafter\twocelltail\expandafter{\twocelltail@}% + \expandafter\arrowobject\expandafter{Arrowobject@}% + }} +\xydef@\twocell@path.[#1].{% + \expandafter\ifx\csname Q@@c\endcsname\relax + \DN@{\enter@{\cfromthec@ \pfromthep@ \basefromthebase@}% + \xy@{}{\expandafter\edef\csname Q@@\endcsname{\cfromthec@}}% + \afterPOS{\xy@{}% + {\expandafter\edef\csname Q@@c\endcsname{\cfromthec@}}% + \xy@{}% + {\cfromid@{@}\expandafter\edef\csname Q@@p\endcsname{\cfromthec@}}% + \xy@{twocell #1}{#1}\leave@\aftertwoCELL};p,}% + \else + \DN@{\enter@{\cfromthec@ \pfromthep@ \basefromthebase@}% + \xy@{twocell #1}{#1}\leave@\aftertwoCELL}% + \fi \next@ } +\xydef@\twocellpath.[#1].{% + \expandafter\edef\csname Q@@p\endcsname{\cfromthec@}% + \xy@{}{\enter@{\pfromthep@}}% + \xy@{}{\enter@{\cfromthec@ \pfromthep@ \basefromthebase@}% + \enter@{\pfromthec@}}% + \afterPOS{\xy@{}{\leave@\setupDirection@}#1\restore\restore + \xy@{end of 2-cell}\xysaveMinMax@ }}% +\xydef@\xysaveMinMax@{\edef\tmp@{\endgroup + \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 + }\tmp@ } +\xylet@\twocellPATH=\twocellpath +\xydef@\aftertwo@CELL{\let\twocellPATH=\twocellpath \def\aftertwoCELL{}} +\xydef@\aftertwoCELL{} +\xydef@\twocell@@@@#1!!!{\xy@{twocell #1}{\twocell@@#1!!!}} +\let\xystatus=\xystatus@ +\xydef@\twocell{\hbox\bgroup\@twocell} +\xydef@\uppertwocell{\hbox\bgroup\@uppertwocell} +\xydef@\lowertwocell{\hbox\bgroup\@lowertwocell} +\xydef@\compositemap{\hbox\bgroup\@compositemap} +\xydef@\twocelll#1#{\hbox\bgroup\xy@\save\save@\@twocelll{#1}} +\xydef@\@twocelll#1#2{% + \afterPOS{\@twocelll@\xyFN@\twocell@#1{#2}}} +\xydef@\uppertwocelll#1#{\hbox\bgroup\xy@\save\save@\@uppertwocelll{#1}} +\xydef@\@uppertwocelll#1#2{% + \afterPOS{\@twocelll@\xyFN@\uppertwocell@#1{#2}}} +\xydef@\lowertwocelll#1#{\hbox\bgroup\xy@\save\save@\@lowertwocelll{#1}} +\xydef@\@lowertwocelll#1#2{% + \afterPOS{\@twocelll@\xyFN@\lowertwocell@#1{#2}}} +\xydef@\compositemapp#1#{\hbox\bgroup\xy@\save\save@\@compositemapp{#1}} +\xydef@\@compositemapp#1#2{% + \afterPOS{\@twocelll@\xyFN@\compositemap@#1{#2}}} +\xydef@\@twocelll@{% + \expandafter\edef\csname Q@@c\endcsname{\cfromthec@}\swap@ + \expandafter\edef\csname Q@@p\endcsname{\cfromthec@}\swap@ + \let\twocellPATH=\twocell@path + \def\aftertwoCELL{\twocell@DONE \xy@\restore \leave@ + }} +\xydef@\@twocell#1{\DN@{\@twocell@\twocell@}\xyFN@\next@[#1]} +\xydef@\@uppertwocell#1{\DN@{\@twocell@\uppertwocell@}\xyFN@\next@[#1]} +\xydef@\@lowertwocell#1{\DN@{\@twocell@\lowertwocell@}\xyFN@\next@[#1]} +\xydef@\@compositemap#1{\DN@{\@twocell@\compositemap@}\xyFN@\next@[#1]} +\xydef@\@twocell@#1{\ifx\next[\DN@[{\toks@={#1}\xyFN@\@@twocell@}% + \else\DN@{#1{}}\fi +%% + \expandafter\edef\csname Q@@c\endcsname{\cfromthec@}\swap@ + \expandafter\edef\csname Q@@p\endcsname{\cfromthec@}\swap@ + \let\twocellPATH=\twocell@path + \def\aftertwoCELL{\twocell@DONE}\next@} +\xydef@\@@twocell@{\ifx\next\bgroup\DN@##1]{\the\toks@{##1}}% + \else\DN@##1]{\the\toks@##1}\fi\next@} +%% \DN@{\twocell}% +%% \expandafter\def\csname*dir@@\codeof\next@ @\endcsname{\@twocell} +%% \DN@{\uppertwocell}% +%% \expandafter\def\csname*dir@@\codeof\next@ @\endcsname{\@uppertwocell} +%% \DN@{\lowertwocell}% +%% \expandafter\def\csname*dir@@\codeof\next@ @\endcsname{\@lowertwocell} +%% \DN@{\compositemap}% +%% \expandafter\def\csname*dir@@\codeof\next@ @\endcsname{\@compositemap} +\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 }}% +\xydef@\drop@Twocell{\boxz@ } +\xydef@\connect@Twocell{% + \setboxz@h{\kern\X@p \raise\Y@c\box\lastobjectbox@ }% + \wdz@=\z@ \ht\z@=\z@ \dp\z@=\z@ \Drop@@ } +\xywarnifdefined\@mod@ +\xywarnifdefined\Arrowtok@ +\xydef@\twocell@@#1#2#3#4#5#6#7#8#9!!!{% + \def\@mod@{@}\DN@{#9}% + \ifx #9!\def\Arrowtok@{@}\else\ifx #9A\def\Arrowtok@{^}% + \else\ifx #9V\def\Arrowtok@{_}\else\ifx #9H\def\Arrowtok@{=}% + \else\def\@mod@{\relax}% + \ifx #5/\def\Arrowtok@{@}\else\ifx #5b\def\Arrowtok@{@}% + \else\ifx #5B\def\Arrowtok@{@}\else\ifx #5@\def\Arrowtok@{@}% + \else\def\Arrowtok@{#9}% + \fi\fi\fi\fi\fi\fi\fi\fi + \addEQ@\ifx #9\def\Arrowtok@{=}\fi + \DN@{\omit}\ifx\next@\Arrowtok@\def\Arrowtok@{}\else + \edef\Arrowtok@{\codeof\Arrowtok@}\fi + \save@ \idfromc@{@c}\swap@\idfromc@{@p}\swap@ + \cfromid@{@c}\no@@ + \ifdim \X@c<\X@p \X@min=\X@c \X@max=\X@p \else \X@min=\X@p \X@max=\X@c \fi + \ifdim \Y@c<\Y@p \Y@min=\Y@c \Y@max=\Y@p \else \Y@min=\Y@p \Y@max=\Y@c \fi + \Calong@@{.5}\idfromc@{@m}\idfromc@{@m1}\idfromc@{@m2}% + \ifx #5t\relax + \enter@{\cplusthec@\pfromthep@}% + \enter@\DirectionfromtheDirection@ \begingroup\aboveDirection@ \xydashl@ + \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\p@\fi + \ifdim\dimen@=\z@ \DN@{\vfromslide@i{\xydashl@}@}\relax + \else\DN@{\vfromslide@i{#1\xydashl@}@}\fi \next@ + \czeroEdge@ \leave@ \no@@ \drop@{+}{}\idfromc@{@m1}% + \DN@{#1}\ifx\next@\empty\DN@{\no@@}\else\DN@{\connect@{\dir}{-}}\fi + \else + \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\p@\fi + \ifdim\dimen@=\z@ \enter@{\cplusthec@\pfromthep@}% + \enter@\DirectionfromtheDirection@ \begingroup\aboveDirection@\xydashl@ + \vfromslide@i{\xydashl@}@\czeroEdge@ \leave@ \idfromc@{@m1}% + \cfromid@{@p}\swap@\cfromid@{@c}% + \DN@{#1}\ifx\next@\empty\DN@{\no@@}\else\DN@{\connect@{\dir}{-}}\fi + \else \DN@{\enter@\cplusthec@ + \enter@\DirectionfromtheDirection@ \begingroup\aboveDirection@ \xydashl@ + \vfromslide@i{#1\xydashl@}@\czeroEdge@ \leave@ + \idfromc@{@m1}\cfromid@{@p}\swap@\cfromid@{@c}% + \edef\next@{\codeof\ucurveObject@}% + \ifx\next@\empty\DN@{\connect@\crv{"@m1"}}% + \else + \DNii@####1{\connect@\crv{####1}}\expandafter\DN@\expandafter{% + \expandafter\nextii@\expandafter{\ucurveObject@"@m1"}}% + \fi \next@ }% +%% \ifx\next@\empty\def\ucurveObject@{.}\fi +%% \enter@\cfromthec@\sinit@\cfromid@{@m1}\senter@\leave@ +%% \expandafter\connect@\expandafter\crvs\expandafter{\ucurveObject@}% +%% \sinit@\sleave@ }% + \fi + \fi \next@ + \DN@{#1}\ifx\next@\empty\relax\else + \if\@mod@ @\relax + \enter@\pfromthep@ \Creset@@ + \ifx #5t\relax + \PLACEedgec@ \PLACEedgep@ \def\PLACEf@{{.5}}% + \else \def\next@{\crvreset@}% + \ifx\next@\Creset@@ + \gettwocelledges@ \edef\PLACEf@{{\expandafter\removePT@\the\dimen@}}% + \else \PLACEedgec@ \PLACEedgep@ \def\PLACEf@{{.5}}\fi + \fi + \expandafter\Calong@@\PLACEf@ \czeroEdge@ \leave@ + \edef\tmp@{\codeof\modmapobject@}% + \ifx\tmp@\empty \DN@{\drop@{\dir}{|}}% + \else \DNii@##1##{\drop@{##1}}% + \DN@{\expandafter\nextii@\modmapobject@{}}% + \fi \next@ + \fi\fi + \DN@{#6}\ifx\next@\empty\DN@{\relax}\else + \DNii@{{}}\ifx\next@\nextii@\DN@{\relax}\else + \ifx @#3\relax\DN@{\relax}\else + \DN@{\enter@\pfromthep@ \Creset@@ + \Calong@@{.5}\czeroEdge@ \leave@ + \enter@\cplusthec@ + \enter@\DirectionfromtheDirection@\begingroup + \DN@{#1}\ifx\next@\empty\dimen@\z@\else\dimen@=#1\p@\fi + \ifdim\dimen@<\z@ \belowDirection@ \xydashl@ + \else \aboveDirection@ \xydashl@ \fi + \dimen@=#3\p@ \if\@mod@ @\relax + \advance\dimen@\ifdim\dimen@<\z@-\fi.5\p@\fi + \edef\next@{\expandafter\removePT@\the\dimen@}% + \expandafter\vfromslide@i\expandafter{\next@\xydashl@}@\leave@ + \droptwocelllabel@{#6}}% + \fi\fi\fi \next@ + \DN@{#1}\ifx\next@\empty\relax\else + \ifx #5b\relax + \enter@ {\pfromthep@ }\Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty \DN@{\dir{>}}% + \ifx\next@\twocellhead@\drop@{\dir}{<}% + \else + \reverseDirection@ \DNii@##1##{\drop@{##1}}% + \expandafter\nextii@\twocellhead@{}\reverseDirection@ + \fi + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocelltail@{}% + \fi + \else\ifx #5@\relax + \else + \enter@\pfromthep@ \Creset@@ \PLACEedgec@ + \Calong@@{1}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocellhead@}% + \ifx\next@\empty\drop@{\dir}{>}% + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocellhead@{}% + \fi + \ifx #5B\relax + \enter@ {\pfromthep@ }\Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty \DN@{\dir{>}}% + \ifx\next@\twocellhead@\drop@{\dir}{<}% + \else + \reverseDirection@\DNii@##1##{\drop@{##1}}% + \expandafter\nextii@\twocellhead@{}\reverseDirection@ + \fi + \else + \DNii@##1##{\drop@{##1}}\expandafter\drop\twocelltail@{}% + \fi + \else\ifx #5/\relax + \else \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty\relax\else + \enter@\pfromthep@ \Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocelltail@{}% + \fi\fi\fi + \fi\fi\fi + \cfromid@{@p}\swap@\cfromid@{@c}\no@@ \cfromid@{@m}% + \ifx #5t\relax + \idfromc@{@m2}\cfromid@{@m1}\swap@ \cfromid@{@c}\no@@ + \DN@{#1}\ifx\next@\empty\DN@{\no@@}\else\DN@{\connect@{\dir}{-}}\fi + \else\ifx #5o\relax + \idfromc@{@m2}\DN@{}% + \else + \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\p@\fi + \ifdim\dimen@=\z@ + \enter@{\cplusthec@\pfromthep@}% + \enter@\DirectionfromtheDirection@ \begingroup \belowDirection@\xydashl@ + \vfromslide@i{\xydashl@}@\czeroEdge@ \leave@ \idfromc@{@m2}% + \DN@{\cfromid@{@p}\swap@\cfromid@{@c}\no@@}% + \else \DN@{\enter@\cplusthec@ + \enter@\DirectionfromtheDirection@ \begingroup \belowDirection@ \xydashl@ + \vfromslide@i{#1\xydashl@}@\czeroEdge@ \leave@ + \idfromc@{@m2}\cfromid@{@p}\swap@\cfromid@{@c}% + \edef\next@{\codeof\dcurveObject@}% + \ifx\next@\empty\DN@{\connect@\crv{"@m2"}}% + \else + \DNii@####1{\connect@\crv{####1}}\expandafter\DN@\expandafter{% + \expandafter\nextii@\expandafter{\dcurveObject@"@m2"}}% + \fi \next@ }\fi +%% \enter@\cfromthec@\sinit@\cfromid@{@m2}\senter@\leave@ +%% \expandafter\connect@\expandafter\crvs\expandafter{\dcurveObject@}% +%% \sinit@\sleave@ +%% }\fi + \fi\fi \next@ + \DN@{#1}\ifx\next@\empty\relax\else \ifx #5o\relax\else + \if\@mod@ @\DN@{\enter@\pfromthep@ \Creset@@ + \ifx #5t\relax + \PLACEedgec@ \PLACEedgep@ \def\PLACEf@{{.5}}% + \else \def\next@{\crvreset@}% + \ifx\next@\Creset@@ + \gettwocelledges@ \edef\PLACEf@{{\expandafter\removePT@\the\dimen@}}% + \else \PLACEedgec@ \PLACEedgep@ \def\PLACEf@{{.5}}\fi + \fi + \expandafter\Calong@@\PLACEf@ \czeroEdge@ \leave@ + \edef\tmp@{\codeof\modmapobject@}\ifx\tmp@\empty\DN@{\drop@{\dir}{|}}% + \else \DNii@####1####{\drop@{####1}}% + \DN@{\expandafter\nextii@\modmapobject@{}}\fi + \next@ }\else\DN@{\relax}\fi + \next@ \fi\fi + \DN@{#7}\ifx\next@\empty\DN@{\relax}\else + \DNii@{{}}\ifx\next@\nextii@\DN@{\relax}\else + \ifx @#4\relax\DN@{\relax}\else + \DN@{\enter@\pfromthep@ \Creset@@ + \Calong@@{.5}\czeroEdge@ \leave@ + \enter@\cplusthec@ + \enter@\DirectionfromtheDirection@ \begingroup + \DN@{#1}\ifx\next@\empty\dimen@\z@ \else\dimen@=#1\p@\fi + \ifx #5t\relax \ifdim\dimen@<\z@ \belowDirection@ \xydashl@ + \else \aboveDirection@ \xydashl@ \fi + \else \ifdim\dimen@<\z@ \aboveDirection@ \xydashl@ + \else \belowDirection@ \xydashl@ \fi + \fi \dimen@=#4\p@ \if\@mod@ @\relax + \advance\dimen@\ifdim\dimen@<\z@-\fi.5\p@\fi + \edef\next@{\expandafter\removePT@\the\dimen@}% + \expandafter\vfromslide@i\expandafter{\next@\xydashl@}@\leave@ + \droptwocelllabel@{#7}}% + \fi\fi\fi \next@ + \DN@{#1}\ifx\next@\empty\relax\else + \ifx #5o\relax + \else\ifx #5b\relax + \enter@ {\pfromthep@ }\Creset@@ \PLACEedgec@ + \Calong@@{1}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty \DN@{\dir{>}}% + \ifx\next@\twocellhead@\drop@{\dir}{>}% + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocellhead@{}% + \fi + \else + \DNii@##1##{\drop@{##1}}\expandafter\drop\twocelltail@{}% + \fi + \else\ifx #5/\relax + \enter@{\pfromthep@}\Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty \DN@{\dir{>}}% + \ifx\next@\twocellhead@\drop@{\dir}{<}% + \else + \reverseDirection@\DNii@##1##{\drop@{##1}}% + \expandafter\nextii@\twocellhead@{}\reverseDirection@ + \fi + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocelltail@{}% + \fi + \else\ifx #5@\relax + \else + \enter@\pfromthep@ \Creset@@ \PLACEedgec@ + \Calong@@{1}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocellhead@}% + \ifx\next@\empty\drop@{\dir}{>}% + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocellhead@{}% + \fi + \ifx #5B\relax + \enter@ {\pfromthep@ }\Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty\DN@{\dir{>}}% + \ifx\next@\twocellhead@\drop@{\dir}{<}% + \else + \reverseDirection@\DNii@##1##{\drop@{##1}}% + \expandafter\nextii@\twocellhead@{}\reverseDirection@ + \fi + \else + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocelltail@{}% + \fi + \else + \edef\next@{\codeof\twocelltail@}% + \ifx\next@\empty\relax\else + \enter@ {\pfromthep@ }\Creset@@ \PLACEedgep@ + \Calong@@{0}\czeroEdge@ \leave@ + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\twocelltail@{}% + \fi\fi + \fi\fi\fi + \fi\fi + \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\p@\fi + \ifdim\dimen@<\z@ \cfromid@{@m2}\swap@\cfromid@{@m1}% + \else \cfromid@{@m1}\swap@\cfromid@{@m2}% + \fi \no@@ \cfromid@{@m}% + \ifx\Arrowtok@\empty + \else\DN@{_}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \enter@{\pfromthep@ \cplusthec@}\dimen@=#2\xydashl@ + \enter@\DirectionfromtheDirection@ \begingroup + \expandafter\vfromslide@i\expandafter{\the\dimen@}@\czeroEdge@ + \leave@ \idfromc@{@m}% + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\Arrowobject@{}% + \else\DN@{^}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \DN@{_}\edef\Arrowtok@{\codeof\next@}% + \enter@{\pfromthep@ \cplusthec@}\dimen@=#2\xydashl@ + \enter@\DirectionfromtheDirection@ \begingroup + \expandafter\vfromslide@i\expandafter{\the\dimen@}@\czeroEdge@ + \leave@ \idfromc@{@m}\reverseDirection@ + \DNii@##1##{\drop@{##1}}\expandafter\nextii@\Arrowobject@{}% + \else \DN@{=}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \enter@{\pfromthep@ \cplusthec@}% + \dimen@=#2\xydashl@ \advance\dimen@\xydashl@ + \enter@\DirectionfromtheDirection@ \begingroup + \expandafter\vfromslide@i\expandafter{\the\dimen@}@\czeroEdge@ + \leave@ \idfromc@{@m2}% + \cfromid@{@m}% + \enter@{\pfromthep@ \cplusthec@}% + \dimen@=#2\xydashl@ \advance\dimen@-\xydashl@ + \enter@\DirectionfromtheDirection@ \begingroup + \expandafter\vfromslide@i\expandafter{\the\dimen@}@\czeroEdge@ + \leave@ \idfromc@{@m1}% + \cfromid@{@m2}\swap@\cfromid@{@m1}\connect@{\dir 2}{-}% + \fi\fi\fi\fi + \DN@{#8}\ifx\next@\empty\DN@{}\else\DN@{% + \ifx\Arrowtok@\empty + \Calong@@{.5}% + \else\DN@{=}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \Calong@@{.5}% + \else\DN@{_}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \cfromid@{@m}% + \fi\fi\fi + \enter@\cplusthec@ + \enter@\DirectionfromtheDirection@ \begingroup \aboveDirection@\xydashl@ + \ifx\Arrowtok@\empty + \def\tmp@{0pt}% + \else\DN@{=}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \def\tmp@{\xydashl@}% + \else\DN@{_}\edef\next@{\codeof\next@}\ifx\next@\Arrowtok@ + \def\tmp@{1.2\xydashl@}% + \else\def\tmp@{0pt}% + \fi\fi\fi + \expandafter\vfromslide@i\expandafter{\tmp@}@\czeroEdge@ \leave@ + \droptwocelllabel@{#8}% + }\fi \next@ + \leave@ }% +\xydef@\gettwocelledges@{% + \bgroup \the\crvpts@ + \edef\next@{\edges@}% + \expandafter\gettwocelledges@@\next@ } +\xydef@\gettwocelledges@@#1;#2,#3;#4,{% + \dimen@=#2\advance\dimen@-#4\relax + \advance\dimen@ 2\p@ \divide\dimen@ by4 \relax + \edef\next@{\egroup\dimen@=\the\dimen@ }\next@}% +\xyendinput |