From 1c4688b4b4b17986b4258259af0b82471a229391 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 3 Oct 2023 20:09:50 +0000 Subject: schemabloc (3oct23) git-svn-id: svn://tug.org/texlive/trunk@68445 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/schemabloc/README | 26 - Master/texmf-dist/doc/latex/schemabloc/README.txt | 26 + .../texmf-dist/doc/latex/schemabloc/schemabloc.pdf | Bin 180169 -> 289394 bytes .../texmf-dist/doc/latex/schemabloc/schemabloc.tex | 1614 +++++++++----------- .../texmf-dist/tex/latex/schemabloc/schemabloc.sty | 331 ++-- 5 files changed, 916 insertions(+), 1081 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/schemabloc/README create mode 100644 Master/texmf-dist/doc/latex/schemabloc/README.txt diff --git a/Master/texmf-dist/doc/latex/schemabloc/README b/Master/texmf-dist/doc/latex/schemabloc/README deleted file mode 100644 index d8e530a2bce..00000000000 --- a/Master/texmf-dist/doc/latex/schemabloc/README +++ /dev/null @@ -1,26 +0,0 @@ - -schemabloc (block diagram) -version : 1.5 - -Ce package est un ensemble de macro-commande Tikz permettant de dessiner des schéma-blocs. - -This packages is a set of macro-command Tikz allowing to draw block diagrams. - -files: -- readme.txt - this file -- schemabloc.sty - the package -- schemabloc.tex - the source of the documentation (french) -- schemabloc.pdf - the documentation (french) - -Remarks and improvements: -Note your remarks and wishes on the forum of the article -http://www.sciences-indus-cpge.apinc.org/Schema-blocs-avec-PGF-TIKZ-sous - -Licenses - This work may be distributed and/or modified under the conditions of - the LaTeX Project Public License, either version 1.3c of this license - or (at your option) any later version. The latest version of this - license is in - http://www.latex-project.org/lppl.txt - and version 1.3c or later is part of all distributions of LaTeX - version 2005/12/01 or later. diff --git a/Master/texmf-dist/doc/latex/schemabloc/README.txt b/Master/texmf-dist/doc/latex/schemabloc/README.txt new file mode 100644 index 00000000000..66f59126d78 --- /dev/null +++ b/Master/texmf-dist/doc/latex/schemabloc/README.txt @@ -0,0 +1,26 @@ + +schemabloc (block diagram) +version : 1.9 + +Ce package est un ensemble de macro-commande Tikz permettant de dessiner des schéma-blocs. + +This packages is a set of macro-command Tikz allowing to draw block diagrams. + +files: +- readme.txt - this file +- schemabloc.sty - the package +- schemabloc.tex - the source of the documentation (french) +- schemabloc.pdf - the documentation (french) + +Remarks and improvements: +Note your remarks and wishes on the forum of the article +http://www.sciences-indus-cpge.apinc.org/Schema-blocs-avec-PGF-TIKZ-sous + +Licenses + This work may be distributed and/or modified under the conditions of + the LaTeX Project Public License, either version 1.3c of this license + or (at your option) any later version. The latest version of this + license is in + http://www.latex-project.org/lppl.txt + and version 1.3c or later is part of all distributions of LaTeX + version 2005/12/01 or later. diff --git a/Master/texmf-dist/doc/latex/schemabloc/schemabloc.pdf b/Master/texmf-dist/doc/latex/schemabloc/schemabloc.pdf index 05d69ee6638..170a3bbf5d9 100644 Binary files a/Master/texmf-dist/doc/latex/schemabloc/schemabloc.pdf and b/Master/texmf-dist/doc/latex/schemabloc/schemabloc.pdf differ diff --git a/Master/texmf-dist/doc/latex/schemabloc/schemabloc.tex b/Master/texmf-dist/doc/latex/schemabloc/schemabloc.tex index fac034bd249..c7b27924ffe 100644 --- a/Master/texmf-dist/doc/latex/schemabloc/schemabloc.tex +++ b/Master/texmf-dist/doc/latex/schemabloc/schemabloc.tex @@ -1,63 +1,100 @@ +% !TeX encoding = utf-8 %--------------DOCUMENT-------------------------------------------------------- \documentclass[a4paper,11pt]{article} % Type de document -\usepackage[frenchb]{babel} % Titres en français +\usepackage[french]{babel} % Titres en fran?ais \usepackage[T1]{fontenc} % Correspondance clavier -> document -\usepackage{fourier} +\usepackage{kpfonts} %-------------PACKAGES--------------------------------------------------------- \usepackage{makeidx} % Indexation du document \usepackage[Bjornstrup]{fncychap} % beaux chapitres -\usepackage{fancyhdr} % entete et pied de pages +%\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[usenames,dvipsnames]{xcolor} \usepackage{geometry} \geometry{ hmargin=2cm, vmargin=1.5cm } \usepackage{multicol} - -\usepackage{subfigure} +\usepackage{verbatim} +\usepackage{subfig} \usepackage{floatflt}% package for floatingfigure environment \usepackage{wrapfig}% package for wrapfigure environment +\usepackage{tikz} +\usetikzlibrary[calc,positioning] + + %-------------PACKAGES PERSO--------------------------------------------------------- + + \usepackage{schemabloc} +\usepackage[most]{tcolorbox} +\newtcblisting{tikzexample}[1][]{%tikz lower, +colback=red!5!white,colframe=red!75!black,listing side text, + title=,fonttitle=\bfseries, + toprule=2mm, + bicolor, + colback=red!15!white, + colbacklower=red!5!white, %white, + %listing options={style=tcblatex,basicstyle=\small}, + #1} + + + +\newtcblisting{tikzexampleL}[1][]{%tikz lower, + listing above text, + colback=red!5!white, + colframe=red!75!black, + title=,fonttitle=\bfseries, + toprule=2mm, + bicolor, + colback=red!15!white, + colbacklower=red!5!white, %white, + listing options={style=tcblatex,basicstyle=\small}, + #1} + +\DeclareTotalTCBox{\myverb}{ v }{verbatim, + colframe=red!75!black,colupper=blue}{#1} + + +\newcommand{\noeud}{n\oe ud} -\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{ifpdf} +%\ifx\pdftexversion\undefined %if using TeX \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 +%\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} +%\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} +% +%\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 +\title{Schéma-blocs avec PGF/TIKZ} % Titre \author{Papanicola Robert} % Auteur(s) \date{\today} % Date (\today pour aujourd'hui) @@ -70,44 +107,50 @@ \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 +\item [version 1.9] Réécriture de la documentation (utilisation de tcolorbox à la place de tkzexample), correction de coquilles et ajout de nouveaux exemples (moteur à courant continu, schémas paramétrés, correcteur P.I.D). +\item[version 1.8] Ajout des commandes permettant de tracer des comparateurs/sommateurs dans les boucles de retour +\item[version 1.62] Retour de la boucle foreach +\item[version 1.61] Ajout de la commande sbStyleSum afin de définir le style graphique des comparateurs et sommateurs. +\item[version 1.6] Remplacement de la boucle foreach de tikz par la boucle \verb"\newforeach" du package loops. +\item [version 1.5.1] Un bug dans la fonction remenber de foreach impose de choisir au minimum la version 2.1 cvs de pgf. +\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. +\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}. +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. +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] +\begin{figure}[!htb] \centering + +\begin{tikzexample}[title=,righthand width=0.45\textwidth,] \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} +\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} +\sbBlocr{cap}{Capteur}{U} \sbRelieryx{sys-S}{cap} + \sbRelierxy[m]{cap}{comp} \end{tikzpicture} +\end{tikzexample} \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 +On retrouve dans ce schéma les principales fonctionnalités des macros \begin{itemize} \item des blocs: \begin{itemize} @@ -115,245 +158,278 @@ On retrouve dans ces sch \item de la droite vers la gauche; \end{itemize} \item un comparateur; -\item une entrée; +\item une entrée; \item une sortie; \item des liens: \begin{itemize} -\item simple entre blocs alignés, +\item simple entre blocs alignés, \item entre un lien et un bloc , -\item entre deux blocs (ou comparateur) non alignés, +\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{wrapfigure}[8]{r}{7cm} +\centering \begin{verbatim} \begin{tikzpicture} + ..... listes de commandes ..... + ..... \end{tikzpicture} \end{verbatim} -\end{minipage} +\caption{Environnement tikzpicture} +\label{fig:envirTikz} +\end{wrapfigure} + +Les macros suivantes s'utilisent dans l'environnement \textbf{tikzpicture}. + +Vous devez avoir installé la dernière version du package \textbf{pgf}. + -\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 + +\subsection{Entrée et n\oe ud} + +Tous les blocs sont dessinés en relatif par rapport à un n\oe ud d'entrée, la construction du schéma ne peut donc débuter qu'après avoir défini le premier n\oe ud avec la commande:\myverb{\sbEntree{nom}}. + + + +Les commandes \myverb{\sbDecaleNoeudx[distance]{N1}{N2}} et \myverb{\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 +\item suivant x - horizontalement de la gauche vers la droite pour le sens positif, +\item suivant y - verticalement du haut vers le bas de la page pour le sens positif. \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. +Ces commandes sont nécessaires 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 \textbf{em}, la valeur par défaut est de $5em$. + +\textbf{Remarque:} il est toujours possible de positionner les différents n\oe uds en absolu dans la page en utilisant les commandes spécifiques de tikz (\verb"\node..."). -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 +Deux commandes principales 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} +\item la première permet le dessin d'un bloc seul; + + \myverb{\sbBloc[distance]{nom}{contenu}{bloc precédent}} + + +\item la seconde permet le dessin du bloc et du lien avec le bloc précédent + + \myverb{\sbBlocL[distance]{nom}{contenu}{bloc précédent}} + \end{itemize} - avec les paramètres suivant: + 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}. +\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 précédent] 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} +\subsubsection{Exemples} +%\begin{multicols}{2} + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title= , righthand width=0.45\textwidth,] \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} +\sbEntree{E} +\sbBloc{bloc1}{contenu}{E} \end{tikzpicture} -\end{verbatim} +\end{tikzexample} -\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{tikzexample}[title= , righthand width=0.45\textwidth,] \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} +\sbEntree{E} +\sbBloc{bloc2} +{$K_c\dfrac{K}{1+\tau \cdot p}$}{E} +\sbBlocL[3]{bloc3}{Bloc lié}{bloc2} \end{tikzpicture} -\caption{commandes sbBloc et sbBlocL} +\end{tikzexample} +\caption{Commandes +\textbackslash sbBloc et {\textbackslash sbBlocL} } \label{fig:commandebloc} \end{figure} +\begin{itemize} + \item on notera la présence de \myverb{\sbentree} pour positionner le premier bloc; + \item le nom du bloc correspond à un \verb+\node+ au sens de Tikz; + \item le premier bloc s'est adapté en hauteur et largeur en fonction du contenu; + \item le second bloc est décalé de $4em$ du précédent et relié. +\end{itemize} + + \subsubsection{Autres commandes de Bloc} -\paragraph{Bloc de la chaîne de retour} +\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. +La commande \myverb{\sbBlocr...} (respectivement \myverb{\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 \noeud) 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 +La commande \myverb{\sbBlocseul...} permet de tracer un bloc seul avec une entrée et une sortie cette commande est en 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{tikzexample}[title=Commande , righthand width=0.45\textwidth,] \begin{tikzpicture} -\sbBlocseul[3]{Entrée}{$H(p)$}{Sortie} - +\sbBlocseul[3]{Entrée}{$H(p)$}{Sortie} \end{tikzpicture} -\end{minipage} +\end{tikzexample} \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 +La commande \myverb{\sbStyleBloc{liste d'options}} 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 \myverb{\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{tikzexample}[title=Personnalisation des blocs , righthand width=0.55\textwidth,] \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} +\sbBlocL{B1}{$\dfrac{K} +{1+p+p^2}$}{B0} \sbStyleBloc{fill=black!30, -text=blue,ellipse} + 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. +\end{tikzexample} + +Comme on le voit ci-dessus, il même possible de modifier la forme du \noeud. Toutes les options relatives au tracé des +\noeud s de 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} +\subsubsection{Les commandes de base} + + Les deux commandes + \myverb{\sbComp[distance]{nom}{bloc précédent}} et \\ + \myverb{\sbComp*[distance]{nom}{bloc précédent}} +permettent de dessiner un comparateur avec les opérateurs dans le symbole -permettent de dessiner un comparateur, soit avec sa représentation usuelle +\begin{tikzexample}[title=Personnalisation des comparateurs , righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E} \sbComp[0]{comp}{E} \end{tikzpicture} -ou avec les opérateurs à l'extérieur +\end{tikzexample} + +ou avec les opérateurs à l'extérieur + +\begin{tikzexample}[title=Personnalisation des comparateurs , righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E} \sbComp*[0]{comp}{E} \end{tikzpicture} - avec les paramètres suivant: +\end{tikzexample} + 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}. +\item [étoile $*$ : ] la version étoilée permet l'affichage des opérateurs à l'extérieur; +\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 précédent :] le nom du bloc précédent, le comparateur est placé à sa droite,à la distance \textbf{distance}. \end{description} -\begin{figure}[!ht] +On retrouve dans la figure~\ref{fig:comp} deux exemples d'utilisation d'un comparateur. + +\begin{figure}[!htb] \centering + +\begin{tikzexample}[title= , righthand width=0.5\textwidth,] \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} +\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} +\end{tikzexample} + +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E} \sbComp*{comp}{E} \sbRelier[$E_1$]{E}{comp} -\sbBloc{reg}{Rég}{comp} \sbRelier[$\epsilon$]{comp}{reg} +\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} +\end{tikzexample} +\caption{Comparateur- commande étoilée ou non} +\label{fig:comp} +\end{figure} + + +\subsubsection{Comparateur dans la boucle de retour} + +Les commandes indicées avec un \og r\fg{} permettent de placer un correcteur dans la boucle de retour (figure~\ref{fig:comparretrour}). + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] +\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} +\sbBlocr{cap}{Capt}{U} \sbRelieryx{sys-S}{cap} +\sbCompr[1.5]{C2}{cap} \sbRelier{cap}{C2} +\sbBlocr[1.5]{K}{$K$}{C2} \sbRelier{C2}{K} + \sbRelierxy{K}{comp} +\draw[latex-] (C2)|- ++ (2em,-3em)node[right]{$Pert$}; \end{tikzpicture} -\caption{Comparateur- commande étoilée ou non} -\label{fig:comp} + +\end{tikzexample} +\caption{Utilisation d'un comparateur dans la boucle de retour} +\label{fig:comparretrour} \end{figure} +On peut ainsi installer toutes les formes de comparateurs et sommateurs. + +On remarque aussi sur le schéma de la figure~\ref{fig:comparretrour} l'utilisation des commandes de tracé de Tikz + +%\clearpage + \subsubsection{Commandes et symboles} -D'autres commandes génériques permettent de dessiner rapidement les principaux symboles de sommation et de comparaison. +D'autres commandes génériques permettent de dessiner rapidement les principaux symboles de sommation et de comparaison. \begin{table}[!ht] \centering @@ -397,9 +473,14 @@ D'autres commandes g \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} +\subsubsection{Commandes génériques} + + + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E1} \sbCompSum[-4]{C1}{E1}{a}{b}{c}{d} @@ -408,8 +489,9 @@ Une commande plus g \sbCompSum[8]{C1}{E1}{+}{ }{+}{-} \sbCompSum[12]{C1}{E1}{ }{+}{-}{-} \end{tikzpicture} +\end{tikzexample} - +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E1} \sbCompSum*[-4]{C1}{E1}{a}{b}{c}{d} @@ -418,337 +500,245 @@ Une commande plus g \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{tikzexample} +\caption{Différentes formes de comparateurs / sommateurs} +\label{fig:compsum1} +\end{figure} + + +Deux commandes plus génériques (figure~\ref{fig:compsum1}) +\begin{itemize} +\item \myverb{\sbCompSum[dist]{nom}{E1}{a}{b}{c}{d}} +\item \myverb{\sbCompSumr[dist]{nom}{E1}{a}{b}{c}{d}} +\end{itemize} +permettent de dessiner tout sommateur et entre autres les sommateurs et comparateurs placés dans les lignes de retour et les commandes étoilées le sommateur (comparateur) avec les signes à l'extérieur. +\begin{itemize} +\item \myverb{\sbCompSum*[dist]{nom}{E1}{a}{b}{c}{d}} +\item \myverb{\sbCompSumr*[dist]{nom}{E1}{a}{b}{c}{d}} +\end{itemize} -\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. +La commande \myverb{\sbBlocL...} permet de tracer un bloc avec un lien sans texte avec le bloc précédent, 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. +\item lien direct \myverb{\sbRelier[nom]{b1}{b2}}; +\item les renvois et sauts \myverb{\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 "-") +\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: +\myverb{\sbRelier[nom]{b1}{b2}} +Le nom du lien (optionnel) est placé au dessus du lien au centre, -\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} +Trois n\oe uds sont définis le long du lien entre les éléments définis par $b1$ et $b2$ -\end{minipage} -\begin{minipage}[t]{0.46\linewidth} -\begin{verbatim} +\begin{itemize} +\item \textbf{b1-b2}: concaténation des noms avec un tiret "-" placé au milieu du lien; +\item \textbf{b1-b2-1}: placé au premier tiers du lien; +\item \textbf{b1-b2-2}: placé au second tiers du lien; + +\end{itemize} + +\begin{tikzexample}[title=, righthand width=0.45\textwidth,] \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} +\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} +\end{tikzexample} + \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); +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{figure}[!htb] +\centering + +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] \begin{tikzpicture} \sbEntree{E} \sbComph[1.5]{comp}{E} - \sbRelier{E}{comp} + \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}{} + \sbRelier{comp}{B} +\sbBloc[5]{B2}{bloc 2}{B} + \sbRelier[$a$]{B}{B2} +\sbRenvoi[-4]{B-B2-1}{comp}{$a$} +\sbCompL{C2}{B2} + \sbRenvoi{B-B2}{C2}{} \end{tikzpicture} -\end{verbatim} -\end{small} -\end{minipage} +\end{tikzexample} + + +\caption{Utilisation des renvois} +\label{fig:renvois1} +\end{figure} +La commande \myverb{\sbRenvoi[dist]{n1}{n2}{}} comporte les éléments suivants: +\begin{itemize} +\item \textbf{n1} : le nom du lien de départ ; +\item \textbf{n2} : le nom du comparateur; +\item \textbf{dist}: la distance optionnelle au dessous si la valeur est positive, au dessus si la valeur est négative. -\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); +\end{itemize} -\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} +La figure~\ref{fig:renvois1} présente deux utilisations des renvois. -\begin{minipage}[t]{0.46\linewidth} -Code -\begin{verbatim} + + + + +\begin{itemize} +\item \myverb{\sbRenvoi[-4]{B-B2-1}{comp}{$a$}} trace un renvoi qui part du premier tiers du lien \textbf{B-B2-1} entre \textbf{B} et \textbf{B2} en passant au-dessus. Le nom du lien $a$ est placé à l'extrémité du lien. +\item \myverb{\sbRenvoi{B-B2}{C2}{}} trace un renvoi du milieu du lien vers le second comparateur. On remarque qu'il est nécessaire de ne pas oublier les deux accolades vides. +\end{itemize} + + +\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{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \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} +\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} +\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} + \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 + +\end{tikzexampleL} + +\caption{Utilisation des liens décalés} +\label{fig:liensdecals} +\end{figure} + + +On note sur la figure~\ref{fig:liensdecals}! \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 + \item Les premières commandes (de \myverb{\sbEntree..} à \myverb{\sbSortie{S1}..}) placent les blocs de la chaîne directe, certains blocs sont positionnés avec la commande \myverb{\sbBloc} d'autres avec \myverb{\sbBlocL}; + \item Le nom de la sortie n'est pas positionné avec la commande \myverb{\sbRelier{f}{S1}} mais avec la commande \myverb{\sbNomLien[0.8]{S1}{$S_1$} } afin qu'il ne soit pas superposé au trait du retour vers $R_1$; + \item Les deux commandes \myverb{\sbDecaleNoeudy[-4]{f}{u}} et \myverb{\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 \myverb{\sbBlocr...} et \myverb{\sbBlocrL...} puis reliés. + \item La commande \myverb{\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 \myverb{\sbRelierxy[n1]{r1}{d}} trace le lien vers le comparateur . \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. +La commande \myverb{\sbStyleLien{liste d'option}} permet de personnaliser le tracé des liens et des textes associés. + -\begin{center} - \begin{tikzpicture} + +\begin{tikzexample}[title=, righthand width=0.5\textwidth,] +\begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E} - \sbRelier{E}{comp} + \sbRelier{E}{comp} \sbBlocL{B1}{$H_0$}{comp} -\sbStyleLien{dashed, red} -\sbBloc[8]{B2}{$H_1$}{B1} - \sbRelier[lien]{B1}{B2} + \sbStyleLien{dashed, red} +\sbBloc[6]{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 + \sbStyleLienDefaut +\sbStyleLien{blue,very thick,text=brown} + \sbRelier[Sortie]{B2}{S} + \sbStyleLien{dashed} + \sbRenvoi{B2-S}{comp}{} + \sbStyleLienDefaut \end{tikzpicture} -\end{center} +\end{tikzexample} -\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. +Cette commande s'applique à tous les types de liens, les styles sont actifs jusqu'à une nouvelle définition, et comme pour la commande \myverb{\sbStyleBloc{liste d'option}} ils sont cumulatifs. La commande \myverb{\sbStyleLienDefaut} ré-initialise le style par défaut. + +\subsection{Chaînes et Boucles} -\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. -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 chaînes directe ( de la gauche vers la droite), l'autre les chaînes de retour (de la droite vers la gauche). -\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}" +\item [Chaîne directe:] \myverb{\sbChaine[pas]{Noeud depart}{liste blocs Nom/Fonction}} +\item [Chaîne de retour: ] \myverb{\sbChaineRetour[pas]{Noeud depart}{liste blocs Nom/Fonction}} +\end{description} -\begin{verbatim} + \begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \begin{tikzpicture} \sbEntree{E} -\sbChaine[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$} +\sbChaine[4]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$} \end{tikzpicture} -\end{verbatim} +\end{tikzexampleL} +\caption{Chaîne directe} +\label{fig:chainedirecte} +\end{figure} -\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{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \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{tikzexampleL} +\caption{Chaîne de retour} +\label{fig:chaineretoure} +\end{figure} -\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$. +\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} +% +Avec ces deux commandes, on dessine rapidement le schéma ci dessous avec un code relativement court. +% -\begin{verbatim} +\begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E}\sbRelier[$E(p)$]{E}{comp} @@ -761,140 +751,130 @@ Avec ces deux commandes, on dessine rapidement le sch \sbRelierxy{G}{comp} \sbSortie[5]{S}{D}\sbRelier[$S(p)$]{D}{S} \end{tikzpicture} -\end{verbatim} +\end{tikzexampleL} +\caption{Utilisation des chaînes directe et de retour} +\label{fig:schemacompletsimple} +\end{figure} + + -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. +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. +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. +\item[Boucle unitaire: ]deux commandes: \begin{itemize} -\item \verb"\sbBoucle[pas]{noeud depart}{liste de blocs chaine directe}" ou +\item \myverb{sbBoucle[pas]{nÅ“ud départ}{liste de blocs chaine directe}}: cette commande dessine une schéma bouclé à retour unitaire sans la sortie (figure~\ref{fig:retourunitaire}). Cette commande peut être associé et complété pour réaliser un schéma plus complexe. -\begin{verbatim} + +\item \myverb{\sbBoucleSeule[pas]{NÅ“ud début}{liste blocs}{Sortie}}: cette commande reprend la précédente et ajoute une sortie (figure~\ref{fig:retourunitairesortie}). + + + \end{itemize} + + +\begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \begin{tikzpicture} \sbEntree{E} \sbBoucle[3]{E}{A/$A_1(p)$,B/Fonction(p),C/$C(p)$,D/$D_1(p)$} +\sbBlocL{E}{$E_1(p)$}{D} \end{tikzpicture} -\end{verbatim} + \end{tikzexampleL} +\caption{Tracé direct d'un schéma blocs à retour unitaire} +\label{fig:retourunitaire} +\end{figure} -\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{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \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} + \end{tikzexampleL} +\caption{Tracé direct d'un schéma blocs à retour unitaire avec sortie} +\label{fig:retourunitairesortie} +\end{figure} -\item[Boucle à retour non unitaire: ] +\item[Boucle de retour non unitaire: ] ~\\ -\verb"\sbBoucleRetour[pas]{noeud depart}{liste chaine directe}{liste chaine de retour}" -\begin{verbatim} +\begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] \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} + \end{tikzexampleL} +\caption{Tracé direct d'un schéma blocs avec complet} +\label{fig:retourunitairecomplet} +\end{figure} + +\begin{itemize} +\item {\small \myverb{\sbBoucleRetour[pas]{nÅ“ud départ}{liste chaine directe}{liste chaine de retour}} }: cette commande reprend les deux commandes de chaîne directe et de chaîne de retour. + +\end{itemize} -\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} +Encore un petit exemple (figure~\ref{fig:tikzliennom}), on utilise dans cet exemple différentes commandes de tracés de Tikz pour nommer les différents liens et blocs. +\begin{itemize} +\item Le comparateur est nommé en concaténant le mot \textbf{Comp} avec le nom associé à l'entrée (ici \textbf{U}) soit \textbf{Comp-U}. +\item Chaque bloc est nommé comme dans la liste de la commande. +\item Chaque lien est nommé en concaténant le nom des deux deux blocs avec un tiret. +\item Il est conseillé de préciser les distances et coordonnées en \textbf{em}. +\end{itemize} -\begin{center} - \begin{tikzpicture} + +\begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] +\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)$}; - +\node[above =0.1em of CompU-C]{$\varepsilon(p)$}; +\node[above =0.5em of A]{$G(p)$}; +\node[above right =0.25em of U]{$U(p)$}; +\node[above =0.25em of A-H]{$W(p)$}; +\draw[latex-] (CompU) --++(0.5em,3em) node[right]{Comparateur}; \sbSortie[5]{V2}{H}\sbRelier[$V_2(p)$]{H}{V2} \end{tikzpicture} -\end{center} - - - - - - - - - + \end{tikzexampleL} +\caption{Utilisation des commandes de Tikz pour nommer les liens et bloc} +\label{fig:tikzliennom} +\end{figure} + \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. +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} + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title=,] +{\small +\begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E} \sbRelier{E}{comp} @@ -902,13 +882,20 @@ normal & small \\ \sbBloc[3]{B2}{$H_1$}{B1} \sbRelier[lien]{B1}{B2} \sbSortie{S}{B2} - \sbRelier[Sortie]{B2}{S} - \sbRenvoi{B2-S}{comp}{} +\sbRelier[Sortie]{B2}{S} +\sbRenvoi{B2-S}{comp}{} \end{tikzpicture} -\end{small} \\ \hline -tiny & Large \\ -\begin{tiny} - \begin{tikzpicture} +} + \end{tikzexample} +\caption{Tracé en taille \textbf{small}} +\label{fig:tikzsmall} +\end{figure} + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title=, righthand width=0.55\textwidth,] +{\Large +\begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E} \sbRelier{E}{comp} @@ -916,11 +903,19 @@ tiny & Large \\ \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} +\sbRelier[Sortie]{B2}{S} +\sbRenvoi{B2-S}{comp}{} +\end{tikzpicture} +} + \end{tikzexample} +\caption{Tracé en taille \textbf{Large}} +\label{fig:tikzLarge} +\end{figure} + +\begin{figure}[!htb] +\centering +\begin{tikzexample}[title=, righthand width=0.45\textwidth,] +{\tiny \begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E} @@ -929,442 +924,215 @@ tiny & Large \\ \sbBloc[3]{B2}{$H_1$}{B1} \sbRelier[lien]{B1}{B2} \sbSortie{S}{B2} - \sbRelier[Sortie]{B2}{S} - \sbRenvoi{B2-S}{comp}{} +\sbRelier[Sortie]{B2}{S} +\sbRenvoi{B2-S}{comp}{} \end{tikzpicture} -\end{Large} \\ \hline -\end{tabular} +} + \end{tikzexample} +\caption{Tracé en taille \textbf{tiny}} +\label{fig:tikztiny} +\end{figure} -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. +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 de la figure~\ref{fig:tikzTaille}, où on souhaite insister sur la boucle intérieure. -\begin{center} +\begin{figure}[!htb] +\centering +\begin{tikzexampleL}[title=,] +{\tiny \begin{tikzpicture} \sbEntree{E} \sbComp{comp}{E} -\sbRelier{E}{comp} + \sbRelier{E}{comp} \sbBlocL{B1}{$H_0$}{comp} -\begin{tiny} -\sbComp[8]{comp2}{B1} -\sbRelier{B1}{comp2} +{\normalsize +\sbStyleBloc{blue,very thick,% +fill=yellow,text=red} +\sbComp[5]{comp2}{B1} + \sbRelier{B1}{comp2} \sbBlocL{B10}{$H_2$}{comp2} \sbBloc[3]{B20}{$H_3$}{B10} -\sbRelier[lien]{B10}{B20} + \sbRelier[lien 1]{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} + \sbRenvoi[2]{B20-B30}{comp2}{} +} +\sbBloc[5]{B2}{$H_1$}{B30} + \sbRelier[lien 2]{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} +} + \end{tikzexampleL} +\caption{Utilisation du changement de taille dans un schéma} +\label{fig:tikzTaille} +\end{figure} \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}" +\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){}; -} +\section{Exemples} -\newcommand*{\sbComp}{\@ifstar\sbCompNorm\sbCompUsuel} -\newcommand{\sbCompUsuel}[3][4]{ -\sbCompSum[#1]{#2}{#3}{}{-}{+}{} -} -\newcommand{\sbCompNorm}[3][4]{ -\sbCompSum*[#1]{#2}{#3}{}{-}{+}{} -} +\subsection{Moteur à courant continu} -\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) ; +\begin{tikzexampleL}[title=Moteur à courant continu] +\begin{tikzpicture} +\sbEntree{Uc} +\sbComp{C1}{Uc} + \sbRelier[$U_c(p)$]{Uc}{C1} +\sbBlocL{He}{$\dfrac{1}{R+L\cdot p}$}{C1} +\sbBlocL{Kc}{$K_c$}{He} +\sbSumh{C2}{Kc} + \sbRelier[$C_m(p)$]{Kc}{C2} +\sbBlocL{Hm}{$\dfrac{1}{J\cdot p +f}$}{C2} +\sbSortie[5]{Omeg}{Hm} + \sbRelier[$\Omega_m(p)$]{Hm}{Omeg} +\sbDecaleNoeudy{Kc}{Ke} +\sbBlocr{Ke}{$K_e$}{Ke} + \sbRelieryx{Hm-Omeg}{Ke} + \sbRelierxy[$E(p)$]{Ke}{C1} +\draw[latex-](C2)|-++(-3em,3em)node[left]{$C_r(p)$}; +\end{tikzpicture} +\end{tikzexampleL} -} -\end{verbatim} +\subsection{Schéma blocs avec comparateur dans la boucle de retour} +\begin{tikzexample}[title=Schéma blocs avec comparateur et fonction dans la boucle de retour] +\begin{tikzpicture} +\sbEntree{E} +\sbStyleBloc{fill=black!30,text=blue,text width=8em} +\sbComp{comp}{E} + \sbRelier[$E_1$]{E}{comp} +\sbBloc{A}{$A(p)=\dfrac{100}{p+10}$}{comp} + \sbRelier[$\epsilon$]{comp}{A} +\sbSortie[5]{S}{A} + \sbRelier[$S_1$]{A}{S} +\sbDecaleNoeudy[4]{S}{U} +\sbCompSum[-4]{C1}{U}{}{-}{}{+} + \sbRelieryx{A-S}{C1} +\sbBlocr{B}{$B(p)=\dfrac{3}{p+1}$}{C1} + \sbRelier{C1}{B} + \sbRelierxy[m]{B}{comp} + \sbRenvoi{B-comp-1}{C1}{} +\end{tikzpicture} +\end{tikzexample} +\newpage +\subsection{Schéma blocs paramétrés} +Deux exemples à partir du même code de tracé d'un graphe, les différentes fonctions et variables sont paramétrées dans le code. +\begin{tikzexample}[title=Système bouclé unitaire paramétrable (premier ordre), righthand width=0.55\textwidth,] +\begin{tikzpicture} +%définition des paramètres +\def\Sortie{$S(p)$} +\def\Entree{$E(p)$} +\def\HC{$K_p$} +\def\HM{$\dfrac{K} +{1+\tau\cdot p}$} +\def\eps{$\varepsilon(p)$} +\def\VU{$U(p)$} +\sbEntree{E} +\sbComp{comp}{E} +\sbRelier[\Entree]{E}{comp} +\sbBloc{B1}{\HC}{comp} +\sbRelier[\eps]{comp}{B1} +\sbBloc[3]{B2}{\HM}{B1} +\sbRelier[\VU]{B1}{B2} +\sbSortie[4]{S}{B2} +\sbRelier[\Sortie]{B2}{S} +\sbRenvoi{B2-S}{comp}{} +\end{tikzpicture} +\end{tikzexample} +\begin{tikzexample}[title=Système bouclé unitaire paramétrable (second ordre), righthand width=0.58\textwidth,] +\begin{tikzpicture} +%définition des paramètres +\def\Sortie{$S(p)$} +\def\Entree{$E(p)$} +\def\HC{$K_p\cdot \dfrac{1+T_i\cdot p}{T_i\cdot p}$} +\def\HM{$\dfrac{K} +{1+\dfrac{2\cdot \xi}{\omega_n}\cdot p +\dfrac{p^2}{\omega_n^2}}$} +\def\eps{$\varepsilon(p)$} +\def\VU{$U(p)$} +\sbEntree{E} +\sbComp{comp}{E} +\sbRelier[\Entree]{E}{comp} +\sbBloc{B1}{\HC}{comp} +\sbRelier[\eps]{comp}{B1} +\sbBloc[3]{B2}{\HM}{B1} +\sbRelier[\VU]{B1}{B2} +\sbSortie[2]{S}{B2} +\sbRelier[\Sortie]{B2}{S} +\sbRenvoi{B2-S-1}{comp}{} +\end{tikzpicture} +\end{tikzexample} -\printindex +\newpage +\subsection{Correcteurs P.I.D.} +Tracé des différentes formes du correcteur P.I.D. +\begin{tikzexample}[title=P.I.D. parallèle, righthand width=0.5\textwidth,] +\begin{tikzpicture} +\sbEntree{E} \sbNomLien[1]{E}{$\epsilon(p)$} +\sbBlocL{Int}{$\dfrac{1}{T_i\cdot p}$}{E} +\sbDecaleNoeudy[4]{E}{Der} +\sbDecaleNoeudy[-4]{E}{Prop} +\sbBloc{Der}{$T_d\cdot p$}{Der} \sbRelieryx{E-Int}{Der} +\sbBloc{Prop}{$K_p$}{Prop} \sbRelieryx{E-Int}{Prop} +\sbCompSum{Somme}{Int}{+}{+}{+}{ } +\sbRelier{Int}{Somme} +\sbRelierxy{Prop}{Somme} +\sbRelierxy{Der}{Somme} +\sbSortie{S}{Somme} \sbRelier[$U(p)$]{Somme}{S} +\end{tikzpicture} +\end{tikzexample} +\begin{tikzexample}[title=P.I.D. mixte, righthand width=0.5\textwidth,] +\begin{tikzpicture} +\sbEntree{E} \sbNomLien[1]{E}{$\epsilon(p)$} +\sbBlocL{Prop}{$K_p$}{E} +\sbBlocL{Int}{$\dfrac{1}{T_i\cdot p}$}{Prop} +\sbDecaleNoeudy[4]{Prop}{Der} +\sbBloc[4]{Der}{$T_d\cdot p$}{Der} \sbRelieryx{Prop-Int}{Der} +\sbCompSum{Somme}{Int}{+}{+}{+}{ } +\sbRenvoi[-4]{Prop-Int}{Somme}{} +\sbRelier{Int}{Somme} +\sbRelierxy{Der}{Somme} +\sbSortie{S}{Somme} \sbRelier[$U(p)$]{Somme}{S} +\end{tikzpicture} +\end{tikzexample} -\newpage +\begin{tikzexample}[title=P.I.D. série, righthand width=0.5\textwidth,] +\begin{tikzpicture} +\sbEntree{E} +\node[above right=0em and-0.5em of E]{$\epsilon(p)$}; +%\sbNomLien[1]{E}{$\epsilon(p)$} +\sbBlocL{Prop}{$K_p$}{E} +\sbBlocL[1.5]{Int}{$\dfrac{1}{T_i\cdot p}$}{Prop} +\sbSumh[1.8]{Som1}{Int} \sbRelier{Int}{Som1} +\sbRenvoi[-3]{Prop-Int}{Som1}{} +\sbBlocL[1.5]{Der}{$T_d\cdot p$}{Som1} +\sbSumh[1.8]{Som2}{Der} \sbRelier{Der}{Som2} +\sbRenvoi[-3]{Som1-Der}{Som2}{} +\sbSortie{S}{Som2} \sbRelier[$U(p)$]{Som2}{S} +\end{tikzpicture} +\end{tikzexample} -\printindex \end{document} - diff --git a/Master/texmf-dist/tex/latex/schemabloc/schemabloc.sty b/Master/texmf-dist/tex/latex/schemabloc/schemabloc.sty index 73204561e87..9531438789d 100644 --- a/Master/texmf-dist/tex/latex/schemabloc/schemabloc.sty +++ b/Master/texmf-dist/tex/latex/schemabloc/schemabloc.sty @@ -1,82 +1,107 @@ +% !TeX encoding = utf8 +% !TeX spellcheck = fr \NeedsTeXFormat{LaTeX2e}[1999/01/01] -\ProvidesPackage{schemabloc}[2006/12/29] +\ProvidesPackage{schemabloc}[version 1.9] \RequirePackage{ifthen} \RequirePackage{tikz} -\usetikzlibrary{shapes,arrows} +\usetikzlibrary{shapes,arrows,positioning,fit} -%macros dessin des schéma-blocs mise à jour 6 janvier 2009 -% version 1.5 +%macros dessin des schéma-blocs mise à jour 11 mars 20013 +% version 1.6 %initialisation des styles -\tikzstyle{sbStyleLien}=[->,>=latex',] -\tikzstyle{sbStyleBloc}=[draw, rectangle,] -\tikzstyle{sbStyleBlocPatate}=[] -\tikzstyle{sbStyleSum}=[draw, circle,]%style Sum CC +\tikzset{blocstyle/.style={draw, rectangle, + minimum height=3em, minimum width=3em,right} + } + +\tikzset{sbStyleLien/.style={->,>=latex'}, +sbStyleBloc/.style={draw, rectangle}, +sbStyleBlocPatate/.style={}, +sbStyleSum/.style={} +} +%\tikzstyle{sbStyleLien}=[,] +%\tikzstyle{sbStyleBloc}=[draw, rectangle,] +%\tikzstyle{sbStyleBlocPatate}=[] +%\tikzstyle{sbStyleSum}=[ ]%style Sum CC % Commandes de changement de style \newcommand{\sbStyleLienDefaut}{ -\tikzstyle{sbStyleLien}=[->,>=latex'] +%\tikzstyle{sbStyleLien}=[->,>=latex'] +\tikzset{sbStyleLien/.style={->,>=latex'}} } - \newcommand{\sbStyleLien}[1]{ -\tikzstyle{sbStyleLien}+=[#1] +\tikzset{sbStyleLien/.style={->,>=latex',#1}} +%\tikzstyle{sbStyleLien}+=[#1] } \newcommand{\sbStyleBloc}[1]{ -\tikzstyle{sbStyleBloc}+=[#1] +\tikzset{sbStyleBloc/.style={#1}} +%\tikzstyle{sbStyleBloc}+=[#1] } \newcommand{\sbStyleBlocDefaut}{ -\tikzstyle{sbStyleBloc}=[draw, rectangle,] +\tikzset{sbStyleBloc/.style={draw, rectangle}} +%\tikzstyle{sbStyleBloc}=[draw, rectangle,] } \newcommand{\sbStyleSum}[1]{ -\tikzstyle{sbStyleSum}+=[#1] +\tikzset{sbStyleSum/.style={#1}} +%\tikzstyle{sbStyleSum}+=[#1] } \newcommand{\sbStyleSumDefaut}{ -\tikzstyle{sbStyleBloc}=[draw, circle,] +\tikzstyle{sbStyleSum}=[draw, circle,] }%style Sum default CC -% Commandes d'entrée et sortie -\newcommand{\sbEntree}[1]{ - \node [coordinate, name=#1] {}; -\sbDecaleNoeudx[0]{#1}{#1} +% Commandes d'entrée et sortie +\newcommand{\sbEntree}[2][0,0]{ + \node [coordinate, name=#2] at (#1) {}; +\sbDecaleNoeudx[0]{#2}{#2} +} + +\newcommand{\sbEntrees}[2][0,0]{ + \node [coordinate, name=#2] at(#1) {}; +\sbDecaleNoeudx[0]{#2}{#2} } \newcommand{\sbSortie}[3][2]{ - \node [coordinate, right of=#3droite, node distance=#1em, minimum size=0em,right] (#2) {}; + \node [coordinate, right of=#3droite, node distance=#1em,% + minimum size=0em,right] (#2) {}; +} + +\newcommand{\sbSortieL}[3][2]{ + \node [coordinate, right of=#3droite, node distance=#1em,% + minimum size=0em,right] (#2) {}; + \sbRelier{#3}{#2} } %Commandes de Bloc \newcommand{\sbBloc}[4][2]{ -\node [draw, rectangle, - minimum height=3em, minimum width=3em, right of = #4droite, +\node [blocstyle, right of = #4droite, node distance=#1em,sbStyleBloc,right] (#2) {#3}; -\node (#2droite) at (#2.east){}; -\node (BlocdeFindroite) at (#2.east){}; +\coordinate (#2droite) at (#2.east); +%\coordinate (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){}; +\coordinate (#2droite) at (#2.east); } \newcommand{\sbBlocr}[4][2]{ -\node [ - minimum height=3em, minimum width=3em, left of = #4gauche, +\node [blocstyle, left of = #4gauche, node distance=#1em, sbStyleBloc,left] (#2) {#3}; -\node (#2gauche) at (#2.west){}; +\coordinate (#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); +\node [blocstyle, right of = #4droite,node distance=#1em% +,sbStyleBloc,right] (#2) {#3}; +\coordinate (#2droite) at (#2.east); +\coordinate (BlocdeFindroite) at (#2.east); + \draw [sbStyleLien,auto] (#4) -- (#2) node[midway](#4-#2){}; } \newcommand{\sbBlocrL}[4][2]{ @@ -85,32 +110,35 @@ node distance=#1em, sbStyleBloc,left] (#2) {#3}; 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); + \draw [sbStyleLien,auto] (#4) -- (#2)node[name=#4-#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} +\sbBloc[#1]{Blocseul}{#3}{E1} +\sbSortie[#1]{S1}{Blocseul} +\sbRelier[#2]{E1}{Blocseul} +\sbRelier[#4]{Blocseul}{S1} } %\Commande de lien \newcommand{\sbRelier}[3][]{ - \draw [sbStyleLien,auto] (#2) -- node[name=#2-#3] {#1} (#3); + \draw [sbStyleLien,auto] (#2) -- + (#3)node[pos=0.5,name=#2-#3]{#1}coordinate[pos=0.25,name=#2-#3-1]coordinate[pos=0.75,name=#2-#3-2]; } \newcommand{\sbRelieryx}[2]{ -\draw [sbStyleLien] (#1.south) |- (#2) ; +\draw [sbStyleLien] (#1.south) -- (#1.south |-#2) --(#2) ; } + \newcommand{\sbRelierxy}[3][]{ -\draw [sbStyleLien] (#2) -| node[name=#2-#3,near end,right] {#1} (#3) ; +\draw [sbStyleLien] (#2) -| (#3) coordinate[name=#2-#3-1,pos=0.25] + node[name=#2-#3,near end,right] {#1} ; } \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) ; +\node [below =#1em of #2, minimum size=0em](retour#2) {}; +\draw [sbStyleLien] (#2.south)--(retour#2.south) -| (#3)node[name=#2-#3,near end,right] {#4} ; } \newcommand{\sbNomLien}[3][0.4]{ @@ -120,20 +148,53 @@ node distance=#1em, sbStyleBloc,left] (#2) {#3}; \newcommand*{\sbCompSum}{\@ifstar\sbCompSumNorm\sbCompSumUsuel} +\newcommand*{\sbCompSumr}{\@ifstar\sbCompSumNormr\sbCompSumUsuelr} + + \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 [draw, circle,minimum size=2em, right of=#3droite% +,sbStyleSum,node distance=#1em] (#2) {}; + \node [draw,sbStyleSum, cross out,minimum size=1.414em, + right of=#3droite,node distance=#1em] {}; + \node [above of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#4$}; + \node [below of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#5$}; + \node [left of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#6$}; + \node [right of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#7$}; +\node (#2droite) at (#2.east){}; +\node (#2gauche) at (#2.west){}; +} + + + +\newcommand{\sbCompSumUsuelr}[7][4]{ + \node [draw, circle,minimum size=2em, left of=#3gauche% +,sbStyleSum,node distance=#1em] (#2) {}; + \node [draw,sbStyleSum, cross out,minimum size=1.414em,% +left of=#3gauche,node distance=#1em] {}; + \node [above of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#4$}; + \node [below of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#5$}; + \node [left of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#6$}; + \node [right of=#2,node distance=0.6em,sbStyleSum,inner sep=0] {$#7$}; \node (#2droite) at (#2.east){}; \node (#2gauche) at (#2.west){}; } \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 [draw, circle,minimum size=1.5em, right of=#3,sbStyleSum,node distance=#1em,,sbStyleSum] (#2) {}; + \node [ fit=(#2),inner sep=0.5em] (compext) {}; +\node at( compext.75){$#4$}; +\node at( compext.-75){$#5$}; +\node at( compext.165){$#6$}; +\node at( compext.15){$#7$}; +\node (#2droite) at (#2.east){}; +\node (#2gauche) at (#2.west){}; +} + +\newcommand{\sbCompSumNormr}[7][4]{ + \node [draw, circle,minimum size=1.5em, left of=#3% +,sbStyleSum,node distance=#1em,,sbStyleSum] (#2) {}; + \node [ fit=(#2),inner sep=0.5em] (compext) {}; +\node at( compext.75){$#4$};\node at( compext.-75){$#5$};\node at( compext.165){$#6$};\node at( compext.15){$#7$}; \node (#2droite) at (#2.east){}; \node (#2gauche) at (#2.west){}; } @@ -153,16 +214,51 @@ label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {}; \sbCompSum*[#1]{#2}{#3}{}{-}{+}{} } +\newcommand*{\sbCompr}{\@ifstar\sbCompNormr\sbCompUsuelr} +\newcommand{\sbCompUsuelr}[3][4]{ +\sbCompSumr[#1]{#2}{#3}{}{-}{}{+} +} +\newcommand{\sbCompNormr}[3][4]{ +\sbCompSumr*[#1]{#2}{#3}{}{-}{}{+} +} + +\newcommand*{\sbCompL}{\@ifstar\sbCompNormL\sbCompUsuelL} +\newcommand{\sbCompUsuelL}[3][4]{ +\sbCompSum[#1]{#2}{#3}{}{-}{+}{} +\sbRelier[]{#3}{#2} +} +\newcommand{\sbCompNormL}[3][4]{ +\sbCompSum*[#1]{#2}{#3}{}{-}{+}{} +\sbRelier[]{#3}{#2} +} + +\newcommand*{\sbCompLr}{\@ifstar\sbCompNormLr\sbCompUsuelLr} +\newcommand{\sbCompUsuelLr}[3][4]{ +\sbCompSumr[#1]{#2}{#3}{}{-}{}{+} +\sbRelier[]{#3}{#2} +} +\newcommand{\sbCompNormLr}[3][4]{ +\sbCompSumr*[#1]{#2}{#3}{}{-}{}{+} +\sbRelier[]{#3}{#2} +} \newcommand*{\sbComph}{\@ifstar\sbComphNorm\sbComphUsuel} \newcommand{\sbComphUsuel}[3][4]{ \sbCompSum[#1]{#2}{#3}{-}{}{+}{} } - \newcommand{\sbComphNorm}[3][4]{ \sbCompSum*[#1]{#2}{#3}{-}{}{+}{} } +\newcommand*{\sbComphr}{\@ifstar\sbComphNormr\sbComphUsuelr} +\newcommand{\sbComphUsuelr}[3][4]{ +\sbCompSumr[#1]{#2}{#3}{-}{}{}{+} +} + +\newcommand{\sbComphNormr}[3][4]{ +\sbCompSumr*[#1]{#2}{#3}{-}{}{}{+} +} + \newcommand*{\sbSumh}{\@ifstar\sbSumhNorm\sbSumhUsuel} \newcommand{\sbSumhUsuel}[3][4]{ \sbCompSum[#1]{#2}{#3}{+}{}{+}{} @@ -171,6 +267,14 @@ label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {}; \sbCompSum*[#1]{#2}{#3}{+}{}{+}{} } +\newcommand*{\sbSumhr}{\@ifstar\sbSumhNormr\sbSumhUsuelr} +\newcommand{\sbSumhUsuelr}[3][4]{ +\sbCompSumr[#1]{#2}{#3}{+}{}{}{+} +} +\newcommand{\sbSumhNormr}[3][4]{ +\sbCompSumr*[#1]{#2}{#3}{+}{}{}{+} +} + \newcommand*{\sbSumb}{\@ifstar\sbSumbNorm\sbSumbUsuel} \newcommand{\sbSumbUsuel}[3][4]{ \sbCompSum[#1]{#2}{#3}{}{+}{+}{} @@ -179,22 +283,41 @@ label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {}; \sbCompSum*[#1]{#2}{#3}{}{+}{+}{} } +\newcommand*{\sbSumbr}{\@ifstar\sbSumbNormr\sbSumbUsuelr} +\newcommand{\sbSumbUsuelr}[3][4]{ +\sbCompSumr[#1]{#2}{#3}{}{+}{}{+} +} +\newcommand{\sbSumbNormr}[3][4]{ +\sbCompSumr*[#1]{#2}{#3}{}{+}{}{+} +} + -%Commandes de décalage de noeud +%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{\sbDecaleNoeudyZ}[3][5]{ +\node [below of=#2, minimum size=0em,inner sep=0](#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){}; } +\newcommand{\sbDecaleNoeudxy}[4]{ +\sbDecaleNoeudy[#2]{#3}{#4} +\sbDecaleNoeudx[#1]{#4}{4} +} + -%==============Chaines et Boucles=========== +%==============Chaînes et Boucles=========== \newcommand{\sbChaine}[3][4]{ \foreach \x/\y [remember=\x as \lastx (initially #2)] in {#3} @@ -202,17 +325,27 @@ label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {}; } } + +\newcommand{\sbChaineComp}[3][4]{ +\sbDecaleNoeudx[2]{#2}{V#2} +\sbComp[#1]{Comp#2}{V#2}\sbRelier{#2}{Comp#2} +\sbChaine[#1]{Comp#2}{#3} +} + \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#2}{#2}\sbRelier{#2}{Comp#2} +\sbDecaleNoeudx[2]{#2}{V#2} +\sbComp[#1]{Comp#2}{V#2}\sbRelier{#2}{Comp#2} \sbChaine[#1]{Comp#2}{#3} \sbSortie[#1]{#4}{BlocdeFin} -\draw [sbStyleLien,auto] (BlocdeFindroite.base) -- node[name=FindeChaine-#4] {} (#4); +\draw [sbStyleLien,auto] (BlocdeFindroite.base) -- + (#4) node[pos=0.5,name=FindeChaine-#4] {}; \sbRenvoi{FindeChaine-#4}{Comp#2}{} } @@ -220,86 +353,20 @@ label=175:$#4$,label=-85:$#5$,label=85:$#6$,sbStyleSum] (#2) {}; \newcommand{\sbBoucle}[3][4]{ \sbComp[#1]{Comp#2}{#2}\sbRelier{#2}{Comp#2} \sbChaine[#1]{Comp#2}{#3} -\draw [sbStyleLien,auto,-] (BlocdeFindroite.base) --++(1em,0)coordinate[name=FindeChaine]; +\draw [sbStyleLien,auto,-] (BlocdeFindroite.base) --++(1em,0)% +coordinate[name=FindeChaine]; \sbRenvoi{FindeChaine}{Comp#2}{} } \newcommand{\sbBoucleRetour}[4][4]{ -\sbComp[#1]{Comp#2}{#2}\sbRelier{#2}{Comp#2} +\sbDecaleNoeudx[2]{#2}{V#2} +\sbComp[#1]{Comp#2}{V#2} +\sbRelier{#2}{Comp#2} \sbChaine[#1]{Comp#2}{#3} -\draw [sbStyleLien,auto,-] (BlocdeFindroite.base) --++(1em,0)coordinate[name=FindeChaine]; +\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#2) ; - -} - - - - -%vielles definitions, ne plus utiliser, décommenter si nécessaire -%\newcommand{\bloc}[4][2]{ -%\node [draw, rectangle, -% minimum height=1cm, minimum width=1cm, right of = #4,node distance=#1cm] (#2) {#3}; -%} -%\newcommand{\blocr}[4][1.5]{ -%\node [draw, rectangle, -% minimum height=1cm, minimum width=1cm, left of = #4, node distance=#1cm] (#2) {#3}; -%} -%\newcommand{\comp}[3][1.5]{ -% \node [draw, circle,minimum size=1cm, right of=#3,node distance=#1cm] (#2) {}; -% \node [draw, cross out,minimum size=0.707cm,right of=#3,node distance=#1cm] {}; -% \node [below of=#2,node distance=0.3cm] {$-$}; -% \node [left of=#2,node distance=0.3cm] {$+$}; -%} -%\newcommand{\comph}[3][2]{ -% \node [draw, circle,minimum size=1cm, right of=#3,node distance=#1cm] (#2) {}; -% \node [draw, cross out,minimum size=0.707cm,right of=#3,node distance=#1cm] {}; -% \node [above of=#2,node distance=0.3cm] {$-$}; -% \node [left of=#2,node distance=0.3cm] {$+$}; -%} -%\newcommand{\sumh}[3][2]{ -% \node [draw, circle,minimum size=1cm, right of=#3,node distance=#1cm] (#2) {}; -% \node [draw, cross out,minimum size=0.707cm,right of=#3,node distance=#1cm] {}; -% \node [above of=#2,node distance=0.3cm] {$+$}; -% \node [left of=#2,node distance=0.3cm] {$+$}; -%} -%\newcommand{\sumb}[3][2]{ -% \node [draw, circle,minimum size=1cm, right of=#3,node distance=#1cm] (#2) {}; -% \node [draw, cross out,minimum size=0.707cm,right of=#3,node distance=#1cm] {}; -% \node [below of=#2,node distance=0.3cm] {$+$}; -% \node [left of=#2,node distance=0.3cm] {$+$}; -%} -% -%\newcommand{\entree}[1]{ -% \node [coordinate, name=#1,node distance=1cm] {}; -%} -%\newcommand{\sortie}[3][1.5]{ -% \node [coordinate, right of=#3, node distance=#1cm, minimum size=0cm] (#2) {}; -%} -%\newcommand{\decale}[3][2]{ -%\node [below of=#2, node distance=#1cm, minimum size=0cm](#3) {}; -%} -% -%\newcommand{\relier}[3]{ -% \draw [->,>=latex',auto] (#1) -- node[name=#1-#2] {#3} (#2); -%} -%\newcommand{\relieryx}[2]{ -%\draw [->,>=latex'] (#1.south) |- (#2) ; -%} -%\newcommand{\relierxy}[3]{ -%\draw [->,>=latex'] (#1) -| node[name=#1-#2,near end,right] {#3} (#2) ; -%} -%\newcommand{\renvoi}[4][1.5]{ -%\node [below of=#2, node distance=#1cm, minimum size=0cm](retour#2) {}; -%\draw [->,>=latex'] (#2.south)--(retour#2.south) -| node[name=#2-#3,near end,right] {#4} (#3) ; -%} -%\newcommand{\blocseul}[4][1.5]{ -%\entree{E1} -%\bloc[#1]{B1}{#3}{E1} -%\sortie[#1]{S1}{B1} -%\relier{E1}{B1}{#2} -%\relier{B1}{S1}{#4} -%} +\draw [sbStyleLien] (FindeChaine) |- (sbDebutRetour.west) ; +\draw [sbStyleLien] (BlocdeFingauche.base) -- (BlocdeFingauche.base -|Comp#2) -- (Comp#2) node[name=sbNomRetour,near end,right] {}; +} -- cgit v1.2.3