%--------------DOCUMENT--------------------------------------------------------

\documentclass[a4paper,11pt]{article}                      % Type de document
\usepackage[frenchb]{babel}                  % Titres en fran�ais
\usepackage[T1]{fontenc}   % Correspondance clavier -> document
\usepackage{fourier} 
%-------------PACKAGES---------------------------------------------------------
\usepackage{makeidx}                       % Indexation du document
\usepackage[Bjornstrup]{fncychap}                % beaux chapitres

\usepackage{fancyhdr}                       % entete et pied de pages

\usepackage{here}                           % avoir ses figures a la suite du texte
\usepackage{hyperref}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{color}
\usepackage{geometry}
\geometry{ hmargin=2cm, vmargin=1.5cm }
\usepackage{multicol}

\usepackage{subfigure}
\usepackage{floatflt}% package for floatingfigure environment
\usepackage{wrapfig}% package for wrapfigure environment
%-------------PACKAGES PERSO---------------------------------------------------------
\usepackage{schemabloc}


\usepackage{ifpdf}
\ifx\pdftexversion\undefined %if using TeX
  \usepackage{graphicx}
\else %if using PDFTeX
  \usepackage{graphicx}
\fi
\ifpdf %if using PDFTeX in PDF mode
  \DeclareGraphicsExtensions{.pdf,.png,.mps,.eps,.tpx}
  \usepackage{pgf}
\else %if using TeX or PDFTeX in TeX mode
  \usepackage{graphicx}
  \DeclareGraphicsExtensions{.eps,.bmp,.tpx}
  \DeclareGraphicsRule{.emf}{bmp}{}{}% declare EMF filename extension
  \DeclareGraphicsRule{.png}{bmp}{}{}% declare PNG filename extension
  \usepackage{pgf}
  \usepackage{pstricks}%variant: \usepackage{pst-all}
\fi

%*******Macros diverses ***********

%-------------ENTETE-ET-PIED-DE-PAGE-------------------------------------------

\renewcommand{\headrulewidth}{0pt}          % epaisseur du trait apres entete
\renewcommand{\footrulewidth}{0pt}          % epaisseur du trait avant pied de page
\pagestyle{fancy}



%-------------PAGE-DE-GARDE----------------------------------------------------

\title{Sch�ma-blocs  avec  PGF/TIKZ}                                    % Titre
\author{Papanicola Robert}                                   % Auteur(s)
\date{\today}                                     % Date (\today pour aujourd'hui)


%-------------DEBUT-DU-DOCUMENT-----------------------------------------------
\makeindex

\begin{document}

\maketitle

\begin{description}
\item [version 1.5] Modification du dessin des comparateurs et sommateurs (ajout des symboles avec l'op�rateur � l'ext�rieur). Ajout des commandes de trac� de cha�nes de blocs et de boucles. les vielles d�finitions ont �t� d�sactiv�es (mise en commentaires).
\item[version 1.2] red�finition des noms de commandes, ajout du pr�fixe sb, quelques nouvelles commandes (\verb"\sbBlocSeul", ..)
\item [version 1] version initiale
\end{description}

version 1.2


\section{Sch�ma-blocs  avec  PGF/TIKZ}
Les macros suivantes permettent de faciliter le dessin de sch�ma-blocs (block-diagram), elles s'appuient sur le package pgf et les macros tikz.

Les macros ont �t� adapt�es � partir des exemples d'utilisation de la librairie  \href{http://www.ctan.org/tex-archive/help/Catalogue/entries/pgf.html}{pgf} de Till Tantau et TikZ de Kjell Magne Fauske et principalement \href{http://www.fauskes.net/pgftikzexamples/tag/block-diagram/}{block-diagram}.

\subsection{Utilisation typique}
L'utilisation typique de cet ensemble de macro-commandes est produire  des diagrammes fonctionnels tel celui pr�sent� sur la figure suivante.

\textit{The typical use of this set of macro-commands is to produce functional diagrams such that presented on the following figure.}

\begin{figure}[!ht]
\centering
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}                 \sbRelier[$E_1$]{E}{comp}
\sbBloc{reg}{R�gulateur}{comp}   \sbRelier[$\epsilon$]{comp}{reg}
\sbBloc{sys}{Syst�me}{reg}       \sbRelier[u]{reg}{sys}
\sbSortie{S}{sys}                \sbRelier[$S_1$]{sys}{S}
\sbDecaleNoeudy[4]{S}{U}
\sbBlocr{cap}{Capteur}{U}        \sbRelieryx{sys-S}{cap}
                                 \sbRelierxy[m]{cap}{comp}
\end{tikzpicture}
\caption{Utilisation typique}
\label{fig:utiltyp}
\end{figure}



\begin{minipage}[t]{0.55\linewidth}
On retrouve dans ces sch�mas les principales fonctionnalit�s des macros
\begin{itemize}
\item des blocs:
\begin{itemize}
\item de la gauche vers la droite,
\item de la droite vers la gauche;
\end{itemize}
\item un comparateur;
\item une entr�e;
\item une sortie;
\item des liens:
\begin{itemize}
\item  simple entre blocs align�s,
\item entre un lien et un bloc ,
\item entre deux blocs (ou comparateur) non align�s,
\item un retour direct.
\end{itemize}
\end{itemize}

Le code utilis� pour d�crire le sch�ma est pr�cis� ci-contre.
\end{minipage}
\begin{minipage}[t]{0.36\linewidth}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}                 
\sbRelier[$E_1$]{E}{comp}
\sbBloc{reg}{R�gulateur}{comp}   
\sbRelier[$\epsilon$]{comp}{reg}
\sbBloc{sys}{Syst�me}{reg}       
\sbRelier[u]{reg}{sys}
\sbSortie{S}{sys}                
\sbRelier[$S_1$]{sys}{S}
\sbDecaleNoeudy[4]{S}{U}
\sbBlocr{cap}{Capteur}{U}        
\sbRelieryx{sys-S}{cap}
\sbRelierxy[m]{cap}{comp}
\end{tikzpicture}
\end{verbatim}
\end{minipage}


\subsection{Environnement}
\begin{minipage}[t]{0.55\linewidth}
Les macros suivantes s'utilisent dans l'environnement \textbf{tikzpicture}.

\textbf{Nota}: vous devez avoir install� la derni�re version du package pgf!
\end{minipage}
\begin{minipage}[t]{0.55\linewidth}
\begin{verbatim}
\begin{tikzpicture}
     listes de commandes
      .....
\end{tikzpicture}
\end{verbatim}
\end{minipage}

\subsection{Entr�e et noeud}
Tous les blocs sont dessin�s en relatif par rapport � un noeud d'entr�e, la construction du sch�ma ne peut donc d�buter qu'apr�s avoir d�fini le premier noeud avec la commande:\verb"\sbEntree{nom}".

Les commandes \verb"\sbDecaleNoeudx[distance]{N1}{N2}"  et \verb"\sbDecaleNoeudy[distance]{N1}{N2}"  permettent de positionner un nouveau n\oe ud \verb"{N2}" par rapport au n\oe ud pr�c�dent \verb"{N1}" , respectivement 
\begin{itemize}
\item suivant x - horizontalement de la gauche vers la droite
\item suivant y - verticalement du haut vers le bas de la page 
\end{itemize}
Cette commande est n�cessaire pour d�marrer un nouvelle branche ou pour positionner une nouvelle entr�e.

La distance optionnelle \verb"[distance]"  doit �tre pr�cis�e sans unit� et est compt�e en em, la valeur par d�faut est de 5em.

Remarque: il est toujours possible de positionner les diff�rents noeuds en absolu dans la page en utilisant les commandes sp�cifiques de tikz (\verb"\node...").



\subsection{Bloc}

\subsubsection {Utilisation}
deux commandes principale permettent d'obtenir le dessin d'un bloc fonctionnel
\begin{itemize}
\item la premi�re permet le dessin d'un bloc seul;
\begin{verbatim}
    \sbBloc[distance]{nom}{contenu}{bloc precedent}
\end{verbatim}
\item la seconde permet le dessin du bloc et du lien avec le bloc pr�c�dent
\begin{verbatim}
    \sbBlocL[distance]{nom}{contenu}{bloc precedent}
\end{verbatim}
\end{itemize}

 avec les param�tres suivant:

\begin{description}
\item [distance] ce param�tre optionnel permet de positionner le bloc par rapport au bloc pr�c�dent ( la valeur par d�faut est 2 em), cette distance est l'intervalle entre les deux blocs;
\item [nom] ce param�tre  permet de nommer le noeud associ� au bloc, pour faire r�f�rence � ce bloc, il faudra utiliser ce param�tre (pour relier les blocs);
\item [contenu] ce param�tre pr�cise le contenu du bloc, cela peut �tre aussi bien du texte qu'une fonction math�matique comme $\dfrac{K_c}{1 + \tau \cdot p}$ en tapant \verb"$\dfrac{K_c}{1 + \tau \cdot p}$" (ne pas oublier les \$ );
\item[bloc precedent] ce param�tre permet de pr�ciser le nom du bloc pr�c�dent, chaque bloc est positionn� relativement au bloc pr�c�dent avec la distance \textbf{distance}.
\end{description}

\subsubsection{Exemple}
\begin{multicols}{2}

\begin{verbatim}
\begin{tikzpicture}
	\sbEntree{E}
	\sbBloc{bloc1}{contenu}{E}
	\sbBloc{bloc2}{
$K_c\dfrac{1+\tau \cdot p}{1+\dfrac{2\cdot z}
{\omega_n}p+\dfrac{p^2}{\omega_n^2}}$}{bloc1}
	\sbBlocL[4]{bloc3}{Bloc li�}{bloc2}
\end{tikzpicture}
\end{verbatim}

\begin{itemize}
    \item on notera la pr�sence de \verb"\entree" pour positionner le premier bloc;
	 \item le nom de chaque bloc est unique;
    \item le deuxi�me bloc s'est adapt� en hauteur et largeur en fonction du contenu;
    \item le troisi�me bloc est d�cal� de 4em du pr�c�dent et reli�.
\end{itemize}
\end{multicols}
\begin{figure}[!ht]
\centering
\begin{tikzpicture}
	\sbEntree{E}
	\sbBloc{bloc1}{contenu}{E}
	\sbBloc{bloc2}{$K_c\dfrac{1+\tau \cdot p}{1+\dfrac{2\cdot z}{\omega_n}p+\dfrac{p^2}{\omega_n^2}}$}{bloc1}
	\sbBlocL[4]{bloc3}{Bloc li�}{bloc2}
\end{tikzpicture}
\caption{commandes sbBloc  et sbBlocL}
\label{fig:commandebloc}
\end{figure}


\subsubsection{Autres commandes de Bloc}


\paragraph{Bloc de la cha�ne de retour} 

La commande \verb"\sbBlocr..." (respectivement \verb"\sbBlocrL...") permet de tracer les blocs de la cha�ne de retour de la droite vers la gauche. les param�tres de commande sont identiques. le bloc est plac� � gauche du bloc (ou du n\oe ud) pr�c�dent.

\paragraph{Bloc seul}

La commande \verb"\sbBlocseul..." permet de tracer un bloc seul avec une entr�e et une sortie cette commande est g�n�ral utilis�e seule. Le param�tre de distance est appliqu� sur le lien d'entr�e et de sortie

\begin{minipage}[c]{0.46\linewidth}
\begin{verbatim}
\sbBlocseul[3]{Entr�e}{$H(p)$}{Sortie}
\end{verbatim}
\end{minipage}
\begin{minipage}[c]{0.46\linewidth}
\begin{tikzpicture}
\sbBlocseul[3]{Entr�e}{$H(p)$}{Sortie}

\end{tikzpicture}
\end{minipage}

\subsubsection{Personnalisation des blocs}

La commande \verb"\sbStyleBloc{liste d'option}"  permet de modifier la repr�sentation graphique du bloc ( fond, couleur des traits,couleur du texte, �paisseur,\dots), les modifications sont valables jusqu'� une nouvelle d�finition. Les modifications de style apport�e sont cumulatives. La commande \verb"\sbStyleBlocDefaut"  r�-active la repr�sentation graphique par d�faut

\begin{minipage}{0.52\linewidth}
~\\
\begin{tikzpicture}
\sbEntree{E1}
\sbBlocL{B0}{bloc 1}{E1}
\sbStyleBloc{blue,very thick,%
fill=yellow,text=red}%
\sbBlocL{B1}{$\dfrac{K}{1+p+p^2}$}{B0} 
\sbStyleBloc{fill=black!30,text=blue,ellipse}
\sbBlocL{B2}{$H(p)$}{B1}            
\sbStyleBlocDefaut
\sbBlocL{B3}{$H(p)$}{B2}        
\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.42\linewidth}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E1}
\sbBlocL{B0}{bloc 1}{E1}
\sbStyleBloc{blue,very thick,%
fill=yellow,text=red}%
\sbBlocL{B1}{$\dfrac{K}{1+p+p^2}$}{B0} 
\sbStyleBloc{fill=black!30,
text=blue,ellipse}
\sbBlocL{B2}{$H(p)$}{B1}            
\sbStyleBlocDefaut
\sbBlocL{B3}{$H(p)$}{B2}        
\end{tikzpicture}
\end{verbatim}
\end{minipage}

Comme on le voit ci-dessus, il m�me possible de modifier la forme du n\oe ud. Toutes les options relatives au trac� des noeuds dans pgf/tikz sont utilisables.


\subsection{Comparateur - Sommateur}
Les commandes de base
\begin{verbatim}
    \sbComp[distance]{nom}{bloc precedent}
    \sbComp*[distance]{nom}{bloc precedent}
\end{verbatim}

permettent de dessiner un comparateur, soit avec sa repr�sentation usuelle 
\begin{tikzpicture}
\sbEntree{E}
\sbComp[0]{comp}{E}
\end{tikzpicture} 
ou avec les op�rateurs � l'ext�rieur
\begin{tikzpicture}
\sbEntree{E}
\sbComp*[0]{comp}{E}
\end{tikzpicture}
 avec les param�tres suivant:

\begin{description}
\item [�toile $*$ : ] repr�sentation usuelle sans l'�toile;
\item [distance : ] param�tre optionnel permettant de positionner le comparateur par rapport au bloc pr�c�dent ( la valeur par d�faut est 4em);
\item [nom :] nom du comparateur, ce nom doit �tre unique dans votre sch�ma, il sert � r�f�rencer le comparateur pour tous les liens;
\item [bloc precedent :] le nom du bloc pr�c�dent, le comparateur est plac� � sa droite,� la distance \textbf{distance}.
\end{description}

\begin{figure}[!ht]
\centering
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}                 \sbRelier[$E_1$]{E}{comp}
\sbBloc{reg}{R�g}{comp}   \sbRelier[$\epsilon$]{comp}{reg}
\sbBloc{sys}{Sys}{reg}       \sbRelier[u]{reg}{sys}
\sbSortie{S}{sys}                \sbRelier[$S_1$]{sys}{S}
\sbDecaleNoeudy[4]{S}{U}
\sbBlocr{cap}{Capt}{U}        \sbRelieryx{sys-S}{cap}
                                 \sbRelierxy[m]{cap}{comp}
\end{tikzpicture}
\begin{tikzpicture}
\sbEntree{E}
\sbComp*{comp}{E}                 \sbRelier[$E_1$]{E}{comp}
\sbBloc{reg}{R�g}{comp}   \sbRelier[$\epsilon$]{comp}{reg}
\sbBloc{sys}{Sys}{reg}       \sbRelier[u]{reg}{sys}
\sbSortie{S}{sys}                \sbRelier[$S_1$]{sys}{S}
\sbDecaleNoeudy[4]{S}{U}
\sbBlocr{cap}{Capt}{U}        \sbRelieryx{sys-S}{cap}
                                 \sbRelierxy[m]{cap}{comp}
\end{tikzpicture}
\caption{Comparateur- commande �toil�e ou non}
\label{fig:comp}
\end{figure}

\subsubsection{Commandes et symboles}

D'autres commandes g�n�riques  permettent de dessiner rapidement les principaux symboles de sommation et de comparaison.

\begin{table}[!ht]
\centering
\begin{tabular}{|c|c|c|c|c|} \hline
&  \multicolumn{2}{|c|}{Comparateurs} & \multicolumn{2}{|c|}{Sommateurs}  \\ \hline
{Symbole} & \begin{tikzpicture}
\sbEntree{E}
\sbComp[0]{comp}{E}
\end{tikzpicture}
  &
\begin{tikzpicture}
\sbEntree{E}
\sbComph[0]{comp}{E}
\end{tikzpicture} &\begin{tikzpicture}
\sbEntree{E}
\sbSumb[0]{comp}{E}
\end{tikzpicture} & \begin{tikzpicture}
\sbEntree{E}
\sbSumh[0]{comp}{E}
\end{tikzpicture} \\ 
{code}			&   \verb"\sbComp{}..." & \verb"\sbComph{}..." & \verb"\sbSumb{}..." &  \verb"\sbSumh{}..." \\ \hline
{Symbole} & \begin{tikzpicture}
\sbEntree{E}
\sbComp*[0]{comp}{E}
\end{tikzpicture}
  &
\begin{tikzpicture}
\sbEntree{E}
\sbComph*[0]{comp}{E}
\end{tikzpicture} &\begin{tikzpicture}
\sbEntree{E}
\sbSumb*[0]{comp}{E}
\end{tikzpicture} & \begin{tikzpicture}
\sbEntree{E}
\sbSumh*[0]{comp}{E}
\end{tikzpicture} \\ 
{code}			&   \verb"\sbComp*{}..." & \verb"\sbComph*{}..." & \verb"\sbSumb*{}..." &  \verb"\sbSumh*{}..." \\ \hline

\end{tabular}
\caption{Symboles et commandes de comparateurs et sommateurs}
\label{tab:symbcomp}
\end{table}

Une commande plus g�n�rique \verb"\sbCompSum[dist]{nom}{E1}{a}{b}{c}{d}"  permet de dessiner tout sommateur et entre autres les sommateurs et comparateurs plac�s dans les lignes de retour. Une commande �toil�e \verb"\sbCompSum*[dist]{nom}{E1}{a}{b}{c}{d}"permet de repr�senter le sommateur (comparateur) avec les signes � l'ext�rieur.

\begin{minipage}{0.48\linewidth}
\begin{tikzpicture}
\sbEntree{E1}
\sbCompSum[-4]{C1}{E1}{a}{b}{c}{d}
\sbCompSum[0]{C1}{E1}{+}{+}{+}{ }
\sbCompSum[4]{C1}{E1}{+}{+}{ }{-}
\sbCompSum[8]{C1}{E1}{+}{ }{+}{-}
\sbCompSum[12]{C1}{E1}{ }{+}{-}{-}
\end{tikzpicture}


\begin{tikzpicture}
\sbEntree{E1}
\sbCompSum*[-4]{C1}{E1}{a}{b}{c}{d}
\sbCompSum*[0]{C1}{E1}{+}{+}{+}{ }
\sbCompSum*[4]{C1}{E1}{+}{+}{ }{-}
\sbCompSum*[8]{C1}{E1}{+}{ }{+}{-}
\sbCompSum*[12]{C1}{E1}{ }{+}{-}{-}
\end{tikzpicture}
\end{minipage}
\begin{minipage}{0.48\linewidth}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E1}
\sbCompSum[-4]{C1}{E1}{a}{b}{c}{d}
\sbCompSum[0]{C1}{E1}{+}{+}{+}{ }
\sbCompSum[4]{C1}{E1}{+}{+}{ }{-}
\sbCompSum[8]{C1}{E1}{+}{ }{+}{-}
\sbCompSum[12]{C1}{E1}{ }{+}{-}{-}
\end{tikzpicture}
\end{verbatim}

\end{minipage}


\subsection{Liens et renvois}
La commande \verb"\sbBlocL..." permet de tracer un lien sans texte entre deux blocs successifs, les macros proposent trois autres types de liens qui permettent de tracer tout type de sch�ma.
\begin{itemize}
\item lien direct  \verb"\sbRelier[nom]{b1}{b2}";
\item les renvois et sauts \verb"\sbRenvoi{b1}{b2}{}";
\item les liens d�cal�s.
\end{itemize}


\subsubsection{liens directs} 
Liens entre deux blocs (ou comparateur, entr�e ou sortie) dans la cha�ne directe (de la gauche vers la droite)  ou dans la cha�ne de retour (de la droite vers la gauche). Un lien direct entre deux blocs "b1" et "b2" s'�crit: 
\verb"\sbRelier[nom]{b1}{b2}" \\
Le nom du lien (optionnel) est plac� au dessus du lien au centre, 
Un n\oe ud est associ� au lien dans la figure sous le nom "b1-b2" (concat�nation des noms avec un tiret "-")

\begin{minipage}[t]{0.46\linewidth}
~\\
\begin{tikzpicture}
\sbEntree{E1}
\sbBloc[3]{Bloc1}{$H1$}{E1}			\sbRelier[{$E(p)$}]{E1}{Bloc1}
\sbBloc[3]{Bloc2}{$H2$}{Bloc1}		\sbRelier[{nom}]{Bloc1}{Bloc2}
\sbSortie[3]{S1}{Bloc2}					\sbRelier[{$S(p)$}]{Bloc2}{S1}
\end{tikzpicture}

\end{minipage}
\begin{minipage}[t]{0.46\linewidth}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E1}
\sbBloc[3]{Bloc1}{$H1$}{E1}			
    \sbRelier[$E(p)$]{E1}{Bloc1}
\sbBloc[3]{Bloc2}{$H2$}{Bloc1}		
    \sbRelier[nom]{Bloc1}{Bloc2}
\sbSortie[3]{S1}{Bloc2}					
    \sbRelier[$S(p)$]{Bloc2}{S1}
\end{tikzpicture}
\end{tikzpicture}  
\end{verbatim}
\end{minipage}

\subsubsection{Renvois et sauts}

Les renvois sont des liens qui permettent soit de retourner en arri�re soit de sauter un ou plusieurs blocs. Ils sont trac�s entre un lien et un comparateur (sommateur);


\begin{minipage}[t]{0.3\linewidth}
 \begin{tikzpicture}
\sbEntree{E}
\sbComp[1.5]{comp}{E}
		\sbRelier{E}{comp}
\sbBloc[1.5]{B}{$H_1$}{comp}
		\sbRelier{comp}{B}
\sbSortie{S}{B}
		\sbRelier{B}{S}
		\sbRenvoi{B-S}{comp}{}
\end{tikzpicture}
\begin{small}
 \begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbComp[1.5]{comp}{E}
		\sbRelier{E}{comp}
\sbBloc[1.5]{B}{$H_1$}
                  {comp}
		\sbRelier{comp}{B}
\sbSortie{S}{B}
		\sbRelier{B}{S}
		\sbRenvoi{B-S}{comp}{}
\end{tikzpicture} 
\end{verbatim}
\end{small}
\end{minipage}
\begin{minipage}[t]{0.3\linewidth}
 \begin{tikzpicture}
\sbEntree{E}
\sbComph[1.5]{comp}{E}
		\sbRelier{E}{comp}
\sbBloc[1.5]{B}{$H_1$}{comp}
		\sbRelier{comp}{B}
\sbSortie{S}{B}
		\sbRelier{B}{S}
		\sbRenvoi[-3]{B-S}{comp}{}
\end{tikzpicture}
\begin{small}
 \begin{verbatim}
 \begin{tikzpicture}
\sbEntree{E}
\sbComph[1.5]{comp}{E}
		\sbRelier{E}{comp}
\sbBloc[1.5]{B}{$H_1$}
                  {comp}
		\sbRelier{comp}{B}
\sbSortie{S}{B}
		\sbRelier{B}{S}
		\sbRenvoi[-3]{B-S}{comp}{}
\end{tikzpicture}
\end{verbatim}
\end{small}
\end{minipage}
\begin{minipage}[t]{0.3\linewidth}
 \begin{tikzpicture}
\sbEntree{E}
\sbBloc{B}{$H_1$}{E}
		\sbRelier{E}{B}
\sbSumb{sum}{B}
		\sbRelier{B}{sum}
\sbSortie{S}{sum}
		\sbRelier{sum}{S}
		\sbRenvoi{E-B}{sum}{}
\end{tikzpicture}
\begin{small}
 \begin{verbatim}
 \begin{tikzpicture}
\sbEntree{E}
\sbBloc{B}{$H_1$}{E}
		\sbRelier{E}{B}
\sbSumb{sum}{B}
		\sbRelier{B}{sum}
\sbSortie{S}{sum}
		\sbRelier{sum}{S}
		\sbRenvoi{E-B}{sum}{}
\end{tikzpicture}
\end{verbatim}
\end{small}
\end{minipage}



\subsubsection{Liens d�cal�s}
Ces liens sont utilis�s pour relier un bloc d'un ligne vers un bloc d'une ligne parall�le (vers l'avant ou l'arri�re);

\begin{center}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{a}{E}
\sbBloc{b}{$H_1$}{a}
           \sbRelier[$E_1$]{E}{a}
\sbBlocL{c}{$H_2$}{b}
           \sbRelier[$\epsilon$]{a}{b}
\sbComph{d}{c}
           \sbRelier[u]{c}{d}
\sbBlocL{e}{$H_3$}{d}
\sbBlocL{f}{$H_4$}{e}
\sbSortie[5]{S1}{f}
           \sbRelier{f}{S1}
           \sbNomLien[0.8]{S1}{$S_1$}
\sbDecaleNoeudy[-4]{f}{u}
\sbDecaleNoeudy{e}{v}
\sbBlocr{r1}{$R_1$}{u}
\sbBlocr{r2}{$R_2$}{v}
\sbBlocrL{r3}{$R_3$}{r2}
\sbRelieryx{f-S1}{r1}
\sbRelierxy[n1]{r1}{d}
\sbRelieryx{e-f}{r2}
\sbRelierxy[n2]{r3}{a}
\end{tikzpicture}
\end{center}

\begin{minipage}[t]{0.46\linewidth}
Code
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{a}{E}
           \sbRelier[$E_1$]{E}{a}
\sbBloc{b}{$H_1$}{a}
           \sbRelier[$\epsilon$]{a}{b}
\sbBlocL{c}{$H_2$}{b}
\sbComph{d}{c}
           \sbRelier[u]{c}{d}
\sbBlocL{e}{$H_3$}{d}
\sbBlocL{f}{$H_4$}{e}
\sbSortie[5]{S1}{f}
           \sbRelier{f}{S1}
           \sbNomLien[0.8]{S1}{$S_1$}
\sbDecaleNoeudy[-4]{f}{u}
\sbDecaleNoeudy{e}{v}
\sbBlocr{r1}{$R_1$}{u}
\sbBlocr{r2}{$R_2$}{v}
\sbBlocrL{r3}{$R_3$}{r2}
\sbRelieryx{f-S1}{r1}
\sbRelierxy[n1]{r1}{d}
\sbRelieryx{e-f}{r2}
\sbRelierxy[n2]{r3}{a}
\end{tikzpicture}
\end{verbatim}
\end{minipage}
\begin{minipage}[t]{0.46\linewidth}
Commentaires
\begin{itemize}
    \item Les premi�res commandes (de \verb"\sbEntree.." � \verb"\sbSortie{S1}..") placent les blocs de la cha�ne directe, certains blocs sont positionn�s avec la commande \verb"\sbBloc"  d'autres avec \verb"\sbBlocL";
    \item le nom de la sortie n'est pas positionn� avec la commande \verb"\sbRelier{f}{S1}"  mais avec la commande \verb"\sbNomLien[0.8]{S1}{$S_1$}" afin qu'il ne soit pas superpos� au trait du retour vers $R_1$;
    \item Les deux commandes \verb"\sbDecaleNoeudy[-4]{f}{u}" et \verb"\sbDecaleNoeudy{e}{v}" permettent de positionner le d�part des deux boucles de retour, la premi�re est d�cal� de \textbf{[-4]} au dessus de la cha�ne pr�c�dente et positionn�e par rapport au bloc \textbf{f}, la seconde est plac�e par d�faut au dessous par rapport au bloc \textbf{e}. Ces nouveaux n\oe uds sont nomm�s \textbf{u} et \textbf{v}.
    \item Les blocs de retours sont ensuite trac�s de la droite vers la gauche par rapport � ces n \oe uds avec la commande \verb"\sbBlocr..." et \verb"\sbBlocrL..." puis reli�s.
    \item La commande \verb"\sbRelieryx{f-S1}{r1}" trace le lien depuis le milieu de la liaison entre les blocs \textbf{f} et \textbf{s} et le bloc \textbf{r1}, la commande \verb"\sbRelierxy[n1]{r1}{d}" trace le lien vers le comparateur 
    \item 
\end{itemize}
\end{minipage}

\subsubsection{Personnalisation des liens}

La commande \verb"\sbStyleLien{liste d'option}"  permet de personnaliser le trac� des liens et des textes associ�s.

\begin{center}
     \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}
		\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbStyleLien{dashed, red}
\sbBloc[8]{B2}{$H_1$}{B1}
		\sbRelier[lien]{B1}{B2}
\sbSortie[4]{S}{B2}
\sbStyleLienDefaut
\sbStyleLien{blue, very thick,text=brown}
		\sbRelier[Sortie]{B2}{S}
\sbStyleLien{dashed}
		\sbRenvoi{B2-S}{comp}{}
\sbStyleLienDefaut
\end{tikzpicture}
\end{center}

\begin{multicols}{2}

\begin{verbatim}
 \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbStyleLien{dashed, red}
\sbBloc[8]{B2}{$H_1$}{B1} 
\sbRelier[lien]{B1}{B2}
\sbSortie[4]{S}{B2}
\sbStyleLienDefaut
\sbStyleLien{blue, very thick,text=brown}
		\sbRelier[Sortie]{B2}{S}
\sbStyleLien{dashed}
		\sbRenvoi{B2-S}{comp}{}
\sbStyleLienDefaut
\end{tikzpicture}
\end{verbatim}
\end{multicols}

 Cette commande s'applique � tous les types de liens, les styles sont actifs jusqu'� une nouvelle d�finition, et comme pour la commande \verb"\sbStyleBloc{liste d'option}"  ils sont cumulatifs. La commande \verb"\sbStyleLienDefaut" r�-initialise le style par d�faut.

\subsection{Cha�nes et Boucles}

Plusieurs commandes globales facilitent le trac� de sch�ma blocs, elle tracent directement des cha�nes de blocs, ou des boucles.

\subsubsection{Cha�nes}
deux commandes, une qui pour trace des chaines directe ( de la gauche vers la droite), l'autre les cha�nes de retour (de la droite vers la gauche).
\begin{description}
\item [Cha�ne directe:] \verb"\sbChaine[pas]{Noeud depart}{liste blocs Nom/Fonction}"

\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbChaine[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\end{tikzpicture}
\end{verbatim}

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbChaine[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\end{tikzpicture}
\end{center}

\item [Cha�ne de retour: ]\verb"\sbChaineRetour[pas]{Noeud depart}{liste blocs Nom/Fonction}"

\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbChaineRetour[3]{E}{E1/$E_1(p)$,F/$\dfrac{K_p}{1+\tau\cdot p}$,G/$G(p)$}
\end{tikzpicture}

\end{verbatim}

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbChaineRetour[3]{E}{E1/$E_1(p)$,F/$\dfrac{K_p}{1+\tau\cdot p}$,G/$G(p)$}
\end{tikzpicture}
\end{center}

\end{description}

On retrouve dans ces deux commandes
\begin{description}
\item[pas: ] distance en em entre les blocs,
\item[noeud depart:] le premier bloc de la cha�ne est positionn�e � la distance pas du n\oe ud noeud depart,
\item[liste blocs: ] la liste des blocs est not�e avec la syntaxe suivante $Nom_1$/$Fonction_1$, $Nom_2$/$Fonction_2$, ...., $Nom_i$/$Fonction_i$, ...., $Nom_n$/$Fonction_n$.
\end{description}


Avec ces deux commandes, on dessine rapidement le sch�ma ci dessous avec un code relativement court.

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}\sbRelier[$E(p)$]{E}{comp}
\sbChaine[4]{comp}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\sbDecaleNoeudy[5]{B-C}{DebutRetour}
\node[above of=comp-A,node distance=0.5em]{$\varepsilon(p)$};
\node[above of=B-C,node distance=0.5em]{$V(p)$};
\sbChaineRetour[2]{DebutRetour}{E1/$E_1(p)$,F/$\dfrac{K_p}{1+\tau\cdot p}$,G/$G(p)$}
\sbRelieryx{B-C}{E1}
\sbRelierxy{G}{comp}
\sbSortie[5]{S}{D}\sbRelier[$S(p)$]{D}{S}
\end{tikzpicture}
\end{center}


\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}\sbRelier[$E(p)$]{E}{comp}
\sbChaine[4]{comp}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\sbDecaleNoeudy[5]{B-C}{DebutRetour}
\node[above of=comp-A,node distance=0.5em]{$\varepsilon(p)$};
\node[above of=B-C,node distance=0.5em]{$V(p)$};
\sbChaineRetour[2]{DebutRetour}{E1/$E_1(p)$,F/$\dfrac{K_p}{1+\tau\cdot p}$,G/$G(p)$}
\sbRelieryx{B-C}{E1}
\sbRelierxy{G}{comp}
\sbSortie[5]{S}{D}\sbRelier[$S(p)$]{D}{S}
\end{tikzpicture}
\end{verbatim}

On remarquera, tous les liens sont nomm�s, le nom est construit � partir du nom des deux blocs � relier, ainsi, B-C  correspond au point milieu du lien entre B et C.

La commande tikz \verb"\node[above of=B-C,node distance=0.5em]{$V(p)$};" permet de placer le nom du lien au dessus (� la distance 0.5em) de celui-ci.


\subsubsection{Boucles}

Trois commandes permettent de dessiner des sch�mas blocs boucl�s unitaire ou non.
\begin{description} 
\item[Boucle unitaire: ]deux commandes, une pour dessiner une boucle � retour unitaire � ins�rer dans un sch�ma, l'autre pour dessiner compl�tement la boucle.

\begin{itemize}
\item  \verb"\sbBoucle[pas]{noeud depart}{liste de blocs chaine directe}" ou 

\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbBoucle[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\end{tikzpicture}
\end{verbatim}

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbBoucle[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}
\end{tikzpicture}
\end{center}

\item \verb"\sbBoucleSeule[pas]{Noeud debut}{liste blocs}{Sortie}"

\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbBoucleSeule[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}{S}
\end{tikzpicture}
\end{verbatim}

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbBoucleSeule[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}{S}
\end{tikzpicture}
\end{center}

\end{itemize}




\item[Boucle � retour non unitaire: ] 

\verb"\sbBoucleRetour[pas]{noeud depart}{liste chaine directe}{liste chaine de retour}"

\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbBoucleRetour[3]{E}{A/$A_1(p)$,BB/Fonction(p),C/$C(p)$,D/$D_1(p)$}{F/$F(p)$,G/$G(p)$}
\end{tikzpicture}
\end{verbatim}

\begin{center}
    \begin{tikzpicture}
\sbEntree{E}
\sbBoucleRetour[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$}{F/$F(p)$,G/$G(p)$}
\end{tikzpicture}
\end{center}


\end{description}
\newdimen\oldparindent \oldparindent=\parindent
\noindent\begin{minipage}{0.4\textwidth}
\parindent=\oldparindent
Encore un  petit exemple, dans le quel on peut noter que le lien entre le comparateur est nomm� CompU-C, ce nom est construit � partir de (Comp) concat�ner avec le  n\oe ud de d�part (U)  - le n\oe ud suivant (C).

\end{minipage}\hfill
\begin{minipage}{0.6\textwidth}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{U}
\sbBoucleRetour[3]{U}{C/$C(p)$,A/$A$,H/$H_{sys}(p)$}{G/G}
\node[above of=CompU-C,node distance=0.5em]{$\varepsilon(p)$};
\node[above of=A-H, node distance=0.5em]{$U(p)$};
\node[above of=U,node distance=0.5em]{$U(p)$};
\sbSortie[5]{V2}{H}\sbRelier[$V_2(p)$]{H}{V2}
\end{tikzpicture}
\end{verbatim}
\end{minipage}




\begin{center}
    \begin{tikzpicture}
\sbEntree{U}
\sbBoucleRetour[3]{U}{C/$C(p)$,A/$A$,H/$H_{sys}(p)$}{G/G}

\node[above of=CompU-C,node distance=0.5em]{$\varepsilon(p)$};
\node[above of=A-H, node distance=0.5em]{$U(p)$};
\node[above of=U,node distance=0.5em]{$U(p)$};

\sbSortie[5]{V2}{H}\sbRelier[$V_2(p)$]{H}{V2}
\end{tikzpicture}
\end{center}










\subsection{Changement de taille}

Toutes dimensions �tant en em, le changement de taille d'un graphe se fait en changeant la taille des caract�res de l'environnement englobant.

\begin{tabular}{|c|c|} \hline
normal & small  \\ 
 \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbBloc[3]{B2}{$H_1$}{B1} 
\sbRelier[lien]{B1}{B2}
\sbSortie{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi{B2-S}{comp}{}
\end{tikzpicture} &
\begin{small}
 \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbBloc[3]{B2}{$H_1$}{B1} 
\sbRelier[lien]{B1}{B2}
\sbSortie{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi{B2-S}{comp}{}
\end{tikzpicture}
\end{small} \\ \hline
tiny & Large  \\ 
\begin{tiny}
 \begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbBloc[3]{B2}{$H_1$}{B1} 
\sbRelier[lien]{B1}{B2}
\sbSortie{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi{B2-S}{comp}{}
\end{tikzpicture} 
\end{tiny}&
\begin{Large}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\sbBloc[3]{B2}{$H_1$}{B1} 
\sbRelier[lien]{B1}{B2}
\sbSortie{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi{B2-S}{comp}{}
\end{tikzpicture}
\end{Large} \\ \hline
\end{tabular}

Il est aussi possible d'utiliser ce changement de taille pour par exemple insister sur une partie de la boucle comme par exemple sur l'exemple ci-dessous, o� on souhaite insister sur la boucle ext�rieure.

\begin{center}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\begin{tiny}
\sbComp[8]{comp2}{B1}    
\sbRelier{B1}{comp2}       
\sbBlocL{B10}{$H_2$}{comp2}
\sbBloc[3]{B20}{$H_3$}{B10} 
\sbRelier[lien]{B10}{B20}
\sbBloc{B30}{$H_4$}{B20}
		\sbRelier{B20}{B30}
		\sbRenvoi{B20-B30}{comp2}{}
\end{tiny}
\sbBloc{B2}{$H_1$}{B30} 
\sbRelier[lien]{B30}{B2}
\sbSortie[6]{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi[6]{B2-S}{comp}{}
\end{tikzpicture}
\end{center}
\begin{multicols}{2}
\begin{verbatim}
\begin{tikzpicture}
\sbEntree{E}
\sbComp{comp}{E}           
\sbRelier{E}{comp}
\sbBlocL{B1}{$H_0$}{comp}
\begin{tiny}
    \sbComp[8]{comp2}{B1}    
    \sbRelier{B1}{comp2}       
    \sbBlocL{B10}{$H_2$}{comp2}
    \sbBloc[3]{B20}{$H_3$}{B10} 
    \sbRelier[lien]{B10}{B20}
    \sbBloc{B30}{$H_4$}{B20}
    \sbRelier{B20}{B30}
    \sbRenvoi{B20-B30}{comp2}{}
\end{tiny}
\sbBloc{B2}{$H_1$}{B30} 
\sbRelier[lien]{B30}{B2}
\sbSortie[6]{S}{B2}
		\sbRelier[Sortie]{B2}{S}
		\sbRenvoi[6]{B2-S}{comp}{}
\end{tikzpicture}
\end{verbatim}

\end{multicols}






%\section{Vielles d�finitions}
%\subsubsection{Avertissement}
%Les anciennes commandes du package schemabloc sont toujours impl�ment�es dans ce package, mais il est pr�f�rable de ne pas les utiliser, elles ne sont maintenues que de mani�re transitoire. Elles ne permettent pas la personnalisation ni le changement de taille.
%\itshape
%\subsubsection{Commandes obsol�tes}
%\begin{itemize}
%\item \verb"\entree{nom}" : Tous les blocs sont dessin�s en relatif par rapport � un noeud d'entr�e, la construction du sch�ma ne peut donc d�buter qu'apr�s avoir d�fini le premier noeud avec la commande:\verb"\entree{nom}".
%\item  \verb"\decale[distance]{E1}{E2}" : La commande \verb"\decale[distance]{E1}{E2}" permet de positionner un nouveau n\oe ud par rapport au n\oe ud pr�c�dent, cette commande est n�cessaire pour d�marrer un nouvelle branche ou pour positionner une nouvelle entr�e.
%\item \verb"\bloc[distance]{nom}{contenu}{bloc precedent}" :
%     \begin{description}
%     \item [distance] ce param�tre optionnel permet de positionner le bloc par rapport au bloc pr�c�dent ( la valeur par d�faut est 6 em);
%     \item [nom] ce param�tre  permet de nommer le noeud associ� au bloc, pour faire r�f�rence � ce bloc, il faudra utiliser ce param�tre (pour relier les blocs);
%     \item [contenu] ce param�tre pr�cise le contenu du bloc, cela paut �tre aussi bien du texte qu'une fonction math�matique comme $\dfrac{K_c}{1 + \tau \cdot p}$ en tapant \verb"$\dfrac{K_c}{1 + \tau \cdot p}$" (ne pas oublier les \$ );
%     \item[bloc precedent] ce param�tre permet de pr�ciser le bloc pr�c�dent, chaque bloc est positionn� relativement au bloc pr�c�dent avec la distance \textbf{distance}.
%     \end{description}
%\item \verb"\blocr..." : La commande \verb"\blocr..." permet de tracer les blocs de la cha�ne de retour de la droite vers la gauche. les param�tres de commande sont identiques.
%\item \verb"\blocseul..." : La commande \verb"\blocseul..." permet de tracer un bloc seul avec une entr�e et une sortie cette commande est g�n�ral utilis�e seule.
%\item \verb"\comp[distance]{nom}{bloc precedent}" : 
%    \begin{description}
%    \item [distance : ] param�tre optionnel permettant de positionner le comparateur par rapport au bloc pr�c�dent ( la valeur par d�faut est 4em);
%    \item [nom :] nom du comparateur, ce nom doit �tre unique dans votre sch�ma, il sert � r�f�rencer le comparateur pour tous les liens;
%    \item [bloc precedent :] le nom du bloc pr�c�dent, le comparateur est plac� � sa droite,� la distance \textbf{distance}.
%    \end{description}
%\item \verb"\comph{comp}{E}" : voir ci-dessus pour les param�tres
%\item \verb"\sumh{comp}{E}" : voir ci-dessus pour les param�tres
%\item \verb"\sumb{comp}{E}" : voir ci-dessus pour les param�tres
%\item \verb"\relier{b1}{b2}{nom}" : liens entre deux blocs (ou comparateur, entr�e ou sortie) dans la cha�ne directe (de la gauche vers la droite)  ou dans la cha�ne de retour (de la droite vers la gauche).
%\item \verb"\renvoi[distance]{nom d�part}{nom arrivee}{texte}" : les renvois sont des liens qui permettent soit de retourner en arri�re (retour) soit de sauter un ou plusieurs blocs; ils sont trac�s entre un lien et un comparateur (sommateur);
%\item \verb"\relieryx{nom depart}{nom arrivee}{texte}" : lien utilis� pour relier un bloc d'un ligne vers un bloc d'une ligne parall�le (vers l'avant ou l'arri�re). Ce lien d�bute par une ligne verticale;
%\item  \verb"\relierxy{nom depart}{nom arrivee}{texte}" : lien utilis� pour relier un bloc d'un ligne vers un bloc d'une ligne parall�le (vers l'avant ou l'arri�re). Ce lien d�bute par une ligne horizontale;
%\end{itemize}

%\subsubsection{Exemple commandes obsol�tes}
%
%\begin{tikzpicture}
%\entree{E}
%\comp{a}{E}
%\bloc{b}{$H_1$}{a}
%\bloc{c}{$H_2$}{b}
%\comph[2]{d}{c}
%\bloc[2]{e}{$H_3$}{d}
%\bloc{f}{$H_4$}{e}
%\sortie{S}{f}
%\sortie{S1}{S}
%\relier{E}{a}{$E_1$}
%\relier{a}{b}{$\epsilon$}
%\relier{b}{c}{}
%\relier{c}{d}{u}
%\relier{d}{e}{}
%\relier{e}{f}{}
%\relier{f}{S}{}
%\relier{S}{S1}{$S_1$}
%\decale[-2]{f}{u}
%\decale{e}{v}
%\blocr{r1}{$R_1$}{u}
%\blocr{r2}{$R_2$}{v}
%\blocr{r3}{$R_3$}{r2}
%\relieryx{f-S}{r1}{}
%\relierxy{r1}{d}{nom1}
%\relieryx{e-f}{r2}
%\relier{r2}{r3}{}
%\relierxy{r3}{a}{nom2}
%\end{tikzpicture}
%
%\begin{minipage}[t]{0.46\linewidth}
%\begin{verbatim}
%Code
%\begin{tikzpicture}
%\entree{E}
%\comp{a}{E}
%\bloc{b}{$H_1$}{a}
%\bloc{c}{$H_2$}{b}
%\comph[5]{d}{c}
%\bloc[5]{e}{$H_3$}{d}
%\bloc{f}{$H_4$}{e}
%\sortie{S}{f}
%\sortie{S1}{S}
%\relier{E}{a}{$E_1$}
%\relier{a}{b}{$\epsilon$}
%\relier{b}{c}{}
%\relier{c}{d}{u}
%\relier{d}{e}{}
%\relier{e}{f}{}
%\relier{f}{S}{}
%\relier{S}{S1}{$S_1$}
%\decale[-5]{f-S}{u}
%\decale{e}{v}
%\blocr{r1}{$R_1$}{u}
%\blocr{r2}{$R_2$}{v}
%\blocr{r3}{$R_3$}{r2}
%\relieryx{f-S}{r1}{}
%\relierxy{r1}{d}{nom1}
%\relieryx{e-f}{r2}
%\relier{r2}{r3}{}
%\relierxy{r3}{a}{nom2}
%\end{tikzpicture}
%\end{verbatim}
%\end{minipage}
%\begin{minipage}[t]{0.46\linewidth}
%Commentaires
%\begin{itemize}
%    \item Les premi�res commandes (de \verb"\entree.." � \verb"\sortie{S1}.." placent les blocs de la cha�ne directe
%    \item On remarquera les deux commandes successives \verb"\sortie..", elles permettent ici d'�viter que le renvoi soit dessin� par dessus le nom de la sortie.
%    \item Les deux commandes \verb"\decale[-5]{f}{u}" et \verb"\decale{e}{v}" permettent de positionner le d�part des deux boucles de retour, la premi�re est d�cal� de \textbf{[-5]} au dessus de la cha�ne pr�c�dente et positionn�e par rapport au bloc \textbf{f}, la seconde est plac�e par d�faut au dessous par rapport au bloc e. Ces nouveaux n\oe uds sont nomm�s \textbf{u} et \textbf{v}.
%    \item Les blocs de retours sont ensuite trac�s de la droite vers la gauche par rapport � ces n \oe uds avec la commande \verb"\blocr..." et reli�s.
%    \item La commande \verb"\relieryx{f-S}{r1}{}" trace le lien depuis le milieu de la liaison entre les blocs \textbf{f} et \textbf{s} et le bloc \textbf{r1}, la commande \verb"\relierxy{r1}{d}{nom1}" trace le lien vers le comparateur 
%    \item 
%\end{itemize}
%
%
%\end{minipage}



\section{Installation}
\begin{itemize}
\item Copier  le package schemabloc.sty dans votre r�pertoire localtexmf/tex/latex \dots
\item placer dans l'ent�te de votre document \verb"\usepackage{schemabloc}"
\end{itemize}

Vous pouvez aussi copier le code des macros ci-dessous dans votre ent�te.


\section{Code des macros}
\begin{verbatim}
%initialisation des styles
\tikzstyle{sbStyleLien}=[->,>=latex',]
\tikzstyle{sbStyleBloc}=[draw, rectangle,]
\tikzstyle{sbStyleBlocPatate}=[]
\tikzstyle{sbStyleSum}=[draw, circle,]%style Sum CC
% Commandes de changement de style
\newcommand{\sbStyleLienDefaut}{
\tikzstyle{sbStyleLien}=[->,>=latex']
}

\newcommand{\sbStyleLien}[1]{
\tikzstyle{sbStyleLien}+=[#1]
}

\newcommand{\sbStyleBloc}[1]{
\tikzstyle{sbStyleBloc}+=[#1]
}
\newcommand{\sbStyleBlocDefaut}{
\tikzstyle{sbStyleBloc}=[draw, rectangle,]
}

\newcommand{\sbStyleSum}[1]{
\tikzstyle{sbStyleSum}+=[#1]
}

\newcommand{\sbStyleSumDefaut}{
\tikzstyle{sbStyleBloc}=[draw, circle,]
}%style Sum default CC


% Commandes d'entr�e et sortie
\newcommand{\sbEntree}[1]{
    \node [coordinate, name=#1] {};
\sbDecaleNoeudx[0]{#1}{#1}
}
\newcommand{\sbSortie}[3][2]{
    \node [coordinate, right of=#3droite, node distance=#1em, minimum size=0em,right] (#2) {};
}

%Commandes de Bloc
\newcommand{\sbBloc}[4][2]{
\node [draw, rectangle, 
    minimum height=3em, minimum width=3em, right of = #4droite,
node distance=#1em,sbStyleBloc,right] (#2) {#3};
\node (#2droite) at (#2.east){};
\node (BlocdeFindroite) at (#2.east){};
}

\newcommand{\sbBlocPatate}[4][2]{
\node [draw, cloud, cloud puffs=5, draw, 
    minimum height=3em, minimum width=5em, right of = #4droite,
node distance=#1em,sbStyleBlocPatate,right] (#2) {#3};
\node (#2droite) at (#2.east){};
}

\newcommand{\sbBlocr}[4][2]{
\node [ 
    minimum height=3em, minimum width=3em, left of = #4gauche, 
node distance=#1em, sbStyleBloc,left] (#2) {#3};
\node (#2gauche) at (#2.west){};
}

\newcommand{\sbBlocL}[4][2]{
\node [draw, rectangle, 
    minimum height=3em, minimum width=3em, right of = #4droite,node distance=#1em,sbStyleBloc,right] (#2) {#3};
\node (#2droite) at (#2.east){};
\node (BlocdeFindroite) at (#2.east){};
 \draw [sbStyleLien,auto] (#4) -- node[name=#4-#2] {} (#2);
}

\newcommand{\sbBlocrL}[4][2]{
\node [draw, rectangle, 
    minimum height=3em, minimum width=3em, left of = #4gauche, 
node distance=#1em, sbStyleBloc,left] (#2) {#3};
\node (#2gauche) at (#2.west){};
\node (BlocdeFingauche) at (#2.west){};
 \draw [sbStyleLien,auto] (#4) -- node[name=#4-#2] {} (#2);
}

\newcommand{\sbBlocseul}[4][1.5]{
\sbEntree{E1}
\sbBloc[#1]{B1}{#3}{E1}
\sbSortie[#1]{S1}{B1}
\sbRelier{E1}{B1}{#2}
\sbRelier{B1}{S1}{#4}
}

%\Commande de lien
\newcommand{\sbRelier}[3][]{
 \draw [sbStyleLien,auto] (#2) -- node[name=#2-#3] {#1} (#3);
}

\newcommand{\sbRelieryx}[2]{
\draw [sbStyleLien] (#1.south)  |-   (#2)  ;
}
\newcommand{\sbRelierxy}[3][]{
\draw [sbStyleLien] (#2)  -|   node[name=#2-#3,near end,right] {#1} (#3) ;
}

\newcommand{\sbRenvoi}[4][4]{
\node [below of=#2, node distance=#1em, minimum size=0em](retour#2) {};
\draw [sbStyleLien] (#2.south)--(retour#2.south)   -|   node[name=#2-#3,near end,right] {#4} (#3) ;
}

\newcommand{\sbNomLien}[3][0.4]{
\node[above of=#2, node distance=#1em] (#2nom) at (#2) {#3};
}
%Commande comparateurs et sommateurs

\newcommand*{\sbCompSum}{\@ifstar\sbCompSumNorm\sbCompSumUsuel}

\newcommand{\sbCompSumUsuel}[7][4]{
    \node [draw, circle,minimum size=2em, right of=#3,node distance=#1em] (#2) {};
	 \node [draw, cross out,minimum size=1.414em,right of=#3,node distance=#1em] {};
	 \node [above of=#2,node distance=0.6em] {$#4$};
	 \node [below of=#2,node distance=0.6em] {$#5$};
	 \node [left of=#2,node distance=0.6em] {$#6$};
	 \node [right of=#2,node distance=0.6em] {$#7$};
\node (#2droite) at (#2.east){};
\node (#2gauche) at (#2.west){};
}

% j'ai modifi� le dessin du comparateur qui comporte 3 entr�es dont le signe est donn�par #4 pour la chaîne directe, #5 pour le retour du bas, #6 pour le retour du haut. J'ai ajout� un style Sum. Je n'ai pas touch� le reste.
\newcommand{\sbCompSumNorm}[7][4]{
    \node [draw, circle,minimum size=1.5em, right of=#3,node distance=#1em,
label=85:$#4$,label=-85:$#5$,label=175:$#6$,label=5:$#7$,sbStyleSum] (#2) {};
\node (#2droite) at (#2.east){};
\node (#2gauche) at (#2.west){};
}

\newcommand{\sbSum}[6][4]{
    \node [draw, circle,minimum size=1.5em, right of=#3,node distance=#1em,
label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {};
\node (#2droite) at (#2.east){};
\node (#2gauche) at (#2.west){};
}

\newcommand*{\sbComp}{\@ifstar\sbCompNorm\sbCompUsuel}
\newcommand{\sbCompUsuel}[3][4]{
\sbCompSum[#1]{#2}{#3}{}{-}{+}{}
}
\newcommand{\sbCompNorm}[3][4]{
\sbCompSum*[#1]{#2}{#3}{}{-}{+}{}
}


\newcommand*{\sbComph}{\@ifstar\sbComphNorm\sbComphUsuel}
\newcommand{\sbComphUsuel}[3][4]{
\sbCompSum[#1]{#2}{#3}{-}{}{+}{}
}

\newcommand{\sbComphNorm}[3][4]{
\sbCompSum*[#1]{#2}{#3}{-}{}{+}{}
}

\newcommand*{\sbSumh}{\@ifstar\sbSumhNorm\sbSumhUsuel}
\newcommand{\sbSumhUsuel}[3][4]{
\sbCompSum[#1]{#2}{#3}{+}{}{+}{}
}
\newcommand{\sbSumhNorm}[3][4]{
\sbCompSum*[#1]{#2}{#3}{+}{}{+}{}
}

\newcommand*{\sbSumb}{\@ifstar\sbSumbNorm\sbSumbUsuel}
\newcommand{\sbSumbUsuel}[3][4]{
\sbCompSum[#1]{#2}{#3}{}{+}{+}{}
}
\newcommand{\sbSumbNorm}[3][4]{
\sbCompSum*[#1]{#2}{#3}{}{+}{+}{}
}


%Commandes de d�calage de noeud

\newcommand{\sbDecaleNoeudy}[3][5]{
\node [below of=#2, node distance=#1em, minimum size=0em](#3) {};
\node (#3droite) at (#3){};
\node (#3gauche) at (#3){};
}
\newcommand{\sbDecaleNoeudx}[3][5]{
\node [right of=#2, node distance=#1em, minimum size=0em](#3) {};
\node (#3droite) at (#3){};
\node (#3gauche) at (#3){};
}


%==============Chaines et Boucles===========

\newcommand{\sbChaine}[3][4]{
\foreach \x/\y [remember=\x as \lastx (initially #2)] in {#3}
{\sbBlocL[#1]{\x}{\y}{\lastx}
}
}

\newcommand{\sbChaineRetour}[3][4]{
\foreach \x/\y [remember=\x as \lastx (initially #2)] in {#3}
{\sbBlocrL[#1]{\x}{\y}{\lastx}
}
}

\newcommand{\sbBoucleSeule}[4][4]{
\sbComp[#1]{Comp#1}{#2}\sbRelier{E}{Comp#1}
\sbChaine[#1]{Comp#1}{#3}
\sbSortie[#1]{#4}{BlocdeFin}
\draw [sbStyleLien,auto] (BlocdeFindroite.base) -- node[name=FindeChaine-#4] {} (#4);
\sbRenvoi{FindeChaine-#4}{Comp#1}{}
}


\newcommand{\sbBoucle}[3][4]{
\sbComp[#1]{Comp#1}{#2}\sbRelier{E}{Comp#1}
\sbChaine[#1]{Comp#1}{#3}
\draw [sbStyleLien,auto,-] (BlocdeFindroite.base) --++(1em,0)coordinate[name=FindeChaine];
\sbRenvoi{FindeChaine}{Comp#1}{}
}

\newcommand{\sbBoucleRetour}[4][4]{
\sbComp[#1]{Comp#1}{#2}\sbRelier{E}{Comp#1}
\sbChaine[#1]{Comp#1}{#3}
\draw [sbStyleLien,auto,-] (BlocdeFindroite.base) --++(1em,0)coordinate[name=FindeChaine];
\sbDecaleNoeudy[5]{FindeChaine}{sbDebutRetour}
\sbChaineRetour[#1]{sbDebutRetour}{#4}
\draw [sbStyleLien,-] (FindeChaine)  |-   (sbDebutRetour.west)  ;

\draw [sbStyleLien] (BlocdeFingauche.base)  -|   node[name=sbNomRetour,near end,right] {} (Comp#1) ;

}
\end{verbatim}






\printindex





\newpage



\printindex


\end{document}



