texlive[58526] branches/branch2020.0/Master/texmf-dist: gastex

commits+karl at tug.org commits+karl at tug.org
Thu Mar 18 22:14:35 CET 2021


Revision: 58526
          http://tug.org/svn/texlive?view=revision&revision=58526
Author:   karl
Date:     2021-03-18 22:14:35 +0100 (Thu, 18 Mar 2021)
Log Message:
-----------
gastex (18mar21) (branch)

Modified Paths:
--------------
    branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/README
    branches/branch2020.0/Master/texmf-dist/dvips/gastex/gastex.pro
    branches/branch2020.0/Master/texmf-dist/tex/latex/gastex/gastex.sty

Added Paths:
-----------
    branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.tex

Removed Paths:
-------------
    branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-beamer-gastex.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-gastex.tex

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/README
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/README	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/README	2021-03-18 21:14:35 UTC (rev 58526)
@@ -7,51 +7,49 @@
 
 Author: 
 -------
-Paul Gastin <http://www.lsv.ens-cachan.fr/~gastin>
+Paul Gastin <http://www.lsv.fr/~gastin>
 
-Copyright: 2006 by Paul Gastin
+Copyright: 2021 by Paul Gastin
 ----------
 This program can be redistributed and/or modified under the terms
-of the LaTeX Project Public License Distributed from CTAN
-archives in directory macros/latex/base/lppl.txt.
+of the LaTeX Project Public License Distributed from CTAN:
+https://www.ctan.org/license/lppl1.3
 
 Installation:
 -------------
 In order to use gastex you only need two files:
-- gastex.sty which contains the definition of all the LaTeX macros (this file
-could be in your working folder or where other .sty files are).
-- gastex.pro which contains all the postscript procedures (this file could
-be in your working folder but it is best placed where the tex.pro file is).
+- gastex.sty which contains the definition of all the LaTeX macros. This file
+could be in your working folder or where other .sty files are, e.g.,
+  .../texmf-dist/tex/latex/gastex/gastex.sty
+  or 
+  .../texmf-local/tex/latex/gastex/gastex.sty
+- gastex.pro which contains all the postscript procedures.  This file
+could be in your working folder or where other .pro files are, e.g.,
+  .../texmf-dist/dvips/gastex/gastex.pro
+  or
+  .../texmf-local/dvips/gastex/gastex.pro
 
-Usage: latex+dvips(+ps2pdf)
+Usage: latex+dvips(+ps2pdf) filename.tex
 ------
 - Compile the source file with latex (not pdflatex) and generate the ps file 
 with dvips. One may then use ps2pdf to get a pdf file.
 
+Usage: pdflatex --shell-escape filename.tex
+------
+- Requires the package auto-pst-pdf.  
+
 Remarks:
 --------
-- gastex mainly generates postscript code so the pictures cannot be seen with a
-dvi-viewer. One has to generate a ps file (latex+dvips) and view it with a 
-ps-viewer. One can also generate a pdf file (latex+dvips+ps2pdf) and view 
-it with a pdf-viewer.
-- gastex does not work with pdflatex since it produces postscript code
-which cannot be interpreted by a pdf viewer.  Instead, one should generate
-the pdf file with latex+dvips+ps2pdf.
+- gastex mainly generates postscript code so the pictures cannot be seen
+with a dvi-viewer.  One has to generate a ps file (latex+dvips) or a pdf
+file (latex+dvips+ps2pdf or pdflatex --shell-escape) and view it with a
+ps-viewer or a pdf-viewer.
 
-Examples: 
----------
-- Several examples are provided on the gastex web page at
-http://www.lsv.ens-cachan.fr/~gastin/gastex/gastex.html
-- ex-gastex.tex contains some examples to learn gastex and to test your 
-installation.
-- ex-beamer-gastex.tex shows how gastex may be used with beamer in order to
-produce very nice animated slides.  You have to compile the file through
-latex-dvips-ps2pdf (not pdflatex).
+Documentation and examples:
+---------------------------
+- See http://www.lsv.fr/~gastin/gastex/index.html
+- See also gastex-doc.tex for a quick startup guide on how to use gastex
+with pdflatex and a few examples.
+- Comments in the file gastex.sty also provide documentation for all macros.
 
-Documentation:
---------------
-See http://www.lsv.ens-cachan.fr/~gastin/gastex/gastex.html
-The best is to learn with the examples (see above).
-Comments in the file gastex.sty provide documentation for all macros.
-
 Enjoy!
\ No newline at end of file

Deleted: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-beamer-gastex.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-beamer-gastex.tex	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-beamer-gastex.tex	2021-03-18 21:14:35 UTC (rev 58526)
@@ -1,107 +0,0 @@
-% \documentclass[10pt,mathserif,handout]{beamer}
-\documentclass[10pt,mathserif,display]{beamer}
-\usepackage{gastex}
-\gasset{linewidth=0.21,AHdist=2.1,AHLength=2.25,AHlength=2.1} 
-\gasset{ATdist=2.1,ATLength=2.25,ATlength=2.1} 
-% \usepackage{beamerthemeEPIT}
-\usepackage{beamerthemeplain}
-
-\beamersetleftmargin{3mm}
-\beamersetrightmargin{3mm}
-\abovedisplayskip=1ex
-\belowdisplayskip=1ex
-\parskip=.5ex
-\parindent=0pt
-
-\newcommand{\Auto}{\mathcal{A}}
-\newcommand{\F}{\mathop{\mathsf{F}\vphantom{a}}\nolimits}
-\newcommand{\G}{\mathop{\mathsf{G}\vphantom{a}}\nolimits}
-\newcommand{\X}{\mathop{\mathsf{X}\vphantom{a}}\nolimits}
-\newcommand{\True}{\top}
-\newcommand{\False}{\bot}
-
-\newcommand{\Blue}[1]{\textcolor{blue}{#1}}
-\newcommand{\Red}[1]{\textcolor{red}{#1}}
-\newcommand{\Green}[1]{\textcolor{PineGreen}{#1}}
-
-\begin{document}
-
-
-%%%%%%%%%%%%%%%%%%%%%%
-\frame{
-  \frametitle{Automaton $\Auto_\varphi$}
-  \vspace{-7mm}
-  \begin{center}\scalebox{0.9}{
-  \begin{picture}(130,71)(-12,0)\nullfont
-%     \put(-12,0){\framebox(130,71){}}
-    \gasset{Nadjust=w,Nadjustdist=2,Nh=8,fillcolor=White,Nfill=y,ilength=7}
-    {\only<7-| handout:0>{\gasset{fillcolor=yellow}}
-    \node[Nmarks=i](1)(10,45){$\varphi=\G(\neg p\vee\F q)$}}
-    \node(2)(10,25){$\neg p\vee\F q, \X\varphi$}\drawedge(1,2){}
-    \node(3)(10,05){$\neg p, \X\varphi$}\drawedge(2,3){}
-    \node(4)(40,25){$\F q, \X\varphi$}\drawedge(2,4){}
-    \node(5)(40,45){$q, \X\varphi$}\drawedge(4,5){}
-    \node(6)(40,05){$\X\F q, \X\varphi$}\drawedge(4,6){\Blue{$\F q$}}
-
-    \only<2->{
-    \only<2| handout:0>{\gasset{linecolor=Red}}
-    \drawedge[curvedepth=15](3,1){$\neg p$}
-    \drawedge[ELside=r,ELpos=35](5,1){$q$}
-    {\only<7-| handout:0>{\gasset{fillcolor=yellow}}
-    \node(7)(70,05){$\F q, {\only<3| handout:0>{\color{red}}\varphi}$}}
-    \drawedge(6,7){$\True$}
-    }
-    \only<3->{
-    \only<3| handout:0>{\gasset{linecolor=Red}}
-    \node(8)(70,25){$\F q, 
-      {\only<3-4| handout:0>{\color{red}}\neg p\vee\F q},
-      {\only<3| handout:0>{\color{red}}\X\varphi}$}
-    \drawedge(7,8){}
-    }
-    \only<4->{
-    \only<4| handout:0>{\gasset{linecolor=Red}}
-    \node(9)(70,45){${\only<5| handout:0>{\color{red}}\F q}, 
-      {\only<4| handout:0>{\color{red}}\neg p}, 
-      \X\varphi$}
-    \drawedge[ELpos=55](8,4){}
-    \drawedge(8,9){}
-    }
-    \only<5->{
-    \node(10)(105,25){${\only<5| handout:0>{\color{red}}\X\F q}, 
-      \neg p, \X\varphi$}
-    \node(11)(40,65){${\only<5| handout:0>{\color{red}}q}, 
-      \neg p, \X\varphi$}
-    \only<5| handout:0>{\gasset{linecolor=Red}}
-    \drawedge(9,10){\Blue{$\F q$}}
-    \drawedge(9,11){}
-    }
-    \only<6->{
-    \only<6| handout:0>{\gasset{linecolor=Red}}
-    \drawedge(10,7){$\neg p$}
-    \drawedge[ELside=r](11,1){$\neg p\wedge q$}
-    }
-    \only<7->{\put(18,18){
-%     \drawrect(58,33,100,53)
-    \gasset{loopdiam=5,Nw=7,Nh=7}
-    \gasset{fillcolor=yellow}
-    \node[Nmarks=i,ilength=5](A)(72,40){1}
-    \node(B)(92,40){2}
-    \drawedge[curvedepth=2,linecolor=blue](A,B){$\True$}
-    \drawedge[curvedepth=2](B,A){$q$}
-    \only<7>{\drawedge[curvedepth=8](B,A){$\neg p\wedge q$}}
-    \drawloop(A){$\neg p\vee q$}
-    \drawloop[linecolor=blue](B){$\True$}
-    \only<7>{\drawloop[ELpos=75,linecolor=blue,loopangle=0](B){$\neg p$}}
-    }}
-  \end{picture}}
-  \end{center}
-
-  \vspace{-2mm}
-  \uncover<2->{{\only<2>{\color{red}}
-  Transition = check litterals and move forward.}}
-
-  \uncover<8->{{\only<8>{\color{red}}
-  Simplification}}
-}
-
-\end{document}

Deleted: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-gastex.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-gastex.tex	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/ex-gastex.tex	2021-03-18 21:14:35 UTC (rev 58526)
@@ -1,469 +0,0 @@
-%&latex
-\documentclass{article}
-\usepackage[usenames]{color}
-\usepackage{gastex}
-
-\begin{document}
-
-% Peterson automaton
-
-\begin{center}
-\begin{picture}(85,33)(-20,-28)
-%   \put(-20,-28){\framebox(85,33){}}
-  \gasset{Nadjust=w,Nadjustdist=2,Nh=6,Nmr=1}
-  \node[Nmarks=i](A)(0,0){idle}
-  \node(B)(50,0){wait}
-  \node(C)(50,-20){wait}
-  \node[Nmarks=r](D)(0,-20){critical}
- 
-  \drawedge(A,B){req1:=true}
-  \drawedge(B,C){turn:=2}
-  \drawedge[syo=-1,eyo=-1](C,D){turn=1?}
-  \drawedge[syo=1,eyo=1,ELside=r](C,D){req2=false?}
-  \drawedge(D,A){req1:=false}
-\end{picture}
-\end{center}
-
-% Petri Net and offsets
-
-\begin{center}
-\begin{picture}(110,50)(-25,-24)
-%   \put(-25,-24){\framebox(110,50){}}
-  \node(A)(-20,-7){$\bullet \bullet$}
-  \node(B)(-20, 7){$\bullet$}
-  \node(C)( 20,-7){}
-  \node(D)( 20, 7){}
-  \gasset{Nw=.7,Nh=7,Nmr=0,fillgray=0} % black rectangle
-  \gasset{ExtNL=y,NLdist=1,NLangle=90} % external label above the node
-  \node(Ta)(0,  0){$a$}
-  \node(Tb)(0,-20){$b$}
-  \node(Tc)(0, 20){$c$}
-  
-  \gasset{ELdistC=y,ELdist=0}
-  \drawedge[ELside=r,eyo=-1](A,Ta){\colorbox{white}{2}}\drawedge[eyo=1](B,Ta){}
-  \drawedge[syo=-1](Ta,C){}\drawedge[syo=1](Ta,D){}
-  {\gasset{curvedepth=4}\drawedge(C,Tb){}\drawedge(Tb,A){\colorbox{white}{2}}}
-  {\gasset{curvedepth=-4}\drawedge(D,Tc){}\drawedge[syo=1](Tc,B){}}
-  \drawbpedge[syo=-1,ELpos=70](Tc,-160,15,D,170,20){\colorbox{white}{3}}
-% offsets
-  \put(40,-15){\unitlength=1.2mm
-    \gasset{Nmr=0,Nfill=y,fillgray=0}
-    \node[Nw= 1,Nh=10](B)(0,20){}
-    \node[Nw= 1,Nh=10](C)(30,20){}
-    \node[Nw=10,Nh= 1](D)(15,0){}
-    \drawedge[syo=3,eyo=3,curvedepth=3](B,C){}
-    \drawedge[syo=1,eyo=1](B,C){}
-    \drawedge[syo=-1,eyo=-1](C,B){}
-    \drawbpedge[syo=4,eyo=4](B,165,30,C,15,30){}
-    \drawbpedge[syo=-3,exo=-3](B,0,10,D,90,10){}
-    \drawbpedge[syo=-3](C,180,10,D,90,10){}
-    \drawbpedge[sxo=3,eyo=-5](D,90,10,C,-90,10){}
-    \drawloop[sxo=-3,loopdiam=4,loopangle=-90](D){}
-    \drawloop[sxo= 3,loopdiam=4,loopangle=-90](D){}
-  }
-\end{picture}
-\end{center}
-
-% Diagram
-
-\begin{center}
-\begin{picture}(105,28)(-33,-3)
-%   \put(-33,-3){\framebox(105,28){}}
-  \gasset{Nframe=n,Nadjust=w,Nh=6,Nmr=0}
-  \node(L)(0,20){$\mathcal{L}$}
-  \node(F)(30,20){$[F^V\to F]$}
-  \node(O1)( 20,0){$(\mathcal{P}(R)^V\to 2^{M\times\mathcal{P}(R)})$}
-  \node(O2)(-20,0){$(\mathcal{P}(R)^V\to 2^M)$}
-  \node(B1)( 60,0){$(\mathcal{P}(R)^V\to F)$}
-
-  \drawedge[ELpos=40](L,F){$[\![ -]\!]$}
-  \drawedge(L,O1){$X_F$}
-  \drawedge(F,O1){$\chi$}
-  \drawedge[ELside=r](L,O2){$X_M$}
-  \drawedge[ELpos=55](O1,B1){$\sqcup$}
-  \drawedge[ELside=r,ELpos=53](O1,O2){$\mathrm{Re}$}
-\end{picture}
-\end{center}
-
-% and more ...
-
-\begin{center}
-\begin{picture}(120,52)(-35,-37)
-%   \put(-35,-37){\framebox(120,52){}}
-  \node[Nw=16,linecolor=Yellow,fillcolor=Yellow](A)(-20,0){initial}
-  \imark[iangle=200,linecolor=Peach](A)
-  \node[Nmr=0,Nw=14,fillgray=0.85,
-        dash={1}0](B)( 20,0){\textcolor{RedViolet}{final}}
-  \fmark[flength=10,fangle=-30,dash={3 1 1 1}0](B)
-  \node[Nadjust=wh,Nadjustdist=2,Nmr=3,Nmarks=r,linecolor=Green](C)(60,-20){$\left(
-    \begin{array}{ccc}
-    	 2 &  1 & 0  \\
-    	-1 &  0 & 1  \\
-    	 0 & -1 & 2
-    \end{array}
-    \right)$}
-  \rmark[linecolor=Green,rdist=1.4](C)
-  
-  \drawedge[curvedepth=5,linecolor=Red](A,B){\textcolor{Cyan}{curved}}
-  \drawedge[ELside=r,ELpos=35](A,B){straight}
-  \drawedge[curvedepth=-25,ELside=r,dash={1.5}0](A,B){far}
-  \drawloop[ELpos=75, loopangle=150, dash={0.2 0.5}0](A){loopCW}
-  \drawloop[loopCW=n,ELside=r,loopangle=30,dash={3 1.5}{1.5}](B){loopCCW}
-  \drawqbpedge[ELside=r,ELdist=0,dash={4 1 1 1}0](B,-90,C,180){qbpedge}
-  \drawloop[ELpos=70,loopangle=0](C){$b / 01$}
-  \drawloop[loopCW=n,ELpos=75,ELside=r,loopangle=-90,sxo=6](C){$a / 01$}
-  \drawloop[ELpos=75,loopangle=-90,sxo=-6](C){$b / 10 $}
-  \drawloop[loopangle=50](C){$b / 01$}
-  \drawloop[ELpos=75,loopangle=148](C){$b / 01$}
-\end{picture}
-\end{center}
-
-% Edges
-
-\begin{center}
-\begin{picture}(120,60)(-32,-14)
-%   \put(-32,-14){\framebox(120,60){}}
-  \node(A)(10,0){}\node(B)(40,0){}
-  \drawedge(A,B){straight}
-  \drawedge[curvedepth=8](A,B){positive curve depth}
-  \drawedge[curvedepth=-8,ELside=r](A,B){negative curve depth}
-  \drawloop[loopangle=180](A){180}
-  \drawloop[loopangle=0](B){0}
- 
-  \node(A)(-15,30){}\node(B)(15,30){}
-  \drawqbedge(A,-15,50,B){qbedge}
-  \drawbcedge(A,-20,10,B,20,10){bcedge}
-  \drawloop[loopangle=210](A){210}
-  \drawloop[loopangle=90,loopCW=n,ELside=r](B){90}
- 
-  \node(A)(40,30){}\node(B)(70,30){}
-  \drawbpedge[ELpos=30,ELdist=0](A,45,20,B,225,20){bpedge}
-  \drawbpedge[ELpos=30,ELside=r](A,210,30,B,-30,30){30}
-  \drawbpedge[ELpos=70,ELside=r](A,210,30,B,-30,30){70}
-  \drawloop[loopdiam=5,loopangle=120,ELpos=60](A){smaller}
-  \drawloop[loopdiam=10,loopangle=30,ELpos=30](B){larger}
-\end{picture}
-\end{center}
-
-% Nodes, colors, etc...
-
-\begin{center}
-\begin{picture}(105,70)(-15,-65)
-%   \put(-15,-65){\framebox(105,70){}}
-  \node[Nmarks=if](A)(0,0){1}
-  \node[Nw=15,Nh=6,Nmr=0](A)(25,0){rectangle}
-  \node[Nw=12,Nh=6,Nmr=3](A)(50,0){oval}
-
-  \node(B)(0,-15){Nadjust=n}
-  \node[Nadjust=w,Nmr=2](B)(25,-15){Nadjust=w}
-  \node[Nadjust=wh,Nmr=1](B)(50,-15){Nadjust=wh}
-  
-  \gasset{Nadjust=w,Nadjustdist=3}
-  \node[Nmarks=i,iangle=210,ilength=5](C)(0,-30){imark}
-  \imark[iangle=150,ilength=10,linecolor=Red](C)
-  \node[Nmarks=f,fangle=30,flength=5,linecolor=Green](C)(25,-30){fmark}
-  \fmark[fangle=-30,flength=10,linecolor=Blue](C)
-  \node(C)(50,-30){rmark}
-  \rmark[linecolor=Red](C)\rmark[rdist=1.4,linecolor=Green](C)
-  \node[Nmarks=ifr](C)(75,-30){all}
-
-  \node(D)(0,-45){framed}
-  \node[Nframe=n,fillcolor=Yellow](D)(25,-45){filled}
-  \node[fillcolor=Yellow](D)(50,-45){both}
-  \node[fillcolor=Yellow,
-        linecolor=Green](D)(75,-45){\textcolor{RedViolet}{RedViolet}}
-
-  \node[linewidth=0.5](E)(0,-60){Thick}
-  \node[linewidth=1,linegray=0.8](E)(25,-60){Gray}
-  \node[dash={1.5}0](E)(50,-60){Dash}
-  \node[dash={4 1 1 1}0,linecolor=Red](E)(75,-60){More dash}
-\end{picture}
-\end{center}
-
-% Arrows
-
-\begin{center}\unitlength=0.85mm
-\begin{picture}(60,40)(-30,-17)
-% \put(-30,-17){\framebox(60,40){}}
-  \drawline[AHangle=30,AHLength=3,AHlength=0,
-            ATnb=1,ATangle=90,ATLength=2,ATlength=0](-15,20)(15,20)
-  \drawline[AHnb=2,ATnb=2](-15,15)(15,15)
-  \drawline[AHnb=2,AHangle=30,AHLength=3,AHlength=0,AHdist=1,
-            ATnb=2,ATangle=30,ATLength=3,ATlength=0,ATdist=1](-15,10)(15,10)
-  \drawline[AHnb=1,AHangle=30,AHLength=3,AHlength=1,
-            ATnb=1,ATangle=140,ATLength=3,ATlength=1.5](-15,5)(15,5)
-  \drawline[AHnb=2,AHangle=30,AHLength=3,AHlength=0,AHdist=1,
-            ATnb=2,ATangle=150,ATLength=3,ATlength=0,ATdist=1](-15,0)(15,0)
-  \node(A)(-15,-10){}\node(B)( 15,-10){}
-  \drawbpedge[AHnb=6,ATnb=6](A,60,25,B,240,25){}
-  \gasset{AHnb=1,AHangle=30,AHLength=3,AHlength=0,
-          ATnb=1,ATangle=30,ATLength=3,ATlength=0}
-  \drawloop[loopangle=180](A){}
-  \gasset{AHnb=3,AHangle=30,AHLength=3,AHlength=1.5,AHdist=1.8,
-          ATnb=3,ATangle=30,ATLength=3,ATlength=1.5,ATdist=1.8}
-  \drawloop[loopangle=0](B){}
-\end{picture}
-% \end{center}
-% 
-% % Node label
-% 
-% \begin{center}
-\begin{picture}(80,40)(-20,-20)
-%   \put(-20,-20){\framebox(80,40){}}
-  \node[Nh=30,Nw=30,Nmr=15](D)(0,0){}
-  \gasset{ExtNL=y,NLdist=1,AHnb=0,ilength=-2}
-  \nodelabel[NLangle=  0](D){3}  \imark[iangle=  0](D)
-  \nodelabel[NLangle= 30](D){2}  \imark[iangle= 30](D)
-  \nodelabel[NLangle= 60](D){1}  \imark[iangle= 60](D)
-  \nodelabel[NLangle= 90](D){12} \imark[iangle= 90](D)
-  \nodelabel[NLangle=120](D){11} \imark[iangle=120](D)
-  \nodelabel[NLangle=150](D){10} \imark[iangle=150](D)
-  \nodelabel[NLangle=180](D){9}  \imark[iangle=180](D)
-  \nodelabel[NLangle=210](D){8}  \imark[iangle=210](D)
-  \nodelabel[NLangle=240](D){7}  \imark[iangle=240](D)
-  \nodelabel[NLangle=270](D){6}  \imark[iangle=270](D)
-  \nodelabel[NLangle=300](D){5}  \imark[iangle=300](D)
-  \nodelabel[NLangle=330](D){4}  \imark[iangle=330](D)
-  
-  \node[Nh=30,Nw=30,Nmr=15](B)(40,0){}
-  \gasset{ExtNL=n,NLdist=13}
-  \nodelabel[NLangle=  0](B){3}
-  \nodelabel[NLangle= 30](B){2}
-  \nodelabel[NLangle= 60](B){1}
-  \nodelabel[NLangle= 90](B){12}
-  \nodelabel[NLangle=120](B){11}
-  \nodelabel[NLangle=150](B){10}
-  \nodelabel[NLangle=180](B){9}
-  \nodelabel[NLangle=210](B){8}
-  \nodelabel[NLangle=240](B){7}
-  \nodelabel[NLangle=270](B){6}
-  \nodelabel[NLangle=300](B){5}
-  \nodelabel[NLangle=330](B){4}
-\end{picture}
-\end{center}
-
-% Nodes whose shape is a regular polygon
-
-\begin{center}
-\begin{picture}(120,30)(0,0)
-%   \put(0,0){\framebox(120,30){}}
-  \rpnode[polyangle=90,Nmarks=i,iangle=-90](A)(5,14)(3,5){A}
-  \rpnode[arcradius=2,Nmarks=r](B)(35,17)(6,10){B}
-  \nodelabel[ExtNL=y,NLangle=30,NLdist=0.5](B){B}
-  \nodelabel[ExtNL=y,NLangle=60,NLdist=0.5](B){B}
-  \rpnode[arcradius=2,polyangle=90](C)(70,12)(5,7){C}
-  \imark[iangle=198](C)\fmark[fangle=18](C)
-  \rpnode[Nmarks=fr,fangle=45](D)(105,15)(4,7){D}
-  \drawloop(A){$a$}
-  \drawloop[loopangle=90](C){$c$}
-  \drawloop[loopangle=-45](D){$d$}
-  \drawedge(A,B){$x$}
-  \drawbpedge(B,-30,30,C,140,30){$y$}
-  \drawqbpedge(C,37,D,83){$z$}
-  \drawedge[curvedepth=14,ELside=r](D,A){}
-\end{picture}
-\end{center}
-
-% polygons and closed curves
-
-\begin{center}
-\begin{picture}(120,40)(0,0)
-%   \put(0,0){\framebox(120,40){}}
-  \put(3,3){ 
-    \unitlength=8mm
-    \drawpolygon[fillcolor=Green,Nframe=n,arcradius=.3](0,0)(0,2)(1,3)(0,4)(2,4)(2,2)(4,0)(2,0)(1,1)
-    \drawpolygon(0,0)(0,2)(1,3)(0,4)(2,4)(2,2)(4,0)(2,0)(1,1)
-    \drawccurve[linecolor=Red](0,0)(0,2)(1,3)(0,4)(2,4)(2,2)(4,0)(2,0)(1,1)
-  }
-  \put(55,20){ 
-    \unitlength=1.4mm
-    \drawpolygon[fillcolor=Green,Nframe=n,arcradius=2](-10,-10)(10,10)(-10,10)(10,-10)
-    \drawpolygon(-10,-10)(10,10)(-10,10)(10,-10)
-    \drawccurve[linecolor=Red](-10,-10)(10,10)(-10,10)(10,-10)
-  }
-  \put(100,19){ 
-    \unitlength=20mm
-    \drawccurve[fillcolor=Yellow,linecolor=Red](0,1)(0.59,-0.8)(-0.95,0.3)(0.95,0.3)(-0.59,-0.8)
-    \drawpolygon(0,1)(0.59,-0.8)(-0.95,0.3)(0.95,0.3)(-0.59,-0.8)
-  }
-\end{picture}
-\end{center}
-
-% curves
-
-\begin{center}
-\begin{picture}(120,40)(0,0)
-%   \put(0,0){\framebox(120,40){}}
-  \put(2,3){ 
-    \unitlength=8mm
-    \drawline[AHnb=0](0,0)(0,2)(1,3)(0,4)(2,4)(2,2)(4,0)(2,0)(1,1)
-    \drawcurve[linecolor=Red,AHnb=0](0,0)(0,2)(1,3)(0,4)(2,4)(2,2)(4,0)(2,0)(1,1)
-  }
-  \put(55,16){ 
-    \unitlength=1.5mm
-    \drawline[AHnb=0](-10,-10)(10,10)(-10,10)(10,-10)
-    \drawcurve[linecolor=Red,ATnb=3,AHnb=4](-10,-10)(10,10)(-10,10)(10,-10)
-  }
-  \put(100,19){ 
-    \unitlength=20mm
-    \drawline[AHnb=0](0.95,0.3)(-0.59,-0.8)(0,1)(0.59,-0.8)(-0.95,0.3)
-    \drawcurve[linecolor=Red](0.95,0.3)(-0.59,-0.8)(0,1)(0.59,-0.8)(-0.95,0.3)
-  }
-\end{picture}
-\end{center}
-
-% Various macros
-
-\begin{center}
-\begin{picture}(120,60)(-60,-30)
-% \put(-60,-30){\framebox(120,60){}}
-  \drawline(-60,0)(60,0)
-  \drawline(0,-30)(0,30)
-  \drawrpolygon[polyangle=90,fillcolor=Blue](-9,5)(3,8)
-  \drawrpolygon(-9,22)(8,7)
-  \drawrpolygon(-9,22)(8,6)
-  \drawrpolygon(-9,22)(8,5)
-  \drawrpolygon[polyangle=18,arcradius=5](-27,7)(5,7)
-  \drawrpolygon[fillcolor=Green](-27,23)(4,7)
-  \put(-48,15){ 
-    \unitlength=14mm
-    \gasset{Nfill=y,fillcolor=Yellow,Nframe=y,arcradius=.1}
-    \drawpolygon(0,1)(0.59,-0.8)(-0.95,0.3)(0.95,0.3)(-0.59,-0.8)
-  }
-  \drawline[AHLength=4,AHlength=0,AHangle=30,linewidth=.8](5,25)(15,15)(5,15)(15,5)
-  \drawline[AHLength=4,AHlength=0,AHangle=30,linecolor=White](5,25)(15,15)(5,15)(15,5)
-  \drawline[arcradius=1](17,25)(27,15)(17,15)(27,5)
-  \drawline[linecolor=Red](30,10)(50,20)(25,25)(55,5)
-  \drawline[AHLength=4,AHlength=0,AHangle=30,linewidth=.3](10,28)(35,28)
-  \drawline[AHnb=0,linewidth=.9](10,28)(34.5,28)
-  \drawline[AHnb=0,linewidth=.2,linecolor=White](10,28)(34.5,28)
-  \drawcbezier[ATnb=1](-50,-5,-30,-5,-30,-25,-10,-25)
-  \drawcbezier[AHnb=0,dash={1.5}0](-50,-25,-30,-25,-30,-5,-10,-5)
-  \drawqbezier(31,-20,50,-20,50,-1)
-  \drawqbezier[AHnb=0,linecolor=Green](31,-20,31,-1,50,-1)
-  \drawcircle[Nfill=y,fillcolor=Yellow](40,-25,10)
-  \drawrect[Nfill=y,fillcolor=Yellow,dash={1.5}0](5,-5,25,-15)
-  \drawoval(15,-25,20,10,3)
-\end{picture}
-\end{center}
-
-% Tricks: multiput and variables
-
-\begin{center}
-  \unitlength=0.7mm
-\begin{picture}(60,46)(0,-3)
-%   \put(0,-3){\framebox(60,46){}}
-  {\gasset{AHnb=0}
-    \drawline(0,0)(60,0)
-    \drawline(0,20)(60,20)
-    \drawline(0,40)(60,40)}
-  \gasset{Nw=1.5,Nh=1.5,Nframe=n,Nfill=y}
-  \multiput(0,0)(10,0){5}{%
-    \node(A)(0,0){}\node(B)(5,20){}
-    \drawedge(A,B){}
-    }
-  \multiput(10,20)(10,0){5}{%
-    \node(A)(0,0){}\node(B)(5,20){}
-    \drawedge(A,B){}
-    }
-\end{picture}
-  \qquad
-  \unitlength=1mm
-\begin{picture}(50,30)(-5,0)
-%   \put(-5,0){\framebox(50,30){}}
-  \def\ax{5}\def\ay{5}\def\bx{35}\def\by{25}%
-  \node(a)(\ax,\ay){$a$}\node(b)(\bx,\by){$b$}
-  \drawedge(a,b){}
-  \drawloop[loopdiam=6,loopangle=180](a){}
-  \drawloop[loopdiam=6,loopangle=0](b){}
-
-  \def\ax{5}\def\ay{25}\def\bx{35}\def\by{5}%
-  \node(a)(\ax,\ay){$a$}\node(b)(\bx,\by){$b$}
-  \drawedge(a,b){}
-  \drawloop[loopdiam=6,loopangle=180](a){}
-  \drawloop[loopdiam=6,loopangle=0](b){}
-\end{picture}
-\end{center}
-
-% Compatibility with gastex 1.0
-
-\begin{center}\compatiblegastexun
-\begin{picture}(80,55)(-20,-15)
-\thinlines
-\put(-20,-15){\framebox(80,55){}}
-
-\letstate A=(0,0)   \drawinitialstate(A){1}\drawfinalstate[b](A){}
-\letstate B=(20,0)  \drawrepeatedstate(B){2}
-\letstate C=(40,0)  \drawfinalstate(C){3}
-\letstate D=(0,20)  \drawrepeatedstate(D){4}
-\letstate E=(20,18) \drawstate(E){5}
-\letstate[8,6] F=(40,20) \drawrepeatedstate(F){6}
-
-\drawloop[b](B){$A,a,\alpha$}    \drawloop[l](D){$A,\varepsilon$}
-{ \setpsdash(1) \drawloop(E){$B,b,\beta$} }
-\drawloop[r](F){$B,\varepsilon$}
-
-\drawtrans[r](A,B){$D,d,\delta$} \drawtrans[r](B,C){$D,\varepsilon$}
-{ \settransdecal{1}
-  \drawtrans(C,F){$F,f,\varphi$} \drawtrans(F,C){$G,g,\gamma$} }
-\drawtrans(B,E){$\varepsilon$}   \drawtrans(E,F){$E,\varepsilon$}
-{ \setprofcurve{0} \drawcurvedtrans[r](E,D){$F,\varepsilon$} }
-
-\drawcurvedtrans(A,D){$C,c,\gamma$}
-{ \setpsdash(3) \drawcurvedtrans(D,A){$C,\varepsilon$} }
-{ \setprofcurve{-15} \drawcurvedtrans[r](F,D){$G_1,g_1,\gamma_1$} }
-\end{picture}
-\end{center}
-
-\begin{center}\compatiblegastexun
-\unitlength=1mm
-\begin{picture}(90,30)(-5,-16)
-\thinlines
-\put(-5,-16){\framebox(90,30){}}
-
-\setvertexdiam{6}
-\letvertex A=(0,0)     \drawcircledvertex(A){$a$}
-\letvertex B=(20,0)    \drawvertex(B){$b$}
-\letvertex[9] C=(40,0) \drawcircledvertex(C){$c$}
-\letvertex D=(60,0)    \drawcircledvertex(D){$d$}
-\letvertex E=(80,0)    \drawcircledvertex(E){$e$}
-
-\drawundirectededge(A,B){7}
-\drawundirectededge(B,C){-11}
-\drawundirectededge(C,D){13}
-\drawundirectededge(D,E){2}
-
-\setprofcurve{10}
-\drawundirectedcurvededge(A,C){3}
-\drawundirectedcurvededge(C,E){8}
-\setprofcurve{-10}
-\drawundirectedcurvededge[r](B,D){-5}
-
-\drawundirectedloop[b](A){17}
-\end{picture}
-\end{center}
-
-% Compatibility with pspictpg
-\begin{center}\compatiblepspictpg
-\begin{picture}(80,80)(-40,-40)
-% \put(-40,-40){\framebox(80,80){}}
-  \drawvector(-40,0)(40,0)
-  \drawvector(0,-40)(0,40)
-  \drawline(-30,-30)(30,30)
-  \cbeziervector(-30,-20)(-30,0)(-10,0)(-10,20)
-  {\setpsdash(3)\cbezier(-30,20)(-30,0)(-10,0)(-10,-20)}
-  \qbeziervector(1,-20)(20,-20)(20,-1)
-  \qbezier(1,-20)(1,-1)(20,-1)
-  \drawcircle(10,30)(10)
-  \put(-20,-30){\circle{10}}
-  \put(25,5){\line(1,3){8}}
-  \put(25,5){\vector(1,2){8}}
-  \setpsgray{0.5}
-  \drawdisk(-30,30)(10)
-  \put(20,-30){\circle*{10}}
-\end{picture}
-\end{center}
-
-\end{document}
-
-

Added: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf
===================================================================
(Binary files differ)

Index: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf	2021-03-18 21:14:35 UTC (rev 58526)

Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.tex	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.tex	2021-03-18 21:14:35 UTC (rev 58526)
@@ -0,0 +1,189 @@
+\documentclass[12pt]{article}
+\usepackage{url,xspace}
+\usepackage[a4paper,text={16cm,22.7cm},centering]{geometry}
+
+\usepackage[pdflatex,recompilepics=true]{gastex}
+\gasset{frame=false,Nw=6,Nh=6,loopdiam=5}
+
+\parindent=0pt
+\parskip=1.5ex
+
+\newcommand\GasTeX{\textsf{GasTeX}\xspace}
+\newcommand{\leftend}{{\vdash}}
+\newcommand{\rightend}{{\dashv}}
+
+\title{\GasTeX: Graphs and Automata Simplified in \TeX}
+\author{Paul Gastin \\[1ex]
+        LMF, ENS Paris-Saclay \\
+        {\small\texttt{paul.gastin at ens-paris-saclay.fr}}}
+\date{v3.0}
+\begin{document}
+\maketitle
+\begin{abstract}
+  This is a very minimal startup guide including some examples.  
+\end{abstract}
+
+\begin{gpicture}[name=gpic:LR-concat,ignore]
+  \gasset{Nframe=n}
+  \node(ui)(15,3){$u$}
+  \node(ui+1)(45,3){$v$}
+  \gasset{AHnb=0}
+  \drawline(0,2)(0,-31)
+  \drawline(30,2)(30,-31)
+  \drawline(60,2)(60,-31)
+  \gasset{AHnb=1,arcradius=0.8}
+  \drawline(0,-1)(20,-1)(20,-3)(5,-3)(5,-5)(30,-5)
+  \node(x0)(23,-2){$\rho_0$}
+  \drawline[linecolor=red](30,-5)(50,-5)(50,-7)(35,-7)(35,-9)(45,-9)(45,-11)(30,-11)
+  \node(x0)(53,-6){\color{red}$\rho_1$}
+  \drawline[linecolor=red](30,-11)(20,-11)(20,-13)(25,-13)(25,-15)(18,-15)(18,-17)(30,-17)
+  \node(x1)(17,-12){\color{red}$\rho_2$}
+  \drawline[linecolor=red](30,-17)(40,-17)(40,-19)(30,-19)
+  \node(x2)(43,-18){\color{red}$\rho_3$}
+  \drawline[linecolor=red](30,-19)(15,-19)(15,-21)(22,-21)(22,-23)(10,-23)(10,-25)(30,-25)
+  \node(x3)(12,-20){\color{red}$\rho_4$}
+  \drawline(30,-25)(50,-25)(50,-27)(40,-27)(40,-29)(60,-29)
+  \node(x2)(53,-26){$\rho_5$}
+  \gasset{Nw=1.6,Nh=1.6,Nfill=y,ExtNL=y,NLdist=.7}
+  \node[NLangle=45](p)(0,-1){$p$}
+  \node[fillcolor=red,NLangle=45](p1)(30,-5){\color{red}$p_1$}
+  \node[fillcolor=red,NLangle=135](p2)(30,-11){\color{red}$p_2$}
+  \node[fillcolor=red,NLangle=45](p3)(30,-17){\color{red}$p_3$}
+  \node[fillcolor=red,NLangle=-135](p4)(30,-19){\color{red}$p_4$}
+  \node[fillcolor=red,NLangle=45](p5)(30,-25){\color{red}$p_5$}
+  \node[NLangle=0](q)(60,-29){$q$}
+\end{gpicture}
+\begin{gpicture}[name=gpic:LL-concat,ignore]
+  \gasset{Nframe=n}
+  \node(ui)(15,3){$u$}
+  \node(ui+1)(45,3){$v$}
+  \gasset{AHnb=0}
+  \drawline(0,2)(0,-31)
+  \drawline(30,2)(30,-31)
+  \drawline(60,2)(60,-31)
+  \gasset{AHnb=1,arcradius=0.8}
+  \drawline(0,-1)(20,-1)(20,-3)(5,-3)(5,-5)(30,-5)
+  \node(x0)(23,-2){$\rho_0$}
+  \drawline[linecolor=red](30,-5)(50,-5)(50,-7)(35,-7)(35,-9)(45,-9)(45,-11)(30,-11)
+  \node(x0)(53,-6){\color{red}$\rho_1$}
+  \drawline[linecolor=red](30,-11)(20,-11)(20,-13)(25,-13)(25,-15)(18,-15)(18,-17)(30,-17)
+  \node(x1)(17,-12){\color{red}$\rho_2$}
+  \drawline[linecolor=red](30,-17)(40,-17)(40,-19)(30,-19)
+  \node(x2)(43,-18){\color{red}$\rho_3$}
+  \drawline[linecolor=black](30,-19)(15,-19)(15,-21)(22,-21)(22,-23)(10,-23)(10,-25)(15,-25)
+  (15,-27)(0,-27)
+  \node(x3)(12,-20){\color{black}$\rho_4$}
+  \gasset{Nw=1.6,Nh=1.6,Nfill=y,ExtNL=y,NLdist=.7}
+  \node[NLangle=45](p)(0,-1){$p$}
+  \node[fillcolor=red,NLangle=45](p1)(30,-5){\color{red}$p_1$}
+  \node[fillcolor=red,NLangle=135](p2)(30,-11){\color{red}$p_2$}
+  \node[fillcolor=red,NLangle=45](p3)(30,-17){\color{red}$p_3$}
+  \node[fillcolor=red,NLangle=-135](p4)(30,-19){\color{red}$p_4$}
+  \node[NLangle=180](q)(0,-27){$q$}
+\end{gpicture}
+
+
+For the documentation, please see
+\url{http://www.lsv.fr/~gastin/gastex/index.html}.
+
+The package consists of two files \verb|gastex.sty| and \verb|gastex.pro|.
+\begin{itemize}
+  \item \verb|gastex.sty| contains the definition of all \GasTeX macros.
+  This file could be in your working folder but it is best placed where \verb|.sty| files are, e.g.,
+  
+  \verb|.../texmf-dist/tex/latex/gastex/gastex.sty| \\  
+  or \\  
+  \verb|.../texmf-local/tex/latex/gastex/gastex.sty|
+
+  \item  \verb|gastex.pro| which contains all the postscript procedures used to actually draw the pictures.
+  This file could be in your working folder but it is best placed where \verb|.pro| files are, e.g.,
+  
+  \verb|.../texmf-dist/dvips/gastex/gastex.pro| \\
+  or \\  
+  \verb|.../texmf-local/dvips/gastex/gastex.pro|
+\end{itemize}
+
+This documentation file simply contains a few simple examples on how to make figures with
+\GasTeX. It should be compiled with
+\begin{quote}
+  \verb|pdflatex --shell-escape gastex-doc.tex| \\ 
+  or \\
+  \verb|pdflatex --enable-write18 gastex-doc.tex|
+\end{quote}
+
+The first example below is a 2-way deterministic finite state transducer. It consists of 
+a \verb|gpicture| environment which contains the \GasTeX commands for nodes and 
+transitions.
+
+\begin{center}
+  \begin{gpicture}[name=gpic:2DFT]
+    \gasset{Nframe=y,Nw=8,Nh=8,loopdiam=6}
+    \unitlength=2.8mm
+    \node[Nmarks=i](0)(0,0){$q_0$}
+    \node(1)(10,0){$q_1$}
+    \node[Nmarks=r](2)(20,0){$q_2$}
+    \node(6)(30,0){$q_3$}
+    \node(3)(30,-8){$q_4$}
+    \node(4)(20,-8){$q_5$}
+    \node(5)(10,-8){$q_6$}
+    
+    \drawloop(0){$\leftend/\varepsilon,+1$}
+    \drawloop(1){$a/\varepsilon,+1$}
+    \drawloop(2){$\rightend/\varepsilon,+1$}
+    \drawloop(6){$a/\varepsilon,+1$}
+    \drawloop[loopangle=-90](3){$a/a,-1$}
+    \drawloop[loopangle=-90](4){$a/b,-1$}
+    \drawloop[loopangle=-90](5){$a/\varepsilon,+1$}
+    
+    \drawedge(0,1){$b/\varepsilon,+1$}
+    \drawedge(1,2){$b/\varepsilon,+1$}
+    \drawedge[ELpos=25,ELdist=0,ELside=r](2,3){$b/\varepsilon,-1$}
+    \drawedge[ELpos=50](6,3){$b/\varepsilon,-1$}
+    \drawedge[ELside=l](3,4){$b/\varepsilon,-1$}
+    \drawedge[ELpos=50](4,5){$b/\varepsilon,+1$}
+    \drawedge[ELpos=50](5,1){$b/\varepsilon,+1$}
+    \drawedge(2,6){$a/\varepsilon,+1$}
+  \end{gpicture}
+\end{center}
+
+The second one is in Figure~\ref{fig:LR-concat}.  The pictures have been defined at the
+beginning of the \LaTeX\ document, with the \verb|name| and \verb|ignore| optional
+parameters given to the \verb|gpicture| environment.  These pictures are generated but not
+inserted immediately.  Instead, the \verb|\gusepicture| command allows to include each
+named picture, possibly multiple times at different places.
+
+All pictures defined in \verb|gpicture| environments are compiled and stored in a file
+called \verb|filename-pics.pdf|, one picture per page.  These pictures could be included
+in any \LaTeX\ file, possibly another \LaTeX\ file which need not use the \GasTeX package,
+simply by using \verb|\includegraphics| as follows:
+\begin{quote}
+  \verb|\includegraphics[page=2,scale=0.6]{gastex-doc-pics.pdf}|
+
+  \includegraphics[page=2,scale=0.6]{gastex-doc-pics.pdf}
+\end{quote}
+This is convenient for instance when sending the \LaTeX\ file to \verb|Arxiv| or to an 
+editor (journal, proceedings) which does not allow the \verb|--shell-escape| option when 
+compiling with \verb|pdflatex|. Actually, \GasTeX does this automatically for you. When 
+loading the package, set the \verb|recompilepics| option to \verb|false| as follows:
+\begin{quote}
+  \verb|\usepackage[pdflatex,recompilepics=false]{gastex}|
+\end{quote}
+then you may compile without the \verb|--shell-escape| option
+\begin{quote}
+    \verb|pdflatex gastex-doc.tex| 
+\end{quote}
+and \GasTeX automatically calls \verb|\includegraphics| to include the pictures that have 
+been previously generated and stored in the file \verb|gastex-doc-pics.pdf|.
+
+\begin{figure}[b]
+  \centering
+  \gusepicture{gpic:LR-concat}
+  \hfill
+  \gusepicture{gpic:LL-concat}
+  \caption{Decomposition of a left-right run and a left-left run over the product $w=uv$.}
+  \label{fig:LR-concat}
+\end{figure}
+
+
+\end{document}
+


Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex/gastex/gastex-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/dvips/gastex/gastex.pro
===================================================================
--- branches/branch2020.0/Master/texmf-dist/dvips/gastex/gastex.pro	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/dvips/gastex/gastex.pro	2021-03-18 21:14:35 UTC (rev 58526)
@@ -10,153 +10,154 @@
 !x1 sub !d2 mul !d0 div add def /!yp !y1 !y0 !y1 sub !d2 mul !d0 div
 add def /!d !yp !y2 sub dup mul !xp !x2 sub dup mul add sqrt 2 div
 def } ifelse } { /!d 0 def } ifelse !d !r lt { /!r !d def } if !x1
-!y1 !x2 !y2 !r arct } def /!psarrow { gsave 2 copy translate 3 -1 roll
-sub neg /!y exch def sub /!x exch def !x 0 eq !y 0 eq and {/!x 1 def}
-if !y !x atan rotate /L2 exch def /L1 exch def /ang exch def /dist
-exch def /nb exch def 1 1 nb { pop L2 0 eq { newpath L1 ang cos mul
-L1 ang sin mul 2 copy moveto 0 0 lineto neg lineto stroke } { newpath
-0 0 moveto L1 ang cos mul L1 ang sin mul 2 copy lineto L2 0 lineto
-neg lineto closepath fill } ifelse dist 0 translate } for grestore
-} def /!psvect { /y exch def /x exch def newpath 0 0 moveto x y lineto
-stroke 0 0 x y !psarrow x y 0 0 !psarrow } def /!pslines { /ra exch
-def /n exch def /yn exch def /xn exch def /yn_1 exch def /xn_1 exch
-def /x xn def /y yn def /xx xn_1 def /yy yn_1 def newpath xn yn moveto
-3 1 n { pop /x xx def /y yy def /yy exch def /xx exch def x y xx yy
-ra !smartarct } for xx yy lineto stroke xn_1 yn_1 xn yn !psarrow x
-y xx yy !psarrow } def /!psrectpath { /y1 exch def /x1 exch def /y0
-exch def /x0 exch def newpath x0 y0 moveto x1 y0 lineto x1 y1 lineto
-x0 y1 lineto closepath } def /!pscirclepath { newpath 0 360 arc closepath
-} def /!psovalpath { /rmax exch dup 0.1 le { pop 0.1 } if def /H exch
-2 div dup 0.1 le { pop 0.1 } if def /W exch 2 div dup 0.1 le { pop
-0.1 } if def /y exch def /x exch def H W le { /R H def }{ /R W def
-} ifelse rmax R le { /R rmax def } if newpath x y H add moveto x W
-add y H add x W add y R arct x W add y H sub x y H sub R arct x W sub
-y H sub x W sub y R arct x W sub y H add x y H add R arct closepath
-} def /!pspolygonpath { /ra exch def /n exch def dup n 2 mul 1 add
-1 roll 1 index n 2 mul 2 add 1 roll n 2 mul 1 sub index n 2 mul 1 sub
-index /yy exch def /xx exch def /y exch def /x exch def newpath xx
-x add 2 div yy y add 2 div moveto 1 1 n { pop /yy exch def /xx exch
-def x y x xx add 2 div y yy add 2 div ra !smartarct /x xx def /y yy
-def } for closepath } def /!psrpolygonpath { /rd exch def /ra exch
-def /a exch def /r exch def /n exch def /y exch def /x exch def /b
-360 n div def /c b def x y translate a rotate rd 0 ne { r rd b 2 div
-cos div sub r div dup scale } if /x1 r b cos mul def /y1 r b sin mul
-def newpath r x1 add 2 div y1 2 div moveto 1 1 n { pop /c c b add def
-/x2 r c cos mul def /y2 r c sin mul def x1 y1 x1 x2 add 2 div y1 y2
-add 2 div ra !smartarct /x1 x2 def /y1 y2 def } for closepath rd 0
-ne { r r rd b 2 div cos div sub div dup scale } if a neg rotate x neg
-y neg translate } def /!psccurvepath { /n exch def n 2 mul 1 sub index
+!y1 !x2 !y2 !r arct } def /!psarrow { gsave [] 0 setdash 2 copy translate
+3 -1 roll sub neg /!y exch def sub /!x exch def !x 0 eq !y 0 eq and
+{/!x 1 def} if !y !x atan rotate /L2 exch def /L1 exch def /ang exch
+def /dist exch def /nb exch def 1 1 nb { pop L2 0 eq { newpath L1 ang
+cos mul L1 ang sin mul 2 copy moveto 0 0 lineto neg lineto stroke }
+{ newpath 0 0 moveto L1 ang cos mul L1 ang sin mul 2 copy lineto L2
+0 lineto neg lineto closepath fill } ifelse dist 0 translate } for
+grestore } def /!psvect { /y exch def /x exch def newpath 0 0 moveto
+x y lineto stroke 0 0 x y !psarrow x y 0 0 !psarrow } def /!pslines
+{ /ra exch def /n exch def /yn exch def /xn exch def /yn_1 exch def
+/xn_1 exch def /x xn def /y yn def /xx xn_1 def /yy yn_1 def newpath
+xn yn moveto 3 1 n { pop /x xx def /y yy def /yy exch def /xx exch
+def x y xx yy ra !smartarct } for xx yy lineto stroke xn_1 yn_1 xn
+yn !psarrow x y xx yy !psarrow } def /!psrectpath { /y1 exch def /x1
+exch def /y0 exch def /x0 exch def newpath x0 y0 moveto x1 y0 lineto
+x1 y1 lineto x0 y1 lineto closepath } def /!pscirclepath { newpath
+0 360 arc closepath } def /!psovalpath { /rmax exch dup 0.1 le { pop
+0.1 } if def /H exch 2 div dup 0.1 le { pop 0.1 } if def /W exch 2
+div dup 0.1 le { pop 0.1 } if def /y exch def /x exch def H W le {
+/R H def }{ /R W def } ifelse rmax R le { /R rmax def } if newpath
+x y H add moveto x W add y H add x W add y R arct x W add y H sub x
+y H sub R arct x W sub y H sub x W sub y R arct x W sub y H add x y
+H add R arct closepath } def /!pspolygonpath { /ra exch def /n exch
+def dup n 2 mul 1 add 1 roll 1 index n 2 mul 2 add 1 roll n 2 mul 1
+sub index n 2 mul 1 sub index /yy exch def /xx exch def /y exch def
+/x exch def newpath xx x add 2 div yy y add 2 div moveto 1 1 n { pop
+/yy exch def /xx exch def x y x xx add 2 div y yy add 2 div ra !smartarct
+/x xx def /y yy def } for closepath } def /!psrpolygonpath { /rd exch
+def /ra exch def /a exch def /r exch def /n exch def /y exch def /x
+exch def /b 360 n div def /c b def x y translate a rotate rd 0 ne {
+r rd b 2 div cos div sub r div dup scale } if /x1 r b cos mul def /y1
+r b sin mul def newpath r x1 add 2 div y1 2 div moveto 1 1 n { pop
+/c c b add def /x2 r c cos mul def /y2 r c sin mul def x1 y1 x1 x2
+add 2 div y1 y2 add 2 div ra !smartarct /x1 x2 def /y1 y2 def } for
+closepath rd 0 ne { r r rd b 2 div cos div sub div dup scale } if a
+neg rotate x neg y neg translate } def /!psccurvepath { /n exch def
 n 2 mul 1 sub index n 2 mul 1 sub index n 2 mul 1 sub index n 2 mul
-4 add array astore /coef exch def /alpha 3.5 def /px0 coef n 2 mul
-2 sub get def /py0 coef n 2 mul 1 sub get def /px1 coef 0 get def /py1
-coef 1 get def /px2 coef 2 get def /py2 coef 3 get def /d0 px1 px0
-sub dup mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul
-py1 py2 sub dup mul add sqrt def /ppx d2 d0 div px0 px1 sub mul px1
+1 sub index n 2 mul 4 add array astore /coef exch def /alpha 3.5 def
+/px0 coef n 2 mul 2 sub get def /py0 coef n 2 mul 1 sub get def /px1
+coef 0 get def /py1 coef 1 get def /px2 coef 2 get def /py2 coef 3
+get def /d0 px1 px0 sub dup mul py1 py0 sub dup mul add sqrt def /d2
+px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /ppx d2 d0 div
+px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add
+def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2
+d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy
+sub mul alpha div py1 add def newpath px1 py1 moveto 4 2 n 2 mul 2
+add { /i exch def /px0 px1 def /px1 px2 def /px2 coef i get def /py0
+py1 def /py1 py2 def /py2 coef i 1 add get def /d0 d2 def /d2 px1 px2
+sub dup mul py1 py2 sub dup mul add sqrt def /ppx d0 d2 div px2 px1
+sub mul px1 add def /ppy d0 d2 div py2 py1 sub mul py1 add def /d1
+ppx px0 sub dup mul ppy py0 sub dup mul add sqrt def /rx d0 d1 div
+px0 ppx sub mul alpha div px1 add def /ry d0 d1 div py0 ppy sub mul
+alpha div py1 add def qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0
+px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1 add def
+/d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx d2 d1
+div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy sub
+mul alpha div py1 add def } for closepath } def /!pscurve { /n exch
+def n 2 mul array astore /coef exch def /alpha 3.5 def /px1 coef 0
+get def /py1 coef 1 get def /px2 coef 2 get def /py2 coef 3 get def
+/d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /qx px1 def
+/qy py1 def newpath px1 py1 moveto 4 2 n 2 mul 2 sub { /i exch def
+/px0 px1 def /px1 px2 def /px2 coef i get def /py0 py1 def /py1 py2
+def /py2 coef i 1 add get def /d0 d2 def /d2 px1 px2 sub dup mul py1
+py2 sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add
+def /ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup
+mul ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul
+alpha div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add
+def qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0 px1 sub mul px1
 add def /ppy d2 d0 div py0 py1 sub mul py1 add def /d1 ppx px2 sub
 dup mul ppy py2 sub dup mul add sqrt def /qx d2 d1 div px2 ppx sub
 mul alpha div px1 add def /qy d2 d1 div py2 ppy sub mul alpha div py1
-add def newpath px1 py1 moveto 4 2 n 2 mul 2 add { /i exch def /px0
-px1 def /px1 px2 def /px2 coef i get def /py0 py1 def /py1 py2 def
-/py2 coef i 1 add get def /d0 d2 def /d2 px1 px2 sub dup mul py1 py2
-sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def
-/ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul
-ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha
-div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def
-qx qy rx ry px1 py1 curveto /ppx d2 d0 div px0 px1 sub mul px1 add
+add def } for /px1 coef n 2 mul 2 sub get def /py1 coef n 2 mul 1 sub
+get def /rx px1 def /ry py1 def qx qy rx ry px1 py1 curveto stroke
+/px0 coef n 2 mul 6 sub get def /py0 coef n 2 mul 5 sub get def /px1
+coef n 2 mul 4 sub get def /py1 coef n 2 mul 3 sub get def /px2 coef
+n 2 mul 2 sub get def /py2 coef n 2 mul 1 sub get def /d0 px1 px0 sub
+dup mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1
+py2 sub dup mul add sqrt def /ppx d2 d0 div px0 px1 sub mul px1 add
 def /ppy d2 d0 div py0 py1 sub mul py1 add def /d1 ppx px2 sub dup
 mul ppy py2 sub dup mul add sqrt def /qx d2 d1 div px2 ppx sub mul
 alpha div px1 add def /qy d2 d1 div py2 ppy sub mul alpha div py1 add
-def } for closepath } def /!pscurve { /n exch def n 2 mul array astore
-/coef exch def /alpha 3.5 def /px1 coef 0 get def /py1 coef 1 get def
-/px2 coef 2 get def /py2 coef 3 get def /d2 px1 px2 sub dup mul py1
-py2 sub dup mul add sqrt def /qx px1 def /qy py1 def newpath px1 py1
-moveto 4 2 n 2 mul 2 sub { /i exch def /px0 px1 def /px1 px2 def /px2
-coef i get def /py0 py1 def /py1 py2 def /py2 coef i 1 add get def
-/d0 d2 def /d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def
-/ppx d0 d2 div px2 px1 sub mul px1 add def /ppy d0 d2 div py2 py1 sub
-mul py1 add def /d1 ppx px0 sub dup mul ppy py0 sub dup mul add sqrt
-def /rx d0 d1 div px0 ppx sub mul alpha div px1 add def /ry d0 d1 div
-py0 ppy sub mul alpha div py1 add def qx qy rx ry px1 py1 curveto /ppx
-d2 d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul
-py1 add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def
-/qx d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2
-ppy sub mul alpha div py1 add def } for /px1 coef n 2 mul 2 sub get
-def /py1 coef n 2 mul 1 sub get def /rx px1 def /ry py1 def qx qy rx
-ry px1 py1 curveto stroke /px0 coef n 2 mul 6 sub get def /py0 coef
-n 2 mul 5 sub get def /px1 coef n 2 mul 4 sub get def /py1 coef n 2
-mul 3 sub get def /px2 coef n 2 mul 2 sub get def /py2 coef n 2 mul
-1 sub get def /d0 px1 px0 sub dup mul py1 py0 sub dup mul add sqrt
-def /d2 px1 px2 sub dup mul py1 py2 sub dup mul add sqrt def /ppx d2
-d0 div px0 px1 sub mul px1 add def /ppy d2 d0 div py0 py1 sub mul py1
-add def /d1 ppx px2 sub dup mul ppy py2 sub dup mul add sqrt def /qx
-d2 d1 div px2 ppx sub mul alpha div px1 add def /qy d2 d1 div py2 ppy
-sub mul alpha div py1 add def px1 py1 qx qy px2 py2 px2 py2 !ps_cbezier_arrow
-/px0 coef 0 get def /py0 coef 1 get def /px1 coef 2 get def /py1 coef
-3 get def /px2 coef 4 get def /py2 coef 5 get def /d0 px1 px0 sub dup
-mul py1 py0 sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1 py2
-sub dup mul add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def
-/ppy d0 d2 div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul
-ppy py0 sub dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha
-div px1 add def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def
-px1 py1 rx ry px0 py0 px0 py0 !ps_cbezier_arrow } def /!ps_cbezier
-{ /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def
-/x1 exch def /y0 exch def /x0 exch def newpath x0 y0 moveto x1 y1 x2
-y2 x3 y3 curveto stroke x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier_arrow x3
-y3 x2 y2 x1 y1 x0 y0 !ps_cbezier_arrow } def /!ps_cbezier_arrow { /y3
-exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch
-def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub add def
-/xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def /ya y1
-y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3 mul def
-/yc y1 y0 sub 3 mul def /L2 exch def /L1 exch def /ang exch def /dist
-exch def /nb exch def L2 0 le { /L L1 ang cos mul 2 div def } { /L
-L2 def } ifelse /t4 1 def 1 1 nb { pop /x4 t4 !calculx def /y4 t4 !calculy
-def L 0 le { /dx t4 !calculdx def /dy t4 !calculdy def dx dup mul dy
-dup mul add sqrt dup 0 eq { /dx 1 def /dy 0 def pop 1 } if L1 exch
-div dup dx neg mul /xx exch def dy neg mul /yy exch def } { /t1 0 def
-/t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx x4 sub
-dup mul t !calculy y4 sub dup mul add sqrt L ge { /t1 t def } { /t2
-t def } ifelse } for /x6 t !calculx def /y6 t !calculy def L1 L div
-dup x6 x4 sub mul /xx exch def y6 y4 sub mul /yy exch def } ifelse
-/x5 x4 xx ang cos mul add yy ang sin mul sub def /y5 y4 xx ang sin
-mul add yy ang cos mul add def /x7 x4 xx ang cos mul add yy ang sin
-mul add def /y7 y4 xx ang sin mul sub yy ang cos mul add def L2 0 le
-{ newpath x5 y5 moveto x4 y4 lineto x7 y7 lineto stroke } { newpath
-x4 y4 moveto x5 y5 lineto x6 y6 lineto x7 y7 lineto closepath fill
-} ifelse /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def
-t !calculx x4 sub dup mul t !calculy y4 sub dup mul add sqrt dist ge
-{ /t1 t def } { /t2 t def } ifelse } for /t4 t def } for } def /!ps_qbezier
-{ /y3 exch def /x3 exch def /yy exch def /xx exch def /y0 exch def
-/x0 exch def /x1 xx 2 mul x0 add 3 div def /y1 yy 2 mul y0 add 3 div
-def /x2 xx 2 mul x3 add 3 div def /y2 yy 2 mul y3 add 3 div def x0
-y0 x1 y1 x2 y2 x3 y3 !ps_cbezier } def /!max 10 def /!ps_r_cbezier
-{ /y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def
-/x1 exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub
-add def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def
-/ya y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3
-mul def /yc y1 y0 sub 3 mul def /t1 0 def /t2 1 def 0 1 !max { pop
-/t t1 t2 add 2 div def t !calculx t !calculy path!a inufill { /t1 t
-def } { /t2 t def } ifelse } for /ta t def /t1 0 def /t2 1 def 0 1
-!max { pop /t t1 t2 add 2 div def t !calculx t !calculy path!b inufill
-{ /t2 t def } { /t1 t def } ifelse } for /tb t def ta !calculx ta !calculy
-ta !calculdx 3 div tb ta sub mul ta !calculx add ta !calculdy 3 div
-tb ta sub mul ta !calculy add tb !calculdx 3 div ta tb sub mul tb !calculx
-add tb !calculdy 3 div ta tb sub mul tb !calculy add tb !calculx tb
-!calculy !ps_cbezier } def /!calculx { dup dup xa mul xb add mul xc
-add mul x0 add } def /!calculy { dup dup ya mul yb add mul yc add mul
-y0 add } def /!calculdx { dup 3 xa mul mul 2 xb mul add mul xc add
-} def /!calculdy { dup 3 ya mul mul 2 yb mul add mul yc add } def /!node_mark
-{ /ma exch def /ml exch def /y exch def /x exch def /x1 x def /y1 y
-def /x2 x 500 ma cos mul add def /y2 y 500 ma sin mul add def 0 1 !max
-{ pop /x x1 x2 add 2 div def /y y1 y2 add 2 div def x y path!a inufill
-{ /x1 x def /y1 y def } { /x2 x def /y2 y def } ifelse } for /x1 x
-def /y1 y def /x2 x ml ma cos mul add def /y2 y ml ma sin mul add def
-newpath x1 y1 moveto x2 y2 lineto stroke x2 y2 x1 y1 !psarrow x1 y1
-x2 y2 !psarrow } def /!sign {dup 0 lt {pop -1} {0 eq {0} {1} ifelse}
-ifelse} def /!pslatexline { /L exch def /b exch def /a exch def a 0
-eq {0 L b !sign mul} {L a !sign mul dup b mul a div} ifelse newpath
-0 0 moveto lineto stroke } def /!pslatexvector { /L exch def /b exch
-def /a exch def a 0 eq {0 L b !sign mul} {L a !sign mul dup b mul a
-div} ifelse !psvect } def /!pscircle { 2 div newpath 0 0 3 2 roll 0
-360 arc stroke } def /!psdisk { 2 div newpath 0 0 3 2 roll 0 360 arc
-fill } def
+def px1 py1 qx qy px2 py2 px2 py2 !ps_cbezier_arrow /px0 coef 0 get
+def /py0 coef 1 get def /px1 coef 2 get def /py1 coef 3 get def /px2
+coef 4 get def /py2 coef 5 get def /d0 px1 px0 sub dup mul py1 py0
+sub dup mul add sqrt def /d2 px1 px2 sub dup mul py1 py2 sub dup mul
+add sqrt def /ppx d0 d2 div px2 px1 sub mul px1 add def /ppy d0 d2
+div py2 py1 sub mul py1 add def /d1 ppx px0 sub dup mul ppy py0 sub
+dup mul add sqrt def /rx d0 d1 div px0 ppx sub mul alpha div px1 add
+def /ry d0 d1 div py0 ppy sub mul alpha div py1 add def px1 py1 rx
+ry px0 py0 px0 py0 !ps_cbezier_arrow } def /!ps_cbezier { /y3 exch
+def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def
+/y0 exch def /x0 exch def newpath x0 y0 moveto x1 y1 x2 y2 x3 y3 curveto
+stroke x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier_arrow x3 y3 x2 y2 x1 y1
+x0 y0 !ps_cbezier_arrow } def /!ps_cbezier_arrow { gsave [] 0 setdash
+/y3 exch def /x3 exch def /y2 exch def /x2 exch def /y1 exch def /x1
+exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3 mul x3 x0 sub add
+def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1 x0 sub 3 mul def /ya
+y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub y1 sub y2 add 3 mul
+def /yc y1 y0 sub 3 mul def /L2 exch def /L1 exch def /ang exch def
+/dist exch def /nb exch def L2 0 le { /L L1 ang cos mul 2 div def }
+{ /L L2 def } ifelse /t4 1 def 1 1 nb { pop /x4 t4 !calculx def /y4
+t4 !calculy def L 0 le { /dx t4 !calculdx def /dy t4 !calculdy def
+dx dup mul dy dup mul add sqrt dup 0 eq { /dx 1 def /dy 0 def pop 1
+} if L1 exch div dup dx neg mul /xx exch def dy neg mul /yy exch def
+} { /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx
+x4 sub dup mul t !calculy y4 sub dup mul add sqrt L ge { /t1 t def
+} { /t2 t def } ifelse } for /x6 t !calculx def /y6 t !calculy def
+L1 L div dup x6 x4 sub mul /xx exch def y6 y4 sub mul /yy exch def
+} ifelse /x5 x4 xx ang cos mul add yy ang sin mul sub def /y5 y4 xx
+ang sin mul add yy ang cos mul add def /x7 x4 xx ang cos mul add yy
+ang sin mul add def /y7 y4 xx ang sin mul sub yy ang cos mul add def
+L2 0 le { newpath x5 y5 moveto x4 y4 lineto x7 y7 lineto stroke } {
+newpath x4 y4 moveto x5 y5 lineto x6 y6 lineto x7 y7 lineto closepath
+fill } ifelse /t1 0 def /t2 t4 def 0 1 !max { pop /t t1 t2 add 2 div
+def t !calculx x4 sub dup mul t !calculy y4 sub dup mul add sqrt dist
+ge { /t1 t def } { /t2 t def } ifelse } for /t4 t def } for grestore
+} def /!ps_qbezier { /y3 exch def /x3 exch def /yy exch def /xx exch
+def /y0 exch def /x0 exch def /x1 xx 2 mul x0 add 3 div def /y1 yy
+2 mul y0 add 3 div def /x2 xx 2 mul x3 add 3 div def /y2 yy 2 mul y3
+add 3 div def x0 y0 x1 y1 x2 y2 x3 y3 !ps_cbezier } def /!max 10 def
+/!ps_r_cbezier { /y3 exch def /x3 exch def /y2 exch def /x2 exch def
+/y1 exch def /x1 exch def /y0 exch def /x0 exch def /xa x1 x2 sub 3
+mul x3 x0 sub add def /xb x0 x1 sub x1 sub x2 add 3 mul def /xc x1
+x0 sub 3 mul def /ya y1 y2 sub 3 mul y3 y0 sub add def /yb y0 y1 sub
+y1 sub y2 add 3 mul def /yc y1 y0 sub 3 mul def /t1 0 def /t2 1 def
+0 1 !max { pop /t t1 t2 add 2 div def t !calculx t !calculy path!a
+inufill { /t1 t def } { /t2 t def } ifelse } for /ta t def /t1 0 def
+/t2 1 def 0 1 !max { pop /t t1 t2 add 2 div def t !calculx t !calculy
+path!b inufill { /t2 t def } { /t1 t def } ifelse } for /tb t def ta
+!calculx ta !calculy ta !calculdx 3 div tb ta sub mul ta !calculx add
+ta !calculdy 3 div tb ta sub mul ta !calculy add tb !calculdx 3 div
+ta tb sub mul tb !calculx add tb !calculdy 3 div ta tb sub mul tb !calculy
+add tb !calculx tb !calculy !ps_cbezier } def /!calculx { dup dup xa
+mul xb add mul xc add mul x0 add } def /!calculy { dup dup ya mul yb
+add mul yc add mul y0 add } def /!calculdx { dup 3 xa mul mul 2 xb
+mul add mul xc add } def /!calculdy { dup 3 ya mul mul 2 yb mul add
+mul yc add } def /!node_mark { /ma exch def /ml exch def /y exch def
+/x exch def /x1 x def /y1 y def /x2 x 500 ma cos mul add def /y2 y
+500 ma sin mul add def 0 1 !max { pop /x x1 x2 add 2 div def /y y1
+y2 add 2 div def x y path!a inufill { /x1 x def /y1 y def } { /x2 x
+def /y2 y def } ifelse } for /x1 x def /y1 y def /x2 x ml ma cos mul
+add def /y2 y ml ma sin mul add def newpath x1 y1 moveto x2 y2 lineto
+stroke x2 y2 x1 y1 !psarrow x1 y1 x2 y2 !psarrow } def /!sign {dup
+0 lt {pop -1} {0 eq {0} {1} ifelse} ifelse} def /!pslatexline { /L
+exch def /b exch def /a exch def a 0 eq {0 L b !sign mul} {L a !sign
+mul dup b mul a div} ifelse newpath 0 0 moveto lineto stroke } def
+/!pslatexvector { /L exch def /b exch def /a exch def a 0 eq {0 L b
+!sign mul} {L a !sign mul dup b mul a div} ifelse !psvect } def /!pscircle
+{ 2 div newpath 0 0 3 2 roll 0 360 arc stroke } def /!psdisk { 2 div
+newpath 0 0 3 2 roll 0 360 arc fill } def
 end
\ No newline at end of file

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex/gastex/gastex.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex/gastex/gastex.sty	2021-03-18 21:14:19 UTC (rev 58525)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex/gastex/gastex.sty	2021-03-18 21:14:35 UTC (rev 58526)
@@ -1,41 +1,118 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{gastex}[2006/11/28 v2.8]
-\newif\ifgastexslide\gastexslidefalse
-\DeclareOption{slide}{\global\gastexslidetrue}
-\DeclareOption{paper}{\global\gastexslidefalse}
-\ProcessOptions
-\RequirePackage{calc,trig}
-\special{header=gastex.pro}
-% \input gastex.ps
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%
 %% GasTeX : Graphs and Automata Simplified in TeX
 %%
 %% Macros for drawing easily graphs and automata under the picture 
-%% environment of LaTeX2e.
-%% See the README file
+%% environment of LaTeX.
+%% See the README file.
 %%
 %% Paul Gastin
-%% LSV
-%% ENS de Cachan
-%% 61, avenue du Pr\x8Esident Wilson
-%% F-94235 CACHAN Cedex
+%% LMF
+%% ENS Paris-Saclay
+%% 4, Avenue des Sciences
+%% F-91190 Gif-sur-Yvette
 %% FRANCE
-%% http://www.lsv.ens-cachan.fr/~gastin/
+%% mail: paul.gastin at ens-paris-saclay.fr
+%% http://www.lsv.fr/~gastin/
 %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% A lot of changes has been made since gastex 1.0 and as a result, 
-% these new macros are no longer compatible with the previous ones.
-% To be able to use old pictures, a compatible mode is provided
-% (see \compatiblegastexun at the end of the file). The compatibility
-% is almost 100% and should be sufficient in most cases.
-%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{gastex}[2013/10/01 v3.0]
+\RequirePackage{ifpdf}
+\RequirePackage{xkeyval}
+\RequirePackage{xifthen}
+\RequirePackage{calc}
+\RequirePackage{trig}
+\RequirePackage{environ}
+\RequirePackage{xcolor}
+\RequirePackage{graphicx}
+\newif\ifgastexslide\gastexslidefalse
+\DeclareOptionX{slide}{\global\gastexslidetrue}
+\DeclareOptionX{paper}{\global\gastexslidefalse}
+% 
+\define at boolkey{gastex.sty}[gastex@]{pdflatex}[true]{}
+\PassOptionsToPackage{final}{pst-pdf}
+% 
+\newif\ifgastex at autopstpdf\gastex at autopstpdffalse
+\newif\ifgastex at mdfive\gastex at mdfivefalse
+\define at choicekey*{gastex.sty}{recompilepics}[\g at val\g at nr]{auto,true,false}[auto]{%
+  \ifcase\g at nr\relax
+% During the latex+dvips+ps2pdf run, the md5 computations and checks should not 
+% be executed. Hence, we check whether pdftex is running in pdf mode.
+    \ifpdf\gastex at mdfivetrue\else\gastex at mdfivefalse\fi
+    \gastex at autopstpdftrue
+    \PassOptionsToPackage{off}{auto-pst-pdf}
+  \or
+    \ifpdf\gastex at mdfivetrue\else\gastex at mdfivefalse\fi
+    \gastex at autopstpdftrue
+    \PassOptionsToPackage{on}{auto-pst-pdf}
+  \or
+    \gastex at mdfivefalse
+    \gastex at autopstpdffalse
+    \PassOptionsToPackage{off}{auto-pst-pdf}
+  \fi
+}
+\ExecuteOptionsX{recompilepics=false} % if not set when loading gastex.sty, this option is off
+% 
+\define at choicekey*{gastex.sty}{pst-pdf}[\g at val\g at nr]{md5,auto,final,draft,off}[md5]{%
+  \PackageWarning{gastex}{Option pst-pdf is depreciated. Use options pdflatex 
+  and recompilepics instead.}{}
+}
+% \ExecuteOptionsX{pst-pdf=off} % if not set when loading gastex.sty, this option is off
+% 
+\DeclareOptionX*{\PassOptionsToPackage{\CurrentOption}{auto-pst-pdf}}
+\ProcessOptionsX
+% if it exists, the md5 file should be read now to set the option of 
+% auto-pst-pdf to on if some pictures have changed
+\def\g at hashfilename{\jobname-md5.txt}%
+\def\g at extract@mdfive:#1:#2:#3:{\expandafter\edef\csname g at oldmdfive@#2\endcsname{#3}}%
+\def\g at changed@mdfive!#1!{\PassOptionsToPackage{on}{auto-pst-pdf}}%
+\def\g at read@mdfive#1{\@ifnextchar:{\g at extract@mdfive}{\g at changed@mdfive}#1}%
+\def\g at process@mdfivefile{%
+  \newif\ifnot at eof\not at eoffalse
+  \IfFileExists{\g at hashfilename}{%
+    \openin2 = "\g at hashfilename"%
+    \loop%
+    \read 2 to \g at md%
+    \ifeof 2 \not at eoffalse\else\not at eoftrue\fi%
+    \ifnot at eof%
+    \expandafter\g at read@mdfive\expandafter{\g at md}%
+    \repeat%
+    \closein2}{}}%
+\ifgastex at mdfive\g at process@mdfivefile\fi
+% 
+\ifgastex at pdflatex
+  \ifgastex at autopstpdf
+    \RequirePackage{auto-pst-pdf}
+  \else
+    \RequirePackage{pst-pdf}
+  \fi
+\else
+  \special{header=gastex.pro}
+\fi
+% \input gastex.ps
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % History since version 2.0
 %
+% 3.0
+% Many changes in this release.
+% - Compatibility with pdflatex using auto-pst-pdf.
+% - New gpicture environment and new gusepicture command.
+% - New command to draw an arc of circle or a pie (See ex-gastex.tex)
+%   \drawarc[linecolor=black](0,10,20,0,45)
+%   \drawarc[arcPie=y,linecolor=blue](0,10,20,-50,-15)
+% - New command to draw a snaky line (See ex-gastex.tex)
+%   \drawsnake[linecolor=red,snakeh=.8,snakew=.8](20,15.5)(20,8.5)
+%   \drawsnake[linecolor=red,snakeh=.8,snakew=.8](0,7.5)(0,0.5)
+% 
+% 2.9:
+% - added the parameters loopwidth and loopheight to be able to set 
+% independently the width and height of loops. loopdiam still exists and set 
+% both loopwidth and loopheight to the same value.
+% - added the example "ex-gastex-pdflatex.tex" which contains instructions how 
+% to use gastex directly with pdflatex using the package auto-pst-pdf
+%
 % 2.8:
 % - packaged for CTAN
 % 
@@ -131,6 +208,14 @@
 % 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
+% A lot of changes has been made since gastex 1.0 and as a result, 
+% these new macros are no longer compatible with the previous ones.
+% To be able to use old pictures, a compatible mode is provided
+% (see \compatiblegastexun at the end of the file). The compatibility
+% is almost 100% and should be sufficient in most cases.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
 % Known problems and (hopefully) solutions.
 % 
 % 21/10/99: Frank Goertzen (frank.goertzen at unibw-muenchen.de) has 
@@ -279,8 +364,12 @@
 %   With a positive/negative value the curved edge is on the left/right
 %   of the line joining the two nodes.
 %   
+% loopwidth=number
+%   width in \unitlength of (vertical) loops
+% loopheight=number
+%   height in \unitlength of (vertical) loops
 % loopdiam=number
-%   diameters in \unitlength of loops
+%   width and height in \unitlength of (vertical) loops
 % loopangle=number
 %   direction in degree of loops
 % loopCW=y or n
@@ -375,25 +464,20 @@
 %   angle in degrees with respect to the x axis of the first vertex 
 %   of the regular polygon.
 % 
-\def\gasset#1{\gas at set#1,&}%
-\def\gas at set#1=#2,{\ignorespaces%
-  \@ifundefined{gasset@#1}
-    {\PackageWarning{gastex}{Parameter #1 undefined}{}}
-    {\csname gasset@#1\endcsname{#2}}%
-  \@ifnextchar&{\gas at gobble}{\gas at set}}
+\def\gasset#1{\setkeys*[]{gastex}{#1}}%
 
-\def\gasset at Nw#1{%
+\define at key[]{gastex}{Nw}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\N at w{\thecnt at a}}%
-\def\gasset at Nh#1{%
+\define at key[]{gastex}{Nh}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\N at h{\thecnt at a}}%
-\def\gasset at Nmr#1{%
+\define at key[]{gastex}{Nmr}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\N at mr{\thecnt at a}}%
 
 \newif\if at wadjust \newif\if at hadjust \newif\if at nadjust
-\def\gasset at Nadjust#1{%
+\define at key[]{gastex}{Nadjust}{%
   \@wadjustfalse \@hadjustfalse \gasset@@Nadjust #1&}
 \def\gasset@@Nadjust#1{%
   \@ifundefined{if@#1adjust}
@@ -400,32 +484,36 @@
     {\PackageWarning{gastex}{Node adjust #1 undefined}{}}
     {\csname @#1adjusttrue\endcsname}%
   \@ifnextchar&{\gas at gobble}{\gasset@@Nadjust}}
-\def\gasset at Nadjustdist#1{%
+\define at key[]{gastex}{Nadjustdist}{%
   \setcounter{cnt at a}{2*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\N at adjustdist{\thecnt at a}}%
 
-\newif\if at frame \newif\if at fill \newif\if at ExtNL
+\newif\if at frame \newif\if at fill \newif\if at ExtNL \newif\if at arcPie
 \def\flag at y{\relax}\def\flag at n{\relax}
-\def\gasset at Nframe#1{%
+\define at key[]{gastex}{Nframe}{%
   \@ifundefined{flag@#1}
   {\PackageWarning{gastex}{Nframe value should be y or n}{}}
   {\if#1y \@frametrue \else \@framefalse \fi}}
-\def\gasset at Nfill#1{%
+\define at key[]{gastex}{Nfill}{%
   \@ifundefined{flag@#1}
   {\PackageWarning{gastex}{Nfill value should be y or n}{}}
   {\if#1y \@filltrue \else \@fillfalse \fi}}
-\def\gasset at ExtNL#1{%
+\define at key[]{gastex}{ExtNL}{%
   \@ifundefined{flag@#1}
   {\PackageWarning{gastex}{ExtNL value should be y or n}{}}
   {\if#1y \@ExtNLtrue \else \@ExtNLfalse \fi}}
+\define at key[]{gastex}{arcPie}{%
+  \@ifundefined{flag@#1}
+  {\PackageWarning{gastex}{arcPie value should be y or n}{}}
+  {\if#1y \@arcPietrue \else \@arcPiefalse \fi}}
 
-\def\gasset at NLangle#1{\edef\NL at angle{#1}}%
-\def\gasset at NLdist#1{%
+\define at key[]{gastex}{NLangle}{\edef\NL at angle{#1}}%
+\define at key[]{gastex}{NLdist}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\NL at dist{\thecnt at a}}%
 
 \newif\if at imark \newif\if at fmark \newif\if at rmark \newif\if at nmark
-\def\gasset at Nmarks#1{%
+\define at key[]{gastex}{Nmarks}{%
   \@imarkfalse \@fmarkfalse \@rmarkfalse \gasset@@Nmarks #1&}
 \def\gasset@@Nmarks#1{%
   \@ifundefined{if@#1mark}
@@ -433,79 +521,86 @@
     {\csname @#1marktrue\endcsname}%
   \@ifnextchar&{\gas at gobble}{\gasset@@Nmarks}}
 
-\def\gasset at ilength#1{%
+\define at key[]{gastex}{ilength}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\i at length{\thecnt at a}}%
-\def\gasset at iangle#1{\edef\i at angle{#1}}%
-\def\gasset at flength#1{%
+\define at key[]{gastex}{iangle}{\edef\i at angle{#1}}%
+\define at key[]{gastex}{flength}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\f at length{\thecnt at a}}%
-\def\gasset at fangle#1{\edef\f at angle{#1}}%
-\def\gasset at rdist#1{%
+\define at key[]{gastex}{fangle}{\edef\f at angle{#1}}%
+\define at key[]{gastex}{rdist}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\rep at dist{\thecnt at a}}%
 
-\def\gasset at sxo#1{%
+\define at key[]{gastex}{sxo}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\E at sxo{\thecnt at a}}%
-\def\gasset at syo#1{%
+\define at key[]{gastex}{syo}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\E at syo{\thecnt at a}}%
-\def\gasset at exo#1{%
+\define at key[]{gastex}{exo}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\E at exo{\thecnt at a}}%
-\def\gasset at eyo#1{%
+\define at key[]{gastex}{eyo}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\E at eyo{\thecnt at a}}%
 
-\def\gasset at curvedepth#1{%
+\define at key[]{gastex}{curvedepth}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\curve at depth{\thecnt at a}}%
 
-\def\gasset at loopdiam#1{%
+\define at key[]{gastex}{loopwidth}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
-  \edef\loop at diam{\thecnt at a}}%
-\def\gasset at loopangle#1{\edef\loop at angle{#1}}%
+  \edef\loop at width{\thecnt at a}}%
+\define at key[]{gastex}{loopheight}{%
+  \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
+  \edef\loop at height{\thecnt at a}}%
+\define at key[]{gastex}{loopdiam}{%
+  \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
+  \edef\loop at width{\thecnt at a}%
+  \edef\loop at height{\thecnt at a}}%
+\define at key[]{gastex}{loopangle}{\edef\loop at angle{#1}}%
 \newif\if at loopCW
-\def\gasset at loopCW#1{%
+\define at key[]{gastex}{loopCW}{%
   \@ifundefined{flag@#1}
   {\PackageWarning{gastex}{loopCW value should be y or n}{}}
   {\if#1y \@loopCWtrue \else \@loopCWfalse \fi}}
 
-\def\gasset at AHnb#1{\edef\AH at nb{#1\space}}%
-\def\gasset at AHdist#1{%
+\define at key[]{gastex}{AHnb}{\edef\AH at nb{#1\space}}%
+\define at key[]{gastex}{AHdist}{%
   \dim at x=#1\unitlength \edef\AH at d{\strip at PT\dim at x}}%
-\def\gasset at AHangle#1{\edef\AH at angle{#1\space}}%
-\def\gasset at AHLength#1{%
+\define at key[]{gastex}{AHangle}{\edef\AH at angle{#1\space}}%
+\define at key[]{gastex}{AHLength}{%
   \dim at x=#1\unitlength \edef\AH at L{\strip at PT\dim at x}}%
-\def\gasset at AHlength#1{%
+\define at key[]{gastex}{AHlength}{%
   \dim at x=#1\unitlength \edef\AH at l{\strip at PT\dim at x}}%
 
-\def\gasset at ATnb#1{\edef\AT at nb{#1\space}}%
-\def\gasset at ATdist#1{%
+\define at key[]{gastex}{ATnb}{\edef\AT at nb{#1\space}}%
+\define at key[]{gastex}{ATdist}{%
   \dim at x=#1\unitlength \edef\AT at d{\strip at PT\dim at x}}%
-\def\gasset at ATangle#1{\edef\AT at angle{#1\space}}%
-\def\gasset at ATLength#1{%
+\define at key[]{gastex}{ATangle}{\edef\AT at angle{#1\space}}%
+\define at key[]{gastex}{ATLength}{%
   \dim at x=#1\unitlength \edef\AT at L{\strip at PT\dim at x}}%
-\def\gasset at ATlength#1{%
+\define at key[]{gastex}{ATlength}{%
   \dim at x=#1\unitlength \edef\AT at l{\strip at PT\dim at x}}%
 
 \def\ELside at l{\relax}\def\ELside at r{\relax}
-\def\gasset at ELside#1{%
+\define at key[]{gastex}{ELside}{%
   \@ifundefined{ELside@#1}
   {\PackageWarning{gastex}{ELside value should be l or r}{}}
   {\edef\EL at s{#1}}}%
-\def\gasset at ELpos#1{
+\define at key[]{gastex}{ELpos}{
   \ifnum#1>100
     \PackageWarning{gastex}{ELpos value should be between 0 and 100}{}
   \else\ifnum#1<0
     \PackageWarning{gastex}{ELpos value should be between 0 and 100}{}
   \else\edef\EL at p{#1}\fi\fi}%
-\def\gasset at ELdist#1{%
+\define at key[]{gastex}{ELdist}{%
   \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
   \edef\EL at dist{\thecnt at a}}%
 \newif\if at ELdistC
-\def\gasset at ELdistC#1{%
+\define at key[]{gastex}{ELdistC}{%
   \@ifundefined{flag@#1}
   {\PackageWarning{gastex}{ELdistC value should be y or n}{}}
   {\if#1y \@ELdistCtrue \else \@ELdistCfalse \fi}}
@@ -520,8 +615,8 @@
 \def\gas at recode#1,{\edef\gas at tmp@col{\gas at tmp@col #1 }%
   \@ifnextchar&{\gas at gobble}{\gas at recode}}
 
-\def\gasset at linegray#1{\edef\line at color{#1 setgray\space}}%
-\def\gasset at linecolor#1{\@ifundefined{extractcolorspec}%
+\define at key[]{gastex}{linegray}{\edef\line at color{#1 setgray\space}}%
+\define at key[]{gastex}{linecolor}{\@ifundefined{extractcolorspec}%
   {\@ifundefined{\string\color @#1}
     {\PackageWarning{gastex}{Color #1 undefined}{}}
     {\edef\line at color{#1\space}}}%
@@ -529,8 +624,8 @@
    \expandafter\gas at color\gas at tmp@color%
    \edef\line at color{\gas at tmp@col\space}}}%
 
-\def\gasset at fillgray#1{\@filltrue\edef\fill at color{#1 setgray\space}}%
-\def\gasset at fillcolor#1{\@ifundefined{extractcolorspec}%
+\define at key[]{gastex}{fillgray}{\@filltrue\edef\fill at color{#1 setgray\space}}%
+\define at key[]{gastex}{fillcolor}{\@ifundefined{extractcolorspec}%
   {\@ifundefined{\string\color @#1}
     {\PackageWarning{gastex}{Color #1 undefined}{}}
     {\@filltrue\edef\fill at color{#1\space}}}%
@@ -538,9 +633,9 @@
    \expandafter\gas at color\gas at tmp@color%
    \@filltrue\edef\fill at color{\gas at tmp@col\space}}}%
 
-\def\gasset at linewidth#1{%
+\define at key[]{gastex}{linewidth}{%
   \dim at x=#1\unitlength \edef\line at width{\strip at PT\dim at x}}%
-\def\gasset at dash#1{\gasset@@dash #1}%
+\define at key[]{gastex}{dash}{\gasset@@dash #1}%
 \def\gasset@@dash#1#2{%
   \def\gas at dash{[}%
   \gas at convert 0 #1 &
@@ -551,15 +646,23 @@
   \ifdim\dim at x=0pt\else\edef\gas at dash{\gas at dash\strip at PT\dim at x}\fi%
   \@ifnextchar&{\gas at gobble}{\gas at convert}}
 
-\def\gasset at arcradius#1{%
+\define at key[]{gastex}{arcradius}{%
   \dim at x=#1\unitlength \edef\arc at radius{\strip at PT\dim at x}}%
-\def\gasset at polyangle#1{\edef\poly at angle{#1}}%
+\define at key[]{gastex}{polyangle}{\edef\poly at angle{#1}}%
 
+\define at key[]{gastex}{snakew}{%
+  \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
+  \edef\snake at w{\thecnt at a}}%
+  
+\define at key[]{gastex}{snakeh}{%
+  \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}}
+  \edef\snake at h{\thecnt at a}}%
+
 %-----------------------------------------------------------------------
 % Default settings
 \unitlength=1mm
 \gasset{Nw=8,Nh=8,Nmr=4} % circle
-\gasset{Nframe=y}
+\gasset{Nframe=y,arcPie=n}
 \gasset{fillgray=0,Nfill=n} % Not filled but black if filled
 \gasset{ExtNL=n,NLangle=90,NLdist=0}
 \gasset{iangle=180,ilength=5}
@@ -577,6 +680,7 @@
 \gasset{linegray=0} % black lines
 \gasset{linewidth=0.14,dash={}0} % continuous path
 \gasset{arcradius=0,polyangle=0} % sharp angles
+\gasset{snakew=2,snakeh=1} % width and height of snake waves
 
 % Settings for slides
 \ifgastexslide
@@ -585,6 +689,84 @@
   \gasset{ATdist=2.1,ATLength=2.25,ATlength=2.1} 
 \fi
 
+%%%%%%%%%%% NEW FOR MD5 %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\if at picthavechanged\@picthavechangedfalse
+\def\g at cstocheckmdfive#1{\expandafter\def\csname cs@#1\endcsname{\relax}}%
+\def\g at check@mdfive#1#2{% #1 is the pict number, #2 is the new md5
+  \@ifundefined{g at oldmdfive@#1}{\global\@picthavechangedtrue%
+    \immediate\write 2 {!pict #1 has changed!}}{%
+%       This is my way of testing whether the old and new md5 are equal
+    \g at cstocheckmdfive{\csname g at oldmdfive@#1\endcsname}%
+    \@ifundefined{cs@#2}{\global\@picthavechangedtrue%
+      \immediate\write 2 {!pict #1 has changed!}}{}}%
+}
+\def\g at mdfivemsg{\if at picthavechanged%
+  \PackageWarning{gastex}{Pictures have changed. Compile once more}%
+  \fi}
+\ifgastex at mdfive
+  \AtBeginDocument{\immediate\openout2 = "\g at hashfilename"}%
+  \AtEndDocument{\immediate\closeout2 \g at mdfivemsg}%
+\fi
+%%%%%%%%%%% NEW FOR AUTO-PST-PDF %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcounter{g at cnt@pict}\setcounter{g at cnt@pict}{0}%
+\define at cmdkeys[]{gastex}{name}
+\define at boolkey[]{gastex}{frame}[true]{\ifgastex at pdflatex\setkeys*{Gin}{frame=#1}\fi}
+% 
+\long\def\g at normalpicture(#1)(#2)#3&g at stex&{%
+  \begin{picture}(#1)(#2)\nullfont%
+  \ifgastex at frame\put(#2){{\unitlength=1mm\gasset{linewidth=0.05}}\drawrect[Nfill=n](0,0,#1)}\fi
+  #3
+  \end{picture}}%
+% 
+\long\def\g at pdfpicture(#1,#2)(#3,#4)#5&g at stex&{{%
+  \begin{postscript}\special{header=gastex.pro}%
+  \begin{picture}(#1,#2)(#3,#4)\nullfont%
+    #5
+  \end{picture}%
+  \end{postscript}%
+}}%
+% 
+\long\def\g at picture#1{\@ifnextchar({\g@@picture}{\g@@picture(10,10)}#1&g at stex&}%
+% 
+\long\def\g@@picture(#1)#2&g at stex&{%
+  \ifgastex at pdflatex%
+    \@ifnextchar({\g at pdfpicture(#1)}{\g at pdfpicture(#1)(0,0)}#2&g at stex&%
+  \else%
+    \@ifnextchar({\g at normalpicture(#1)}{\g at normalpicture(#1)(0,0)}#2&g at stex&%
+  \fi%
+}%
+% 
+\NewEnviron{gpicture}[1][]{{%
+  \gasset{#1}%
+%   \let\g at opt@Gin=\XKV at rm%
+  \setrmkeys*{Gin}%
+  \expandafter\g at picture\expandafter{\BODY}%
+  \refstepcounter{g at cnt@pict}%
+  \ifgastex at mdfive%
+    \xdef\g at lastmdfive{\pdfmdfivesum{\meaning\BODY}}%
+    \gsavepicture{\g at lastmdfive}%
+    \immediate\write 2 {:md5 of pict:\theg at cnt@pict:\g at lastmdfive:}%
+    \g at check@mdfive{\theg at cnt@pict}{\g at lastmdfive}%
+  \fi%
+  \@ifundefined{cmdgastex at name}{}{\gsavepicture{\cmdgastex at name}}%
+%     \ifGin at ignore\else\gusepicture[\g at opt@Gin]{\g at lastmdfive}\fi%
+}} % [\gusepicture[\g at opt@Gin]{\g at lastmdfive}\ignorespacesafterend]
+% 
+% I define alternate versions of \savepicture and \usepicture since the ones 
+% from pst-pdf do not work properly (at least not as I expect).
+\def\gsavepicture#1{\expandafter\xdef\csname ppf@@@#1\endcsname{\theg at cnt@pict}}%
+% 
+\newcommand\gusepicture[2][]{%
+  \ifgastex at pdflatex%
+    \@ifundefined{ppf@@@#2}{\usepicture[#1]{#2}}{%
+    \usepicture[#1]{\csname ppf@@@#2\endcsname}}%
+  \else%
+    \PackageWarning{gastex}{gusepicture is not available when pdflatex option of gastex.sty is not set (to true)}\relax%
+  \fi}
+% \tracingonline=1
+% \tracingmacros=1
+% \tracingcommands=1
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% Nodes
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -607,7 +789,7 @@
 % and the parameters Nframe=n,Nfill=n
 \def\rpnode#1(#2)(#3)(#4)#5{{%
   \@ifnextchar[{\process at rpnodeopt}{\rp at node}#1(#2)(#3)(#4){#5}}}
-\def\process at rpnodeopt[#1]{\gas at set#1,&\rp at node}%
+\def\process at rpnodeopt[#1]{\gasset{#1}\rp at node}%
 \def\rp at node(#1)(#2,#3)(#4,#5)#6{{%
 % The value -1 assigned to node@#1 at w characterizes polygonal nodes
   \global\expandafter\edef\csname node@#1 at w\endcsname{-1}%
@@ -658,7 +840,7 @@
 % and the parameters Nframe=n,Nfill=n
 \def\node#1(#2)(#3,#4)#5{{%
   \@ifnextchar[{\process at nodeopt}{\i at node}#1(#2)(#3,#4){#5}}}
-\def\process at nodeopt[#1]{\gas at set#1,&\i at node}%
+\def\process at nodeopt[#1]{\gasset{#1}\i at node}%
 \def\i at node(#1)(#2,#3)#4{%
   \let at node(#1)(#2,#3){#4}\draw at node(#1){#4}}
 
@@ -744,7 +926,7 @@
 %   [parameter=value,...]
 \def\imark#1(#2){{%
   \@ifnextchar[{\process at imarkopt}{\i at mark}#1(#2)}}
-\def\process at imarkopt[#1]{\gas at set#1,&\i at mark}%
+\def\process at imarkopt[#1]{\gasset{#1}\i at mark}%
 \def\i at mark(#1){{%
   \dim at x=\csname node@#1 at x\endcsname\d at my@unit \edef\ps at par{\strip at PT\dim at x}%
   \dim at x=\csname node@#1 at y\endcsname\d at my@unit \edef\ps at par{\ps at par \strip at PT\dim at x}%
@@ -770,7 +952,7 @@
 %   [parameter=value,...]
 \def\fmark#1(#2){{%
   \@ifnextchar[{\process at fmarkopt}{\f at mark}#1(#2)}}
-\def\process at fmarkopt[#1]{\gas at set#1,&\f at mark}%
+\def\process at fmarkopt[#1]{\gasset{#1}\f at mark}%
 \def\f at mark(#1){{%
   \dim at x=\csname node@#1 at x\endcsname\d at my@unit \edef\ps at par{\strip at PT\dim at x}%
   \dim at x=\csname node@#1 at y\endcsname\d at my@unit \edef\ps at par{\ps at par \strip at PT\dim at x}%
@@ -796,7 +978,7 @@
 %   [parameter=value,...]
 \def\rmark#1(#2){{%
   \@ifnextchar[{\process at rmarkopt}{\r at mark}#1(#2)}}
-\def\process at rmarkopt[#1]{\gas at set#1,&\r at mark}%
+\def\process at rmarkopt[#1]{\gasset{#1}\r at mark}%
 \def\r at mark(#1){{%
   \ifnum\csname node@#1 at w\endcsname=-1 % then it's a polygonal node
     \dim at x=\csname node@#1 at x\endcsname\d at my@unit 
@@ -847,7 +1029,7 @@
 \newif\if at cosneg \newif\if at sinneg
 \def\nodelabel#1(#2)#3{{%
   \@ifnextchar[{\process at nodelabelopt}{\node at label}#1(#2){#3}}}
-\def\process at nodelabelopt[#1]{\gas at set#1,&\node at label}%
+\def\process at nodelabelopt[#1]{\gasset{#1}\node at label}%
 \def\node at label(#1)#2{{%
   \unitlength=\d at my@unit
   \edef\cs at x{\csname node@#1 at x\endcsname}%
@@ -950,7 +1132,7 @@
 %   [parameter=value,...]
 \def\drawedge#1(#2)#3{{%
   \@ifnextchar[{\process at edgeopt}{\draw at edge}#1(#2){#3}}}
-\def\process at edgeopt[#1]{\gas at set#1,&\draw at edge}%
+\def\process at edgeopt[#1]{\gasset{#1}\draw at edge}%
 \def\draw at edge(#1,#2)#3{%
 % Control points of the cubic Bezier curve
   \setcounter{cnt at a}{\csname node@#1 at x\endcsname + \E at sxo}%
@@ -998,7 +1180,7 @@
 %   [parameter=value,...]
 \def\drawqbedge#1(#2)#3{{%
   \@ifnextchar[{\process at qbedgeopt}{\draw at qbedge}#1(#2){#3}}}
-\def\process at qbedgeopt[#1]{\gas at set#1,&\draw at qbedge}%
+\def\process at qbedgeopt[#1]{\gasset{#1}\draw at qbedge}%
 \def\draw at qbedge(#1,#2,#3,#4)#5{%
 % Control points of the cubic Bezier curve
   \setcounter{cnt at a}{\csname node@#1 at x\endcsname + \E at sxo}%
@@ -1038,7 +1220,7 @@
 %   [parameter=value,...]
 \def\drawqbpedge#1(#2)#3{{%
   \@ifnextchar[{\process at qbpedgeopt}{\draw at qbpedge}#1(#2){#3}}}
-\def\process at qbpedgeopt[#1]{\gas at set#1,&\draw at qbpedge}%
+\def\process at qbpedgeopt[#1]{\gasset{#1}\draw at qbpedge}%
 \def\draw at qbpedge(#1,#2,#3,#4)#5{%
 % Control points of the cubic Bezier curve
   \setcounter{cnt at a}{\csname node@#1 at x\endcsname + \E at sxo}%
@@ -1095,7 +1277,7 @@
 %   [parameter=value,...]
 \def\drawbpedge#1(#2)#3{{%
   \@ifnextchar[{\process at bpedgeopt}{\draw at bpedge}#1(#2){#3}}}
-\def\process at bpedgeopt[#1]{\gas at set#1,&\draw at bpedge}%
+\def\process at bpedgeopt[#1]{\gasset{#1}\draw at bpedge}%
 \def\draw at bpedge(#1,#2,#3,#4,#5,#6)#7{%
 % Control points of the cubic Bezier curve
   \setcounter{cnt at a}{\csname node@#1 at x\endcsname + \E at sxo}%
@@ -1146,7 +1328,7 @@
 %   [parameter=value,...]
 \def\drawbcedge#1(#2)#3{{%
   \@ifnextchar[{\process at bcedgeopt}{\draw at bcedge}#1(#2){#3}}}
-\def\process at bcedgeopt[#1]{\gas at set#1,&\draw at bcedge}%
+\def\process at bcedgeopt[#1]{\gasset{#1}\draw at bcedge}%
 \def\draw at bcedge(#1,#2,#3,#4,#5,#6)#7{%
 % Control points of the cubic Bezier curve
   \setcounter{cnt at a}{\csname node@#1 at x\endcsname + \E at sxo}%
@@ -1183,7 +1365,7 @@
 %   [parameter=value,...]
 \def\drawloop#1(#2)#3{{%
   \@ifnextchar[{\process at loopopt}{\draw at loop}#1(#2){#3}}}
-\def\process at loopopt[#1]{\gas at set#1,&\draw at loop}%
+\def\process at loopopt[#1]{\gasset{#1}\draw at loop}%
 \def\draw at loop(#1)#2{%
 % Control points of the cubic Bezier curve
   \unitlength=\d at my@unit
@@ -1194,8 +1376,8 @@
   \edef\cs at xd{\cs at xa}%
   \edef\cs at yd{\cs at ya}%
   \node at diam(#1,\loop at angle)
-  \setcounter{cnt at a}{2*(\cs at nd+2*\loop at diam)/3}
-  \setcounter{cnt at b}{\loop at diam*1732/1000} % approx of sqrt(3)
+  \setcounter{cnt at a}{2*(\cs at nd+2*\loop at height)/3}
+  \setcounter{cnt at b}{\loop at width*1732/1000} % approx of sqrt(3)
 % Rotation
   \setcounter{cnt at c}
     {\cs at xa+\thecnt at a*\real{\cs at cos}-\thecnt at b*\real{\cs at sin}}
@@ -1247,7 +1429,7 @@
 \def\drawline#1(#2){\begingroup%
   \setcounter{cnt at a}{0} \edef\ps at param{}%
   \@ifnextchar[{\process at drawlineopt}{\draw at line}#1(#2)}
-\def\process at drawlineopt[#1]{\gas at set#1,&\draw at line}%
+\def\process at drawlineopt[#1]{\gasset{#1}\draw at line}%
 \def\draw at line(#1,#2){%
   \setcounter{cnt at a}{\thecnt at a+1}
   \dim at x=#1\unitlength \edef\ps at param{\ps at param \strip at PT\dim at x}%
@@ -1256,12 +1438,122 @@
     \put(0,0){\special{" \gas at initps \line at color
       \gas at ATparam \gas at AHparam \ps at param \thecnt at a\space \arc at radius !pslines}}
     \endgroup
+  }
+}
+
+%-----------------------------------------------------------------------
+% Draw a line with snake waves between two points.
+% width and height of the waves are controlled by parameters snakeh and snakeh
+% The line may have arrowhead(s), arrowtail(s), color, ... 
+% depending of the current settings
+% 
+%   \drawsnake(x1,y1)(x2,y2)
+%   \drawsnake[parameter=value,...](x1,y1)(x2,y2)
+%  
+% Required arguments in \unitlengh: 
+%   (x1,y1)(x2,y2) : coordinates of the points.
+% Optional argument:
+%   [parameter=value,...]
+\def\drawsnake#1(#2)(#3){{%
+  \@ifnextchar[{\process at drawsnakeopt}{\draw at snake}#1(#2)(#3)}}
+\def\process at drawsnakeopt[#1]{\gasset{#1}\draw at snake}%
+\def\draw at snake(#1,#2)(#3,#4){%
+  \setcounter{cnt at a}{1*\ratio{#1\unitlength}{\d at my@unit}} % x1
+  \edef\snake at x{\thecnt at a}
+  \setcounter{cnt at a}{1*\ratio{#2\unitlength}{\d at my@unit}} % x1
+  \edef\snake at y{\thecnt at a}
+  \setcounter{cnt at a}{1*\ratio{#3\unitlength}{\d at my@unit}} % x1
+  \edef\snake at X{\thecnt at a}
+  \setcounter{cnt at a}{1*\ratio{#4\unitlength}{\d at my@unit}} % x1
+  \edef\snake at Y{\thecnt at a}
+  %   
+  \edef\ps at param{}
+  \dim at x=\snake at x\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \dim at x=\snake at y\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  % 
+  \setcounter{cnt at a}{\snake at X-\snake at x}
+  \edef\snake at A{\thecnt at a}
+  \setcounter{cnt at a}{\snake at Y-\snake at y}
+  \edef\snake at B{\thecnt at a}
+  \setcounter{cnt at a}{\snake at A*\snake at A+\snake at B*\snake at B}
+  \gas at sqrt{\thecnt at a}
+  \edef\snake at L{\the at sqrt}
+  % 
+  \setcounter{cnt@@a}{\snake at w/2}
+  \setcounter{cnt at a}{\snake at x+\snake at A*\thecnt@@a/\snake at L}
+  \setcounter{cnt at b}{\snake at y+\snake at B*\thecnt@@a/\snake at L}
+  \dim at x=\thecnt at a\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \dim at x=\thecnt at b\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \setcounter{cnt@@a}{\thecnt@@a+3*\snake at w/4}
+  \setcounter{cnt@@c}{1}
+  %   
+  \setcounter{cnt at c}{(\snake at L-5*\snake at w/2)/\snake at w} % nb iteration
+  \@whilenum\thecnt at c>0\do{%
+    \setcounter{cnt@@b}{\thecnt@@c*\snake at h}
+    \setcounter{cnt at a}{\snake at x+(\snake at A*\thecnt@@a-\snake at B*\thecnt@@b)/\snake at L}
+    \setcounter{cnt at b}{\snake at y+(\snake at B*\thecnt@@a+\snake at A*\thecnt@@b)/\snake at L}
+    \dim at x=\thecnt at a\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+    \dim at x=\thecnt at b\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+    \setcounter{cnt@@a}{\thecnt@@a+\snake at w}
+    \setcounter{cnt@@c}{-\thecnt@@c}
+    \setcounter{cnt at c}{\thecnt at c-1}
+  }
+  \setcounter{cnt@@a}{\thecnt@@a-\snake at w/4}
+  \setcounter{cnt at a}{\snake at x+\snake at A*\thecnt@@a/\snake at L}
+  \setcounter{cnt at b}{\snake at y+\snake at B*\thecnt@@a/\snake at L}
+  \dim at x=\thecnt at a\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \dim at x=\thecnt at b\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \dim at x=\snake at X\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  \dim at x=\snake at Y\d at my@unit \edef\ps at param{\ps at param \strip at PT\dim at x}%
+  %   
+  \setcounter{cnt at c}{4+(\snake at L-5*\snake at w/2)/\snake at w} % nb iteration
+  \put(0,0){\special{" \gas at initps \line at color 
+    \gas at ATparam \gas at AHparam 
+    \ps at param \thecnt at c\space !pscurve}}
+}
+
+%-----------------------------------------------------------------------
+% Draw an arc of a circle.
+% 
+%   \drawarc(x,y,r,a,b)
+%   \drawarc[parameter=value,...](x,y,r,a,b)
+%  
+% Required arguments: 
+%   x,y : coordinates of the circle center (in \unitlengh).
+%   r : radius of the circle (in \unitlengh).
+%   a : starting angle of the arc (in degree)
+%   b : ending angle of the arc (in degree)
+% Optional argument:
+%   [parameter=value,...]
+\def\drawarc#1(#2){{%
+  \@ifnextchar[{\process at arcopt}{\draw at arc}#1(#2)}}
+\def\process at arcopt[#1]{\gasset{#1}\draw at arc}%
+\def\draw at arc(#1,#2,#3,#4,#5){{%
+  \dim at x=#1\unitlength \edef\ps at x{\strip at PT\dim at x}%
+  \dim at x=#2\unitlength \edef\ps at y{\strip at PT\dim at x}%
+  \dim at x=#3\unitlength \edef\ps at r{\strip at PT\dim at x}%
+  \put(0,0){\special{" \gas at initps 
+    \if at fill \fill at color  
+      newpath
+      \if at arcPie \ps at x \ps at y moveto \fi
+      \ps at x \ps at y \ps at r #4 #5 arc
+      \if at arcPie closepath \fi
+      fill
+    \fi
+    \if at frame \line at color 
+      newpath
+      \if at arcPie \ps at x \ps at y moveto \fi
+      \ps at x \ps at y \ps at r #4 #5 arc
+      \if at arcPie closepath \fi
+      stroke
+    \fi
   }}
+}}
 
 %-----------------------------------------------------------------------
 % Draw a circle.
 % 
-%   \drawcircle(x,y,r)
+%   \drawcircle(x,y,d)
 %   \drawcircle[parameter=value,...](x,y,d)
 %  
 % Required arguments in \unitlengh: 
@@ -1271,7 +1563,7 @@
 %   [parameter=value,...]
 \def\drawcircle#1(#2){{%
   \@ifnextchar[{\process at circleopt}{\draw at circle}#1(#2)}}
-\def\process at circleopt[#1]{\gas at set#1,&\draw at circle}%
+\def\process at circleopt[#1]{\gasset{#1}\draw at circle}%
 \def\draw at circle(#1,#2,#3){{%
   \dim at x=#1\unitlength \edef\ps at x{\strip at PT\dim at x}%
   \dim at x=#2\unitlength \edef\ps at y{\strip at PT\dim at x}%
@@ -1301,7 +1593,7 @@
 %   [parameter=value,...]
 \def\drawrect#1(#2){{%
   \@ifnextchar[{\process at rectopt}{\draw at rect}#1(#2)}}
-\def\process at rectopt[#1]{\gas at set#1,&\draw at rect}%
+\def\process at rectopt[#1]{\gasset{#1}\draw at rect}%
 \def\draw at rect(#1,#2,#3,#4){{%
   \dim at x=#1\unitlength \edef\ps at x{\strip at PT\dim at x}%
   \dim at x=#2\unitlength \edef\ps at y{\strip at PT\dim at x}%
@@ -1333,7 +1625,7 @@
 %   [parameter=value,...]
 \def\drawoval#1(#2){{%
   \@ifnextchar[{\process at ovalopt}{\draw at oval}#1(#2)}}
-\def\process at ovalopt[#1]{\gas at set#1,&\draw at oval}%
+\def\process at ovalopt[#1]{\gasset{#1}\draw at oval}%
 \def\draw at oval(#1,#2,#3,#4,#5){{%
   \dim at x=#1\unitlength \edef\ps at path{\strip at PT\dim at x}%
   \dim at x=#2\unitlength \edef\ps at path{\ps at path \strip at PT\dim at x}%
@@ -1365,7 +1657,7 @@
 \def\drawpolygon#1(#2){\begingroup%
   \setcounter{cnt at a}{0} \edef\ps at param{}%
   \@ifnextchar[{\process at polygonopt}{\draw at polygon}#1(#2)}
-\def\process at polygonopt[#1]{\gas at set#1,&\draw at polygon}%
+\def\process at polygonopt[#1]{\gasset{#1}\draw at polygon}%
 \def\draw at polygon(#1,#2){%
   \setcounter{cnt at a}{\thecnt at a+1}
   \dim at x=#1\unitlength \edef\ps at param{\ps at param \strip at PT\dim at x}%
@@ -1399,7 +1691,7 @@
 %   [parameter=value,...]
 \def\drawrpolygon#1(#2)(#3){\begingroup%
   \@ifnextchar[{\process at rpolygonopt}{\draw at rpolygon}#1(#2)(#3)}
-\def\process at rpolygonopt[#1]{\gas at set#1,&\draw at rpolygon}%
+\def\process at rpolygonopt[#1]{\gasset{#1}\draw at rpolygon}%
 \def\draw at rpolygon(#1,#2)(#3,#4){%
   \dim at x=#1\unitlength \dim at y=#2\unitlength
   \edef\ps at path{\strip at PT\dim at x \strip at PT\dim at y #3\space}%
@@ -1434,7 +1726,7 @@
 \def\drawccurve#1(#2){\begingroup%
   \setcounter{cnt at a}{0} \edef\ps at param{}%
   \@ifnextchar[{\process at drawccurveopt}{\draw at c@curve}#1(#2)}
-\def\process at drawccurveopt[#1]{\gas at set#1,&\draw at c@curve}%
+\def\process at drawccurveopt[#1]{\gasset{#1}\draw at c@curve}%
 \def\draw at c@curve(#1,#2){%
   \setcounter{cnt at a}{\thecnt at a+1}
   \dim at x=#1\unitlength \edef\ps at param{\ps at param \strip at PT\dim at x}%
@@ -1470,7 +1762,7 @@
 \def\drawcurve#1(#2){\begingroup%
   \setcounter{cnt at a}{0} \edef\ps at param{}%
   \@ifnextchar[{\process at drawcurveopt}{\draw at curve}#1(#2)}
-\def\process at drawcurveopt[#1]{\gas at set#1,&\draw at curve}%
+\def\process at drawcurveopt[#1]{\gasset{#1}\draw at curve}%
 \def\draw at curve(#1,#2){%
   \setcounter{cnt at a}{\thecnt at a+1}
   \dim at x=#1\unitlength \edef\ps at param{\ps at param \strip at PT\dim at x}%
@@ -1495,7 +1787,7 @@
 %   [parameter=value,...]
 \def\drawqbezier#1(#2){{%
   \@ifnextchar[{\process at drawqbezieropt}{\draw at q@bezier}#1(#2)}}
-\def\process at drawqbezieropt[#1]{\gas at set#1,&\draw at q@bezier}%
+\def\process at drawqbezieropt[#1]{\gasset{#1}\draw at q@bezier}%
 \def\draw at q@bezier(#1,#2,#3,#4,#5,#6){{%
   \dim at x=#1\unitlength \edef\ps at xa{\strip at PT\dim at x}%
   \dim at x=#2\unitlength \edef\ps at ya{\strip at PT\dim at x}%
@@ -1521,7 +1813,7 @@
 %   [parameter=value,...]
 \def\drawcbezier#1(#2){{%
   \@ifnextchar[{\process at drawcbezieropt}{\draw at c@bezier}#1(#2)}}
-\def\process at drawcbezieropt[#1]{\gas at set#1,&\draw at c@bezier}%
+\def\process at drawcbezieropt[#1]{\gasset{#1}\draw at c@bezier}%
 \def\draw at c@bezier(#1,#2,#3,#4,#5,#6,#7,#8){{%
   \dim at x=#1\unitlength \edef\ps at xa{\strip at PT\dim at x}%
   \dim at x=#2\unitlength \edef\ps at ya{\strip at PT\dim at x}%
@@ -1727,7 +2019,7 @@
   \def\AH at l{\strip at PT\@wholewidth 9 mul 20 cos mul }
   \def\line at width{\strip at PT\@wholewidth}
 %   
-  \def\setstatediam##1{\gasset at Nw{##1}\gasset at Nh{##1}\gasset at Nmr{##1}}
+  \def\setstatediam##1{\gasset{Nw=##1,Nh=##1,Nmr=##1}}
   \def\setvertexdiam{\setstatediam}
   \setstatediam{6}
 %   
@@ -1736,11 +2028,11 @@
     \edef\repeated at diam{\thecnt at a}}%
   \setrepeatedstatediam{5}
 %   
-  \def\setloopdiam{\gasset at loopdiam}%
+  \def\setloopdiam##1{\gasset{loopdiam=##1}}%
   \setloopdiam{6}
 %   
-  \def\settranslabelskip{\gasset at ELdist}%
-  \def\setedgelabelskip{\gasset at ELdist}
+  \def\settranslabelskip##1{\gasset{ELdist=##1}}%
+  \def\setedgelabelskip##1{\gasset{ELdist=##1}}
   \settranslabelskip{1}
 %   
   \def\setprofcurve##1{%
@@ -1769,7 +2061,7 @@
   \def\pcolor{}
   \def\pictcolor##1##2{}
 %   
-  \def\setpsgray##1{\gasset at linegray{##1}\gasset at fillgray{##1}}%
+  \def\setpsgray##1{\gasset{linegray=##1,fillgray=##1}}%
   \setpsgray{0} % black
 %-----------------------------------------------------------------------
 % States
@@ -1901,7 +2193,7 @@
   \def\pcolor{}
   \def\pictcolor##1##2{}
 %   
-  \def\setpsgray##1{\gasset at linegray{##1}\gasset at fillgray{##1}}%
+  \def\setpsgray##1{\gasset{linegray=##1,fillgray=##1}}%
   \setpsgray{0} % black
 % 
   % Redefinition of latex \line(a,b){L}.



More information about the tex-live-commits mailing list.