summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/ProfCollege.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-11-03 03:05:14 +0000
committerNorbert Preining <norbert@preining.info>2022-11-03 03:05:14 +0000
commitc3c9975778ff2848e51f6debf733abe8ca930bd3 (patch)
tree034fcccacf40343842462b161df1764d3a7a41af /macros/latex/contrib/profcollege/latex/ProfCollege.sty
parent2281af8ba8fd52341e706f3979712f3280fcfdad (diff)
CTAN sync 202211030305
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/ProfCollege.sty')
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty1417
1 files changed, 869 insertions, 548 deletions
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index d45f25b5ce..e6cc0a8a68 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -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/10/12}%
+\def\filedate{2022/12/01}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-z-a}%
+\def\fileversion{0.99-z-b}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]
@@ -347,6 +347,351 @@
}
%%%
+% Vue Cubes
+%%%
+\setKVdefault[VueCubes]{Solution=false,Hauteur=5,Profondeur=4,Largeur=3,Angle=60,Nom=Ex1,Trou=false,Echelle=0.25,CouleurCube=LightSteelBlue,CouleurFleche=LightGray,Face=false,Creation=false,Grilles=false}
+
+\newtoks\toklisteVueCube%
+\def\UpdatetoksVueCube#1\nil{\addtotok\toklisteVueCube{#1,}}%
+
+\NewDocumentCommand\VueCubes{o m}{%
+ \useKVdefault[VueCubes]%
+ \setKV[VueCubes]{#1}
+ \ifboolKV[VueCubes]{Solution}{%
+ \BuildVueCubesSolution%
+ }{%
+ \ifboolKV[VueCubes]{Creation}{%Le nombre de données doit être compatible avec le "volume du pavé droit"
+ \ignoreemptyitems%
+ \readlist*\PfCListeHauteursCubes{#2}%
+ \reademptyitems%
+ \toklisteVueCube{}%
+ \foreachitem\compteur\in\PfCListeHauteursCubes{\expandafter\UpdatetoksVueCube\compteur\nil}%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{\the\toklisteVueCube}%
+ }{%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{}%
+ }%
+ }%
+}%
+
+\NewDocumentCommand\BuildVueCubes{m m}{%
+ \ifluatex
+ \mplibforcehmode
+ \xdef\PfCVueCubeNom{\useKV[VueCubes]{Nom}}%
+ \begin{mplibcode}[\PfCVueCubeNom]
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Profondeur:=\useKV[VueCubes]{Profondeur};
+ Largeur:=\useKV[VueCubes]{Largeur};
+ Hauteur:=\useKV[VueCubes]{Hauteur};
+ Phi:=#1;
+ Echelle:=\useKV[VueCubes]{Echelle};
+
+ color CouleurFleche;
+ CouleurFleche:=\useKV[VueCubes]{CouleurFleche};
+
+ boolean Trou,FaceVue,Creation,Grille;
+ Trou:=\useKV[VueCubes]{Trou};
+ FaceVue:=\useKV[VueCubes]{Face};
+ Creation:=\useKV[VueCubes]{Creation};
+ Grille:=\useKV[VueCubes]{Grilles};
+
+ TotalObj:=0;
+
+ vardef CreationSolide(text t)=
+ PfCnbcubes:=0;
+ for p_=t:
+ m:=(PfCnbcubes div Profondeur);
+ k:=(PfCnbcubes mod Profondeur);
+ hauteurtour[m+1][k+1]:=p_;
+ for l=1 upto hauteurtour[m+1][k+1]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*k,(m+1)*Echelle,Echelle*l-Echelle/2);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ PfCnbcubes:=incr PfCnbcubes;
+ endfor;
+ enddef;
+
+ Initialisation(2500,Phi,20,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ if Creation:
+ CreationSolide(#2);
+ else:
+ for k=1 upto Profondeur:%4 profondeur
+ hauteurtour[0][k]:=Hauteur;%5 hauteur totale
+ endfor;
+ for m=1 upto Largeur:%3 largeur
+ for k=1 upto Profondeur:%4 profondeur
+ if Trou:
+ if m>1:
+ hauteurtour[m][k]:=floor(uniformdeviate(hauteurtour[m-1][k]+1));%5 hauteur totale
+ else:
+ hauteurtour[m][k]:=1+floor(uniformdeviate(hauteurtour[m-1][k]));%5 hauteur totale
+ fi;
+ else:
+ hauteurtour[m][k]:=1+floor(uniformdeviate(hauteurtour[m-1][k]));%5 hauteur totale
+ fi;
+ for l=1 upto hauteurtour[m][k]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*(k-1),m*Echelle,Echelle*l-Echelle/2);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ endfor;
+ endfor;
+ fi;
+
+ % Pour la fleche
+ path Fleche;
+ color A[];
+ if FaceVue:
+ A0=Echelle*(1,Largeur/2,0);
+ A1-A0=0.25*(2,2,0);
+ A2-A1=0.25*(0,-1,0);
+ A3-A2=0.25*(2,0,0);
+ A4-A3=0.25*(0,-2,0);
+ A5-A4=A2-A3;
+ A6-A5=A2-A1;
+ Fleche=Projette(A0)--Projette(A1)--Projette(A2)--Projette(A3)--Projette(A4)--Projette(A5)--Projette(A6)--cycle;
+ fill Fleche withcolor CouleurFleche;
+ draw Fleche;
+ fi;
+
+ nbobj:=TotalObj;
+ DessineFusion;
+
+ if Grille:
+ % dessus
+ color Ad[];
+ Ad0=(0.5Echelle,0.5*Echelle,-0.5);
+ Ad1-Ad0=(0,Largeur*Echelle,0);
+ Ad2-Ad1=(-Profondeur*Echelle,0,0);
+ Ad3-Ad2=Ad0-Ad1;
+ draw Projette(Ad0) for k=1 upto 3: --Projette(Ad[k]) endfor --cycle;
+ for k=1 upto Largeur-1:
+ draw Projette((k/Largeur)[Ad0,Ad1])--Projette((k/Largeur)[Ad3,Ad2]);
+ endfor;
+ for k=1 upto Profondeur-1:
+ draw Projette((k/Profondeur)[Ad0,Ad3])--Projette((k/Profondeur)[Ad1,Ad2]);
+ endfor;
+ % face
+ color Af[];
+ Af0=(-1-Profondeur*Echelle,0.5*Echelle,0);
+ Af1-Af0=(0,Largeur*Echelle,0);
+ Af2-Af1=(0,0,Hauteur*Echelle);
+ Af3-Af2=Af0-Af1;
+ draw Projette(Af0) for k=1 upto 3: --Projette(Af[k]) endfor --cycle;
+ for k=1 upto Largeur-1:
+ draw Projette((k/Largeur)[Af0,Af1])--Projette((k/Largeur)[Af3,Af2]);
+ endfor;
+ for k=1 upto Hauteur-1:
+ draw Projette((k/Hauteur)[Af0,Af3])--Projette((k/Hauteur)[Af1,Af2]);
+ endfor;
+ % droite
+ color Adg[];
+ Adg0=(0.5Echelle,-Largeur*Echelle-1,0);
+ Adg1-Adg0=(-Profondeur*Echelle,0,0);
+ Adg2-Adg1=(0,0,Hauteur*Echelle);
+ Adg3-Adg2=Adg0-Adg1;
+ draw Projette(Adg0) for k=1 upto 3: --Projette(Adg[k]) endfor --cycle;
+ for k=1 upto Profondeur-1:
+ draw Projette((k/Profondeur)[Adg0,Adg1])--Projette((k/Profondeur)[Adg3,Adg2]);
+ endfor;
+ for k=1 upto Hauteur-1:
+ draw Projette((k/Hauteur)[Adg0,Adg3])--Projette((k/Hauteur)[Adg1,Adg2]);
+ endfor;
+ fi;
+
+ %draw (llcorner currentpicture)--(lrcorner currentpicture)--(urcorner currentpicture)--(ulcorner currentpicture)--cycle;
+ \end{mplibcode}
+ \ifboolKV[VueCubes]{Grilles}{}{%
+ \hspace*{1.5cm}
+ \begin{mplibcode}[\PfCVueCubeNom]
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Profondeur:=\useKV[VueCubes]{Profondeur};
+ Largeur:=\useKV[VueCubes]{Largeur};
+ Hauteur:=\useKV[VueCubes]{Hauteur};
+ Phi:=#1;
+ Echelle:=\useKV[VueCubes]{Echelle};
+
+ color CouleurFleche;
+ CouleurFleche:=\useKV[VueCubes]{CouleurFleche};
+
+ TotalObj:=0;
+
+ Initialisation(2500,Phi+90,30,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ for m=1 upto Largeur:%3 largeur
+ for k=1 upto Profondeur:%4 profondeur
+ for l=1 upto hauteurtour[m][k]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*(k-1),m*Echelle,Echelle*l-Echelle/2);%TR:=(-0.5*(k-1),m*0.5,l/2-0.25);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ endfor;
+ endfor;
+
+ if Grille:
+ undraw Projette(Ad0) for k=1 upto 3: --Projette(Ad[k]) endfor --cycle;
+ undraw Projette(Af0) for k=1 upto 3: --Projette(Af[k]) endfor --cycle;
+ undraw Projette(Adg0) for k=1 upto 3: --Projette(Adg[k]) endfor --cycle;
+ fi;
+
+ path Fleche;
+ if FaceVue:
+ Fleche=Projette(A0)--Projette(A1)--Projette(A2)--Projette(A3)--Projette(A4)--Projette(A5)--Projette(A6)--cycle;
+ fill Fleche withcolor CouleurFleche;
+ draw Fleche;
+ fi;
+
+ nbobj:=TotalObj;
+ DessineFusion;
+ \end{mplibcode}
+ }%
+ \fi
+}%
+
+\NewDocumentCommand\BuildVueCubesSolution{}{%
+ \ifluatex%
+ \xdef\PfCVueCubeNom{\useKV[VueCubes]{Nom}}%
+ \begin{NiceTabular}{ccc}%
+ Vue de face&Vue de dessus&Vue de gauche\\
+ {\begin{mplibcode}[\PfCVueCubeNom]
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Profondeur:=\useKV[VueCubes]{Profondeur};
+ Largeur:=\useKV[VueCubes]{Largeur};
+ Hauteur:=\useKV[VueCubes]{Hauteur};
+ Phi:=0;
+ Echelle:=\useKV[VueCubes]{Echelle};
+
+ color CouleurFleche;
+ CouleurFleche:=\useKV[VueCubes]{CouleurFleche};
+
+ TotalObj:=0;
+
+ Initialisation(2500,Phi,0,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ for m=1 upto Largeur:%3 largeur
+ for k=1 upto Profondeur:%4 profondeur
+ for l=1 upto hauteurtour[m][k]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*(k-1),m*Echelle,Echelle*l-Echelle/2);%TR:=(-0.5*(k-1),m*0.5,l/2-0.25);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ endfor;
+ endfor;
+
+ nbobj:=TotalObj;
+ DessineFusion;
+ \end{mplibcode}}&
+ {\begin{mplibcode}[\PfCVueCubeNom]
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Profondeur:=\useKV[VueCubes]{Profondeur};
+ Largeur:=\useKV[VueCubes]{Largeur};
+ Hauteur:=\useKV[VueCubes]{Hauteur};
+ Phi:=0;
+ Echelle:=\useKV[VueCubes]{Echelle};
+
+ color CouleurFleche;
+ CouleurFleche:=\useKV[VueCubes]{CouleurFleche};
+
+ TotalObj:=0;
+
+ Initialisation(2500,Phi,90,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ for m=1 upto Largeur:%3 largeur
+ for k=1 upto Profondeur:%4 profondeur
+ for l=1 upto hauteurtour[m][k]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*(k-1),m*Echelle,Echelle*l-Echelle/2);%TR:=(-0.5*(k-1),m*0.5,l/2-0.25);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ endfor;
+ endfor;
+
+ nbobj:=TotalObj;
+ DessineFusion;
+ \end{mplibcode}}&{\begin{mplibcode}[\PfCVueCubeNom]
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Profondeur:=\useKV[VueCubes]{Profondeur};
+ Largeur:=\useKV[VueCubes]{Largeur};
+ Hauteur:=\useKV[VueCubes]{Hauteur};
+ Phi:=-90;
+ Echelle:=\useKV[VueCubes]{Echelle};
+
+ color CouleurFleche;
+ CouleurFleche:=\useKV[VueCubes]{CouleurFleche};
+
+ TotalObj:=0;
+
+ Initialisation(2500,Phi,0,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ for m=1 upto Largeur:%3 largeur
+ for k=1 upto Profondeur:%4 profondeur
+ for l=1 upto hauteurtour[m][k]:
+ TotalObj:=incr TotalObj;
+ TR:=(-Echelle*(k-1),m*Echelle,Echelle*l-Echelle/2);%TR:=(-0.5*(k-1),m*0.5,l/2-0.25);
+ ObjetDeplacement[TotalObj](0);
+ endfor;
+ endfor;
+ endfor;
+
+ nbobj:=TotalObj;
+ DessineFusion;
+ \end{mplibcode}}\\
+ \end{NiceTabular}%
+ \fi%
+}%
+
+%%%
% Codage RLE
%%%
\setKVdefault[RLE]{Largeur=10pt,Taille=5,Unite=1cm,Solution=false,Enonce=true}
@@ -641,8 +986,24 @@
%%%
% Tortue
%%%
-\setKVdefault[Tortue]{Pas=0.2mm,Etapes=false,Nom=\jobname,Grille=false,LargeurG=10,HauteurG=10,TortueD=false,TortueF=false,Epaisseur=1,Angle=0,Debut=false,Depart={(0,0)},Axes=false}
-\defKV[Tortue]{Etape=\setKV[Tortue]{Etapes}}%
+\setKVdefault[Tortue]{%
+ Pas=0.2mm,%Déplacement,
+ Etapes=false,%Pour arrêter la construction à une étape particulière
+ Nom=\jobname,%Pour la sauvegarde du fichier mp
+ Grille=false,%Pour faire apparaître une grille
+ LargeurG=10,%Largeur Grille
+ HauteurG=10,%Hauteur Grille
+ TortueD=false,%Affiche la tortue au départ
+ TortueF=false,%Affiche la tortue à l'arrivée
+ Epaisseur=1,%Epaisseur du tracé
+ Angle=0,%Angle de départ de la tortue
+ Debut=false,%Pour indiquer que rien n'est fait (utile ?)
+ Depart={(0,0)},%Point de départ de la tortue
+ Axes=false,%Affichage des axes ou pas
+ Origine={(0,0)},%Origine des axes
+ Cases=false,%Se déplace-t-on sur des cases ?
+}
+\defKV[Tortue]{Etape=\setKV[Tortue]{Etapes}}%choix de l'étape d'arrêt
\newcounter{PfCTortue}
\setcounter{PfCTortue}{0}
@@ -660,12 +1021,13 @@
\savecomparemode%
\newwrite\turtle@out%
\immediate\openout\turtle@out \jobname+t\thePfCTortue.turtle%
- \immediate\write\turtle@out{numeric ut;}%
- \immediate\write\turtle@out{ut=\useKV[Tortue]{Pas};}%
- \immediate\write\turtle@out{Etapes=\useKV[Tortue]{Etapes};}%
- \immediate\write\turtle@out{if Etapes:Total=\useKV[Tortue]{Etape};fi;}%
-% \immediate\write\turtle@out{vardef Dessin=}%
-% \immediate\write\turtle@out{save Tortue; picture Tortue;}%
+ \immediate\write\turtle@out{%
+ numeric ut;
+ ut=\useKV[Tortue]{Pas};
+ pair OrigineAxes;OrigineAxes=\useKV[Tortue]{Origine};
+ Etapes=\useKV[Tortue]{Etapes};
+ if Etapes:Total=\useKV[Tortue]{Etape};fi;
+ }%
\ifboolKV[Tortue]{Grille}{%
\immediate\write\turtle@out{%
larg=\useKV[Tortue]{LargeurG}; haut=\useKV[Tortue]{HauteurG};
@@ -675,68 +1037,110 @@
for k=-haut upto haut:
draw 3*ut*(-10larg,10k)--3*ut*(10larg,10k) withcolor 0.75white;
endfor;
+ %dotlabel("",ut*OrigineAxes);
if \useKV[Tortue]{Axes}:
- drawarrow 3*ut*(-10larg,0)--3*ut*(10larg,0);
- drawarrow 3*ut*(0,-10haut)--3*ut*(0,10haut);
- label.llft(btex O etex,(0,0));
- dotlabel.lrt(btex 30 etex,(30*ut,0));
- dotlabel.ulft(btex 30 etex,(0,30*ut));
+ drawarrow (3*ut*(-10larg,0)--3*ut*(10larg,0)) shifted(ut*(0,ypart(OrigineAxes-(0,0))));
+ drawarrow (3*ut*(0,-10haut)--3*ut*(0,10haut)) shifted(ut*(xpart(OrigineAxes-(0,0)),0));
+ %label.llft(btex O etex,(0,0));
+ dotlabel.lrt(btex 30 etex,(30*ut,0)+ut*(OrigineAxes-(0,0)));
+ dotlabel.ulft(btex 30 etex,(0,30*ut)+ut*(OrigineAxes-(0,0)));
fi;
+ if \useKV[Tortue]{Cases}:
+ string T[];
+ T1="A";
+ T2="B";
+ T3="C";
+ T4="D";
+ T5="E";
+ T6="F";
+ T7="G";
+ T8="H";
+ T9="I";
+ T10="J";
+ T11="K";
+ T12="L";
+ T13="M";
+ T14="N";
+ T15="O";
+ T16="P";
+ T17="Q";
+ T18="R";
+ T19="S";
+ T20="T";
+ T21="U";
+ T22="V";
+ T23="W";
+ T24="X";
+ T25="Y";
+ T26="Z";
+ for k=-larg upto larg-1:
+ label(TEX(T[k+larg+1]),3*ut*(10k+5,10haut+5));
+ endfor;
+ for k=haut downto -haut+1:
+ label(TEX(decimal(haut-k+1)),3*ut*(-10larg-5,10k-5));
+ endfor;
+ fi;
+ Epaisseur:=1.5;
}%
}{}%
\ifboolKV[Tortue]{Debut}{}{%
\foreachitem\compteur\in\PfCListeCmdTortue{%
\comparestrict%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{[}[\PfCTestCrochetO]%
- \xintifboolexpr{\PfCTestCrochetO==0}{}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{]}[\PfCTestCrochetF]%
- \xintifboolexpr{\PfCTestCrochetF==0}{%
- \immediate\write\turtle@out{TotalRemplis:=tt-1; remplis for l=1 upto TotalRemplis:B[l]--endfor cycle withcolor CouleurRemplis;}%
- }{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Remplis}[\PfCTestRemplis]%
- \xintifboolexpr{\PfCTestRemplis==0}{%
- \immediate\write\turtle@out{tt:=0;
- TotalRemplis:=0; CouleurRemplis:=\PfCListeCmdTortue[\compteurcnt,2];}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{MP}[\PfCTestMP]%
+ \xintifboolexpr{\PfCTestMP==0}{%
+ \immediate\write\turtle@out{\PfCListeCmdTortue[\compteurcnt,2]}%
+ }{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{[}[\PfCTestCrochetO]%
+ \xintifboolexpr{\PfCTestCrochetO==0}{}{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{]}[\PfCTestCrochetF]%
+ \xintifboolexpr{\PfCTestCrochetF==0}{%
+ \immediate\write\turtle@out{TotalRemplis:=tt-1; remplis for l=1 upto TotalRemplis:B[l]--endfor cycle withcolor CouleurRemplis;}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Fin}[\PfCTestFinPour]%
- \xintifboolexpr{\PfCTestFinPour==0}{%
- \immediate\write\turtle@out{enddef;k:=0;}%
- \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Remplis}[\PfCTestRemplis]%
+ \xintifboolexpr{\PfCTestRemplis==0}{%
+ \immediate\write\turtle@out{tt:=0;
+ TotalRemplis:=0; CouleurRemplis:=\PfCListeCmdTortue[\compteurcnt,2];}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Pour}[\PfCTestPour]%
- \xintifboolexpr{\PfCTestPour==0}{%
- \immediate\write\turtle@out{vardef \PfCListeCmdTortue[\compteurcnt,2](expr \PfCListeCmdTortue[\compteurcnt,3])=}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Fin}[\PfCTestFinPour]%
+ \xintifboolexpr{\PfCTestFinPour==0}{%
+ \immediate\write\turtle@out{enddef;k:=0;}%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Rep}[\PfCTestRep]%
- \xintifboolexpr{\PfCTestRep==0}{%
- \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
- \immediate\write\turtle@out{nb[\PfCNbRep]:=0;}%
- \immediate\write\turtle@out{forever:}%
- \immediate\write\turtle@out{nb[\PfCNbRep]:=nb[\PfCNbRep]+1;}%
- % \immediate\write\turtle@out{nbcomp:=nbcomp+1;}
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Pour}[\PfCTestPour]%
+ \xintifboolexpr{\PfCTestPour==0}{%
+ \immediate\write\turtle@out{vardef \PfCListeCmdTortue[\compteurcnt,2](expr \PfCListeCmdTortue[\compteurcnt,3])=}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{)}[\PfCTestParaF]%
- \xintifboolexpr{\PfCTestParaF==0}{%
- \immediate\write\turtle@out{exitif nb[\PfCNbRep]=\PfCListeCmdTortue[\compteurcnt,2];}%
- \immediate\write\turtle@out{endfor;}%
- \xdef\PfCNbRep{\fpeval{\PfCNbRep-1}}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Rep}[\PfCTestRep]%
+ \xintifboolexpr{\PfCTestRep==0}{%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep+1}}%
+ \immediate\write\turtle@out{nb[\PfCNbRep]:=0;}%
+ \immediate\write\turtle@out{forever:}%
+ \immediate\write\turtle@out{nb[\PfCNbRep]:=nb[\PfCNbRep]+1;}%
+ % \immediate\write\turtle@out{nbcomp:=nbcomp+1;}
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{(}[\PfCTestParaO]%
- \xintifboolexpr{\PfCTestParaO==0}{%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{)}[\PfCTestParaF]%
+ \xintifboolexpr{\PfCTestParaF==0}{%
+ \immediate\write\turtle@out{exitif nb[\PfCNbRep]=\PfCListeCmdTortue[\compteurcnt,2];}%
+ \immediate\write\turtle@out{endfor;}%
+ \xdef\PfCNbRep{\fpeval{\PfCNbRep-1}}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Bc}[\PfCTestBc]%
- \xintifboolexpr{\PfCTestBc==0}{%
- \immediate\write\turtle@out{Bc;}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{(}[\PfCTestParaO]%
+ \xintifboolexpr{\PfCTestParaO==0}{%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Lc}[\PfCTestLc]%
- \xintifboolexpr{\PfCTestLc==0}{%
- \immediate\write\turtle@out{Lc;}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Bc}[\PfCTestBc]%
+ \xintifboolexpr{\PfCTestBc==0}{%
+ \immediate\write\turtle@out{Bc;}%
}{%
- \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Tlp}[\PfCTestTlp]%
- \xintifboolexpr{\PfCTestTlp==0}{%
- \immediate\write\turtle@out{Teleporter(\PfCListeCmdTortue[\compteurcnt,2],\PfCListeCmdTortue[\compteurcnt,3]);}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Lc}[\PfCTestLc]%
+ \xintifboolexpr{\PfCTestLc==0}{%
+ \immediate\write\turtle@out{Lc;}%
}{%
- \immediate\write\turtle@out{\PfCListeCmdTortue[\compteurcnt,1](\PfCListeCmdTortue[\compteurcnt,2]);}%
+ \StrCompare{\PfCListeCmdTortue[\compteurcnt,1]}{Tlp}[\PfCTestTlp]%
+ \xintifboolexpr{\PfCTestTlp==0}{%
+ \immediate\write\turtle@out{Teleporter(\PfCListeCmdTortue[\compteurcnt,2],\PfCListeCmdTortue[\compteurcnt,3]);}%
+ }{%
+ \immediate\write\turtle@out{\PfCListeCmdTortue[\compteurcnt,1](\PfCListeCmdTortue[\compteurcnt,2]);}%
+ }%
}%
}%
}%
@@ -758,7 +1162,6 @@
\ifboolKV[Tortue]{Etapes}{%
\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[Total] scaled 1.5,A[Total]);}%
}{\ifboolKV[Tortue]{TortueF}{\immediate\write\turtle@out{drawoptions(withcolor DarkGreen);label(btex \noexpand\Large\noexpand\ding{40} etex rotated RetiensAngle[k] scaled 1.5,A[k]);}}{}}%
- %\immediate\write\turtle@out{}
\immediate\closeout\turtle@out%
\restorecomparemode%
}%
@@ -778,11 +1181,11 @@
input PfCTurtleTestRemplis.mp;
pair Depart;
- Depart=\useKV[Tortue]{Depart};
+ Depart=\useKV[Tortue]{Depart} if \useKV[Tortue]{Cases}:+(15,15)fi;
pair A[],B[];
A[0]=\useKV[Tortue]{Pas}*(xpart(Depart),ypart(Depart));
B[0]=A[0];
- Epaisseur:=0.25;%\useKV[Tortue]{Epaisseur};
+ Epaisseur:=\useKV[Tortue]{Epaisseur};
Angle:=0;
numeric RetiensAngle[];
RetiensAngle[0]=\useKV[Tortue]{Angle};
@@ -1273,7 +1676,7 @@
\reademptyitems%
\setlength{\tabcolsep}{0.25\tabcolsep}
\renewcommand{\arraystretch}{1.5}
- \begin{NiceTabular}{*{\fpeval{\PfCMentaloEtages}}{m{5pt}}m{20pt}cm{20pt}cl*{\fpeval{\PfCMentaloEtages}}{m{5pt}}*{5}{m{15pt}}*{2}{m{10pt}}}
+ \begin{NiceTabular}{*{\fpeval{\PfCMentaloEtages}}{m{5pt}}m{20pt}cm{20pt}cl*{\fpeval{\PfCMentaloEtages}}{m{5pt}}*{5}{m{15pt}}*{1}{m{10pt}}}
\Block{1-\fpeval{\PfCMentaloEtages}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages}}}\do{&}%
\Block[draw,fill=gray!15]{1-5}{Arrivée}&&&&&\Block{1-\fpeval{\PfCMentaloEtages}}{~}\xintFor* ##2 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages}}}\do{&}\\
\xintFor* ##1 in{\xintSeq{1}{\fpeval{\PfCMentaloEtages-1}}}\do{%
@@ -2570,11 +2973,12 @@
%%%
% Puissances 4
%%%
-\setKVdefault[ClesPQuatre]{Couleur=Gray,Largeur=2cm,Multiplication,Entier,Nombre,Exposant=false}%
+\setKVdefault[ClesPQuatre]{Couleur=Gray,Largeur=2cm,LargeurUn=2cm,Multiplication,Entier,Nombre,Exposant=false,Libre=false,Texte=false,Echelle=2}%
\defKV[ClesPQuatre]{Addition=\setKV[ClesPQuatre]{Multiplication=false}}%
\defKV[ClesPQuatre]{Relatif=\setKV[ClesPQuatre]{Entier=false}}%
\defKV[ClesPQuatre]{Puissance=\setKV[ClesPQuatre]{Exposant}}%
-\defKV[ClesPQuatre]{Autre=\setKV[ClesPQuatre]{Nombre=false}}%
+\defKV[ClesPQuatre]{Autre=\setKV[ClesPQuatre]{Nombre=false}\setKV[ClesPQuatre]{Libre}}%
+\defKV[ClesPQuatre]{Consignes=\setKV[ClesPQuatre]{Texte}}%
\newtoks\toklistePQuatreh%
\newtoks\toklistePQuatrev%
@@ -2633,47 +3037,73 @@
\mplibforcehmode%
\begin{mplibcode}
Largeur=\useKV[ClesPQuatre]{Largeur};
+ LargeurUn=\useKV[ClesPQuatre]{LargeurUn};
+ Echelle=\useKV[ClesPQuatre]{Echelle};
color fond;
fond=\useKV[ClesPQuatre]{Couleur};
- boolean Multiplication,Addition;
+ boolean Libre,Multiplication,Texte;
+ Libre:=\useKV[ClesPQuatre]{Libre};
Multiplication=\useKV[ClesPQuatre]{Multiplication};
+ Texte:=\useKV[ClesPQuatre]{Texte};
+
+ if Texte:
+ string Consignes;
+ Consignes=\useKV[ClesPQuatre]{Consignes};
+ fi;
+
+ % On calcule le nombre de cases
+ nchauteur:=0;
+ for p_=#1:
+ nchauteur:=incr nchauteur;
+ endfor;
+ nclargeur:=0;
+ for p_=#2:
+ nclargeur:=incr nclargeur;
+ endfor;
+ if Libre=false:
+ nchauteur:=7;
+ nclargeur:=7;
+ fi;
+ %On affiche
pair A,B,C,D,H[],V[],M[][];
A=(0,0);
- B-A=Largeur*(7,0);
- C=rotation(A,B,-90);
+ B-A=Largeur*(nclargeur,0);
+ C-B=Largeur*(0,nchauteur);
D-C=A-B;
fill polygone(A,B,C,D) withcolor fond;
trace polygone(A,B,C,D);
- for k=0 upto 6:
- for l=0 upto 6:
+ for k=0 upto (nclargeur-1):
+ for l=0 upto (nchauteur-1):
M[k][l]=A+0.5*(Largeur,Largeur)+k*(Largeur,0)+l*(0,Largeur);
fill cercles(M[k][l],0.4*Largeur) withcolor blanc;
trace cercles(M[k][l],0.4*Largeur);
endfor;
endfor;
labeloffset:=labeloffset*2;
+ if Libre:
+ if Texte:
+ label.llft(TEX("\begin{minipage}{"&decimal(LargeurUn)&"pt}"&Consignes&"\end{minipage}") scaled Echelle,A);
+ fi;
+ else:
if Multiplication:
- label.llft(btex $\times$ etex scaled 2,A);
+ label.llft(btex $\times$ etex scaled Echelle,A);
else:
- label.llft(btex $+$ etex scaled 2,A);
+ label.llft(btex $+$ etex scaled Echelle,A);
+ fi;
fi;
labeloffset:=labeloffset/2;
vardef Vertical(text t)=
n:=0;
for p_=t:
-% if n<7:
- label.lft(TEX(p_) scaled 2,A+(0,n*Largeur+Largeur/2));
+ label.lft(TEX(p_) scaled Echelle,A+(0,n*Largeur+Largeur/2));
n:=n+1;
-% fi;
endfor;
enddef;
vardef Horizontal(text t)=
n:=0;
for p_=t:
-% if n<7:
- label.bot(TEX(p_) scaled 2,A+(n*Largeur+Largeur/2,0));
+ label.bot(TEX(p_) scaled Echelle,A+(n*Largeur+Largeur/2,0));
n:=n+1;
-% fi;
endfor;
enddef;
labeloffset:=labeloffset*4;
@@ -2681,42 +3111,60 @@
Horizontal(#2);
\end{mplibcode}
\else%
- \begin{mpost}[mpsettings={Largeur=\useKV[ClesPQuatre]{Largeur};color fond;fond=\useKV[ClesPQuatre]{Couleur};boolean Multiplication;Multiplication=\useKV[ClesPQuatre]{Multiplication};}]
+ \begin{mpost}[mpsettings={Largeur=\useKV[ClesPQuatre]{Largeur};Largeur=\useKV[ClesPQuatre]{Largeur};LargeurUn=\useKV[ClesPQuatre]{LargeurUn};Echelle=\useKV[ClesPQuatre]{Echelle};color fond;fond=\useKV[ClesPQuatre]{Couleur};boolean Libre,Multiplication,Texte;Libre:=\useKV[ClesPQuatre]{Libre};Multiplication=\useKV[ClesPQuatre]{Multiplication};Texte:=\useKV[ClesPQuatre]{Texte};if Texte:string Consignes;Consignes=\useKV[ClesPQuatre]{Consignes};fi;}]
+ % On calcule le nombre de cases
+ nchauteur:=0;
+ for p_=#1:
+ nchauteur:=incr nchauteur;
+ endfor;
+ nclargeur:=0;
+ for p_=#2:
+ nclargeur:=incr nclargeur;
+ endfor;
+ if Libre=false:
+ nchauteur:=7;
+ nclargeur:=7;
+ fi;
+ %On affiche
pair A,B,C,D,H[],V[],M[][];
A=(0,0);
- B-A=Largeur*(7,0);
- C=rotation(A,B,-90);
+ B-A=Largeur*(nclargeur,0);
+ C-B=Largeur*(0,nchauteur);
D-C=A-B;
fill polygone(A,B,C,D) withcolor fond;
- for k=0 upto 7:
- for l=0 upto 7:
+ trace polygone(A,B,C,D);
+ for k=0 upto (nclargeur-1):
+ for l=0 upto (nchauteur-1):
M[k][l]=A+0.5*(Largeur,Largeur)+k*(Largeur,0)+l*(0,Largeur);
fill cercles(M[k][l],0.4*Largeur) withcolor blanc;
+ trace cercles(M[k][l],0.4*Largeur);
endfor;
endfor;
labeloffset:=labeloffset*2;
+ if Libre:
+ if Texte:
+ label.llft(LATEX("\begin{minipage}{"&decimal(LargeurUn)&"pt}"&Consignes&"\end{minipage}") scaled Echelle,A);
+ fi;
+ else:
if Multiplication:
- label.llft(btex $\times$ etex scaled 2,A);
+ label.llft(btex $\times$ etex scaled Echelle,A);
else:
- label.llft(btex $+$ etex scaled 2,A);
+ label.llft(btex $+$ etex scaled Echelle,A);
+ fi;
fi;
labeloffset:=labeloffset/2;
vardef Vertical(text t)=
n:=0;
for p_=t:
- if n<7:
- label.lft(LATEX(p_) scaled 2,A+(0,n*Largeur+Largeur/2));
+ label.lft(LATEX(p_) scaled Echelle,A+(0,n*Largeur+Largeur/2));
n:=n+1;
- fi;
endfor;
enddef;
vardef Horizontal(text t)=
n:=0;
for p_=t:
- if n<7:
- label.bot(LATEX(p_) scaled 2,A+(n*Largeur+Largeur/2,0));
+ label.bot(LATEX(p_) scaled Echelle,A+(n*Largeur+Largeur/2,0));
n:=n+1;
- fi;
endfor;
enddef;
labeloffset:=labeloffset*4;
@@ -6450,35 +6898,19 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
%%%
% Labyrinthe Nombre
%%%
-\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=Brown,DoubleOperation=false,Chemin=false,EntreeSortie=false,Entree="Nord",Sortie="Sud",SortieUnique=true}
+\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=LightSteelBlue,DoubleOperation=false,Chemin=false,EntreeSortie=false,Entree="Nord",Sortie="Sud",SortieUnique=true}
\newcommand\LabyNombre[1][]{%
\useKVdefault[ClesLabyNb]%
\setKV[ClesLabyNb]{#1}%
- \ifboolKV[ClesLabyNb]{EntreeSortie}{%
- \ifboolKV[ClesLabyNb]{Solution}{%
- \TraceLabyMathAleaSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
- }{%
- \TraceLabyMathAlea{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
- }%
+ \ifboolKV[ClesLabyNb]{Solution}{%
+ \TraceLabyFactoSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
}{%
- \ifboolKV[ClesLabyNb]{DoubleOperation}{%
- \ifboolKV[ClesLabyNb]{Solution}{%
- \TraceDoubleSolution{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
- }{%
- \TraceLabyNombreDouble{\useKV[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
- }%
- }{%
- \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[ClesLabyNb]{Multiple}}{\useKV[ClesLabyNb]{Longueur}}{\useKV[ClesLabyNb]{Largeur}}{(\useKV[ClesLabyNb]{YDepart},\useKV[ClesLabyNb]{XDepart})}{(\useKV[ClesLabyNb]{YArrivee},\useKV[ClesLabyNb]{XArrivee})}{\useKV[ClesLabyNb]{Solution}}%
- }%
- }%
- }%
+ \TraceLabyFacto{\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\TraceLabyMathAlea[6]{%
+\newcommand\TraceLabyFacto[6]{%
\mplibforcehmode%
\xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
\begin{mplibcode}[\PfCNomLabyrinthe]
@@ -6490,8 +6922,9 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
string Entree,Sortie;
Entree=\useKV[ClesLabyNb]{Entree};
Sortie=\useKV[ClesLabyNb]{Sortie};
- boolean SortieUnique;
+ boolean SortieUnique,EntreeSortie;
SortieUnique:=\useKV[ClesLabyNb]{SortieUnique};
+ EntreeSortie:=\useKV[ClesLabyNb]{EntreeSortie};
picture Square;
Square=image(
path Test;
@@ -6501,6 +6934,41 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
trace subpath(2.85,3.15) of Test;
trace subpath(3.85,4.15) of Test;
);
+
+ vardef RemplissagePremier=
+ Totalpremier:=if indiceChemin<62:62 else: indiceChemin fi;
+
+ numeric p[]; boolean n_is_prime; p[1]=2; kis:=1;
+ for nis=3 step 2 until infinity:
+ n_is_prime := true;
+ for jis=2 upto kis:
+ if nis mod p[jis]=0: n_is_prime := false; fi
+ exitif nis/p[jis] < p[jis];
+ endfor
+ if n_is_prime: p[incr kis] := nis; exitif kis=Totalpremier; fi
+ endfor fi
+
+ numeric PR[],pretiens[];
+
+ for ki=1 upto Totalpremier-1:
+ pretiens[ki]:=p[ki+1];
+ endfor;
+
+ Kk:=0;
+
+ for ki=Totalpremier-1 downto 1:
+ alea:=1+floor(uniformdeviate(ki));
+ PR[incr Kk]:=pretiens[alea];
+ % message("k="&decimal(k)&" alea="&decimal(alea)&" Kk="&decimal(Kk)&" PR[Kk]="&decimal(PR[Kk]));
+ Kkl:=0;
+ for li=1 upto ki:
+ if li<>alea:
+ pretiens[incr Kkl]:=pretiens[li];
+ % message("Kkl="&decimal(Kkl));
+ fi;
+ endfor;
+ endfor;
+ enddef;
numeric Multiple;
Multiple=#1;
@@ -6572,13 +7040,33 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
nbaffiche=0;
for k=0 upto LargeurLaby-1:
for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
- NbAffiche[nbaffiche]:=(50+ceiling(uniformdeviate(100)))*Multiple+ceiling(uniformdeviate(Multiple-1));
+ nbaffiche:=nbaffiche+1;
+ if Multiple=1:%On affichera que des multiples de 2/3/5/9/10 pour afficher un chemin de nombre premiers
+ mathalea:=uniformdeviate(5);
+ if mathalea<1:
+ NbAffiche[nbaffiche]:=(10+ceiling(uniformdeviate(100)))*2;
+ elseif mathalea<2:
+ NbAffiche[nbaffiche]:=(10+ceiling(uniformdeviate(100)))*3;
+ elseif mathalea<3:
+ NbAffiche[nbaffiche]:=(10+ceiling(uniformdeviate(100)))*5;
+ elseif mathalea<4:
+ NbAffiche[nbaffiche]:=(10+ceiling(uniformdeviate(100)))*9;
+ else: NbAffiche[nbaffiche]:=(10+ceiling(uniformdeviate(100)))*10;
+ fi;
+ else:
+ NbAffiche[nbaffiche]:=(50+ceiling(uniformdeviate(100)))*Multiple+ceiling(uniformdeviate(Multiple-1));
+ fi;
endfor;
endfor;
% On crée des multiples du nombre choisi
+ RemplissagePremier;
+
for k=1 upto indiceChemin:
- NbSol[k]=(50+ceiling(uniformdeviate(100)))*Multiple;
+ if Multiple>1:
+ NbSol[k]=(50+ceiling(uniformdeviate(100)))*Multiple;
+ else:
+ NbSol[k]=PR[k];
+ fi;
endfor;
% On affiche
picture Corps;
@@ -6594,7 +7082,11 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
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])]);
endfor;
- % trace TraceLabyrinthe;
+ if EntreeSortie=false:
+ remplis ((unitsquare scaled 10mm) shifted N[choixligneD][choixcolonneD]) withcolor \useKV[ClesLabyNb]{Couleur};
+ remplis ((unitsquare scaled 10mm) shifted Arrivee) withcolor \useKV[ClesLabyNb]{Couleur};
+ trace TraceLabyrinthe;
+ else:
for k=0 upto LargeurLaby-1:
for l=0 upto LongueurLaby-1:
trace Square shifted N[k][l];
@@ -6661,16 +7153,17 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
label(TEX("\footnotesize S"&decimal(k)),center (Square) shifted (N[k][LongueurLaby-1]+(10mm,0)));
endfor;
fi;
+ fi;
);
Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
trace Corps;
\end{mplibcode}
}
-\newcommand\TraceLabyMathAleaSolution[6]{%
+\newcommand\TraceLabyFactoSolution[6]{%
\mplibforcehmode%
\xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
- \begin{mplibcode}[\PfCNomLabyrinthe]%
+ \begin{mplibcode}[\PfCNomLabyrinthe]
color CouleurChemin;
CouleurChemin:=\useKV[ClesLabyNb]{CouleurChemin};
picture CorpsSolution;
@@ -6678,15 +7171,26 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
nbaffiche:=0;
for k=0 upto LargeurLaby-1:
for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
+ nbaffiche:=nbaffiche+1;
label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
endfor;
endfor;
+ if EntreeSortie=false:
+ 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 \useKV[ClesLabyNb]{CouleurChemin};
+ label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
+ endfor;
+ else:
for k=1 upto indiceChemin:
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])]);
endfor;
- % trace TraceLabyrinthe;
+ fi;
+ if EntreeSortie=false:
+ trace TraceLabyrinthe;
+ else:
for k=0 upto LargeurLaby-1:
for l=0 upto LongueurLaby-1:
trace Square shifted N[k][l];
@@ -6761,11 +7265,12 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
endfor
--((center unitsquare scaled 10mm) shifted Arrivee)--N[-2][-2];
trace CheminSolution dashed evenly withcolor CouleurChemin;
+ fi;
);
CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
trace CorpsSolution;
- \end{mplibcode}%
-}%
+ \end{mplibcode}
+}
\newcommand\TraceLabyNombreDouble[6]{%
\mplibforcehmode%
@@ -6902,224 +7407,6 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
\end{mplibcode}
}%
-\newcommand\TraceLabyNombre[6]{%
- \mplibforcehmode%
- \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
- \begin{mplibcode}[\PfCNomLabyrinthe]
- input PfCLabyNombre;
-
- boolean Murs;
- Murs=\useKV[ClesLabyNb]{Murs};
-
- numeric Multiple;
- Multiple=#1;
- % Initialisation du labyrinthe
- InitialisationLabyrinthe(#2,#3);
- % On initialise les paramètres du parcours
- numeric choixligneD,choixligneA,choixcolonneD,choixcolonneA;
- choixligneD=xpart(#4);
- choixcolonneD=ypart(#4);
- choixligneA=xpart(#5);
- choixcolonneA=ypart(#5);%
- pair Depart;
- Depart=N[choixligneD][choixcolonneD];
- pair Arrivee;
- Arrivee=N[choixligneA][choixcolonneA];
- pair Mobile;
- Mobile=Depart;
- RAZPileChemin;
- % Exploration du labyrinthe
- PushChemin((choixligneD,choixcolonneD));
- CaseExploree[choixligneD][choixcolonneD]:=true;
- VoisinDispo(choixligneD,choixcolonneD);
- forever: exitif Mobile=Arrivee;%nb=0;
- nb:=ceiling(uniformdeviate(nbvoisin));
- if nb>0:
- for k=1 upto nbvoisin:
- CaseExploree[xpart(PileVoisin[k])][ypart(PileVoisin[k])]:=true;
- endfor;
- PushChemin((xpart(PileVoisin[nb]),ypart(PileVoisin[nb])));
- Mobile:=N[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])];
- VoisinDispo(xpart(PileChemin[indiceChemin]),ypart(PileChemin[indiceChemin]));
- else:
- PopChemin;
- fi;
- endfor;
- % Affichagefinal
- % on sauvegarde les nombres aléatoires
- numeric NbAffiche[];
- numeric NbSol[];
- % on écrit des nombres au hasard, mais sans être multiple du nombre choisi
- numeric nbaffiche;
- nbaffiche=0;
- for k=0 upto LargeurLaby-1:
- for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
- NbAffiche[nbaffiche]:=(50+ceiling(uniformdeviate(100)))*Multiple+ceiling(uniformdeviate(Multiple-1));
- endfor;
- endfor;
- % On crée des multiples du nombre choisi
- for k=2 upto indiceChemin-1:
- NbSol[k]=(50+ceiling(uniformdeviate(100)))*Multiple;
- endfor;
- % On affiche
- picture Corps;
- Corps=image(
- nbaffiche:=0;
- for k=0 upto LargeurLaby-1:
- for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
- label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
- endfor;
- endfor;
- 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])]);
- endfor;
- trace TraceLabyrinthe;
- );
- Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
- trace Corps;
- \end{mplibcode}
-}
-
-\newcommand\TraceSolution[6]{%
- \mplibforcehmode%
- \xdef\PfCNomLabyrinthe{\useKV[ClesLabyNb]{Nom}}%
- \begin{mplibcode}[\PfCNomLabyrinthe]
- picture CorpsSolution;
- CorpsSolution=image(
- nbaffiche:=0;
- for k=0 upto #3-1:
- for l=0 upto #2-1:
- nbaffiche:=nbaffiche+1;
- label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
- endfor;
- endfor;
- 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 \useKV[ClesLabyNb]{CouleurChemin};
- label(TEX("\num{"&decimal(NbSol[k])&"}"),M[xpart(PileChemin[k])][ypart(PileChemin[k])]);
- endfor;
- trace TraceLabyrinthe;
- );
- CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
- trace CorpsSolution;
- \end{mplibcode}
-}%
-
-\newcommand\TraceLabyNombreold[6]{%
- \mplibforcehmode%
- \begin{mplibcode}
- input PfCLabyNombre;
-
- boolean Murs;
- Murs=\useKV[ClesLabyNb]{Murs};
-
- numeric Multiple;
- Multiple=#1;
- % Initialisation du labyrinthe
- InitialisationLabyrinthe(#2,#3);
- % On initialise les paramètres du parcours
- numeric choixligneD,choixligneA,choixcolonneD,choixcolonneA;
- choixligneD=xpart(#4);
- choixcolonneD=ypart(#4);
- choixligneA=xpart(#5);
- choixcolonneA=ypart(#5);%
- pair Depart;
- Depart=N[choixligneD][choixcolonneD];
- pair Arrivee;
- Arrivee=N[choixligneA][choixcolonneA];
- pair Mobile;
- Mobile=Depart;
- RAZPileChemin;
- % Exploration du labyrinthe
- PushChemin((choixligneD,choixcolonneD));
- CaseExploree[choixligneD][choixcolonneD]:=true;
- VoisinDispo(choixligneD,choixcolonneD);
- forever: exitif Mobile=Arrivee;%nb=0;
- nb:=ceiling(uniformdeviate(nbvoisin));
- if nb>0:
- for k=1 upto nbvoisin:
- CaseExploree[xpart(PileVoisin[k])][ypart(PileVoisin[k])]:=true;
- endfor;
- PushChemin((xpart(PileVoisin[nb]),ypart(PileVoisin[nb])));
- Mobile:=N[xpart(PileChemin[indiceChemin])][ypart(PileChemin[indiceChemin])];
- VoisinDispo(xpart(PileChemin[indiceChemin]),ypart(PileChemin[indiceChemin]));
- else:
- PopChemin;
- fi;
- endfor;
- % Affichagefinal
- % on sauvegarde les nombres aléatoires
- numeric NbAffiche[];
- numeric NbSol[];
- % on écrit des nombres au hasard, mais sans être multiple du nombre choisi
- numeric nbaffiche;
- nbaffiche=0;
- for k=0 upto LargeurLaby-1:
- for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
- NbAffiche[nbaffiche]:=(50+ceiling(uniformdeviate(100)))*Multiple+ceiling(uniformdeviate(Multiple-1));
- endfor;
- endfor;
- % On crée des multiples du nombre choisi
- for k=2 upto indiceChemin-1:
- NbSol[k]=(50+ceiling(uniformdeviate(100)))*Multiple;
- endfor;
- % On affiche
- picture Corps;
- Corps=image(
- nbaffiche:=0;
- for k=0 upto LargeurLaby-1:
- for l=0 upto LongueurLaby-1:
- nbaffiche:=nbaffiche+1;
- label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
- endfor;
- endfor;
- 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])]);
- endfor;
- trace TraceLabyrinthe;
- );
- Corps:=(Corps scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
- trace Corps;
- \end{mplibcode}
-}
-
-\newcommand\TraceSolutionold[6]{%
- \mplibforcehmode%
- \mplibcodeinherit{enable}
- \begin{mplibcode}
- picture CorpsSolution;
- CorpsSolution=image(
- nbaffiche:=0;
- for k=0 upto #3-1:
- for l=0 upto #2-1:
- nbaffiche:=nbaffiche+1;
- label(TEX("\num{"&decimal(NbAffiche[nbaffiche])&"}"),M[k][l]);
- endfor;
- endfor;
- 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])]);
- endfor;
- trace TraceLabyrinthe;
- );
- CorpsSolution:=(CorpsSolution scaled \useKV[ClesLabyNb]{Echelle}) rotated \useKV[ClesLabyNb]{Angle};
- trace CorpsSolution;
- \end{mplibcode}
- \mplibcodeinherit{disable}
-}%
-
%%%
% Mots croisés
%%%
@@ -7214,7 +7501,7 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,
}%
%%% Colorilude %%%
-\setKVdefault[Colorilude]{Largeur=10,Lignes=10,Legende=false,Coef=0.6,Solution=false}
+\setKVdefault[Colorilude]{Largeur=10,Lignes=10,Legende=false,Coef=0.6,Solution=false,CartonReponse=false,Resultats=false}
\newcommand\dispogpfc[3][]{%
\setbox1=\hbox{#2}%
@@ -7404,20 +7691,18 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\xdef\ListeColoriludeMax{\listlen\ListeColorilude[##1]}%
}{}%
}%
- %
- % On affiche le tableau
\setlength{\tabcolsep}{0.2\tabcolsep}%
\begin{NiceTabular}{*{\fpeval{\ListeColoriludeMax/2}}{rl}}%
\xintFor* ##1 in {\xintSeq {1}{\ListeColoriludelen}}\do{%
\xintifboolexpr{\listlen\ListeColorilude[##1]==\ListeColoriludeMax}{%
\xintFor* ##2 in {\xintSeq {1}{\listlen\ListeColorilude[##1]}}\do{%
- \xintifForFirst{}{&~}\ifodd##2\fbox{\begin{minipage}{1em}\centering\text{\ttfamily\bfseries\ListeColorilude[##1,##2]}\end{minipage}}~\else$\ListeColorilude[##1,##2]$\fi%
+ \xintifForFirst{}{&~}\ifodd##2\fbox{\begin{minipage}{1em}\centering\text{\ttfamily\bfseries\ListeColorilude[##1,##2]}\end{minipage}}\ifboolKV[Colorilude]{Resultats}{\fbox{\begin{minipage}{1em}\centering\ttfamily\bfseries \phantom{R}\end{minipage}}}{}~\else\ifboolKV[Colorilude]{CartonReponse}{\pointilles[25pt]}{$\ListeColorilude[##1,##2]$}\fi%
}%
}{%
\xintFor* ##2 in {\xintSeq {1}{\listlen\ListeColorilude[##1]}}\do{%
- \xintifForFirst{}{&~}\ifodd##2\fbox{\begin{minipage}{1em}\centering\text{\ttfamily\bfseries\ListeColorilude[##1,##2]}\end{minipage}}~\else$\ListeColorilude[##1,##2]$\fi%
+ \xintifForFirst{}{&~}\ifodd##2\fbox{\begin{minipage}{1em}\centering\text{\ttfamily\bfseries\ListeColorilude[##1,##2]}\end{minipage}}\ifboolKV[Colorilude]{Resultats}{\fbox{\begin{minipage}{1em}\centering\ttfamily\bfseries \phantom{R}\end{minipage}}}{}~\else\ifboolKV[Colorilude]{CartonReponse}{\pointilles[25pt]}{$\ListeColorilude[##1,##2]$}\fi%
}%
- &\hbox to1em{~}&\Cdots%
+ &\hbox to5pt{}&\Cdots%
}%
\\[0.5em]%
}%
@@ -7989,7 +8274,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\TraceDessinGradueSolution{\useKV[DessinGradue]{Lignes}}{\useKV[DessinGradue]{Debut}}{\useKV[DessinGradue]{Fin}}{\useKV[DessinGradue]{Pas}}{\the\toklisteptsgrad}{\the\toklistetracesgrad}%
}{%
\TraceDessinGradue{\useKV[DessinGradue]{Lignes}}{\useKV[DessinGradue]{Debut}}{\useKV[DessinGradue]{Fin}}{\useKV[DessinGradue]{Pas}}%
- }
+ }%
}{%
\setsepchar[*]{,*/}%
\readlist\ListeDefLigne{#2}%
@@ -10127,6 +10412,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=2cm,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false}%
\newlength{\LargeurQCM}%
+\newlength{\PfCLargeurQCM}%
\newcounter{QuestionQCM}%
\newcounter{TitreQCM}%
\ifdef{\QCM}{%
@@ -10160,7 +10446,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{tabular}%
}{%
\ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}
+ \setKV[ClesQCM]{Reponses=2}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
\renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
\setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
\xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
@@ -10228,9 +10516,10 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\renewcommand{\arraystretch}{1}%
}{%
\ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}
+ \setKV[ClesQCM]{Reponses=2}%
\renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}%
+ \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}%
\xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
\begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}%
\cline{2-\NBcases}%
@@ -11066,7 +11355,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}{%
% On d\'emarre la r\'esolution
\ifboolKV[ClesPythagore]{SansMots}{%
- \MPFigurePythaSansMots{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}
+ \MPFigurePythaSansMots{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}%
}{%
\ifboolKV[ClesPythagore]{AllPerso}{%
\RedactionPythagore%
@@ -11160,7 +11449,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% y a dans un "seul calcul".
\setcounter{NbCalculDistri}{0}
-\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false}%,AideAdd=false:inutile ?
+\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false,Tableau=false}%,AideAdd=false:inutile ?
\newcommand\Tuile[4]{%
\ifluatex
@@ -11594,183 +11883,187 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ifboolKV[ClesDistributivite]{Tuile}{%
\Tuile{#2}{#3}{#4}{#5}%
}{%
- \ensuremath{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{%
- \DistriEchange[#1]{#2}{#3}{#4}{#5}%
- }{%
- \ifboolKV[ClesDistributivite]{Remarquable}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
- \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
- }{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- \ifx\bla#4\bla%
- \xdef\Multi{\fpeval{#2*#2}}%
- \xdef\Multij{\fpeval{#2*#3}}%
- \xdef\Multik{\fpeval{#3*#2}}%
- \xdef\Multil{\fpeval{#3*#3}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
- \else%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- \fi%
- }{}%
+ \ifboolKV[ClesDistributivite]{Tableau}{%
+ \DistriTableau[#1]{#2}{#3}{#4}{#5}%
+ }{%
+ \ensuremath{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{%
+ \DistriEchange[#1]{#2}{#3}{#4}{#5}%
}{%
- \ifboolKV[ClesDistributivite]{Numerique}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{%
- \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
- }{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{%
- \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ \ifboolKV[ClesDistributivite]{Remarquable}{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
+ \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
+ }{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2+2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-2\times\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2==1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2==1}{}{)}^2-\num{#3}^2\fi}{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifx\bla#4\bla%
+ \xdef\Multi{\fpeval{#2*#2}}%
+ \xdef\Multij{\fpeval{#2*#3}}%
+ \xdef\Multik{\fpeval{#3*#2}}%
+ \xdef\Multil{\fpeval{#3*#3}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
+ \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
- }%
- }%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
+ \else%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ \fi%
+ }{}%
}{%
- \ifboolKV[ClesDistributivite]{All}{%
- \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
- \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
- \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}%
- \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
- {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}%
- \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}%
+ \ifboolKV[ClesDistributivite]{Numerique}{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{%
+ \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}%
+ }{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{%
+ \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}%
+ }{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
+ }%
+ }%
}{%
- % Etape 1
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
- \xintifboolexpr{#2==0}{%
- }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
- %
- \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
- \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
- %
- \xintifboolexpr{\Multi==0}{\times%
- \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
- \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{\Multi==0}{%
- \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
- \ifboolKV[ClesDistributivite]{Fleches}{%
- \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \ifboolKV[ClesDistributivite]{All}{%
+ \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
+ \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
+ \xdef\NomVariable{\useKV[ClesDistributivite]{Lettre}}%
+ \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
+ {\NomLettre&=\Distri[Etape=##1,Lettre=\NomVariable]{#2}{#3}{#4}{#5}\\}%
+ \NomLettre&=\Distri[Etape=\NomFin,Lettre=\NomVariable]{#2}{#3}{#4}{#5}%
+ }{%
+ % Etape 1
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
+ \xintifboolexpr{#2==0}{%
+ }{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
+ \xintifboolexpr{#2==0}{}{\xintifboolexpr{#3==0}{}{)}}%
+ %
+ \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
+ \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
+ %
+ \xintifboolexpr{\Multi==0}{\times%
+ \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
+ \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#5>0}{\xintifboolexpr{#4==0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4==0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
\xintifboolexpr{\Multi==0}{%
- \xdef\Multij{\fpeval{#2*#3}}%\relax
- \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
- }{%
- \DrawArrow%
+ \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
+ \ifboolKV[ClesDistributivite]{Fleches}{%
+ \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \xintifboolexpr{\Multi==0}{%
+ \xdef\Multij{\fpeval{#2*#3}}%\relax
+ \xintifboolexpr{\Multij==0}{\xintifboolexpr{#2==0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4==0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
+ }{%
+ \DrawArrow%
+ }%
+ }{}\setcounter{NbDistri}{0}%
+ }{}
+ % Etape 2
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xintifboolexpr{\Multi==0}{}{%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
+ }
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xintifboolexpr{\Multij==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
}%
- }{}\setcounter{NbDistri}{0}%
- }{}
- % Etape 2
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xintifboolexpr{\Multi==0}{}{%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }
- \xdef\Multij{\fpeval{#2*#5}}%
- \xintifboolexpr{\Multij==0}{}{%
- \xintifboolexpr{\Multi==0}{}{+}%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xintifboolexpr{\Multik==0}{}{%
- \xintifboolexpr{\Multi==0}{}{+}%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }%
- \xdef\Multil{\fpeval{#3*#5}}%
- \xintifboolexpr{\Multil==0}{}{+%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- }{}%
- % Etape 3
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
- \stepcounter{NbCalculDistri}%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
- \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xintifboolexpr{\Multik==0}{}{%
+ \xintifboolexpr{\Multi==0}{}{+}%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
}%
- }{%
- \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
- }%
- \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
- }{}%
- % Etape 4
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont red\'efinis pour pouvoir envisager la somme de deux
- %% expressions \`a d\'evelopper
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ \xintifboolexpr{\Multil==0}{}{+%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
+ }%
+ }{}%
+ % Etape 3
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
+ \stepcounter{NbCalculDistri}%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- \xintifboolexpr{\Multim==0}{}{%
- \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
+ \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ }%
+ }{%
+ \xintifboolexpr{\Multij==0}{}{\xintifboolexpr{\Multi==0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik==0}{}{\xintifboolexpr{\Multil==0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#2==0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
}%
- \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- }{}%
+ \xintifboolexpr{\Multil==0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
+ }{}%
+ % Etape 4
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont red\'efinis pour pouvoir envisager la somme de deux
+ %% expressions \`a d\'evelopper
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi==0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim==0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
+ \xintifboolexpr{\Multim==0}{}{%
+ \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ }%
+ \xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ }{}%
+ }%
}%
}%
}%
@@ -11780,6 +12073,22 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}%
}%
+\newcommand\DistriTableau[5][]{%
+ \useKVdefault[ClesDistributivite]%
+ \setKV[ClesDistributivite]{#1}%
+ \ensuremath{%
+ \begin{array}{|>{\columncolor{gray!15}}c|c|c|}
+ \hline
+ \rowcolor{gray!15}\times&\Affichage[#1]{0}{#4}{0}&\Affichage[#1]{0}{0}{#5}\\
+ \hline
+ \xintifboolexpr{#2==0}{}{\Affichage[#1]{0}{#2}{0}&\Affichage[#1]{\fpeval{#2*#4}}{0}{0}&\xintifboolexpr{\fpeval{#2*#5}>0}{+}{}\Affichage[#1]{0}{\fpeval{#2*#5}}{0}\\
+ \hline}%
+ \xintifboolexpr{#3==0}{}{\xintifboolexpr{#3>0}{+}{}\Affichage[#1]{0}{0}{#3}&\xintifboolexpr{\fpeval{#3*#4}>0}{+}{}\Affichage[#1]{0}{\fpeval{#3*#4}}{0}&\xintifboolexpr{\fpeval{#3*#5}>0}{+}{}\Affichage[#1]{0}{0}{\fpeval{#3*#5}}\\
+ \hline}
+ \end{array}
+ }%
+}%
+
\newcommand\Resultat[1][]{%
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
\ensuremath{%
@@ -14334,15 +14643,16 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% #4 longueur AB
% #5 longueur AF
% #6 longueur AC
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
\ifboolKV[ClesThales]{FigureSeule}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+% \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
\MPFigReciThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
}{\ifboolKV[ClesThales]{FigurecroiseeSeule}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+% \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
}{%
\ifboolKV[ClesThales]{Figure}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+% \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
\begin{multicols}{2}
{\em La figure est donn\'ee \`a titre indicatif.}
\[\MPFigReciThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]
@@ -14351,16 +14661,16 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}
\end{multicols}
}{\ifboolKV[ClesThales]{Figurecroisee}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]
- \begin{minipage}{0.4\linewidth}
- {\em La figure est donn\'ee \`a titre indicatif.}
- \[\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]
- \end{minipage}
+% \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]
+ \fbox{\begin{minipage}{0.4\linewidth}%
+ {\em La figure est donn\'ee \`a titre indicatif.}%
+ \[\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]%
+ \end{minipage}}
\hfill
- \begin{minipage}{0.55\linewidth}
+ \begin{minipage}{0.55\linewidth}%
\ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
\ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
- \end{minipage}\\%
+ \end{minipage}%
}{\ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
\ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
}%
@@ -19109,7 +19419,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
%%%
% 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,Marque=dot}
+\setKVdefault[TraceG]{Grille=false,Graduations=false,PasGradX=1,PasGradY=1,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]%
@@ -19324,6 +19634,8 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
y.u=1cm/\useKV[TraceG]{Ystep};
grillex=\useKV[TraceG]{PasGrilleX};
grilley=\useKV[TraceG]{PasGrilleY};
+ gradx=\useKV[TraceG]{PasGradX};
+ grady=\useKV[TraceG]{PasGradY};
pos=\useKV[TraceG]{LabelC};
color colortrace;
@@ -19395,22 +19707,23 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
drawoptions();
fi;
if Graduations:
- for k=1 upto xmax/grillex:
+ for k=gradx step gradx until xmax*gradx/grillex:
dotlabel.bot(TEX("\num{"&decimal(k)&"}"),(k*x.u+xpart(Origine*cm),ypart(Origine*cm)));
endfor;
- for k=-1 downto xmin/grillex:
+ for k=-gradx step -gradx until xmin*gradx/grillex:
dotlabel.bot(TEX("\num{"&decimal(k)&"}"),(k*x.u+xpart(Origine*cm),ypart(Origine*cm)));
endfor;
- for k=1 upto ymax/grilley:
+ for k=grady step grady until ymax*grady/grilley:
dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(xpart(Origine*cm),k*y.u+ypart(Origine*cm)));
endfor;
- for k=-1 downto ymin/grilley:
+ for k=-grady step -grady until ymin*grady/grilley:
dotlabel.lft(TEX("\num{"&decimal(k)&"}"),(xpart(Origine*cm),k*y.u+ypart(Origine*cm)));
endfor;
fi;
drawoptions(withpen pencircle scaled1.5);
drawarrow (u*(0,ymin)--u*(0,ymax)) shifted (u*(xpart(Origine),0));
drawarrow (u*(xmin,0)--u*(xmax,0)) shifted (u*(0,ypart(Origine)));
+ label.llft(btex 0 etex,u*Origine);
drawoptions();
draw courbe1(borneinf,bornesup,100)(#2) withcolor colortrace;
% labelisation
@@ -19430,9 +19743,9 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
\usepackage{ProfCollege}
\setKV[TraceG]{#1}
}
- \begin{mpost}[mpsettings={borneinf=\useKV[TraceG]{Bornea};bornesup=\useKV[TraceG]{Borneb};xmin=\useKV[TraceG]{Xmin};xmax=\useKV[TraceG]{Xmax};ymin=\useKV[TraceG]{Ymin};ymax=\useKV[TraceG]{Ymax};pasx=\useKV[TraceG]{Xstep};pasy=\useKV[TraceG]{Ystep};xu=1cm/\useKV[TraceG]{Xstep};yu=1cm/\useKV[TraceG]{Ystep};grillex=\useKV[TraceG]{PasGrilleX};grilley=\useKV[TraceG]{PasGrilleY};pos=\useKV[TraceG]{LabelC};color colortrace;colortrace=\useKV[TraceG]{CouleurTrace};boolean Grille;Grille=\useKV[TraceG]{Grille};boolean Graduations;Graduations=\useKV[TraceG]{Graduations};}]
+ \begin{mpost}[mpsettings={borneinf=\useKV[TraceG]{Bornea};bornesup=\useKV[TraceG]{Borneb};xmin=\useKV[TraceG]{Xmin};xmax=\useKV[TraceG]{Xmax};ymin=\useKV[TraceG]{Ymin};ymax=\useKV[TraceG]{Ymax};pasx=\useKV[TraceG]{Xstep};pasy=\useKV[TraceG]{Ystep};xu=1cm/\useKV[TraceG]{Xstep};yu=1cm/\useKV[TraceG]{Ystep};grillex=\useKV[TraceG]{PasGrilleX};grilley=\useKV[TraceG]{PasGrilleY};pos=\useKV[TraceG]{LabelC};color colortrace;colortrace=\useKV[TraceG]{CouleurTrace};boolean Grille;Grille=\useKV[TraceG]{Grille};boolean Graduations;Graduations=\useKV[TraceG]{Graduations};
pair Origine;
- Origine=(xmin,ymin)+\useKV[TraceG]{Origine};
+ Origine=(xmin,ymin)+\useKV[TraceG]{Origine};}]
vardef sin(expr t) = sind(c*t) enddef;
@@ -23318,7 +23631,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
}%
}%
-\newcommand\Capa[2][]{%
+\NewDocumentCommand\Capa{o m}{%
\useKVdefault[Unites]%
\setKV[Unites]{#1}%
\ifboolKV[Unites]{kL}{%
@@ -24527,8 +24840,10 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
%
\ifboolKV[ClesTableaux]{Cube}{%
\[\renewcommand{\arraystretch}{1.15}%
- \setlength{\tabcolsep}{0.625\tabcolsep}%
- \begin{NiceTabular}{*{7}{wc{3.5mm}wc{3.5mm}wc{3.5mm}}}
+% \setlength{\tabcolsep}{0.625\tabcolsep}%
+% \begin{NiceTabular}{*{7}{wc{3.5mm}wc{3.5mm}wc{3.5mm}}}
+ \setlength{\tabcolsep}{0.275\tabcolsep}%
+ \begin{NiceTabular}{*{7}{wc{15pt}wc{15pt}wc{15pt}}}
\Block[]{1-3}{}%
&&&\Block[]{1-3}{}%
&&&\Block[]{1-3}{}%
@@ -24538,7 +24853,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
&&&\Block[]{1-3}{}\\
\Block[borders={left,top,right}]{1-3}{km$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{hm$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{dam$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{m$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{dm$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{cm$^3$\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{mm$^3$\PfCTBstrut}&&\\
\ifboolKV[ClesTableaux]{Capacite}{%
- \Block[borders={left,right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[draw=gray!50,borders={top,left,bottom}]{}{\scriptsize hL}&\Block[draw=gray!50,borders={top,bottom},l]{}{\scriptsize daL}&\Block[draw=gray!50,borders={top,right,bottom}]{}{\scriptsize L}&\Block[draw=gray!50,borders={top,left,bottom}]{}{\scriptsize dL}&\Block[draw=gray!50,borders={top,bottom}]{}{\scriptsize cL}&\Block[draw=gray!50,borders={top,right,bottom}]{}{\scriptsize mL}&\Block[borders={right,bottom}]{1-3}{}&&\\
+ \Block[borders={left,right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[borders={right,bottom}]{1-3}{}&&&\Block[draw=gray!50,borders={top,left,bottom}]{}{\scriptsize hL}&\Block[draw=gray!50,borders={top,bottom}]{}{\scriptsize daL}&\Block[draw=gray!50,borders={top,right,bottom}]{}{\scriptsize L}&\Block[draw=gray!50,borders={top,left,bottom}]{}{\scriptsize dL}&\Block[draw=gray!50,borders={top,bottom}]{}{\scriptsize cL}&\Block[draw=gray!50,borders={top,right,bottom}]{}{\scriptsize mL}&\Block[borders={right,bottom}]{1-3}{}&&\\
}{\hline}%
\xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
&&&&&&&&&&&&&&&&&&&&\\
@@ -25926,15 +26241,14 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\xdef\PapierCouleur{\useKV[Papiers]{Couleur}}%
\xdef\PapierGrille{\useKV[Papiers]{Grille}}%
\xdef\PapierGrillePointe{\useKV[Papiers]{GrillePointe}}%
- \checkoddpage%
- \ifoddpage%
- \setlength{\PapierLeftCurrent}{\oddsidemargin}%
- \else%
- \setlength{\PapierLeftCurrent}{\evensidemargin}%
- \fi%
- \xdef\PapierLeft{\the\dimexpr1in+\PapierLeftCurrent}%
- \xdef\PapierBottom{\fpeval{\paperheight-\textheight-\voffset-\headheight-\topmargin-\headsep-1in}}%
\ifboolKV[Papiers]{ZoneTexte}{%
+ \checkoddpage\ifoddpage%
+ \setlength{\PapierLeftCurrent}{\oddsidemargin}%
+ \else%
+ \setlength{\PapierLeftCurrent}{\evensidemargin}%
+ \fi%
+ \xdef\PapierLeft{\the\dimexpr1in+\PapierLeftCurrent}%
+ \xdef\PapierBottom{\fpeval{\paperheight-\textheight-\voffset-\headheight-\topmargin-\headsep-1in}}%
\xdef\PapierHauteur{\fpeval{\textheight/1cm}}%
\xdef\PapierLargeur{\fpeval{\textwidth/1cm}}%
\begin{tikzpicture}[remember picture,overlay]%
@@ -25971,6 +26285,13 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\end{tikzpicture}%
}{%
\ifboolKV[Papiers]{PageEntiere}{%
+ \checkoddpage\ifoddpage%
+ \setlength{\PapierLeftCurrent}{\oddsidemargin}%
+ \else%
+ \setlength{\PapierLeftCurrent}{\evensidemargin}%
+ \fi%
+ \xdef\PapierLeft{\the\dimexpr1in+\PapierLeftCurrent}%
+ \xdef\PapierBottom{\fpeval{\paperheight-\textheight-\voffset-\headheight-\topmargin-\headsep-1in}}%
\xdef\PapierHauteur{\fpeval{\paperheight/1cm}}%
\xdef\PapierLargeur{\fpeval{\paperwidth/1cm}}%
\begin{tikzpicture}[remember picture,overlay]%