summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/grafcet/grafcet.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/grafcet/grafcet.sty')
-rw-r--r--Master/texmf-dist/tex/latex/grafcet/grafcet.sty620
1 files changed, 620 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/grafcet/grafcet.sty b/Master/texmf-dist/tex/latex/grafcet/grafcet.sty
new file mode 100644
index 00000000000..42864545bd8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/grafcet/grafcet.sty
@@ -0,0 +1,620 @@
+\NeedsTeXFormat{LaTeX2e}[1999/01/01]
+\ProvidesPackage{grafcet}[2007/03/05]
+
+\RequirePackage{tikz}
+\usetikzlibrary{shapes,arrows}
+\RequirePackage{ifthen}
+\RequirePackage{ifsym}
+%macros commande diverses
+
+
+\newcommand{\Etape}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\EtapeSeule}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\node (AX#2) at (X#2){};
+}
+\newcommand{\EtapeInit}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\path (X#2.north west) --++(0.3em,0) coordinate(NOh) -- (X#2.north east)--++(-0.3em,0)coordinate(NEh);
+\path (X#2.south west) --++(0.3em,0) coordinate(SOh) -- (X#2.south east)--++(-0.3em,0)coordinate(SEh);
+\path (X#2.north west) --++(0,-0.3em) coordinate(NOv) -- (X#2.south west)--++(0,0.3em)coordinate(SOv);
+\path (X#2.north east) --++(0,-0.3em) coordinate(NEv) -- (X#2.south east)--++(0,0.3em)coordinate(SEv);
+
+\draw (NOh|-NOv)coordinate(NO) -- (SOh|-SOv) coordinate (SO) -- (SEh|-SEv)coordinate(SE) -- (NEh|-NEv) -- cycle;
+%\node (coin1) at (X#2.north west)[minimum size=0.1em]{}{};
+%\node (coin2) at (X#2.south east)[minimum size=0.1em]{}{};
+%\draw (coin1.south east) rectangle (coin2.north west);
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\MacroEtape}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\node (coin1) at (X#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (X#2.south east)[minimum size=0.1em]{}{};
+\node (coin3) at (X#2.north east)[minimum size=0.1em]{}{};
+\node (coin4) at (X#2.south west)[minimum size=0.1em]{}{};
+\draw (coin1.south) -- (coin3.south);
+\draw (coin2.north) -- (coin4.north);
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+\newcommand{\MacroEtapeE}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\node (coin1) at (X#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (X#2.south east)[minimum size=0.1em]{}{};
+\node (coin3) at (X#2.north east)[minimum size=0.1em]{}{};
+\node (coin4) at (X#2.south west)[minimum size=0.1em]{}{};
+\draw (coin1.south) -- (coin3.south);
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\MacroEtapeS}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\node (coin1) at (X#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (X#2.south east)[minimum size=0.1em]{}{};
+\node (coin3) at (X#2.north east)[minimum size=0.1em]{}{};
+\node (coin4) at (X#2.south west)[minimum size=0.1em]{}{};
+\draw (coin2.north) -- (coin4.north);
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\EtapeEncapsulante}[2][NoeudGraf]{
+\node[inner sep=0,outer sep=0] (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+
+\path (X#2.north west) --++(0.8em,0) coordinate(NOh) -- (X#2.north east)--++(-0.8em,0)coordinate(NEh);
+\path (X#2.south west) --++(0.8em,0) coordinate(SOh) -- (X#2.south east)--++(-0.8em,0)coordinate(SEh);
+\path (X#2.north west) --++(0,-0.8em) coordinate(NOv) -- (X#2.south west)--++(0,0.8em)coordinate(SOv);
+\path (X#2.north east) --++(0,-0.8em) coordinate(NEv) -- (X#2.south east)--++(0,0.8em)coordinate(SEv);
+
+\draw (X#2.north west) -- (NOh) -- (NOv) -- cycle;
+\draw (X#2.south west) -- (SOh) -- (SOv) -- cycle;
+\draw (X#2.north east) -- (NEh) -- (NEv) -- cycle;
+\draw (X#2.south east) -- (SEh) -- (SEv) -- cycle;
+
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\EtapeEncapsulanteInit}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [draw, rectangle,
+ minimum height=2.5em,minimum width=2.5em] (X#2) {#2};
+\path (X#2.north west) --++(0.3em,0) coordinate(NOh) -- (X#2.north east)--++(-0.3em,0)coordinate(NEh);
+\path (X#2.south west) --++(0.3em,0) coordinate(SOh) -- (X#2.south east)--++(-0.3em,0)coordinate(SEh);
+\path (X#2.north west) --++(0,-0.3em) coordinate(NOv) -- (X#2.south west)--++(0,0.3em)coordinate(SOv);
+\path (X#2.north east) --++(0,-0.3em) coordinate(NEv) -- (X#2.south east)--++(0,0.3em)coordinate(SEv);
+
+\draw (NOh|-NOv)coordinate(NO) -- (SOh|-SOv) coordinate (SO) -- (SEh|-SEv)coordinate(SE) -- (NEh|-NEv)coordinate(NE) -- cycle;
+
+\path (NO) --++(0.5em,0) coordinate(NOh) -- (NE)--++(-0.5em,0)coordinate(NEh);
+\path (SO) --++(0.5em,0) coordinate(SOh) -- (SE)--++(-0.5em,0)coordinate(SEh);
+\path (NO) --++(0,-0.5em) coordinate(NOv) -- (SO)--++(0,0.5em)coordinate(SOv);
+\path (NE) --++(0,-0.5em) coordinate(NEv) -- (SE)--++(0,0.5em)coordinate(SEv);
+
+\draw (NO) -- (NOh) -- (NOv) -- cycle;
+\draw (SO) -- (SOh) -- (SOv) -- cycle;
+\draw (NE) -- (NEh) -- (NEv) -- cycle;
+\draw (SE) -- (SEh) -- (SEv) -- cycle;
+
+\node (AX#2) at (X#2){};
+\DecaleNoeudy[2.5]{X#2}{NoeudGraf}
+\node (VX#2) at (NoeudGraf) {};
+}
+
+\newcommand{\LienActivation}[1]{
+\DecaleNoeudx[-2]{#1}{LA}
+\node (LA#1) at (LA) {\textbf *};
+}
+
+\newcommand{\EtapeActive}[1]{
+\DecaleNoeudy[1]{#1}{EA}
+\node (EA#1) at (EA) {\textbullet};
+}
+
+\newcommand{\CadreEncap}[4]{
+\draw (#1) rectangle (#2);
+\DecaleNoeudx[3]{#1}{NumEtape}
+\node (NumEtape) at (NumEtape)[right,fill=white]{#3}{};
+\DecaleNoeudx[-3]{#2}{NumEncap}
+\node (NumEncap) at (NumEncap)[left,fill=white]{#4}{};
+}
+
+\newenvironment{Encap}[4][encapsulation]
+{\def\encap1{#1}
+\def\nometape{#3}
+\def\nomgraphe{#4}
+
+\matrix[matrix anchor=north west] (#1) at (#2)
+\bgroup
+ \node(espace){};\\
+ \begin{scope}
+}
+{
+\end{scope}\\
+\egroup;
+\path (\encap1.north west) -- node[pos=0.3](nometape){\nometape} (\encap1.north east);
+\path (\encap1.south west) -- node[pos=0.3](nomgraphe){\nomgraphe} (\encap1.south east);
+\draw (nometape) -- (\encap1.east|-nometape) --++(0.5em,0)|- (nomgraphe);
+\draw (nometape) -- (\encap1.west|-nometape) --++(-0.5em,0)|- (nomgraphe);
+}
+
+
+
+
+\newcommand{\Comment}[3][0]{
+\DecaleNoeudx[#1]{#2}{comm#2}
+\draw (comm#2) node[text width=15em,text justified,right]{\og\textit{ #3 }\fg};
+}
+
+
+\newcommand{\Transition}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [minimum height=2.5em,minimum width=1em] (T#2) {};
+\draw (T#2.west) -- (T#2.east);
+\draw (T#2.north) -- (T#2.south);
+\node (RT#2) at (T#2.east){};
+\DecaleNoeudy[2.5]{T#2}{NoeudGraf}
+\node (VT#2) at (NoeudGraf) {};
+}
+
+\newcommand{\TransitionSource}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [minimum height=2.5em,minimum width=1em] (T#2) {};
+\draw (T#2.west) -- (T#2.east);
+\draw (T#2.base) -- (T#2.south);
+\node (RT#2) at (T#2.east){};
+\DecaleNoeudy[2.5]{T#2}{NoeudGraf}
+\node (VT#2) at (NoeudGraf) {};
+}
+
+\newcommand{\TransitionPuits}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) [minimum height=2.5em,minimum width=1em] (T#2) {};
+\draw (T#2.west) -- (T#2.east);
+\draw (T#2.north) -- (T#2.base);
+\node (RT#2) at (T#2.east){};
+\DecaleNoeudy[2.5]{T#2}{NoeudGraf}
+\node (VT#2) at (NoeudGraf) {};
+}
+
+\newcommand{\Action}[3][0]{
+\foreach \x in {#3}
+{\node (NoeudGraf) at (A#2.east) [draw, rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+}
+}
+
+
+
+
+\newcommand{\ActionFranchissement}[2]{
+\draw (#1.center) -- ++ (1.5em,-2em) node[name=A#1]{} ;
+\node[draw, rectangle, right,minimum height=2.5em, minimum width=2.5em] (A#1) at (A#1) {#2};
+}
+
+\newcommand{\ActionActiv}[1]{
+\node (coin1) at (A#1.north west)[minimum size=1.5em]{}{};
+%\draw [-triangle 90] (coin1.base) -- (coin1.north);
+\draw[fill] (coin1.base)--++(0,0.3em)--++(0.3em,0)--++(-0.3em,0.4em) --++(-0.3em,-0.4em)--++(0.3em,0);
+}
+\newcommand{\ActionDesactiv}[1]{
+\node (coin1) at (A#1.south west)[minimum size=1.2em]{}{};
+%\draw [-triangle 90] (coin1.base) -- (coin1.south);
+%\draw [-triangle 90] (coin1.base) -- (coin1.north);
+\draw[fill] (coin1.base)--++(0,-0.3em)--++(0.3em,0)--++(-0.3em,-0.4em) --++(-0.3em,+0.4em)--++(0.3em,0);
+}
+
+\newcommand{\ActionCond}[2]{
+\node (coin1) at (A#1.north west)[minimum size=1.5em]{};
+\draw (coin1.east) -- (coin1.north east)[name=vcond];
+\node (cond) at (coin1.east) [above right]{\small{#2}};
+}
+\newcommand{\ActionEvenement}[2]{
+\node (coin1) at (A#1.north west)[minimum size=1.5em]{};
+\node (coin2) at (coin1.north east) [minimum size=0.5em]{};
+\node (coin2) at (coin2.south) [minimum size=0.5em]{};
+\draw [fill] (coin1.east) -- (coin2.north)--(coin2.west)--(coin2.south);
+\node (cond) at (coin1.east) [above right]{#2};
+
+}
+\newcommand{\ActionX}[3][2.5]{
+\DecaleNoeudx[#1]{#2}{A#2};
+\draw (#2) -- (A#2.east);
+\foreach \x in {#3}
+{\node (NoeudGraf) at (A#2.east) [draw, rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+}
+}
+\newcommand{\ActionXV}[3][2.5]{
+\DecaleNoeudx[#1]{#2}{A#2};
+\draw (#2) --coordinate[midway](LA#2)coordinate[midway](LA#2b) (A#2.east);
+\foreach \x in {#3}
+{\DecaleNoeudy[2.5]{A#2}{NA#2};
+\draw(LA#2) |- (A#2.east);
+\node (NoeudGraf) at (A#2.east) [draw, rectangle,right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+\DecaleNoeudy[0]{NA#2}{A#2}
+}
+}
+
+
+
+\newcommand{\ActionEfface}[2][2.5]{
+\DecaleNoeudx[#1]{#2}{A#2};
+\draw [white] (#2) -- (A#2.east);
+{\node (NoeudGraf) at (A#2.east) [draw,fill, color=white ,rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) { };
+}
+}
+
+
+\newcommand{\Forcage}[3][0]{
+\foreach \x in {#3}
+{\node (NoeudGraf) at (A#2.east) [draw, rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+ \node (coin1) at (A#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (A#2.south east)[minimum size=0.1em]{}{};
+\draw (coin1.south east) rectangle (coin2.north west);
+}
+}
+
+\newcommand{\ForcageX}[3][2.5]{
+\DecaleNoeudx[#1]{#2}{A#2};
+\draw (#2) -- (A#2.east);
+\foreach \x in {#3}
+{\node (noeudaction) at (A#2.east) [draw, rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+\node (coin1) at (A#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (A#2.south east)[minimum size=0.1em]{}{};
+\draw (coin1.south east) rectangle (coin2.north west);
+}
+}
+
+
+\newcommand{\ForcageXV}[3][2.5]{
+\DecaleNoeudx[#1]{#2}{A#2};
+\draw (#2) --coordinate[midway](LA#2)coordinate[midway](LA#2b) (A#2.east);
+\foreach \x in {#3}
+{\DecaleNoeudy[2.5]{A#2}{NA#2};
+\draw(LA#2) |- (A#2.east);
+\node (noeudaction) at (A#2.east) [draw, rectangle, right,minimum height=2.5em,
+ minimum width=2.5em] (A#2) {\x};
+\node (coin1) at (A#2.north west)[minimum size=0.1em]{}{};
+\node (coin2) at (A#2.south east)[minimum size=0.1em]{}{};
+\draw (coin1.south east) rectangle (coin2.north west);
+\DecaleNoeudy[0]{NA#2}{A#2};
+}
+}
+
+
+
+
+\newcommand{\Recept}[2]{
+\node (NoeudGraf) at (R#1.east) [right,minimum height=0em,
+ minimum width=0em] (Rcp#1) {#2};
+}
+
+\newcommand{\Recepts}[1]{
+\foreach \trans / \receptivite in {#1}{
+\Recept{T\trans}{\receptivite};
+}
+}
+
+\newcommand{\TransitionRecept}[3][NoeudGraf]{
+\Transition[#1]{#2}
+\Recept{T#2}{#3}
+}
+
+\newcommand{\Actions}[1]{
+\foreach \etape / \action in {#1}{
+\ActionX{X\etape}{\action};
+}
+}
+
+\newcommand{\ActionRecept}[1]{
+\foreach \etape / \action / \receptivite in {#1}{
+ \ifthenelse{\equal{\action}{}}{}
+ {\ActionX{X\etape}{\action};}
+\Recept{T\etape}{\receptivite};
+}
+}
+
+
+\newcommand{\EtapeAction}[3][NoeudGraf]{
+\Etape[#1]{#2}
+ \ifthenelse{\equal{#3}{}}{}
+ {\ActionX{X#2}{#3}}
+}
+
+\newcommand{\EtapeInitAction}[3][NoeudGraf]{
+\EtapeInit[#1]{#2}
+ \ifthenelse{\equal{#3}{}}{}
+ {\ActionX{X#2}{#3}}
+}
+
+\newcommand{\EtapeTransition}[4][NoeudGraf]{
+\Etape[#1]{#2}
+ \ifthenelse{\equal{#3}{}}{}
+ {\ActionX{X#2}{#3}}
+\Transition{#2}
+\Recept{T#2}{#4}
+}
+
+\newcommand{\EtapeInitTransition}[4][NoeudGraf]{
+\EtapeInit[#1]{#2}
+ \ifthenelse{\equal{#3}{}}{}
+ {\ActionX{X#2}{#3}}
+\Transition{#2}
+\Recept{T#2}{#4}
+}
+
+
+\newcommand{\SequenceET}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\foreach \x in {#2}
+{\Etape[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{X\x}{NoeudGraf}
+\Transition[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{T\x}{NoeudGraf}
+\node (VT\x) at (NoeudGraf) {};
+}
+}
+
+\newcommand{\SequenceTT}[3][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\Transition[NoeudGraf]{#2}
+\DecaleNoeudy[2.5]{T#2}{NoeudGraf}
+\foreach \x in {#3}
+{\Etape[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{X\x}{NoeudGraf}
+\Transition[NoeudGraf]{\x}
+\node (Ts) at (T\x) [minimum height=2.5em,minimum width=1em]{};
+\DecaleNoeudy[2.5]{T\x}{NoeudGraf}
+\node (VT\x) at (NoeudGraf) {};
+\node (VTs) at (VT\x) [minimum height=2.5em,minimum width=1em]{};
+}
+}
+
+\newcommand{\SequenceTE}[4][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\Transition[NoeudGraf]{#2}
+\SequenceEE{#3}{#4}
+}
+
+
+\newcommand{\SequenceEE}[3][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\foreach \x in {#2}
+{\Etape[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{X\x}{NoeudGraf}
+\Transition[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{T\x}{NoeudGraf}
+\node (VT\x) at (NoeudGraf) {};
+}
+\Etape[NoeudGraf]{#3}
+\DecaleNoeudy[2.5]{X#3}{NoeudGraf}
+\node (VX#3) at (NoeudGraf) {};
+}
+
+
+\newcommand{\Graphe}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\node (debut) at (#1)[minimum size=2.5em] {};
+\foreach \x / \y / \z in {#2}{
+\Etape[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{X\x}{NoeudGraf}
+\Transition[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{T\x}{NoeudGraf}
+}
+\ActionRecept{#2}
+}
+\newcommand{\GrapheBoucle}[2][NoeudGraf]{
+\node (NoeudGraf) at (#1) {};
+\node (debutgraphe) at (#1)[minimum size=2.5em] {};
+\foreach \x / \y / \z in {#2}{
+\Etape[NoeudGraf]{\x}
+\DecaleNoeudy[2.5]{X\x}{NoeudGraf}
+\Transition[NoeudGraf]{\x}
+\node (fingraphe) at (T\x)[minimum size=2.5em] {};
+\DecaleNoeudy[2.5]{T\x}{NoeudGraf}
+}
+\ActionRecept{#2}
+\LienRetour{fingraphe}{debutgraphe}
+}
+
+\newcommand{\SautEtapes}[4][-5]{
+\DivOU{#2}{#1/L#2s,2/L#2}
+\Transition[L#2s]{#2s}
+\SequenceTT[L#2]{#2}{#3}
+\DecaleNoeudy[-2.5]{NoeudGraf}{VNoeudGraf}
+\ConvOU[-2]{Ts}{T#2s}{#4}
+}
+
+\newcommand{\RepriseEtapes}[4][-5]{
+\DecaleNoeudx[#1]{#2}{#2r}
+\DecaleNoeudx[-1]{#2r}{#2r}
+\DecaleNoeudx[#1]{V#2}{V#2r}
+\DecaleNoeudx[-1]{V#2r}{V#2r}
+\node(V#2r) at (V#2r) [minimum height=2.5em,minimum width=1em,rectangle]{};
+\ConvOU[-1]{#2}{#2r}{noeudreprise}
+\SequenceEE[noeudreprise]{#3}{#4}
+\DivOU{X#4}{#1/L#4r,1/L#4}
+\Transition[L#4]{#4}
+\Transition[L#4r]{#4r}
+\LienRetour[2]{T#4r}{V#2r}
+}
+
+\newcommand{\DivET}[2]{
+\node (div1) at (#1)[minimum height=2.5em,minimum width=1em]{};
+\draw (div1.base) -- (div1.south){};
+\DecaleNoeudy[2.5]{#1}{div1}
+\foreach \x / \y in {#2} {
+\DecaleNoeudx[\x]{div1}{div2}
+\node (V\y) at (div2)[minimum height=2.5em,minimum width=1em]{};
+\draw (V\y.base) -- (V\y.north);
+\draw [double distance=0.15em,thick] (div1.north) -- (V\y.north east) --(V\y.north west) {}{};
+\node (\y) at (V\y){}[minimum size=0];
+\node (V\y) at (V\y.south){};
+}
+}
+
+\newcommand{\BrancheOU}[2][0]{
+\node[below of=V#2,node distance=1 em,minimum height=2.5em,minimum width=1em](NoeudGraf){};
+\node [right of=NoeudGraf, node distance=#1 em,minimum height=2.5em,minimum width=1em] (NoeudGraf){};
+\draw (#2.south) -- ++(0,-0.5em) -| (NoeudGraf);
+}
+
+\newcommand{\FinBrancheOU}[3][0]{
+\ifthenelse{\equal{CountB}{}}{
+\node[below of=V#3,node distance=2 em,minimum height=2.5em,minimum width=1em](NoeudGraf){};
+\node [right of=NoeudGraf, node distance=#1 em,minimum height=2.5em,minimum width=1em] (NoeudGraf){};
+\draw (#3.south) -- ++(0,-0.5em) -| (NoeudGraf);}
+{ aaa}
+}
+
+\newcommand{\FinBrancheOUa}[3][0]{
+\newboolean{TestBoucle}
+\ifthenelse{\boolean{TestBoucle}{true}}{\draw(T53) -- (#3);}{
+\node[below of=V#2,node distance=2 em,minimum height=2.5em,minimum width=1em](NoeudGraf){};
+\node [right of=NoeudGraf, node distance=#1 em,minimum height=2.5em,minimum width=1em] (NoeudGraf){};
+\node[minimum height=2.5em,minimum width=1em] (#3) at (NoeudGraf){};
+\draw (#2.south) -- ++(0,-0.5em) -| (NoeudGraf);
+with:
+\setboolean{TestBoucle}{true}
+}
+
+}
+
+
+\newcommand{\DivOU}[2]{
+\node (div1) at (V#1)[minimum height=2.5em,minimum width=1em]{};
+\draw (div1.base) -- (div1.north) {}{};
+\foreach \x / \y in {#2} {
+\DecaleNoeudx[\x]{div1}{div2}
+\node (div2) at (div2)[minimum height=2.5em,minimum width=1em]{};
+\node (\y) at (div2)[minimum height=2.5em,minimum width=1em]{};
+\draw (div1.base) -- (\y.east) --(\y.west) {}{};
+\node (\y) at (div2.south)[minimum height=2.5em,minimum width=1em]{};
+\draw(\y.base)--(\y.north){}{};
+}
+}
+
+
+\newcommand{\ConvET}[4][0]{
+\node (div) at (#2) [minimum height=2.5em,minimum width=1em]{};
+\DecaleNoeudy[2.5]{div}{div}
+\foreach \x in {#3}{
+\draw (#2) -- (div.base) -| (\x);\node (int\x) at (div.base -|\x) {};
+}
+\DecaleNoeudx[#1]{div}{#4}
+\DecaleNoeudy[1.5]{#4}{#4}
+\draw (#4.base) |- (div.base);
+\foreach \x in {#3}{
+\draw [double distance=0.15em,thick](int\x.east) -- (int\x.west);
+\draw [double distance=0.15em,thick](int\x.east) -- (div.east);
+}
+\draw [double distance=0.15em,thick](div.west) -- (div.east);
+}
+
+
+\newcommand{\ConvOU}[4][0]{
+\node (div#2) at (#2.base)[minimum height=2.5em,minimum width=1em]{};
+\DecaleNoeudx[0]{div#2}{div#2}
+\DecaleNoeudy[1.3]{div#2}{div}
+\DecaleNoeudx[#1]{V#2}{#4}
+\foreach \x in {#3} {
+\draw (div.base)--(div.east)--(div.west) -| (\x.base);
+\node (divi) at (div.west -| \x.base) [minimum width=1em,minimum height=2.5em]{};
+\draw (divi.west) -- (divi.east);
+}
+\DecaleNoeudy[1.5]{#4}{#4}
+\draw (div#2.base)--(div.base)-|(#4.north);
+}
+
+\newcommand{\DecaleNoeudx}[3][0]{
+\node [right of=#2, node distance=#1em](#3) {};
+\node (#3) at (#3) [rectangle,minimum height=2.5em,minimum width=1em]{};
+}
+\newcommand{\DecaleNoeudy}[3][0]{
+\node [below of=#2, node distance=#1em](#3) {};
+\node (#3) at (#3) [rectangle,minimum height=2.5em,minimum width=1em]{};
+}
+
+
+\newcommand{\LienRetour}{\@ifstar\LienRetourUp\LienRetourN}
+
+\newcommand{\LienRetourN}[3][4]{
+\node [left of=#2, node distance=#1em, minimum size=0cm](retourb#2) {};
+\node [above of=#3, node distance=2.5em, minimum size=0cm](retourh#2) {};
+%\DecaleNoeudx[-#1]{retourh#2}{retourh#2}
+\draw[->,>=latex'](#2.base)--(#2.south)-|(retourb#2.north)--(retourb#2|-#3)|-(retourh#2.base)-| (#3.north);
+}
+
+\newcommand{\LienRetourUp}[4][4]{
+\node [left of=#2, node distance=#1em, minimum size=0cm](retourb#2) {};
+\node [above of=#3, node distance=#4em, minimum size=0cm](retourh#2) {};
+%\DecaleNoeudx[-#1]{retourh#2}{retourh#2}
+\draw[->,>=latex'](#2.base)--(#2.south)-|(retourb#2.north)--(retourb#2|-#3)|-(retourh#2.base)-| (#3.north);
+}
+
+\newcommand{\LienRetoura}[3][4]{
+\node [left of=#3, node distance=#1em, minimum size=0cm](retourb#2) {};
+\node [above of=retourb#2, node distance=2.5em, minimum size=0cm](retourh#2) {};
+%\DecaleNoeudx[-#1]{retourh#2}{retourh#2}
+\draw [->,>=latex'] (#2.base)--(#2.south)-| (retourh#2.base) -| node[name=#2-#3,near end,right] {} (#3.north) ;
+}
+
+\newcommand{\Lien}[4][0]{
+\node [above of=#4, node distance=2.5em, minimum size=0cm](retourh#3) {};
+\DecaleNoeudy[#1]{retourh#3}{retourh#3}
+\draw [->,>=latex'] (#2.base) -- (#2.south) -| (#3.base) |- (retourh#3.base) -- (#4.north);
+}
+
+\newcommand{\Lieny[2]}[2.5]{
+\DecaleNoeudy[#1]{#2}{V#2}
+\draw (#2.base) -- (V#2.base) {};
+\DecaleNoeudy[#1]{#2}{#2}
+}
+\newcommand{\LienET[2]}[2.5]{
+\DecaleNoeudy[#1]{#2}{V#2}
+\draw (#2) -- (V#2.base) {};
+}
+\newcommand{\LienTE[2]}[2.5]{
+\DecaleNoeudy[#1]{#2}{V#2}
+\draw (#2.base) -- (V#2) {};
+}
+
+
+\newcommand{\LienRetourOU}[3][4]{
+\coordinate [left of=#2, node distance=#1em, minimum size=0cm](retourb#2) {};
+\coordinate [above of=#3, node distance=3.5em, minimum size=0cm](retourh#2) {};
+\coordinate [above of=#3, node distance=2.5em, minimum size=0cm](retourh#3) {};
+%\DecaleNoeudx[-#1]{retourh#2}{retourh#2}
+\draw (#2.base) -- (#2.south) -| (retourb#2) -- (retourb#2 |- #3)coordinate[pos=0.5,name=df]coordinate[pos=0.55,name=ff] |-
+(retourh#2-|#2) -- (retourh#3 -|#2) --++(-0.5em,0) -++ (1em,0) -|(#3.north) ;
+\draw[-latex] (df) -- (ff) ;
+}
+
+
+\newcommand{\EspaceV}[2][2.5]{
+\node[below of=V#2,node distance=#1 em,minimum height=2.5em,minimum width=1em](NoeudGraf){};
+\draw (#2.south) -- (NoeudGraf);
+\node[minimum height=2.5em,minimum width=1em] (V#2) at (NoeudGraf){};
+}