summaryrefslogtreecommitdiffstats
path: root/Tex/Master/Vaucanson-G.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Tex/Master/Vaucanson-G.tex')
-rw-r--r--Tex/Master/Vaucanson-G.tex946
1 files changed, 946 insertions, 0 deletions
diff --git a/Tex/Master/Vaucanson-G.tex b/Tex/Master/Vaucanson-G.tex
new file mode 100644
index 0000000..e364fc4
--- /dev/null
+++ b/Tex/Master/Vaucanson-G.tex
@@ -0,0 +1,946 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Vaucanson_v4.tex
+%
+% Automata drawer based on Pstricks
+%
+% V 0.2 - 03/05/09
+% modification of StateVar
+% Chg*LabelScale is relative w.r.t Set*LabelScale
+% Chg Vaucanson to Vaucanson-G
+% V 0.3 - 03/09/10
+% VCPref-main is no more required to initialize VC-G
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Commands for geometric constructions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% constants
+\newcommand{\SQRTwo}{0.717}
+\newcommand{\SQRThree}{1.732}
+\newcommand{\GoldMean}{0.618}
+\newcommand{\GoldMeanI}{1.618}
+\newcommand{\SQRGoldMeanI}{1.272}
+\newcommand{\Vaucanson}{\textsc{V$\overline{\text{au}}$C%
+\raisebox{.3ex}{$\underline{\text{an}}$}S$\overline{\text{on}}$-G}\xspace}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Edge label drawing macros
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Separator in compound labels (eg \IOL{input}{output})
+\newcommand{\IOL}[2]{#1\!\mid\! #2}
+%%% Stacked labels
+\newcommand{\StackTwoLabels}[2]{%
+ \renewcommand{\arraystretch}{0.75}%
+ \begin{array}{c}#1\\ #2 \end{array}%
+ \renewcommand{\arraystretch}{1.333}}
+\newcommand{\StackThreeLabels}[3]{%
+ \renewcommand{\arraystretch}{0.75}%
+ \begin{array}{c}#1\\ #2 \\ #3 \end{array}%
+ \renewcommand{\arraystretch}{1.333}}
+%%% Stacked labels with +
+\newcommand{\StackTwoLabelsP}[2]{%
+ \renewcommand{\arraystretch}{0.75}%
+ \begin{array}{c}#1\\ + \\ #2 \end{array}%
+ \renewcommand{\arraystretch}{1.333}}
+\newcommand{\StackThreeLabelsP}[3]{%
+ \renewcommand{\arraystretch}{0.75}%
+ \begin{array}{c}#1\\ + \\ #2 \\ + \\ #3 \end{array}%
+ \renewcommand{\arraystretch}{1.333}}
+%%% Lined up labels (with +)
+\newcommand{\LineTwoLabelsP}[2]{#1 + #2}
+\newcommand{\LineThreeLabelsP}[3]{#1 + #2 + #3}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Scales --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\LargeScale}{0.85}
+\newcommand{\MediumScale}{0.6}
+\newcommand{\SmallScale}{0.5}
+\newcommand{\TinyScale}{0.42}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% State parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Size = StateDiameter
+%%% The preset sizes are given in cm, and not in "psunits".
+%%% This allows to use different scales for the whole figure
+%%% and for the "drawing grid".
+\newlength{\MediumStateDiameter}
+\newlength{\SmallStateDiameter}
+\newlength{\LargeStateDiameter}
+\newlength{\VerySmallStateDiameter}
+\setlength{\MediumStateDiameter}{.9cm}
+\setlength{\SmallStateDiameter}{.6cm}
+\setlength{\LargeStateDiameter}{1.2cm}
+\setlength{\VerySmallStateDiameter}{.3cm}
+%%% Border line = StateLine
+\newlength{\StateLineWidth} % width
+\setlength{\StateLineWidth}{1.8pt}
+\newcommand{\StateLineStyle}{solid} % style
+\newcommand{\StateLineColor}{black}
+\newif\ifStateLineDbl \StateLineDblfalse
+\newcommand{\StateLineDblCoef}{0.6}
+\newcommand{\StateLineDblSep}{0.4}
+\newcommand{\VSStateLineCoef}{.6} % coef. for very small state
+%%% State background and label
+\newcommand{\StateFillStatus}{solid}
+\newcommand{\StateFillColor}{white}
+\newcommand{\StateLabelColor}{black}
+\newcommand{\StateLabelScale}{1.2}
+\newcommand{\SmallStateFillStatus}{solid} %
+\newcommand{\SmallStateFillColor}{white} %
+ % As they have usually no labels it useful
+ % to have a coloring facility for the "SmallState"
+%%% Dimmed states (e.g. for non accessible states)
+\newcommand{\DimStateLineStyle}{solid}
+\newcommand{\DimStateLineCoef}{1} %
+\newcommand{\DimStateLineColor}{gray}
+\newcommand{\DimStateLabelColor}{gray}
+\newcommand{\DimStateFillColor}{white}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Edge drawing parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% line
+\newlength{\EdgeLineWidth}
+\setlength{\EdgeLineWidth}{1pt}
+\newcommand{\EdgeLineStyle}{solid}
+\newif\ifEdgeLineDbl \EdgeLineDblfalse
+%\newcommand{\EdgeLineDblStatus}{false}
+\newcommand{\EdgeLineDblCoef}{0.5}
+\newcommand{\EdgeLineDblSep}{0.6}
+\newcommand{\EdgeLineColor}{black}
+% arrow
+\newlength{\EdgeArrowWidth}\setlength{\EdgeArrowWidth}{5pt}
+\newlength{\EdgeDblArrowWidth}\setlength{\EdgeDblArrowWidth}{5.5pt}
+\newcommand{\EdgeArrowLengthCoef}{1.4}
+\newcommand{\EdgeDblArrowLengthCoef}{1.7}
+\newcommand{\EdgeArrowInset}{0.1}
+\newcommand{\EdgeArrowStyle}{->}
+\newcommand{\EdgeRevArrowStyle}{<-}
+% border
+\newcommand{\EdgeLineBorderCoef}{2}
+\newcommand{\EdgeLineBorderColor}{white}
+% label
+\newcommand{\EdgeLabelColor}{black}
+\newcommand{\EdgeLabelScale}{0.8}
+%%% Dimmed edges
+\newcommand{\DimEdgeLineCoef}{1.2}
+\newcommand{\DimEdgeLineStyle}{solid}
+\newcommand{\DimEdgeLineColor}{gray}
+\newcommand{\DimEdgeLabelColor}{gray}
+%%% Zigzag edges parameter
+\newlength{\ZZSize}
+\setlength{\ZZSize}{.9cm}%\MediumStateDiameter
+\newcommand{\ZZShape}{0.5}
+\newcommand{\ZZLineWidth}{1.7}% coefficient multiplicateur
+\newcommand{\TransLabelZZCoef}{0.6}% coefficient multiplicateur
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Edge geometric parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Edge
+\newlength{\EdgeOffset}
+\setlength{\EdgeOffset}{0pt}
+\newcommand{\ForthBackEdgeOffset}{5}% coef
+% Arc parameters
+\newcommand{\VaucArcAngle}{15}
+\newcommand{\VaucArcCurvature}{0.8}
+\newlength{\VaucArcOffset}
+\setlength{\VaucArcOffset}{1pt}
+% Large Arc parameters
+\newcommand{\VaucLArcAngle}{30}
+\newcommand{\VaucLArcCurvature}{0.8}
+\newlength{\LoopOffset}\setlength{\LoopOffset}{0pt}
+\newlength{\LoopVarOffset}\setlength{\LoopVarOffset}{.7pt}
+\newcommand{\LoopAngle}{30}
+\newcommand{\CLoopAngle}{22}
+\newcommand{\LoopVarAngle}{28}
+% Size of loops (depending on the size of the state)
+\newcommand{\LoopOnMediumState}{7}
+\newcommand{\LoopOnSmallState}{9.6}
+\newcommand{\LoopOnLargeState}{5.8}
+\newcommand{\LoopOnVariableState}{5.1}
+\newcommand{\LoopOnVerySmallState}{15}
+\newcommand{\CLoopOnMediumState}{8}
+\newcommand{\CLoopOnSmallState}{12}
+\newcommand{\CLoopOnLargeState}{6}
+\newcommand{\CLoopOnVariableState}{5.2}
+%\newcommand{\CLoopOnVerySmallState}{14}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Edge label parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% label distance from transition
+\newlength{\TransLabelSep}\setlength{\TransLabelSep}{3.5pt}
+% label position on transitions
+\newcommand{\EdgeLabelPosit}{.45}\newcommand{\EdgeLabelRevPosit}{.55}
+\newcommand{\ArcLabelPosit}{.4}\newcommand{\ArcLabelRevPosit}{.6}
+\newcommand{\LArcLabelPosit}{.4}\newcommand{\LArcLabelRevPosit}{.6}
+\newcommand{\LoopLabelPosit}{.25}\newcommand{\LoopLabelRevPosit}{.75}
+\newcommand{\CLoopLabelPosit}{.25}\newcommand{\CLoopLabelRevPosit}{.75}
+% label position on initial-final arrow
+\newcommand{\InitStateLabelPosit}{.1}\newcommand{\InitStateLabelRevPosit}{.9}
+\newcommand{\FinalStateLabelPosit}{.9}\newcommand{\FinalStateLabelRevPosit}{.1}
+%%% Size of initial and final arrow
+% the size is relative to the diameter
+% and the coefficient varies with the diameter
+\newcommand{\ArrowOnStateCoef}{}
+\newcommand{\ArrowOnMediumState}{1.5}
+\newcommand{\ArrowOnSmallState}{1.7}
+\newcommand{\ArrowOnLargeState}{1.3}
+\newcommand{\ArrowOnVerySmallState}{5}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Shift for aligned labels
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newlength{\VertShiftH} \settoheight{\VertShiftH}{$\{$}
+\newlength{\VertShiftD} \settodepth{\VertShiftD}{$\{$}
+\newlength{\VertShift}
+\setlength{\VertShift}{.5\VertShiftD-.5\VertShiftH}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% flags
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifVCFrame
+\newcommand{\HideFrame}{\VCFramefalse}
+\newcommand{\ShowFrame}{\VCFrametrue}
+\newif\ifVCGrid
+\newcommand{\HideGrid}{\VCGridfalse}
+\newcommand{\ShowGrid}{\VCGridtrue}
+\newif\ifVCRigidLabel
+\newcommand{\RigidLabel}{\VCRigidLabeltrue}
+\newcommand{\SwivelLabel}{\VCRigidLabelfalse}
+\newif\ifVCStateLabelBaseLine
+\newcommand{\AlignedLabel}{\VCStateLabelBaseLinetrue}
+\newcommand{\FloatingLabel}{\VCStateLabelBaseLinefalse}
+\HideFrame
+\HideGrid
+\RigidLabel
+\FloatingLabel
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% style for the frame around the picture
+\psset{unit=1cm}
+\newpsstyle{VaucFrameStyle}{arrows=-,framesep=0pt,%
+ linewidth=0.6pt,linecolor=black,%
+ linestyle=solid,%
+ doubleline=false,%
+ fillcolor=white,fillstyle=none,%
+ cornersize=relative,framearc=0}
+\newcommand{\FrameStyle}{\psset{style=VaucFrameStyle}}
+\newpsstyle{VaucGridStyle}{%
+ gridwidth=0.6pt,griddots=10,subgriddiv=1,%
+ gridlabels=7pt}
+\newcommand{\GridStyle}{\psset{style=VaucGridStyle}}
+% figure, vertically centered by default
+% draw frame according to VCFrame flag
+% Set the shift for aligned label w.r.t the current size of characters
+\newenvironment{VCPicture}[2][.5]%
+ {\settoheight{\VertShiftH}{$\{$}%
+ \settodepth{\VertShiftD}{$\{$}%
+ \setlength{\VertShift}{.5\VertShiftD-.5\VertShiftH}%
+ \begin{pspicture}[#1]#2%
+ \ifVCFrame \FrameStyle \psframe#2\fi%
+ \ifVCGrid \FrameStyle\GridStyle \psgrid#2\fi}%
+ {\RstState\RstEdge%
+ \end{pspicture}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Scaling matters
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% The "sizes" (for states) and the "line widths" are given
+%%% as "lengthes" in a fixed unit (cm or pt), whereas the positions
+%%% are supposed to be given in "psunits".
+%%% This allows to use different scaling parameters
+%%% for the whole figure and for the "drawing grid".
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Scaling commands
+\newcommand{\VCScale}{0.6}% Global scale parameter
+\newcommand{\VCGridScale}{1}% Global scale parameter
+%
+\newcommand{\FixVCScale}[1]{\renewcommand{\VCScale}{#1}}% v4 pour
+% % cause de syntaxe
+\newcommand{\LargePicture}{\FixVCScale{\LargeScale}}
+\newcommand{\MediumPicture}{\FixVCScale{\MediumScale}}
+\newcommand{\SmallPicture}{\FixVCScale{\SmallScale}}
+\newcommand{\TinyPicture}{\FixVCScale{\TinyScale}}
+%%% Grid scale commands
+% \newcommand{\VCGridScale}{}% Grid scale parameter
+%
+\newcommand{\FixVCGridScale}[1]{\renewcommand{\VCGridScale}{#1}}% v4 pour
+% "grid unit"
+%%%%% Typical figure would look like
+% \scalebox{\VCScale}{%
+% \begin{VCPicture}{(x0,y0)(x1,y1)}
+% % figure description
+% \end{VCPicture}%
+% }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Using a special directory for the figure
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\VCDirectory}{}
+\newcommand{\SetVCDirectory}[1]{\renewcommand{\VCDirectory}{#1}}
+% flag for printing the name of the figure file
+\newif\ifVCName
+\newcommand{\HideName}{\VCNamefalse}
+\newcommand{\ShowName}{\VCNametrue}
+\newcommand{\VCDraw}[2][\VCGridScale]{%
+\psset{unit=#1cm}%
+\ifVCName\makebox[0pt][r]{\fbox{{\scriptsize #2}}}\fi%
+\scalebox{\VCScale}{#2}%
+\psset{unit=1cm}}
+\newcommand{\VCCall}[2][\VCGridScale]{%
+\psset{unit=#1cm}%
+\ifVCName\makebox[0pt][r]{\fbox{{\scriptsize #2}}}\fi%
+\scalebox{\VCScale}{\input{\VCDirectory #2}}%
+\psset{unit=1cm}}
+%%% commands
+\newcommand{\VCPut}[3][0]{\rput{#1}#2{#3}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% State internal parameters --- Initial settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newlength{\StateLineWid}
+\setlength{\StateLineWid}{\StateLineWidth}
+\newcommand{\StateLineSty}{\StateLineStyle}
+\newcommand{\StateLineCol}{\StateLineColor}
+%\newcommand{\StateLineDblSta}{\StateLineDblStatus}
+\newcommand{\StateLineDblWid}{\StateLineDblWidth}
+\newcommand{\StateLineDblSp}{\StateLineDblSep}
+\newcommand{\StateFillCol}{\StateFillColor}
+\newcommand{\StateFillSta}{\StateFillStatus}
+\newcommand{\StateLabelSca}{1}
+\newcommand{\StateLabelCol}{\StateLabelColor}
+\newcommand{\StateDimen}{outer}
+\newcommand{\StateDblDimen}{middle}
+%%% Initial-final quality
+\newcommand{\VCIFflag}{2}\newcommand{\VCIFflagtemp}{2}
+\newcommand{\PlainState}%
+ {\renewcommand{\VCIFflag}{0}\renewcommand{\VCIFflagtemp}{0}}
+\newcommand{\FullState}%
+ {\renewcommand{\VCIFflag}{2}\renewcommand{\VCIFflagtemp}{2}}
+\newcommand{\IFState}{\renewcommand{\VCIFflag}{1}}
+\newcommand{\IFXState}{\renewcommand{\VCIFflag}{2}}
+\newcommand{\RstVCIF}{\renewcommand{\VCIFflag}{\VCIFflagtemp}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% State drawing style
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% flag for hiding -- showing states (used for overlays in slides)
+% the trick is to have two different styles and instead of
+% saving\restoring parameters
+\newif\ifVCShowState
+\newcommand{\HideState}{\VCShowStatefalse}
+\newcommand{\ShowState}{\VCShowStatetrue}
+\ShowState % initialisation
+% the only difference between the two styles is the linestyle
+\newpsstyle{VaucStateStyle}{framesep=0pt,%
+ linewidth=\StateLineWid,linecolor=\StateLineCol,%
+ linestyle=\StateLineSty,doubleline=false,%
+ fillcolor=\StateFillCol,fillstyle=\StateFillSta,%
+ border=0pt,dimen=\StateDimen,%
+ cornersize=relative,framearc=1,framesep=0pt}
+\newpsstyle{VaucStateDblStyle}{framesep=0pt,%
+ linewidth=\StateLineDblCoef\StateLineWid,linecolor=\StateLineCol,%
+ linestyle=\StateLineSty,doubleline=true,doublesep=\StateLineDblSep\StateLineWid,%
+ fillcolor=\StateFillCol,fillstyle=\StateFillSta,%
+ border=0pt,dimen=\StateDblDimen,%
+ cornersize=relative,framearc=1,framesep=0pt}
+\newpsstyle{VaucHiddenStateStyle}{framesep=0pt,%
+ linewidth=\StateLineWid,linecolor=\StateLineCol,%
+ linestyle=none,%
+ fillcolor=\StateFillCol,fillstyle=none,%
+ border=0pt,dimen=outer,%
+ cornersize=relative,framearc=1,framesep=0pt}
+\newcommand{\StateStyle}{%
+ \ifVCShowState%
+ \ifStateLineDbl\psset{style=VaucStateDblStyle}\else\psset{style=VaucStateStyle}\fi%
+ \else\psset{style=VaucHiddenStateStyle}\fi}
+\newcommand{\VaucStateRBLabel}[1]{%
+ \textcolor{\StateLabelCol}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{\rput[B]{0}(0,\VertShift){$ #1 $}}}}}%
+\newcommand{\VaucStateLabel}[1]%
+ {\ifVCShowState%
+ \ifVCRigidLabel%
+ \ifVCStateLabelBaseLine%
+ \textcolor{\StateLabelCol}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{\rput[B]{*0}(0,\VertShift){$ #1 $}}}}%
+ \else
+ \textcolor{\StateLabelCol}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{\rput{*0}(0,0){$ #1 $}}}}%
+ \fi
+ \else
+ \textcolor{\StateLabelCol}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{$ #1 $}}}%
+ \fi
+ \else%
+ \textcolor{white}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{$ #1 $}}}%
+ \fi}
+\newcommand{\VCPutStateLabel}[2]%
+ {\rput#1{\scalebox{\StateLabelSca}{$ #2 $}}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% State parameter changing and setting macros
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% line style
+\newcommand{\ChgStateLineStyle}[1]{\renewcommand{\StateLineSty}{#1}}
+\newcommand{\RstStateLineStyle}{\ChgStateLineStyle{\StateLineStyle}}
+\newcommand{\SetStateLineStyle}[1]%
+ {\renewcommand{\StateLineStyle}{#1}\RstStateLineStyle}%
+%%% doubleline status
+\newcommand{\StateLineDouble}{\StateLineDbltrue}
+\newcommand{\StateLineSimple}{\StateLineDblfalse}
+%%% line width
+\newcommand{\ChgStateLineWidth}[1]{\setlength{\StateLineWid}{#1\StateLineWidth}}%
+\newcommand{\RstStateLineWidth}{\ChgStateLineWidth{1}}%
+\newcommand{\SetStateLineWidth}[1]% ATTN the parameter is a length
+ {\setlength{\StateLineWidth}{#1}\RstStateLineWidth}
+%%% line color
+\newcommand{\ChgStateLineColor}[1]{\renewcommand{\StateLineCol}{#1}}
+\newcommand{\RstStateLineColor}{\ChgStateLineColor{\StateLineColor}}
+\newcommand{\SetStateLineColor}[1]%
+ {\renewcommand{\StateLineColor}{#1}\RstStateLineColor}
+%%% background fill status
+\newcommand{\ChgStateFillStatus}[1]{\renewcommand{\StateFillSta}{#1}}
+\newcommand{\RstStateFillStatus}{\ChgStateFillStatus{\StateFillStatus}}
+\newcommand{\SetStateFillStatus}[1]%
+ {\renewcommand{\StateFillStatus}{#1}\RstStateFillStatus}
+%%% backgroud color
+\newcommand{\ChgStateFillColor}[1]{\renewcommand{\StateFillCol}{#1}}
+\newcommand{\RstStateFillColor}{\ChgStateFillColor{\StateFillColor}}
+\newcommand{\SetStateFillColor}[1]%
+ {\renewcommand{\StateFillColor}{#1}\RstStateFillColor}%
+%%% label color
+\newcommand{\ChgStateLabelColor}[1]{\renewcommand{\StateLabelCol}{#1}}
+\newcommand{\RstStateLabelColor}{\ChgStateLabelColor{\StateLabelColor}}
+\newcommand{\SetStateLabelColor}[1]%
+ {\renewcommand{\StateLabelCol}{#1}\RstStateLabelColor}
+%%% label scale
+\newcommand{\ChgStateLabelScale}[1]{\renewcommand{\StateLabelSca}{#1}}
+\newcommand{\RstStateLabelScale}{\ChgStateLabelScale{1}}
+\newcommand{\SetStateLabelScale}[1]%
+ {\renewcommand{\StateLabelScale}{#1}\RstStateLabelScale}
+\newcommand{\FixStateLineDouble}[2]{%
+ \renewcommand{\StateLineDblCoef}{#1}%
+ \renewcommand{\StateLineDblSep}{#2}}
+\newcommand{\FixDimState}[5]{%
+ \renewcommand{\DimStateLineStyle}{#1}%
+ \renewcommand{\DimStateLineCoef}{#3}%
+ \renewcommand{\DimStateLineColor}{#2}%
+ \renewcommand{\DimStateLabelColor}{#4}%
+ \renewcommand{\DimStateFillColor}{#5}}%
+%%% restoring state parameters
+\newcommand{\RstState}{%
+ \RstStateLineStyle\RstStateLineWidth%
+ \RstStateLineColor%
+ \RstStateFillStatus\RstStateFillColor%
+ \RstStateLabelColor\RstStateLabelScale}%
+%%% establishing the dimmed style
+\newcommand{\DimState}{%
+ \ChgStateLineStyle{\DimStateLineStyle}%
+ \ChgStateLineWidth{\DimStateLineCoef}%
+ \ChgStateLineColor{\DimStateLineColor}%
+ \ChgStateFillColor{\DimStateFillColor}%
+ \ChgStateLabelColor{\DimStateLabelColor}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% State drawing
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% preparation
+\newlength{\StateDiam}
+\newlength{\VaucAOS}\newlength{\VaucAOSdiag}
+%%% A flag to remember the current size of state
+\newcommand{\StateSizeFlag}{}
+%
+\newcommand{\SetAOS}{%
+ \setlength{\VaucAOS}{\ArrowOnStateCoef\StateDiam}%
+ \setlength{\VaucAOSdiag}{\SQRTwo\VaucAOS}}
+%% parameter for variable width states
+\newlength{\VariableStateIntDiam}
+\newlength{\VariableStateWidth}
+\newlength{\VariableStateITPos}
+\newcommand{\SetStateIntDiam}{%
+ \setlength{\VariableStateIntDiam}{\StateDiam}%
+ \addtolength{\VariableStateIntDiam}{-2\StateLineWid}%
+}%
+% Loop parameters
+\newcommand{\LoopSize}{}\newcommand{\LoopSi}{}
+\newcommand{\LoopVarSize}{}\newcommand{\LoopVarSi}{}
+\newcommand{\CLoopSize}{}\newcommand{\CLoopSi}{}
+%
+\newcommand{\ChgLoopSize}[1]{\renewcommand{\LoopSi}{#1}}
+\newcommand{\RstLoopSize}{\ChgLoopSize{\LoopSize}}
+\newcommand{\SetLoopSize}[1]%
+ {\renewcommand{\LoopSize}{#1}\RstLoopSize}
+%
+\newcommand{\ChgCLoopSize}[1]{\renewcommand{\CLoopSi}{#1}}
+\newcommand{\RstCLoopSize}{\ChgCLoopSize{\CLoopSize}}
+\newcommand{\SetCLoopSize}[1]%
+ {\renewcommand{\CLoopSize}{#1}\RstCLoopSize}
+%
+\newcommand{\ChgLoopVarSize}[1]{\renewcommand{\LoopVarSi}{#1}}
+\newcommand{\RstLoopVarSize}{\ChgLoopVarSize{\LoopVarSize}}
+\newcommand{\SetLoopVarSize}[1]%
+ {\renewcommand{\LoopVarSize}{#1}\RstLoopVarSize}
+%
+%%% setting state diameter -- internal command
+\newcommand{\SetStateDiam}[4]{%
+ \setlength{\StateDiam}{#1}%
+ \renewcommand{\ArrowOnStateCoef}{#2}%
+ \SetLoopSize{#3}%
+ \SetLoopVarSize{#3}%
+ \SetCLoopSize{#4}%
+ \SetAOS\SetStateIntDiam}
+%%% setting state diameter -- external command
+\newcommand{\FixStateDiameter}[1]% v4 pour cause de syntaxe
+ {\setlength{\StateDiam}{#1}\SetStateIntDiam \SetAOS}
+%%%
+\newcommand{\MediumState}%
+ {\SetStateDiam{\MediumStateDiameter}{\ArrowOnMediumState}%
+ {\LoopOnMediumState}{\CLoopOnMediumState}%
+ \renewcommand{\StateSizeFlag}{0}}
+\newcommand{\SmallState}%
+ {\SetStateDiam{\SmallStateDiameter}{\ArrowOnSmallState}%
+ {\LoopOnSmallState}{\CLoopOnSmallState}%
+ \renewcommand{\StateSizeFlag}{1}}
+\newcommand{\LargeState}%
+ {\SetStateDiam{\LargeStateDiameter}{\ArrowOnLargeState}%
+ {\LoopOnLargeState}{\CLoopOnLargeState}%
+ \renewcommand{\StateSizeFlag}{2}}
+%
+\newcommand{\RstStateSize}%
+ {\ifthenelse{\equal{\StateSizeFlag}{0}}%
+ {\MediumState}%
+ {\ifthenelse{\equal{\StateSizeFlag}{1}}%
+ {\SmallState}{\LargeState}}}%
+%%% Initialization
+\MediumState
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\VaucState}[3][{}]%
+ {\rput#2{%
+ \Cnode[radius=.5\StateDiam](0,0){#3}%
+ \ifVCShowState%
+ \nput[labelsep=-.5\StateDiam]{0}{#3}%
+ {\makebox[0pt]{\VaucStateLabel{#1}}}%
+ \fi
+ \ifthenelse{\equal{\VCIFflag}{0}}{}{%
+ \pnode(-\VaucAOS,0){#3w}\pnode(\VaucAOS,0){#3e}%
+ \pnode(0,\VaucAOS){#3n}\pnode(0,-\VaucAOS){#3s}%
+ \ifthenelse{\equal{\VCIFflag}{1}}{}{%
+ \pnode(-\VaucAOSdiag,\VaucAOSdiag){#3nw}%
+ \pnode(\VaucAOSdiag,\VaucAOSdiag){#3ne}%
+ \pnode(-\VaucAOSdiag,-\VaucAOSdiag){#3sw}%
+ \pnode(\VaucAOSdiag,-\VaucAOSdiag){#3se}%
+ }%
+ }%
+ }%
+}
+%
+\newcommand{\State}[3][{}]{\StateStyle\VaucState[#1]{#2}{#3}}
+%
+\newcommand{\FinalState}[3][{}]%
+ {\psset{style=VaucStateDblStyle}\VaucState[#1]{#2}{#3}}
+%%% ecological commands
+\newcommand{\StateIF}[3][{}]{\IFState\State[#1]{#2}{#3}\RstVCIF}%
+\newcommand{\StateIFX}[3][{}]{\IFXState\State[#1]{#2}{#3}\RstVCIF}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Very Small State
+\newcommand{\VSState}[2]%
+ {\renewcommand{\ArrowOnStateCoef}{\ArrowOnVerySmallState}%
+ \FixStateDiameter{\VerySmallStateDiameter}%
+ \ChgStateLineWidth{\VSStateLineCoef}%
+ \State{#1}{#2}%
+ \RstStateLineWidth\RstStateSize}% mod 020201
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% white brace, of no width, used to place the label vertically
+%\newlength{\BraceLength}
+\newcommand{\WB}{%
+ \textcolor{white}{\{\!\!\!}}%
+\newcommand{\HS}{}
+\newlength{\ExtraSpace}
+\setlength{\ExtraSpace}{1em}
+%
+\newcommand{\StateVar}[3][]%
+ {\StateStyle %
+ \settowidth{\VariableStateWidth}{\scalebox{\StateLabelSca}{\scalebox{\StateLabelScale}{$#1$}}}%
+ \addtolength{\VariableStateWidth}{\ExtraSpace}
+ \ifthenelse{\lengthtest{\VariableStateWidth < \VariableStateIntDiam}}%
+ {\setlength{\VariableStateWidth}{\VariableStateIntDiam}}{}%
+ \setlength{\VariableStateITPos}{\ArrowOnStateCoef\StateDiam}%
+ \addtolength{\VariableStateITPos}{0.5\VariableStateWidth}%
+ \addtolength{\VariableStateITPos}{-0.5\StateDiam}%
+ \rput#2{\pnode(\VariableStateITPos,0){#3e}%
+ \pnode(-\VariableStateITPos,0){#3w}%
+ \pnode(0,\ArrowOnStateCoef\StateDiam){#3n}%
+ \pnode(0,-\ArrowOnStateCoef\StateDiam){#3s}}%
+ \rput#2{\rnode{#3}{\psframebox{\protect\rule[-.5\VariableStateIntDiam]{0pt}{\VariableStateIntDiam}\protect\rule{\VariableStateWidth}{0pt}}}}
+ \rput#2{\VaucStateRBLabel{#1}}%
+}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\VarLoopOn}{\ChgLoopOffset{\LoopVarOff}%
+ \ChgLoopSize{\LoopVarSi}%
+ \ChgLoopAngle{\LoopVarAng}}
+\newcommand{\VarLoopOff}{\RstLoopOffset \RstLoopSize \RstLoopAngle}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Edge drawing parameters --- Initial settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newlength{\EdgeLineWid}
+\setlength{\EdgeLineWid}{\EdgeLineWidth}
+\newcommand{\EdgeLineSty}{\EdgeLineStyle}
+\newcommand{\EdgeLineCol}{\EdgeLineColor}
+% label
+\newcommand{\EdgeLabelSca}{1}
+\newcommand{\EdgeLabelCol}{\EdgeLabelColor}
+% arrow
+\newlength{\EdgeArrowSZDim}
+\setlength{\EdgeArrowSZDim}{\EdgeArrowWidth}
+\newcommand{\EdgeArrowSZNum}{\EdgeArrowLengthCoef}
+\newcommand{\EdgeArrowSty}{\EdgeArrowStyle}
+\newcommand{\EdgeArrowIns}{\EdgeArrowInset}
+% border
+\newlength{\EdgeLineBord}\setlength{\EdgeLineBord}{0pt}
+%%% Zigzag edge parameter
+\newlength{\ZZSiZ}
+\setlength{\ZZSiZ}{\ZZSize}%
+\newcommand{\ZZLineWid}{\ZZLineWidth}% coefficient multiplicateur
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Edge geometric parameters --- Initial settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Edge
+\newlength{\EdgeOff}
+\setlength{\EdgeOff}{\EdgeOffset}
+% Arc
+\newcommand{\VaucArcAng}{\VaucArcAngle}
+\newcommand{\VaucLArcAng}{\VaucLArcAngle}
+\newlength{\VaucArcOff}\setlength{\VaucArcOff}{\VaucArcOffset}
+% Loop
+\newcommand{\VaucArcCurv}{\VaucArcCurvature}
+\newcommand{\VaucLArcCurv}{\VaucLArcCurvature}
+\newcommand{\LoopAng}{\LoopAngle}
+\newcommand{\CLoopAng}{\CLoopAngle}
+\newcommand{\LoopVarAng}{\LoopVarAngle}
+\newlength{\LoopOff}\setlength{\LoopOff}{\LoopOffset}
+\newlength{\LoopVarOff}\setlength{\LoopVarOff}{\LoopVarOffset}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Edge label parameters --- Initial settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% label distance from transition
+\newlength{\TransLabelSP}\setlength{\TransLabelSP}{\TransLabelSep}
+% label position on transitions
+\newcommand{\EdgeLabelPos}{\EdgeLabelPosit}
+\newcommand{\ArcLabelPos}{\ArcLabelPosit}
+\newcommand{\LArcLabelPos}{\LArcLabelPosit}
+\newcommand{\LoopLabelPos}{\LoopLabelPosit}
+\newcommand{\CLoopLabelPos}{\CLoopLabelPosit}
+% label position on initial-final arrow
+\newcommand{\InitStateLabelPos}{\InitStateLabelPosit}
+\newcommand{\FinalStateLabelPos}{\FinalStateLabelPosit}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Transition styles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newpsstyle{VaucEdgeStyle}%
+ {arrows=\EdgeArrowSty,arrowsize=\EdgeArrowSZDim,arrowlength=\EdgeArrowSZNum,%
+ arrowinset=\EdgeArrowIns,%
+ linewidth=\EdgeLineWid,linecolor=\EdgeLineCol,linestyle=\EdgeLineSty,%
+ doubleline=false,%
+ bordercolor=\EdgeLineBorderColor,border=\EdgeLineBord,%
+ fillstyle=none,offset=\EdgeOff,%
+ labelsep=\TransLabelSP,nodesep=0pt}
+\newpsstyle{VaucEdgeDblStyle}%
+ {arrows=\EdgeArrowSty,arrowsize=\EdgeArrowSZDim,arrowlength=\EdgeArrowSZNum,%
+ arrowinset=\EdgeArrowIns,%
+ linewidth=\EdgeLineDblCoef\EdgeLineWid,linecolor=\EdgeLineCol,linestyle=\EdgeLineSty,%
+ doubleline=true,doublesep=\EdgeLineDblSep\EdgeLineWid,%
+ bordercolor=\EdgeLineBorderColor,border=\EdgeLineBord,%
+ fillstyle=none,offset=\EdgeOff,%
+ labelsep=\TransLabelSP,nodesep=0pt}
+%%% Arc
+\newpsstyle{VaucArcR}{ncurv=\VaucArcCurv,arcangle=-\VaucArcAng,%
+ labelsep=\TransLabelSP,offset=-\VaucArcOff}
+\newpsstyle{VaucArcL}{ncurv=\VaucArcCurv,arcangle=\VaucArcAng,%
+ labelsep=\TransLabelSP,offset=\VaucArcOff}
+\newpsstyle{VaucLArcR}{ncurv=\VaucLArcCurv,arcangle=-\VaucLArcAng,%
+ labelsep=\TransLabelSP,offset=-\VaucArcOff}
+\newpsstyle{VaucLArcL}{ncurv=\VaucLArcCurv,arcangle=\VaucLArcAng,%
+ labelsep=\TransLabelSP,offset=\VaucArcOff}
+%%% zig-zag
+\newpsstyle{VaucZigzagStyle}%
+ {linewidth=\ZZLineWid\EdgeLineWid,%
+ labelsep=\TransLabelSP,nodesep=0pt,%
+ coilwidth=1.2\ZZSiZ,coilarmA=0.1\ZZSiZ,%
+ coilarmB=0.3\ZZSiZ,coilheight=\ZZShape,linearc=1.6pt}
+%%%
+\newcommand{\EdgeStyle}{\ifEdgeLineDbl\psset{style=VaucEdgeDblStyle}%
+ \else\psset{style=VaucEdgeStyle}\fi}
+\newcommand{\ZigzagStyle}%
+ {\addtolength{\TransLabelSP}{\TransLabelZZCoef\ZZSiZ}%
+ \psset{style=VaucZigzagStyle}%
+ \addtolength{\TransLabelSP}{-\TransLabelZZCoef\ZZSiZ}%
+ }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Transition parameter changing and setting macros
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% geometric parameters
+\newcommand{\ChgEdgeOffset}[1]{\setlength{\EdgeOff}{#1}}
+\newcommand{\RstEdgeOffset}{\ChgEdgeOffset{\EdgeOffset}}
+\newcommand{\SetEdgeOffset}[1]%
+ {\setlength{\EdgeOffset}{#1}\RstEdgeOffset}
+\newcommand{\ForthBackOffset}{%
+ \setlength{\EdgeOff}{\ForthBackEdgeOffset\EdgeLineWid}}
+%
+\newcommand{\ChgArcAngle}[1]{\renewcommand{\VaucArcAng}{#1}}
+\newcommand{\RstArcAngle}{\ChgArcAngle{\VaucArcAngle}}
+\newcommand{\SetArcAngle}[1]%
+ {\renewcommand{\VaucArcAngle}{#1}\RstArcAngle}
+%
+\newcommand{\ChgLArcAngle}[1]{\renewcommand{\VaucLArcAng}{#1}}
+\newcommand{\RstLArcAngle}{\ChgLArcAngle{\VaucLArcAngle}}
+\newcommand{\SetLArcAngle}[1]%
+ {\renewcommand{\VaucLArcAngle}{#1}\RstLArcAngle}
+%
+\newcommand{\ChgArcCurvature}[1]{\renewcommand{\VaucArcCurv}{#1}}
+\newcommand{\RstArcCurvature}{\ChgArcCurvature{\VaucArcCurvature}}
+\newcommand{\SetArcCurvature}[1]%
+ {\renewcommand{\VaucArcCurvature}{#1}\RstArcCurvature}
+%
+\newcommand{\ChgLArcCurvature}[1]{\renewcommand{\VaucLArcCurv}{#1}}
+\newcommand{\RstLArcCurvature}{\ChgLArcCurvature{\VaucLArcCurvature}}
+\newcommand{\SetLArcCurvature}[1]%
+ {\renewcommand{\VaucLArcCurvature}{#1}\RstLArcCurvature}
+%
+\newcommand{\ChgArcOffset}[1]{\setlength{\VaucArcOff}{#1}}
+\newcommand{\RstArcOffset}{\setlength{\VaucArcOff}{\VaucArcOffset}}
+\newcommand{\SetArcOffset}[1]%
+ {\renewcommand{\VaucArcOffset}{#1}\RstArcOffset}
+%
+\newcommand{\ChgLoopOffset}[1]{\setlength{\LoopOff}{#1}}
+\newcommand{\RstLoopOffset}{\setlength{\LoopOff}{\LoopOffset}}
+\newcommand{\SetLoopOffset}[1]%
+ {\renewcommand{\LoopOffset}{#1}\RstLoopOffset}
+%
+\newcommand{\ChgLoopAngle}[1]{\renewcommand{\LoopAng}{#1}}
+\newcommand{\RstLoopAngle}{\ChgLoopAngle{\LoopAngle}}
+\newcommand{\SetLoopAngle}[1]%
+ {\renewcommand{\LoopAngle}{#1}\RstLoopAngle}
+%
+\newcommand{\ChgCLoopAngle}[1]{\renewcommand{\CLoopAng}{#1}}
+\newcommand{\RstCLoopAngle}{\ChgCLoopAngle{\CLoopAngle}}
+\newcommand{\SetCLoopAngle}[1]%
+ {\renewcommand{\CLoopAngle}{#1}\RstCLoopAngle}
+%
+%%% drawing parameters
+\newcommand{\ChgEdgeLineColor}[1]{\renewcommand{\EdgeLineCol}{#1}}
+\newcommand{\RstEdgeLineColor}{\ChgEdgeLineColor{\EdgeLineColor}}
+\newcommand{\SetEdgeLineColor}[1]%
+ {\renewcommand{\EdgeLineColor}{#1}\RstEdgeLineColor}
+%
+\newcommand{\ChgEdgeLineStyle}[1]{\renewcommand{\EdgeLineSty}{#1}}
+\newcommand{\RstEdgeLineStyle}{\ChgEdgeLineStyle{\EdgeLineStyle}}
+\newcommand{\SetEdgeLineStyle}[1]%
+ {\renewcommand{\EdgeLineStyle}{#1}\RstEdgeLineStyle}
+%
+\newcommand{\ChgEdgeLineWidth}[1]% coefficient !
+ {\setlength{\EdgeLineWid}{#1\EdgeLineWidth}}
+\newcommand{\RstEdgeLineWidth}{\ChgEdgeLineWidth{1}}
+\newcommand{\SetEdgeLineWidth}[1]% length !
+ {\setlength{\EdgeLineWidth}{#1}\RstEdgeLineWidth}
+%
+\newcommand{\EdgeLineDouble}%
+ {\EdgeLineDbltrue%
+ \ChgEdgeArrowWidth{\EdgeDblArrowWidth}
+ \ChgEdgeArrowLengthCoef{\EdgeDblArrowLengthCoef}}
+\newcommand{\EdgeLineSimple}%
+ {\EdgeLineDblfalse \RstEdgeArrowWidth \RstEdgeArrowLengthCoef}
+%
+\newcommand{\ChgEdgeLabelColor}[1]{\renewcommand{\EdgeLabelCol}{#1}}
+\newcommand{\RstEdgeLabelColor}{\ChgEdgeLabelColor{\EdgeLabelColor}}
+\newcommand{\SetEdgeLabelColor}[1]%
+ {\renewcommand{\EdgeLabelColor}{#1}\RstEdgeLabelColor}
+%
+\newcommand{\ChgEdgeLabelScale}[1]{\renewcommand{\EdgeLabelSca}{#1}}
+\newcommand{\RstEdgeLabelScale}{\ChgEdgeLabelScale{1}}
+\newcommand{\SetEdgeLabelScale}[1]%
+ {\renewcommand{\EdgeLabelScale}{#1}\RstEdgeLabelScale}
+\newcommand{\FixDimEdge}[4]{%
+ \renewcommand{\DimEdgeLineStyle}{#1}%
+ \renewcommand{\DimEdgeLineCoef}{#2}%
+ \renewcommand{\DimEdgeLineColor}{#3}%
+ \renewcommand{\DimEdgeLabelColor}{#4}}%
+%
+\newcommand{\ChgEdgeArrowStyle}[1]{\renewcommand{\EdgeArrowSty}{#1}}
+\newcommand{\RstEdgeArrowStyle}{\ChgEdgeArrowStyle{\EdgeArrowStyle}}
+\newcommand{\SetEdgeArrowStyle}[1]%
+ {\renewcommand{\EdgeArrowStyle}{#1}\RstEdgeArrowStyle}
+%
+\newcommand{\ChgEdgeArrowWidth}[1]%
+ {\setlength{\EdgeArrowSZDim}{#1}} % !! length !!
+\newcommand{\RstEdgeArrowWidth}{\ChgEdgeArrowWidth{\EdgeArrowWidth}}
+\newcommand{\SetEdgeArrowWidth}[1]%
+ {\setlength{\EdgeArrowWidth}{#1} \RstEdgeArrowWidth}
+%
+\newcommand{\ChgEdgeArrowLengthCoef}[1]{\renewcommand{\EdgeArrowSZNum}{#1}}
+\newcommand{\RstEdgeArrowLengthCoef}{\ChgEdgeArrowLengthCoef{\EdgeArrowLengthCoef}}
+\newcommand{\SetEdgeArrowLengthCoef}[1]%
+ {\renewcommand{\EdgeArrowLengthCoef}{#1}\RstEdgeArrowLengthCoef}
+%
+\newcommand{\ChgEdgeArrowInsetCoef}[1]{\renewcommand{\EdgeArrowIns}{#1}}
+\newcommand{\RstEdgeArrowInsetCoef}{\ChgEdgeArrowInsetCoef{\EdgeArrowInset}}
+\newcommand{\SetEdgeArrowInsetCoef}[1]%
+ {\renewcommand{\EdgeArrowInset}{#1}\RstEdgeArrowInsetCoef}
+%
+\newcommand{\ReverseArrow}%
+ {\ChgEdgeArrowStyle{\EdgeRevArrowStyle}%
+ \renewcommand{\EdgeLabelPos}{\EdgeLabelRevPosit}%
+ \renewcommand{\ArcLabelPos}{\ArcLabelRevPosit}%
+ \renewcommand{\LArcLabelPos}{\LArcLabelRevPosit}%
+ \renewcommand{\LoopLabelPos}{\LoopLabelRevPosit}%
+ \renewcommand{\CLoopLabelPos}{\CLoopLabelRevPosit}%
+ \renewcommand{\InitStateLabelPos}{\InitStateLabelRevPosit}%
+ \renewcommand{\FinalStateLabelPos}{\FinalStateLabelRevPosit}}
+\newcommand{\StraightArrow}%
+ {\ChgEdgeArrowStyle{\EdgeArrowStyle}%
+ \renewcommand{\EdgeLabelPos}{\EdgeLabelPosit}%
+ \renewcommand{\ArcLabelPos}{\ArcLabelPosit}%
+ \renewcommand{\LArcLabelPos}{\LArcLabelPosit}%
+ \renewcommand{\LoopLabelPos}{\LoopLabelPosit}%
+ \renewcommand{\CLoopLabelPos}{\CLoopLabelPosit}%
+ \renewcommand{\InitStateLabelPos}{\InitStateLabelPosit}%
+ \renewcommand{\FinalStateLabelPos}{\FinalStateLabelPosit}}
+% Double
+\newcommand{\FixEdgeLineDouble}[2]{%
+ \renewcommand{\EdgeLineDblCoef}{#1}%
+ \renewcommand{\EdgeLineDblSep}{#2}}
+% border
+\newcommand{\FixEdgeBorder}[2]{%
+ \renewcommand{\EdgeLineBorderCoef}{#1}%
+ \renewcommand{\EdgeLineBorderColor}{#2}}
+\newcommand{\EdgeBorder}%
+ {\setlength{\EdgeLineBord}{\EdgeLineBorderCoef\EdgeLineWid}}
+\newcommand{\EdgeBorderOff}{\setlength{\EdgeLineBord}{0pt}}
+%%%
+\newcommand{\DimEdge}{%
+ \ChgEdgeLineStyle{\DimEdgeLineStyle}%
+ \ChgEdgeLineWidth{\DimEdgeLineCoef}%
+ \ChgEdgeLineColor{\DimEdgeLineColor}%
+ \ChgEdgeLabelColor{\DimEdgeLabelColor}}
+%%%
+\newcommand{\ChgZZSize}[1]{\setlength{\ZZSiZ}{#1}}
+\newcommand{\RstZZSize}{\setlength{\ZZSiZ}{\ZZSize}}
+\newcommand{\SetZZSize}[1]{\setlength{\ZZSiZe}{#1}\RstZZSize}
+%%%\ZZLineWidth
+\newcommand{\ChgZZLineWidth}[1]{\renewcommand{\ZZLineWid}{#1}}
+\newcommand{\RstZZLineWidth}{\ChgZZLineWidth{\ZZLineWidth}}
+\newcommand{\SetZZLineWidth}[1]%
+ {\renewcommand{\ZZLineWidth}{#1}\RstZZLineWidth}
+%
+%%% label of transitions
+\newcommand{\VaucEdgeLabel}[1]{%
+ \textcolor{\EdgeLabelCol}{\scalebox{\EdgeLabelSca}{\scalebox{\EdgeLabelScale}{$ #1 $}}}}
+%%%
+\newcommand{\RstEdge}{%
+ \RstEdgeOffset\RstArcAngle\RstLArcAngle%
+ \RstArcCurvature\RstLArcCurvature%
+ \RstArcOffset\RstLoopOffset\RstLoopSize%
+ \RstEdgeLineColor\RstEdgeLineStyle\RstEdgeLineWidth\EdgeLineSimple%
+ \StraightArrow%\EdgeBorderOff%
+ \RstEdgeLabelScale\RstEdgeLabelColor}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Initial-final arrow drawing
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% implicit parameter
+\newcommand{\InitialDir}{w}\newcommand{\FinalDir}{e}
+% without label
+\newcommand{\Initial}[2][\InitialDir]{\EdgeStyle\ncline{#2#1}{#2}}
+\newcommand{\Final}[2][\FinalDir]{\EdgeStyle\ncline{#2}{#2#1}}
+% with label
+% NB modified syntax eg \InitialL[pos]{dir}{statename}{label}
+\newcommand{\InitialL}[4][{\InitStateLabelPos}]%
+ {\EdgeStyle\ncline{#3#2}{#3}\naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\InitialR}[4][{\InitStateLabelPos}]%
+ {\EdgeStyle\ncline{#3#2}{#3}\nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\FinalL}[4][{\FinalStateLabelPos}]%
+ {\EdgeStyle\ncline{#3}{#3#2}\naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\FinalR}[4][{\FinalStateLabelPos}]%
+ {\EdgeStyle\ncline{#3}{#3#2}\nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Transition drawing
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\EdgeL}[4][{\EdgeLabelPos}]%
+ {\EdgeStyle \ncline{#2}{#3} \naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\EdgeR}[4][{\EdgeLabelPos}]%
+ {\EdgeStyle \ncline{#2}{#3} \nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+%
+\newcommand{\ArcL}[4][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucArcL}%
+ \ncarc{#2}{#3} \naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\ArcR}[4][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucArcR}%
+ \ncarc{#2}{#3} \nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\LArcL}[4][{\LArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucLArcL}%
+ \ncarc{#2}{#3} \naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\LArcR}[4][{\LArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucLArcR}%
+ \ncarc{#2}{#3} \nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+%
+\newcounter{anglea}\newcounter{angleb}
+\newcommand{\LoopXR}[7]%
+ {{\setcounter{anglea}{#2-#4}}%
+ {\setcounter{angleb}{#2+#4}}%
+ {\EdgeStyle \psset{angleA=\theanglea,angleB=\theangleb,offset=#5,ncurv=#6}%
+ \nccurve{#3}{#3} \nbput[npos=#1]{\VaucEdgeLabel{#7}}}}
+\newcommand{\LoopXL}[7]%
+ {{\setcounter{anglea}{#2+#4}}%
+ {\setcounter{angleb}{#2-#4}}%
+ {\EdgeStyle \psset{angleA=\theanglea,angleB=\theangleb,offset=-#5,ncurv=#6}%
+ \nccurve{#3}{#3} \naput[npos=#1]{\VaucEdgeLabel{#7}}}}
+\newcommand{\LoopR}[4][{\LoopLabelPos}]%
+ {\LoopXR{#1}{#2}{#3}{\LoopAng}{\LoopOff}{\LoopSi}{#4}}
+\newcommand{\LoopL}[4][{\LoopLabelPos}]%
+ {\LoopXL{#1}{#2}{#3}{\LoopAng}{\LoopOff}{\LoopSi}{#4}}
+\newcommand{\CLoopR}[4][{\CLoopLabelPos}]%
+ {\LoopXR{#1}{#2}{#3}{\CLoopAng}{\LoopOff}{\LoopSi}{#4}}
+\newcommand{\CLoopL}[4][{\CLoopLabelPos}]%
+ {\LoopXL{#1}{#2}{#3}{\CLoopAng}{\LoopOff}{\LoopSi}{#4}}
+\newcommand{\LoopVarR}[4][{\LoopLabelPos}]%
+ {\LoopXR{#1}{#2}{#3}{\LoopVarAng}{\LoopVarOff}{\LoopVarSi}{#4}}
+\newcommand{\LoopVarL}[4][{\LoopLabelPos}]%
+ {\LoopXL{#1}{#2}{#3}{\LoopVarAng}{\LoopVarOff}{\LoopVarSi}{#4}}
+\newcommand{\LoopW}[3][{\LoopLabelPos}]{\LoopR[#1]{180}{#2}{#3}}
+\newcommand{\LoopE}[3][{\LoopLabelPos}]{\LoopL[#1]{0}{#2}{#3}}
+\newcommand{\LoopN}[3][{\LoopLabelPos}]{\LoopL[#1]{90}{#2}{#3}}
+\newcommand{\LoopS}[3][{\LoopLabelPos}]{\LoopR[#1]{-90}{#2}{#3}}
+\newcommand{\LoopNW}[3][{\LoopLabelPos}]{\LoopR[#1]{135}{#2}{#3}}
+\newcommand{\LoopNE}[3][{\LoopLabelPos}]{\LoopL[#1]{45}{#2}{#3}}
+\newcommand{\LoopSW}[3][{\LoopLabelPos}]{\LoopL[#1]{-135}{#2}{#3}}
+\newcommand{\LoopSE}[3][{\LoopLabelPos}]{\LoopR[#1]{-45}{#2}{#3}}
+\newcommand{\CLoopW}[3][{\CLoopLabelPos}]{\CLoopR[#1]{180}{#2}{#3}}
+\newcommand{\CLoopE}[3][{\CLoopLabelPos}]{\CLoopL[#1]{0}{#2}{#3}}
+\newcommand{\CLoopN}[3][{\CLoopLabelPos}]{\CLoopL[#1]{90}{#2}{#3}}
+\newcommand{\CLoopS}[3][{\CLoopLabelPos}]{\CLoopR[#1]{-90}{#2}{#3}}
+\newcommand{\CLoopNW}[3][{\CLoopLabelPos}]{\CLoopR[#1]{135}{#2}{#3}}
+\newcommand{\CLoopNE}[3][{\CLoopLabelPos}]{\CLoopL[#1]{45}{#2}{#3}}
+\newcommand{\CLoopSW}[3][{\CLoopLabelPos}]{\CLoopL[#1]{-135}{#2}{#3}}
+\newcommand{\CLoopSE}[3][{\CLoopLabelPos}]{\CLoopR[#1]{-45}{#2}{#3}}
+\newcommand{\LoopVarN}[3][{\CLoopLabelPos}]{\LoopVarL[#1]{90}{#2}{#3}}
+\newcommand{\LoopVarS}[3][{\CLoopLabelPos}]{\LoopVarR[#1]{-90}{#2}{#3}}
+%
+\newcommand{\ZZEdge}[2]%
+ {\EdgeStyle\ZigzagStyle\nczigzag{#1}{#2}}%
+\newcommand{\ZZEdgeL}[4][{\EdgeLabelRevPosit}]%
+ {\EdgeStyle\ZigzagStyle\nczigzag{#2}{#3}%
+ \naput[npos=#1]{\VaucEdgeLabel{#4}}}
+\newcommand{\ZZEdgeR}[4][{\EdgeLabelRevPosit}]%
+ {\EdgeStyle\ZigzagStyle\nczigzag{#2}{#3}%
+ \nbput[npos=#1]{\VaucEdgeLabel{#4}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%% Reprise des macros pstricks
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\Point}[2]{\pnode#1{#2}}
+\newcommand{\Edge}[2]{\EdgeStyle\ncline{#1}{#2}}
+%
+\newcommand{\VArcL}[5][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucLArcL}%
+ \ncarc[#2]{#3}{#4} \naput[npos=#1]{\VaucEdgeLabel{#5}}}
+\newcommand{\VArcR}[5][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{style=VaucLArcR}%
+ \ncarc[#2]{#3}{#4} \nbput[npos=#1]{\VaucEdgeLabel{#5}}}
+%
+\newcommand{\VCurveL}[5][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{angleA=0,angleB=180,ncurv=1}%
+ \nccurve[#2]{#3}{#4} \naput[npos=#1]{\VaucEdgeLabel{#5}}}
+\newcommand{\VCurveR}[5][{\ArcLabelPos}]%
+ {\EdgeStyle \psset{angleA=0,angleB=0,ncurv=1}%
+ \nccurve[#2]{#3}{#4} \nbput[npos=#1]{\VaucEdgeLabel{#5}}}
+%
+\newcommand{\LabelL}[2][{\EdgeLabelPos}]%
+ {\naput[npos=#1]{\VaucEdgeLabel{#2}}}
+\newcommand{\LabelR}[2][{\EdgeLabelPos}]%
+ {\nbput[npos=#1]{\VaucEdgeLabel{#2}}}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%