%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%