From 19d739268d5ddc1cded19571b7d665efa4c0c999 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 8 Aug 2017 20:42:25 +0000 Subject: scratch (8aug17) git-svn-id: svn://tug.org/texlive/trunk@44989 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/scratch/README | 6 +-- Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf | Bin 450231 -> 450611 bytes Master/texmf-dist/doc/latex/scratch/scratch-fr.tex | 34 ++++++++++----- Master/texmf-dist/tex/latex/scratch/scratch.sty | 48 +++++++++++++-------- 4 files changed, 55 insertions(+), 33 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/scratch/README b/Master/texmf-dist/doc/latex/scratch/README index b91de4430df..4bceaaa7cc7 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.2 + v0.3 - 28 mai 2017 + 8 aout 2017 ___________________________________ Authors : 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 2c95c1f8db4..7568e190906 100644 Binary files a/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf and b/Master/texmf-dist/doc/latex/scratch/scratch-fr.pdf differ diff --git a/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex b/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex index 8d7a30f5c5f..f32378ae4d8 100644 --- a/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex +++ b/Master/texmf-dist/doc/latex/scratch/scratch-fr.tex @@ -2,7 +2,7 @@ % Ceci est la documentation du package "scratch" % % Fichier compilé avec pdflatex -\documentclass[frenchb,a4paper,10pt]{article} +\documentclass[french,a4paper,10pt]{article} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[margin=2cm]{geometry} @@ -113,7 +113,7 @@ \color{teal}\bfseries\ttfamily \detokenize{#1}=$\langle$\detokenize{#2}$\rangle$\hss}\kern2.5em (\textit{Défaut} : {\color{teal}\ttfamily - \hlst_eearg\hlst_ifempty{\useKV[scratch]{#1}} + \skv_eearg\skv_ifempty{\useKV[scratch]{#1}} {\detokenize{{}}} {\detokenize\expandafter\expandafter\expandafter{\useKV[scratch]{#1}}}})% \par\nobreak @@ -133,7 +133,8 @@ \smallbreak \longfrscrdate \vskip1.5cm - Christian \bsc{Tellechea}\footnote{\texttt{unbonpetit@openmailbox.org}}\par + Christian \bsc{Tellechea}\par + \texttt{unbonpetit@netc.fr}\par \endgroup \vskip2cm \leftskip=.2\linewidth \rightskip=.2\linewidth \small @@ -141,9 +142,9 @@ \end{titlepage} \parindent0pt \section{Avant propos} -La présente extension \SCRATCH requiert les extensions \texttt{hlist} et \texttt{ti\textit kz}. Celles-ci sont automatiquement chargées par \SCRATCH. +La présente extension \SCRATCH requiert les extensions \texttt{simplekv} et \texttt{ti\textit kz}. Celles-ci sont automatiquement chargées par \SCRATCH. -En raison de la récente parution de \texttt{hlist}, postérieure au gel de \TeX live~2016, il peut être nécessaire d'installer à la main l'extension \texttt{hlist}. Pour ce faire, il suffit de télécharger les fichiers \texttt{hlist.sty} et \texttt{hlist.tex} sur le CTAN et copier ces fichiers dans un endroit où \LaTeX{} les voit; le répertoire \texttt{texmf} personnel est tout indiqué (il faut ensuite exécuter la commande \texttt{texhash}), ou le répertoire de compilation, pour une portée plus locale. +Fidèle à mes convictions, la documentation de cette extension n'est disponible qu'en français. \section{L'environnement \SCRATCH} Pour dessiner un programme comme le fait \SCRATCH, il faut ouvrir un environnement «\SCRATCH» et écrire dans cet environnement les macros correspondant aux \emph{blocs} que l'on veut y mettre : @@ -152,7 +153,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 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. @@ -164,7 +165,7 @@ Ces blocs sont les plus courants et poss La police d'écriture dans chaque bloc est la police « \textsf{sans serif} » en gras qui est définie dans le document au moment où l'environnement est appelé : pratiquement, cela signifie que les macros \verb|\sffamily| et \verb|\bfseries| sont exécutées avant que le texte des blocs ne soit composé. Dans cette documentation, la police sans serif est «\textsf{biolinum}». -La plupart des dimensions des blocs sont proportionnelles à la taille de la police en cours. On peut donc jouer sur la taille de la police (via les classiques macros \verb|\small|, \verb|\large|, \verb|\footnotesize|, etc) pour modifier la taille des blocs. +La plupart des dimensions des blocs sont proportionnelles à la taille de la police en cours. On peut donc jouer sur la taille de la police (via les classiques macros \verb|\small|, \verb|\large|, \verb|\footnotesize|, etc) pour modifier la taille des blocs\footnote{Il y a aussi la clé «\texttt{scale}» pour mettre le dessin à l'échelle que l'on souhaite, voir page~\pageref{cle-scale}} . Voici un inventaire des tous les blocs disponibles, empilés les uns sous les autres : @@ -256,10 +257,10 @@ Un carr Dans la symbolique graphique de \SCRATCH, les losanges contiennent des valeurs booléennes ayant vocation à se retrouver dans un bloc de test. Pour dessiner de tels objets booléens, les macros \verb|\bool{}| sont utilisées où les \verb|| représentent les couleurs correspondant à la fonction du booléen tracé : \suffixe{list}, \suffixe{sensing} ou \suffixe{operator}. Les blocs de test sont de deux types,selon qu'ils possèdent ou pas une branche « else». -\code|\blocif{} +\code|\blockif{} {}| et -\code|\blocifelse{} +\code|\blockifelse{} {} {}| @@ -396,11 +397,14 @@ Repr \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. +\cleval{scale}{coefficient}\label{cle-scale} +Représente l'échelle à laquelle est représenté le dessin. + \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. \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. \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». @@ -474,12 +478,20 @@ Lorsque \verb|print| est vrai, ce taux de gris est utilis \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. -Toute remarque, remontée de bug ---~je n'ose pas dire amélioration du code~---, demande d'implémentation de fonctionnalité est bien évidemment bienvenue; j'invite les utilisateurs à m'en faire part \emph{via} email. +Toute remarque, remontée de bug ---~je n'ose pas dire amélioration du code~---, demande d'implémentation de fonctionnalité est bien évidemment bienvenue; j'invite les utilisateurs à m'en faire part \emph{via} email à \texttt{unbonpetit@netc.fr} \section{Historique} \paragraph{v0.1\quad 16/05/2017} Première version. \paragraph{v0.2\quad 28/05/2017} Pour une impression en noir et blanc, ajout de l'option «\texttt{print}», suite à une demande de P.~\bsc{Celdran}. De cette option découlent les options «\texttt{fill blocks}», «\texttt{fill gray}», «\texttt{text color}», «\texttt{flag gray}» et «\texttt{line gray}». Ajout également de l'option «\texttt{contrast}» qui qualifie la différence de nuance entre les lignes de contraste des parties hautes et des parties basses. +\paragraph{v0.21\quad 24/07/2017} Correction d'une erreur dans le tracé des lignes de contraste des "boolbox". + +Correction d'un bug dans \verb|\resetscratch|. + +Correction d'un bug dans \verb|\txtbox|. + +Chargement de l'extension \texttt{simplekv} pour les clés/valeurs. +Ajout de la clé «scale». \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 a764975caa5..ae4fa5cb6af 100644 --- a/Master/texmf-dist/tex/latex/scratch/scratch.sty +++ b/Master/texmf-dist/tex/latex/scratch/scratch.sty @@ -4,9 +4,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \def\scrname {scratch} % -\def\scrver {0.2} % +\def\scrver {0.3} % % % -\def\scrdate {2017/05/28} % +\def\scrdate {2017/08/08} % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -24,10 +24,11 @@ % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Christian Tellechea -% email: unbonpetit@openmailbox.org +% email: unbonpetit@netc.fr % Commentaires, suggestions et signalement de bugs bienvenus ! % Comments, bug reports and suggestions are welcome. % Package URL: https://www.ctan.org/pkg/scratch +% Copyright: Christian Tellechea 2017 % -------------------------------------------------------------------- % L'extension scratch est composée des 4 fichiers suivants : % - code : scratch.sty @@ -36,13 +37,13 @@ % -------------------------------------------------------------------- \ProvidesPackage{scratch}[\scrdate\space v\scrver\space Draw scratch instructions (CT)] \NeedsTeXFormat{LaTeX2e} -\RequirePackage{hlist,tikz} +\RequirePackage{simplekv,tikz} \usepgflibrary{shapes.misc,arrows.meta} \usetikzlibrary{bending} \expandafter\edef\csname scr\string_restorecatcode\endcsname{\catcode`\noexpand\_=\the\catcode`\_\relax} \catcode`\_11 -% Les réglages par défaut (modifiables avec \setdefaulthlist) +% Les réglages par défaut (modifiables avec \setdefaultscratch) \setKVdefault[\scrname]{ else word = sinon,% mot dans branche "else" x sep = 0.5em,% séparation entre côtés droits et gauche du bloc et le texte @@ -52,9 +53,10 @@ 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 + scale = 1,% échelle du dessin init arcangle = 30,% angle début et fin de l'arc init arclength = 5em,% longueur de l'arc - moreblock arcangle = 15,% angle de départ et arriéve des "more blocks" + moreblock arcangle = 15,% angle de départ et arrivée des "more blocks" contrast = 20,% contraste des lignes de relief (0=aucun contraste, 100=noir/blanc) print = false,% impression noir et blanc ? fill blocks = false,% remplissage des blocks lorsque l'option "print" est vraie @@ -64,18 +66,18 @@ 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 } -\expandafter\let\expandafter\resetscratch\csname hlst_[\scrname]\endcsname +\def\resetscratch{\csname skv_[\scrname]\endcsname\scr_setcolors} \def\setscratch#1{\setKV[\scrname]{#1}\scr_setcolors} \def\setdefaultscratch#1{\setKVdefault[\scrname]{#1}\scr_setcolors} \def\scr_setcolors{% - \hlst_eearg{\definecolor{scr_fillgray}{gray}}{\useKV[\scrname]{fill gray}}% - \hlst_eearg{\definecolor{scr_linegray}{gray}}{\useKV[\scrname]{line gray}}% - \hlst_eearg{\definecolor{scr_flaggray}{gray}}{\useKV[\scrname]{flag gray}}% + \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}}% } \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}% TODO à modifier ? -\def\scr_ovalstrut{\vphantom{\`Alpgqyj}}% TODO c'est pas un peu petit en hauteur tout ça ? +\def\scr_blockstrut{\vrule height2.1ex depth.9ex width0pt\relax} +\def\scr_ovalstrut{\vphantom{\`Alpgqyj}} \def\scr_cslet#1{\expandafter\let\csname#1\endcsname} \def\scr_csedef#1{\expandafter\edef\csname#1\endcsname} \newcount\scr_loopnest @@ -377,8 +379,8 @@ \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_retainedwd+\scr_totheight/2,\scr_totheight/2)--(\scr_retainedwd-\scr_boolsep,\scr_boolsep+\scr_totheight)--(\scr_boolsep,\scr_boolsep+\scr_totheight) - \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};% \end{tikzpicture}% \endgroup @@ -388,10 +390,11 @@ % environnement scratch % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newenvironment{scratch}[1][] - {\hlst_ifempty{#1}{}{\setscratch{#1}}% + {\skv_ifempty{#1}{}{\setscratch{#1}}% \normalfont \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_corner{\the\dimexpr\useKV[\scrname]{corner}\relax}% + \edef\scr_currentscale{\useKV[\scrname]{scale}}% \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}% @@ -412,7 +415,7 @@ \let\blockinitclone\scr_blockinitclone\let\blockcontrol\scr_blockcontrol \let\blocksensing\scr_blocksensing\let\blockmoreblocks\scr_blockmoreblocks \catcode`\:12 \catcode`\;12 \catcode`\!12 \catcode`\?12 \catcode`\_12 - \begin{tikzpicture}[line width=\scr_linewidth,inner sep=0pt,outer sep=0pt,minimum size=0pt,line cap=round] + \begin{tikzpicture}[line width=\scr_linewidth,inner sep=0pt,outer sep=0pt,minimum size=0pt,line cap=round,scale=\scr_currentscale,every node/.style={scale=\scr_currentscale}] \node[shape=coordinate](origin){};% origine } {\end{tikzpicture}} @@ -441,7 +444,7 @@ \def\ovallook{\scr_ovalbox{scrlook}} \def\txtbox#1{% #1=texte dans un rectangle blanc \begin{tikzpicture}[inner xsep=0.2em,inner ysep=0pt,baseline=(text.base west)] - \node[fill=white,text=black](text){\normalfont\sffamily\strut#1}; + \node[rectangle,fill=white,text=black](text){\normalfont\sffamily\strut#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); } @@ -540,6 +543,13 @@ Versions : |-----------------------------------------------------------------------------| | 0.1 | 16/05/2017 | Première version | |-----------------------------------------------------------------------------| -| 0.2 | 27/05/2017 | Ajout des options "constast" et print ainsi que | +| 0.2 | 28/05/2017 | Ajout des options "constast", "print" ainsi que | | | | les options relatives à "print" | +|-----------------------------------------------------------------------------| +| 0.3 | 08/08/2017 | - Correction d'une erreur dans le tracé des lignes | +| | | de contraste des "boolbox" | +| | | - Correction d'un bug dans \resetscratch | +| | | - Correction d'un bug dans \txtbox | +| | | - Appel à simplekv pour les clés/valeurs | +| | | - Ajout de la clé "scale" | |-----------------------------------------------------------------------------| \ No newline at end of file -- cgit v1.2.3