texlive[64202] Master/texmf-dist: profcollege (26aug22)

commits+karl at tug.org commits+karl at tug.org
Fri Aug 26 21:58:15 CEST 2022


Revision: 64202
          http://tug.org/svn/texlive?view=revision&revision=64202
Author:   karl
Date:     2022-08-26 21:58:15 +0200 (Fri, 26 Aug 2022)
Log Message:
-----------
profcollege (26aug22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
    trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip
    trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty

Modified: trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty	2022-08-26 19:57:46 UTC (rev 64201)
+++ trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty	2022-08-26 19:58:15 UTC (rev 64202)
@@ -2,9 +2,9 @@
 % licence    : Released under the LaTeX Project Public License v1.3c
 % or later, see http://www.latex-project.org/lppl.txtf
 \NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2022/08/17}%
+\def\filedate{2022/08/25}%
 \let\PfCfiledate\filedate%
-\def\fileversion{0.99-v}%
+\def\fileversion{0.99-w}%
 \let\PfCfileversion\fileversion%
 \ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]
 
@@ -347,6 +347,140 @@
 }
 
 %%%
+% Kakuro
+%%%
+\setKVdefault[Kakuro]{CouleurCase=LightGray,Taille=5,Solution=false,Largeur=2em,Aide=false,CouleurSolution=Black}
+\defKV[Kakuro]{ListeNombres=\setKV[Kakuro]{Aide}}%
+
+\newlength\PfCKakuro%
+
+\NewDocumentCommand\Kakuro{o m}{%
+  \useKVdefault[Kakuro]%
+  \setKV[Kakuro]{#1}%
+  \setlength{\PfCKakuro}{\useKV[Kakuro]{Largeur}+\tabcolsep}%
+  \setsepchar[*]{,*/}%
+  \readlist*\ListeCasesKK{#2}%
+  \setsepchar{,}%
+  \xdef\ListeAvantNombres{\useKV[Kakuro]{ListeNombres}}%
+  \readlist*\ListeKakuroNombres{\ListeAvantNombres}%
+  \savecomparemode%
+  \comparestrict%
+  \begin{NiceTabular}{*{\useKV[Kakuro]{Taille}}{m{\useKV[Kakuro]{Largeur}}}}[hvlines]
+    \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[Kakuro]{Taille}-1}}}\do{%
+      \xintFor* ##2 in {\xintSeq{1}{\useKV[Kakuro]{Taille}}}\do{%
+        \rule{0pt}{\PfCKakuro}%
+        \StrCompare{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}{*}[\PfCTestBlack]
+        \xintifboolexpr{\PfCTestBlack==0}{%
+          \Block[fill=black]{1-1}{}%
+        }{%
+          \xintifboolexpr{\listlen\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2}]==2}{
+            \Block[fill=\useKV[Kakuro]{CouleurCase}]{1-1}{\diagbox{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},2]}}%
+          }{%
+            \Block{1-1}{\ifboolKV[Kakuro]{Solution}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}}{%
+                \ifboolKV[Kakuro]{Aide}{%
+                  \xintFor* ##3 in{\xintSeq{1}{\ListeKakuroNombreslen}}\do{%
+                    \Block{1-1}{\xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]==\ListeKakuroNombres[##3]}{\Large\color{\useKV[Kakuro]{CouleurSolution}}\num{\ListeCasesKK[\fpeval{\useKV[Kakuro]{Taille}*##1+##2},1]}}{}}%
+                  }%
+                }{}%
+              }%
+            }%
+          }%
+        }%
+        \xintifForLast{\\}{&}%
+      }%
+    }%
+  \end{NiceTabular}
+  \restorecomparemode%
+}%
+
+%%%
+% KenKen
+%%%
+\setKVdefault[ClesKK]{Solution=false,Taille=3,Largeur=2em,Aide=false}%
+\defKV[ClesKK]{Nombre=\setKV[ClesKK]{Aide}}%
+
+\newlength\PfCKenKen
+
+\NewDocumentCommand\KenKen{o m}{%
+  \useKVdefault[ClesKK]%
+  \setKV[ClesKK]{#1}%
+  \setlength{\PfCKenKen}{\useKV[ClesKK]{Largeur}+\tabcolsep}%
+  \setsepchar[*]{,*/}%
+  \readlist*\ListeCasesKK{#2}%
+  \savecomparemode%
+  \comparestrict%
+  \begin{NiceTabular}{*{\useKV[ClesKK]{Taille}}{m{\useKV[ClesKK]{Largeur}}}}%
+    \CodeBefore
+    \xintFor* ##1 in {\xintSeq{2}{\fpeval{\useKV[ClesKK]{Taille}}}}\do{%
+      \tikz\draw[gray] (##1-|1) -- (##1-|last);%
+      \tikz\draw[gray] (1-|##1) -- (last-|##1);%
+    }%
+    \Body
+    \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[ClesKK]{Taille}-1}}}\do{%
+      \xintFor* ##2 in {\xintSeq{1}{\useKV[ClesKK]{Taille}}}\do{%
+        \rule{0pt}{\PfCKenKen}%
+        \StrCompare{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},1]}{b}[\PfCTestb]%\PfCTestb
+        \StrCompare{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},1]}{l}[\PfCTestl]%\PfCTestr
+        \StrCompare{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},1]}{lb}[\PfCTestlb]%\PfCTestbr
+        \xintifboolexpr{\PfCTestb==0}{%
+          \Block[borders={bottom},line-width=2pt]{1-1}{%
+            \ifboolKV[ClesKK]{Solution}{%
+              \Large\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]%
+            }{%
+              \ifboolKV[ClesKK]{Aide}{%
+                \xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]==\useKV[ClesKK]{Nombre}}{%
+                  \cellcolor{LightGray}\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]%
+                }{}%
+              }{}%
+            }%
+          }%
+        }{%
+          \xintifboolexpr{\PfCTestl==0}{%
+            \Block[borders={left},line-width=2pt]{1-1}{\ifboolKV[ClesKK]{Solution}{\Large\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]}{%
+                \ifboolKV[ClesKK]{Aide}{%
+                  \xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]==\useKV[ClesKK]{Nombre}}{%
+                    \cellcolor{LightGray}\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]%
+                  }{}%
+                }{}%
+              }%
+            }%
+          }{%
+            \xintifboolexpr{\PfCTestlb==0}{%
+              \Block[borders={bottom,left},line-width=2pt]{1-1}{\ifboolKV[ClesKK]{Solution}{\Large\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]}{%
+                  \ifboolKV[ClesKK]{Aide}{%
+                    \xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]==\useKV[ClesKK]{Nombre}}{%
+                      \cellcolor{LightGray}\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]%
+                    }{}%
+                  }{}%
+                }%
+              }%
+            }{%
+              \Block{1-1}{\ifboolKV[ClesKK]{Solution}{\Large\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]}{%
+                  \ifboolKV[ClesKK]{Aide}{%
+                    \xintifboolexpr{\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]==\useKV[ClesKK]{Nombre}}{%
+                      \cellcolor{LightGray}\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*##1+##2},3]%
+                    }{}%
+                  }{}%
+                }%
+              }%
+            }%
+          }%
+        }%
+        \xintifForLast{\\}{&}%
+      }%
+    }%
+    \CodeAfter%
+    \tikz\draw[line width=2pt] (1-|1) rectangle (last-|last);%
+    \xintFor* ##1 in {\xintSeq{1}{\fpeval{\useKV[ClesKK]{Taille}}}}\do{%
+      \xintFor* ##2 in {\xintSeq{1}{\useKV[ClesKK]{Taille}}}\do{%
+        \tikz\node[anchor=west,inner sep=0pt,xshift=1mm,yshift=-0.2\PfCKenKen] at (##1 -|##2) {\scriptsize$\ListeCasesKK[\fpeval{\useKV[ClesKK]{Taille}*(##1-1)+##2},2]$};%
+      }%
+    }%
+  \end{NiceTabular}
+  \restorecomparemode%
+}%
+
+%%%
 % PixelArt
 %%%
 \newtoks\toklistePANombre%
@@ -517,11 +651,11 @@
   }%
   % 
   \ifboolKV[Yohaku]{Perso}{%
-    \setsepchar[*]{,*/}%
+    \setsepchar[*]{,*/}\ignoreemptyitems%
     \readlist*\PfCYHKListe{#2}%
     \setsepchar{,}%
     \xdef\PfCYHKListeFoo{}%
-    \foreachitem\compteur\in\PfCYHKListe[1]{
+    \foreachitem\compteur\in\PfCYHKListe[1]{%
       \xdef\PfCYHKListeFoo{\PfCYHKListeFoo \PfCYHKListe[1,\compteurcnt],}%
     }%
     \ignoreemptyitems\readlist*\PfCYHKListeNA{\PfCYHKListeFoo}%
@@ -546,7 +680,7 @@
     }%
     % \xintifboolexpr{\useKV[Yohaku]{Taille}==2}{\MelangeListe{\PfCYHKListe}{4}}{\MelangeListe{\PfCYHKListe}{9}}%
     \MelangeListe{\PfCYHKListe}{\fpeval{\useKV[Yohaku]{Taille}**2}}%
-    \readlist*\PfCYHKListeNA{\faa}%
+    \ignoreemptyitems\readlist*\PfCYHKListeNA{\faa}%
     %Sommes/Produits
     \xdef\PfCYHKListeProduit{}
     %verticaux
@@ -561,7 +695,7 @@
         \xintFor* ##1 in {\xintSeq{0}{\fpeval{\useKV[Yohaku]{Taille}-1}}}\do{%
           \xdef\PfCYHKTampon{\fpeval{\PfCYHKTampon+\PfCYHKListeNA[\fpeval{##2+##1*\useKV[Yohaku]{Taille}}]}}
         }%
-      }
+      }%
       \xdef\PfCYHKListeProduit{\PfCYHKListeProduit,\PfCYHKTampon}%
     }%
     % horizontaux
@@ -2300,17 +2434,20 @@
 
 \newcommand\ListePersonnages[1]{%
   \setsepchar{§}%
-  \readlist*\RetiensListePersonnages{#1}
+  \readlist*\RetiensListePersonnages{#1}%
+  \setsepchar{,}%
 }
 
 \newcommand\ListeObjets[1]{%
   \setsepchar{§}%
-  \readlist*\RetiensListeObjets{#1}
+  \readlist*\RetiensListeObjets{#1}%
+  \setsepchar{,}%
 }
 
 \newcommand\ListeLieux[1]{%
   \setsepchar{§}%
-  \readlist*\RetiensListeLieux{#1}
+  \readlist*\RetiensListeLieux{#1}%
+  \setsepchar{,}%
 }
 
 \newcommand\MelangeListe[2]{%
@@ -2337,6 +2474,7 @@
     }%
     \readlist*\ListeInter{\fii}%
   }%
+  \reademptyitems%
 }%
 
 \newcommand\ListeQuestions[1]{%
@@ -2379,7 +2517,8 @@
   \ignoreemptyitems\setsepchar{,}%
   \MelangeListe{\fuu}{\fpeval{\RetiensListePersonnageslen+\RetiensListeObjetslen+\RetiensListeLieuxlen-3}}%
   \readlist*\ListeMelangeeQuestions{\faa}%
-}
+  \reademptyitems%
+}%
 
 \newcommand\AffichageQuestions{%
   \begin{enumerate}
@@ -3693,6 +3832,10 @@
     fill Case[Nbeb] withcolor CaseCouleur;
     trace Case[Nbeb];
     label(TEX(substring(1,length p_) of p_),B[Nbeb]);
+    elseif (substring(0,1) of p_)="!":
+    drawoptions(withcolor \useKV[ClesPyramide]{CouleurNombre});
+    label(TEX(substring(1,length p_) of p_),B[Nbeb]);
+    drawoptions();
     else:
     label(TEX(p_),B[Nbeb]);
     fi;
@@ -3699,7 +3842,7 @@
     endfor;
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={nbetages:=\useKV[ClesPyramide]{Etages};largeur:=\useKV[ClesPyramide]{Largeur};hauteur:=\useKV[ClesPyramide]{Hauteur};boolean Vide;Vide=\useKV[ClesPyramide]{Vide};boolean Inverse;Inverse=\useKV[ClesPyramide]{Inverse};color CaseCouleur; CaseCouleur:=\useKV[ClesPyramide]{Couleur};boolean Double;Double=\useKV[ClesPyramide]{Double};}]
+  \begin{mpost}[mpsettings={nbetages:=\useKV[ClesPyramide]{Etages};largeur:=\useKV[ClesPyramide]{Largeur};hauteur:=\useKV[ClesPyramide]{Hauteur};boolean Vide;Vide=\useKV[ClesPyramide]{Vide};boolean Inverse;Inverse=\useKV[ClesPyramide]{Inverse};color CaseCouleur; CaseCouleur:=\useKV[ClesPyramide]{Couleur};boolean Double;Double=\useKV[ClesPyramide]{Double}; color CouleurNombre;CouleurNombre=\useKV[ClesPyramide]{CouleurNombre};}]
     pair A[][],B[];
     path Case[];
     Nbeb:=0;
@@ -3747,6 +3890,10 @@
     fill Case[Nbeb] withcolor CaseCouleur;
     trace Case[Nbeb];
     label(LATEX(substring(1,length p_) of p_),B[Nbeb]);
+    elseif (substring(0,1) of p_)="!":
+    drawoptions(withcolor CouleurNombre);
+    label(LATEX(substring(1,length p_) of p_),B[Nbeb]);
+    drawoptions();
     else:
     label(LATEX(p_),B[Nbeb]);
     fi;
@@ -3753,15 +3900,15 @@
     endfor;
   \end{mpost}
   \fi
-}
+}%
 
-\setKVdefault[ClesPyramide]{Etages=5,Largeur=2cm,Hauteur=1cm,Vide=false,Inverse=false,Double=false,Couleur=Crimson,Multiplication=false,Produit=false,Solution=false,Aide=false,Cote=4cm}%
+\setKVdefault[ClesPyramide]{Etages=5,Largeur=2cm,Hauteur=1cm,Vide=false,Inverse=false,Double=false,Couleur=Crimson,Multiplication=false,CouleurNombre=blue,Produit=false,Solution=false,Aide=false,Cote=4cm}%
 
 \newtoks\toklistecaseP%
 \def\UpdatetoksPyramide#1\nil{\addtotok\toklistecaseP{"#1",}}%
 \def\UpdatetoksPyramideMul#1\nil{\addtotok\toklistecaseP{#1,}}%
 
-\DeclareDocumentCommand\PyramideNombre{o m}{%
+\NewDocumentCommand\PyramideNombre{o m}{%
   \useKVdefault[ClesPyramide]%
   \setKV[ClesPyramide]{#1}%
   \ifboolKV[ClesPyramide]{Multiplication}{%
@@ -4604,26 +4751,26 @@
 %%%
 % Labyrinthe Nombre
 %%%
-\setKVdefault[ClesLabyNombre]{Multiple=5,XDepart=0,YDepart=0,Longueur=7,Largeur=4,XArrivee=6,YArrivee=3,Solution=false,Echelle=1,Angle=0,Couleur=red,Murs=false,Nom=Ex1}
+\setKVdefault[ClesLabyNb]{Multiple=5,XDepart=0,YDepart=0,Longueur=7,Largeur=4,XArrivee=6,YArrivee=3,Solution=false,Echelle=1,Angle=0,Couleur=red,Murs=false,Nom=Ex1,CouleurChemin=blue}
 
 \newcommand\LabyNombre[1][]{%
-  \useKVdefault[ClesLabyNombre]%
-  \setKV[ClesLabyNombre]{#1}%
-  \ifboolKV[ClesLabyNombre]{Solution}{%
-    \TraceSolution{\useKV[ClesLabyNombre]{Multiple}}{\useKV[ClesLabyNombre]{Longueur}}{\useKV[ClesLabyNombre]{Largeur}}{(\useKV[ClesLabyNombre]{YDepart},\useKV[ClesLabyNombre]{XDepart})}{(\useKV[ClesLabyNombre]{YArrivee},\useKV[ClesLabyNombre]{XArrivee})}{\useKV[ClesLabyNombre]{Solution}}
+  \useKVdefault[ClesLabyNb]%
+  \setKV[ClesLabyNb]{#1}%
+  \ifboolKV[ClesLabyNb]{Solution}{%
+    \TraceSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}
   }{%
-    \TraceLabyNombre{\useKV[ClesLabyNombre]{Multiple}}{\useKV[ClesLabyNombre]{Longueur}}{\useKV[ClesLabyNombre]{Largeur}}{(\useKV[ClesLabyNombre]{YDepart},\useKV[ClesLabyNombre]{XDepart})}{(\useKV[ClesLabyNombre]{YArrivee},\useKV[ClesLabyNombre]{XArrivee})}{\useKV[ClesLabyNombre]{Solution}}
+    \TraceLabyNombre{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}
   }%
 }
 
 \newcommand\TraceLabyNombre[6]{%
   \mplibforcehmode%
-  \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNombre]{Nom}}%
+  \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
   \begin{mplibcode}[\PfCNomLabyrinthe]
     input PfCLabyNombre;
 
     boolean Murs;
-    Murs=\useKV[ClesLabyNombre]{Murs};
+    Murs=\useKV[ClesLabyNb]{Murs};
     
     numeric Multiple;
     Multiple=#1;
@@ -4686,8 +4833,8 @@
           label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
         endfor;
       endfor;
-      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNombre]{Couleur};
-      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNombre]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
       for k=2 upto indiceChemin-1:
         remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
         label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
@@ -4694,7 +4841,7 @@
       endfor;
       trace TraceLabyrinthe;
     );
-    Corps:=(Corps scaled \useKV[ClesLabyNombre]{Echelle}) rotated \useKV[ClesLabyNombre]{Angle};
+    Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
     trace Corps;
   \end{mplibcode}
 }
@@ -4701,8 +4848,7 @@
 
 \newcommand\TraceSolution[6]{%
   \mplibforcehmode%
-  % \mplibcodeinherit{enable}
-  \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNombre]{Nom}}%
+  \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
   \begin{mplibcode}[\PfCNomLabyrinthe]
     picture CorpsSolution;
     CorpsSolution=image(
@@ -4713,18 +4859,17 @@
           label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
         endfor;
       endfor;
-      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNombre]{Couleur};
-      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNombre]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
       for k=2 upto indiceChemin-1:
-        remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor 0.5white;
+        remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor \useKV[ClesLabyNb]{CouleurChemin};
         label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
       endfor;
       trace TraceLabyrinthe;
       );
-      CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNombre]{Echelle}) rotated \useKV[ClesLabyNombre]{Angle};
+      CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
       trace CorpsSolution;
   \end{mplibcode}
-  %\mplibcodeinherit{disable}
 }%
 
 \newcommand\TraceLabyNombreold[6]{%
@@ -4733,7 +4878,7 @@
     input PfCLabyNombre;
 
     boolean Murs;
-    Murs=\useKV[ClesLabyNombre]{Murs};
+    Murs=\useKV[ClesLabyNb]{Murs};
     
     numeric Multiple;
     Multiple=#1;
@@ -4796,8 +4941,8 @@
           label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
         endfor;
       endfor;
-      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNombre]{Couleur};
-      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNombre]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
       for k=2 upto indiceChemin-1:
         remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor white;
         label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
@@ -4804,7 +4949,7 @@
       endfor;
       trace TraceLabyrinthe;
     );
-    Corps:=(Corps scaled \useKV[ClesLabyNombre]{Echelle}) rotated \useKV[ClesLabyNombre]{Angle};
+    Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
     trace Corps;
   \end{mplibcode}
 }
@@ -4822,8 +4967,8 @@
           label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
         endfor;
       endfor;
-      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNombre]{Couleur};
-      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNombre]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+      remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
       for k=2 upto indiceChemin-1:
         remplis ((unitsquare scaled 10mm) shifted N[xpart(PileChemin[k])][ypart(PileChemin[k])]) withcolor 0.5white;
         label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
@@ -4830,7 +4975,7 @@
       endfor;
       trace TraceLabyrinthe;
       );
-      CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNombre]{Echelle}) rotated \useKV[ClesLabyNombre]{Angle};
+      CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
       trace CorpsSolution;
   \end{mplibcode}
   \mplibcodeinherit{disable}
@@ -9112,7 +9257,7 @@
       \xintifboolexpr{#2==0}{%
       }{\xintifboolexpr{#3==0}{}{(}}\xintifboolexpr{#2==0}{\Tikzmark{}}{\Tikzmark{a}}
       \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
-      \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{b}%
+      \xintifboolexpr{#3==0}{\Tikzmark{}}{\xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{b}}%
       \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
       \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
       % 
@@ -10670,7 +10815,7 @@
   \ppcm=\numexpr#1*#2/\pgcd\relax%
 }%
 
-\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,FigureSeule=false,Figurecroisee=false,FigurecroiseeSeule=false,Angle=0,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false,Echelle=1cm,Perso=false,CalculsPerso=false}
+\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,FigureSeule=false,Figurecroisee=false,FigurecroiseeSeule=false,Angle=0,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false,Echelle=1cm,Perso=false,CalculsPerso=false,IntroCalculs}
 
 \DeclareSIUnit{\PfCThalesUnit}{\useKV[ClesThales]{Unite}}%
 
@@ -11242,12 +11387,12 @@
       }}{}
   }%  
   %%
-\StrMid{\the\zzz}{1}{1}[\cmza]%
-\StrMid{\the\yyy}{1}{1}[\cmya]%
-\StrMid{\the\xxx}{1}{1}[\cmxa]%
-\ifboolKV[ClesThales]{Calcul}{%
+  \StrMid{\the\zzz}{1}{1}[\cmza]%
+  \StrMid{\the\yyy}{1}{1}[\cmya]%
+  \StrMid{\the\xxx}{1}{1}[\cmxa]%
+  \ifboolKV[ClesThales]{Calcul}{%
   %%%%%%%%%%%%%%%%%%%%%%%%%%%
-  On remplace par les longueurs connues :%
+  \ifboolKV[ClesThales]{IntroCalculs}{On remplace par les longueurs connues :}{}%
   \ifboolKV[ClesThales]{CalculsPerso}{%
     \EcritureQuotients%
   }{%
@@ -16578,7 +16723,7 @@
 %%%
 % Diff\'erentes représentations graphiques
 %%%
-\setKVdefault[TraceG]{Grille=false,Graduations=false,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Relie=false,RelieSegment=false}
+\setKVdefault[TraceG]{Grille=false,Graduations=false,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Relie=false,RelieSegment=false,Marque=dot}
 
 \newcommand\TraceGraphique[2][]{%
   \useKVdefault[TraceG]%
@@ -16611,6 +16756,9 @@
     grilley=\useKV[TraceG]{PasGrilleY};
     pos=\useKV[TraceG]{LabelC};
 
+    marque_p:=str \useKV[TraceG]{Marque};
+    m_c:=m_c*2;
+    
     color colorpoint,colortrace;
     colorpoint=\useKV[TraceG]{CouleurPoint};
     colortrace=\useKV[TraceG]{CouleurTrace};
@@ -16687,7 +16835,11 @@
     if Invisible=false:
     drawoptions(withcolor colorpoint);
     for p_=#2:
+    if marque_p="dot":
     dotlabel("",(x.u*(xpart(p_)-xmin),y.u*(ypart(p_)-ymin)));
+    elseif marque_p="croix":
+    pointe((x.u*(xpart(p_)-xmin),y.u*(ypart(p_)-ymin)));
+    fi;
     endfor;
     drawoptions();
     fi;
@@ -16989,12 +17141,13 @@
 %%%
 % Formules
 %%%
-\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carr\'e,Solide=pav\'e,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white,EchelleEspace=70}
+\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carr\'e,Solide=pav\'e,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white,EchelleEspace=70,Echelle=1cm}
 
 \def\MPFigureCarre{%
   \ifluatex
-   \mplibforcehmode
+  \mplibforcehmode
   \begin{mplibcode}
+    u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     pair A,B,C,D;
     A=u*(1,1);
@@ -17012,7 +17165,7 @@
     draw appelation(A,B,-3mm,btex $c$ etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     pair A,B,C,D;
     A=u*(1,1);
     B-A=u*(2,0);
@@ -17033,8 +17186,9 @@
 
 \def\MPFigurePolygone{%
   \ifluatex
-   \mplibforcehmode
+  \mplibforcehmode
   \begin{mplibcode}
+    u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     pair A,B,C,D,E,F;
     A=u*(1,1);
@@ -17046,7 +17200,7 @@
     draw polygone(A,B,C,D,E,F);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     pair A,B,C,D,E,F;
     A=u*(1,1);
     B-A=u*(2,0);
@@ -17061,9 +17215,10 @@
 
 \def\MPFigureParallelogramme{%
   \ifluatex
-   \mplibforcehmode
-   \begin{mplibcode}
-       vardef marque_para(expr dd,ee,pa)=
+  \mplibforcehmode
+  \begin{mplibcode}
+    u:=\useKV[ClesFormule]{Echelle};
+    vardef marque_para(expr dd,ee,pa)=
   save im;
   picture im;
   pair kk,ll,mn,mo;
@@ -17097,7 +17252,7 @@
     drawoptions();
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     vardef marque_para(expr dd,ee,pa)=
   save im;
   picture im;
@@ -17137,6 +17292,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+    u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,10u,5u);
     pair A,B,C,D,I,J;
@@ -17161,7 +17317,7 @@
     draw codeperp(B,J,A,5);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,10u,5u);
     pair A,B,C,D,I,J;
     A=u*(1,1);
@@ -17212,10 +17368,10 @@
     marque_p:="non";
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     Figure(-10u,-10u,10u,10u);
-    Initialisation(5,0,10,500);
+    Initialisation(5,0,10,v);
     color O,A,B,C;
     O=(0,0,0);
     A-O=(0,1/2,0);
@@ -17254,7 +17410,7 @@
     draw appelation(A,F,2mm,btex $h$ etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     typerepre:="persp";
     Figure(-10u,-10u,10u,10u);
@@ -17319,7 +17475,7 @@
     draw appelation(A,E,3mm,btex hauteur etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     typerepre:="persp";
     Figure(-10u,-10u,10u,10u);
@@ -17399,7 +17555,7 @@
     marque_p:="non";
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     typerepre:="persp";
     Figure(-10u,-10u,10u,10u);
@@ -17459,7 +17615,7 @@
     marque_p:="non";
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     typerepre:="persp";
     Figure(-10u,-10u,10u,10u);
@@ -17512,7 +17668,7 @@
     draw codeperp(z7,z6,z5,8);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     Figure(-10u,-10u,10u,10u);
     u:=0.5cm;
     z0=(-0.5,0)*u;
@@ -17553,7 +17709,7 @@
     draw appelation(E,H,2mm,btex $a$ etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={v:=\useKV[ClesFormule]{EchelleEspace};}]
     typetrace:="3D";
     typerepre:="persp";
     Figure(-10u,-10u,10u,10u);
@@ -17570,6 +17726,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+    u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,5u,5u);
     pair A,B,C,D;
@@ -17584,7 +17741,7 @@
     draw appelation(A,B,-3mm,btex $c$ etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C,D;
     A=u*(1,1);
@@ -17604,6 +17761,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,5u,5u);
     pair A,B,C,D;
@@ -17619,7 +17777,7 @@
     marque_s:=marque_s*3;
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C,D;
     A=u*(1,1);
@@ -17640,6 +17798,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     pair A,B,C,D;
     A=u*(1,1);
@@ -17659,7 +17818,7 @@
     label.lft(btex $\ell$ etex,iso(A,D));
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     pair A,B,C,D;
     A=u*(1,1);
     B-A=u*(3,0);
@@ -17684,6 +17843,7 @@
     \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
@@ -17693,7 +17853,7 @@
     draw polygone(A,B,C);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
     A=u*(1,1);
@@ -17708,6 +17868,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
@@ -17723,7 +17884,7 @@
     draw appelation(B,C,3mm,btex diam\`etre etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
     A=u*(2.5,2.5);
@@ -17744,6 +17905,7 @@
   \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
@@ -17759,7 +17921,7 @@
     draw appelation(A,C,3mm,btex rayon $r$ etex);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C;
     A=u*(2.5,2.5);
@@ -17777,9 +17939,10 @@
 }
 
 \def\MPFigureTriangleAire{%
-    \ifluatex
+  \ifluatex
   \mplibforcehmode
   \begin{mplibcode}
+u:=\useKV[ClesFormule]{Echelle};
     drawoptions( dashed dashpattern(on1cm));
     pair A,B,C,H,I,J;
     A=u*(0.5,1);
@@ -17817,7 +17980,7 @@
     drawoptions();
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={input PfCGeometrie;}]
+  \begin{mpost}[mpsettings={u:=\useKV[ClesFormule]{Echelle};}]
     Figure(-5u,-5u,5u,5u);
     pair A,B,C,H,I,J;
     A=u*(0.5,1);
@@ -17855,7 +18018,7 @@
     drawoptions();
   \end{mpost}
   \fi
-}
+}%
 
 \newcommand\Formule[1][]{%
   \useKVdefault[ClesFormule]%
@@ -18297,7 +18460,7 @@
 %%%
 % Reperage
 %%%
-\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AnglePhi=30,CouleurLa=white,CouleurLon=Tomato,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black,Thermometre=false,Mercure=false,CouleurMercure=black,ValeurMin=-4000,ValeurMax=4000,Etages=4}
+\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AnglePhi=30,CouleurLa=white,CouleurLon=Tomato,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black,Thermometre=false,Mercure=false,CouleurMercure=black,Celsius,Kelvin=false,Farenheit=false,ValeurMin=-4000,ValeurMax=4000,Etages=4}
 % ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :)
 
 \def\Updatetoksdroite#1/#2\nil{\addtotok\toklistepointdroite{#1,"#2",}}
@@ -19816,24 +19979,46 @@
     n:=0;
     for p_=t:
     n:=n+1;
+    if substring(1,2) of p_="*":
+    label.top(TEX(substring(2,length p_) of p_),unitp*(valeur[n],0));
+    else:
     label.top(TEX(p_),unitp*(valeur[n],0));
+    fi;
+    if p_<>"":
     pointe(unitp*(valeur[n],0));
+    fi;
     endfor;
     fi;
-    if AffichageCoord=3:
+    % On ajoute une paramétrisation possible à chaque point.
+    if AffichageCoord>0:
     n:=0;
     for p_=t:
     n:=n+1;
-    if p_<>"":
+    if substring(1,2) of p_="*":
+    ACoord:=scantokens(substring(0,1) of p_);
+    if ACoord=3:
     drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
     label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1)));
+    pointe(unitp*(valeur[n]-ValeurOrigine,0));
+    elseif ACoord=2:
+    if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+    label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
+    else:
+    label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+    fi;
     pointe(unitp*(valeur[n],0));
+    elseif ACoord=1:
+    label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+    pointe(unitp*(valeur[n],0));
     fi;
-    endfor;
+    else:
+    if AffichageCoord=3:
+    if p_<>"":
+    drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+    label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1)));
+    pointe(unitp*(valeur[n]-ValeurOrigine,0));
+    fi;
     elseif AffichageCoord=2:
-    n:=0;
-    for p_=t:
-    n:=n+1;
     if p_<>"":
     if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
     label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
@@ -19842,15 +20027,13 @@
     fi;
     pointe(unitp*(valeur[n],0));
     fi;
-    endfor;
     elseif AffichageCoord=1:
-    n:=0;
-    for p_=t:
-    n:=n+1;
     if p_<>"":
     label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
     pointe(unitp*(valeur[n],0));
     fi;
+    fi;
+    fi;
     endfor;
     fi;
     enddef;
@@ -19858,7 +20041,7 @@
     tata(#2);
   \end{mplibcode}
   \else
-  \begin{mpost}[mpsettings={unitex:=\useKV[ClesReperage]{Unitex}*cm; pasx:=\useKV[ClesReperage]{Pasx}; unitp:=unitex/pasx; ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex}; ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine}; AffichageGrad:=\AffichageGrad; AffichageCoord:=\useKV[ClesReperage]{AffichageAbs}; AffichageNom:=\AffichageNom;}]
+  \begin{mpost}[mpsettings={unitex:=\useKV[ClesReperage]{Unitex}*cm; pasx:=\useKV[ClesReperage]{Pasx}; unitp:=unitex/pasx; ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex}; ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine}; AffichageGrad:=\AffichageGrad; AffichageCoord:=\useKV[ClesReperage]{AffichageAbs}; AffichageNom:=\AffichageNom; ValeurMin=\useKV[ClesReperage]{ValeurMin}; ValeurMax=\useKV[ClesReperage]{ValeurMax};}]
     maxx:=0;
     minx:=4000;
     numeric valeur[];
@@ -19875,7 +20058,7 @@
     if valeur[k]>maxx:
     maxx:=valeur[k];
     fi;
-    if valeur[k]<maxx:
+    if valeur[k]<minx:
     minx:=valeur[k];
     fi;
     endfor;
@@ -19887,6 +20070,12 @@
     if minx>(-pasx-1):
     minx:=-2*pasx-1;
     fi;
+    if minx<ValeurMin:
+    minx:=ValeurMin;
+    fi;
+    if maxx>ValeurMax:
+    maxx:=ValeurMax;
+    fi;
     % -----
     pair A,B,C;
     A=(0,0);
@@ -19933,24 +20122,45 @@
     n:=0;
     for p_=t:
     n:=n+1;
+    if substring(1,2) of p_="*":
+    label.top(LATEX(substring(2,length p_) of p_),unitp*(valeur[n],0));
+    else:
     label.top(LATEX(p_),unitp*(valeur[n],0));
+    fi;
+    if p_<>"":
     pointe(unitp*(valeur[n],0));
+    fi;
     endfor;
     fi;
-    if AffichageCoord=3:
+    if AffichageCoord>0:
     n:=0;
     for p_=t:
     n:=n+1;
+    if substring(1,2) of p_="*":
+    ACoord:=scantokens(substring(0,1) of p_);
+    if ACoord=3:
+    drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+    label.bot(btex \noexpand\hbox to2em{\noexpand\dotfill} etex,(unitp*(valeur[n],-1)));
+    pointe(unitp*(valeur[n]-ValeurOrigine,0));
+    elseif ACoord=2:
+    if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+    label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
+    else:
+    label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+    fi;
+    pointe(unitp*(valeur[n],0));
+    elseif ACoord=1:
+    label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+    pointe(unitp*(valeur[n],0));
+    fi;
+    else:
+    if AffichageCoord=3:
     if p_<>"":
     drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
     label.bot(btex \noexpand\hbox to2em{\noexpand\dotfill} etex,(unitp*(valeur[n],-1)));
     pointe(unitp*(valeur[n]-ValeurOrigine,0));
     fi;
-    endfor;
     elseif AffichageCoord=2:
-    n:=0;
-    for p_=t:
-    n:=n+1;
     if p_<>"":
     if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
     label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
@@ -19957,19 +20167,17 @@
     else:
     label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
     fi;
-    pointe(unitp*(valeur[n]-ValeurOrigine,0));
+    pointe(unitp*(valeur[n],0));
     fi;
-    endfor;
     elseif AffichageCoord=1:
-    n:=0;
-    for p_=t:
-    n:=n+1;
     if p_<>"":
     label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
     pointe(unitp*(valeur[n],0));
     fi;
+    fi;
+    fi;
     endfor;
-    fi;
+    fi;    
     enddef;
     %%%
     tata(#2);
@@ -19993,6 +20201,9 @@
     AffichageGrad:=\AffichageGrad;
     AffichageCoord:=\useKV[ClesReperage]{AffichageAbs};
     AffichageNom:=\AffichageNom;
+    boolean Kelvin,Farenheit;
+    Kelvin=\useKV[ClesReperage]{Kelvin};
+    Farenheit=\useKV[ClesReperage]{Farenheit};
     color ColMercure;
     ColMercure:=\useKV[ClesReperage]{CouleurMercure};
     boolean Mercure;
@@ -20023,6 +20234,9 @@
     if minx>(-pasx-1):
     minx:=-2*pasx-1;
     fi;
+    if Kelvin:
+    minx:=0;
+    fi;
     % -----
     pair A,B,C;
     A=(0,0);
@@ -20029,9 +20243,10 @@
     B=unitp*(0,maxx);
     C=unitp*(0,minx);
     % On trace la demi-droite
-    draw (C+unitp*(0,-0.75))--(B+unitp*(0,0.75));
+    draw ((C+unitp*(0,-0.75))--(B+unitp*(0,0.75)));
     % marquage secondaire
     marque_s:=marque_s/3;
+    if pasx<11:
     labeloffset:=labeloffset*2;
     if ((maxx-minx) mod 2)=0:
       for k=(minx+1) step 2 until (maxx-1):
@@ -20043,6 +20258,7 @@
         draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
      endfor;
      fi;
+     fi;
     % marquage primaire
     marque_s:=marque_s*3;
     for k=0 step pasx until (maxx-pasx):
@@ -20055,13 +20271,27 @@
     m_c:=m_c*3;
     marque_p:="croix";
     labeloffset:=labeloffset*2;
+    if Kelvin:
+    label.lft(TEX("\footnotesize\Temp[K]{"&decimal(ValeurUnitex)&"}"),unitex*(0,1));
+    label.lft(TEX("\footnotesize\Temp[K]{"&decimal(ValeurOrigine)&"}"),A);
+    elseif Farenheit:
+    label.lft(TEX("\footnotesize\Temp[F]{"&decimal(ValeurUnitex)&"}"),unitex*(0,1));
+    label.lft(TEX("\footnotesize\Temp[F]{"&decimal(ValeurOrigine)&"}"),A);
+    else:
     label.lft(TEX("\footnotesize\Temp{"&decimal(ValeurUnitex)&"}"),unitex*(0,1));
     label.lft(TEX("\footnotesize\Temp{"&decimal(ValeurOrigine)&"}"),A);
+    fi;
     if AffichageGrad>0:
     for k=((minx+(minx mod pasx)) div pasx) upto (maxx div pasx):
     if (k<0) or (k>1):
+    if Kelvin:
+    label.lft(TEX("\footnotesize\Temp[K]{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}"),unitex*(0,k));%%%
+    elseif Farenheit:
+    label.lft(TEX("\footnotesize\Temp[F]{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}"),unitex*(0,k));%%%
+    else:
     label.lft(TEX("\footnotesize\Temp{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}"),unitex*(0,k));%%%
     fi;
+    fi;
     endfor;
     fi;
 
@@ -20127,7 +20357,13 @@
     for p_=t:
     n:=n+1;
     if p_<>"":
+    if Kelvin:
+    label.rt(TEX("\footnotesize\Temp[K]{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),(5mm,unitp*valeur[n]));
+    elseif Farenheit:
+    label.rt(TEX("\footnotesize\Temp[F]{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),(5mm,unitp*valeur[n]));
+    else:
     label.rt(TEX("\footnotesize\Temp{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),(5mm,unitp*valeur[n]));
+    fi;
     pointe(unitp*(0,valeur[n]));
     draw (unitp*(0,valeur[n]))--(7.5mm,unitp*valeur[n]) dashed evenly;
     fi;
@@ -20146,6 +20382,9 @@
     AffichageGrad:=\AffichageGrad;
     AffichageCoord:=\useKV[ClesReperage]{AffichageAbs};
     AffichageNom:=\AffichageNom;
+    boolean Kelvin,Farenheit;
+    Kelvin=\useKV[ClesReperage]{Kelvin};
+    Farenheit=\useKV[ClesReperage]{Farenheit};
     color ColMercure;
     ColMercure:=\useKV[ClesReperage]{CouleurMercure};
     boolean Mercure;
@@ -20178,6 +20417,9 @@
     if minx>(-pasx-1):
     minx:=-2*pasx-1;
     fi;
+    if Kelvin:
+    minx:=0;
+    fi;
     % -----
     pair A,B,C;
     A=(0,0);
@@ -20187,6 +20429,7 @@
     draw (C+unitp*(0,-0.75))--(B+unitp*(0,0.75));
     % marquage secondaire
     marque_s:=marque_s/3;
+    if pasx<11:
     labeloffset:=labeloffset*2;
     if ((maxx-minx) mod 2)=0:
       for k=(minx+1) step 2 until (maxx-1):
@@ -20197,7 +20440,8 @@
       for k=(minx) step 2 until (maxx-1):
         draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
      endfor;
-     fi;
+    fi;
+    fi;
     % marquage primaire
     marque_s:=marque_s*3;
     for k=0 step pasx until (maxx-pasx):
@@ -20210,13 +20454,27 @@
     m_c:=m_c*3;
     marque_p:="croix";
     labeloffset:=labeloffset*2;
+    if Kelvin:
+    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurUnitex)&"}{\kelvin}"),unitex*(0,1));
+    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurOrigine)&"}{\kelvin}"),A);
+    elseif Farenheit:
+    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurUnitex)&"}{\farenheit}"),unitex*(0,1));
+    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurOrigine)&"}{\farenheit}"),A);
+    else:
     label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurUnitex)&"}{\celsius}"),unitex*(0,1));
     label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{"&decimal(ValeurOrigine)&"}{\celsius}"),A);
+    fi;
     if AffichageGrad>0:
     for k=((minx+(minx mod pasx)) div pasx) upto (maxx div pasx):
     if (k<0) or (k>1):
-    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}{\celsius}"),unitex*(0,k));%%%
+    if Kelvin:
+    label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}{\kelvin}"),unitex*(0,k));%%%
+    elseif Farenheit:
+label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}{\farenheit}"),unitex*(0,k));%%%
+    else:
+label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(k)&"}}{\celsius}"),unitex*(0,k));%%%
     fi;
+    fi;
     endfor;
     fi;
 
@@ -20282,7 +20540,13 @@
     for p_=t:
     n:=n+1;
     if p_<>"":
+    if Kelvin:
+    label.rt(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}{\kelvin}"),(5mm,unitp*valeur[n]));
+    elseif Farenheit:
+    label.rt(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}{\farenheit}"),(5mm,unitp*valeur[n]));
+    else:
     label.rt(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}{\celsius}"),(5mm,unitp*valeur[n]));
+    fi;
     pointe(unitp*(0,valeur[n]));
     draw (unitp*(0,valeur[n]))--(7.5mm,unitp*valeur[n]) dashed evenly;
     fi;
@@ -20437,13 +20701,13 @@
       \xdef\Listedesvaleursaplacersurlademidroite{}%
       \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdemidroite\compteur\nil}%
       \foreachitem\compteur\in\ListePointDroite{\xdef\Listedesvaleursaplacersurlademidroite{\Listedesvaleursaplacersurlademidroite,\ListePointDroite[\compteurcnt,1]}}%
-      % \Listedesvaleursaplacersurlademidroite%
+      %\Listedesvaleursaplacersurlademidroite%
       \MPNewDEMIGraduee{\Listedesvaleursaplacersurlademidroite}{\the\toklistenompointdemidroite}%
     }{%
       \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdemidroite\compteur\nil}%
       \xdef\Listedesvaleursaplacersurlademidroite{}%
       \foreachitem\compteur\in\ListePointDroite{\xdef\Listedesvaleursaplacersurlademidroite{\Listedesvaleursaplacersurlademidroite,\ListePointDroite[\compteurcnt,1]}}%
-      % \Listedesvaleursaplacersurlademidroite%
+      %\Listedesvaleursaplacersurlademidroite%
       \MPNewDROITEGraduee{\Listedesvaleursaplacersurlademidroite}{\the\toklistenompointdemidroite}%
     }%
   }%
@@ -22124,7 +22388,7 @@
 }%
 
 \setKVdefault[Cards]{Largeur=59,Hauteur=89,HauteurTheme=15,Marge=4,Landscape=false,Couleur=Cornsilk,Theme=Th\'eor\`eme\\de
-  Pythagore,ThemeSol=Solution,Trame=false,Titre=false,NomTitre=Jeu 1,Loop,JaiQuia=false,BackgroundAv=false,BackgroundAr=false,ImageAv=4813762.jpg,ImageAr=4813762.jpg,AffichageSolution=true}%
+  Pythagore,ThemeSol=Solution,Trame=false,Titre=false,NomTitre=Jeu 1,Loop,JaiQuia=false,BackgroundAv=false,BackgroundAr=false,ImageAv=4813762.jpg,ImageAr=4813762.jpg,AffichageSolution=true,SolutionSeule=false}%
 
 \newcommand\Cartes[2][]{%
   \useKVdefault[Cards]%
@@ -22231,9 +22495,11 @@
           \clearpage%
         }{}%
       }{%
+        \ifboolKV[Cards]{SolutionSeule}{}{%
         \begin{MyboxSimpleAv}{\useKV[Cards]{Theme}}%
           \ListeCards[1,1]%
         \end{MyboxSimpleAv}%
+        }%
         \ifboolKV[Cards]{AffichageSolution}{%
           \begin{MyboxSimpleAr}{\useKV[Cards]{ThemeSol}}%
             \ListeCards[1,2]%



More information about the tex-live-commits mailing list.