summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/xypic/xyarc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/xypic/xyarc.tex')
-rw-r--r--Master/texmf-dist/tex/generic/xypic/xyarc.tex684
1 files changed, 684 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xypic/xyarc.tex b/Master/texmf-dist/tex/generic/xypic/xyarc.tex
new file mode 100644
index 00000000000..689c28b48bb
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/xypic/xyarc.tex
@@ -0,0 +1,684 @@
+%% xyarc.tex from $Id: xyarc.doc,v 3.4 1997/05/18 01:13:24 ross Exp $
+%%
+%% Xy-pic ``Circles, Ellipses and Arcs'' feature.
+%% Copyright (c) 1995-1997 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-1997 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 package; if not, write to the Free Software Foundation, Inc.,
+%% 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\ifx\xyloaded\undefined \input xy \fi
+\xyprovide{arc}{Circle, Ellipse, Arc feature}{\stripRCS$Revision: 3.4 $}%
+ {Ross Moore}{ross@mpce.mq.edu.au}%
+ {Mathematics Department, Macquarie University, NSW~2109, Australia}
+\xyrequire{curve}
+\xycatcodes
+\xydef@\ellipse#1#{\xy@{ELLIPSE}{\hbox\bgroup\save@}%
+ \let\endarc@=\endellipse@@ \xyFN@\preARC@ #1@}
+\xydef@\endellipse@@{\xy@{endELLIPSE}{\leave@\origDirection@
+ \edef\next@{\egroup \X@min=\the\X@min \X@max=\the\X@max
+ \Y@min=\the\Y@min \Y@max=\the\Y@max }\next@}\let\bstartPLACE@=\relax}
+\xydef@\preARC@{%
+ \ifx\next\space@ \expandafter\DN@\space{\xyFN@\preARC@}%
+ \else\ifx\next @\DN@{\xy@{ellipseARC}\ellipticARC@ \arc@}%
+ \else\ifx\next ~\DN@~##1{\tildeARC@{##1}}%
+ \else\DN@{\xy@{ellipticARC}\ellipticARC@ \arc@}%
+ \fi\fi\fi \next@ }
+\xydef@\arc@#1@#2{\DN@{#2}%
+ \ifx\next@\empty \xy@{arcSTYLE}{\def\arcSTYLE{-}}%
+ \else \xy@{arcSTYLE}{\def\arcSTYLE{#2}}\fi \arc@i
+ \DNii@{#1}%
+ \ifx\nextii@\empty \DN@{\fullCircle@}%
+ \else \DN@{_}%
+ \ifx\next@\nextii@ \xy@{_}{\def\arcOrient@@{_}}%
+ \let\arcOrient@@=\next@ \DN@{\fullCircle@}%
+ \else \DN@{^}%
+ \ifx\next@\nextii@ \xy@{^}{\def\arcOrient@@{^}}%
+ \let\arcOrient@@=\next@ \DN@{\fullCircle@}%
+ \else \DN@{\def\afterARCextents@@{%
+ \xy@{aftARCext}{\let\doCircleArc@=\doCircleArc@@}%
+ \ellipseArc@ \xy@{doCircARCs}{\doCircleArcs@}\endarc@ }%
+ \xyFN@\getarcparams@#1@}\fi\fi\fi
+ \next@ }
+\xydef@\arc@i{\xy@{ARCi}{%
+ \save@\idfromc@{0@c}\cfromp@\idfromc@{0@p}%
+ \enter@\cplusthec@ \enter@\relax\begingroup\vfromslide@i{}@\czeroEdge@
+ \leave@\idfromc@{0@m}\leave@ \zeroDivideLimit@{50}%
+ \edef\origDirection@{\Direction=\the\Direction
+ \relax\noexpand\imposeDirection@}%
+ \let\startDirection@=\origDirection@ \def\startDirection@@{}%
+ \def\endDirection@{}\def\endDirection@@{}\def\arcOrient@@{^}}%
+ \def\arcOrient@@{^}\let\processDirections@=\checkstartDirection@
+ \def\arcRadius@{}\def\ellipseRatio@{}\def\arcScale@{\arcScale@@}}
+\message{circles,}
+\xydef@\fullCircle@{\xy@{fullCIRC}{\let\endDirection@=\relax
+ \let\doCircleArc@=\doMergeEndArc@@}\circleArc@ }%
+\xydef@\getarcparams@{%
+ \ifx\space@\next \expandafter\DN@\space{\xyFN@\getarcparams@}%
+ \else\addLT@\ifx \next \xy@{<}{}%
+ \addGT@{\addLT@\DN@##1}{\splitRadius@dim##1,,@}%
+ \else\ifx\next (\DN@({\xyFN@\checkRadOpen@}%
+ \else\ifx\next @\xy@{@}{}\DN@ @{\fullEllipse@}%
+ \else \addLQ@\ifx \next \addLQ@\DN@{\xy@`{}\ARCturn@}%
+ \else \DN@{\getarcExtents@}%
+ \fi\fi\fi\fi\fi \next@ }
+\xydef@\checkRadOpen@{%
+ \ifx\next *\DN@{\xyFN@\getarcExtents@ (}%
+ \else \xy@{(}{}\DN@##1){\splitRadius@##1,,@}%
+ \fi \next@ }
+\xydef@\fixedRadiusArc@{%
+ \xy@{fixRadArc}{\save@ \idfromc@{0@0}\cfromp@\idfromc@{0@c}\leave@}%
+ \xyFN@\fixedRadiusArc@i }
+\xydef@\fixedRadiusArc@i{%
+ \ifx\next\space@ \expandafter\DN@\space{\xyFN@\fixedRadiusArc@i}%
+ \else\ifx\next @\xy@{@}{}\DN@ @{\fullEllipse@}%
+ \else\DN@{\let\processDirections@=\processArcDirections@
+ \def\afterARCextents@@{\xy@{aftARCext}{\let\doCircleArc@=\doCircleArc@@
+ \ellipseSector@}}\xyFN@\getarcExtents@}%
+ \fi\fi \next@ }
+\xydef@\arcScale@@{\xy@{arcSCALE@@}{\save@
+ \cfromid@{0@0}\pfromc@\cfromid@{0@p}\setbase@\X@p\Y@p\X@c\Y@c}}
+\xydef@\arcScale@dim#1{\xy@{arcSCALEdim}{\save@
+ \cfromid@{0@0}\pfromc@ \cfromid@{0@p}\setupDirection@\cfromp@
+ \enter@\cplusthec@ \begingroup\vfromslide@i#1@%
+ \setbase@\X@p\Y@p\X@c\Y@c \idfromc@{0@p}}}
+\xydef@\ellipseScale@dim#1{\xy@{ellSCALEdim}{\setupDirection@\cfromp@
+ \enter@\cplusthec@ \aboveDirection@\xydashl@ \vfromslide@{#1}\leave@
+ \setbase@@\X@c\Y@c}}
+\xydef@\ellipseScale@#1{\xy@{ellSCALE@}%
+ {\vfromcartesian@@0,#1@\setbase@@\X@c\Y@c}}
+\xydef@\splitRadius@dim#1,#2,#3@{%
+ \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\relax%\splinetracing
+ \expandafter\def\expandafter\arcRadius@
+ \expandafter{\arcScale@dim{#1}}\fi
+ \DN@{#2}\ifx\next@\empty\dimen@ii=\z@\def\ellipseRatio@{}%
+ \else\dimen@ii=#2\relax \expandafter
+ \def\expandafter\ellipseRatio@\expandafter{\ellipseScale@dim{#2}}%
+ \fi \fixedRadiusArc@ }
+\xydef@\splitRadius@#1,#2,#3@{%
+ \DN@{#1}\ifx\next@\empty\dimen@=\z@\else\dimen@=#1\p@\relax\fi
+ \DN@{#2}\ifx\next@\empty\dimen@ii=\z@\else\dimen@ii=#2\p@\relax\fi
+ \ifdim\dimen@=\z@ \ifdim\dimen@ii=\z@\else \expandafter
+ \def\expandafter\ellipseRatio@\expandafter{\ellipseScale@{#2}}\fi
+ \else
+ \ifdim\dimen@ii=\z@
+ \def\arcScale@{\xy@{arcSCALE@}{\save@\cfromid@{0@0}%
+ \X@origin=\X@c \Y@origin=\Y@c
+ \X@xbase=#1\X@xbase \Y@xbase=#1\Y@xbase
+ \X@ybase=#1\X@ybase \Y@ybase=#1\Y@ybase
+ \advance\X@c\X@xbase \advance\Y@c\Y@xbase \czeroEdge@
+ \idfromc@{0@p}\idfromc@{0@c}}}%
+ \else
+ \def\arcScale@{\xy@{arcSCALE@}{\save@\cfromid@{0@0}%
+ \X@origin=\X@c \Y@origin=\Y@c
+ \X@xbase=#1\X@xbase \Y@xbase=#1\Y@xbase
+ \X@ybase=#2\X@ybase \Y@ybase=#2\Y@ybase
+ \advance\X@c\X@xbase \advance\Y@c\Y@xbase \czeroEdge@
+ \idfromc@{0@p}\idfromc@{0@c}}}%
+ \fi
+ \fi \fixedRadiusArc@ }
+\xydef@\baseOrient@{\DN@{_}\ifx\next@\arcOrient@@
+ \X@ybase=-\X@ybase \Y@ybase=-\Y@ybase \fi }
+\message{ellipses,}
+\xydef@\fullEllipse@{\xy@{fullELLIPSE}%
+ {\def\startDirection@{}\let\doCircleArc@=\doMergeEndArc@@}%
+ \ellipseArc@
+ \xy@{doCIRCarcs}{\leave@ \doCircleArcs@}\endarc@ }
+\xydef@\ellipseArc@{%
+ \arcScale@ \arcRadius@ \ellipseRatio@
+ \xy@{arcCONTROLS}{\baseOrient@ \arcControls@ \let\bstartPLACE@=\relax }}
+\xydef@\cubicARCcontrols@@{\czeroEdge@
+ \vfromcartesian@@0,1@\idfromc@{1@c}%
+ \vfromcartesian@@-1,0@\idfromc@{2@c}%
+ \vfromcartesian@@0,-1@\idfromc@{3@c}%
+ \vfromcartesian@@1,\arcparam@ @\idfromc@{1@m}%
+ \vfromcartesian@@\arcparam@,1@\idfromc@{2@m}%
+ \vfromcartesian@@-\arcparam@,1@\idfromc@{3@m}%
+ \vfromcartesian@@-1,\arcparam@ @\idfromc@{4@m}%
+ \vfromcartesian@@-1,-\arcparam@ @\idfromc@{5@m}%
+ \vfromcartesian@@-\arcparam@,-1@\idfromc@{6@m}%
+ \vfromcartesian@@\arcparam@,-1@\idfromc@{7@m}%
+ \vfromcartesian@@1,-\arcparam@ @\idfromc@{8@m}%
+ }
+\xydef@\doCircleArc@@#1#2{\save@ \ifcase#2\relax
+ \doCircleArc@@@{0@p}{1@m}{2@m}{1@c}{#1}\or
+ \doCircleArc@@@{1@c}{3@m}{4@m}{2@c}{#1}\or
+ \doCircleArc@@@{2@c}{5@m}{6@m}{3@c}{#1}\or
+ \doCircleArc@@@{3@c}{7@m}{8@m}{0@p}{#1}\or
+ \doCircleArc@@@{0@p}{1@m}{2@m}{1@c}{#1}\or
+ \doCircleArc@@@{1@c}{3@m}{4@m}{2@c}{#1}\or
+ \doCircleArc@@@{2@c}{5@m}{6@m}{3@c}{#1}\or
+ \doCircleArc@@@{3@c}{7@m}{8@m}{0@p}{#1}\fi \leave@ }
+\xydef@\doCircleArc@@@#1#2#3#4#5{%
+ \cfromid@{#1}\pfromc@\senter@
+ \cfromid@{#2}\spushc@\cfromid@{#3}\spushc@\cfromid@{#4}%
+ \connect@\crvs{#5}\relax\sinit@\sleave@}
+\xydef@\doMergeEndArc@@#1#2{\save@\ifcase#2\relax
+ \doMergeEnd@@@{0@p}{1@m}{2@m}{1@c}{#1}\relax\or
+ \doMergeEnd@@@{1@c}{3@m}{4@m}{2@c}{#1}\relax\or
+ \doMergeEnd@@@{2@c}{5@m}{6@m}{3@c}{#1}\relax\or
+ \doMergeEnd@@@{3@c}{7@m}{8@m}{0@p}{#1}@\fi \leave@ }
+\xydef@\doMergeEnd@@@#1#2#3#4#5#6{%
+ \cfromid@{#1}\pfromc@\senter@
+ \cfromid@{#2}\spushc@\cfromid@{#3}\spushc@\cfromid@{#4}%
+ \ifx#6\relax
+ \L@c=.1\p@ \R@c=\L@c \U@c=\L@c \D@c=\L@c \Edge@c={\rectangleEdge}\fi
+ \enter@\cmergethec@\cfromid@{0@c}\leave@
+ \enter@\cmergethec@\cfromcontrols@{#1}{#2}{#3}{#4}\leave@
+ \connect@\crvs{#5}\relax
+ \sinit@\sleave@}
+\xydef@\doMergeStartArc@#1#2{\save@\ifcase#2\relax
+ \doMergeStart@@{0@p}{1@m}{2@m}{1@c}{#1}@\or
+ \doMergeStart@@{1@c}{3@m}{4@m}{2@c}{#1}\relax\or
+ \doMergeStart@@{2@c}{5@m}{6@m}{3@c}{#1}\relax\or
+ \doMergeStart@@{3@c}{7@m}{8@m}{0@p}{#1}\relax\fi \leave@ }
+\xydef@\doMergeStart@@#1#2#3#4#5#6{%
+ \cfromid@{#1}\ifx#6\relax
+ \L@c=.1\p@ \R@c=\L@c \U@c=\L@c \D@c=\L@c \Edge@c={\rectangleEdge}\fi
+ \enter@\cmergethec@\cfromid@{0@x}\leave@
+ \enter@\cmergethec@\cfromcontrols@{#4}{#3}{#2}{#1}\leave@
+ \pfromc@
+ \senter@ \cfromid@{#2}\spushc@\cfromid@{#3}\spushc@\cfromid@{#4}%
+ \connect@\crvs{#5}\relax\sinit@\sleave@}
+\xydef@\doMergeBothArc@#1#2{\save@\ifcase#2\relax
+ \doMergeBoth@@{0@p}{1@m}{2@m}{1@c}{#1}@\or
+ \doMergeBoth@@{1@c}{3@m}{4@m}{2@c}{#1}\relax\or
+ \doMergeBoth@@{2@c}{5@m}{6@m}{3@c}{#1}\relax\or
+ \doMergeBoth@@{3@c}{7@m}{8@m}{0@p}{#1}\relax\fi \leave@ }
+\xydef@\doMergeBoth@@#1#2#3#4#5#6{%
+ \cfromid@{#1}\ifx#6\relax
+ \L@c=.1\p@ \R@c=\L@c \U@c=\L@c \D@c=\L@c \Edge@c={\rectangleEdge}\fi
+ \enter@\cmergethec@\cfromid@{0@x}\leave@
+ \enter@\cmergethec@\cfromcontrols@{#4}{#3}{#2}{#1}\leave@
+ \pfromc@
+ \senter@ \cfromid@{#2}\spushc@\cfromid@{#3}\spushc@\cfromid@{#4}%
+ \enter@\cmergethec@\cfromid@{0@c}\leave@
+ \enter@\cmergethec@\cfromcontrols@{#1}{#2}{#3}{#4}\leave@
+ \connect@\crvs{#5}\relax\sinit@\sleave@}
+\xydef@\doMergeEndArc@#1#2{\count@@=#2\relax
+ \ifnum\count@@>\thr@@ \advance\count@@-4\fi\relax
+ \doMergeEndArc@@{#1}\count@@ }
+\xydef@\doStraightArc@@#1{\xy@{STRAITarc}{\save@
+ \cfromid@{0@p}\pfromc@\cfromid@{0@c}%
+ \senter@\connect@\crvs{#1}\sinit@\sleave@\leave@}}
+\xydef@\cfromcontrols@#1#2#3#4{\bgroup
+ \cfromid@{#1}\L@p=\X@c \U@p=\Y@c
+ \cfromid@{#4}\R@p=\X@c \D@p=\Y@c
+ \cfromid@{#3}\A@=\X@c \B@=\Y@c \cfromid@{#2}%
+ \ifdim\R@p>\L@p \ifdim\A@>\R@p \R@p=\A@
+ \ifdim\X@c>\R@p \R@p=\X@c\fi\fi
+ \else \ifdim\A@<\R@p \R@p=\A@
+ \ifdim\X@c<\R@p \R@p=\X@c\fi\fi
+ \fi
+ \ifdim\D@p>\U@p \ifdim\B@>\D@p \D@p=\B@
+ \ifdim\Y@p>\D@p \D@p=\Y@p\fi\fi
+ \else \ifdim\B@<\D@p \D@p=\B@
+ \ifdim\Y@p<\D@p \D@p=\Y@p\fi\fi
+ \fi
+ \edef\next@{\egroup \X@c=\the\R@p \Y@c=\the\D@p}\next@ }
+\xydef@\doCircleArcs@{\save@
+ \cfromid@{0@0}\pfromc@\cfromid@{0@p}\setupDirection@
+ \startDirection@ \edef\startDirection@@{\the\Direction}%
+ \cfromid@{1@c}\setupDirection@ \edef\quadDirection@{\the\Direction}\relax
+ \count@=\quadDirection@ \relax\def\nextii@{^}%
+ \let\preDirection@@=\startDirection@@
+ \ifx\nextii@\arcOrient@@
+ \ifnum\quadDirection@>\startDirection@@ \relax
+ \else \advance\count@ by8192 \relax\edef\quadDirection@{\the\count@}\fi
+ \ifx\endDirection@@\empty
+ \ifx\endDirection@\relax
+ \bgroup\cfromid@{0@c}\setupDirection@
+ \edef\next@{\egroup \count@@=\the\Direction}\next@ \relax
+ \ifnum\count@@<\startDirection@@ \advance\count@@ 8192 \fi
+ \edef\endDirection@@{\the\count@@}%
+ \else
+ \count@@=\startDirection@@
+ \advance\count@@ by8192 \edef\endDirection@@{\the\count@@}%
+ \fi
+ \else
+ \count@@=\endDirection@@ \relax\ifnum\count@@<\startDirection@@ \relax
+ \advance\count@@ by8192 \edef\endDirection@@{\the\count@@}\fi
+ \fi
+ \ifnum\endDirection@@>\quadDirection@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{0}}%
+ \else
+ \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{0}}%
+ \fi
+ \else
+ \ifnum\count@<\startDirection@@\relax\else\advance\count@ by-8192 \relax
+ \edef\quadDirection@{\the\count@}\fi
+ \ifx\endDirection@@\empty
+ \ifx\endDirection@\relax
+ \bgroup\cfromid@{0@c}\setupDirection@
+ \edef\next@{\egroup \count@@=\the\Direction}\next@ \relax
+ \ifnum\count@@>\startDirection@@ \advance\count@@-8192 \fi
+ \edef\endDirection@@{\the\count@@}%
+ \else
+ \count@@=\startDirection@@
+ \advance\count@@ by-8192 \edef\endDirection@@{\the\count@@}%
+ \fi
+ \else
+ \count@@=\endDirection@@ \relax \ifnum\count@@>\startDirection@@
+ \advance\count@@ by-8192 \edef\endDirection@@{\the\count@@}\fi
+ \fi
+ \ifnum\endDirection@@<\quadDirection@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{0}}%
+ \else \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{0}}\fi
+ \fi
+ \next@ \relax
+ \count@=\quadDirection@ \relax\def\nextii@{^}\DN@{}%
+ \ifx\nextii@\arcOrient@@
+ \count@@=\startDirection@@ \advance\count@@ by4096 \relax
+ \ifnum \count@<\endDirection@@ \relax
+ \ifnum\endDirection@@>\count@@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{1}}%
+ \else \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{1}}\fi
+ \fi
+ \else
+ \count@@=\startDirection@@ \advance\count@@ by-4096 \relax
+ \ifnum \count@>\endDirection@@ \relax
+ \ifnum\endDirection@@<\count@@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{1}}%
+ \else \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{1}}\fi
+ \fi\fi
+ \next@ \relax
+ \ifx\next@\empty \else \relax
+ \count@=\startDirection@@ \relax\def\nextii@{^}\DN@{}%
+ \ifx\nextii@\arcOrient@@ \advance\count@ by4096 \relax
+ \count@@=\quadDirection@ \advance\count@@ by4096 \relax
+ \ifnum \count@<\endDirection@@
+ \ifnum\endDirection@@>\count@@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{2}}%
+ \else \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{2}}\fi
+ \fi
+ \else \advance\count@ by-4096 \relax
+ \count@@=\quadDirection@ \advance\count@@ by-4096 \relax
+ \ifnum \count@>\endDirection@@ \relax
+ \ifnum\endDirection@@<\count@@
+ \DN@{\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{2}}%
+ \else \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{2}}\fi
+ \fi\fi
+ \next@ \relax
+ \fi
+ \ifx\next@\empty \else \relax
+ \count@=\quadDirection@ \def\nextii@{^}\DN@{}%
+ \ifx\nextii@\arcOrient@@ \advance\count@ by4096 \relax
+ \ifnum \count@<\endDirection@@
+ \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{3}}\fi
+ \else \advance\count@ by-4096 \relax
+ \ifnum \count@>\endDirection@@
+ \DN@{\expandafter\doCircleArc@\expandafter{\arcSTYLE}{3}}\fi
+ \fi \next@ \relax
+ \fi
+ \leave@ }
+\message{elliptical arcs,}
+\xydef@\arcmagic@@{0.5517847}
+\xylet@\arcmagic=\arcmagic@@
+\xydef@\tildeARC@#1{%
+ \if q#1\DN@{\xy@{quadARC}\quadARC@ \arc@}%
+ \else\if c#1\DN@{\xyFN@\cubicARC@i}%
+ \else\if e#1\DN@{\xy@{ellipticARC}\ellipticARC@ \arc@}%
+ \else\if i#1\DN@{\xy@{interpARC}\interpARC@ \arc@}%
+ \else\if p#1\DN@{\xy@{cuspidalARC}\cuspidalARC@ \arc@}%
+ \else\xywarning@{unknown arc type: #1 }%
+ \DN@{\xy@{ellipticARC}\ellipticARC@ \arc@}%
+ \fi\fi\fi\fi\fi \next@ }
+\xydef@\cubicARC@i{%
+ \ifx\next\space@ \expandafter\DN@\space{\xyFN@\cubicARC@i}%
+ \else\ifx\next (\DN@(##1){\xy@{cubicARC(##1)}{\cubicARC@{##1}}\arc@}%
+ \else \DN@{\xy@{cubicARC(1)}{\cubicARC@{1}}\arc@}%
+ \fi\fi \next@ }
+\xydef@\ellipticARC@{\let\arcControls@=\cubicARCcontrols@@
+ \edef\arcparam@{\arcmagic@@}}
+\xydef@\cubicARC@#1{\let\arcControls@=\cubicARCcontrols@@
+ \dimen@=#1\p@ \edef\arcparam@{\expandafter\removePT@\the\dimen@}}
+\xydef@\quadARC@{\let\arcControls@=\cubicARCcontrols@@
+ \def\arcparam@{.66667}}
+\xydef@\cuspidalARC@{\let\arcControls@=\cubicARCcontrols@@
+ \def\arcparam@{2}}
+\xydef@\interpARC@{\let\arcControls@=\cubicARCcontrols@@
+ \def\arcparam@{1.33333}}
+\xydef@\ARCturn@{\xy@@\bgroup\afterCOORD{%
+ \xy@@{\edef\next@{\egroup \A@=\the\X@c \B@=\the\Y@c}\next@}\ARCturn@@}}
+\xydef@\ARCturn@@#1@{\DN@{#1}\DNii@{^}%
+ \ifx\next@\nextii@ \xy@{^}{\def\arcOrient@@{^}}%
+ \else\DNii@{_}\ifx\next@\nextii@ \xy@{_}{\def\arcOrient@@{_}}%
+ \else\xy@{}{\def\arcOrient@@{}}\fi\fi
+ \xy@@\ARCturn@@@ \processDirections@@ }
+\xydef@\ARCturn@@@{%
+ \bgroup\cfromid@{0@p}\X@p=\X@c \Y@p=\Y@c \X@c=\A@ \Y@c=\B@
+ \setupDirection@ \edef\next@{\egroup\count@=\the\Direction}\next@\relax
+ \edef\startDirection@@{\the\count@ }%
+ \bgroup\cfromid@{0@c}\X@p=\A@ \Y@p=\B@
+ \setupDirection@ \edef\next@{\egroup\count@=\the\Direction}\next@\relax
+ \edef\endDirection@@{\the\count@}%
+ \ifx\arcOrient@@\empty
+ \bgroup\cfromid@{0@p}\X@p=\X@c \Y@p=\Y@c \cfromid@{0@c}%
+ \setupDirection@ \edef\next@{\egroup\count@@=\the\Direction}\next@\relax
+ \count@=-\count@@ \advance\count@\startDirection@@ \relax \count@=-\count@
+ \ifnum\count@>4096 \def\arcOrient@@{_}%
+ \else\ifnum\count@<-4096 \def\arcOrient@@{^}%
+ \else\ifnum\count@>\z@ \def\arcOrient@@{^}%
+ \else\def\arcOrient@@{_}\fi\fi\fi
+ \fi }
+\xydef@\circleArc@{%
+ \xy@{circARC@}{\cfromid@{0@p}\pfromc@\cfromp@\startDirection@
+ \arcCenter@\idfromc@{0@0}%
+ \def\startDirection@{\bgroup
+ \cfromid@{0@0}\pfromc@\cfromid@{0@p}\setupDirection@
+ \edef\next@{\egroup \Direction=\the\Direction}\next@
+ \relax\imposeDirection@}}%
+ \ifx\endDirection@@\empty
+ \ifx\arcRadius@\empty \ifx\ellipseRatio@\empty\else
+ \DN@{\arcScale@@}\ifx\arcScale@\next@\else
+ \xy@@{\bgroup\cfromid@{0@0}\pfromc@\cfromid@{0@c}\setupDirection@
+ \edef\next@{\egroup \Direction=\the\Direction}\next@
+ \edef\endDirection@@{\the\Direction}}\fi\fi\fi\fi
+ \ellipseArc@ \xy@@{\leave@ \doCircleArcs@}\endarc@ }
+\xydef@\arcbisector{%
+ \cfromid@{0@p}\pfromc@\cfromid@{0@c}\setupDirection@
+ \advance\X@c\X@p\divide\X@c\tw@
+ \advance\Y@c\Y@p\divide\Y@c\tw@ \czeroEdge@ \pfromc@
+ \enter@\cplusthec@ \enter@\relax\begingroup
+ \aboveDirection@\xydashl@ \vfromslide@i{}@\leave@ }
+\xydef@\arcCenter@{%
+ \cfromid@{0@p}\pfromc@\cfromid@{0@m}\setupDirection@
+ \cfromp@\enter@\cplusthec@ \enter@\relax\begingroup
+ \aboveDirection@\xydashl@ \vfromslide@i{}@\leave@\no@@
+ \arcCenter@i }
+\xydef@\arcCenter@i{%
+ \enter@{\pfromthep@}\setupDirection@ \Creset@@
+ \let\PLACEedgep@@=\PLACEedgep@ \let\PLACEedgec@@=\PLACEedgec@
+ \enter@{\pfromthep@\basefromthebase@}\bgroup
+ \arcbisector \edef\next@{\egroup
+ \X@c =\the\X@c \Y@c=\the\Y@c \X@p=\the\X@p \Y@p=\the\Y@p }%
+ \next@ \Cintercept@@ \leave@\leave@ }
+\xydef@\getarcExtents@{%
+ \ifx\space@\next\expandafter\DN@\space{\xyFN@\getarcExtents@}%
+ \else\ifx\next @\xy@{@}{}\DN@ @{\fullEllipse@}%
+ \else\DN@{\xy@{arcEXTENTs}{\save@
+ \def\startDirection@{\Direction=\startDirection@@ \imposeDirection@}}%
+ \xyFN@\getarcExtents@ii}\fi\fi \next@ }
+\xydef@\getarcExtents@ii{%
+ \ifx\next!\xy@{![[}{}\DN@![[##1]]{\getxyDirection@{##1}\getarcExtents@iv}%
+ \else\DN@{\getarcExtents@iv}\fi \next@ }
+\xydef@\getarcExtents@iv{\afterDIRECTIONorEMPTY
+ {\xy@{startDIR}{\edef\startDirection@@{\the\Direction}\leave@}%
+ \xyFN@\getarcOrientation@}%
+ {\xy@{startDIR}{\edef\startDirection@@{\the\Direction}\leave@}%
+ \xyFN@\getarcOrientation@}}
+\xydef@\getarcOrientation@{%
+ \ifx\space@\next\expandafter\DN@\space{\xyFN@\getarcOrientation@}%
+ \else\ifx\next @\xy@{@}{}\DN@{\getEndDirection@x}%
+ \else\ifx\next,\xy@{,}{}\DN@,{\xyFN@\getarcOrientation@i}%
+ \else\DN@{\getarcOrientation@i}\fi\fi\fi \next@ }%
+\xydef@\getarcOrientation@i{%
+ \ifx\space@\next\expandafter\DN@\space{\xyFN@\getarcOrientation@i}%
+ \else\ifx\next @\xy@{@}{}\DN@{\getEndDirection@x}%
+ \else\ifx\next^{}\DN@##1{\xy@{^}{\def\arcOrient@@{^}}%
+ \def\arcOrient@@{^}\xyFN@\getEndDirection@}%
+ \else\ifx\next_\DN@##1{\xy@{_}{\def\arcOrient@@{_}}%
+ \def\arcOrient@@{_}\xyFN@\getEndDirection@}%
+ \else\DN@{\xyFN@\getEndDirection@}%
+ \fi\fi\fi\fi \next@ }
+\xydef@\getEndDirection@{%
+ \ifx\space@\next\expandafter\DN@\space{\xyFN@\getEndDirection@}%
+ \else\ifx\next,\DN@,{\xy@{,}{}\xyFN@\getEndDirection@}%
+ \else\addEQ@\ifx\next\addEQ@\DN@{\xy@{=}{\save@\startDirection@}%
+ \xyFN@\getEqDirection@}%
+ \else \ifx\next!\DN@![[##1]]{\xy@{![[}{\save@}\getxyDirection@{##1}%
+ \xy@{endDIR}{\edef\endDirection@@{\the\Direction}}%
+ \xyFN@\getEndDirection@i}%
+ \else \DN@{\xy@{origDIR}{\save@\origDirection@}\getEndDirection@i}%
+ \fi\fi\fi\fi \next@ }
+\xydef@\getEqDirection@{%
+ \ifx\space@\next\expandafter\DN@\space{\xyFN@\getEqDirection@}%
+ \else\ifx\next @\xy@{@}{}\DN@ @{%
+ \xy@{sameDIR}{\edef\endDirection@@{\startDirection@@}\leave@}%
+ \parEllipse@{1}{}}%
+ \else\ifx\next (\DN@({\xyFN@\checkEqOpen@}%
+ \else \DN@{\getEndDirection@i}\fi\fi\fi \next@ }
+\xydef@\checkEqOpen@{%
+ \ifx\next *\DN@{\getEndDirection@i (}%
+ \else \DN@##1)##2@{\xy@{()}\leave@ \parEllipse@{##1}{##2}}%
+ \fi \next@ }
+\xydef@\getEndDirection@i{\afterDIRECTIONorEMPTY
+ {\xy@{endDIR}{\edef\endDirection@@{\the\Direction}\leave@}%
+ \getEndDirection@x }%
+ {\xy@{endDIR}\leave@ \getEndDirection@x }}
+\xydef@\getEndDirection@x#1@{%
+ \DN@{#1}\ifx\next@\empty\relax \else\xywarning@{\omittingTokens@}\fi
+ \processDirections@ }
+\xydef@\omittingTokens@{omitting unused tokens: \codeof\next@ }
+\xydef@\processDirections@@{%
+ \ifx\endDirection@@\empty \skewCircle@
+ \else \skewEllipse@ \expandafter \afterARCextents@@ \fi }
+\xydef@\processArcDirections@{%
+ \xy@{ARCdirs}{\ifx\endDirection@@\empty
+ \origDirection@ \edef\endDirection@@{\the\Direction}\fi}%
+ \ellipseArc@
+ \xy@{procARCdirs}\processArcDirections@@
+ \let\arcScale@\ellsave@ \let\arcRadius@\ellsave@ \def\ellipseRatio@{}%
+ \xy@{circSECTORS}{\doCircleSectors@}\endarc@ }
+\xydef@\ellsave@{\xy@@{\save@}}
+\xydef@\processArcDirections@@{\save@
+ \bgroup \cfromid@{0@0}\pfromc@ \Direction=\startDirection@@
+ \DN@{_}\ifx\next@\arcOrient@@
+ \advance\Direction \ifnum\Direction<\z@-\fi 4096 \relax\fi
+ \imposeDirection@
+ \d@X=\cosDirection\Y@ybase \advance\d@X-\sinDirection\X@ybase
+ \d@Y=-\cosDirection\Y@xbase \advance\d@Y\sinDirection\X@xbase
+ \setupDirection@i
+ \d@X=-\cosDirection\X@ybase \advance\d@X\sinDirection\X@xbase
+ \d@Y=-\cosDirection\Y@ybase \advance\d@Y\sinDirection\Y@xbase
+ \enter@\cplusthec@\X@c=\d@X \Y@c=\d@Y \leave@ \czeroEdge@
+ \setupDirection@i
+ \czeroEdge@
+ \edef\next@{\egroup \cfromthec@ \count@=\the\Direction}\next@
+ \edef\startDirection@@{\the\count@}\idfromc@{0@x}%
+ \bgroup \cfromid@{0@0}\pfromc@ \Direction=\endDirection@@
+ \DN@{_}\ifx\next@\arcOrient@@
+ \advance\Direction \ifnum\Direction<\z@-\fi 4096 \relax\fi
+ \imposeDirection@
+ \d@X=\cosDirection\Y@ybase \advance\d@X-\sinDirection\X@ybase
+ \d@Y=-\cosDirection\Y@xbase \advance\d@Y\sinDirection\X@xbase
+ \setupDirection@i
+ \d@X=-\cosDirection\X@ybase \advance\d@X\sinDirection\X@xbase
+ \d@Y=-\cosDirection\Y@ybase \advance\d@Y\sinDirection\Y@xbase
+ \enter@\cplusthec@\X@c=\d@X \Y@c=\d@Y \leave@
+ \czeroEdge@
+ \setupDirection@i
+ \edef\next@{\egroup \cfromthec@ \count@=\the\Direction}\next@
+ \edef\endDirection@@{\the\count@}\idfromc@{0@c}%
+ \count@=\startDirection@@ \relax \count@@=\endDirection@@ \relax
+ \DN@{^}\ifx\arcOrient@@\next@
+ \ifnum\count@@>\count@ \else\advance\count@@ 8192 \relax\fi
+ \else
+ \ifnum\count@@<\count@ \else\advance\count@@-8192 \relax\fi\fi
+ \edef\startDirection@@{\the\count@}%
+ \edef\endDirection@@{\the\count@@}}%
+\xydef@\doCircleSectors@{%
+ \let\doCircleArc@=\doMergeEndArc@@ \leave@ \leave@
+ \cfromid@{0@0}\pfromc@\cfromid@{0@p}\setupDirection@
+ \count@=\Direction \DN@{^}\ifx\arcOrient@@\next@
+ \ifnum\count@>\startDirection@@ \advance\count@-8192 \fi\relax
+ \count@@=\count@ \advance\count@@ 8192 \relax
+ \ifnum\count@@<\endDirection@@ \advance\count@@ 8192 \fi\relax
+ \else
+ \ifnum\count@<\startDirection@@ \advance\count@ 8192 \fi\relax
+ \count@@=\count@ \advance\count@@-8192 \relax
+ \ifnum\count@@>\endDirection@@ \advance\count@@-8192 \fi\relax
+ \fi \relax
+ \edef\preDirection@@{\the\count@}\edef\postDirection@@{\the\count@@}%
+ \cfromid@{1@c}\setupDirection@ \count@=\Direction
+ \def\nextii@{^}\ifx\nextii@\arcOrient@@
+ \DN@{\forwardSectors@\doEllipseSectors@}%
+ \ifnum\count@<\preDirection@@ \advance\count@ 8192 \relax
+ \else \count@@=\count@\advance\count@-8192 \relax
+ \ifnum\count@@<\preDirection@@ \else\count@=\count@@ \fi\fi
+ \else
+ \DN@{\backwardSectors@\doEllipseSectors@}%
+ \ifnum\count@>\preDirection@@ \advance\count@-8192 \relax
+ \else \count@@=\count@\advance\count@ 8192 \relax
+ \ifnum\count@@>\preDirection@@ \else\count@=\count@@ \fi\fi
+ \fi \edef\quadDirection@{\the\count@}%
+ \next@ }
+\xydef@\forwardSectors@{%
+ \ifnum \startDirection@@<\quadDirection@ \def\startSector@@{0}%
+ \else\count@=\preDirection@@ \advance\count@ 4096 \relax
+ \ifnum \startDirection@@<\count@ \def\startSector@@{1}%
+ \else\count@=\quadDirection@ \advance\count@ 4096 \relax
+ \ifnum\startDirection@@<\count@ \def\startSector@@{2}%
+ \else \def\startSector@@{3}\fi\fi\fi
+ \ifnum\quadDirection@ <\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@ 4096 \relax
+ \ifnum\count@<\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@ 4096 \relax
+ \ifnum\count@<\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@ 8192 \relax
+ \ifnum\count@<\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@ 8192 \relax
+ \ifnum\count@<\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@ 12288 \relax
+ \ifnum\count@<\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@ 12288 \relax
+ \ifnum\count@<\endDirection@@ \def\endSector@@{7}%
+ \else \def\endSector@@{6}\fi
+ \else \def\endSector@@{5}\fi
+ \else \def\endSector@@{4}\fi
+ \else \def\endSector@@{3}\fi
+ \else \def\endSector@@{2}\fi
+ \else \def\endSector@@{1}\fi
+ \else \def\endSector@@{0}\fi }
+\xydef@\backwardSectors@{%
+ \ifnum \startDirection@@>\quadDirection@ \def\startSector@@{0}%
+ \else\count@=\preDirection@@ \advance\count@-4096 \relax
+ \ifnum \startDirection@@>\count@ \def\startSector@@{1}%
+ \else\count@=\quadDirection@ \advance\count@-4096 \relax
+ \ifnum\startDirection@@>\count@ \def\startSector@@{2}%
+ \else \def\startSector@@{3}\fi\fi\fi
+ \ifnum\quadDirection@>\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@-4096 \relax
+ \ifnum\count@>\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@-4096 \relax
+ \ifnum\count@>\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@-8192 \relax
+ \ifnum\count@>\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@-8192 \relax
+ \ifnum\count@>\endDirection@@ \relax
+ \count@=\preDirection@@ \advance\count@-12288 \relax
+ \ifnum\count@>\endDirection@@ \relax
+ \count@=\quadDirection@ \advance\count@-12288 \relax
+ \ifnum\count@>\endDirection@@ \def\endSector@@{7}%
+ \else \def\endSector@@{6}\fi
+ \else \def\endSector@@{5}\fi
+ \else \def\endSector@@{4}\fi
+ \else \def\endSector@@{3}\fi
+ \else \def\endSector@@{2}\fi
+ \else \def\endSector@@{1}\fi
+ \else \def\endSector@@{0}\fi }
+\xydef@\doEllipseSectors@{%
+ \ifx\startSector@@\endSector@@
+ \DN@{\expandafter\doMergeBothArc@\expandafter{\arcSTYLE}{\endSector@@}}%
+ \else
+ \expandafter\doMergeStartArc@\expandafter{\arcSTYLE}{\startSector@@}%
+ \edef\countArcs@@{\startSector@@}%
+ \loop@ \count@=\countArcs@@ \relax \advance\count@\@ne
+ \ifnum \count@ < \endSector@@ \edef\countArcs@@{\the\count@}%
+ \bgroup\expandafter\doCircleArc@@\expandafter{\arcSTYLE}{\countArcs@@}%
+ \egroup
+ \repeat@
+ \DN@{\expandafter\doMergeEndArc@\expandafter{\arcSTYLE}{\endSector@@}}%
+ \fi \next@ }
+\xydef@\checkstartDirection@{%
+ \bgroup\no@@ \edef\next@{\egroup\count@@=\the\Direction}\next@\relax
+ \ifnum\count@@=\startDirection@@ \relax \DN@{\straightArc@}%
+ \else \advance\count@@-\startDirection@@ \relax
+ \ifnum\count@@=\ifnum\count@@<\z@-\fi 4096 \relax \DN@{\straightArc@}%
+ \else \DN@{\processDirections@@}\fi\fi \next@ }
+\xydef@\straightArc@{\xywarning@{straight arc encountered}%
+ \xy@@{\let\bstartPLACE@=\relax
+ \expandafter\doStraightArc@@\expandafter{\arcSTYLE}}\endarc@ }%
+\xydef@\skewEllipse@{\xy@@{\doskewEllipse@}%
+ \def\afterARCextents@@{\xy@{aftARCext}{\let\doCircleArc@=\doMergeEndArc@@}%
+ \ellipseArc@ \xy@{doCircARCs}{\doCircleArcs@}\endarc@ }%
+ \let\arcScale@=\relax \def\arcRadius@{}\def\ellipseRatio@{}}
+\xydef@\skewCircle@{\xy@@{\setupDirection@}%
+ \ifnum\Direction=\startDirection@@\relax\DN@{\halfEllipse@{1}}%
+ \else
+ \xy@@{\def\startDirection@{\Direction=\startDirection@@\imposeDirection@}%
+ \cfromid@{0@p}\enter@\cplusthec@ \startDirection@
+ \enter@\relax\begingroup\vfromslide@i{}@\czeroEdge@\leave@\idfromc@{0@m}%
+ \let\endDirection@=\relax \let\doCircleArc@=\doMergeEndArc@@}%
+ \DN@{\circleArc@}%
+ \fi \next@ }
+\xydef@\doskewEllipse@{%
+ \def\startDirection@{\Direction=\startDirection@@ \relax
+ \imposeDirection@}\startDirection@ \cfromid@{0@p}%
+ \enter@\cplusthec@ \enter@\relax\begingroup\vfromslide@i{}@\leave@
+ \idfromc@{0@x}%
+ \ifx\endDirection@@\empty \parallelDirection@
+ \else
+ \def\endDirection@{\Direction=\endDirection@@ \relax
+ \imposeDirection@ }\endDirection@ \skewEllB@
+ \bgroup\setupDirection@\edef\next@{\egroup\count@@=\the\Direction}\next@
+ \edef\endDirection@@{\the\count@@}%
+ \fi
+ \cfromid@{0@p}\bgroup \setupDirection@
+ \edef\next@{\egroup \count@@=\the\Direction}\next@
+ \edef\startDirection@@{\the\count@@}}
+\xydef@\halfEllipse@#1{\xy@@{%
+ \cfromid@{0@p}\pfromc@\cfromid@{0@c}\no@@
+ \edef\endDirection@@{\the\Direction}%
+ \advance\X@c\X@p \divide\X@c\tw@ \advance\Y@c\Y@p \divide\Y@c\tw@
+ \idfromc@{0@0}\pfromc@ \cfromid@{0@p}\setbase@\X@p\Y@p\X@c\Y@c
+ \dimen@=\X@origin \advance\dimen@-\X@c \dimen@ii=\cosDirection\dimen@
+ \dimen@=\Y@origin \advance\dimen@-\Y@c \advance\dimen@ii \sinDirection\dimen@
+ \X@c=\X@origin \Y@c=\Y@origin \enter@\cplusthec@
+ \dimen@=#1\p@ \ifdim\dimen@<\z@ \DN@{^}\dimen@ii=-#1\dimen@ii
+ \ifx\next@\arcOrient@@\def\arcOrient@@{_}\else\def\arcOrient@@{^}\fi
+ \else \dimen@ii=#1\dimen@ii\fi
+ \startDirection@ \enter@\relax\begingroup\expandafter
+ \vfromslide@i\expandafter{\the\dimen@ii}@\leave@
+ \idfromc@{1@c}\setbase@@ \X@c \Y@c \adjustBaseOrient@
+ \count@@=\endDirection@@ \relax
+ \DN@{^}\advance\count@@\ifx\arcOrient@@\next@\else-\fi 4096 \relax
+ \edef\startDirection@@{\the\count@@}%
+ \def\startDirection@{\Direction=\startDirection@@ \imposeDirection@ }%
+ \let\doCircleArc@=\doMergeEndArc@@ }%
+ \let\arcScale@=\relax \ellipseArc@
+ \xy@@{\doCircleArcs@}\endarc@ }
+\xydef@\parallelDirection@{\show\parallelDirection@}%
+\xydef@\parEllipse@#1#2{\DN@{#2}\ifx\next@\empty
+ \else\xywarning@{\omittingTokens@ }\fi \halfEllipse@{#1}}
+\xydef@\skewEllB@{\cfromid@{0@c}\pfromc@\enter@\cplusthec@
+ \enter@\relax\begingroup\vfromslide@i{}@\leave@
+ \enter@{\pfromthep@\basefromthebase@}\no@@
+ \bgroup \cfromid@{0@p}\pfromc@\cfromid@{0@x}\edef\next@{\egroup
+ \X@c =\the\X@c \Y@c=\the\Y@c \X@p=\the\X@p \Y@p=\the\Y@p }\next@
+ \Cintercept@@\leave@ \idfromc@{0@x}\cfromid@{0@p}\enter@\cplusthec@
+ \cfromid@{0@c}\leave@ \enter@\cplusthec@ \cfromid@{0@x}%
+ \X@c=-\X@c \Y@c=-\Y@c \leave@ \idfromc@{0@0}\pfromc@\cfromid@{0@p}%
+ \setbase@\X@p\Y@p\X@c\Y@c \cfromid@{0@c}\setbase@@\X@c\Y@c
+ \adjustBaseOrient@ }
+\xydef@\adjustBaseOrient@{%
+ \edef\tmp@{\expandafter\removePT@\the\X@xbase}\dimen@=\Y@ybase
+ \divide\dimen@ 64 \relax \dimen@ii=\tmp@\dimen@
+ \edef\tmp@{\expandafter\removePT@\the\X@ybase}\dimen@=\Y@xbase
+ \divide\dimen@ 64 \relax \dimen@=\tmp@\dimen@
+ \ifdim\dimen@>\dimen@ii \X@ybase=-\X@ybase \Y@ybase=-\Y@ybase \fi }
+\xyendinput