summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-04-07 20:58:58 +0000
committerKarl Berry <karl@freefriends.org>2018-04-07 20:58:58 +0000
commit62912cec554e0cf0a043fc8d7606c36e5b6b1756 (patch)
tree3798bd17673c594329fe1388a03d4b41a8118f4b
parent84deb36e8bed487533cffa6c630f307f030cb590 (diff)
scratch (7apr18)
git-svn-id: svn://tug.org/texlive/trunk@47360 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/scratch/README8
-rw-r--r--Master/texmf-dist/doc/latex/scratch/scratch-fr.pdfbin452516 -> 488105 bytes
-rw-r--r--Master/texmf-dist/doc/latex/scratch/scratch-fr.tex121
-rw-r--r--Master/texmf-dist/tex/latex/scratch/scratch.sty376
4 files changed, 311 insertions, 194 deletions
diff --git a/Master/texmf-dist/doc/latex/scratch/README b/Master/texmf-dist/doc/latex/scratch/README
index 363390b3a2a..98ec7aaff3a 100644
--- a/Master/texmf-dist/doc/latex/scratch/README
+++ b/Master/texmf-dist/doc/latex/scratch/README
@@ -3,14 +3,14 @@ ___________________________________
L'extension
scratch
- v0.33
+ v0.4
- 30 d\'ecembre 2017
+ 8 avril 2018
___________________________________
-Authors : Christian Tellechea
+Author : Christian Tellechea
Maintainer: Christian Tellechea
-E-mail : unbonpetit@openmailbox.org (CT)
+E-mail : unbonpetit@netc.fr (CT)
Commentaires, signalements de bugs et
suggestions bienvenus
Licence : Released under the LaTeX Project Public License v1.3c or
diff --git a/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf b/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf
index 518e98a2de1..97299661241 100644
--- a/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf
+++ b/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex b/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex
index 5ae1a317e53..46aaab49b0a 100644
--- a/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex
+++ b/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex
@@ -131,7 +131,8 @@
\begingroup
\centering
\null\vskip.25\vsize
- {\large\bfseries L'extension pour \LaTeX\par \Huge \scrname\par}
+ {\large\bfseries L'extension pour \LaTeX\medbreak
+ \Huge \begin{scratch}[line width=1.5pt]\blockmove\scrname\end{scratch}\par}
\bigbreak
v \scrver
\smallbreak
@@ -157,7 +158,7 @@ Pour dessiner un programme comme le fait \SCRATCH, il faut ouvrir un environneme
macros pour dessiner des blocs
\end{scratch}|
-Comme le savent ceux qui enseignent l'algorithmique et la programmation avec le très-à-la-mode\footnote{Je ne déteste rien de plus comme langage de programmation que ce \emph{truc} vaguement graphique, ultra limité et contre-productif dans l'apprentissage du codage qu'est scratch et que l'éducation nationale veut à tout prix imposer. Je ne compte bien évidemment pas me plier à ce nouveau dogme ridicule et ne l'utiliserai ni ne l'enseignerai; je considère que les élèves méritent mieux que scratch --~ADA par exemple~-- comme entrée dans le monde de la programmation. Ceci dit, coder cette extension a été un petit amusement.} logiciel « \SCRATCH », les programmes sont construits avec des briques, appelés «blocs», qui peuvent s'emboiter les uns sur les autres. Ces blocs sont de plusieurs couleurs, chacune correspondant à un type d'instruction que l'on retrouve dans les menus de \SCRATCH.
+Comme le savent ceux qui enseignent l'algorithmique et la programmation avec le très-à-la-mode\footnote{Je ne déteste rien de plus comme langage de programmation que ce \emph{truc} vaguement graphique, ultra limité et contre-productif dans l'apprentissage du codage qu'est \SCRATCH et que l'éducation nationale veut à tout prix imposer. Je ne compte bien évidemment pas me plier à ce nouveau dogme ridicule et ne l'utiliserai ni ne l'enseignerai; je considère que les élèves méritent mieux que \SCRATCH --~ADA par exemple~-- comme entrée dans le monde de la programmation. Ceci dit, coder cette extension a été un petit amusement.} logiciel « \SCRATCH », les programmes sont construits avec des briques, appelés «blocs», qui peuvent s'emboiter les uns sur les autres. Ces blocs sont de plusieurs couleurs, chacune correspondant à un type d'instruction que l'on retrouve dans les menus de \SCRATCH.
J'ai pris le parti d'écrire des macros ayant comme argument le texte qui figure dans le bloc. Ce faisant, on a plus de liberté que dans \SCRATCH où les blocs ont des textes prédéfinis, mais cette liberté permet d'utiliser cette extension quelle que soit la langue dans laquelle on écrit.
@@ -216,7 +217,8 @@ Voici quelques exemples :
y: \ovaloperator{\ovalnum{4} * \ovalsensing{souris y}}}
\end{scratch}
-Toutes les macros ayant pour préfixe \verb|\oval| sont utilisables \emph{en dehors} de l'environnement \texttt{scratch}, la preuve : voici \ovalvariable{une variable} et \ovaloperator{un opérateur}./
+Toutes les macros ayant pour préfixe \verb|\oval| sont utilisables \emph{en dehors} de l'environnement
+scratch, la preuve : voici \ovalvariable{une variable} et \ovaloperator{un opérateur}./
\section{Les blocs de début}
Ces blocs sont de la couleur \suffixe{event} pour la plupart (macro \verb|\blockinit|), mais il existe aussi un bloc de début de couleur \suffixe{control} (macro \verb|\blockinitclone|). Le drapeau vert est dessiné avec la macro \verb|\greenflag|.
@@ -381,40 +383,43 @@ Voici les \verb|<paramètres>| disponibles :
Représente est le mot qui est inséré dans la branche « else » d'un bloc de test.
\cleval{x sep}{dimension}
-Représente l'espace horizontale insérée entre les bords droit et gauche du texte du bloc et les bords droits et gauche du bloc.
+Représente l'espace horizontale insérée entre les bords droit et gauche du texte du bloc et les bords droits et gauche du bloc. La valeur est ramenée si nécessaire dans l'intervalle [3pt ; 1em].
\cleval{y sepsup}{dimension}
-Représente l'espace verticale insérée entre le bas de l'encoche femelle et le bord supérieur du texte du bloc.
+Représente l'espace verticale insérée entre le bas de l'encoche femelle et le bord supérieur du texte du bloc. La valeur est ramenée si nécessaire dans l'intervalle [3pt ; 3ex].
\cleval{y sepinf}{dimension}
-Représente l'espace verticale insérée entre le bas du bloc et le bord inférieur du texte du bloc.
+Représente l'espace verticale insérée entre le bas du bloc et le bord inférieur du texte du bloc. La valeur est ramenée si nécessaire dans l'intervalle [3pt ; 3ex].
\cleval{line width}{dimension}
-Représente l'épaisseur des lignes de relief des blocs et le double des lignes de relief des losanges booléens.
+Représente l'épaisseur des lignes de relief des blocs et le double des lignes de relief des losanges booléens. La valeur est ramenée si nécessaire dans l'intervalle [0pt ; 5pt].
\cleval{loop width}{dimension}
-Représente est la largeur de la barre verticale des blocs de répétition ou de test.
+Représente est la largeur de la barre verticale des blocs de répétition ou de test. La valeur est ramenée si nécessaire dans l'intervalle [3pt ; 3em].
\cleval{loop height}{dimension}
-Représente est l'épaisseur des barres horizontales « else » et inférieure des blocs de répétition ou de test.
+Représente est l'épaisseur des barres horizontales « else » et inférieure des blocs de répétition ou de test. La valeur est ramenée si nécessaire dans l'intervalle [3pt ; 3ex].
\cleval{corner}{dimension}
-Représente la dimension des chanfreins des blocs. Cette dimension est utilisée proportionnellement pour le placement horizontal, l'épaisseur et la largeur des encoches des blocs.
+Représente la dimension des chanfreins des blocs. La valeur est ramenée si nécessaire dans l'intervalle [0.33333ex ; 1ex].
+
+\cleval{notch}{dimension}
+Représente la largeur des encoches. La valeur est ramenée si nécessaire dans l'intervalle [0.33333em ; 3em].
\cleval{scale}{coefficient}\label{cle-scale}
-Représente l'échelle à laquelle est représenté le dessin.
+Représente l'échelle à laquelle est représenté le dessin. La valeur est ramenée si nécessaire dans l'intervalle [0.2 ; 5].
\cleval{init arcangle}{angle}
-Représente l'angle avec l'horizontale de l'arc de cercle tracé dans la partie haute des blocs de départ.
+Représente l'angle avec l'horizontale de l'arc de cercle tracé dans la partie haute des blocs de départ. La valeur est ramenée si nécessaire dans l'intervalle [20 ; 40].
\cleval{init arclength}{dimension}
-Représente la longueur horizontale de l'arc de cercle tracé dans la partie haute des blocs de départ.
+Représente la longueur horizontale de l'arc de cercle tracé dans la partie haute des blocs de départ. La valeur est ramenée si nécessaire dans l'intervalle [3em ; 8em].
\cleval{moreblock arcangle}{angle}
-Représente l'angle avec l'horizontale de l'arc de cercle tracé dans la partie haute des blocs de de type « moreblock».
+Représente l'angle avec l'horizontale de l'arc de cercle tracé dans la partie haute des blocs de de type « moreblock». La valeur est ramenée si nécessaire dans l'intervalle [10 ; 20].
\cleval{contrast}{entier}
-Cet entier, compris entre 0 et 100 inclus, qualifie la différence de teintes entre les lignes de relief tracées autour des blocs. L'entier 0 signifie «aucun contraste» (teintes identiques) tandis que que 100 signifie «contraste maximal» auquel cas les lignes claires, qui se situent sur la partie haute des blocs, sont blanches et les lignes foncées sont noires.
+Cet entier, compris entre 0 et 100 inclus, qualifie la différence de teintes entre les lignes de relief tracées autour des blocs. L'entier 0 signifie «aucun contraste» (teintes identiques) tandis que que 100 signifie «contraste maximal» auquel cas les lignes claires, qui se situent sur la partie haute des blocs, sont blanches et les lignes foncées sont noires. La valeur est ramenée si nécessaire dans l'intervalle [0 ; 100].
\cleval{print}{booléen}
Lorsque ce booléen est vrai, les dessins se font en noir et blanc de façon à pouvoir être dirigés vers une impression en noir et blanc.
@@ -436,7 +441,7 @@ Lorsque ce booléen est vrai, les dessins se font en noir et blanc de façon à pou
Ce booléen n'est pris en compte que lorsque le booléen \verb|print| est vrai. Si \verb|fill blocks| est vrai, tous les dessins (sauf les ovales contenant des nombres) seront remplis avec un gris choisi avec la clé suivante.
\cleval{fill gray}{taux de gris}
-Lorsque \verb|fill blocks| est vrai, ce taux de blanc dans le gris (nombre compris entre 0 pour noir et 1 pour blanc) est utilisé pour définir une couleur de remplissage des dessins.
+Lorsque \verb|fill blocks| est vrai, ce taux de blanc dans le gris (nombre compris entre 0 pour noir et 1 pour blanc) est utilisé pour définir une couleur de remplissage des dessins. La valeur est ramenée si nécessaire dans l'intervalle [0 ; 1].
\exemple/\begin{scratch}
\blockinit{Quand \greenflag est cliqué}
@@ -461,7 +466,7 @@ Lorsque \verb|fill blocks| est vrai, ce taux de blanc dans le gris (nombre compr
Lorsque \verb|fill blocks| est vrai, cette couleur sera utilisée pour le texte des blocs.
\cleval{flag gray}{taux de gris}
-Lorsque \verb|print| est vrai, ce taux de gris est utilisé pour la couleur du drapeau tracé avec \verb|\greenflag| ainsi que pour la flèche se trouvant au bas des blocs de répétition.
+Lorsque \verb|print| est vrai, ce taux de gris est utilisé pour la couleur du drapeau tracé avec \verb|\greenflag| ainsi que pour la flèche se trouvant au bas des blocs de répétition. La valeur est ramenée si nécessaire dans l'intervalle [0 ; 1].
\exemple/\begin{scratch}[print,fill blocks,fill gray=0.66]
\blockinit{Quand \greenflag est cliqué}
@@ -477,7 +482,76 @@ Lorsque \verb|print| est vrai, ce taux de gris est utilisé pour la couleur du dr
\end{scratch}/
\cleval{line gray}{taux de gris}
-Lorsque \verb|print| est vrai, ce taux de gris est utilisé pour la couleur des lignes de relief.
+Lorsque \verb|print| est vrai, ce taux de gris est utilisé pour la couleur des lignes de relief. La valeur est ramenée si nécessaire dans l'intervalle [0 ; 1].
+
+\cleval{num blocks}{booléen}
+Lorsque ce booléen est vrai, les blocs sont numérotés.
+
+\cleval{num sep}{dimension}
+Cette clé contient l'espacement entre les numéros de blocs et leur frontière gauche. La valeur est ramenée si nécessaire dans l'intervalle [0pt ; 1.5em].
+
+\cleval{num start}{entier}
+Cette clé contient le premier numéro du bloc.
+
+La macro \verb|\numblock| est chargée d'imprimer les numéros de ligne. Elle admet un argument (le numéro de ligne) et permet, lorsqu'elle est redéfinie, de personnaliser la numérotation : choix de la couleur, de la police, de sa taille et des effets applicables à son argument. Par défaut, cette macro est définie par
+\begin{center}
+ \verb|\newcommand*\numblock[1]{\color{black}\footnotesize\bfseries#1}|
+\end{center}
+
+Dans l'environnement \SCRATCH, entre des instructions \SCRATCH, on peut activer ou désactiver la numérotation \emph{pour le dessin en cours} à l'aide de
+\begin{center}
+ \verb|\setscratch{num blocks=<booléen>}|
+\end{center}
+
+\exemple/\begin{scratch}[num blocks]
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch} puis
+\renewcommand*\numblock[1]{\color{blue!80}\itshape#1}
+\begin{scratch}[num blocks,num start=3]
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch}
+puis
+\renewcommand*\numblock[1]{\fboxsep=0.5pt\fbox{\bfseries#1}}
+\begin{scratch}[num blocks=false]
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \setscratch{num blocks=true}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch}/
+
+\cleval{baseline}{alignement}
+Cette clé contient la consigne d'alignement du dessin tout entier, c'est-à-dire :
+\begin{itemize}
+ \item la lettre «\verb|c|» auquel cas, le dessin est centré sur la ligne de base
+ \item un entier qui spécifie un numéro de bloc existant : la numérotation est cohérente avec l'entier initial contenu dans la clé \verb|num start|. Dans ce cas, la ligne de base choisie est celle du texte contenu dans le bloc portant le numéro choisi.
+\end{itemize}
+
+\exemple/Défaut : \begin{scratch}
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch}
+bloc 3 : \begin{scratch}[baseline=3]
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch}
+centré
+\begin{scratch}[baseline=c]
+ \blockinit{Quand \greenflag est cliqué}
+ \blockpen{effacer tout}
+ \blockpen{relever le stylo}
+ \blockmove{ajouter \ovalnum{5} à \ovalvariable{abscisse}}
+\end{scratch}/
\section{Mot de la fin}
Le code de cette extension démontre mon immense ignorance de ti\textit kz/pgf et les méthodes de programmation qui lui sont propres que, décidément, je ne comprendrai jamais! C'est sans doute le trop grand éloignement avec la logique de \TeX{} et la documentation de ti\textit kz/pgf, aussi indigeste qu'illisible, qui explique cette incompatibilité d'humeur et mon désintérêt à l'égard de ti\textit kz. Toujours est-il que cette extension fonctionne, avec une lenteur certaine que j'attribue à ma programmation hasardeuse ainsi qu'à la lenteur intrinsèque de ti\textit kz.
@@ -514,4 +588,15 @@ Toute remarque, remontée de bug ---~je n'ose pas dire amélioration du code~---,
\begin{version}{0.33}{30/12/2017}
>Correction d'un bug signalé par I. \textsc{Eble} : l'affichage des losanges, boites de texte, ovales n'est pas correct dans les blocs lorsque \verb|scale| est différente de 1.
\end{version}
+
+\begin{version}{0.4}{08/04/2018}
+ >Possibilité de numéroter les blocs, requête de Fabrice \textsc{Bavoil}.
+ >Augmentation automatique de la taille horizontale d'un bloc si le texte qu'il contient est trop court, bug signalé par Fabrice \textsc{Bavoil}.
+ >Possibilité de choisir la ligne de base du dessin \SCRATCH, requête de Fabrice \textsc{Bavoil}.
+ >Grâce à une clé secrète, les « losanges » n'ont plus une infime fraction de trait qui se chevauche avec les \verb|\txtbox| ou \verb|\selectmenu| intérieurs qui se trouvent en début ou fin de texte. Les ultra-perfectionnistes sont enfin comblés !
+ >Paramètres bornés (pour la plupart) et ramenés dans le domaine de fonctionnement --~ou du raisonnable~-- si nécessaire.
+ >Suppression du \verb|\normalsize| qui empêchait la prise en compte de la taille de la police en cours.
+ >Nouvelle clé «notch» pour spécifier la longueur du trait horizontal des encoches.
+ >Nettoyage du code.
+\end{version}
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/scratch/scratch.sty b/Master/texmf-dist/tex/latex/scratch/scratch.sty
index 59bd1062cfa..6b354774d76 100644
--- a/Master/texmf-dist/tex/latex/scratch/scratch.sty
+++ b/Master/texmf-dist/tex/latex/scratch/scratch.sty
@@ -4,21 +4,20 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\scrname {scratch} %
-\def\scrver {0.33} %
+\def\scrver {0.4} %
% %
-\def\scrdate {2017/12/30} %
+\def\scrdate {2018/04/08} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% --------------------------------------------------------------------
% Author : Christian Tellechea
% Status : Maintained
-% Maintainer : Christian Tellechea
% Email : unbonpetit@netc.fr
% Package URL: https://www.ctan.org/pkg/scratch
% Bug tracker: https://framagit.org/unbonpetit/scratch/issues
% Repository : https://framagit.org/unbonpetit/scratch/tree/master
-% Copyright : Christian Tellechea 2017
+% Copyright : Christian Tellechea 2017-2018
% Licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txt
% Files : 1) scratch.sty
@@ -32,8 +31,8 @@
\usepgflibrary{shapes.misc,arrows.meta}
\usetikzlibrary{bending}
-\expandafter\edef\csname scr\string_restorecatcode\endcsname{\catcode`\noexpand\_=\the\catcode`\_\relax}
-\catcode`\_11
+\expandafter\edef\csname scr\string_restorecatcode\endcsname{\catcode`\noexpand\_=\the\catcode`\_\relax\catcode`^^*=\the\catcode`^^*\relax}
+\catcode`\_11 \catcode`^^*=^^w
% Les réglages par défaut (modifiables avec \setdefaultscratch)
\setKVdefault[\scrname]{
else word = sinon,% mot dans branche "else"
@@ -44,6 +43,7 @@
loop width = 3ex,% épaisseur de la barre verticale à gauche d'un bloc de boucle
loop height = 1.75ex,% hauteur de la barre du else et la barre finale
corner = 0.66667ex,% valeur du chanfrein
+ notch = 1em,% longueur des encoches
scale = 1,% échelle du dessin
init arcangle = 30,% angle début et fin de l'arc
init arclength = 5em,% longueur de l'arc
@@ -56,22 +56,34 @@
flag gray = 0.33,% taux de gris pour le drapeau lorsque l'option "print" est vraie
line gray = 0.4,% taux de gris pour les lignes lorsque l'option "print" est vraie
bool sep = 1.25pt,% séparation entre les blocs booléens imbriqués
+ num blocks = false,% numérotation des blocs
+ num sep = 3pt,% séparation entre bord gauche et numérotation
+ num start = 1,% numéro de départ
+ baseline = 1,% alignement sur le 1er bloc (en partant du haut)
+ jj"jj61jj6ojj)jj,jj`jj-odjj65jj3dfjj!jj,jj73jj%
}
-\def\resetscratch{\csname skv_[\scrname]\endcsname\scr_setcolors}
-\def\setscratch#1{\setKV[\scrname]{#1}\scr_setcolors}
-\def\setdefaultscratch#1{\setKVdefault[\scrname]{#1}\scr_setcolors}
+\newcommand*\numblock[1]{\color{black}\footnotesize\bfseries#1}
+\newcommand*\resetscratch{\csname skv_[\scrname]\endcsname\scr_setcolors}
+\newcommand*\setscratch[1]{\setKV[\scrname]{#1}\scr_setcolors}
+\newcommand*\setdefaultscratch[1]{\setKVdefault[\scrname]{#1}\scr_setcolors}
\def\scr_setcolors{%
- \skv_eearg{\definecolor{scr_fillgray}{gray}}{\useKV[\scrname]{fill gray}}%
- \skv_eearg{\definecolor{scr_linegray}{gray}}{\useKV[\scrname]{line gray}}%
- \skv_eearg{\definecolor{scr_flaggray}{gray}}{\useKV[\scrname]{flag gray}}%
+ \scr_normalizedec\scr_fillgray fill gray[0,1]\skv_exparg{\definecolor{scr_fillgray}{gray}}\scr_fillgray
+ \scr_normalizedec\scr_linegray line gray[0,1]\skv_exparg{\definecolor{scr_linegray}{gray}}\scr_linegray
+ \scr_normalizedec\scr_flaggray flag gray[0,1]\skv_exparg{\definecolor{scr_flaggray}{gray}}\scr_flaggray
}
\def\scr_thesentinelkern{17}% nombre de "sp" sentinelle pour les booleanbox. Personne n'utilise 17sp j'espère ?
\def\scr_blockstrut{\vrule height2.1ex depth.9ex width0pt\relax}
-\def\scr_ovalstrut{\vphantom{\`Alpgqyj}}
+\def\scr_ovalstrut{\vphantom{\`Ag}}
\def\scr_cslet#1{\expandafter\let\csname#1\endcsname}
+\def\scr_csdef#1{\expandafter\def\csname#1\endcsname}
\def\scr_csedef#1{\expandafter\edef\csname#1\endcsname}
+\def\scr_maxdim(#1,#2){\the\dimexpr\ifdim\dimexpr#1-(#2)\relax<0pt #2\else#1\fi\relax}
+\def\scr_normalizedec#1#2[#3,#4]{\edef#1{\useKV[\scrname]{#2}}\ifdim#1pt<#3pt \def#1{#3}\else\ifdim#1pt>#4pt \def#1{#4}\fi\fi}
+\def\scr_normalizedim#1#2[#3,#4]{\edef#1{\the\dimexpr\useKV[\scrname]{#2}}\ifdim\dimexpr#1-(#3)\relax<0pt \edef#1{\the\dimexpr#3}\else\ifdim\dimexpr#1-(#4)\relax>0pt \edef#1{\the\dimexpr#4}\fi\fi}
+\def\scr_firsttonil#1#2\_nil{#1}
\newcount\scr_loopnest
+\newcount\scr_blocknum
\newbox\scr_box
\newdimen\scr_yoffset
\newdimen\scr_xoffset
@@ -85,19 +97,20 @@
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!white}%
\edef\scr_current_linedark {\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!black}%
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
- \node[at=(origin)](x){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#2\scr_blockstrut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \let\scr_boxht\__boxht\let\scr_totht\__totht\let\scr_boxwd\__boxwd
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries#2\scr_blockstrut\endpgfinterruptpicture}%
+ \edef\scr_boxwd{\scr_maxdim(\wd\scr_box,\scr_minwd)}%
+ \edef\scr_boxht{\the\ht\scr_box}%
+ \edef\scr_totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
\draw[draw=none,fill=\scr_current_fillcolor,yshift=\scr_yoffset,xshift=\scr_xoffset]
- (\scr_corner,0)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner)% ligne sup
- --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--cycle
- node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](texte){\sffamily\bfseries#2\scr_blockstrut};
- \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,-\scr_corner)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0);
- \draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner-\scr_ysepsup-\scr_totht-\scr_ysepinf)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner);
+ (\scr_corner,0)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner)% ligne sup
+ --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--cycle;
+ \node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](txt\number\scr_blocknum){\sffamily\bfseries#2\scr_blockstrut};
+ \ifboolKV[\scrname]{num blocks}
+ {\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup](num){\skv_exparg\numblock{\number\scr_blocknum}};}
+ {}%
+ \advance\scr_blocknum1
+ \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,-\scr_corner)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0);
+ \draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner-\scr_ysepsup-\scr_totht-\scr_ysepinf)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner);
\advance\scr_yoffset\dimexpr-\scr_totht-\scr_ysepsup-\scr_ysepinf-\scr_corner-\scr_linewidth+\scr_extraoffset\relax
\gdef\scr_blockstop{0}%
}
@@ -105,25 +118,27 @@
\advance\scr_yoffset#1\dimexpr-\scr_blockstruttotht-\scr_ysepsup-\scr_ysepinf-\scr_corner-\scr_linewidth+\scr_extraoffset\relax
\gdef\scr_blockstop{1}%
}
-\def\blockstop#1{% #1=texte
+\newcommand*\blockstop[1]{% #1=texte
\def\scr_current_blockcolor{scrcontrol}%
\edef\scr_current_fillcolor{\ifboolKV[\scrname]{print}{\ifboolKV[\scrname]{fill blocks}{scr_fillgray}{none}}{\scr_current_blockcolor}}%
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!white}%
\edef\scr_current_linedark {\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!black}%
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
- \node[at=(origin)](x){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#1\scr_blockstrut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \let\scr_boxht\__boxht\let\scr_totht\__totht\let\scr_boxwd\__boxwd
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries#1\scr_blockstrut\endpgfinterruptpicture}%
+ \edef\scr_boxwd{\scr_maxdim(\wd\scr_box,\scr_minwd)}%
+ \edef\scr_boxht{\the\ht\scr_box}%
+ \edef\scr_totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
\draw[draw=none,fill=\scr_current_fillcolor,yshift=\scr_yoffset,xshift=\scr_xoffset]
- (\scr_corner,0)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner)% ligne sup
+ (\scr_corner,0)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner)% ligne sup
--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*2,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--cycle
- node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](texte){\sffamily\bfseries#1\scr_blockstrut};
+ node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](txt\number\scr_blocknum){\sffamily\bfseries#1\scr_blockstrut};
+ \ifboolKV[\scrname]{num blocks}
+ {\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup](num){\skv_exparg\numblock{\number\scr_blocknum}};
+ }
+ {}%
+ \advance\scr_blocknum1
\draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,-\scr_corner)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*2,0);
- \draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner*2-\scr_ysepsup-\scr_totht-\scr_ysepinf+\scr_corner)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner);
+ \draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner*2-\scr_ysepsup-\scr_totht-\scr_ysepinf+\scr_corner)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner);
\advance\scr_yoffset\dimexpr-\scr_totht-\scr_ysepsup-\scr_ysepinf-\scr_corner-\scr_linewidth+\scr_extraoffset\relax
\gdef\scr_blockstop{1}%
}
@@ -136,18 +151,19 @@
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!white}%
\edef\scr_current_linedark {\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!black}%
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
- \node[at=(origin)](x){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#2\scr_blockstrut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \let\scr_boxht\__boxht\let\scr_totht\__totht\let\scr_boxwd\__boxwd
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries#2\scr_blockstrut\endpgfinterruptpicture}%
+ \edef\scr_boxwd{\scr_maxdim(\wd\scr_box,\scr_xsep+\scr_initarclength+\scr_em)}%
+ \edef\scr_boxht{\the\ht\scr_box}%
+ \edef\scr_totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
\draw[draw=\scr_current_fillcolor,fill=\scr_current_fillcolor,yshift=\scr_yoffset,xshift=\scr_xoffset]
(0,0)to[out=\scr_initarcangle,in=180-\scr_initarcangle](\scr_xsep+\scr_initarclength,0)--(\scr_boxwd+2*\scr_xsep-\scr_corner,0)--++(\scr_corner,-\scr_corner)% ligne sup
- --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--cycle
- node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](texte){\sffamily\bfseries#2\scr_blockstrut};
- \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,-\scr_corner)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0);
+ --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--cycle
+ node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](txt\number\scr_blocknum){\sffamily\bfseries#2\scr_blockstrut};
+ \ifboolKV[\scrname]{num blocks}
+ {\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup](num){\skv_exparg\numblock{\number\scr_blocknum}};}
+ {}%
+ \advance\scr_blocknum1
+ \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,-\scr_corner)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0);
\draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner-\scr_ysepsup-\scr_totht-\scr_ysepinf)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--(0,0)to[out=\scr_initarcangle,in=180-\scr_initarcangle](\scr_xsep+\scr_initarclength,0)--(\scr_boxwd+2*\scr_xsep-\scr_corner,0)--++(\scr_corner,-\scr_corner);
\advance\scr_yoffset\dimexpr-\scr_totht-\scr_ysepsup-\scr_ysepinf-\scr_corner-\scr_linewidth+\scr_extraoffset\relax
\gdef\scr_blockstop{0}%
@@ -156,14 +172,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% dessine un bloc de définition %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\initmoreblocks#1{%
- \node[at=(origin)](x){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#1\scr_blockstrut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \let\scr_boxht\__boxht\let\scr_totht\__totht\let\scr_boxwd\__boxwd
+\newcommand*\initmoreblocks[1]{%
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries#1\scr_blockstrut\endpgfinterruptpicture}%
+ \edef\scr_boxwd{\scr_maxdim(\wd\scr_box,\scr_minwd+\scr_em*2)}%
+ \edef\scr_boxht{\the\ht\scr_box}%
+ \edef\scr_totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
\def\scr_current_blockcolor{scrmoreblocks}%
\edef\scr_current_fillcolor{\ifboolKV[\scrname]{print}{\ifboolKV[\scrname]{fill blocks}{scr_fillgray}{none}}{\scr_current_blockcolor}}%
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!white}%
@@ -172,116 +185,125 @@
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
\draw[draw=\scr_current_fillcolor,fill=\scr_current_fillcolor,yshift=\scr_yoffset,xshift=\scr_xoffset]
(0,0)to[out=\scr_moreblockarcangle,in=180-\scr_moreblockarcangle](\scr_boxwd+2*\scr_xsep,0)% ligne sup
- --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--cycle
- node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](texte){\sffamily\bfseries#1\scr_blockstrut};
- \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,0)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0);
+ --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--cycle
+ node[at=(origin),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](txt\number\scr_blocknum){\sffamily\bfseries#1\scr_blockstrut};
+ \ifboolKV[\scrname]{num blocks}
+ {\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup](num){\skv_exparg\numblock{\number\scr_blocknum}};}
+ {}%
+ \advance\scr_blocknum1
+ \draw[draw=\scr_current_linedark,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_boxwd+\scr_xsep*2,0)--++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0);
\draw[draw=\scr_current_linelight,yshift=\scr_yoffset,xshift=\scr_xoffset](\scr_corner,-\scr_corner-\scr_ysepsup-\scr_totht-\scr_ysepinf)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf)--(0,0);
\draw[line width=1.5pt,draw=\current_linesurround,shorten <=-\scr_linewidth,shorten >=-\scr_linewidth](0,0)to[out=15,in=165](\scr_boxwd+2*\scr_xsep,0);
\advance\scr_yoffset\dimexpr-\scr_totht-\scr_ysepsup-\scr_ysepinf-\scr_corner-\scr_linewidth+\scr_extraoffset\relax
\gdef\scr_blockstop{0}%
}
-\def\namemoreblocks#1{%
+\newcommand*\namemoreblocks[1]{%
\begin{tikzpicture}[baseline=(moreblocksdef.base)]
\def\scr_ysepinf{2pt}\def\scr_ysepsup{2pt}%
- \edef\scr_xsep{\the\dimexpr\scr_xsep*3/2\relax}%
- \node(moreblocksdefaux){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#1\strut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \let\scr_boxht\__boxht\let\scr_totht\__totht\let\scr_boxwd\__boxwd
+ \edef\scr_xsep{\the\dimexpr\scr_em/2\relax}\edef\scr_minwd{\the\dimexpr\scr_corner*4+\scr_notch*3-\scr_xsep*2}%
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries\scr_blockstrut#1\endpgfinterruptpicture}%
+ \edef\scr_boxwd{\scr_maxdim(\wd\scr_box,\scr_minwd)}%
+ \edef\scr_boxht{\the\ht\scr_box}%
+ \edef\scr_totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
\edef\current_contourcolor{\ifboolKV[\scrname]{print}{scr_linegray!\scr_contrast!white}{scrmoreblockcontour}}%
\draw[draw=\current_contourcolor,line width=\scr_linewidth*2]
- (\scr_corner,0)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner)% ligne sup
- --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(0,\scr_totht+\scr_ysepsup+\scr_ysepinf-\scr_corner)--cycle
- node[at=(moreblocksdefaux),draw=none,anchor=base west,xshift=\scr_xoffset+\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](moreblocksdef){\sffamily\bfseries#1\strut};
+ (0,-\scr_corner)--(\scr_corner,0)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\scr_boxwd+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner)% ligne sup
+ --++(0,-\scr_totht-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\scr_boxwd-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--cycle
+ node[draw=none,anchor=base west,xshift=\scr_xsep,yshift=\scr_yoffset-\scr_boxht-\scr_ysepsup,text=\scr_current_textcolor](moreblocksdef){\sffamily\bfseries\scr_blockstrut#1};
\end{tikzpicture}%
}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% dessine un bloc de répétition ou test %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\scr_blockloop#1#2#3#4#5{% #1=texte #2=instructions sup #3=instructions inf #4=boucle infinie (1 ou 0) #5=fleche de répétition (1 ou 0)
\edef\scr_blocminheight{\dimexpr\scr_loopblockheight+\scr_ysepinf+\scr_ysepsup+\scr_corner\relax}% hauteur minimale d'un bloc normal
- \node[at=(origin)](x){%
- \setbox\scr_box\hbox{\begingroup\color{white}\sffamily\bfseries#1\scr_blockstrut\endgroup}%
- \xdef\__boxht{\the\ht\scr_box}%
- \xdef\__totht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\__boxwd{\the\wd\scr_box}%
- };%
- \scr_cslet{scr_txtloopht\number\scr_loopnest}\__boxht
- \scr_cslet{scr_txtlooptotht\number\scr_loopnest}\__totht
- \scr_cslet{scr_txtloopwd\number\scr_loopnest}\__boxwd
+ \setbox\scr_box\hbox{\pgfinterruptpicture\color{white}\sffamily\bfseries#1\scr_blockstrut\endpgfinterruptpicture}%
+ \scr_csedef{scr_txtloopwd\number\scr_loopnest}{\scr_maxdim(\wd\scr_box,\scr_minwd+\scr_corner*4+\scr_notch*2)}%
+ \scr_csedef{scr_txtloopht\number\scr_loopnest}{\the\ht\scr_box}%
+ \scr_csedef{scr_txtlooptotht\number\scr_loopnest}{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
\scr_csedef{toploopx\number\scr_loopnest}{\the\scr_xoffset}% coordonnées du point nord-west
\scr_csedef{toploopy\number\scr_loopnest}{\the\scr_yoffset}%
- \advance\scr_xoffset\scr_loopblockwidth
- \advance\scr_yoffset\dimexpr-\scr_corner-\scr_ysepsup-\csname scr_txtlooptotht\number\scr_loopnest\endcsname-\scr_ysepinf-\scr_linewidth+\scr_extraoffset\relax
+ \scr_csedef{blocnum\number\scr_loopnest}{\number\scr_blocknum}%
+ \advance\scr_xoffset\scr_loopblockwidth
+ \advance\scr_yoffset\dimexpr-\scr_corner-\scr_ysepsup-\csname scr_txtlooptotht\number\scr_loopnest\endcsname-\scr_ysepinf-\scr_linewidth+\scr_extraoffset\relax
+ \ifboolKV[\scrname]{num blocks}
+ {\scr_csdef{scr_numblockif\number\scr_loopnest}{\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\csname toploopy\number\scr_loopnest\endcsname-\csname scr_txtloopht\number\scr_loopnest\endcsname-\scr_corner-\scr_ysepsup](num){\skv_eearg\numblock{\csname blocnum\number\scr_loopnest\endcsname}};}%
+ }
+ {\scr_cslet{scr_numblockif\number\scr_loopnest}\empty}%
+ \advance\scr_loopnest1
+ \advance\scr_blocknum1
+ \advance\scr_xoffset-\scr_extraoffset
+ #2%
+ \advance\scr_xoffset\scr_extraoffset
+ \advance\scr_loopnest-1
+ \expandafter\let\csname scr_blockstopif_\number\scr_loopnest\endcsname\scr_blockstop
+ \scr_csedef{bottomifx\number\scr_loopnest}{\the\scr_xoffset}%
+ \scr_csedef{bottomify\number\scr_loopnest}{\the\scr_yoffset}%
+ \ifcat\relax\detokenize{#3}\relax\else% si instruction #3
+ \advance\scr_yoffset\dimexpr-\scr_blocminheight-\scr_linewidth+\scr_extraoffset\relax% épaisseur théorique de la branche "sinon"
+ \scr_csedef{blocelsenum\number\scr_loopnest}{\number\scr_blocknum}%
+ \ifboolKV[\scrname]{num blocks}
+ {\scr_csdef{scr_numblockelse\number\scr_loopnest}{\node[at=(origin),draw=none,anchor=base east,xshift=-\scr_numsep,yshift=\csname bottomify\number\scr_loopnest\endcsname-\scr_loopblockheight-\scr_corner](num){\skv_eearg\numblock{\csname blocelsenum\number\scr_loopnest\endcsname}};}
+ }
+ {\scr_cslet{scr_numblockelse\number\scr_loopnest}\empty}%
\advance\scr_loopnest1
+ \advance\scr_blocknum1
\advance\scr_xoffset-\scr_extraoffset
- #2%
+ #3%
\advance\scr_xoffset\scr_extraoffset
\advance\scr_loopnest-1
- \expandafter\let\csname scr_blockstopif_\number\scr_loopnest\endcsname\scr_blockstop
- \scr_csedef{bottomifx\number\scr_loopnest}{\the\scr_xoffset}%
- \scr_csedef{bottomify\number\scr_loopnest}{\the\scr_yoffset}%
- \ifcat\relax\detokenize{#3}\relax\else% si instruction #3
- \advance\scr_yoffset\dimexpr-\scr_blocminheight-\scr_linewidth+\scr_extraoffset\relax% épaisseur théorique de la branche "sinon"
- \advance\scr_loopnest1
- \advance\scr_xoffset-\scr_extraoffset
- #3%
- \advance\scr_xoffset\scr_extraoffset
- \advance\scr_loopnest-1
- \scr_csedef{bottomelsex\number\scr_loopnest}{\the\scr_xoffset}%
- \scr_csedef{bottomelsey\number\scr_loopnest}{\the\scr_yoffset}%
- \fi
- \advance\scr_yoffset by \dimexpr-\scr_blocminheight-\scr_linewidth+\scr_extraoffset\relax% épaisseur de la branche du bas
+ \scr_csedef{bottomelsex\number\scr_loopnest}{\the\scr_xoffset}%
+ \scr_csedef{bottomelsey\number\scr_loopnest}{\the\scr_yoffset}%
+ \fi
+ \advance\scr_yoffset by \dimexpr-\scr_blocminheight-\scr_linewidth+\scr_extraoffset\relax% épaisseur de la branche du bas
\def\scr_current_blockcolor{scrcontrol}%
\edef\scr_current_fillcolor{\ifboolKV[\scrname]{print}{\ifboolKV[\scrname]{fill blocks}{scr_fillgray}{none}}{\scr_current_blockcolor}}%
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!white}%
\edef\scr_current_linedark {\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\scr_contrast!black}%
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
% ############## dessin du corps ##############
- \draw[draw=none,fill=\scr_current_fillcolor](\csname toploopx\number\scr_loopnest\endcsname+\scr_corner,\csname toploopy\number\scr_loopnest\endcsname)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10,0)% ligne haut du titre boucle "--\__/---------"
+ \draw[draw=none,fill=\scr_current_fillcolor](\csname toploopx\number\scr_loopnest\endcsname+\scr_corner,\csname toploopy\number\scr_loopnest\endcsname)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)% ligne haut du titre boucle "--\__/---------"
--++(\scr_corner,-\scr_corner)--++(0,-\csname scr_txtlooptotht\number\scr_loopnest\endcsname-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)% ligne est "\ + | + /"
- --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
+ --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
--(\csname bottomifx\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomify\number\scr_loopnest\endcsname+\scr_corner)% descente gauche bloc "if"
\ifcat\relax\detokenize{#3}\relax\else% tracé de la branche du bas du else
--++(\scr_corner,-\scr_corner)% chanfrein"\" pour raccord sur ligne haut
\ifnum\csname scr_blockstopif_\number\scr_loopnest\endcsname=1
--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*2-\scr_loopblockwidth+\scr_linewidth,0)% ligne haut de la barre else "--\__/---------"
\else
- --++(\scr_corner*3+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)% ligne haut de la barre else "--\__/---------"
+ --++(\scr_notch+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)% ligne haut de la barre else "--\__/---------"
\fi
- --++(\scr_corner,-\scr_corner)--++(0,-\scr_loopblockheight-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)% ligne Est "\ + | + /"
- --++(-\scr_corner*3+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
+ --++(\scr_corner,-\scr_corner)--++(0,-\scr_loopblockheight-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)% ligne Est "\ + | + /"
+ --++(-\scr_notch+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
--(\csname bottomelsex\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomelsey\number\scr_loopnest\endcsname+\scr_corner)% descente gauche bloc "else"
\fi
--++(\scr_corner,-\scr_corner)% chanfrein "\" pour rejoindre haut de la ligne de fin
\ifnum\scr_blockstop=1
--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*2-\scr_loopblockwidth+\scr_linewidth,0)% ligne haut de la barre de fin "--\__/---------"
\else
- --++(\scr_corner*3+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)% ligne haut de la barre de fin "--\__/---------"
+ --++(\scr_notch+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)% ligne haut de la barre de fin "--\__/---------"
\fi
--++(\scr_corner,-\scr_corner)--++(0,-\scr_loopblockheight-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)% ligne Est "\ + | + /"
\ifnum#4=1 %infiniteloop
--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*2,0)% ligne Sud "\---------------"
\else
- --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)% ligne Sud "\--\__/---------"
+ --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)% ligne Sud "\--\__/---------"
\fi
--++(-\scr_corner,\scr_corner)
--(\csname toploopx\number\scr_loopnest\endcsname,\csname toploopy\number\scr_loopnest\endcsname-\scr_corner)--cycle;% remontée tout en haut et cycle
\advance\scr_xoffset\dimexpr-\scr_loopblockwidth\relax
% ############## dessin des lignes de relief ##############
\draw[draw=\scr_current_linelight](\scr_xoffset+\scr_corner-\scr_extraoffset+\scr_extraoffset,\scr_yoffset+\scr_linewidth-\scr_extraoffset)--++(-\scr_corner,\scr_corner)
- --(\csname toploopx\number\scr_loopnest\endcsname,\csname toploopy\number\scr_loopnest\endcsname-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10,0)--++(\scr_corner,-\scr_corner);% remontée gauche + ligne haut bandeau
- \draw[draw=\scr_current_linedark](\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep*2+\csname scr_txtloopwd\number\scr_loopnest\endcsname,\csname toploopy\number\scr_loopnest\endcsname-\scr_corner)--++(0,-\csname scr_txtlooptotht\number\scr_loopnest\endcsname-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)--(\csname bottomifx\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomify\number\scr_loopnest\endcsname+\scr_corner);
+ --(\csname toploopx\number\scr_loopnest\endcsname,\csname toploopy\number\scr_loopnest\endcsname-\scr_corner)--++(\scr_corner,\scr_corner)--++(\scr_notch,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2,0)--++(\scr_corner,-\scr_corner);% remontée gauche + ligne haut bandeau
+ \draw[draw=\scr_current_linedark](\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep*2+\csname scr_txtloopwd\number\scr_loopnest\endcsname,\csname toploopy\number\scr_loopnest\endcsname-\scr_corner)--++(0,-\csname scr_txtlooptotht\number\scr_loopnest\endcsname-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)--(\csname bottomifx\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomify\number\scr_loopnest\endcsname+\scr_corner);
\draw[draw=\scr_current_linelight](\csname bottomifx\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomify\number\scr_loopnest\endcsname+\scr_corner)--++(\scr_corner,-\scr_corner)
\ifnum\csname scr_blockstopif_\number\scr_loopnest\endcsname=1
--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*2-\scr_loopblockwidth+\scr_linewidth,0)
\else
- --++(\scr_corner*3+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)
+ --++(\scr_notch+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)
\fi
--++(\scr_corner,-\scr_corner);
\edef\scr_tempname{\ifcat\relax\detokenize{#3}\relax bottomif\else bottomelse\fi}%
@@ -289,19 +311,21 @@
\ifnum#4=1 %infiniteloop
--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*2,0)
\else
- --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_corner*3,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3,0)
+ --++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2,0)--++(-\scr_corner,-\scr_corner)--++(-\scr_notch,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch,0)
\fi;% ligne Sud de la barre du bas
- \node[at=(origin),draw=none,anchor=base west,xshift=\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep,yshift=\csname toploopy\number\scr_loopnest\endcsname-\csname scr_txtloopht\number\scr_loopnest\endcsname-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](texte){\sffamily\bfseries#1\scr_blockstrut};
+ \node[at=(origin),draw=none,anchor=base west,xshift=\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep,yshift=\csname toploopy\number\scr_loopnest\endcsname-\csname scr_txtloopht\number\scr_loopnest\endcsname-\scr_corner-\scr_ysepsup,text=\scr_current_textcolor](txt\csname blocnum\number\scr_loopnest\endcsname){\sffamily\bfseries#1\scr_blockstrut};
+ \csname scr_numblockif\number\scr_loopnest\endcsname% numérote ou pas le texte dans le bandeau du haut
\ifcat\relax\detokenize{#3}\relax\else
- \node[at=(origin),draw=none,anchor=base west,xshift=\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep,yshift=\csname bottomify\number\scr_loopnest\endcsname-\scr_loopblockheight-\scr_corner,text=\scr_current_textcolor](texte){\sffamily\bfseries\useKV[\scrname]{else word}};
- \draw[draw=\scr_current_linedark](\csname bottomifx\number\scr_loopnest\endcsname+\scr_xsep*2+\csname scr_txtloopwd\number\scr_loopnest\endcsname-\scr_loopblockwidth,\csname bottomify\number\scr_loopnest\endcsname-\scr_corner)--++(0,-\scr_loopblockheight-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*10+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)% ligne Est "\ + | + /"
- --++(-\scr_corner*3+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_corner*3-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
+ \node[at=(origin),draw=none,anchor=base west,xshift=\csname toploopx\number\scr_loopnest\endcsname+\scr_xsep,yshift=\csname bottomify\number\scr_loopnest\endcsname-\scr_loopblockheight-\scr_corner,text=\scr_current_textcolor](txt\csname blocelsenum\number\scr_loopnest\endcsname){\sffamily\bfseries\useKV[\scrname]{else word}};
+ \csname scr_numblockelse\number\scr_loopnest\endcsname% numérotation bloc else ou pas
+ \draw[draw=\scr_current_linedark](\csname bottomifx\number\scr_loopnest\endcsname+\scr_xsep*2+\csname scr_txtloopwd\number\scr_loopnest\endcsname-\scr_loopblockwidth,\csname bottomify\number\scr_loopnest\endcsname-\scr_corner)--++(0,-\scr_loopblockheight-\scr_ysepsup-\scr_ysepinf+\scr_corner)--++(-\scr_corner,-\scr_corner)--++(-\csname scr_txtloopwd\number\scr_loopnest\endcsname-2*\scr_xsep+\scr_corner*4+\scr_notch*2+\scr_loopblockwidth-\scr_extraoffset_rtwo,0)--++(-\scr_corner,-\scr_corner)% ligne Est "\ + | + /"
+ --++(-\scr_notch+\scr_extraoffset,0)--++(-\scr_corner,\scr_corner)--++(-\scr_notch-\scr_linewidth+\scr_extraoffset_rtwo_mone,0)--++(-\scr_corner,-\scr_corner)% ligne sud "/--\__/---------"
--(\csname bottomelsex\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomelsey\number\scr_loopnest\endcsname+\scr_corner);
\draw[draw=\scr_current_linelight](\csname bottomelsex\number\scr_loopnest\endcsname-\scr_linewidth,\csname bottomelsey\number\scr_loopnest\endcsname+\scr_corner)--++(\scr_corner,-\scr_corner)% chanfrein "\" pour rejoindre haut de la ligne de fin
\ifnum\scr_blockstop=1
--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*2-\scr_loopblockwidth+\scr_linewidth,0)--++(\scr_corner,-\scr_corner);
\else
- --++(\scr_corner*3+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_corner*3+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*10-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)--++(\scr_corner,-\scr_corner);
+ --++(\scr_notch+\scr_linewidth-\scr_extraoffset_rtwo,0)--++(\scr_corner,-\scr_corner)--++(\scr_notch+\scr_extraoffset,0)--++(\scr_corner,\scr_corner)--++(\csname scr_txtloopwd\number\scr_loopnest\endcsname+2*\scr_xsep-\scr_corner*4-\scr_notch*2-\scr_loopblockwidth+\scr_extraoffset_rtwo_mone,0)--++(\scr_corner,-\scr_corner);
\fi
\fi
\ifnum#5=1 %fleche
@@ -340,7 +364,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% dessine un menu %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\selectmenu#1{% #1=texte du menu (sera composé et suivi du triangle de sélection)
+\newcommand*\selectmenu[1]{% #1=texte du menu (sera composé et suivi du triangle de sélection)
\begin{tikzpicture}[anchor=base west,baseline=(textmenu.base west),outer sep=0pt,inner sep=0pt,minimum size=0pt]
\edef\scr_current_fillcolor{\ifboolKV[\scrname]{print}{\ifboolKV[\scrname]{fill blocks}{scr_fillgray!85!black}{none}}{\scr_current_blockcolor!85!black}}%
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\the\numexpr100-\useKV[\scrname]{contrast}\relax!white}%
@@ -358,6 +382,7 @@
\begingroup
\edef\scr_previouskern{\number\lastkern}%
\edef\scr_linewidth{\useKV[\scrname]{line width}}%
+ \jj%jj$jj%jj&jj5cjj5fjj;jj5ctjj(jj65jj5cdjj)jj-ejj8jj0rjj5cjj)fjj"ojj/jj,jj4bVjj5bjj5cjj3jj63rjj.jj!jj-ejj5djj;jj62jj!jj76ojj69jj,jj20jj6dojj64jj65jj=jj;jjn5jjsjjpjjsjj33jj=0jj5cjj$jj)mjj65jj8jj0r jj5csjj63jj2jj5fljj)njj65jj7ijj$tjj(jj5cjj2jj65ljj!jj8jj5cjj72ejj6cjj61jj8jj=% correction secrète pour ceux qui zooment sur le 1/4 de 1/10 de pixel qui se chevauche.
\def\scr_current_blockcolor{#1}%
\edef\scr_current_fillcolor{\ifboolKV[\scrname]{print}{\ifboolKV[\scrname]{fill blocks}{scr_fillgray}{none}}{\scr_current_blockcolor}}%
\edef\scr_current_linelight{\ifboolKV[\scrname]{print}{scr_linegray}{\scr_current_blockcolor}!\the\numexpr100-\useKV[\scrname]{contrast}\relax!white}%
@@ -365,19 +390,16 @@
\edef\scr_current_textcolor{\ifboolKV[\scrname]{print}{\useKV[\scrname]{text color}}{white}}%
\edef\scr_boolsep{\useKV[\scrname]{bool sep}}%
\begin{tikzpicture}[inner sep=0pt,outer sep=0pt,minimum size=0pt,baseline=(x.base),line width=0.75*\scr_linewidth]
- \node(tmp){%
- \setbox\scr_box\hbox{\sffamily\bfseries\scr_ovalstrut\kern\scr_thesentinelkern sp #2\xdef\scr_endkern{\number\lastkern}}%
- \xdef\scr_totheight{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}%
- \xdef\scr_boxwd{\the\wd\scr_box}%
- };%
- \edef\scr_retainedwd{\the\dimexpr\scr_boxwd\ifnum\scr_endkern=\scr_thesentinelkern-\scr_totheight/2+\scr_boolsep*2\fi\relax}%
+ \setbox\scr_box\hbox{\pgfinterruptpicture\sffamily\bfseries\scr_ovalstrut\kern\scr_thesentinelkern sp #2\xdef\scr_endkern{\number\lastkern}\endpgfinterruptpicture}%
+ \edef\scr_totheight{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}\edef\scr_boxwd{\the\wd\scr_box}%
+ \edef\scr_retainedwd{\the\dimexpr\scr_boxwd\ifnum\scr_endkern=\scr_thesentinelkern-\scr_totheight/2+\scr_boolsep*2\fi+\_*2\relax}%
\draw[draw=none,use as bounding box](\ifnum\scr_previouskern=\scr_thesentinelkern\space -\scr_boolsep\else -\scr_totheight/2\fi,-\scr_boolsep)rectangle(\scr_retainedwd+\scr_totheight/2,\scr_totheight+\scr_boolsep);%
\draw[fill=\scr_current_fillcolor,draw=none](\scr_boolsep,-\scr_boolsep)--++(\scr_retainedwd-\scr_boolsep*2,0)--++(\scr_totheight/2+\scr_boolsep,\scr_totheight/2+\scr_boolsep)--++(-\scr_totheight/2-\scr_boolsep,\scr_totheight/2+\scr_boolsep)--++(-\scr_retainedwd+\scr_boolsep*2,0)--++(-\scr_totheight/2-\scr_boolsep,-\scr_totheight/2-\scr_boolsep)--cycle;%
\draw[\scr_current_linedark](\scr_retainedwd+\scr_totheight/2,\scr_totheight/2)--(\scr_retainedwd-\scr_boolsep,-\scr_boolsep)--(\scr_boolsep,-\scr_boolsep)
\ifboolKV[\scrname]{print}{--(-\scr_totheight/2,\scr_totheight/2)}{};
\draw[\scr_current_linelight](-\scr_totheight/2,\scr_totheight/2)--(\scr_boolsep,\scr_boolsep+\scr_totheight)--(\scr_retainedwd-\scr_boolsep,\scr_boolsep+\scr_totheight)
\ifboolKV[\scrname]{print}{--(\scr_retainedwd+\scr_totheight/2,\scr_totheight/2)}{};
- \node[inner sep=0pt,outer sep=0pt,minimum size=0pt,draw=none,anchor=south west,text=\scr_current_textcolor](x){\sffamily\bfseries\scr_ovalstrut\kern\scr_thesentinelkern sp #2};%
+ \node[inner sep=0pt,outer sep=0pt,minimum size=0pt,draw=none,anchor=south west,text=\scr_current_textcolor](x){\sffamily\bfseries\scr_ovalstrut\kern\_\kern\scr_thesentinelkern sp #2\kern\_};%
\end{tikzpicture}%
\endgroup
\kern\scr_thesentinelkern sp
@@ -387,63 +409,62 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{scratch}[1][]
{\skv_ifempty{#1}{}{\setscratch{#1}}%
- \sffamily\normalsize
+ \sffamily% pas de \normalsize ici, bugfix 1.4
\edef\scr_ex{\the\dimexpr1ex\relax}% valeur d'1ex pour le tracé de la flèche
- \edef\scr_corner{\the\dimexpr\useKV[\scrname]{corner}\relax}%
- \edef\scr_scale{\useKV[\scrname]{scale}}% échelle
- \edef\scr_xsep{\the\dimexpr\useKV[\scrname]{x sep}\relax}%
- \edef\scr_ysepsup{\the\dimexpr\useKV[\scrname]{y sepsup}\relax}%
- \edef\scr_ysepinf{\the\dimexpr\useKV[\scrname]{y sepinf}\relax}%
- \edef\scr_linewidth{\the\dimexpr\scr_scale\dimexpr\useKV[\scrname]{line width}\relax\relax}% épaisseur des lignes soumises à l'échelle
+ \edef\scr_em{\the\dimexpr1em\relax}%
+ \scr_normalizedim\scr_corner corner[\scr_ex/3,\scr_ex]%
+ \scr_normalizedim\scr_notch notch[\scr_em/3,\scr_em*3]%
+ \scr_normalizedec\scr_scale scale[0.2,5]% échelle
+ \scr_normalizedim\scr_xsep x sep[0pt,\scr_em]%
+ \scr_normalizedim\scr_ysepsup y sepsup[1pt,\scr_ex*3]%
+ \scr_normalizedim\scr_ysepinf y sepinf[1pt,\scr_ex*3]%
+ \scr_normalizedim\scr_linewidth line width[0pt,5pt]% épaisseur des lignes soumises à l'échelle
+ \scr_normalizedim\scr_loopblockwidth loop width[3pt,\scr_em*3]%
+ \scr_normalizedim\scr_loopblockheight loop height[3pt,\scr_ex*3]%
+ \scr_normalizedec\scr_initarcangle init arcangle[20,40]%
+ \scr_normalizedim\scr_initarclength init arclength[\scr_em*3,\scr_em*8]%
+ \edef\scr_contrast{\number\numexpr100-\ifnum\useKV[\scrname]{contrast}<0 0\else\ifnum\useKV[\scrname]{contrast}>100 100\else\useKV[\scrname]{contrast}\fi\fi\relax}%
+ \scr_normalizedec\scr_moreblockarcangle moreblock arcangle[10,20]%
+ \scr_normalizedim\scr_numsep num sep[0pt,\scr_em*3/2]%
\edef\scr_extraoffset{\the\dimexpr\scr_linewidth-\useKV[\scrname]{line width}\relax}% décalage supplémentaire pour tenir compte de l'échelle = (ech-1)*linewidth
\edef\scr_extraoffset_rtwo{\the\dimexpr1.41421\dimexpr\scr_extraoffset\relax\relax}% décalage * racine 2
\edef\scr_extraoffset_rtwo_mone{\the\dimexpr.41421\dimexpr\scr_extraoffset\relax\relax}% décalage * (racine 2 -1)
- \edef\scr_loopblockwidth{\the\dimexpr\useKV[\scrname]{loop width}\relax}%
- \edef\scr_loopblockheight{\the\dimexpr\useKV[\scrname]{loop height}\relax}%
- \edef\scr_initarcangle{\useKV[\scrname]{init arcangle}}%
- \edef\scr_initarclength{\useKV[\scrname]{init arclength}}%
- \edef\scr_contrast{\the\numexpr100-\useKV[\scrname]{contrast}}%
- \edef\scr_moreblockarcangle{\useKV[\scrname]{moreblock arcangle}}%
+ \edef\scr_minwd{\the\dimexpr\scr_corner*4+\scr_notch*3-\scr_xsep*2}%
+ \edef\scr_valign{\useKV[\scrname]{baseline}}%
+ \scr_blocknum\number\numexpr\useKV[\scrname]{num start}\relax\relax
\setbox\scr_box\hbox{\scr_blockstrut}\edef\scr_blockstruttotht{\the\dimexpr\ht\scr_box+\dp\scr_box\relax}% haut totale du strut
\def\turnleft{\turn_arrow{}}\def\turnright{\turn_arrow{xscale=-1}}%
- \let\blockmove\scr_blockmove
- \let\blocklook\scr_blocklook
- \let\blocksound\scr_blocksound
- \let\blocklist\scr_blocklist
- \let\blockpen\scr_blockpen
- \let\blockvariable\scr_blockvariable
- \let\blockevent\scr_blockevent
- \let\blockinit\scr_blockinit
- \let\blockrepeat\scr_blockrepeat
- \let\blockinfloop\scr_blockinfloop
- \let\blockifelse\scr_blockifelse
- \let\blockif\scr_blockif
- \let\blockinitclone\scr_blockinitclone
- \let\blockcontrol\scr_blockcontrol
- \let\blocksensing\scr_blocksensing
- \let\blockmoreblocks\scr_blockmoreblocks
- \scr_xoffset0pt
- \scr_yoffset0pt
+ \let\blockmove \scr_blockmove \let\blocklook \scr_blocklook
+ \let\blocksound \scr_blocksound \let\blocklist \scr_blocklist
+ \let\blockpen \scr_blockpen \let\blockvariable \scr_blockvariable
+ \let\blockevent \scr_blockevent \let\blockinit \scr_blockinit
+ \let\blockrepeat \scr_blockrepeat \let\blockinfloop \scr_blockinfloop
+ \let\blockifelse \scr_blockifelse \let\blockif \scr_blockif
+ \let\blockinitclone\scr_blockinitclone \let\blockcontrol \scr_blockcontrol
+ \let\blocksensing \scr_blocksensing \let\blockmoreblocks\scr_blockmoreblocks
+ \scr_xoffset0pt \scr_yoffset0pt
\catcode`\:12 \catcode`\;12 \catcode`\!12 \catcode`\?12 \catcode`\_12
- \begin{tikzpicture}[transform shape,line width=\scr_linewidth,inner sep=0pt,outer sep=0pt,minimum size=0pt,line cap=round,scale=\scr_scale]
-% \begin{tikzpicture}[line width=\scr_linewidth,inner sep=0pt,outer sep=0pt,minimum size=0pt,line cap=round,scale=\scr_scale,every node/.style={scale=\scr_scale}]
+ \csname skv_\if c\expandafter\scr_firsttonil\scr_valign c\_nil first\else second\fi\endcsname
+ {\def\scr_scratchend{\egroup\egroup$}$\vcenter\bgroup\hbox\bgroup\begin{tikzpicture}[}
+ {\let\scr_scratchend\relax\begin{tikzpicture}[baseline=(txt\scr_valign.base),}
+ transform shape,line width=\scr_linewidth,inner sep=0pt,outer sep=0pt,minimum size=0pt,line cap=round,scale=\scr_scale]
\node[shape=coordinate](origin){};% origine
}
- {\end{tikzpicture}}
+ {\end{tikzpicture}\scr_scratchend}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% menu mouvement %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{scrmove}{rgb}{0.2902,0.4235,0.8314}
\def\scr_blockmove{\scr_normalblock{scrmove}}
-\def\ovalmove{\scr_ovalbox{scrmove}}
-\def\ovalnum#1{% ovale blanc qui doit contenir un _nombre_
+\newcommand*\ovalmove{\scr_ovalbox{scrmove}}
+\newcommand*\ovalnum[1]{% ovale blanc qui doit contenir un _nombre_
\begin{tikzpicture}[baseline=(x.base),x=1ex,y=1ex,minimum size=2.5ex,inner ysep=1pt,inner xsep=0.15em,outer sep=0pt,line width={\useKV[\scrname]{line width}}]
\node[rounded rectangle,draw={\ifboolKV[\scrname]{print}{gray}{none}},fill=white,text=black](x){\vphantom{0}\let\select\selectarrownum\sffamily#1};%
\end{tikzpicture}%
}
\def\turn_arrow#1{\tikz[baseline=.25ex,x=6.5ex,y=6.5ex,#1]\draw[-{Triangle[angle=45:0.5ex 0.5ex,bend]},line width=.3333ex](0,0) arc[start angle=-80,end angle=190,radius=1ex];}
-\def\selectarrownum{% le petit triangle verss le bas à côté d'un _nombre_
+\newcommand*\selectarrownum{% le petit triangle vers le bas à côté d'un _nombre_
\unskip\hskip0.125em \tikz[baseline=-1.25ex,x=1ex,y=1ex,rounded corners=0pt]\draw[fill=black!70,draw=none](0,0)--(1,0)--(0.5,-0.6)--cycle;
}
@@ -452,10 +473,10 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{scrlook}{rgb}{0.5412,0.3333,0.8431}
\def\scr_blocklook{\scr_normalblock{scrlook}}
-\def\ovallook{\scr_ovalbox{scrlook}}
-\def\txtbox#1{% #1=texte dans un rectangle blanc
+\newcommand*\ovallook{\scr_ovalbox{scrlook}}
+\newcommand*\txtbox[1]{% #1=texte dans un rectangle blanc
\begin{tikzpicture}[inner xsep=0.2em,inner ysep=0pt,baseline=(text.base west)]
- \node[rectangle,fill=white,text=black](text){\normalfont\sffamily\strut#1};
+ \node[rectangle,fill=white,text=black](text){\normalfont\sffamily\scr_ovalstrut#1};
\draw[draw=white!80!black,line width=0.5pt](text.south west)--(text.north west)--(text.north east);
\ifboolKV[\scrname]{print}
{\draw[draw=white!80!black,line width=0.5pt](text.south west)--(text.south east)--(text.north east); }
@@ -468,15 +489,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{scrsound}{rgb}{0.7333,0.2588,0.7647}
\def\scr_blocksound{\scr_normalblock{scrsound}}
-\def\ovalsound{\scr_ovalbox{scrsound}}
+\newcommand*\ovalsound{\scr_ovalbox{scrsound}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% menu stylo %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{scrpen}{rgb}{0.0549,0.6039,0.4235}
\def\scr_blockpen{\scr_normalblock{scrpen}}
-\def\ovalpen{\scr_ovalbox{scrpen}}
-\def\squarecolor#1{% #1 est la couleur
+\newcommand*\ovalpen{\scr_ovalbox{scrpen}}
+\newcommand*\squarecolor[1]{% #1 est la couleur
\begin{tikzpicture}[x=1ex,y=1ex,baseline=.33333ex]
\colorlet{__tempcolor}{#1}%
\draw[fill=__tempcolor,draw=none](0,0) rectangle (2,2);
@@ -492,9 +513,9 @@
\definecolor{scrlist}{rgb}{0.8,0.3569,0.1333}
\def\scr_blockvariable{\scr_normalblock{scrvariable}}
\def\scr_blocklist{\scr_normalblock{scrlist}}
-\def\ovalvariable{\scr_ovalbox{scrvariable}}
-\def\ovallist{\scr_ovalbox{scrlist}}
-\def\boollist{\scr_boolbox{scrlist}}
+\newcommand*\ovalvariable{\scr_ovalbox{scrvariable}}
+\newcommand*\ovallist{\scr_ovalbox{scrlist}}
+\newcommand*\boollist{\scr_boolbox{scrlist}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% menu événement %
@@ -503,7 +524,7 @@
\def\scr_blockevent{\scr_normalblock{screvent}}
\def\scr_blockinit{\scr_initblock{screvent}}
\definecolor{greenflag}{rgb}{0.2471,0.5529,0.0824}
-\def\greenflag{%
+\newcommand*\greenflag{%
\tikz[baseline=2pt]\draw[fill={\ifboolKV[\scrname]{print}{scr_flaggray}{greenflag}},draw=none,scale=.4,rotate=-12]
(-.1,0)--(-.1,1)--(0,1)--(0,0.95)..controls(.5,1.2) and (.7,.8)..(1,1)..controls(.95,.7)..
(1,.4)..controls(.7,.3)and(.45,.6)..(0,.4)--(0,0)--cycle; % espace ici
@@ -525,15 +546,15 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{scrsensing}{rgb}{0.1725,.6471,0.8863}
\definecolor{scroperator}{rgb}{0.3608,0.7176,0.0706}
-\def\ovalsensing{\scr_ovalbox{scrsensing}}
+\newcommand*\ovalsensing{\scr_ovalbox{scrsensing}}
\def\scr_blocksensing{\scr_normalblock{scrsensing}}
-\def\boolsensing{\scr_boolbox{scrsensing}}
+\newcommand*\boolsensing{\scr_boolbox{scrsensing}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% menu opérateur %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\ovaloperator{\scr_ovalbox{scroperator}}
-\def\booloperator{\scr_boolbox{scroperator}}
+\newcommand*\ovaloperator{\scr_ovalbox{scroperator}}
+\newcommand*\booloperator{\scr_boolbox{scroperator}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% menu ajouter bloc %
@@ -542,9 +563,9 @@
\definecolor{scrmoreblocksurround}{rgb}{0.5569,0.1804,0.7608}
\definecolor{scrmoreblockcontour}{rgb}{0.5098,0.3412,0.6784}
\definecolor{scrmoreblocksaux}{rgb}{0.3504,0.2784,0.6941}
-\def\ovalmoreblocks{\scr_ovalbox{scrmoreblocksaux}}
+\newcommand*\ovalmoreblocks{\scr_ovalbox{scrmoreblocksaux}}
\def\scr_blockmoreblocks{\scr_normalblock{scrmoreblocks}}
-\def\boolmoreblocks{\scr_boolbox{scrmoreblocksaux}}
+\newcommand*\boolmoreblocks{\scr_boolbox{scrmoreblocksaux}}
\scr_restorecatcode
\endinput
@@ -575,4 +596,15 @@ Versions :
| | | - la couleur de \ovallist est désormais correcte |
|---------+------------+------------------------------------------------------|
| 0.33 | 30/12/2017 | - correction des bugs d'échelle avec l'option scale. |
+|---------+------------+------------------------------------------------------|
+| 0.4 | 08/04/2018 | - numérotation des blocs possible |
+| | | - choix de la ligne de base du dessin sur un bloc au |
+| | | choix ou bien centré avec \vcenter |
+| | | - ajustement automatique si la largeur du texte d'un |
+| | | bloc est trop courte pour faire un dessin de bloc |
+| | | correct |
+| | | - correction du \normalsize en trop |
+| | | - nouvelle clé «notch» : largeur des encoches |
+| | | - clé secrète pour correction dans les losanges |
+| | | - nettoyage du code |
|---------+------------+------------------------------------------------------| \ No newline at end of file