summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/proflycee
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-09-23 03:02:24 +0000
committerNorbert Preining <norbert@preining.info>2022-09-23 03:02:24 +0000
commit93fb03ea65cbfc0770b6b22d07b1a2d8098b23aa (patch)
tree4ef3ac0722fccefb8c999f68e4cadf8e86d67c29 /macros/latex/contrib/proflycee
parent2bb16a3bfa64e17e235ca1f7873f8f7a140ad767 (diff)
CTAN sync 202209230302
Diffstat (limited to 'macros/latex/contrib/proflycee')
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin816736 -> 834268 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex165
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty132
3 files changed, 293 insertions, 4 deletions
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 96ad581523..9ad760140f 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 761c36edaf..d653c2ac21 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -60,8 +60,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{1.2.5}
-\def\PLdate{3 Septembre 2022}
+\def\PLversion{1.2.6}
+\def\PLdate{22 Septembre 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -233,6 +233,8 @@ Quelques commandes pour convertir bin/dec/hex avec certains détails.
Une commande pour, en \TikZ, créer un pixelart avec correction éventuelle.
+Une commande pour, en \TikZ, créer un SudoMaths non forcément $9\times9$.
+
\vspace{1.5cm}
\hfill{}\textit{Merci à Anne pour ses retours et sa relecture !}
@@ -3968,8 +3970,167 @@ D,-,-,D,-,D,D,F,F,F,F,F,F,D,D,-,-,-,-,D,-,-
\newpage
+\section{SudoMaths, en \TikZ}\label{sudomaths}
+
+\subsection{Introduction}
+
+\begin{codeidee}
+L'idée est de \textit{proposer} un environnement \TikZ, une commande permettant de tracer des grilles de SudoMaths.
+
+L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les blocs démarqués), et peut la remplir avec une liste d'éléments.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+%grille classique non remplie, avec légendes H et V
+%les {} non nécessaires pour préciser que les cases seront "vides"
+\PLsudomaths{}
+\end{codetex}
+
+\begin{codesortie}
+\PLsudomaths{}
+\end{codesortie}
+
+\begin{codeinfo}
+La commande \ctex{PLsudomaths} crée donc la grille (remplie ou non), dans un environnement \TikZ, c'est \textit{c'est tout} !
+
+\smallskip
+
+Si on veut exploiter le tracé de la grille, on peut utiliser l'\textit{environnement} \ctex{PLenvsudomaths} dans lequel on peut rajouter toute commande en \TikZ{} !
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%grille "toute seule"
+\PLsudomaths[<options>]{<liste>}
+
+%grille avec ajout de code
+\begin{PLenvsudomaths}[<options>]{<grille>}
+ <commandes tikz> ;
+\end{PLenvsudomaths}
+\end{codetex}
+
+\pagebreak
+
+\subsection{Clés et options}
+
+\begin{codecles}
+Quelques \Cle{clés} sont disponibles pour cette commande :
+
+\begin{itemize}
+ \item la clé \Cle{epaisseurg} pour gérer l'épaisseur des traits épais ; \hfill~défaut \Cle{1.5pt}
+ \item la clé \Cle{epaisseur} pour gérer l'épaisseur des traits fins ; \hfill~défaut \Cle{0.5pt}
+ \item la clé \Cle{unite} qui est l'unité graphique de la figure ; \hfill~défaut \Cle{1cm}
+ \item la clé \Cle{couleurcase} pour la couleur (éventuelles) des cases ; \hfill~défaut \Cle{LightBlue!50}
+ \item la clé \Cle{couleurtexte} pour gérer la couleur du label des cases ; \hfill~défaut \Cle{blue}
+ \item la clé \Cle{nbcol} qui est le nombre de colonnes ; \hfill~défaut \Cle{9}
+ \item la clé \Cle{nbsubcol} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3}
+ \item la clé \Cle{nblig} qui est le nombre de lignes ; \hfill~défaut \Cle{9}
+ \item la clé \Cle{nbsublig} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3}
+ \item la clé \Cle{police} qui formatte le label des cases ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize}
+ \item le booléen \Cle{legendes} qui affiche ou non les légendes (H et V) des cases ; \hfill~défaut \Cle{true}
+ \item la clé \Cle{policeleg} qui formatte le label des légendes ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize}
+ \item la clé \Cle{listelegv} qui est la liste de la légende verticale ; \hfill~défaut \Cle{ABCD...WXYZ}
+ \item la clé \Cle{listelegh} qui est la liste de la légende horizontale ; \hfill~défaut \Cle{abcd...wxyz}
+ \item la clé \Cle{decallegende} qui est le décalage de la légende par rapport à la grille. \hfill~défaut \Cle{0.45}
+\end{itemize}
+\end{codecles}
+
+\begin{codeinfo}
+La liste éventuelle des éléments à rentrer dans le tableau est traitée par le package \ctex{listofitems}, et se présente sous la forme suivante : \ctex{ / / / ... / / § / / / ... / / § ... § / / / ... / / }
+
+\smallskip
+
+Il peut donc être intéressant de \textit{déclarer} la liste au préalable pour simplifier la saisie de la commande !
+\end{codeinfo}
+
+\begin{codeinfo}
+La \Cle{couleurcase} est gérée -- en interne -- par le caractère \ctex{*} qui permet de préciser qu'on veut que la case soit coloriée.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%grille 6x6 avec blocs 2x3, avec coloration de cases (présentée sous forme de "cases")
+\def\grilleSuMa{%
+ (a)* / (b)* / / / (c)* / (d)* §%
+ (e)* / / / (f)* / (g)* / (h)* §%
+ / / (i)* / / / (j)* §%
+ / / (k)* / / (l)* / (m)* §%
+ (n)* / / (o)* / / / (p)* §%
+ / / / (q)* / / §%
+}
+
+\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,%
+ couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa}
+\end{codetex}
+
+\begin{codesortie}
+\def\grilleSuMa{%
+ (a)* / (b)* / / / (c)* / (d)* §%
+ (e)* / / / (f)* / (g)* / (h)* §%
+ / / (i)* / / / (j)* §%
+ / / (k)* / / (l)* / (m)* §%
+ (n)* / / (o)* / / / (p)* §%
+ / / / (q)* / / §%
+}
+
+\PLsudomaths[unite=0.75cm,nbcol=6,nbsubcol=2,nblig=6,nbsublig=3,police=\small\bfseries\ttfamily,couleurtexte=red,couleurcase=yellow!50,legendes=false]{\grilleSuMa}
+\end{codesortie}
+
+\pagebreak
+
+\begin{codeinfo}
+La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0\,;\,0)$ et $(\text{nbcol}\,;\,-\text{nblig})$, de sorte que les labels des cases sont situés au nœuds de coordonnées $(x,5\,;\,-y,5)$.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%grille classique avec coloration de cases et commande tikz
+%graduations rajoutées pour la lecture des coordonnées
+\def\grilleSuMaB{%
+ */////4///§%
+ /*///3////§%
+ //*//////§%
+ ///*/////§%
+ ////*////§%
+ /////*///§%
+ //5*/////*/§%
+ /////B///*§%
+ *///9////Q/§%
+}
+
+\begin{PLenvsudomaths}[%
+ unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,%
+ listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB}
+ \draw[red,very thick,<-] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté...} ;
+\end{PLenvsudomaths}
+\end{codetex}
+
+\begin{codesortie}
+\def\grilleSuMaB{%
+ */////4///§%
+ /*///3////§%
+ //*//////§%
+ ///*/////§%
+ ////*////§%
+ /////*///§%
+ //5*/////*/§%
+ /////B///*§%
+ *///9////Q/§%
+}
+
+\begin{PLenvsudomaths}[%
+ unite=0.66cm,police=\footnotesize\bfseries\ttfamily,couleurcase=ForestGreen!50,%
+ listelegv=QSDFGHJKL,listelegh=poiuytrez]{\grilleSuMaB}
+ \draw[red,very thick,<-] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté pour montrer la case \textsf{Ge}} ;
+ \foreach \x in {0,1,...,9} \draw[lightgray] (\x,-9) node[below,font=\scriptsize\ttfamily] {\x} ;
+ \foreach \y in {-1,-2,...,-9} \draw[lightgray] (9,\y) node[right,font=\scriptsize\ttfamily] {\y} ;
+ \draw[lightgray] (9,0) node[right,font=\scriptsize\ttfamily] {~0} ;
+\end{PLenvsudomaths}
+\end{codesortie}
+
+\newpage
+
\section{Historique}
+{\small \bverb|v1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths})
+
{\small \bverb|v1.2.5|~:~~~~Ajout de commandes pour des boîtes à moustaches (page \pageref{boiteamoustaches})
{\small \bverb|v1.2.4|~:~~~~Correction de quelques bugs mineurs, et mise à jour de la doc
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 56dda985a4..7fdd37b256 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/09/03 v1.2.5 - Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2022/09/22 v1.2.6 - Aide pour l'utilisation de LaTeX en lycee]
+% 1.2.6 Ajout d'un environnement tikz pour des sudomaths personnalisés
% 1.2.5 Ajout d'une commande pour des boites à moustaches, en tikz
% 1.2.4 Correction de quelques bugs mineurs, et mise à jour de la doc
% 1.2.3 Ajout d'un environnement simplifié pour du code python
@@ -2011,7 +2012,7 @@
\def\BaMaxexmax{\fpeval{\BaMAxeMax+\BaMAxeElarg*\BaMaxelargeur}}
\draw[\BaMAxeEpaisseur,->] (\BaMaxexmin,0) -- (\BaMaxexmax,0) ;
\ifboolKV[boiteamoustachesaxe]{affvaleurs}
- {\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\x} ;}
+ {\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\num{\x}} ;}
{}
}
@@ -2051,4 +2052,131 @@
{}
}
+%================SUDOMATHS============= OK !!
+\defKV[PLTIKZSUDOM]{%
+ couleurtexte=\def\PLSMcoultexte{#1},%
+ epaisseur=\def\PLSMepf{#1},%
+ epaisseurg=\def\PLSMepg{#1},%
+ unite=\def\PLSMunite{#1},%
+ couleurcase=\def\PLSMcoulcase{#1},%
+ nbcol=\def\PLSMnbcol{#1},%
+ nbsubcol=\def\PLSMnbsubcol{#1},%
+ nblig=\def\PLSMnblig{#1},%
+ nbsublig=\def\PLSMnbsublig{#1},%
+ police=\def\PLSMfonte{#1},%
+ policeleg=\def\PLSMfonteleg{#1},%
+ listelegv=\def\PLSMlistelegv{#1},%
+ listelegh=\def\PLSMlistelegh{#1},%
+ decallegende=\def\PLSMdecalleg{#1}
+}
+
+\setKVdefault[PLTIKZSUDOM]{%
+ epaisseurg=1.5pt,%
+ epaisseur=0.5pt,%
+ unite=1cm,%
+ couleurcase=LightBlue!50,%
+ couleurtexte=blue,%
+ nbcol=9,%
+ nbsubcol=3,%
+ nblig=9,%
+ nbsublig=3,
+ police=\normalfont\normalsize,%
+ policeleg=\normalfont\sffamily,%
+ legendes=true,%
+ listelegv=ABCDEFGHIJKLMNOPQRSTUVWXYZ,%
+ listelegh=abcdefghijklmnopqrstuvwxyz,%
+ decallegende=0.45
+}
+
+\NewDocumentEnvironment{PLenvsudomaths}{ O{} m }
+ {
+ \useKVdefault[PLTIKZSUDOM]
+ \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %calculs intermédiaires
+ \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}}
+ \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}}
+ %lecture liste
+ \IfEq{#2}{}{}%
+ {%
+ \setsepchar[.]{§./}%
+ \readlist*\SPGrilleSudoMaths{#2}%
+ }
+ %débt envtik
+ \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter]
+ %cases
+ \IfEq{#2}{}{}%
+ {%
+ \foreach \i in {1,2,...,\PLSMnblig}{%
+ \foreach \j in {1,2,...,\PLSMnbcol}{%
+ \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase
+ \IfSubStr{\SMcase}{*}%si on veut colorier via *
+ {%
+ \StrDel{\SMcase}{*}[\SMcaseb]%
+ \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;%
+ }
+ {%
+ \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;%
+ }
+ }
+ }%
+ }
+ %grilles
+ \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ;
+ \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ;
+ \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ;
+ %légendes
+ \ifboolKV[PLTIKZSUDOM]{legendes}
+ {%
+ \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;}
+ \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;}
+ }{}
+ }
+ {
+ \end{tikzpicture}
+ }
+
+\NewDocumentCommand\PLsudomaths{ O{} m }{%
+ \useKVdefault[PLTIKZSUDOM]
+ \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %calculs intermédiaires
+ \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}}
+ \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}}
+ %lecture liste
+ \IfEq{#2}{}{}%
+ {%
+ \setsepchar[.]{§./}%
+ \readlist*\SPGrilleSudoMaths{#2}%
+ }
+ %débt envtik
+ \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter]
+ %cases
+ \IfEq{#2}{}{}%
+ {%
+ \foreach \i in {1,2,...,\PLSMnblig}{%
+ \foreach \j in {1,2,...,\PLSMnbcol}{%
+ \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase
+ \IfSubStr{\SMcase}{*}%si on veut colorier via *
+ {%
+ \StrDel{\SMcase}{*}[\SMcaseb]%
+ \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;%
+ }
+ {%
+ \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;%
+ }
+ }
+ }%
+ }
+ %grilles
+ \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ;
+ \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ;
+ \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ;
+ %légendes
+ \ifboolKV[PLTIKZSUDOM]{legendes}
+ {%
+ \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;}
+ \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;}
+ }{}
+ \end{tikzpicture}
+}
+
\endinput \ No newline at end of file