summaryrefslogtreecommitdiffstats
path: root/Tex
diff options
context:
space:
mode:
authorTom2011-06-17 18:21:43 +0200
committerTom2011-06-17 18:21:43 +0200
commit8abd9a968f1aaea16239b1de7d627fb54160257f (patch)
treef9e28f25a0e4561c9dd3a1d6b5ba51e6e6954d46 /Tex
parentinitial commit .. (diff)
downloadimsi-catcher-detection-8abd9a968f1aaea16239b1de7d627fb54160257f.tar.gz
imsi-catcher-detection-8abd9a968f1aaea16239b1de7d627fb54160257f.tar.xz
imsi-catcher-detection-8abd9a968f1aaea16239b1de7d627fb54160257f.zip
Initial Commit
Diffstat (limited to 'Tex')
-rw-r--r--Tex/Structure.txt50
-rw-r--r--Tex/old_master/Glossary.tex24
-rw-r--r--Tex/old_master/Master.pdfbin0 -> 386683 bytes
-rw-r--r--Tex/old_master/Master.tex166
-rw-r--r--Tex/old_master/Titlepage.tex38
-rw-r--r--Tex/old_master/VCPref-main.tex109
-rw-r--r--Tex/old_master/Vaucanson-G.tex946
-rw-r--r--Tex/old_master/epic.sty562
-rw-r--r--Tex/old_master/multido.sty27
-rw-r--r--Tex/old_master/multido.tex311
-rw-r--r--Tex/old_master/vaucanson-g.sty14
11 files changed, 2247 insertions, 0 deletions
diff --git a/Tex/Structure.txt b/Tex/Structure.txt
new file mode 100644
index 0000000..c7a6f08
--- /dev/null
+++ b/Tex/Structure.txt
@@ -0,0 +1,50 @@
+Structure:
+
+Introduction
+ - GSM spreading
+ - Historic cornerstones
+ - Imposed threats (terror laws)
+
+Basics
+ - GSM
+ - Infrastructure
+ - Cell Structure
+ - BTS
+ - Protocol
+ - Layers
+ - Channels (logical/physical)
+
+ - GSM Security
+ - Authentication
+ - IMSI-Catcher
+ - Security threats
+ - Flaw used
+ - Architecture
+ - Differences to regular Catcher/BTS
+
+Hardware
+ - C123
+ - Specs
+ - Data Cable
+ (- USRP)
+
+Software
+ - OsmocomBB
+ - Concept
+ - Install
+ - Tools (layer23, osmocom, wireshark integration)
+ - Interfaces
+ (- WEKA)
+ (- GNU-Radio)
+
+IMSI-Catcher-Detection
+ - How to identify
+ - Configuration of catcher
+ - Interesting parameters
+ (- Identify Jamming)
+ (- Machine learning approach)
+ - Usage
+ - Scenarios
+
+Conclusion
+ - Extensions
diff --git a/Tex/old_master/Glossary.tex b/Tex/old_master/Glossary.tex
new file mode 100644
index 0000000..816d44a
--- /dev/null
+++ b/Tex/old_master/Glossary.tex
@@ -0,0 +1,24 @@
+%Einträge für das Glossar vordefinieren
+\storeglosentry{glos:DTN}{name=Delay Tolerant Networking ,
+ description={Lorem}}
+
+\storeglosentry{glos:finitestatemachine}{name=finite state machine ,
+ description={Lorem}}
+
+\storeglosentry{glos:drivermodules}{name=driver modules ,
+ description={Lorem}}
+
+\storeglosentry{glos:essid}{name=ESSID ,
+ description={Lorem}}
+
+\storeglosentry{glos:kernel}{name=kernel ,
+ description={Lorem}}
+
+\storeglosentry{glos:gumdaemon}{name=GumDaemon ,
+ description={Lorem}}
+
+\storeglosentry{glos:adhoc}{name=ad-hoc ,
+ description={Lorem}}
+
+%Einträge für das Abkürzungsverzeichnis vordefinieren
+\newacronym{DTN}{\gls{glos:DTN}}{} \ No newline at end of file
diff --git a/Tex/old_master/Master.pdf b/Tex/old_master/Master.pdf
new file mode 100644
index 0000000..f6ed28b
--- /dev/null
+++ b/Tex/old_master/Master.pdf
Binary files differ
diff --git a/Tex/old_master/Master.tex b/Tex/old_master/Master.tex
new file mode 100644
index 0000000..143dfeb
--- /dev/null
+++ b/Tex/old_master/Master.tex
@@ -0,0 +1,166 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Document Class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[a4paper, twoside, 11pt]{book}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Includes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\usepackage{ngerman}
+%\usepackage[ngerman]{babel}
+\usepackage[utf8x]{inputenc}
+\usepackage[table]{xcolor}
+\usepackage{amssymb}
+\usepackage{amsmath}
+\usepackage{graphicx}
+\usepackage{epstopdf}
+\usepackage{listings}
+\usepackage{apacite}
+%\usepackage{apacite-deutsch}
+\usepackage{times, helvet,courier}
+\usepackage{esvect}
+\usepackage[T1]{fontenc}
+\usepackage[stable,perpage, ragged, multiple]{footmisc}
+\usepackage{listing}
+\usepackage{multido}
+\usepackage[acronym=true,toc=true]{glossary}
+%\usepackage{vaucanson-g}
+%\usepackage{a4wide}
+\usepackage{pstricks}
+\usepackage{makeidx}
+\usepackage{courier, helvet}
+\usepackage{lipsum}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Styles for Programming Language Highlighting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{language=Perl,
+ showstringspaces=false,
+ stringstyle=\ttfamily,
+ basicstyle=\ttfamily,
+ frameround=ftff,
+ frame=shadowbox,
+ %keywordstyle=\color{red},
+ numbers=left,
+ aboveskip=7pt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Selfdefined Commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% example environment
+\newtheorem{example}{Example}
+
+% perl need to be followed by lstlisting env
+%\newcommand{perl}{\lstset{language=Perl}}
+
+% bash need to be followed by lstlisting env
+%\newcommand{perl}{\lstset{language=bash}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Information %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%this is not used atm sicne a template for the titlepage has been inclluded and is used
+\author{Thomas Mayer}
+\title{Bachelor Thesis:\\ Delay Tolerant Networking, a realization on the Gumstix Verdex Platform}
+\date{\today}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Glossary and Listings Style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% In order to build glossary info the following commands have to be run in a shell:
+% latex datei
+% makeindex -s datei.ist -t datei.alg -o datei.acn datei.acr % for list of acronyms
+% makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo % for glossary
+% makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg % for list of symbols
+% latex datei
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newglossarytype[slg]{symbolslist}{syg}{syi}
+\setglossarystyle[symbolslist]{style=long,number=none}
+\setglossarystyle[acronym]{style=long,number=none}
+\setglossarystyle[glossary]{style=altlist}
+\setacronymnamefmt{\gloshort}
+\setacronymdescfmt{\glolong}
+\makeglossary
+\makeacronym
+\makeindex
+%\makesymbolslist
+
+\input{Glossary}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Titlepage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+
+\input{Titlepage}
+\pagestyle{empty}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{center}
+ \textbf{Abstract:}
+\end{center}
+\input{Abstract}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Create ListOfTables and ListOfFigures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\clearpage{\pagestyle{empty}\cleardoublepage}
+\pagestyle{headings}
+\pagenumbering{roman}
+\listoffigures
+\listoftables
+\tableofcontents
+\clearpage{\pagestyle{empty}\cleardoublepage}
+\pagenumbering{arabic}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Content %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input{Motivation}
+\input{DelayTolerantNetworking}
+\input{Environment}
+\input{Deployment}
+\input{Conclusion}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Create Glossary and Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\clearpage{\pagestyle{empty}\cleardoublepage}
+\pagenumbering{Roman}
+\def\glossaryname{Glossary}
+\printglossary
+
+\def\acronymname{List of Acronyms}
+\printacronym
+
+%\def\symbolslistname{List of symbols}
+%\printsymbolslist
+
+\printindex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\bibliographystyle{kogwis99-apacite}
+
+\end{document}
diff --git a/Tex/old_master/Titlepage.tex b/Tex/old_master/Titlepage.tex
new file mode 100644
index 0000000..a08551a
--- /dev/null
+++ b/Tex/old_master/Titlepage.tex
@@ -0,0 +1,38 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{titlepage}
+ \begin{center}
+ % Logo
+ \includegraphics[width=0.3\textwidth]{Images/unisiegel}\\[1cm]
+
+ \textsc{\LARGE University of Freiburg}\\[0.5cm]
+ \textsc{Department of Computer Science}\\[2cm]
+ \textsc{\LARGE Bachelor Thesis}\\[0.5cm]
+
+ % Title
+ \rule{\linewidth}{0.5mm} \\[0.4cm]
+ \textsc{ \huge \bfseries Delay Tolerant Networking: \\[0.3cm] A Realization on the Gumstix Verdex Platform}\\[0.4cm]
+ \rule{\linewidth}{0.5mm} \\[1.5cm]
+
+ % Author and supervisor
+ \begin{minipage}{0.4\textwidth}
+ \begin{flushleft} \large
+ \emph{Author:}\\
+ Thomas Mayer
+ \end{flushleft}
+ \end{minipage}
+ \begin{minipage}{0.4\textwidth}
+ \begin{flushright} \large
+ \emph{Supervisor:} \\
+ Prof. Dr. Schindelhauer\\
+ Dipl. Inf. Rührup
+ \end{flushright}
+ \end{minipage}
+
+ \vfill
+ % Bottom of the page
+ {\large \today}
+ \end{center}
+\end{titlepage} \ No newline at end of file
diff --git a/Tex/old_master/VCPref-main.tex b/Tex/old_master/VCPref-main.tex
new file mode 100644
index 0000000..13160a2
--- /dev/null
+++ b/Tex/old_master/VCPref-main.tex
@@ -0,0 +1,109 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This files contains initial values
+% of Vaucanson's parameter
+% Modify it to create your own style
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%
+% State aspect
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SetStateLabelColor{black} %% color
+\SetStateLabelScale{1.7} %% float
+\SetStateLineStyle{solid} %% aspect (other values: none, dashed, dotted)
+\SetStateLineWidth{1.8pt} %% length
+\SetStateLineColor{black} %% color
+\SetStateFillStatus{solid} %% aspect
+\SetStateFillColor{white} %% color
+\FixDimState{solid}{gray}{1}{gray}{white} %% LineStyle,LineColor,LineCoef (*\StateLineWidth),LabelColor,FillColor
+\FixStateLineDouble{0.6}{0.4} %% Double style: \StateLineDblCoef, \StateLineDblSep, coeffs applied to \StateLineWidth
+%%%%%%%%%%%%%%
+% Edge aspect
+%%%%%%%%%%%%%%
+\SetEdgeLabelColor{black} %% color
+\SetEdgeLabelScale{1.7} %% float
+\SetEdgeLineStyle{solid} %% aspect
+\SetEdgeLineWidth{1pt} %% length
+\SetEdgeLineColor{black} %% color
+\SetArcAngle{15} %% int (degree)
+\SetLArcAngle{30} %% int (degree)
+\SetArcCurvature{0.8} %% float
+\SetEdgeOffset{0pt} %% length
+\SetArcOffset{1pt} %% length
+\SetLoopOffset{0pt} %% length
+\renewcommand{\ForthBackEdgeOffset}{5} %% float : coef*\EdgeLineWidth -> offset
+\FixDimEdge{solid}{1.2}{gray}{gray} %% LineStyle,LineCoef,LineColor,LabelColor
+\FixEdgeBorder{2}{white} %% int,color : coef*\EdgeLineWidth -> width of border
+\FixEdgeLineDouble{0.5}{0.6} %% float : coefs*\EdgeLineWidth -> (width of lines, distance)
+%%%%%%%%%%%%%%
+% ZZ aspect
+%%%%%%%%%%%%%%
+\setlength{\ZZSize}{.9cm} % length : apparent diameter
+\renewcommand{\ZZShape}{0.5} % coef: opening of the ZZ
+\SetZZLineWidth{1.7} % float
+\renewcommand{\TransLabelZZCoef}{0.6} % float : coef*\ZZSize -> distance added for labels
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Scales --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\LargeScale}{0.85} %float : argument of a \scalebox
+\renewcommand{\MediumScale}{0.6} %float
+\renewcommand{\SmallScale}{0.5} %float
+\renewcommand{\TinyScale}{0.42} %float
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% State parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\MediumStateDiameter}{.9cm} %length
+\setlength{\SmallStateDiameter}{.6cm} %length
+\setlength{\LargeStateDiameter}{1.2cm} %length
+\setlength{\VerySmallStateDiameter}{.3cm} %length
+\renewcommand{\VSStateLineCoef}{.6} %float : coef *\StateLineWidth
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\ArrowOnMediumState}{1.5} %float : coef *\StateDiameter for size of initial and final arrows
+\renewcommand{\ArrowOnSmallState}{1.7} %float
+\renewcommand{\ArrowOnLargeState}{1.3} %float
+\renewcommand{\ArrowOnVerySmallState}{5} %float
+\renewcommand{\LoopOnMediumState}{7} %float : curvature
+\renewcommand{\LoopOnSmallState}{9.6} %float
+\renewcommand{\LoopOnLargeState}{5.8} %float
+\renewcommand{\LoopOnVariableState}{5.1} %float
+\renewcommand{\CLoopOnMediumState}{8} %float
+\renewcommand{\CLoopOnSmallState}{12} %float
+\renewcommand{\CLoopOnLargeState}{6} %float
+\renewcommand{\CLoopOnVariableState}{5.2} %float
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Edge parameters --- Default settings
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\EdgeLabelPosit}{.45} %per cent (use \Fix..LabelPosit with values in [10;90])
+\renewcommand{\EdgeLabelRevPosit}{.55}
+\renewcommand{\ArcLabelPosit}{.40}
+\renewcommand{\ArcLabelRevPosit}{.60}
+\renewcommand{\LArcLabelPosit}{.40}
+\renewcommand{\LArcLabelRevPosit}{.60}
+\renewcommand{\LoopLabelPosit}{.25}
+\renewcommand{\LoopLabelRevPosit}{.75}
+\renewcommand{\CLoopLabelPosit}{.25}
+\renewcommand{\CLoopLabelRevPosit}{.75}
+\renewcommand{\InitStateLabelPosit}{.10}
+\renewcommand{\InitStateLabelRevPosit}{.90}
+\renewcommand{\FinalStateLabelPosit}{.90}
+\renewcommand{\FinalStateLabelRevPosit}{.10}
+\SetEdgeArrowWidth{5pt} %length of the edge arrow
+\SetEdgeArrowLengthCoef{1.4} %float : coef*\EdgeArrowSizeDim width of EA
+\setlength{\EdgeDblArrowWidth}{5.5pt} %length : size of EA for double transitions
+\renewcommand{\EdgeDblArrowLengthCoef}{1.7} %int
+\SetEdgeArrowInsetCoef{0.1} %float : coef*\EdgeArrowSizeDim
+\SetEdgeArrowStyle{->} %style (other styles : <-, |-|, -|,...)
+\renewcommand{\EdgeRevArrowStyle}{<-} %style for reverse transitions
+\renewcommand{\StateDimen}{outer} %side of the boundary of states that corresponds to the diameter
+\renewcommand{\StateDblDimen}{middle} %idem for states with double line (values: outer, middle or inner)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Initialization
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\SetVCDirectory{} %default dir=current dir
+\HideFrame
+\HideGrid
+\MediumPicture
+\HideName
+\RigidLabel
+\FullState %% PlainState
+\MediumState
diff --git a/Tex/old_master/Vaucanson-G.tex b/Tex/old_master/Vaucanson-G.tex
new file mode 100644
index 0000000..e364fc4
--- /dev/null
+++ b/Tex/old_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
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Tex/old_master/epic.sty b/Tex/old_master/epic.sty
new file mode 100644
index 0000000..d3075ba
--- /dev/null
+++ b/Tex/old_master/epic.sty
@@ -0,0 +1,562 @@
+% LAST EDIT: Fri Oct 4 14:30:31 1991 by Michael Janich (massa)
+\makeatletter
+\typeout{%
+Enhancements to Picture Environment. Version 1.2 - Released June 1, 1986}
+%----------------------------------------------------------------------
+% Copyright (C) podar@sbcs (Sunil Podar) July 14,1986.
+% You may use this file in whatever way you wish. You are requested to
+% leave this notice intact, and report any bugs, enhancements, comments,
+% suggestions, etc. to:
+% USmail: Sunil Podar,Dept. of Computer Science,SUNY at Stony Brook,NY 11794.
+% CSNET: podar@sbcs.csnet
+% ARPA: podar%suny-sb.csnet@csnet-relay.arpa
+% UUCP: {allegra, hocsd, philabs, ogcvax}!sbcs!podar
+%----------------------------------------------------------------------
+% This file contains implementation of:
+% \multiputlist \matrixput \grid \picsquare
+% \dottedline \dashline \drawline \jput
+% \putfile
+% Environments: dottedjoin, dashjoin and drawjoin
+%
+% For documentation, see the accompanying manual.
+%----------------------------------------------------------------------
+% usage: \multiputlist(x,y)(delta-x,delta-y)[tbrl]{item1,item2,item3,.....}
+% \lop and \lopoff taken from TeXbook.
+%----------------------------------------------------------------------
+\def\lop#1\to#2{\expandafter\lopoff#1\lopoff#1#2}
+\long\def\lopoff,#1,#2\lopoff#3#4{\def#4{#1}\def#3{,#2}}
+\def\@@mlistempty{,}
+\newif\iflistnonempty
+\def\multiputlist(#1,#2)(#3,#4){\@ifnextchar
+[{\@imultiputlist(#1,#2)(#3,#4)}{\@imultiputlist(#1,#2)(#3,#4)[]}}
+
+\long\def\@imultiputlist(#1,#2)(#3,#4)[#5]#6{{%
+\@xdim=#1\unitlength \@ydim=#2\unitlength
+\listnonemptytrue \def\@@mlist{,#6,} % need this for end condition
+\loop
+\lop\@@mlist\to\@@firstoflist
+\@killglue\raise\@ydim\hbox to\z@{\hskip
+\@xdim\@imakepicbox(0,0)[#5]{\@@firstoflist}\hss}
+\advance\@xdim #3\unitlength\advance\@ydim #4\unitlength
+\ifx\@@mlist\@@mlistempty \listnonemptyfalse\fi
+\iflistnonempty
+\repeat\relax
+\ignorespaces}}
+%----------------------------------------------------------------------
+% two-dimensional version of \multiput
+% \matrixput(0,0)(20,0){5}(0,20){3}{\circle{2}}
+%----------------------------------------------------------------------
+\newcount\@@multicnt
+\def\matrixput(#1,#2)(#3,#4)#5(#6,#7)#8#9{%
+\ifnum#5>#8\@matrixput(#1,#2)(#3,#4){#5}(#6,#7){#8}{#9}%
+\else\@matrixput(#1,#2)(#6,#7){#8}(#3,#4){#5}{#9}\fi}
+
+%% here #5 >= #8
+\long\def\@matrixput(#1,#2)(#3,#4)#5(#6,#7)#8#9{{\@killglue%
+\@multicnt=#5\relax\@@multicnt=#8\relax%
+\@xdim=0pt%
+\@ydim=0pt%
+\setbox\@tempboxa\hbox{\@whilenum \@multicnt > 0\do {%
+%%\typeout{\the\@multicnt, \the\@@multicnt}%
+\raise\@ydim\hbox to \z@{\hskip\@xdim #9\hss}%
+\advance\@multicnt \m@ne%
+\advance\@xdim #3\unitlength\advance\@ydim #4\unitlength}}%
+\@xdim=#1\unitlength%
+\@ydim=#2\unitlength%
+\@whilenum \@@multicnt > 0\do {%
+\raise\@ydim\hbox to \z@{\hskip\@xdim \copy\@tempboxa\hss}%
+\advance\@@multicnt \m@ne%
+\advance\@xdim #6\unitlength\advance\@ydim #7\unitlength}%
+\ignorespaces}}
+%----------------------------------------------------------------------
+%\grid(wd,ht)(delta-wd,delta-ht)[initial-X-integer,initial-Y-integer]
+% example: 1. \put(0,0){\grid(95,100)(9.5,10)}
+% 2. \put(0,0){\grid(100,100)(10,5)[-10,0]}
+% or \put(0,0){\tiny \grid(100,100)(5,5)[0,0]}%numbers in \tiny font
+%----------------------------------------------------------------------
+\newcount\d@lta
+\newdimen\@delta
+\newdimen\@@delta
+\newcount\@gridcnt
+\def\grid(#1,#2)(#3,#4){\@ifnextchar [{\@igrid(#1,#2)(#3,#4)}%
+{\@igrid(#1,#2)(#3,#4)[@,@]}}
+
+\long\def\@igrid(#1,#2)(#3,#4)[#5,#6]{%
+\makebox(#1,#2){%
+\@delta=#1pt\@@delta=#3pt\divide\@delta \@@delta\d@lta=\@delta%
+\advance\d@lta \@ne\relax\message{grid=\the\d@lta\space x}%
+%% copied the definition of \line(0,1){#2} for some efficiency!.
+\multiput(0,0)(#3,0){\d@lta}{\hbox to\z@{\hskip -\@halfwidth \vrule
+ \@width \@wholewidth \@height #2\unitlength \@depth \z@\hss}}%
+\ifx#5@\relax\else%
+\global\@gridcnt=#5%
+\multiput(0,0)(#3,0){\d@lta}{%
+\makebox(0,-2)[t]{\number\@gridcnt\global\advance\@gridcnt by #3}}%
+\global\@gridcnt=#5%
+\multiput(0,#2)(#3,0){\d@lta}{\makebox(0,0)[b]{\number\@gridcnt\vspace{2mm}%
+\global\advance\@gridcnt by #3}}%
+\fi%
+\@delta=#2pt\@@delta=#4pt\divide\@delta \@@delta\d@lta=\@delta%
+\advance\d@lta \@ne\relax\message{\the\d@lta . }%
+%% copied the definition of \line(1,0){#1} for some efficiency!.
+\multiput(0,0)(0,#4){\d@lta}{\vrule \@height \@halfwidth \@depth \@halfwidth
+ \@width #1\unitlength}%
+\ifx#6@\relax\else
+\global\@gridcnt=#6%
+\multiput(0,0)(0,#4){\d@lta}{%
+\makebox(0,0)[r]{\number\@gridcnt\ \global\advance\@gridcnt by #4}}%
+\global\@gridcnt=#6%
+\multiput(#1,0)(0,#4){\d@lta}{%
+\makebox(0,0)[l]{\ \number\@gridcnt\global\advance\@gridcnt by #4}}%
+\fi}}
+%----------------------------------------------------------------------
+% \picsquare is a centered square of dimensions governed by \thinlines,
+% \thicklines or \linethickness declarations.
+\def\picsquare{\hskip -0.5\@wholewidth%
+\vrule height \@halfwidth depth \@halfwidth width \@wholewidth}
+%
+% just a square dot with reference point at bottom-left
+\def\picsquare@bl{\vrule height \@wholewidth depth \z@ width \@wholewidth}
+%----------------------------------------------------------------------
+% \begin{dottedjoin}{interdot-gap in units}
+% .....
+% \end{dottedjoin}
+% \begin{dashjoin}{dash-length in units}{interdotgap in each dash}
+% .....
+% \end{dashjoin}
+% \begin{drawjoin}
+% .....
+% \end{drawjoin}
+% \jput(x,y){character}
+% \dottedline[opt. dotcharacter]{dotgap in units}(x1,y1)(x2,y2)...(xN,yN)
+% \dashline[#]{dash-length}[opt. dotgap](x1,y1)(x2,y2)...(xN,yN)
+% \drawline[#](x1,y1)(x2,y2)...(xN,yN)
+%----------------------------------------------------------------------
+% definitions for *join environment. had to do all this mess because of
+% optional arguments.
+%----------------------------------------------------------------------
+\newif\if@jointhem \global\@jointhemfalse
+\newif\if@firstpoint \global\@firstpointtrue
+\newcount\@joinkind
+%\newenvironment{dottedjoin}[1]%[opt char]{dotgap}
+%{\global\@jointhemtrue \gdef\dotgap@join{#1}\global\@joinkind=0\relax}%
+%{\global\@jointhemfalse \global\@firstpointtrue}
+%----------------------------------------------------------------------
+\def\dottedjoin{\global\@jointhemtrue \global\@joinkind=0\relax
+ \bgroup\@ifnextchar[{\@idottedjoin}{\@idottedjoin[\picsquare@bl]}}
+\def\@idottedjoin[#1]#2{\gdef\dotchar@join{#1}\gdef\dotgap@join{#2}}
+\def\enddottedjoin{\global\@jointhemfalse \global\@firstpointtrue\egroup}
+%----------------------------------------------------------------------
+\def\dashjoin{\global\@jointhemtrue \global\@joinkind=1\relax
+ \bgroup\@ifnextchar[{\@idashjoin}{\@idashjoin[\dashlinestretch]}}
+\def\@idashjoin[#1]#2{\edef\dashlinestretch{#1}\gdef\dashlen@join{#2}%
+\@ifnextchar[{\@iidashjoin}{\gdef\dotgap@join{}}}
+\def\@iidashjoin[#1]{\gdef\dotgap@join{#1}}
+\let\enddashjoin\enddottedjoin
+%----------------------------------------------------------------------
+\def\drawjoin{\global\@jointhemtrue \global\@joinkind=2\relax
+ \bgroup\@ifnextchar[{\@idrawjoin}{}}
+\def\@idrawjoin[#1]{\def\drawlinestretch{#1}}
+\let\enddrawjoin\enddottedjoin
+%----------------------------------------------------------------------
+%% this is equiv to \put(x,y){#1} when not in {dot*join} environment.
+\long\def\jput(#1,#2)#3{{\@killglue\raise#2\unitlength\hbox to \z@{\hskip
+#1\unitlength #3\hss}\ignorespaces}
+\if@jointhem
+ \if@firstpoint \gdef\x@one{#1} \gdef\y@one{#2} \global\@firstpointfalse
+ \else\ifcase\@joinkind
+ \@dottedline[\dotchar@join]{\dotgap@join\unitlength}%
+(\x@one\unitlength,\y@one\unitlength)(#1\unitlength,#2\unitlength)
+ \or\@dashline[\dashlinestretch]{\dashlen@join}[\dotgap@join]%
+(\x@one,\y@one)(#1,#2)
+ \else\@drawline[\drawlinestretch](\x@one,\y@one)(#1,#2)\fi
+ \gdef\x@one{#1} \gdef\y@one{#2}
+ \fi
+\fi}
+%----------------------------------------------------------------------
+\newdimen\@dotgap
+\newdimen\@ddotgap
+\newcount\@x@diff
+\newcount\@y@diff
+\newdimen\x@diff
+\newdimen\y@diff
+\newbox\@dotbox
+\newcount\num@segments
+\newcount\num@segmentsi
+\newif\ifsqrt@done
+%% from sqrtandstuff func basically need \num@segments.
+%% given a deltax, deltay and dotgap, it calculates \num@segments = number of
+%% segments along the hypotenuse. used by \dottedline & \dashline.
+%% It finishes quickly if any of deltax or deltay are zero or close to zero.
+\def\sqrtandstuff#1#2#3{
+\ifdim #1 <0pt \@x@diff= -#1 \else\@x@diff=#1\fi
+\ifdim #2 <0pt \@y@diff= -#2 \else\@y@diff=#2\fi
+%% @diff's will be positive and diff's will retain their sign.
+\@dotgap=#3 \divide\@dotgap \tw@
+\advance\@x@diff \@dotgap \advance\@y@diff \@dotgap% for round-off errors
+\@dotgap=#3
+\divide\@x@diff \@dotgap \divide\@y@diff \@dotgap
+\sqrt@donefalse
+\ifnum\@x@diff < 2
+ \ifnum\@y@diff < 2 \num@segments=\@x@diff \advance\num@segments \@y@diff
+ \sqrt@donetrue
+ \else\num@segments=\@y@diff \sqrt@donetrue\fi
+ \else\ifnum\@y@diff < 2 \num@segments=\@x@diff \sqrt@donetrue\fi
+\fi
+\ifsqrt@done \ifnum\num@segments=\z@ \num@segments=\@ne\fi\relax
+ \else \ifnum\@y@diff >\@x@diff
+ \@tempcnta=\@x@diff \@x@diff=\@y@diff \@y@diff=\@tempcnta
+ \fi %exchange @x@diff & @y@diff, so now @x@diff > @y@diff
+ \num@segments=\@y@diff
+ \multiply\num@segments \num@segments
+ \multiply\num@segments by 457
+ \divide\num@segments \@x@diff
+ \advance\num@segments by 750 % for round-off, going to divide by 1000.
+ \divide\num@segments \@m
+ \advance\num@segments \@x@diff
+ %num@segments = @x@diff + (0.457*sqr(@y@diff)/@x@diff)
+\fi}
+%----------------------------------------------------------------------
+% \dottedline[opt. char]{interdot gap in units}(x1,y1)(x2,y2)....(xN,yN)
+%----------------------------------------------------------------------
+%% Used the following construction earlier but that results in box memory
+%% full much too soon although it works perfectly.
+%% \setbox\@dotbox\vbox to\z@{\vss \hbox to\z@{\hss #1\hss}\vss}\relax}
+%% The cenetering of characters is achieved by substracting half the ht, wd
+%% of character from the (x,y) coordinates where they are to be put. We
+%% chose to use a macro for the ``dot'' instead of \copy\box to save memory
+%% at the expense of extra cpu, since memory becomes an issue very soon.
+%% \picsquare is already centered, whereas other characters, except \circle,
+%% will not be cenetered, hence to handle them all in a similar fashion,
+%% used \picsquare@bl.
+%
+% kind of tail recursion.
+\def\dottedline{\@ifnextchar [{\@idottedline}{\@idottedline[\picsquare@bl]}}
+\def\@idottedline[#1]#2(#3,#4){\@ifnextchar (%
+{\@iidottedline[#1]{#2}(#3,#4)}{\relax}}
+\def\@iidottedline[#1]#2(#3,#4)(#5,#6){\@dottedline[#1]{#2\unitlength}%
+(#3\unitlength,#4\unitlength)(#5\unitlength,#6\unitlength)%
+\@idottedline[#1]{#2}(#5,#6)}
+%
+%% user not supposed to use this directly. arguments in absolute dimensions.
+%% need to pass absolute dimens here because dashline calls dottedline and
+%% can supply only absolute dimensions.
+\long\def\@dottedline[#1]#2(#3,#4)(#5,#6){{%
+\x@diff=#5\relax\advance\x@diff by -#3\relax
+\y@diff=#6\relax\advance\y@diff by -#4\relax
+\sqrtandstuff{\x@diff}{\y@diff}{#2}
+\divide\x@diff \num@segments
+\divide\y@diff \num@segments
+\advance\num@segments \@ne % to put the last point at destination.
+%%\typeout{num@segments= \the\num@segments}
+\setbox\@dotbox\hbox{#1}% just to get the dimensions of the character.
+\@xdim=#3 \@ydim=#4
+\ifdim\ht\@dotbox >\z@% otherwise its a circle.
+ \advance\@xdim -0.5\wd\@dotbox
+ \advance\@ydim -0.5\ht\@dotbox
+ \advance\@ydim .5\dp\@dotbox\fi
+%%circle's have a ht=0, this is one way I could think of to catch circles.
+%%following loop is equiv to
+%%\multiput(\@xdim,\@ydim)(\x@diff,\y@diff){\num@segments}{#1}
+%%with arguments in absolute dimensions.
+\@killglue
+\loop \ifnum\num@segments > 0
+\unskip\raise\@ydim\hbox to\z@{\hskip\@xdim #1\hss}%
+\advance\num@segments \m@ne\advance\@xdim\x@diff\advance\@ydim\y@diff%
+\repeat
+\ignorespaces}}
+%----------------------------------------------------------------------
+% \dashline[#]{dash-length}[optional dotgap](x1,y1)(x2,y2)...(xN,yN)
+% The minimum # of dashes put is 2, one at either end point; dash-length is
+% reduced accordingly if necessary. Also have to some dirty work to account
+% for stretch & shrink.
+% \renewcommand{\dashlinestretch}{-50} %ONLY INTEGERS PERMITTED.
+%----------------------------------------------------------------------
+\def\dashlinestretch{0} %well, could have used a counter.
+\def\dashline{\@ifnextchar [{\@idashline}{\@idashline[\dashlinestretch]}}
+\def\@idashline[#1]#2{\@ifnextchar [{\@iidashline[#1]{#2}}%
+{\@iidashline[#1]{#2}[\@empty]}} %\@empty needed-- later checked with \ifx
+\def\@iidashline[#1]#2[#3](#4,#5){\@ifnextchar (%
+{\@iiidashline[#1]{#2}[#3](#4,#5)}{\relax}}
+%
+\def\@iiidashline[#1]#2[#3](#4,#5)(#6,#7){%
+\@dashline[#1]{#2}[#3](#4,#5)(#6,#7)%
+\@iidashline[#1]{#2}[#3](#6,#7)}
+%
+\long\def\@dashline[#1]#2[#3](#4,#5)(#6,#7){{%
+\x@diff=#6\unitlength \advance\x@diff by -#4\unitlength
+\y@diff=#7\unitlength \advance\y@diff by -#5\unitlength
+%% correction to get actual width since the dash-length as taken in arguement
+%% is the center-to-center of the end-points.
+\@tempdima=#2\unitlength \advance\@tempdima -\@wholewidth
+\sqrtandstuff{\x@diff}{\y@diff}{\@tempdima}
+\ifnum\num@segments <3 \num@segments=3\fi% min number of dashes I can plot
+% is 2, 1 at either end, thus min num@segments is 3 (including 'empty dash').
+\@tempdima=\x@diff \@tempdimb=\y@diff
+\divide\@tempdimb by\num@segments
+\divide\@tempdima by\num@segments
+%% ugly if-then-else. If optional dotgap specified, then use it otherwise
+%% make a solid looking dash.
+{\ifx#3\@empty \relax
+ \ifdim\@tempdima < 0pt \x@diff=-\@tempdima\else\x@diff=\@tempdima\fi
+ \ifdim\@tempdimb < 0pt \y@diff=-\@tempdimb\else\y@diff=\@tempdimb\fi
+ \ifdim\x@diff < 0.3pt %it's a vertical dashline
+ \ifdim\@tempdimb > 0pt
+ \global\setbox\@dotbox\hbox{\hskip -\@halfwidth \vrule
+ \@width \@wholewidth \@height \@tempdimb}
+ \else\global\setbox\@dotbox\hbox{\hskip -\@halfwidth \vrule
+ \@width \@wholewidth \@height\z@ \@depth -\@tempdimb}\fi
+ \else\ifdim\y@diff < 0.3pt %it's a horizontal dashline
+ \ifdim\@tempdima >0pt
+ \global\setbox\@dotbox\hbox{\vrule \@height \@halfwidth
+ \@depth \@halfwidth \@width \@tempdima}
+ \else\global\setbox\@dotbox\hbox{\hskip \@tempdima
+ \vrule \@height \@halfwidth \@depth \@halfwidth
+ \@width -\@tempdima \hskip \@tempdima}\fi
+ \else\global\setbox\@dotbox\hbox{%
+\@dottedline[\picsquare]{0.98\@wholewidth}(0pt,0pt)(\@tempdima,\@tempdimb)}
+\fi\fi
+\else\global\setbox\@dotbox\hbox{%
+\@dottedline[\picsquare]{#3\unitlength}(0pt,0pt)(\@tempdima,\@tempdimb)}
+\fi}
+\advance\x@diff by -\@tempdima % both have same sign
+\advance\y@diff by -\@tempdimb
+%
+%%here we correct the number of dashes to be put by reducing them
+%%appropriately. (num@segments*\@wholewidth) is in some way the slack we
+%%have,and division by dash-length gives the reduction. reduction =
+%%(2*num@segments*\@wholewidth)/dash-length
+%% (num@segments includes empty ones)
+\@tempdima=\num@segments\@wholewidth \@tempdima=2\@tempdima
+\@tempcnta=\@tempdima \@tempdima=#2\unitlength \@tempdimb=0.5\@tempdima
+\@tempcntb=\@tempdimb \advance\@tempcnta by \@tempcntb % round-off error
+\divide\@tempcnta by\@tempdima \advance\num@segments by -\@tempcnta
+%
+\ifnum #1=0 \relax\else\ifnum #1 < -100
+ \typeout{***dashline: reduction > -100 percent implies blankness!***}
+\else\num@segmentsi=#1 \advance\num@segmentsi by 100
+ \multiply\num@segments by\num@segmentsi \divide\num@segments by 100
+\fi\fi
+%
+\divide\num@segments by 2 % earlier num@segments included 'empty dashes' too.
+\ifnum\num@segments >0 % if =0 then don't divide => \x@diff & \y@diff
+ \divide\x@diff by\num@segments% remain same.
+ \divide\y@diff by\num@segments
+ \advance\num@segments by\@ne %for the last segment for which I subtracted
+ %\@tempdima & \@tempdimb from \x@diff & \y@diff
+ \else\num@segments=2 % one at each end.
+\fi
+%%\typeout{num@segments finally = \the\num@segments}
+%% equiv to \multiput(#4,#5)(\x@diff,\y@diff){\num@segments}{\copy\@dotbox}
+%% with arguements in absolute dimensions.
+\@xdim=#4\unitlength \@ydim=#5\unitlength
+\@killglue
+\loop \ifnum\num@segments > 0
+\unskip\raise\@ydim\hbox to\z@{\hskip\@xdim \copy\@dotbox\hss}%
+\advance\num@segments \m@ne\advance\@xdim\x@diff\advance\@ydim\y@diff%
+\repeat
+\ignorespaces}}
+%----------------------------------------------------------------------
+%%1.00 .833333 .80 .75 .66666 .60 .50 .40 .33333 .25 .20 .16666
+%% .916666 .816666 .775 .708333 .633333 .55 .45 .366666 .291666 .225 .183333
+%% 0.0
+%%0.083333
+%% the first line has absolute slopes corresponding to various permissible
+%% integer combinations representing slopes. The second line is the midpoint
+%% of all those slopes (attempted to show them in the middle of two entries).
+%%
+%% \lineslope(x@diff dimen, y@diff dimen)
+%% Given base (x@diff) and height (y@diff) in dimensions, determines the
+%% closest available slope and returns the two required integers in \@xarg
+%% and \@yarg. The given base and height can be ANYTHING, -ve or +ve, or
+%% even 0pt. \lineslope knows about (0,1) and (1,0) slopes too and returns
+%% correct values if the conditions regarding x@diff & y@diff are obeyed
+%% (see NOTE). Used by \drawline. This is the simplest and only way I could
+%% figure out to accomplish it!.
+%% NOTE: both the dimensions (x@diff & y@diff) must be in SAME units and the
+%% larger of the two dimensions must be atleast 1pt (i.e. 65536sp). To avoid
+%% dividing by 0, I make the larger dimension = 1pt if it is < 1pt.
+%% will need a similar one for vectors, or maybe this can be used. For
+%% vectors the range is -4, 4 unlike lines where it is -6, 6.
+\newif\if@flippedargs
+\def\lineslope(#1,#2){%
+\ifdim #1 <0pt \@xdim= -#1 \else\@xdim=#1\fi
+\ifdim #2 <0pt \@ydim= -#2 \else\@ydim=#2\fi
+%%\typeout{xdim,ydim= \the\@xdim, \the\@ydim}
+\ifdim\@xdim >\@ydim \@tempdima=\@xdim \@xdim=\@ydim \@ydim=\@tempdima
+\@flippedargstrue\else\@flippedargsfalse\fi% x < y
+\ifdim\@ydim >1pt \@tempcnta=\@ydim
+ \divide\@tempcnta by 65536% now \@tempcnta=integral part of #1.
+ \divide\@xdim \@tempcnta\fi
+\ifdim\@xdim <.083333pt \@xarg=1 \@yarg=0
+ \else\ifdim\@xdim <.183333pt \@xarg=6 \@yarg=1
+ \else\ifdim\@xdim <.225pt \@xarg=5 \@yarg=1
+ \else\ifdim\@xdim <.291666pt \@xarg=4 \@yarg=1
+ \else\ifdim\@xdim <.366666pt \@xarg=3 \@yarg=1
+ \else\ifdim\@xdim <.45pt \@xarg=5 \@yarg=2
+ \else\ifdim\@xdim <.55pt \@xarg=2 \@yarg=1
+ \else\ifdim\@xdim <.633333pt \@xarg=5 \@yarg=3
+ \else\ifdim\@xdim <.708333pt \@xarg=3 \@yarg=2
+ \else\ifdim\@xdim <.775pt \@xarg=4 \@yarg=3
+ \else\ifdim\@xdim <.816666pt \@xarg=5 \@yarg=4
+ \else\ifdim\@xdim <.916666pt \@xarg=6 \@yarg=5
+ \else \@xarg=1 \@yarg=1%
+\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+\if@flippedargs\relax\else\@tempcnta=\@xarg \@xarg=\@yarg
+ \@yarg=\@tempcnta\fi
+\ifdim #1 <0pt \@xarg= -\@xarg\fi
+\ifdim #2 <0pt \@yarg= -\@yarg\fi
+%%\typeout{closest slope integers = \the\@xarg, \the\@yarg}
+}
+%----------------------------------------------------------------------
+% usage: \drawline[#](x1,y1)(x2,y2)....(xN,yN)
+% % # is an optional integer between -100 & infinity.
+% \renewcommand{\drawlinestretch}{-50} %ONLY INTEGERS PERMITTED.
+%----------------------------------------------------------------------
+\newif\if@toosmall
+\newif\if@drawit
+\newif\if@horvline
+\def\drawlinestretch{0} %well, could have used a counter.
+% kind of tail recursion.
+\def\drawline{\@ifnextchar [{\@idrawline}{\@idrawline[\drawlinestretch]}}
+\def\@idrawline[#1](#2,#3){\@ifnextchar ({\@iidrawline[#1](#2,#3)}{\relax}}
+\def\@iidrawline[#1](#2,#3)(#4,#5){\@drawline[#1](#2,#3)(#4,#5)
+\@idrawline[#1](#4,#5)}
+%
+\def\@drawline[#1](#2,#3)(#4,#5){{%
+\x@diff=#4\unitlength \advance\x@diff by -#2\unitlength
+\y@diff=#5\unitlength \advance\y@diff by -#3\unitlength
+%% override any linethickness declarations, and since horiz & vertical lines
+%% come out thinner than the slanted ones, assign slightly larger values.
+%% default values are: thinlines=0.4pt, thicklines=0.8pt
+\ifx\@linefnt\tenln \linethickness{0.5pt} \else \linethickness{0.9pt}\fi
+\lineslope(\x@diff,\y@diff)% returns the two integers in \@xarg & \@yarg.
+%------
+\@toosmalltrue
+{\ifdim\x@diff <\z@ \x@diff=-\x@diff\fi
+ \ifdim\y@diff <\z@ \y@diff=-\y@diff\fi
+ \ifdim\x@diff >10pt \global\@toosmallfalse\fi
+ \ifdim\y@diff >10pt \global\@toosmallfalse\fi}
+%------
+%% For efficiency, if the line is horiz or vertical then we draw it in one
+%% shot, only if the stretch is not -ve and the line is not too small.
+\@drawitfalse\@horvlinefalse
+\ifnum#1 <0 \relax\else\@horvlinetrue\fi
+\if@toosmall\@horvlinetrue\fi% to get 'or' condition. We necessarily draw a
+% solid line if the line is too small ignoring any -ve stretch.
+\if@horvline
+ \ifdim\x@diff =0pt \put(#2,#3){\ifdim\y@diff >0pt \@linelen=\y@diff \@upline
+ \else\@linelen=-\y@diff \@downline\fi}%
+ \else\ifdim\y@diff =0pt
+ \ifdim\x@diff >0pt \put(#2,#3){\vrule \@height \@halfwidth \@depth
+ \@halfwidth \@width \x@diff}
+ \else \put(#4,#5){\vrule \@height \@halfwidth \@depth
+ \@halfwidth \@width -\x@diff}\fi
+ \else\@drawittrue\fi\fi % construct the line explicitly
+\else\@drawittrue\fi
+%-------------------------------
+\if@drawit
+\ifnum\@xarg< 0 \@negargtrue\else\@negargfalse\fi
+\ifnum\@xarg =0 \setbox\@linechar%
+\hbox{\hskip -\@halfwidth \vrule \@width \@wholewidth \@height 10.2pt
+ \@depth \z@}
+\else \ifnum\@yarg =0 \setbox\@linechar%
+\hbox{\vrule \@height \@halfwidth \@depth \@halfwidth \@width 10.2pt}
+\else \if@negarg \@xarg -\@xarg \@yyarg -\@yarg
+ \else \@yyarg \@yarg\fi
+\ifnum\@yyarg >0 \@tempcnta\@yyarg \else \@tempcnta -\@yyarg\fi
+\setbox\@linechar\hbox{\@linefnt\@getlinechar(\@xarg,\@yyarg)}%
+\fi\fi
+%------
+\if@toosmall% => it isn't a horiz or vert line and is toosmall.
+ \@dottedline[\picsquare]{.98\@wholewidth}%
+(#2\unitlength,#3\unitlength)(#4\unitlength,#5\unitlength)%
+\else
+%% following is neat. The last segment takes \wd\@linechar & \ht\@linechar
+%% so plot the line as though it were from (#2,#3) to
+%% (#4-\wd\@linechar,#5-\ht\@linechar) (i.e. for positive slope; of course,
+%% signs are reversed for other slopes). For horizontal & vertical dashes we
+%% don't have to subtract the ht & wd resp. since they are already centered.
+\ifnum\@xarg=0\relax\else\ifdim\x@diff >\z@ \advance\x@diff -\wd\@linechar
+ \else\advance\x@diff \wd\@linechar\fi\fi
+\ifnum\@yarg=0\relax\else\ifdim\y@diff >\z@\advance\y@diff -\ht\@linechar
+ \else\advance\y@diff \ht\@linechar\fi\fi
+\ifdim\x@diff <\z@ \@x@diff=-\x@diff \else\@x@diff=\x@diff\fi
+\ifdim\y@diff <\z@ \@y@diff=-\y@diff \else\@y@diff=\y@diff\fi
+%%\typeout{x@diff,y@diff=\the\x@diff , \the\y@diff}
+\num@segments=0 \num@segmentsi=0
+\ifdim\wd\@linechar >1pt
+ \num@segmentsi=\@x@diff \divide\num@segmentsi \wd\@linechar\fi
+\ifdim\ht\@linechar >1pt
+ \num@segments=\@y@diff \divide\num@segments \ht\@linechar\fi
+\ifnum\num@segmentsi >\num@segments \num@segments=\num@segmentsi\fi
+\advance\num@segments \@ne %to account for round-off error
+%
+\ifnum #1=0 \relax \else\ifnum #1 < -99
+ \typeout{***drawline: reduction <= -100 percent implies blankness!***}
+\else\num@segmentsi=#1 \advance\num@segmentsi by 100
+ \multiply\num@segments \num@segmentsi
+ \divide\num@segments by 100
+\fi\fi
+%%\typeout{num@segments after = \the\num@segments}
+%
+\divide\x@diff \num@segments
+\divide\y@diff \num@segments
+\advance\num@segments \@ne %for the last segment for which I subtracted
+ %\wd & \ht of \@linechar from \@x@diff & \@y@diff.
+%%\typeout{numseg,x@diff,y@diff= \the\num@segments, \the\x@diff, \the\y@diff}
+%
+\@xdim=#2\unitlength \@ydim=#3\unitlength
+\if@negarg \advance\@xdim -\wd\@linechar\fi
+\ifnum\@yarg <0 \advance\@ydim -\ht\@linechar\fi
+%%following loop equiv to \multiput@abs(\@xdim,\@ydim)%
+%%(\x@diff,\y@diff){\num@segments}{\copy\@linechar}
+%%with arguements in absolute dimensions.
+\@killglue
+\loop \ifnum\num@segments > 0
+\unskip\raise\@ydim\hbox to\z@{\hskip\@xdim \copy\@linechar\hss}%
+\advance\num@segments \m@ne\advance\@xdim\x@diff\advance\@ydim\y@diff%
+\repeat
+\ignorespaces
+\fi%the if of @toosmall
+\fi}}% for \if@drawit
+%----------------------------------------------------------------------
+%usage: \putfile{datafile}{OBJECT}
+% The OBJECT is plotted at EACH of the coordinates read from the datafile.
+% The idea of these macros is to generate (x,y) pairs using some program
+% and then directly use those coordinates. Since TeX doesn't have real
+% floating point calculations, it is much more efficient and accurate to do
+% things this way. One can also use the unix facility 'spline' now to
+% generate smooth curves with equidistant ``dots''.
+% NOTE: the external file of coordinates must have x y pairs with a space
+% between them. Also it is suggested that some extension such as '.put'
+% be used for such datafiles to distinguish them in which case it must
+% be explicitely specified in the 1st argument so that TeX doesn't look
+% for a .tex extension.
+% The % char remains valid as a comment char and such lines are ignored;
+% however, there should be atleast one space after the second entry if a
+% comment is on the same line as data since % eats up the newline.
+%-----------------------------------------------------------------------
+\long\def\splittwoargs#1 #2 {(#1,#2)}
+%
+\newif\if@stillmore
+\newread\@datafile
+\long\def\putfile#1#2{\openin\@datafile = #1
+\@stillmoretrue
+\loop
+\ifeof\@datafile\relax\else\read\@datafile to\@dataline\fi
+%if file nonexistent, do nothing.
+\ifeof\@datafile\@stillmorefalse
+\else\ifx\@dataline\@empty \relax
+ \else
+\expandafter\expandafter\expandafter\put\expandafter\splittwoargs%
+\@dataline{#2}
+ \fi
+\fi
+\if@stillmore
+\repeat
+\closein\@datafile
+}
+%----------------------------------------------------------------------
+\makeatother
+
diff --git a/Tex/old_master/multido.sty b/Tex/old_master/multido.sty
new file mode 100644
index 0000000..1b118cc
--- /dev/null
+++ b/Tex/old_master/multido.sty
@@ -0,0 +1,27 @@
+%%
+%% This is file `multido.sty'.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% multido.sty Copyright (C) 1997 Timothy Van Zandt
+%% (C) 2004 Herbert Voss <voss@perce.de>
+%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+
+\ProvidesPackage{multido}
+ [2004/05/17 package wrapper for PSTricks `multido.tex', (HV/RN)]
+
+\@ifundefined{MultidoLoaded}
+{%
+ \input{multido.tex}
+ \ProvidesFile{multido.tex}
+ [\filedate\space v\fileversion\space `multido' (tvz)]
+}{}
+
+\endinput
+%%
+%% End of file `multido.sty'.
diff --git a/Tex/old_master/multido.tex b/Tex/old_master/multido.tex
new file mode 100644
index 0000000..d642ec7
--- /dev/null
+++ b/Tex/old_master/multido.tex
@@ -0,0 +1,311 @@
+%% BEGIN multido.tex
+%%
+\def\fileversion{1.41}
+\def\filedate{2004/05/18}
+%%
+%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
+%% Version 1.41 (2004) prepared by Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+%% Herbert Voss <voss@perce.de>
+%%
+%%
+%% 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.
+%%
+%% DESCRIPTION:
+%% multido.tex/multido.sty contains a loop macro, \multido, that supports
+%% fixed-point addition and has a nice interface. Among other things, it
+%% is useful for pictures and putting numbers on axes. multido.tex
+%% is compatible with most TeX macro packages, including Plain TeX, LaTeX,
+%% AmSTeX, and Ams-LaTeX.
+%%
+%% INSTALLATION:
+%% Put this file where your TeX looks for inputs, under the name multido.tex.
+%% Use the file multido.sty with LaTeX.
+%%
+%% DOCUMENTATION:
+%% See multido.doc.
+%%
+%% COPYING:
+%% Copying of part or all of this file is allowed under the following
+%% conditions only:
+%% (1) You may freely distribute unchanged copies of the file. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of the file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the file, for personal use or for
+%% distribution, as long as credit is given where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+%% CODE:
+% These macros use TeX primitives, plus the Plain TeX commands:
+% \dimen@, \dimen@i, \count@, \newcount, \newtoks, \@ne, \tw@, \@z@.
+%
+% Check if file is loaded, announce file on terminal, and take care of @:
+%
+
+
+\message{ v\fileversion, \filedate\space <tvz>}
+
+\csname MultidoLoaded\endcsname
+\let\MultidoLoaded\endinput
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% These are some useful hacks. "\multido@dimtonum" strips the value of "#1",
+% a dimension register, of the "pt", and assigns the result to "#2",
+% a command sequence.
+
+\def\@empty{}
+\def\@nnil{\@nil}
+\def\multido@dimtonum#1#2{\edef#2{\multido@@dimtonum#1}}
+\def\multido@@dimtonum#1{\expandafter\multido@@@dimtonum\the#1}
+\edef\next{%
+ \noexpand\def\noexpand\multido@@@dimtonum##1\string p\string t{##1}}
+\next
+
+% "\multido@count" stores the number of repetitions. "\multidocount" keeps
+% track of the iteration. These are also used locally as scratch counters
+% by "\FPadd@". "\multido@stuff" is used to store the <stuff> that is
+% to be repeated.
+
+\newcount\multido@count
+\newcount\multidocount
+\newtoks\multido@stuff
+
+\def\multido{\multido@{}{\begingroup}{\endgroup}}
+\def\mmultido{\multido@{\multido@stepvar}{\begingroup}{\endgroup}}
+\def\Multido{\multido@{}{}{}}
+\def\MMultido{\multido@{\multido@stepvar}{}{}}
+
+% "\multido@initvar" processes the variable declarations, initializing
+% the value of the variables and defining "\multido@stepvar" to increment
+% the variables with each repetition. "\multido@count" is set to the number
+% of repetitions.
+
+\long\def\multido@#1#2#3#4#5#6{%
+ #2%
+ \multido@count=#5\relax
+ \ifnum\multido@count=\z@\else\multido@@{#1}{#4}{#6}\fi
+ #3%
+ \ignorespaces}
+\def\multido@@#1#2#3{%
+ \def\multido@stepvar{}%
+ \def\do{\noexpand\do\noexpand}%
+ \multido@initvar#2,\@nil,%
+ \let\do\noexpand
+ \edef\multido@stepvar{\multido@stepvar}%
+ \ifnum\multido@count<\z@\multido@count=-\multido@count\fi
+ \multidocount=1\relax
+ #1%
+ \multido@stuff{#3}%
+ \multido@loop}
+\def\multido@loop{%
+ \the\multido@stuff
+ \ifnum\multidocount<\multido@count
+ \advance\multidocount\@ne
+ \multido@stepvar
+ \expandafter\multido@loop
+ \fi}
+\def\multidostop{\multidocount=\multido@count}
+\def\multido@badvar{%
+ \multido@count=0
+ \errhelp{\multido command will be skipped.}%
+ \errmessage{Bad \string\multido\space variable declaration}}
+\def\multido@initvar#1,{%
+ \def\multido@temp{#1}%
+ \ifx\multido@temp\@nnil\else
+ \ifx\multido@temp\@empty\else
+ \multido@@initvar#1\@nil=+\@nil\relax
+ \fi
+ \expandafter\multido@initvar
+ \fi}
+\def\multido@@initvar#1=#2+#3\@nil#4\relax{%
+ \ifx\@empty#4\@empty
+ \multido@badvar
+ \else
+ \multido@vartype#1\@empty
+ \ifx\multido@temp\relax
+ \multido@badvar
+ \else
+ \multido@temp{#2}{#3}#1%
+ \fi
+ \fi}
+\def\multido@vartype#1{%
+ \ifcat\noexpand\@nil\noexpand#1%
+ \expandafter\multido@@vartype\string#1\@nil
+ \else
+ \let\multido@temp\relax
+ \fi}
+\def\multido@@vartype#1#2#3\@nil{%
+ \expandafter\let\expandafter\multido@temp
+ \csname multido@init@#2\endcsname}
+\def\MultidoCheckNames{%
+ \let\multido@@@vartype\multido@vartype
+ \def\multido@vartype##1{%
+ \ifx\undefined##1%
+ \multido@@@vartype{##1}%
+ \else
+ \errhelp{\multido command will be skipped.}%
+ \errmessage{Multido variable \string##1 already defined}%
+ \let\multido@temp\relax
+ \fi}}
+
+% For each variable type, we must now define \multido@init<vartype>.
+% The syntax of these macros is:
+%
+% \multido@init@<vartype>{initial value}{increment}{variable}
+%
+% and the outcome should be:
+%
+% 1. Set <variable> to the initial value.
+% 2. Invoke \multido@addtostep{step stuff}, where <step stuff> is
+% whatever should be done to increment the variable. <step stuff> is
+% expanded first, with expansion suppressed by "\do".
+
+\def\multido@addtostep#1{\edef\multido@stepvar{\multido@stepvar#1}}
+
+% Variable type for dimensions ("d", "D"):
+
+\def\multido@init@d#1#2#3{%
+ \expandafter\ifx\csname pssetlength\endcsname\relax
+ \dimen@=#1\relax\dimen@i=#2\relax
+ \else
+ \pssetlength\dimen@{#1}\pssetlength\dimen@i{#2}%
+ \fi
+ \edef#3{\number\dimen@ sp}%
+ \ifnum\multido@count<\z@\dimen@i=-\dimen@i\fi
+ \multido@addtostep{\do\multido@step@d{\do#3}{\number\dimen@i sp}}}
+\def\multido@step@d#1#2{%
+ \dimen@=#1\advance\dimen@#2
+ \edef#1{\number\dimen@ sp}}%
+\def\multido@init@D{\multido@init@d}
+
+% Variable type for integers ("i", "I"):
+
+\def\multido@init@i#1#2#3{%
+ \count@=#1\relax
+ \edef#3{\the\count@}%
+ \count@=#2\relax
+ \ifnum\multido@count<\z@\count@=-\count@\fi
+ \multido@addtostep{\do\multido@step@i{\do#3}{\the\count@}}}
+\def\multido@step@i#1#2{%
+ \count@=#1\advance\count@ by #2
+ \edef#1{\the\count@}}
+\def\multido@init@I{\multido@init@i}
+
+% Variable type for reals ("r", "R").
+
+\def\multido@init@r#1#2#3{%
+ \dimen@=#1pt
+ \multido@dimtonum\dimen@#3%
+ \dimen@=#2pt
+ \ifnum\multido@count<\z@\dimen@=-\dimen@\fi
+ \multido@addtostep{\do\multido@step@r{\do#3}{\number\dimen@ sp}}}
+\def\multido@step@r#1#2{%
+ \dimen@=#1pt\advance\dimen@#2
+ \multido@dimtonum\dimen@#1}
+\def\multido@init@R{\multido@init@r}
+
+% Variable type for numbers ("n", "N").
+
+\def\multido@init@n#1#2#3{%
+ \edef#3{#1}%
+ \ifnum\multido@count<\z@\expandafter\fpSub\else\expandafter\fpAdd\fi
+ {0}{#2}\multido@temp
+ \multido@addtostep{\do\fpAdd{\do#3}{\multido@temp}{\do#3}}}
+\def\multido@init@N{\multido@init@n}
+
+% Simple fixed-point addition couldn't be harder.
+% "\dimen@" and "\dimen@i" are used as scratch {\em counters} (to avoid
+% creating a new counter). "\count@", "\multido@count" and "\multidocount"
+% are also used as scratch counters.
+
+% This is probably pretty close to optimal, given the requirements that
+% leading and trailing spaces be OK in the arguments, and that there need
+% not be any numbers to the left of the decimal.
+
+% RN modification begin -- 2004/05/17; Rolf.Niepraschk@ptb.de
+% \def\FPadd#1#2#3{%
+% \edef\multido@temp{#1..\noexpand\@nil#2}%
+% \expandafter\FPadd@\multido@temp..\@nil
+% \let#3\multido@temp}
+% \def\FPsub#1#2{%
+% \edef\multido@temp{\noexpand\FPsub@#2\noexpand\@empty}%
+% \FPadd{#1}{\multido@temp}}
+\def\fpAdd#1#2#3{%
+ \edef\multido@temp{#1..\noexpand\@nil#2}%
+ \expandafter\FPadd@\multido@temp..\@nil
+ \let#3\multido@temp}
+\def\fpSub#1#2{%
+ \edef\multido@temp{\noexpand\FPsub@#2\noexpand\@empty}%
+ \fpAdd{#1}{\multido@temp}}
+\ifx\FPadd\undefined\let\FPadd\fpAdd\let\FPsub\fpSub\fi
+% RN modification end
+\def\FPsub@#1{\ifx-#1\else-#1\fi}
+\def\FPadd@#1.#2.#3\@nil#4.#5.#6\@nil{%
+ \begingroup
+ \def\multido@temp{\let\next\relax}%
+ \let\next\z@
+ \afterassignment\multido@temp\count@=#1\next
+ \dimen@i=0#2sp\relax
+ \let\next\z@
+ \afterassignment\multido@temp\multido@count=#4\next
+ \multidocount=0#5\relax
+ \dimen@=\number\count@ sp
+ \count@=\@ne
+ \FPadd@@@#500000000\@nil
+ \ifnum#11<\z@
+ \count@=-\tw@
+ \dimen@=-\dimen@
+ \fi
+ \ifnum#41<\z@
+ \count@=-\count@
+ \multido@count=-\multido@count
+ \fi
+ \ifnum\count@>\z@
+ \advance\multido@count\dimen@
+ \advance\multidocount\dimen@i
+ \ifnum\multidocount<\multido@temp\relax
+ \advance\multidocount\multido@temp\relax
+ \else
+ \advance\multido@count\@ne
+ \fi
+ \advance\count@-3
+ \else
+ \advance\multido@count-\dimen@
+ \advance\multidocount-\dimen@i
+ \ifnum\multido@count<\z@
+ \multido@count=-\multido@count
+ \multidocount=-\multidocount
+ \advance\count@\@ne
+ \else
+ \ifnum\multido@count=\z@
+ \ifnum\multidocount<\z@
+ \multidocount=-\multidocount
+ \advance\count@\@ne
+ \fi
+ \fi
+ \fi
+ \ifnum\multidocount<\z@
+ \advance\multidocount\multido@temp
+ \advance\multido@count-\@ne
+ \fi
+ \advance\multidocount\multido@temp\relax
+ \fi
+ \expandafter\FPadd@@\the\multidocount\@empty\@nil
+ \endgroup}
+\def\FPadd@@#1#2#3\@nil{\xdef\multido@temp{%
+ \ifnum\count@=-1-\fi
+ \the\multido@count\ifx#2\@empty\else.#2#3\fi}}
+\def\FPadd@@@#1#2#3#4#5#6#7#8#9\@nil{\def\multido@temp{1#9}}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+%%
+%% END multido.tex
diff --git a/Tex/old_master/vaucanson-g.sty b/Tex/old_master/vaucanson-g.sty
new file mode 100644
index 0000000..851ce6b
--- /dev/null
+++ b/Tex/old_master/vaucanson-g.sty
@@ -0,0 +1,14 @@
+\ProvidesPackage{vaucanson-g}[2003/05/09 package wrapper for Vaucanson-G]
+\DeclareOption{slides}{\AtEndOfPackage{\input VCPref-slides.tex}}
+\ProcessOptions
+\RequirePackage{ifthen}
+\RequirePackage[usenames]{pstcol}
+\RequirePackage{pst-node}
+\RequirePackage{pst-plot}
+\RequirePackage{pst-coil}
+%\RequirePackage{multido}
+\RequirePackage{pst-3d}
+\RequirePackage{color}
+\RequirePackage{calc}
+\input Vaucanson-G.tex
+\endinput