\typeout{%GasTeX v1.0b2 Sept. 28, 1998}%%----------------------------------------------------------------------%%%% Graphs and Automata Simplified in TeX%%%% Macros for drawing easily graphs and automata under the picture %% environment of LaTeX 2.09 or LaTeX2e.%% Documentation and examples in doc_gastex.tex%%%% Paul Gastin%% LIAFA%% Universite Paris 7%% 2, place Jussieu%% F-75251 Paris Cedex 05%% email : Paul.Gastin@liafa.jussieu.fr%% www : http://www.liafa.jussieu.fr/~gastin%%%%----------------------------------------------------------------------%% The only change wrt v1.0b1 is that I added some macros from epic.sty%% so that it is no more needed to read this file. One should use simply%% \usepackage{pspictpg,gastex}%%----------------------------------------------------------------------%%%% Definitions:\newif\if@arrow\@arrowtrue\unitlength=4pt% \d@my@unit est l'unitˇ utilisˇe par tous les dessins de gastex.sty.% Les valeurs donnˇes en \unitlength sont transformˇes en \d@my@unit.% Ceci a pour effet d'augmenter la prˇcision des dessins.\newdimen\d@my@unit% \d@my@unit= 2048sp % environ 0.011 mm% \d@my@unit= 4096sp % environ 0.022 mm  \d@my@unit= 8192sp % environ 0.044 mm% \d@my@unit=16384sp % environ 0.088 mm\newcount\c@aux \newdimen\d@aux\newcount\c@auxa \newcount\c@auxb \newcount\c@auxc \newcount\c@auxd\newcount\c@xa \newcount\c@xb \newcount\c@xc \newcount\c@xd\newcount\c@ya \newcount\c@yb \newcount\c@yc \newcount\c@yd\newcount\c@deltax \newcount\c@deltay\newbox\temp@box\def\setstatediam#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\state@diam{\the\c@aux}%  }\setstatediam{6}\def\setrepeatedstatediam#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\repeted@diam{\the\c@aux}%  }\setrepeatedstatediam{5}\def\setloopdiam#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\loop@diam{\the\c@aux}%  }\setloopdiam{6}\def\settranslabelskip#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\trans@label@skip{\the\c@aux}%  }\settranslabelskip{1}\def\settransdecal#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\trans@decal{\the\c@aux}%  }\settransdecal{0}\def\setprofcurve#1{%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \edef\prof@curve{\the\c@aux}%  }\setprofcurve{3}\def\setmaxbezier#1{\def\max@bezier{#1}}\def\setnbptbezier#1{\def\max@bezier{#1}} % compatibilitˇ version 0.3\setmaxbezier{500}\def\setprecision#1{} % compatibilitˇ version 0.3%%----------------------------------------------------------------------%%%% States.\def\letstate{%  \@ifnextchar[{\letstate@un}{\letstate@deux}}\def\letstate@un[#1,#2] #3=(#4,#5){%  \d@aux=#4\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#3@x\endcsname{\the\c@aux}%  \d@aux=#5\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#3@y\endcsname{\the\c@aux}%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#3@diam\endcsname{\the\c@aux}%  \d@aux=#2\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#3@repdiam\endcsname{\the\c@aux}%  }\def\letstate@deux #1=(#2,#3){%  \d@aux=#2\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#1@x\endcsname{\the\c@aux}%  \d@aux=#3\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#1@y\endcsname{\the\c@aux}%  \expandafter\edef\csname state@#1@diam\endcsname{\state@diam}%  \expandafter\edef\csname state@#1@repdiam\endcsname{\repeted@diam}%  }\def\drawstate(#1)#2{{%  \unitlength=\d@my@unit  \edef\cs@x{\csname state@#1@x\endcsname}%  \edef\cs@y{\csname state@#1@y\endcsname}%  \put(\cs@x,\cs@y){\makebox(0,0){#2}}  \put(\cs@x,\cs@y){\circle{\csname state@#1@diam\endcsname}}  }}\def\drawinitialstate{%  \@ifnextchar[{\@idrawinitialstate}{\@idrawinitialstate[l]}}\def\@idrawinitialstate[#1](#2)#3{{%  \unitlength=\d@my@unit  \c@xa=\csname state@#2@x\endcsname  \c@ya=\csname state@#2@y\endcsname  \edef\cs@diam{\csname state@#2@diam\endcsname}%  \c@auxa=\cs@diam \divide\c@auxa by 2  \put(\c@xa,\c@ya){\makebox(0,0){#3}}  \put(\c@xa,\c@ya){\circle{\cs@diam}}  \if#1l \advance\c@xa by -\cs@diam \put(\c@xa,\c@ya){\vector( 1,0){\c@auxa}} \fi  \if#1r \advance\c@xa by  \cs@diam \put(\c@xa,\c@ya){\vector(-1,0){\c@auxa}} \fi  \if#1t \advance\c@ya by  \cs@diam \put(\c@xa,\c@ya){\vector(0,-1){\c@auxa}} \fi  \if#1b \advance\c@ya by -\cs@diam \put(\c@xa,\c@ya){\vector(0, 1){\c@auxa}} \fi  }}\def\drawfinalstate{%  \@ifnextchar[{\@idrawfinalstate}{\@idrawfinalstate[r]}}\def\@idrawfinalstate[#1](#2)#3{{%  \unitlength=\d@my@unit  \c@xa=\csname state@#2@x\endcsname  \c@ya=\csname state@#2@y\endcsname  \c@auxa=\csname state@#2@diam\endcsname  \put(\c@xa,\c@ya){\makebox(0,0){#3}}  \put(\c@xa,\c@ya){\circle{\c@auxa}}  \divide\c@auxa by 2  \if#1l \advance\c@xa by -\c@auxa \put(\c@xa,\c@ya){\vector(-1,0){\c@auxa}} \fi  \if#1r \advance\c@xa by  \c@auxa \put(\c@xa,\c@ya){\vector( 1,0){\c@auxa}} \fi  \if#1t \advance\c@ya by  \c@auxa \put(\c@xa,\c@ya){\vector( 0,1){\c@auxa}} \fi  \if#1b \advance\c@ya by -\c@auxa \put(\c@xa,\c@ya){\vector(0,-1){\c@auxa}} \fi  }}\def\drawrepeatedstate(#1)#2{{%  \unitlength=\d@my@unit  \edef\cs@x{\csname state@#1@x\endcsname}%  \edef\cs@y{\csname state@#1@y\endcsname}%  \put(\cs@x,\cs@y){\makebox(0,0){#2}}  \put(\cs@x,\cs@y){\circle{\csname state@#1@diam\endcsname}}  \put(\cs@x,\cs@y){\circle{\csname state@#1@repdiam\endcsname}}  }}%%----------------------------------------------------------------------%%%% Transitions.\def\gastex@warning#1{%  \typeout{gastex warning on input line \the\inputlineno :            #1 is an old option.}  \typeout{Still accepted for compatibility reasons. Use l or r instead.}  \typeout{}  }\def\drawtrans{\@arrowtrue\@ifnextchar[{\@idrawtrans}{\@idrawtrans[l]}}\def\@idrawtrans[#1](#2,#3)#4{{%  \if#1t \gastex@warning{t} \fi  \if#1b \gastex@warning{b} \fi  \unitlength=\d@my@unit  \c@xa=\csname state@#2@x\endcsname  \c@ya=\csname state@#2@y\endcsname  \edef\cs@diama{\csname state@#2@diam\endcsname}%  \c@xb=\csname state@#3@x\endcsname  \c@yb=\csname state@#3@y\endcsname  \edef\cs@diamb{\csname state@#3@diam\endcsname}%  \c@deltax=\c@xb \advance\c@deltax -\c@xa  \c@deltay=\c@yb \advance\c@deltay -\c@ya  \distance(\c@xa,\c@ya)(\c@xb,\c@yb)% Ending points of the transition.  \c@auxc=-\trans@decal  \multiply\c@auxc\c@deltay \divide\c@auxc\@distance  \c@auxd= \trans@decal  \multiply\c@auxd\c@deltax \divide\c@auxd\@distance  \if#1b \c@auxc=-\c@auxc \c@auxd=-\c@auxd \fi%   \c@auxa=\cs@diama \divide\c@auxa by 2  \multiply\c@auxa\c@deltax \divide\c@auxa\@distance  \c@auxb=\cs@diama \divide\c@auxb by 2  \multiply\c@auxb\c@deltay \divide\c@auxb\@distance  \advance\c@xa\c@auxa \advance\c@xa\c@auxc  \advance\c@ya\c@auxb \advance\c@ya\c@auxd%   \c@auxa=\cs@diamb \divide\c@auxa by 2  \multiply\c@auxa\c@deltax \divide\c@auxa\@distance  \c@auxb=\cs@diamb \divide\c@auxb by 2  \multiply\c@auxb\c@deltay \divide\c@auxb\@distance  \advance\c@xb -\c@auxa \advance\c@xb\c@auxc  \advance\c@yb -\c@auxb \advance\c@yb\c@auxd  \if@arrow    \drawvector(\c@xa,\c@ya)(\c@xb,\c@yb)  \else    \@killglue\drawline(\c@xa,\c@ya)(\c@xb,\c@yb)  \fi% Coordinates (\c@xc,\c@yc) of the middle point of the curve.  \c@xc=\c@xa \advance\c@xc\c@xb \divide\c@xc by 2  \c@yc=\c@ya \advance\c@yc\c@yb \divide\c@yc by 2% Label of the transition.  \@drawlabel[#1]{#4}  }}\def\drawcurvedtrans{\@arrowtrue  \@ifnextchar[{\@idrawcurvedtrans}{\@idrawcurvedtrans[l]}}\def\@idrawcurvedtrans[#1](#2,#3)#4{{%  \if#1t \gastex@warning{t} \fi  \if#1b \gastex@warning{b} \fi  \unitlength=\d@my@unit  \edef\cs@xa{\csname state@#2@x\endcsname}%  \edef\cs@ya{\csname state@#2@y\endcsname}%  \edef\cs@diama{\csname state@#2@diam\endcsname}%  \edef\cs@xb{\csname state@#3@x\endcsname}%  \edef\cs@yb{\csname state@#3@y\endcsname}%  \edef\cs@diamb{\csname state@#3@diam\endcsname}%  \c@deltax=\cs@xb \advance\c@deltax by -\cs@xa  \c@deltay=\cs@yb \advance\c@deltay by -\cs@ya  \distance(\cs@xa,\cs@ya)(\cs@xb,\cs@yb)% Computation of the point D defining the quadratic Bˇzier curve.  \c@aux=\prof@curve \multiply\c@aux by 2 \if#1b \c@aux=-\c@aux \fi  \multiply\c@aux\c@deltay \divide\c@aux\@distance  \c@xd=\cs@xa \advance\c@xd\cs@xb \divide\c@xd by 2 \advance\c@xd by -\c@aux  \c@aux=\prof@curve \multiply\c@aux by 2 \if#1b \c@aux=-\c@aux \fi  \multiply\c@aux\c@deltax \divide\c@aux\@distance  \c@yd=\cs@ya \advance\c@yd\cs@yb \divide\c@yd by 2 \advance\c@yd by  \c@aux% Coordinates (\c@xc,\c@yc) of the middle point of the curve.  \c@xc=\c@xd \multiply\c@xc by 2 \advance\c@xc by \cs@xa  \advance\c@xc by \cs@xb \divide\c@xc by 4  \c@yc=\c@yd \multiply\c@yc by 2 \advance\c@yc by \cs@ya  \advance\c@yc by \cs@yb \divide\c@yc by 4% Label of the transition.  \@drawlabel[#1]{#4}% Drawing of the Bˇzier curve.  \r@qbezier(\cs@xa,\cs@ya,\cs@diama)(\c@xd,\c@yd)(\cs@xb,\cs@yb,\cs@diamb)  }}\def\drawqbeziertrans{\@arrowtrue  \@ifnextchar[{\@idrawqbeziertrans}{\@idrawqbeziertrans[l]}}\def\@idrawqbeziertrans[#1](#2)(#3,#4)(#5)#6{{%  \if#1t \gastex@warning{t} \fi  \if#1b \gastex@warning{b} \fi  \d@aux=#3\unitlength \c@xd=\d@aux \divide\c@xd\d@my@unit  \d@aux=#4\unitlength \c@yd=\d@aux \divide\c@yd\d@my@unit  \unitlength=\d@my@unit  \edef\cs@xa{\csname state@#2@x\endcsname}%  \edef\cs@ya{\csname state@#2@y\endcsname}%  \edef\cs@diama{\csname state@#2@diam\endcsname}%  \edef\cs@xb{\csname state@#5@x\endcsname}%  \edef\cs@yb{\csname state@#5@y\endcsname}%  \edef\cs@diamb{\csname state@#5@diam\endcsname}%  \c@deltax=\cs@xb \advance\c@deltax -\cs@xa  \c@deltay=\cs@yb \advance\c@deltay -\cs@ya  \distance(\cs@xa,\cs@ya)(\cs@xb,\cs@yb)% Coordinates (\c@xc,\c@yc) of the middle point of the curve.  \c@xc=\c@xd \multiply\c@xc by 2 \advance\c@xc by \cs@xa  \advance\c@xc by \cs@xb \divide\c@xc by 4  \c@yc=\c@yd \multiply\c@yc by 2 \advance\c@yc by \cs@ya  \advance\c@yc by \cs@yb \divide\c@yc by 4% Label of the transition.  \@drawlabel[#1]{#6}% Drawing of the Bˇzier curve.  \r@qbezier(\cs@xa,\cs@ya,\cs@diama)(\c@xd,\c@yd)(\cs@xb,\cs@yb,\cs@diamb)  }}\def\drawcbeziertrans{\@arrowtrue  \@ifnextchar[{\@idrawcbeziertrans}{\@idrawcbeziertrans[l]}}\def\@idrawcbeziertrans[#1](#2)(#3,#4)(#5,#6)(#7)#8{{%  \if#1t \gastex@warning{t} \fi  \if#1b \gastex@warning{b} \fi% Parameters in \d@my@unit.  \edef\cs@xa{\csname state@#2@x\endcsname}%  \edef\cs@ya{\csname state@#2@y\endcsname}%  \edef\cs@diama{\csname state@#2@diam\endcsname}%  \edef\cs@xd{\csname state@#7@x\endcsname}%  \edef\cs@yd{\csname state@#7@y\endcsname}%  \edef\cs@diamd{\csname state@#7@diam\endcsname}%  \d@aux=#3\unitlength  \c@aux=\d@aux \divide\c@aux\d@my@unit \edef\cs@xb{\the\c@aux}%  \d@aux=#4\unitlength  \c@aux=\d@aux \divide\c@aux\d@my@unit \edef\cs@yb{\the\c@aux}%  \d@aux=#5\unitlength  \c@aux=\d@aux \divide\c@aux\d@my@unit \edef\cs@xc{\the\c@aux}%  \d@aux=#6\unitlength  \c@aux=\d@aux \divide\c@aux\d@my@unit \edef\cs@yc{\the\c@aux}%  \unitlength=\d@my@unit% Drawing of the Bˇzier curve.  \r@cbezier(\cs@xa,\cs@ya,\cs@diama)(\cs@xb,\cs@yb)%            (\cs@xc,\cs@yc)(\cs@xd,\cs@yd,\cs@diamd)% Coordinates (\c@xc,\c@yc) of the middle point of the curve.  \c@xc=\cs@xb \advance\c@xc\cs@xc \multiply\c@xc by 3  \advance\c@xc\cs@xa \advance\c@xc\cs@xd \divide\c@xc by 8  \c@yc=\cs@yb \advance\c@yc\cs@yc \multiply\c@yc by 3  \advance\c@yc\cs@ya \advance\c@yc\cs@yd \divide\c@yc by 8% Slope (\c@deltax,\c@deltay) at the middle point of the curve.  \c@deltax=\cs@xd \advance\c@deltax by \cs@xc   \advance\c@deltax by -\cs@xb \advance\c@deltax by -\cs@xa   \multiply\c@deltax by 3 \divide\c@deltax by 4  \c@deltay=\cs@yd \advance\c@deltay by\cs@yc   \advance\c@deltay by -\cs@yb \advance\c@deltay by -\cs@ya   \multiply\c@deltay by 3 \divide\c@deltay by 4% Computation of \@distance for \@drawlabel.  \x@diff=\c@deltax\unitlength\relax  \y@diff=\c@deltay\unitlength\relax  \sqrtandstuff{\x@diff}{\y@diff}{1\unitlength}  \@distance=\num@segments% Label of the transition.  \@drawlabel[#1]{#8}  }}%%----------------------------------------------------------------------%%%% Loops\def\drawloop{\@arrowtrue\@ifnextchar[{\@idrawloop}{\@idrawloop[t]}}\def\@idrawloop[#1](#2)#3{{%  \unitlength=\d@my@unit  \edef\cs@xa{\csname state@#2@x\endcsname}%  \edef\cs@ya{\csname state@#2@y\endcsname}%  \edef\cs@diama{\csname state@#2@diam\endcsname}%% Label of the transition.  \c@aux=\cs@diama \divide\c@aux by 2 \advance\c@aux\loop@diam  \advance\c@aux\trans@label@skip  \if#1l    \c@xc=\cs@xa \advance\c@xc -\c@aux    \c@yc=\cs@ya    \put(\c@xc,\c@yc){\makebox(0,0)[r]{#3}}    \r@loop(180,\loop@diam)(\cs@xa,\cs@ya,\cs@diama)  \fi  \if#1r    \c@xc=\cs@xa \advance\c@xc\c@aux    \c@yc=\cs@ya    \put(\c@xc,\c@yc){\makebox(0,0)[l]{#3}}    \r@loop(0,\loop@diam)(\cs@xa,\cs@ya,\cs@diama)  \fi  \if#1t    \c@xc=\cs@xa    \c@yc=\cs@ya \advance\c@yc\c@aux    \put(\c@xc,\c@yc){\makebox(0,0)[b]{#3}}    \r@loop(90,\loop@diam)(\cs@xa,\cs@ya,\cs@diama)  \fi  \if#1b    \c@xc=\cs@xa    \c@yc=\cs@ya \advance\c@yc -\c@aux    \put(\c@xc,\c@yc){\makebox(0,0)[t]{#3}}    \r@loop(270,\loop@diam)(\cs@xa,\cs@ya,\cs@diama)  \fi}}%%----------------------------------------------------------------------%%%% Graphs\def\letvertex{%  \@ifnextchar[{\letvertex@un}{\letvertex@deux}}\def\letvertex@un[#1] #2=(#3,#4){%  \d@aux=#3\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#2@x\endcsname{\the\c@aux}%  \d@aux=#4\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#2@y\endcsname{\the\c@aux}%  \d@aux=#1\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#2@diam\endcsname{\the\c@aux}%  }\def\letvertex@deux #1=(#2,#3){%  \d@aux=#2\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#1@x\endcsname{\the\c@aux}%  \d@aux=#3\unitlength \c@aux=\d@aux \divide\c@aux\d@my@unit  \expandafter\edef\csname state@#1@y\endcsname{\the\c@aux}%  \expandafter\edef\csname state@#1@diam\endcsname{\state@diam}%  }\def\setvertexdiam{\setstatediam}\def\setedgelabelskip{\settranslabelskip}\def\setedgedecal{\settransdecal}\def\drawcircledvertex{\drawstate}\def\drawvertex(#1)#2{{%  \unitlength=\d@my@unit  \edef\cs@x{\csname state@#1@x\endcsname}%  \edef\cs@y{\csname state@#1@y\endcsname}%  \put(\cs@x,\cs@y){\makebox(0,0){#2}}  }}\def\drawedge{\@arrowtrue  \@ifnextchar[{\@idrawtrans}{\@idrawtrans[l]}}\def\drawundirectededge{\@arrowfalse  \@ifnextchar[{\@idrawtrans}{\@idrawtrans[l]}}\def\drawcurvededge{\@arrowtrue  \@ifnextchar[{\@idrawcurvedtrans}{\@idrawcurvedtrans[l]}}\def\drawundirectedcurvededge{\@arrowfalse  \@ifnextchar[{\@idrawcurvedtrans}{\@idrawcurvedtrans[l]}}\def\drawqbezieredge{\@arrowtrue  \@ifnextchar[{\@idrawqbeziertrans}{\@idrawqbeziertrans[l]}}\def\drawundirectedqbezieredge{\@arrowfalse  \@ifnextchar[{\@idrawqbeziertrans}{\@idrawqbeziertrans[l]}}\def\drawcbezieredge{\@arrowtrue  \@ifnextchar[{\@idrawcbeziertrans}{\@idrawcbeziertrans[l]}}\def\drawundirectedcbezieredge{\@arrowfalse  \@ifnextchar[{\@idrawcbeziertrans}{\@idrawcbeziertrans[l]}}\def\drawundirectedloop{\@arrowfalse  \@ifnextchar[{\@idrawloop}{\@idrawloop[t]}}%%----------------------------------------------------------------------%%%% Miscellanees%----------------------------------------------------------------------%% The following is just taken from epic.sty\newdimen\@dotgap\newcount\@x@diff\newcount\@y@diff\newdimen\x@diff\newdimen\y@diff\newcount\num@segments\newif\ifsqrt@done%% from sqrtandstuff func basically need \num@segments.%% given a deltax, deltay and dotgap, it calculates \num@segments = number of%% segments along the hypotenuse. used by \dottedline & \dashline.%% It finishes quickly if any of deltax or deltay are zero or close to zero.\def\sqrtandstuff#1#2#3{\ifdim #1 <0pt \@x@diff= -#1 \else\@x@diff=#1\fi\ifdim #2 <0pt \@y@diff= -#2 \else\@y@diff=#2\fi%% @diff's will be positive and diff's will retain their sign.\@dotgap=#3 \divide\@dotgap \tw@\advance\@x@diff \@dotgap \advance\@y@diff \@dotgap% for round-off errors\@dotgap=#3\divide\@x@diff \@dotgap \divide\@y@diff \@dotgap\sqrt@donefalse\ifnum\@x@diff < 2   \ifnum\@y@diff < 2 \num@segments=\@x@diff \advance\num@segments \@y@diff		      \sqrt@donetrue        \else\num@segments=\@y@diff \sqrt@donetrue\fi   \else\ifnum\@y@diff < 2 \num@segments=\@x@diff \sqrt@donetrue\fi\fi\ifsqrt@done \ifnum\num@segments=\z@ \num@segments=\@ne\fi\relax \else \ifnum\@y@diff >\@x@diff		 \@tempcnta=\@x@diff \@x@diff=\@y@diff \@y@diff=\@tempcnta       \fi    		%exchange @x@diff & @y@diff, so now @x@diff > @y@diff  \num@segments=\@y@diff  \multiply\num@segments \num@segments  \multiply\num@segments by 457  \divide\num@segments \@x@diff  \advance\num@segments by 750 % for round-off, going to divide by 1000.  \divide\num@segments \@m  \advance\num@segments \@x@diff		%num@segments = @x@diff + (0.457*sqr(@y@diff)/@x@diff)\fi}%----------------------------------------------------------------------%% \distance: Compute the distance in \unitlength between two points. %% result in \@distance.%% Note: use \x@diff, \y@diff, \num@segments and \sqrtandstuff defined in epic.%%\newcount\@distance\def\distance(#1,#2)(#3,#4){%  \x@diff=#3\unitlength\relax\advance\x@diff by -#1\unitlength\relax  \y@diff=#4\unitlength\relax\advance\y@diff by -#2\unitlength\relax  \sqrtandstuff{\x@diff}{\y@diff}{1\unitlength}  \@distance=\num@segments% \typeout{distance = \the\@distance}}% Label of a transition.% #1 is a letter among l(eft), r(ight) specifying the label position with% respect to the transition when looking in the direction of the  transition.% #2 is the label of the transition.% We need,% - (\c@xc,\c@yc) coordinates of the middle point C of the transition,% - (\c@deltax,\c@deltay) giving the slope at point C% - \@distance = sqrt(\c@deltax^2 +\c@deltay^2).\def\@drawlabel[#1]#2{{%% Computation of the shift from C to the label.  \setbox\temp@box\hbox{#2}  \c@auxa=\wd\temp@box  \divide\c@auxa\d@my@unit \multiply\c@auxa\c@deltay  \ifnum\c@auxa<0 \c@auxa=-\c@auxa \fi  \c@auxc=\ht\temp@box \advance\c@auxc by \dp\temp@box  \divide\c@auxc\d@my@unit \multiply\c@auxc\c@deltax  \ifnum\c@auxc<0 \c@auxc=-\c@auxc \fi  \advance\c@auxc\c@auxa \divide\c@auxc\@distance \divide\c@auxc by 2  \advance\c@auxc\trans@label@skip  \c@auxa=-\c@deltay \multiply\c@auxa\c@auxc \divide\c@auxa\@distance  \c@auxb=\c@deltax \multiply\c@auxb\c@auxc \divide\c@auxb\@distance  \if#1r \c@auxa=-\c@auxa \c@auxb=-\c@auxb \fi  \if#1b \c@auxa=-\c@auxa \c@auxb=-\c@auxb \fi% Shifting of point C and drawing of the label.  \advance\c@xc\c@auxa \advance\c@yc\c@auxb  \put(\c@xc,\c@yc){\makebox(0,0){#2}}  }}\endinput