summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-01-07 21:27:13 +0000
committerKarl Berry <karl@freefriends.org>2024-01-07 21:27:13 +0000
commit20e34a4f89a7ed782e4f3c356e68913db3b4b3c8 (patch)
tree71c2b7176e942ee95808343782ac79d1dbabc5be
parent20b51efbc819f03c784d23252578ceedd707e15a (diff)
profcollege (6jan24)
git-svn-id: svn://tug.org/texlive/trunk@69336 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdfbin9706655 -> 9752363 bytes
-rw-r--r--Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zipbin5972289 -> 5939420 bytes
-rw-r--r--Master/texmf-dist/metapost/profcollege/PfCCalculatrice.mp28
-rw-r--r--Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp41
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex2
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex1
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex12
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex17
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCCible.tex12
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex99
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex8
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex39
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCEquationModeleBarre.tex301
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex115
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCLego.tex34
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex166
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex7
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex16
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex599
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex32
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex5
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex14
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex69
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex321
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex37
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex33
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex32
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex13
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex71
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex19
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCThales.tex6
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex6
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex91
-rw-r--r--Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty79
35 files changed, 2006 insertions, 326 deletions
diff --git a/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf b/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
index b13797000f8..62ee043d520 100644
--- a/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
+++ b/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip b/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip
index 3c370bea2f9..10225ae6f27 100644
--- a/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip
+++ b/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.zip
Binary files differ
diff --git a/Master/texmf-dist/metapost/profcollege/PfCCalculatrice.mp b/Master/texmf-dist/metapost/profcollege/PfCCalculatrice.mp
index 28252f90bf1..c308ec750c2 100644
--- a/Master/texmf-dist/metapost/profcollege/PfCCalculatrice.mp
+++ b/Master/texmf-dist/metapost/profcollege/PfCCalculatrice.mp
@@ -30,6 +30,9 @@ nblignes:=0;
boolean print;
print:=false;
+color coulprint;
+coulprint=0.8white;
+
color CouleurEcran;
CouleurEcran=(107/255,148/255,107/255);
@@ -177,8 +180,8 @@ vardef LCD(text nt)(text rep)(expr NB)=
nblignes:=nblignes+1;
path Ecran;
Ecran:=(u*(0,-1)--u*(LargeurEcran,-1)--u*(LargeurEcran,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1)));
- fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
- draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ fill Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
+ draw Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
if length(nt)>0:
for k=0 upto length(nt)-1:
BlocAffichage;
@@ -187,13 +190,13 @@ vardef LCD(text nt)(text rep)(expr NB)=
fi;
for k=1 upto NB:
Ecran:=(u*(0,-1)--u*(LargeurEcran,-1)--u*(LargeurEcran,7)--u*(0,7)--cycle) shifted(u*(0,-8*(k+nblignes-1)));
- fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
- draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ fill Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
+ draw Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
endfor;
nblignes:=nblignes+NB+1;
Ecran:=(u*(0,-1)--u*(LargeurEcran,-1)--u*(LargeurEcran,7)--u*(0,7)--cycle) shifted(u*(0,-8*(nblignes-1)));
- fill Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
- draw Ecran withcolor if print=true:0.8white else:CouleurEcran fi;
+ fill Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
+ draw Ecran withcolor if print=true:coulprint else:CouleurEcran fi;
if Calcul:
string toto;
toto=decimal(rep);
@@ -207,4 +210,17 @@ vardef LCD(text nt)(text rep)(expr NB)=
fi;
enddef;
+def tand(expr nbang)=sind(nbang)/cosd(nbang)enddef;
+
+vardef arcsind(expr x)=%Définition mathématique en degré
+ angle((sqrt(1-x**2),x))
+enddef;
+
+vardef arccosd(expr x)=%Définition mathématique en degré
+ angle((x,sqrt(1-x**2)))
+enddef;
+
+vardef arctand(expr x)=arcsind(x/(1++x))
+enddef;
+
endinput;
diff --git a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
index bada2c141a9..7ec73e648c6 100644
--- a/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
+++ b/Master/texmf-dist/metapost/profcollege/PfCGeometrie.mp
@@ -523,6 +523,45 @@ vardef marquedemidroite(expr aa,bb)=
tr
enddef;
+vardef marque_para(expr dd,ee,pa)=
+ save im;
+ picture im;
+ pair kk,ll,mn,mo;
+ kk=point(pa*length dd) of dd;
+ ll=projection(kk,point(0.25*length ee) of ee,point(0.5*length ee) of ee);
+ mn=iso(kk,ll);
+ mo=(mn--kk) intersectionpoint cercles(mn,3mm);
+ im=image(
+ drawarrow mo--kk;
+ drawarrow symetrie(mo,mn)--ll;
+ label(btex // etex,mn);
+ );
+ im
+enddef;
+
+vardef marque_Para(text totem)(expr dd,ee,pa)=
+ save im;
+ picture im;
+ pair kk,ll,mn,mo;
+ kk=point(pa*length dd) of dd;
+ ll=projection(kk,point(0.25*length ee) of ee,point(0.5*length ee) of ee);
+ mn=iso(kk,ll);
+ mo=(mn--kk) intersectionpoint cercles(mn,3mm);
+ im=image(
+ drawarrow (mn{dir(210+angle(mn-mo))}..{dir(150+angle(mn-mo))}kk) cutbefore cercles(mn,3mm);
+ drawarrow symetrie((mn{dir(210+angle(mn-mo))}..{dir(150+angle(mn-mo))}kk) cutbefore cercles(mn,3mm),mn);
+ trace cercles(mn,3mm);
+ for p_=totem:
+ if p_="":
+ label(btex // etex ,mn);
+ else:
+ label(btex ? etex,mn);
+ fi;
+ endfor;
+ );
+ im
+enddef;
+
%------------------------------------------------
% Transformations
%------------------------------------------------
@@ -1349,7 +1388,7 @@ vardef Equerre(expr dte,drte,perpe,sens)=
pair CentreE;
CentreE=CentreCercleI(perpen,ptt,pttt);
$=image(
- fill (perpen--ptt--pttt--cycle) withcolor 0.9*white;
+ fill (perpen--ptt--pttt--cycle) withcolor gris;
draw perpen--ptt--pttt--cycle;
draw codeperp(ptt,perpen,pttt,5);
fill homothetie(polygone(perpen,ptt,pttt),CentreE,0.6) withcolor white;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
index 85f4d39112b..b75161ffcc9 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCAutonomie.tex
@@ -4,7 +4,7 @@
\newcommand\Autonomie[3][]{%
\useKVdefault[Autonomie]%
\setKV[Autonomie]{#1}%
- \setsepchar[*]{§*/}%
+ \setsepchar[*]{§*/}\reademptyitems%
\readlist*\ListeAutoQ{#2}%
% \setsepchar{§}
% \readlist*\ListeAutoR{#3}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
index 5334568dff3..acb5e283884 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex
@@ -81,7 +81,6 @@
\readlist*\ListePetitsObjetsCAN{bonbons,billes,biscuits,gommes,clous,vis}
\readlist*\ListeFruitsCAN{pommes,poires,abricots,cerises,fraises,framboises,noix,pêches,nectarines,myrtilles,oranges,mandarines}
\readlist*\ListeSommetsCAN{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
-
\newcommand\ExtraitPetitsObjets[1]{%
\xdef\CANSGFoo{}%
\foreachitem\compteur\in\ListePetitsObjetsCAN{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
index eb1a55e7688..81464aa744c 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex
@@ -113,7 +113,12 @@
\mplibnumbersystem{double}%
\mplibforcehmode%
\begin{mplibcode}%
+ defaultcolormodel := \useKV[ClesCalculatrice]{ModeleCouleur};
input PfCCalculatrice;
+ if defaultcolormodel=7:
+ cmykcolor coulprint;
+ coulprint=0.2(0,0,0,1);
+ fi;
LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};
boolean Calcul;
Calcul=\useKV[ClesCalculatrice]{Calcul};
@@ -128,7 +133,7 @@
\fi%
}%
-\setKVdefault[ClesCalculatrice]{Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false}%
+\setKVdefault[ClesCalculatrice]{ModeleCouleur=5,Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false}%
\newcommand\Calculatrice[2][]{%
\setstackgap{L}{\useKV[ClesCalculatrice]{BL}\baselineskip}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
index 60c424bdff8..929b1fb28e9 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalisson.tex
@@ -1,7 +1,7 @@
%%%
% Calisson
%%%
-\setKVdefault[Calisson]{Taille=3,Solution=false,Rayon=5cm,Couleur=red}%
+\setKVdefault[Calisson]{Taille=3,Solution=false,Rayon=5cm,Couleur=red,CouleurTrace=black}%
\def\UpdatetoksCalissong#1\nil{\addtotok\tokcalissonlistetracesg{,"#1"}}%
\def\UpdatetoksCalissongDepart#1\nil{\addtotok\tokcalissonlistetracesg{"#1"}}%
@@ -143,8 +143,10 @@
boolean Solution;
Solution:=\useKV[Calisson]{Solution};
%
- color CouleurSolution;
+ color CouleurSolution,CouleurTrace;
CouleurSolution:=\useKV[Calisson]{Couleur};
+ CouleurTrace:=\useKV[Calisson]{CouleurTrace};
+ %
%
Rayon=\useKV[Calisson]{Rayon};
Taille=\useKV[Calisson]{Taille};
@@ -219,12 +221,14 @@
Depla:=Hor;
%
vardef LesTracesg(text t)=
+ drawoptions(withcolor CouleurTrace);
trace polygone(A,B,C,D,E,F) withpen pencircle scaled 2;
for k=1 upto 2*Taille-1:
trace (point(k*length Gauche/(2*Taille)) of Gauche)--(point(k*length Droit/(2*Taille)) of Droit) dashed evenly;
trace (point(k*length Haut/(2*Taille)) of Haut)--(point(k*length Bas/(2*Taille)) of Bas) dashed evenly;
trace (point(k*length TopGauche/(2*Taille)) of TopGauche)--(point(k*length BasDroit/(2*Taille)) of BasDroit) dashed evenly;
endfor;
+ drawoptions(withcolor CouleurTrace);
n:=0;
for p_=t:
n:=n+1;
@@ -236,7 +240,7 @@
fi;
if (Retiens="0") or (Retiens="f"):
elseif Retiens="t":
- trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurTrace;
elseif Retiens="s":
if Solution:
trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
@@ -263,7 +267,7 @@
% fill ((fullcircle scaled 3mm) shifted M[n]);
if (Retiens="0") or (Retiens="f"):
elseif Retiens="t":
- trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2;
+ trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurTrace;
elseif Retiens="s":
if Solution:
trace (chemin(Depla,E) shifted (M[n]-E)) withpen pencircle scaled 2 withcolor CouleurSolution;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
index a2bccc2321b..53ffa097d88 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex
@@ -1,7 +1,7 @@
%%%
% Cartographie
%%%
-\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2}
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2023/texmf-dist/metapost/profcollege/",Projection=false,TypeProjection="mercator",CouleurPays=Cornsilk,Pasl=2,PasL=2,Codes=false,Epaisseur=2,ModeleCouleur}
\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
@@ -135,6 +135,7 @@
% \mplibforcehmode
\begin{mplibcode}
input PfCMonde;
+ defaultcolormodel:=\useKV[Cartographie]{ModeleCouleur};
string arborescence;
arborescence:=\useKV[Cartographie]{Arborescence};
LargeurCadre=\useKV[Cartographie]{Largeur};
@@ -147,6 +148,19 @@
Impression=\useKV[Cartographie]{Impression};
VillesSup=\useKV[Cartographie]{VillesSup};
Codes=\useKV[Cartographie]{Codes};
+ if defaultcolormodel=7:
+ cmykcolor couleurfond,white,payscolor,couleurfleuve;
+ couleurfond=\useKV[Cartographie]{CouleurFond};
+ white=(0,0,0,1);
+ payscolor=white;
+ couleurfleuve=white;
+ if Impression:
+ noncolore:=true;
+ payscolor:=0.15white;
+ couleurfond:=(0,0,0,0);
+ couleurfleuve:=couleurfond;
+ fi;
+ else:
couleurfond:=\useKV[Cartographie]{CouleurFond};
if Impression:
noncolore:=true;
@@ -154,6 +168,7 @@
couleurfond:=white;
couleurfleuve:=couleurfond;
fi;
+ fi;
capitales:=\useKV[Cartographie]{Capitales};
All:=\useKV[Cartographie]{All};
Europe:=\useKV[Cartographie]{Europe};
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
index f59ec3d5938..d29fdccf9de 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCCible.tex
@@ -13,10 +13,10 @@
\toklisteciblea{}%
\xdef\PfCNombreZone{0}%
\ifboolKV[Cible]{Flechettes}{}{%
- \setsepchar{,}%
- \readlist*\PfCListeCible{#2}%
- \foreachitem\compteur\in\PfCListeCible{\expandafter\UpdatetoksCibleA\compteur\nil}%
- \xdef\PfCNombreZone{\PfCListeCiblelen}%
+ \setsepchar{,}%
+ \readlist*\PfCListeCible{#2}%
+ \foreachitem\compteur\in\PfCListeCible{\expandafter\UpdatetoksCibleA\compteur\nil}%
+ \xdef\PfCNombreZone{\PfCListeCiblelen}%
}%
\BuildCible{\the\toklisteciblea}%
}%
@@ -127,7 +127,6 @@
\end{mplibcode}
\else
\begin{mpost}[mpsettings={Rayon=\useKV[Cible]{RayonBase};Ecart=\useKV[Cible]{Ecart};boolean Flechettes,Impression;Flechettes=\useKV[Cible]{Flechettes};Impression=\useKV[Cible]{Impression};NombreCercles=\PfCNombreZone;}]
-
vardef affichage(text t)=
pair O;
O=u*(5,5);
@@ -210,7 +209,8 @@
n:=0;
for p_=t:
n:=n+1;
- label(LATEX("\bfseries "&p_),E[n]);
+ % label(LATEX("\noexpand\bfseries "&p_),E[n]);
+ label(LATEX(p_),E[n]);
endfor;
enddef;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex b/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex
new file mode 100644
index 00000000000..670e5ca28fb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCConversion.tex
@@ -0,0 +1,99 @@
+\setKVdefault[ClesConversion]{Longueur,Aire=false,Vol=false,Masses=false,Capas=false,Sans=false,Complete=40pt}
+\defKV[ClesConversion]{Masse=\setKV[ClesConversion]{Longueur=false}\setKV[ClesConversion]{Masses}}
+\defKV[ClesConversion]{Capa=\setKV[ClesConversion]{Longueur=false}\setKV[ClesConversion]{Capas}}
+
+\NewDocumentCommand\ChoixUniteD{m}{%
+ \IfStrEqCase{#1}{%
+ {G}{\DeclareSIUnit{\TempoPrefixeD}{\giga}\xdef\ExposantD{9}}%
+ {M}{\DeclareSIUnit{\TempoPrefixeD}{\mega}\xdef\ExposantD{6}}%
+ {t}{\DeclareSIUnit{\TempoPrefixeD}{\tonne}\xdef\ExposantD{6}}%
+ {q}{\DeclareSIUnit{\TempoPrefixeD}{\quintal}\xdef\ExposantD{5}}%
+ {k}{\DeclareSIUnit{\TempoPrefixeD}{\kilo}\xdef\ExposantD{3}}%
+ {h}{\DeclareSIUnit{\TempoPrefixeD}{\hecto}\xdef\ExposantD{2}}%
+ {da}{\DeclareSIUnit{\TempoPrefixeD}{\deca}\xdef\ExposantD{1}}%
+ {u}{\DeclareSIUnit{\TempoPrefixeD}{}\xdef\ExposantD{0}}%
+ {d}{\DeclareSIUnit{\TempoPrefixeD}{\deci}\xdef\ExposantD{-1}}%
+ {c}{\DeclareSIUnit{\TempoPrefixeD}{\centi}\xdef\ExposantD{-2}}%
+ {m}{\DeclareSIUnit{\TempoPrefixeD}{\milli}\xdef\ExposantD{-3}}%
+ {µ}{\DeclareSIUnit{\TempoPrefixeD}{\micro}\xdef\ExposantD{-6}}%
+ {n}{\DeclareSIUnit{\TempoPrefixeD}{\nano}\xdef\ExposantD{-9}}%
+ }%
+}%
+
+\NewDocumentCommand\ChoixUniteA{m}{%
+ \IfStrEqCase{#1}{%
+ {G}{\DeclareSIUnit{\TempoPrefixeA}{\giga}\xdef\ExposantA{9}}%
+ {M}{\DeclareSIUnit{\TempoPrefixeA}{\mega}\xdef\ExposantA{6}}%
+ {t}{\DeclareSIUnit{\TempoPrefixeA}{\tonne}\xdef\ExposantA{6}}%
+ {q}{\DeclareSIUnit{\TempoPrefixeA}{\quintal}\xdef\ExposantA{5}}%
+ {k}{\DeclareSIUnit{\TempoPrefixeA}{\kilo}\xdef\ExposantA{3}}%
+ {h}{\DeclareSIUnit{\TempoPrefixeA}{\hecto}\xdef\ExposantA{2}}%
+ {da}{\DeclareSIUnit{\TempoPrefixeA}{\deca}\xdef\ExposantA{1}}%
+ {u}{\DeclareSIUnit{\TempoPrefixeA}{}\xdef\ExposantA{0}}%
+ {d}{\DeclareSIUnit{\TempoPrefixeA}{\deci}\xdef\ExposantA{-1}}%
+ {c}{\DeclareSIUnit{\TempoPrefixeA}{\centi}\xdef\ExposantA{-2}}%
+ {m}{\DeclareSIUnit{\TempoPrefixeA}{\milli}\xdef\ExposantA{-3}}%
+ {µ}{\DeclareSIUnit{\TempoPrefixeA}{\micro}\xdef\ExposantA{-6}}%
+ {n}{\DeclareSIUnit{\TempoPrefixeA}{\nano}\xdef\ExposantA{-9}}%
+ }%
+}%
+
+\NewDocumentCommand\Convertir{somm}{%
+ \useKVdefault[ClesConversion]%
+ \setKV[ClesConversion]{#2}%
+ \StrBefore{#3}{>}[\PrefixeDepart]
+ \StrBehind{#3}{>}[\PrefixeArrivee]
+ \ChoixUniteD{\PrefixeDepart}%
+ \ChoixUniteA{\PrefixeArrivee}%
+ \ifboolKV[ClesConversion]{Aire}{%
+ \DeclareSIUnit{\TempoAvant}{\square}%
+ \DeclareSIUnit{\TempoBase}{\meter}
+ \xdef\PfCConvExposant{2}
+ }{\ifboolKV[ClesConversion]{Vol}{%
+ \DeclareSIUnit{\TempoAvant}{\cubic}%
+ \DeclareSIUnit{\TempoBase}{\meter}
+ \xdef\PfCConvExposant{3}
+ }{%
+ \DeclareSIUnit{\TempoAvant}{}%
+ \xdef\PfCConvExposant{1}
+ }%
+ }%
+ \ifboolKV[ClesConversion]{Masses}{%
+ \DeclareSIUnit{\TempoBase}{\gram}%
+ }{}%
+ \ifboolKV[ClesConversion]{Longueur}{%
+ \DeclareSIUnit{\TempoBase}{\meter}%
+ }{}%
+ \ifboolKV[ClesConversion]{Capas}{%
+ \DeclareSIUnit{\TempoBase}{\liter}%
+ }{}%
+ \ensuremath{
+ \IfBooleanTF{#1}{%
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \SI{#4}{\TempoAvant\TempoPrefixeD\TempoBase}
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ =
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \PointsSuspension{\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}}~\si{\TempoAvant\TempoPrefixeA\TempoBase}
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ }{%
+ \ifboolKV[ClesConversion]{Sans}{%
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \SI{#4}{\TempoAvant\TempoPrefixeD\TempoBase}
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ =
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \num{\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}}~\pointilles[25pt]
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ }{%
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \SI{#4}{\TempoAvant\TempoPrefixeD\TempoBase}
+ \IfStrEq{\PrefixeDepart}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeDepart}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ =
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\relax}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\relax}}{}
+ \SI{\fpeval{#4*(10**((\ExposantD-(\ExposantA))*\PfCConvExposant))}}{\TempoAvant\TempoPrefixeA\TempoBase}
+ \IfStrEq{\PrefixeArrivee}{t}{\DeclareSIUnit{\TempoBase}{\gram}}{}\IfStrEq{\PrefixeArrivee}{q}{\DeclareSIUnit{\TempoBase}{\gram}}{}
+ }%
+ }%
+ }%
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
index 29207b0373f..27922bdd038 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDessinerRatio.tex
@@ -1,7 +1,7 @@
%%%
% Lien : ratio
%%%
-\setKVdefault[ClesRatio]{FigureCours=false,Figure=false,Longueur=5cm,TexteTotal=quantit\'e,TextePart=part,Tableau=false,GrandeurA=Grandeur A,GrandeurB=Part(s),Largeur=1cm,Stretch=1,Nom=false,CouleurUn=gris,CouleurDeux=0.5gris+0.5blanc,CouleurTrois=white,CouleurTab=gray!15}
+\setKVdefault[ClesRatio]{FigureCours=false,Figure=false,Longueur=5cm,TexteTotal=quantit\'e,TextePart=part,Tableau=false,GrandeurA=Grandeur A,GrandeurB=Part(s),Largeur=1cm,Stretch=1,Nom=false,CouleurUn=gris,CouleurDeux=0.5gris+0.5blanc,CouleurTrois=white,CouleurTab=gray!15,ModeleCouleur=5}
\newcommand\MPTest[9][]{%
% #2 : Longueur de la barre unit\'e
@@ -12,7 +12,8 @@
% #7 \`a #9: Couleurs de remplissage
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesRatio]{ModeleCouleur};
vardef RatioTrois(expr long)(text t)=%longueur de la barre / quantit\'e \`a partager / textepart :) / t le ratio
pair A,B,C,D;
A=u*(1,1);
@@ -172,7 +173,8 @@
% #7 \`a #9: Couleurs de remplissage
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesRatio]{ModeleCouleur};
vardef RatioTrois(expr long)(text t)=%longueur de la barre / quantit\'e \`a partager / textepart :) / t le ratio
pair A,B,C,D;
A=u*(1,1);
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
index db36fa7d340..1e8f371cdf8 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex
@@ -36,7 +36,7 @@
\newcounter{NbCalculDistri}%Pour compter combien de distributivit\'e il
% y a dans un "seul calcul".
-\setcounter{NbCalculDistri}{0}
+\setcounter{NbCalculDistri}{1}
\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Lettrea=a,Lettreb=b,Lettrec=c,Lettred=d,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,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,Reperes=false,Impression=false,Tableau=false}%,AideAdd=false:inutile ?
\defKV[ClesDistributivite]{CouleurReduction=\colorlet{DCReduction}{#1}\setKV[ClesDistributivite]{Reduction}}%
@@ -434,16 +434,18 @@
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
\def\LETTRE{\useKV[ClesDistributivite]{Lettre}}%
\ensuremath{%
- % partie du x^2
- \xintifboolexpr{#2==0}{}{\xintifboolexpr{#2==1}{}{\xintifboolexpr{#2==-1}{-}{\num{#2}}}\LETTRE^2}%
- % partie du x
- \xintifboolexpr{#3==0}{}{\xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}\xintifboolexpr{#3==1}{}{\num{#3}}}{%
- \xintifboolexpr{#2==0}{\xintifboolexpr{#3==-1}{-}{\num{#3}}}{\xintifboolexpr{#3==-1}{-}{-\num{\fpeval{abs(#3)}}}}%
- }\LETTRE}%
- % partie du nombre
- \xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{}{+}}{+}\num{#4}}{%
- \xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{\num{#4}}{-\num{\fpeval{abs(#4)}}}}{-\num{\fpeval{abs(#4)}}}}}%
- %
+% \xintifboolexpr{\fpeval{#2}==0 'and' \fpeval{#3}==0 'and' \fpeval{#4}==0}{0}{%
+ % partie du x^2
+ \xintifboolexpr{#2==0}{}{\xintifboolexpr{#2==1}{}{\xintifboolexpr{#2==-1}{-}{\num{#2}}}\LETTRE^2}%
+ % partie du x
+ \xintifboolexpr{#3==0}{}{\xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}\xintifboolexpr{#3==1}{}{\num{#3}}}{%
+ \xintifboolexpr{#2==0}{\xintifboolexpr{#3==-1}{-}{\num{#3}}}{\xintifboolexpr{#3==-1}{-}{-\num{\fpeval{abs(#3)}}}}%
+ }\LETTRE}%
+ % partie du nombre
+ \xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{}{+}}{+}\num{#4}}{%
+ \xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{\num{#4}}{-\num{\fpeval{abs(#4)}}}}{-\num{\fpeval{abs(#4)}}}}}%
+ %
+% }%
}%
}%
@@ -465,7 +467,7 @@
\ifboolKV[ClesDistributivite]{Cours}{%
\ensuremath{%
\xintifboolexpr{#2==0}{%
- }{\xintifboolexpr{#3==0}{}{(}}\xintifboolexpr{#2==0}{\Tikzmark{}}{\Tikzmark{\useKV[ClesDistributivite]{Lettrea}}}
+ }{\xintifboolexpr{#3==0}{}{(}}\xintifboolexpr{#2==0}{\Tikzmark{}}{\Tikzmark{\useKV[ClesDistributivite]{Lettrea}}}%
\ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
\xintifboolexpr{#3==0}{\Tikzmark{}}{\xintifboolexpr{#3>0}{\xintifboolexpr{#2==0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\useKV[ClesDistributivite]{Lettreb}}}%
\ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
@@ -483,12 +485,12 @@
\xintifboolexpr{\Multi==0}{%
\xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
%
- =
+ =%
%
\xdef\Multi{\fpeval{#2*#4}}%
\xintifboolexpr{\Multi==0}{}{%
\xintifboolexpr{#2<0}{(-}{}\useKV[ClesDistributivite]{Lettrea}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(-}{}\useKV[ClesDistributivite]{Lettrec}\xintifboolexpr{#4<0}{)}{}%
- }
+ }%
\xdef\Multij{\fpeval{#2*#5}}%
\xintifboolexpr{\Multij==0}{}{%
\xintifboolexpr{\Multi==0}{}{+}%
@@ -615,6 +617,7 @@
}{%
% Etape 1
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{%
+ %cpt=\theNbCalculDistri%
\xintifboolexpr{#2==0}{%
}{\xintifboolexpr{#3==0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
\ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
@@ -645,6 +648,7 @@
}{}
% Etape 2
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{%
+ %cpt=\theNbCalculDistri%
\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}{)}{}%
@@ -666,7 +670,9 @@
}{}%
% Etape 3
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==3}{%
+ %cpt=\theNbCalculDistri%
\stepcounter{NbCalculDistri}%
+ %--cpt=\theNbCalculDistri%
\xdef\Multi{\fpeval{#2*#4}}%
\xdef\Multij{\fpeval{#2*#5}}%
\xdef\Multik{\fpeval{#3*#4}}%
@@ -683,9 +689,12 @@
\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}{)}{}%
+ \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}}}{}%
}{}%
% Etape 4
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}==4}{%
+ %cpt=\theNbCalculDistri%
\xdef\Multi{\fpeval{#2*#4}}%
\xdef\Multij{\fpeval{#2*#5}}%
\xdef\Multik{\fpeval{#3*#4}}%
@@ -705,7 +714,7 @@
}{%
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
\xintifboolexpr{\Multim==0}{}{%
- \xintifboolexpr{\Multim>0}{\ifnum\Multi>0\relax{}+\fi\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ \xintifboolexpr{\Multim>0}{\ifnum\fpeval{abs(\Multi)}>0\relax{}+\fi\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
}%
\xintifboolexpr{\Multil==0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEquationModeleBarre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEquationModeleBarre.tex
new file mode 100644
index 00000000000..2ee6dbd6789
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCEquationModeleBarre.tex
@@ -0,0 +1,301 @@
+% Licence : Released under the LaTeX Project Public License v1.3c
+% or later, see http://www.latex-project.org/lppl.txtf
+\newtoks\TestEquaMBarreH%
+\newtoks\TestEquaMBarreB%
+
+\def\UpdateToksBarreH#1\nil{\addtotok\TestEquaMBarreH{#1}}%
+\def\UpdateToksBarreB#1\nil{\addtotok\TestEquaMBarreB{#1}}%
+
+\newcommand\EquaBaseMBarre[5][]{%type ax=d ou b=cx
+ \useKVdefault[ClesEquation]%
+ \setKV[ClesEquation]{#1}%
+ \ifnum\fpeval{#2}=0\relax
+ \ifnum\fpeval{#4}=0\relax
+ \textbf{??}%% il manque un paramètre
+ \else
+ \xintifboolexpr{\fpeval{#4}==0}{%
+ \xintifboolexpr{\fpeval{#3}==0}{%
+ L'équation $0\times\useKV[ClesEquation]{Lettre}=0$ a une infinité de solutions.}{L'équation $0\times\useKV[ClesEquation]{Lettre}=\num{\fpeval{#3}}$ n'a aucune solution.}%
+ }{%\else
+ \xintifboolexpr{\fpeval{#3}==0}{L'équation $0=\num{\fpeval{#4}}\times\useKV[ClesEquation]{Lettre}$ a une unique solution : $\useKV[ClesEquation]{Lettre}=0$.}{%\else
+ \TestEquaMBarreB{white}%
+ \TestEquaMBarreH{}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#4}}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{white,#4,"\num{\fpeval{#3}}"}\nil%
+ % % Le tok H est \the\TestEquaMBarreH.%
+ % % \\Le tok B est \the\TestEquaMBarreB.%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+ \ifnum\fpeval{#4}=1\relax
+ \else
+ \bigskip%
+
+ \PfCMPDessineModelBarreNonHomogene{white,1,"$\num{\fpeval{#3}}/\num{\fpeval{#4}}$"}{white,1,"$x$"}{}%
+ \SSimpliTest{\fpeval{#3}}{\fpeval{#4}}%
+ \ifthenelse{\boolean{Simplification}}{\bigskip%
+
+ \PfCMPDessineModelBarreNonHomogene{white,1,"\PGCD{\fpeval{#3}}{\fpeval{#4}}\ifnum\fpeval{abs(\pgcd)}=\fpeval{#4}\relax{}\num{\fpeval{#3/#4}}\else\num{\fpeval{#3/\pgcd}}/\num{\fpeval{#4/\pgcd}}\fi"}{white,1,"$x$"}{}%
+ }{}%
+ \fi
+ }%
+ }%
+ \fi%
+ \else%
+ % si non, on est dans le cas ax=d
+ \xintifboolexpr{\fpeval{#2}==0}{%
+ \xintifboolexpr{\fpeval{#5}==0}{%
+ L'équation $0\times\useKV[ClesEquation]{Lettre}=0$ a une infinité de solutions.}{L'équation $0\times\useKV[ClesEquation]{Lettre}=\num{\fpeval{#5}}$ n'a aucune solution.}%
+ }{%\else
+ \xintifboolexpr{\fpeval{#5}==0}{L'équation $\num{\fpeval{#2}}\times\useKV[ClesEquation]{Lettre}=0$ a une unique solution : $\useKV[ClesEquation]{Lettre}=0$.}{%\else
+ % \begin{center}
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreB{white,#2,"\num{\fpeval{#5}}"}\nil%
+ % Le tok H est \the\TestEquaMBarreH.%
+ % \\Le tok B est \the\TestEquaMBarreB.%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+ \ifnum\fpeval{#2}=1\relax%
+ \else
+ \bigskip%
+
+ \PfCMPDessineModelBarreNonHomogene{white,1,"$x$"}{white,1,"$\num{\fpeval{#5}}/\num{\fpeval{#2}}$"}{}%
+ \SSimpliTest{\fpeval{#5}}{\fpeval{#2}}%
+ \ifthenelse{\boolean{Simplification}}{\bigskip
+
+ \PfCMPDessineModelBarreNonHomogene{white,1,"$x$"}{white,1,"\PGCD{\fpeval{#5}}{\fpeval{#2}}\ifnum\fpeval{abs(\pgcd)}=\fpeval{#2}\relax{}\num{\fpeval{#5/#2}}\else\num{\fpeval{#5/\pgcd}}/\num{\fpeval{#2/\pgcd}}\fi"}{}%
+ }{}%
+ \fi
+ }%
+ }%
+ \fi%
+}%
+
+\newcommand\EquaDeuxMBarre[5][]{%type ax+b=d ou b=cx+d$
+ \useKVdefault[ClesEquation]%
+ \setKV[ClesEquation]{#1}%
+ \setKV[ClesEquation]{Fleches=false,FlecheDiv=false,Terme=false,Decomposition=false}
+ \ifnum\fpeval{#2}=0\relax%On échange en faisant attention à ne pas boucler : c doit être non vide
+ % cas b=cx+d
+ \xintifboolexpr{\fpeval{#4}==0}{%
+ \xintifboolexpr{\fpeval{#3}==\fpeval{#5}}{%b=d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ a une infinité de solutions.%
+ }{%b<>d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ n'a aucune solution.%
+ }%
+ }{%ELSE
+ \xintifboolexpr{\fpeval{#3}==0}{%ax+b=d
+ \EquaBaseMBarre[#1]{0}{\fpeval{-#5}}{\fpeval{#4}}{0}%
+ }{%ax+b=d$ Ici
+ % \begin{center}
+ \TestEquaMBarreB{white}%
+ \TestEquaMBarreH{}%
+ \xintFor* ##1 in{\xintSeq{1}{#4}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreB{,white,2.5,"\num{\fpeval{#5}}"}\nil%
+ \expandafter\UpdateToksBarreH{white,#4+2.5,"\num{\fpeval{#3}}"}\nil%
+ % Le tok H est \the\TestEquaMBarreH.%
+ % \\Le tok B est \the\TestEquaMBarreB.%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \bigskip%
+
+ \PfCMPDessineModelBarreNonHomogene{white,#4,"\num{\fpeval{#3-#5}}",white,2.5,"\num{\fpeval{#5}}"}{\the\TestEquaMBarreB}{#4}%
+
+ \bigskip
+
+ \EquaBaseMBarre{0}{(#3-(#5))}{#4}{0}%
+ }%
+ }%
+ \else%cas ax+b=d
+ \xintifboolexpr{\fpeval{#2}==0}{%
+ \xintifboolexpr{\fpeval{#3}==\fpeval{#5}}{%b=d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ a une infinité de solutions.%
+ }{%b<>d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ n'a aucune solution.%
+ }%
+ }{%ELSE
+ \xintifboolexpr{\fpeval{#3}==0}{%ax+b=d
+ \EquaBaseMBarre[#1]{#2}{0}{0}{#5}%
+ }{%ax+b=d$ Ici
+% % \begin{center}
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{,white,2.5,"\num{\fpeval{#3}}"}\nil%
+ \expandafter\UpdateToksBarreB{white,#2+2.5,"\num{\fpeval{#5}}"}\nil%
+% % Le tok H est \the\TestEquaMBarreH.%
+% % \\Le tok B est \the\TestEquaMBarreB.%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \bigskip%
+
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{white,#2,"\num{\fpeval{#5-#3}}",white,2.5,"\num{\fpeval{#3}}"}{#2}%
+%
+ \bigskip
+
+ \EquaBaseMBarre{#2}{0}{0}{(#5-(#3))}%
+ }%
+ }%
+ \fi%
+}%
+
+\newcommand\EquaTroisMBarre[5][]{%ax+b=cx ou ax=cx+d
+ \useKVdefault[ClesEquation]%
+ \setKV[ClesEquation]{#1}%
+ \ifnum\fpeval{#3}=0\relax%on inverse en faisant attention à la boucle #3<->#5
+ \ifnum\fpeval{#5}=0\relax%
+ %% paramètre oublié
+ \else
+ \EquaTroisMBarre[#1]{#4}{#5}{#2}{0}%
+ \fi
+ \else
+ \xintifboolexpr{\fpeval{#2}==0}{%b=cx
+ \EquaBaseMBarre[#1]{#4}{0}{0}{#3}
+ }{%
+ \xintifboolexpr{\fpeval{#4}==0}{%ax+b=0
+ \EquaDeuxMBarre[#1]{#2}{#3}{0}{0}
+ }{%ax+b=cx
+ \xintifboolexpr{\fpeval{#2}==\fpeval{#4}}{%
+ \xintifboolexpr{\fpeval{#3}==0}{%ax=ax
+ L'équation $\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}=\xintifboolexpr{#4==1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}$ a une infinité de solutions.%
+ }{%ax+b=ax
+ L'équation $\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}=\xintifboolexpr{#4==1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}$ n'a aucune solution.%
+ }
+ }{%% Cas délicat
+ \xintifboolexpr{\fpeval{#2}>\fpeval{#4}}{%ax+b=cx avec a>c
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{white}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{,white,2.5,"\num{\fpeval{#3}}"}\nil%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#4}}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreB{,white,#2-#4+2.5,"0"}\nil%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{#4}%
+
+ \EquaDeuxMBarre{(#2-#4)}{#3}{0}{0}
+ }{%ax+b=cx avec a<c % Autre cas délicat
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{white}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{,white,#4-#2,"\num{\fpeval{#3}}"}\nil%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#4}}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+% \expandafter\UpdateToksBarreB{,white,#2-#4+2.5,"0"}\nil%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{#2}%
+
+ \EquaDeuxMBarre{0}{#3}{(#4-#2)}{0}
+ }%
+ }%
+ }%
+ }%
+ \fi
+}%
+
+\newcommand\ResolEquationMBarre[5][]{%
+ \useKVdefault[ClesEquation]%
+ \setKV[ClesEquation]{#1}%
+ \setKV[ClesEquation]{Fleches=false,FlecheDiv=false,Terme=false,Decomposition=false}
+ \xintifboolexpr{#2==0}{%
+ \xintifboolexpr{#4==0}{%
+ \xintifboolexpr{#3==#5}{%b=d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ a une infinité de solutions.}%
+ {%b<>d
+ L'équation $\num{\fpeval{#3}}=\num{\fpeval{#5}}$ n'a aucune solution.%
+ }%
+ }%
+ {%0x+b=cx+d$
+ \EquaDeuxMBarre[#1]{#4}{#5}{#2}{#3}%
+ }%
+ }{%
+ \xintifboolexpr{#4==0}{%ax+b=0x+d
+ \EquaDeuxMBarre[#1]{#2}{#3}{0}{#5}%
+ }
+ {%ax+b=cx+d$
+ \xintifboolexpr{#3==0}{%
+ \xintifboolexpr{#5==0}{%ax=cx
+ \EquaTroisMBarre[#1]{#2}{0}{#4}{0}%
+ }%
+ {%ax=cx+d
+ \EquaTroisMBarre[#1]{#4}{#5}{#2}{0}%
+ }%
+ }%
+ {\xintifboolexpr{#5==0}{%ax+b=cx
+ \EquaTroisMBarre[#1]{#2}{#3}{#4}{0}%
+ }%
+ {%ax+b=cx+d -- ici
+ \xintifboolexpr{#2==#4}{%
+ \xintifboolexpr{#3==#5}{%b=d
+ L'équation $\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}=\xintifboolexpr{#4==1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#5>0}{+\num{#5}}{-\num{\fpeval{0-#5}}}$ a une infinité de solutions.}%
+ {%b<>d
+ L'équation $\xintifboolexpr{#2==1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}=\xintifboolexpr{#4==1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#5>0}{+\num{#5}}{-\num{\fpeval{0-#5}}}$ n'a aucune solution.%
+ }%
+ }{%
+ %% Cas délicat
+ \xintifboolexpr{#2>#4}{%ax+b=cx+d avec a>c
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{white}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{,white,2.5,"\num{\fpeval{#3}}"}\nil%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#4}}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreB{,white,#2-#4+2.5,"\num{\fpeval{#5}}"}\nil%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{#4}%
+
+ \EquaDeuxMBarre{(#2-(#4))}{#3}{0}{#5}
+ }{%ax+b=cx+d avec a<c % Autre cas délicat
+ \TestEquaMBarreH{white}%
+ \TestEquaMBarreB{white}%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#4}}}\do{%
+ \expandafter\UpdateToksBarreB{,1}\nil%
+ \expandafter\UpdateToksBarreB{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreB{,white,2.5,"\num{\fpeval{#5}}"}\nil%
+ \xintFor* ##1 in{\xintSeq{1}{\fpeval{#2}}}\do{%
+ \expandafter\UpdateToksBarreH{,1}\nil%
+ \expandafter\UpdateToksBarreH{,"$x$"}\nil%
+ }%
+ \expandafter\UpdateToksBarreH{,white,#4-#2+2.5,"\num{\fpeval{#3}}"}\nil%
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{}%
+
+ \PfCMPDessineModelBarreNonHomogene{\the\TestEquaMBarreH}{\the\TestEquaMBarreB}{#2}%
+
+ \EquaDeuxMBarre{0}{#3}{(#4-(#2))}{#5}
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
index 0ae20f54e75..ad7e495f044 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCGeometrie.tex
@@ -1,7 +1,8 @@
%%%
% Geometrie
%%%
-\setKVdefault[Geometrie]{CoinBG={(0,0)},CoinHD={(10u,10u)},TypeTrace="Instruments"}%
+\setKVdefault[Geometrie]{CoinBG={(0,0)},CoinHD={(10u,10u)},TypeTrace="Instruments",Clip,Cadres=false,Epaisseur=1,Pointilles=false,Ombre=false,Couleur=black,Ecart=2,ModeleCouleur=5}%
+\defKV[Geometrie]{Cadre=\setKV[Geometrie]{Cadres}\setKV[Geometrie]{Clip=false}}%
\ifluatex%
\NewDocumentEnvironment{Geometrie}{o +b}{%
@@ -9,10 +10,31 @@
\setKV[Geometrie]{#1}%
\mplibforcehmode%
\begin{mplibcode}
- % input PfCMPFr;
+ defaultcolormodel := \useKV[Geometrie]{ModeleCouleur};
+
+ vardef rounded_corners expr p =
+ for i=1 upto length p:
+ subpath (i-15/16, i-1/16) of p ..
+ endfor cycle
+ enddef;
+ %
+ boolean Clip,Cadres,Pointilles,Ombre;
+ Clip=\useKV[Geometrie]{Clip};
+ Cadres=\useKV[Geometrie]{Cadres};
+ Pointilles=\useKV[Geometrie]{Pointilles};
+ Ombre=\useKV[Geometrie]{Ombre};
+ Epaisseur=\useKV[Geometrie]{Epaisseur};
+ bboxmargin:=\useKV[Geometrie]{Ecart};
+ color CouleurCadre;
+ CouleurCadre=\useKV[Geometrie]{Couleur};
pair Coinbg,Coinhd;
+ if Clip:
Coinbg=\useKV[Geometrie]{CoinBG};
Coinhd=\useKV[Geometrie]{CoinHD};
+ else:
+ Coinbg=(-1000,-1000);
+ Coinhd=(1000,1000);
+ fi;
if \useKV[Geometrie]{TypeTrace}="Instruments":
typetrace:="normal";
elseif \useKV[Geometrie]{TypeTrace}="MainLevee":
@@ -29,6 +51,43 @@
_tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi;
_tfig:=2*_tfig;
#2%
+ %%
+ if Cadres:
+ string Cadre;
+ Cadre=\useKV[Geometrie]{Cadre};
+
+ picture P; P = currentpicture;
+
+ if Cadre<>"aucun":
+ if Cadre="rectangle":
+ if Ombre:
+ fill bbox P shifted (3,-3) withcolor 3/4[CouleurCadre,white];
+ unfill bbox P;
+ fi;
+ if Pointilles:
+ drawoptions(dashed evenly withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ else:
+ drawoptions(withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ fi;
+ draw bbox P;
+ drawoptions();
+ draw P;
+ else:
+ if Ombre:
+ fill rounded_corners bbox P shifted (3,-3) withcolor 3/4[CouleurCadre,white];
+ unfill rounded_corners bbox P;
+ fi;
+ if Pointilles:
+ drawoptions(dashed evenly withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ else:
+ drawoptions(withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ fi;
+ draw rounded_corners bbox P;
+ drawoptions();
+ draw P;
+ fi;
+ fi;
+ fi;
\end{mplibcode}
}{}%
\else
@@ -36,6 +95,21 @@
\useKVdefault[Geometrie]%
\setKV[Geometrie]{#1}%
\begin{mpost}[mpsettings={%
+ vardef rounded_corners expr p =
+ for i=1 upto length p:
+ subpath (i-15/16, i-1/16) of p ..
+ endfor cycle
+ enddef;
+ %
+ boolean Clip,Cadres,Pointilles,Ombre;
+ Clip=\useKV[Geometrie]{Clip};
+ Cadres=\useKV[Geometrie]{Cadres};
+ Pointilles=\useKV[Geometrie]{Pointilles};
+ Ombre=\useKV[Geometrie]{Ombre};
+ Epaisseur=\useKV[Geometrie]{Epaisseur};
+ bboxmargin:=\useKV[Geometrie]{Ecart};
+ color CouleurCadre;
+ CouleurCadre=\useKV[Geometrie]{Couleur};
pair Coinbg,Coinhd;
Coinbg=\useKV[Geometrie]{CoinBG};
Coinhd=\useKV[Geometrie]{CoinHD};
@@ -56,6 +130,43 @@
_tfig:=if (xb-xa)>(yb-ya): (xb-xa) else: (yb-ya) fi;
_tfig:=2*_tfig;
#2%
+ %%
+ if Cadres:
+ string Cadre;
+ Cadre=\useKV[Geometrie]{Cadre};
+
+ picture P; P = currentpicture;
+
+ if Cadre<>"aucun":
+ if Cadre="rectangle":
+ if Ombre:
+ fill bbox P shifted (3,-3) withcolor 3/4[CouleurCadre,white];
+ unfill bbox P;
+ fi;
+ if Pointilles:
+ drawoptions(dashed evenly withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ else:
+ drawoptions(withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ fi;
+ draw bbox P;
+ drawoptions();
+ draw P;
+ else:
+ if Ombre:
+ fill rounded_corners bbox P shifted (3,-3) withcolor 3/4[CouleurCadre,white];
+ unfill rounded_corners bbox P;
+ fi;
+ if Pointilles:
+ drawoptions(dashed evenly withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ else:
+ drawoptions(withpen pencircle scaled Epaisseur withcolor CouleurCadre;);
+ fi;
+ draw rounded_corners bbox P;
+ drawoptions();
+ draw P;
+ fi;
+ fi;
+ fi;
\end{mpost}
}{}%
\fi% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
index fb18636d628..f4b0fbd65c3 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex
@@ -1,7 +1,7 @@
%%%
% Lego
%%%
-\setKVdefault[Lego]{Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false}%
+\setKVdefault[Lego]{Echelle=1,Couleur=LightSteelBlue,Unite=8,Diviseur=2,Perso=false,Plaque=false,Largeura=2,Largeurb=2,Unique=false}%
\defKV[Lego]{ListePerso=\setKV[Lego]{Perso}\xdef\PfCFooLegoListePerso{#1}}%
\NewDocumentCommand\ChoixCouleur{m}{%
@@ -21,7 +21,11 @@
\NewDocumentCommand\Lego{o}{%
\useKVdefault[Lego]%
\setKV[Lego]{#1}%
- \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}%
+ \xintifboolexpr{\useKV[Lego]{Unite}==1}{%
+ \xdef\PfCNbCouleurs{1}%
+ }{%
+ \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}%
+ }%
\ChoixCouleur{\PfCNbCouleurs}%
\ifboolKV[Lego]{Perso}{%
\BuildBarreLego{\FooCouleur}{\PfCFooLegoListePerso}%
@@ -34,8 +38,11 @@
\ifluatex%
\mplibforcehmode%
\begin{mplibcode}
- boolean Plaque;
+ boolean Plaque,Unique;
Plaque=\useKV[Lego]{Plaque};
+ Unique=\useKV[Lego]{Unique};
+
+ Echelle=\useKV[Lego]{Echelle};
input PfCLego;
%
@@ -59,7 +66,8 @@
ChoixCouleur(#1);
%
Longueur=\useKV[Lego]{Unite};
- Largeur=2;
+ Largeura=\useKV[Lego]{Largeura};
+ Largeurb=\useKV[Lego]{Largeurb};
Diviseur=\useKV[Lego]{Diviseur};
color BriqueUnite;
BriqueUnite=\useKV[Lego]{Couleur};
@@ -71,25 +79,31 @@
lego_height_old:=lego_height;
lego_height:=lego_thickness;
TR:=(0,1,0);
- Lego_box(2*Longueur,4*Largeur,Gold);
+ Lego_box(2*Longueur,4*Largeura,Gold);
TR:=(0,0,0);
lego_height:=lego_height_old;
fi;
- Lego_box(Longueur,Largeur,BriqueUnite);
+ Lego_box(Longueur,Largeura,BriqueUnite);
+ if Unique=false:
if Perso:
Somme=0;
ListePerso(#2);
for k=0 upto (nbperso-1):
- TR:=(0.5*(Longueur-Diviseurs[k]-Somme),2,0);
- Lego_box(Diviseurs[k],2,Brique[k]);
+ TR:=(0.5*(Longueur-Diviseurs[k]-Somme),Largeura+0.5*(Largeurb-Largeura),0);
+ Lego_box(Diviseurs[k],Largeurb,Brique[k]);
Somme:=Somme+2*Diviseurs[k];
endfor;
else:
for k=0 upto ((Longueur div Diviseur)-1):
- TR:=(0.5*(Longueur-Diviseur)-k*Diviseur,2,0);
- Lego_box(Diviseur,2,Brique[k]);
+ TR:=(0.5*(Longueur-Diviseur)-k*Diviseur,Largeura+0.5*(Largeurb-Largeura),0);
+ Lego_box(Diviseur,Largeurb,Brique[k]);
endfor;
fi;
+ fi;
+ picture RetiensLego;
+ RetiensLego=currentpicture;
+ currentpicture:=nullpicture;
+ draw RetiensLego scaled Echelle;
\end{mplibcode}
\else
\begin{mpost}
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex b/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
index 38c39158881..a05ae0075b6 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCModeleBarre.tex
@@ -1,8 +1,10 @@
%%%
% Modele en barre
%%%
-\setKVdefault[ClesModeleBarre]{Hauteur=0.5cm,Largeur=1cm,Separation={0},Homogene=false}%Separation pour conserver le lien avec les équations.
+\setKVdefault[ClesModeleBarre]{Hauteur=0.5cm,Largeur=1cm,Separation={0},Homogene=false,Multiplicatif=false,MultiplicatifH=false,MultiplicatifB=false}%Separation pour conserver le lien avec les équations.
\defKV[ClesModeleBarre]{Longueur=\setKV[ClesModeleBarre]{Homogene}}%
+\defKV[ClesModeleBarre]{AccoladesH=\setKV[ClesModeleBarre]{MultiplicatifH}\setKV[ClesModeleBarre]{Multiplicatif}}%
+\defKV[ClesModeleBarre]{AccoladesB=\setKV[ClesModeleBarre]{MultiplicatifB}\setKV[ClesModeleBarre]{Multiplicatif}}%
\newtoks\toklistemodelbarresup%
\def\UpdateListeModelBarreSup#1\nil{\addtotok\toklistemodelbarresup{#1,}}%
@@ -10,6 +12,10 @@
\def\UpdateListeModelBarreInf#1\nil{\addtotok\toklistemodelbarreinf{#1,}}%
\newtoks\toklistemodelbarresep%
\def\UpdateListeModelBarreSep#1\nil{\addtotok\toklistemodelbarresep{#1,}}%
+\newtoks\toklistemodelbarreaccosup%
+\def\UpdateListeModelBarreAccoSup#1\nil{\addtotok\toklistemodelbarreaccosup{#1,}}%
+\newtoks\toklistemodelbarreaccoinf%
+\def\UpdateListeModelBarreAccoInf#1\nil{\addtotok\toklistemodelbarreaccoinf{#1,}}%
\newcommand\ModeleBarre[3][]{%
% #1 options
@@ -42,7 +48,36 @@
\ifboolKV[ClesModeleBarre]{Homogene}{%
\PfCMPDessineModelBarre{\the\toklistemodelbarresup}{\the\toklistemodelbarreinf}%
}{%
- \PfCMPDessineModelBarreNonHomogene{\the\toklistemodelbarresup}{\the\toklistemodelbarreinf}{\the\toklistemodelbarresep}%
+ \ifboolKV[ClesModeleBarre]{Multiplicatif}{%
+ %
+ \toklistemodelbarreaccosup{}%
+ \toklistemodelbarreaccoinf{}%
+ \ifboolKV[ClesModeleBarre]{MultiplicatifH}{%
+ \xdef\PfCListeAccoladesH{\useKV[ClesModeleBarre]{AccoladesH}}%
+ \setsepchar{\\/ }%
+ \readlist\ListeModeleBarreAccoSup{\PfCListeAccoladesH}%
+ \foreachitem\compteur\in\ListeModeleBarreAccoSup{%
+ \foreachitem\valeur\in\ListeModeleBarreAccoSup[\compteurcnt]{%
+ \expandafter\UpdateListeModelBarreAccoSup\valeur\nil%
+ }%
+ }%
+ % Les accolades hautes sont \the\toklistemodelbarreaccosup.\\
+ }{}%
+ \ifboolKV[ClesModeleBarre]{MultiplicatifB}{%
+ \xdef\PfCListeAccoladesB{\useKV[ClesModeleBarre]{AccoladesB}}%
+ \setsepchar{\\/ }%
+ \readlist\ListeModeleBarreAccoInf{\PfCListeAccoladesB}%
+ \foreachitem\compteur\in\ListeModeleBarreAccoInf{%
+ \foreachitem\valeur\in\ListeModeleBarreAccoInf[\compteurcnt]{%
+ \expandafter\UpdateListeModelBarreAccoInf\valeur\nil%
+ }%
+ }%
+ % Les accolades basses sont \the\toklistemodelbarreaccoinf.\\
+ }{}%
+ \PfCMPDessineModelBarreNonHomogeneMultiplicatif{\the\toklistemodelbarresup}{\the\toklistemodelbarreinf}{\the\toklistemodelbarresep}{\the\toklistemodelbarreaccosup}{\the\toklistemodelbarreaccoinf}%
+ }{%
+ \PfCMPDessineModelBarreNonHomogene{\the\toklistemodelbarresup}{\the\toklistemodelbarreinf}{\the\toklistemodelbarresep}%
+ }%
}%
}%
@@ -163,6 +198,133 @@
\end{mplibcode}
}%
+\def\PfCMPDessineModelBarreAccoladeCode{%
+}%
+
+\newcommand\PfCMPDessineModelBarreNonHomogeneMultiplicatif[5]{%
+ \ifluatex%
+ \mplibforcehmode%
+ \begin{mplibcode}
+ \PfCMPDessineModelBarreNHCode
+ \PfCMPDessineModelBarreBriqueCode
+ % \PfCMPDessineModelBarreAccoladeCode
+
+ vardef TraceAccoH(text t)=
+ pair PfCAccoPtH[];
+ numeric etape,ProporHauteur;
+ etape:=0;
+ ProporHauteur:=1;
+ numeric decaetape[][];
+ string toto;
+ numeric n;
+ n=0;
+ for p_=t:
+ n:=n+1;
+ if (n mod 3)=1:
+ etape:=etape+1;
+ decaetape[etape][1]=p_;
+ fi;
+ if (n mod 3)=2:
+ decaetape[etape][2]=p_;
+ fi;
+ if (n mod 3)=0:
+ toto:=p_;
+ if substring(1,2) of toto="*":
+ ltoto=length toto;
+ ProporHauteur:=scantokens(substring(0,1) of toto)+1;
+ toto:=substring(2,ltoto) of toto;
+ else:
+ ProporHauteur:=1;
+ fi;
+ PfCAccoPtH[1]:=(0,ProporHauteur*Hauteur) shifted(VecteurDepla*(decaetape[etape][1]-1));
+ PfCAccoPtH[2]:=PfCAccoPtH[1] shifted(VecteurDepla*decaetape[etape][2]);
+ if ProporHauteur>1:
+ draw PfCAccoPtH[1]--(PfCAccoPtH[1] shifted(0,-(ProporHauteur-1)*Hauteur)) dashed evenly;
+ draw PfCAccoPtH[2]--(PfCAccoPtH[2] shifted(0,-(ProporHauteur-1)*Hauteur)) dashed evenly;
+ fi;
+ label(TEX("$\overbrace{\hbox to"&decimal(abs(PfCAccoPtH[1]-PfCAccoPtH[2]))&"pt{\PfCTBstrut}}^{"&toto&"}$"),1/2[PfCAccoPtH[1],PfCAccoPtH[2]]);
+ fi;
+ endfor;
+ enddef;
+ %
+ vardef TraceAccoB(text t)=
+ pair PfCAccoPtB[];
+ numeric etape,ProporHauteur;
+ etape:=0;
+ ProporHauteur:=1;
+ numeric decaetape[][];
+ string toto;
+ numeric n;
+ n=0;
+ for p_=t:
+ n:=n+1;
+ if (n mod 3)=1:
+ etape:=etape+1;
+ decaetape[etape][1]=p_;
+ fi;
+ if (n mod 3)=2:
+ decaetape[etape][2]=p_;
+ fi;
+ if (n mod 3)=0:
+ toto:=p_;
+ if substring(1,2) of toto="*":
+ ltoto=length toto;
+ ProporHauteur:=scantokens(substring(0,1) of toto)+1;
+ toto:=substring(2,ltoto) of toto;
+ else:
+ ProporHauteur:=1;
+ fi;
+ PfCAccoPtB[1]:=(0,-ProporHauteur*Hauteur) shifted(VecteurDepla*(decaetape[etape][1]-1));
+ PfCAccoPtB[2]:=PfCAccoPtB[1] shifted(VecteurDepla*decaetape[etape][2]);
+ if ProporHauteur>1:
+ draw PfCAccoPtB[1]--(PfCAccoPtB[1] shifted(0,(ProporHauteur-1)*Hauteur)) dashed evenly;
+ draw PfCAccoPtB[2]--(PfCAccoPtB[2] shifted(0,(ProporHauteur-1)*Hauteur)) dashed evenly;
+ fi;
+ label(TEX("$\underbrace{\hbox to"&decimal(abs(PfCAccoPtB[1]-PfCAccoPtB[2]))&"pt{\PfCTBstrut}}_{"&toto&"}$"),1/2[PfCAccoPtB[1],PfCAccoPtB[2]]);
+ fi;
+ endfor;
+ enddef;
+
+ Longueur:=\useKV[ClesModeleBarre]{Largeur};
+ Hauteur:=\useKV[ClesModeleBarre]{Hauteur};
+ u:=Longueur;
+
+ toto(#1);
+ tata(#2);
+
+ pair VecteurDepla;
+ VecteurDepla=(Longueur,0);
+
+ numeric MBnbdepla;
+ MBnbdepla=0;
+ for k=1 upto MBnbcolsup:
+ for l=1 upto MBnbinfosup[k]:
+ trace Brique(MBColSup[k],MBnbcasessup[k][l])(MBTextcasessup[k][l]) shifted(MBnbdepla*VecteurDepla);
+ MBnbdepla:=MBnbdepla+MBnbcasessup[k][l];
+ endfor;
+ endfor;
+
+ MBnbdepla:=0;
+ for k=1 upto MBnbcolinf:
+ for l=1 upto MBnbinfoinf[k]:
+ trace Brique(MBColInf[k],MBnbcasesinf[k][l])(MBTextcasesinf[k][l]) shifted(MBnbdepla*VecteurDepla+(0,-Hauteur));
+ if MBnbcasesinf[k][l]<0:
+ for j=1 upto (abs(MBnbcasesinf[k][l])-1):
+ trace ((0,0)--(0,Hauteur)) shifted((MBnbdepla+j)*VecteurDepla+(0,-Hauteur)) withcolor black;
+ endfor;
+ fi;
+ MBnbdepla:=MBnbdepla+abs(MBnbcasesinf[k][l]);
+ endfor;
+ endfor;
+
+ Separation(#3);
+
+ TraceAccoH(#4);
+ TraceAccoB(#5);
+ \end{mplibcode}%
+ \fi
+}
+
\def\PfCMPDessineModelBarreNHCode{%
numeric MBnbcolinf;%compte combien de couleurs
MBnbcolinf=0;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
index 6a638a7c93d..0929b761971 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMotsCodes.tex
@@ -9,19 +9,20 @@
\setsepchar[*]{§*/}%
\readlist*\ListeMotsCodes{#2}%
\xdef\ListeMotsCodesPas{\fpeval{\ListeMotsCodeslen/\useKV[MotsCodes]{Colonnes}}}%
- \begin{NiceTabular}{*{\fpeval{\useKV[MotsCodes]{Colonnes}}}{>{\centering\arraybackslash}m{\useKV[MotsCodes]{Largeur}}}}[color-inside]
+ % \begin{NiceTabular}{*{\fpeval{\useKV[MotsCodes]{Colonnes}}}{>{\centering\arraybackslash}m{\useKV[MotsCodes]{Largeur}}}}[color-inside]
+ \begin{NiceTabular}{*{\fpeval{\useKV[MotsCodes]{Colonnes}}}{m{\useKV[MotsCodes]{Largeur}}}}[color-inside]
\xintFor* ##1 in {\xintSeq {1}{\ListeMotsCodesPas}}\do{%
\xintFor* ##2 in {\xintSeq {1}{\fpeval{\useKV[MotsCodes]{Colonnes}}}}\do{%
\xintifForFirst{}{&}\Block[draw=black]{4-1}{}%
}\\
\xintFor* ##2 in {\xintSeq {1}{\fpeval{\useKV[MotsCodes]{Colonnes}}}}\do{%
- \xintifForFirst{}{&}\ListeMotsCodes[\fpeval{(##1-1)*\useKV[MotsCodes]{Colonnes}+##2},1]
+ \xintifForFirst{}{&}\Block{}{\ListeMotsCodes[\fpeval{(##1-1)*\useKV[MotsCodes]{Colonnes}+##2},1]}
}\\
\xintFor* ##2 in {\xintSeq {1}{\fpeval{\useKV[MotsCodes]{Colonnes}}}}\do{%
\xintifForFirst{}{&}%
}\\
\xintFor* ##2 in {\xintSeq {1}{\fpeval{\useKV[MotsCodes]{Colonnes}}}}\do{%
- \xintifForFirst{}{&}\textbf{\Large\ListeMotsCodes[\fpeval{(##1-1)*\useKV[MotsCodes]{Colonnes}+##2},2]}
+ \xintifForFirst{}{&}\Block{}{\textbf{\Large\ListeMotsCodes[\fpeval{(##1-1)*\useKV[MotsCodes]{Colonnes}+##2},2]}}
}\\
}%
\end{NiceTabular}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex b/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
index 601d6e52f1b..27156c00b7f 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCMulArt.tex
@@ -44,9 +44,9 @@
\xdef\PfCFooRetiensCible{\useKV[TabMul]{Cible}}%
\readlist*\PfCListeDesNombresCibles{\PfCFooRetiensCible}%
\xintFor* ##2 in{\xintSeq{1}{\PfCListeDesNombresCibleslen}}\do{%
- \PfCListeDiviseurs{\PfCListeDesNombresCibles[##2]}%
+ \PfCListeDiviseursInfDix{\PfCListeDesNombresCibles[##2]}%
\setsepchar{,}\ignoreemptyitems%
- \readlist*\PfCTabMulDiviseursCible{\PfCListeDiviseursRetour}%
+ \readlist*\PfCTabMulDiviseursCible{\PfCListeDiviseursInfDixRetour}%
\xdef\PfCFooListePdtCible{$1\times\num{\PfCListeDesNombresCibles[##2]}$,$\num{\PfCListeDesNombresCibles[##2]}\times1$}%
\xintFor* ##1 in {\xintSeq{1}{\PfCNbDiviseurs}}\do{%
\xdef\PfCFooListePdtCible{\PfCFooListePdtCible,$\num{\PfCTabMulDiviseursCible[##1]}\times\num{\fpeval{\PfCListeDesNombresCibles[##2]/\PfCTabMulDiviseursCible[##1]}}$,$\num{\fpeval{\PfCListeDesNombresCibles[##2]/\PfCTabMulDiviseursCible[##1]}}\times\num{\PfCTabMulDiviseursCible[##1]}$}%
@@ -92,11 +92,11 @@
\ifboolKV[TabMul]{Enonce}{%
\begin{enumerate}
\xintFor* ##1 in {\xintSeq{1}{\PfCCompteurX}}\do{%
- \PfCListeDiviseurs{\PfCListeProduits[##1]}%
+ \PfCListeDiviseursInfDix{\PfCListeProduits[##1]}%
\ifnum\PfCNbDiviseurs>1\relax
- \MelangeListe{\PfCListeDiviseursRetour}{1}%
+ \MelangeListe{\PfCListeDiviseursInfDixRetour}{1}%
\else
- \xdef\faa{\PfCListeDiviseursRetour}
+ \xdef\faa{\PfCListeDiviseursInfDixRetour}
\fi
\ignoreemptyitems
\readlist*\PfCListeDiviseurChoisi{\faa}%
@@ -126,18 +126,18 @@
\reademptyitems%
}%
-\NewDocumentCommand\PfCListeDiviseurs{m}{%
+\NewDocumentCommand\PfCListeDiviseursInfDix{m}{%
\ifnum#1<10\relax
\xdef\PfCLimiteDiv{#1}
\else
\xdef\PfCLimiteDiv{10}
\fi
- \xdef\PfCListeDiviseursRetour{}
+ \xdef\PfCListeDiviseursInfDixRetour{}
\xdef\PfCNbDiviseurs{}
\xintFor* ##2 in {\xintSeq{2}{\PfCLimiteDiv}}\do{%
\modulo{#1}{##2}\relax
\ifnum\remainder=0\relax
- \xdef\PfCListeDiviseursRetour{\PfCListeDiviseursRetour ##2,}%
+ \xdef\PfCListeDiviseursInfDixRetour{\PfCListeDiviseursInfDixRetour ##2,}%
\xdef\PfCNbDiviseurs{\fpeval{\PfCNbDiviseurs+1}}%
\fi
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
index 7fdeb47dec6..64c196d9926 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex
@@ -1,7 +1,7 @@
%%%
% Fonction
%%%
-\setKVdefault[ClesFonction]{Nom=f,Variable=x,Calcul=x,Tableau=false,Largeur=5mm,Ecriture=false,Definition=false,Points=false,Tangentes=false,PasX=1,PasY=1,UniteX=1,UniteY=1,Prolonge=false,Trace=false,Catmull=false,Splines=false,Epaisseur=1,Couleur=black,CouleurTrace=black,PointsCourbe=true,Codes=false,Origine={(0,0)},Vide=false}
+\setKVdefault[ClesFonction]{Nom=f,Variable=x,Calcul=x,Tableau=false,Largeur=5mm,Ecriture=false,Definition=false,Points=false,Tangentes=false,PasX=1,PasY=1,UniteX=1,UniteY=1,Prolonge=false,Trace=false,Catmull=false,Splines=false,Lagrange=false,Epaisseur=1,Couleur=black,CouleurTrace=black,PointsCourbe=true,Codes=false,Origine={(0,0)},Vide=false}
\defKV[ClesFonction]{Traces=\setKV[ClesFonction]{Codes}}%
\newtoks\toklistePtsFn%pour la discipline
@@ -42,6 +42,13 @@
\toklistePtsFn{}%
\setsepchar[*]{§*/}%\ignoreemptyitems%
\readlist*\ListePoints{#2}%
+ \ifboolKV[ClesFonction]{Lagrange}{
+ \xdef\PfCFooListePoints{}%
+ \foreachitem\compteur\in\ListePoints{%
+ \xdef\PfCFooListePoints{\PfCFooListePoints (\ListePoints[\compteurcnt,2],\ListePoints[\compteurcnt,3]),}%
+ }%
+ \MPLagrange{\PfCFooListePoints}{\useKV[ClesFonction]{PasX}}{\useKV[ClesFonction]{PasY}}{\useKV[ClesFonction]{UniteX}}{\useKV[ClesFonction]{UniteY}}%
+ }{%
\ifboolKV[ClesFonction]{Splines}{%
\xdef\PfCFooListePoints{}%
\foreachitem\compteur\in\ListePoints{%
@@ -70,6 +77,7 @@
\MPCourbeNew{\PfCFooListePoints}%
}%
}%
+ }
}{%
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeFonction{#2}%
@@ -265,6 +273,226 @@
}
}%
+\def\MPLagrangeCode{%
+ path Cb[];
+ %
+ boolean PointsCourbe,Code,Prolonge;
+ PointsCourbe=\useKV[ClesFonction]{PointsCourbe};
+ Code=\useKV[ClesFonction]{Codes};
+ Prolonge:=\useKV[ClesFonction]{Prolonge};
+ color CoulTrace;
+ CoulTrace:=\useKV[ClesFonction]{CouleurTrace};
+ Epaisseur:=\useKV[ClesFonction]{Epaisseur};
+ %
+ vardef EffectuerTraces=
+ \useKV[ClesFonction]{Traces};
+ enddef;
+%
+ def enplace=
+ xscaled X.u yscaled Y.u
+ enddef;
+ %
+ vardef placepoint(expr q,r)=
+ (q,r)*cm enplace
+ enddef;
+ %
+ def replace=
+ xscaled (1/X.u) yscaled (1/Y.u)
+ enddef;
+%
+ def retrouvecoord(expr p)=%
+ (p/cm) replace
+ enddef;
+ %
+% nbpoints:=100;
+ %
+ vardef intersectioncourbes(expr aa,bb)=
+ pair pti[];
+ nbpoints:=100;
+ n:=0;
+ for k=0 upto nbpoints-1:
+ if ((subpath(k/nbpoints*length aa,(k+1)/nbpoints*length aa) of aa) intersectiontimes bb)<>(-1,-1):
+ n:=n+1;
+ pti[n]:=(subpath(k/nbpoints*length aa,(k+1)/nbpoints*length aa) of aa) intersectionpoint bb;
+ fi;
+ endfor;
+ enddef;
+ %
+ vardef IntersectionCourbes(expr aa,bb)=
+ pair pti[];
+ numeric vali[];
+ n:=0;
+ for k=0 upto 100:
+ if ((subpath(k/100*length aa,(k+1)/100*length aa) of aa) intersectiontimes bb)<>(-1,-1):
+ n:=n+1;
+ vali[n]:=k;
+ message("vali : "&decimal(vali[n]));
+ pti[n]:=(subpath(k/100*length aa,(k+1)/100*length aa) of aa) intersectionpoint bb;
+ fi;
+ endfor;
+ enddef;
+ %
+ vardef courbe[](expr a,b,nb)(text texte)=
+ path PfCCb;
+ for i:=0 upto nb :
+ x@[i]:=(a+i*(b-a)/nb);
+ x:=x@[i];
+ y@[i]:=texte;
+% if y@[i]>MaxY:
+% MaxY:=y@[i];
+% fi;
+% if y@[i]<MinY:
+% MinY:=y@[i];
+% fi;
+ endfor ;
+ Cb@:=placepoint(x@.0,y@.0)
+ for i:=1 upto nb :
+ ..placepoint(x@[i],y@[i])
+ endfor;
+ PfCCb=Cb@;
+ PfCCb
+enddef;
+}
+
+\def\MPLagrange#1#2#3#4#5{
+ % #1 la liste des points
+ % #2: pas en x
+ % #3: pas en y
+ % #4: unit\'e en x
+ % #5: unit\'e en y
+ \ifluatex
+ \mplibforcehmode
+ \mplibnumbersystem{double}
+ \begin{mplibcode}
+ \MPLagrangeCode
+
+ pair M[];%Les points de passage
+ pair N[][];%Les points conservés pour les calculs.
+ numeric nbm;%Le nombre de points de passage;
+
+vardef Lagrange(expr valeur)(text t)=
+ save Lagpt;
+ numeric Lagpt;
+ nbm:=0;
+ for p_=t:
+ nbm:=nbm+1;
+ endfor;
+ nbpoints:=0;
+ for p_=t:
+ nbpoints:=nbpoints+1;
+ M[nbpoints]:=p_;
+ endfor;
+ for k=1 upto nbm:
+ nbpoints:=0;
+ for l=1 upto nbm:
+ if l<>k:
+ nbpoints:=nbpoints+1;
+ N[k][nbpoints]:=M[l];
+ fi;
+ endfor;
+ endfor;
+ Lagpt=0;
+ for k=1 upto nbm:
+ ImagePoly:=for l=1 upto (nbm-1):(xpart(M[k])-xpart(N[k][l]))* endfor 1;
+ Lagpt:=Lagpt+((ypart(M[k])/ImagePoly)*for l=1 upto (nbm-1):(valeur-xpart(N[k][l]))* endfor 1);
+ endfor;
+ Lagpt
+ enddef;
+
+x.u:=#2;
+ y.u:=#3;
+ X.u:=#4;
+ Y.u:=#5;
+ %
+ MinX=999;
+ MaxX=-999;
+ MinY=999;
+ MaxY=-999;
+ %
+ nbpointsLg=0;
+ for p_=#1:
+ nbpointsLg:=nbpointsLg+1;
+ M[nbpointsLg]:=p_;
+ endfor;
+ for k=1 upto nbpointsLg:
+ if xpart(M[k])<MinX:
+ MinX:=xpart(M[k]);
+ fi;
+ if xpart(M[k])>MaxX:
+ MaxX:=xpart(M[k]);
+ fi;
+ if ypart(M[k])<MinY:
+ MinY:=ypart(M[k]);
+ fi;
+ if ypart(M[k])>MaxY:
+ MaxY:=ypart(M[k]);
+ fi;
+ endfor;
+ if MaxY<1:
+ MaxY:=2;
+ fi;
+ if MinY>-1:
+ MinY:=-2;
+ fi;
+ if MinY<0:
+ if MinY<>ceiling(MinY):
+ MinY:=ceiling(MinY)-1;
+ fi;
+ fi;
+ if MinX<0:
+ if MinX<>ceiling(MinX):
+ MinX:=ceiling(MinX)-1;
+ fi;
+ fi;
+ if MaxY<>ceiling(MaxY):
+ MaxY:=ceiling(MaxY);
+ fi;
+ if MaxX<>ceiling(MaxX):
+ MaxX:=ceiling(MaxX);
+ fi;
+ if MaxX<1:
+ MaxX:=1;
+ fi;
+ if MaxY<1:
+ MaxY:=1;
+ fi;
+ if Prolonge:
+ draw courbe1(MinX-1,MaxX+1,25,Lagrange(x)(#1)) withpen pencircle scaled Epaisseur withcolor CoulTrace;
+ else:
+ draw courbe1(MinX,MaxX,25,Lagrange(x)(#1)) withpen pencircle scaled Epaisseur withcolor CoulTrace;
+ fi;
+ path cadreexterieur;
+ cadreexterieur=(((MinX-1)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX+1)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--((MinX-1)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--cycle);
+ clip currentpicture to cadreexterieur;
+ picture RetiensCourbe;
+ RetiensCourbe=currentpicture;
+ currentpicture:=nullpicture;
+ for k=(floor(MinY)-1) step y.u until (floor(MaxY)+1):
+ draw cm*((MinX-1)*X.u,k*Y.u)--cm*((MaxX+1)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX-1 step x.u until MaxX+1:
+ draw cm*(k*X.u,(floor(MinY)-1)*Y.u)--cm*(k*X.u,(floor(MaxY)+1)*Y.u) withcolor 0.75white;
+ endfor;
+ draw RetiensCourbe;
+ if PointsCourbe:
+ for k=1 upto nbpointsLg:
+ fill cercles(placepoint(xpart(M[k]),ypart(M[k])),0.5mm);
+ endfor;
+ fi;
+ drawarrow (0,(floor(MinY)-1)*Y.u*cm)--(0,(floor(MaxY)+1)*Y.u*cm);
+ drawarrow ((MinX-1)*X.u*cm,0)--((MaxX+1)*X.u*cm,0);
+ %
+ label.llft(TEX("O"),(0,0));
+ dotlabel.bot(TEX("1"),cm*X.u*(1,0));
+ dotlabel.lft(TEX("1"),cm*Y.u*(0,1));
+ if Code:
+ EffectuerTraces;
+ fi;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}%
+
\def\MPSplineCode{%
boolean PointsCourbe,Code,Prolonge;
PointsCourbe=\useKV[ClesFonction]{PointsCourbe};
@@ -328,6 +556,369 @@
endfor --placepoint(xuno,yuno);
Spline
enddef;
+ %
+ path Cb[];
+ vardef courbe[](expr a,b,nb)(text texte)=
+ path PfCCb;
+ for i:=0 upto nb :
+ x@[i]:=(a+i*(b-a)/nb);
+ x:=x@[i];
+ y@[i]:=texte;
+% if y@[i]>MaxY:
+% MaxY:=y@[i];
+% fi;
+% if (y@[i]/(Y.u*cm))<MinY:
+% MinY:=y@[i];
+% fi;
+ endfor ;
+ Cb@:=placepoint(x@.0,y@.0)
+ for i:=1 upto nb :
+ ..placepoint(x@[i],y@[i])
+ endfor;
+ PfCCb=Cb@;
+ PfCCb
+ enddef;
+ %
+ pair M[];%Les points de passage
+ pair N[][];%Les points conservés pour les calculs.
+ numeric nbm;%Le nombre de points de passage;
+ %
+vardef Lagrange(expr valeur)(text t)=
+ save Lagpt;
+ numeric Lagpt;
+ nbm:=0;
+ for p_=t:
+ nbm:=nbm+1;
+ endfor;
+ nbpoints:=0;
+ for p_=t:
+ nbpoints:=nbpoints+1;
+ M[nbpoints]:=p_;
+ endfor;
+ for k=1 upto nbm:
+ nbpoints:=0;
+ for l=1 upto nbm:
+ if l<>k:
+ nbpoints:=nbpoints+1;
+ N[k][nbpoints]:=M[l];
+ fi;
+ endfor;
+ endfor;
+ Lagpt=0;
+ for k=1 upto nbm:
+ ImagePoly:=for l=1 upto (nbm-1):(xpart(M[k])-xpart(N[k][l]))* endfor 1;
+ Lagpt:=Lagpt+((ypart(M[k])/ImagePoly)*for l=1 upto (nbm-1):(valeur-xpart(N[k][l]))* endfor 1);
+ endfor;
+ Lagpt
+ enddef;
+ vardef SplinePointsDeux(text t)=
+ pair Xxn[],Ffn[],Ddn[];%Xn abscisse,ordonnée D : dérivé g,dérivée d
+ nbsplined=0;
+ for p_=t:
+ nbsplined:=nbsplined+1;
+ if (nbsplined mod 2)=1:
+ Xxn[(nbsplined div 2)+1]=p_;
+ Ffn[(nbsplined div 2)+1]=cm*(X.u*xpart(p_),Y.u*ypart(p_));
+ else:
+ Ddn[(nbsplined div 2)]=p_
+ fi;
+ endfor;
+ enddef;
+}
+
+\def\MPLagrangeDouble#1#2#3#4#5#6{
+ % #1 la liste des points
+ % #2 la deuxième liste de points
+ % #3: pas en x
+ % #4: pas en y
+ % #5: unit\'e en x
+ % #6: unit\'e en y
+ \ifluatex
+ \mplibforcehmode
+ \mplibnumbersystem{double}
+ \begin{mplibcode}
+ \MPLagrangeCode
+
+ pair M[];%Les points de passage
+ pair N[][];%Les points conservés pour les calculs.
+ numeric nbm;%Le nombre de points de passage;
+
+ vardef Lagrange(expr valeur)(text t)=
+ save Lagpt;
+ numeric Lagpt;
+ nbm:=0;
+ for p_=t:
+ nbm:=nbm+1;
+ endfor;
+ nbpoints:=0;
+ for p_=t:
+ nbpoints:=nbpoints+1;
+ M[nbpoints]:=p_;
+ endfor;
+ for k=1 upto nbm:
+ nbpoints:=0;
+ for l=1 upto nbm:
+ if l<>k:
+ nbpoints:=nbpoints+1;
+ N[k][nbpoints]:=M[l];
+ fi;
+ endfor;
+ endfor;
+ Lagpt=0;
+ for k=1 upto nbm:
+ ImagePoly:=for l=1 upto (nbm-1):(xpart(M[k])-xpart(N[k][l]))* endfor 1;
+ Lagpt:=Lagpt+((ypart(M[k])/ImagePoly)*for l=1 upto (nbm-1):(valeur-xpart(N[k][l]))* endfor 1);
+ endfor;
+ Lagpt
+ enddef;
+
+ x.u:=#3;
+ y.u:=#4;
+ X.u:=#5;
+ Y.u:=#6;
+ %
+ MinY=-10;%999;
+ MaxY=10;%-999;
+ %
+ MaxX=7;
+ MinX=-7;
+ %
+ draw courbe1(-7,7,100,Lagrange(x)(#1)) withpen pencircle scaled Epaisseur withcolor CoulTrace;
+ draw courbe2(-7,7,100,Lagrange(x)(#2)) withpen pencircle scaled Epaisseur dashed dashpattern(on4 off2) withcolor CoulTrace;
+ % Détermination des MinY et MaxY
+ MinY:=Lagrange(MinX)(#1);
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#1)<MinY:
+ MinY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#1);
+ fi;
+ endfor;
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#2)<MinY:
+ MinY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#2);
+ fi;
+ endfor;
+ MaxY:=Lagrange(MinX)(#1);
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#1)>MaxY:
+ MaxY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#1);
+ fi;
+ endfor;
+ for k=0 upto 100:
+ if Lagrange(MinX+(k/100)*(MaxX-MinX))(#2)>MaxY:
+ MaxY:=Lagrange(MinX+(k/100)*(MaxX-MinX))(#2);
+ fi;
+ endfor;
+ if MinY>0:
+ MinY:=-1;
+ fi;
+ if MaxY<0:
+ MaxY:=1;
+ fi;
+ path cadreexterieur;
+ % cadreexterieur=(((MinX)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX)*X.u*cm,(floor(MinY)-1)*Y.u*cm)--((MaxX)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--((MinX)*X.u*cm,(floor(MaxY)+1)*Y.u*cm)--cycle);
+ cadreexterieur=(((MinX)*X.u*cm,(floor(MinY))*Y.u*cm)--((MaxX)*X.u*cm,(floor(MinY))*Y.u*cm)--((MaxX)*X.u*cm,(ceiling(MaxY))*Y.u*cm)--((MinX)*X.u*cm,(ceiling(MaxY))*Y.u*cm)--cycle);
+ clip currentpicture to cadreexterieur;
+ picture RetiensCourbe;
+ RetiensCourbe=currentpicture;
+ currentpicture:=nullpicture;
+ for k=(floor(MinY)) step y.u until (ceiling(MaxY)):
+ draw cm*((MinX)*X.u,k*Y.u)--cm*((MaxX)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX step x.u until MaxX:
+ draw cm*(k*X.u,(floor(MinY))*Y.u)--cm*(k*X.u,(ceiling(MaxY))*Y.u) withcolor 0.75white;
+ endfor;
+ draw RetiensCourbe;
+% if PointsCourbe:
+% for k=1 upto nbpointsLg:
+% fill cercles(placepoint(xpart(M[k]),ypart(M[k])),0.5mm);
+% endfor;
+% fi;
+ drawarrow (0,(floor(MinY))*Y.u*cm)--(0,(ceiling(MaxY))*Y.u*cm);
+ drawarrow ((MinX)*X.u*cm,0)--((MaxX)*X.u*cm,0);
+ %
+ label.llft(TEX("O"),(0,0));
+ dotlabel.bot(TEX("1"),cm*X.u*(1,0));
+ dotlabel.lft(TEX("1"),cm*Y.u*(0,1));
+ if Code:
+ EffectuerTraces;
+ fi;
+ %draw cadreexterieur withpen pencircle scaled 2;
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}%
+
+\def\MPSplineDouble#1#2#3#4#5#6{%
+ % #1 la liste des points
+ % #2 la deuxième liste de points
+ % #3: pas en x
+ % #4: pas en y
+ % #5: unit\'e en x
+ % #6: unit\'e en y
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ \MPSplineCode;
+
+ x.u:=#3;
+ y.u:=#4;
+ X.u:=#5;
+ Y.u:=#6;
+
+ pair Xn[][],Fn[][],Dn[][];%Xn abscisse,ordonnée D : dérivé g,dérivée d
+
+ numeric N[];
+
+ NbTotalSpline=0;
+
+ vardef PointsSplines(text t)=
+ n:=0;
+ NbTotalSpline:=NbTotalSpline+1;
+ for p_=t:
+ n:=n+1;
+ if (n mod 2)=1:
+ Xn[NbTotalSpline][(n div 2)+1]=p_;
+ Fn[NbTotalSpline][(n div 2)+1]=cm*(X.u*xpart(p_),Y.u*ypart(p_));
+ else:
+ Dn[NbTotalSpline][(n div 2)]=p_
+ fi;
+ endfor;
+ N[NbTotalSpline]:=n div 2;
+ enddef;
+
+ PointsSplines(#1);
+ PointsSplines(#2);
+
+ if Prolonge:
+ debutbalai=2;
+ else:
+ debutbalai=1;
+ fi;
+
+ vardef DeterminationMinMax(expr nbs)=
+ finbalai:=N[nbs];
+ Minx[nbs]=999;
+ Maxx[nbs]=-999;
+ Miny[nbs]=999;
+ Maxy[nbs]=-999;
+ for k=debutbalai upto finbalai:
+ if xpart(Xn[nbs][k])<Minx[nbs]:
+ Minx[nbs]:=xpart(Xn[nbs][k]);
+ fi;
+ if xpart(Xn[nbs][k])>Maxx[nbs]:
+ Maxx[nbs]:=xpart(Xn[nbs][k]);
+ fi;
+ if ypart(Xn[nbs][k])<Miny[nbs]:
+ Miny[nbs]:=ypart(Xn[nbs][k]);
+ fi;
+ if ypart(Xn[nbs][k])>Maxy[nbs]:
+ Maxy[nbs]:=ypart(Xn[nbs][k]);
+ fi;
+ endfor;
+ enddef;
+
+ DeterminationMinMax(1);
+ DeterminationMinMax(2);
+
+ if Minx[1]<Minx[2]:
+ MinX:=Minx[2];
+ else:
+ MinX:=Minx[1];
+ fi;
+
+ if Maxx[1]<Maxx[2]:
+ MaxX:=Maxx[1];
+ else:
+ MaxX:=Maxx[2];
+ fi;
+
+ if Miny[1]<Miny[2]:
+ MinY:=Miny[1];
+ else:
+ MinY:=Miny[2];
+ fi;
+
+ if Maxy[1]<Maxy[2]:
+ MaxY:=Maxy[2];
+ else:
+ MaxY:=Maxy[1];
+ fi;
+
+ if MaxY<1:
+ MaxY:=2;
+ fi;
+ if MinY>-1:
+ MinY:=-2;
+ fi;
+ if MinY<0:
+ if MinY<>ceiling(MinY):
+ MinY:=ceiling(MinY)-1;
+ fi;
+ fi;
+ if MinX<0:
+ if MinX<>ceiling(MinX):
+ MinX:=ceiling(MinX)-1;
+ fi;
+ fi;
+ if MaxY<>ceiling(MaxY):
+ MaxY:=ceiling(MaxY);
+ fi;
+ if MaxX<>ceiling(MaxX):
+ MaxX:=ceiling(MaxX);
+ fi;
+ if MinX<0:
+ else:
+ MinX:=-1;
+ fi;
+ if MaxX<1:
+ MaxX:=1;
+ fi;
+ if MaxY<1:
+ MaxY:=1;
+ fi;
+ %
+ path cadreexterieur;
+ cadreexterieur=(((MinX)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX)*X.u*cm,(MinY-1)*Y.u*cm)--((MaxX)*X.u*cm,(MaxY+1)*Y.u*cm)--((MinX)*X.u*cm,(MaxY+1)*Y.u*cm)--cycle);
+ path SplineRecap[][],CourbeTotale[];
+ for r=1 upto 2:
+ for l=1 upto N[r]-1:
+ SplineRecap[r][l]=SplineCubique(xpart(Xn[r][l]),ypart(Xn[r][l]),xpart(Xn[r][l+1]),ypart(Xn[r][l+1]),ypart(Dn[r][l]),xpart(Dn[r][l+1]));
+ endfor;
+ CourbeTotale[r]=SplineRecap[r][1] for l=2 upto N[r]-1:..SplineRecap[r][l] endfor;
+ endfor;
+ draw CourbeTotale[1] withpen pencircle scaled Epaisseur withcolor CoulTrace;
+ draw CourbeTotale[2] withpen pencircle scaled Epaisseur dashed dashpattern(on4 off 2) withcolor CoulTrace;
+ %
+ if PointsCourbe:
+ for k=debutbalai upto finbalai:
+ fill cercles(Fn[1][k],0.5mm);
+ fill cercles(Fn[2][k],0.5mm);
+ endfor;
+ fi;
+ %
+ clip currentpicture to cadreexterieur;
+ picture RetiensCourbe;
+ RetiensCourbe=currentpicture;
+ currentpicture:=nullpicture;
+ for k=MinY step y.u until MaxY:
+ draw cm*((MinX)*X.u,k*Y.u)--cm*((MaxX)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX step x.u until MaxX:
+ draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
+ endfor;
+ drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
+ drawarrow ((MinX)*X.u*cm,0)--((MaxX)*X.u*cm,0);
+ %
+ draw RetiensCourbe;
+ label.llft(btex O etex,(0,0));
+ dotlabel.bot(btex 1 etex,cm*X.u*(1,0));
+ dotlabel.lft(btex 1 etex,cm*Y.u*(0,1));
+ if Code:
+ EffectuerTraces;
+ fi;
+ trace cadreexterieur withcolor 0.75white;
+ \end{mplibcode}
+\fi
}
\def\MPSpline#1#2#3#4#5{%
@@ -337,7 +928,7 @@
% #4: unit\'e en x
% #5: unit\'e en y
\ifluatex
- \mplibforcehmode
+ \mplibforcehmode
\begin{mplibcode}
\MPSplineCode;
@@ -405,6 +996,10 @@
if MaxX<>ceiling(MaxX):
MaxX:=ceiling(MaxX);
fi;
+ if MinX<0:
+ else:
+ MinX:=-1;
+ fi;
if MaxX<1:
MaxX:=1;
fi;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
index f15a0b9827e..a864165fba1 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCNumerationsAnciennes.tex
@@ -1,13 +1,21 @@
-\NewDocumentCommand\Chinoise{m}{%
- \BuildNumerationChinoise{#1}%
+\setKVdefault[NumerationAncienne]{Couleur=black}%
+
+\NewDocumentCommand\Chinoise{om}{%
+ \useKVdefault[NumerationAncienne]%
+ \setKV[NumerationAncienne]{#1}%
+ \BuildNumerationChinoise{#2}%
}%
-\NewDocumentCommand\Maya{m}{%
- \BuildNumerationMaya{#1}%
+\NewDocumentCommand\Maya{om}{%
+ \useKVdefault[NumerationAncienne]%
+ \setKV[NumerationAncienne]{#1}%
+ \BuildNumerationMaya{#2}%
}%
-\NewDocumentCommand\Babylone{m}{%
- \BuildNumerationBabylone{#1}%
+\NewDocumentCommand\Babylone{om}{%
+ \useKVdefault[NumerationAncienne]%
+ \setKV[NumerationAncienne]{#1}%
+ \BuildNumerationBabylone{#2}%
}%
\NewDocumentCommand\BuildNumerationChinoise{m}{%
@@ -15,7 +23,9 @@
\mplibnumbersystem{double}%
\mplibforcehmode
\begin{mplibcode}
- drawoptions(withpen pencircle scaled 1.5);
+ color CouleurTrace;
+ CouleurTrace=\useKV[NumerationAncienne]{Couleur};
+ drawoptions(withpen pencircle scaled 1.5 withcolor CouleurTrace);
ecart:=0.15u;
vardef Chiffre(expr t,a)=
picture Chinois;
@@ -94,7 +104,9 @@
\mplibnumbersystem{double}%
\mplibforcehmode
\begin{mplibcode}
- drawoptions(withpen pencircle scaled 1.5);
+ color CouleurTrace;
+ CouleurTrace=\useKV[NumerationAncienne]{Couleur};
+ drawoptions(withpen pencircle scaled 1.5 withcolor CouleurTrace);
%
picture MayaZero;
MayaZero=image(
@@ -170,7 +182,9 @@
\mplibforcehmode%
\begin{mplibcode}
u:=8mm;
- drawoptions(withpen pencircle scaled 1.5);
+ color CouleurTrace;
+ CouleurTrace=\useKV[NumerationAncienne]{Couleur};
+ drawoptions(withpen pencircle scaled 1.5 withcolor CouleurTrace);
%
picture Chevron,Clou;
Chevron=image(%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
index 0933a3e4602..1e6526f41b0 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPropor.tex
@@ -10,6 +10,7 @@
\def\Buildtabpropor{%
\setcounter{NbProporG}{0}%
\setcounter{NbProporD}{0}%
+ \colorlet{FondGrandeur}{\useKV[ClesPropor]{CouleurTab}}
\renewcommand{\arraystretch}{\useKV[ClesPropor]{Stretch}}%
\ifboolKV[ClesPropor]{Vertical}{%
\begin{tabular}{c|*{2}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}c}%
@@ -26,8 +27,8 @@
}{%
\tabtoksa{}\tabtoksb{}%
\ifboolKV[ClesPropor]{Simple}{}{%
- \tabtoksa{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurA}}%
- \tabtoksb{\cellcolor{\useKV[ClesPropor]{CouleurTab}}\useKV[ClesPropor]{GrandeurB}}%
+ \tabtoksa{\cellcolor{FondGrandeur}\useKV[ClesPropor]{GrandeurA}}%
+ \tabtoksb{\cellcolor{FondGrandeur}\useKV[ClesPropor]{GrandeurB}}%
}%
\ifboolKV[ClesPropor]{Math}{%
\foreachitem\compteur\in\ListeValeur{\expandafter\Updatetoksmath\compteur\nil}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex b/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
index d63849f6134..fa6b138d6fd 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCPythagore.tex
@@ -1,7 +1,7 @@
%%%
% Le th\'eor\`eme de Pythagore
%%%
-\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Echelle=1cm,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,Perso=false,AllPerso=false,SansMots=false,Decalage=5mm}%
+\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Echelle=1cm,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,Perso=false,AllPerso=false,SansMots=false,Decalage=5mm,ModeleCouleur=5}%
\defKV[ClesPythagore]{ValeurA=\setKV[ClesPythagore]{EnchaineA}}%
\defKV[ClesPythagore]{ValeurB=\setKV[ClesPythagore]{EnchaineB}}%
\defKV[ClesPythagore]{ValeurC=\setKV[ClesPythagore]{EnchaineC}}%
@@ -21,6 +21,8 @@
\ifluatex
\mplibforcehmode%
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesPythagore]{ModeleCouleur};
+
u:=\useKV[ClesPythagore]{Echelle};
pair A,B,C,O,D,E,F;%B est le sommet de l'angle droit
O=u*(2.5,2.5);
@@ -88,6 +90,7 @@
draw B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
draw D--E--F;
+ numeric decalage;
decalage=3mm;
if (#4<#5) or (#4=#5) :
if ypart(B)>ypart(O) :
@@ -124,7 +127,8 @@
% #7 angle de rotation de la figure
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesPythagore]{ModeleCouleur};
u:=\useKV[ClesPythagore]{Echelle};
decalage=\useKV[ClesPythagore]{Decalage};
pair A,B,C,O,D,E,F;%B est le sommet de l'angle droit
@@ -165,7 +169,8 @@
C:=C rotatedabout(O,#7);
draw A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
draw B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
- draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
+ draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
+ numeric decalage;
decalage=3mm;
label(LATEX("\num{#4}"),O+decalage*(unitvector(O-B)));
label(LATEX("\num{#5}"),1/2[C,B]+decalage*(unitvector(1/2[C,B]-O)));
@@ -186,7 +191,8 @@
% #6 angle de rotation de la figure
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesPythagore]{ModeleCouleur};
u:=\useKV[ClesPythagore]{Echelle};
pair A,B,C,O,D,E,F,L[],M[],N[];%B est le sommet de l'angle droit
O=u*(2.5,2.5);
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
index fa35906eadc..9745bb144c1 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCQuestionsRelier.tex
@@ -2,8 +2,46 @@
% R\'eponses \`a relier
%%%
\setKVdefault[ClesRelie]{Solution=false,LargeurG=5cm,LargeurD=2cm,Stretch=1.5,Ecart=2cm,Couleur=black}%
+\defKV[ClesRelie]{Graine=\PfCGraineAlea{#1}}%
-\newcommand\Relie[2][]{%
+\NewDocumentCommand\Relie{som}{%
+ \useKVdefault[ClesRelie]%
+ \setKV[ClesRelie]{#2}%
+ \colorlet{PfCRelieCouleurTrace}{\useKV[ClesRelie]{Couleur}}%
+ \setsepchar[*]{,*/}\reademptyitems%
+ \readlist*\ListeRelie{#3}%
+ \ignoreemptyitems%
+ \IfBooleanTF{#1}{%
+ \buildtabrelieauto%
+ %\par
+ \ifboolKV[ClesRelie]{Solution}{%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
+ \itemtomacro\PfCListeReponsesMelangees[##1]\PfCNumReponses%
+ \itemtomacro\ListeRelie[\PfCNumReponses,1]\untest%
+ % Le test est \untest\\
+ \ifx\bla\untest\bla%
+ \else
+ \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-\PfCNumReponses) -- (RelieD-##1);}%
+ \fi
+ }%
+ }{%
+ }%
+ }{%
+ \buildtabrelie%
+ \ifboolKV[ClesRelie]{Solution}{%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{%
+ \itemtomacro\ListeRelie[##1,1]\untest%
+ \ifx\bla\untest\bla%
+ \else%
+ \tikz[remember picture,overlay]{\draw[PfCRelieCouleurTrace] (RelieG-##1) -- (RelieD-\ListeRelie[##1,3]);}%
+ \fi
+ }%
+ }{%
+ }%
+ }%
+}%
+
+\newcommand\Relieold[2][]{%
\useKVdefault[ClesRelie]%
\setKV[ClesRelie]{#1}%
\setsepchar[*]{,*/}\reademptyitems%
@@ -44,17 +82,32 @@
\setcounter{NbRelie}{0}%
}%
-\def\buildtabrelieold{%
+\def\buildtabrelieauto{%
\setcounter{NbRelie}{0}%
+ \xdef\PfCFooListeNbQ{1}%
+ \xintFor* ##1 in{\xintSeq{2}{\ListeRelielen}}\do{%
+ \xdef\PfCFooListeNbQ{\PfCFooListeNbQ,##1}%
+ }%
+ \setsepchar{,}\ignoreemptyitems%
+ \MelangeListe{\PfCFooListeNbQ}{\ListeRelielen}%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\PfCListeReponsesMelangees{\faa}%
\renewcommand{\arraystretch}{\useKV[ClesRelie]{Stretch}}%
\begin{tabular}{p{\useKV[ClesRelie]{LargeurG}}cp{\useKV[ClesRelie]{Ecart}}>{\tikz[remember
- picture,baseline]{\node[name=RelieD-\theNbRelie]{\Large\textbullet};}}cp{\useKV[ClesRelie]{LargeurD}}}%
- \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{\ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
-\ifx\bla\untest\bla%
- \uppercase{&}\stepcounter{NbRelie}%
+ picture]{\node[name=RelieD-\theNbRelie,inner
+ sep=0pt]{};\fill[] (RelieD-\theNbRelie) circle[radius=1.5pt]}}cp{\useKV[ClesRelie]{LargeurD}}}%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeRelielen}}\do{
+ \ListeRelie[##1,1]\itemtomacro\ListeRelie[##1,1]\untest%
+ \ifx\bla\untest\bla%
+ \uppercase{&}\stepcounter{NbRelie}\tikz[remember
+ picture,overlay]{\node[name=RelieG-\theNbRelie,inner
+ sep=0pt]{};}
\else
- \uppercase{&}\stepcounter{NbRelie}\tikz[remember picture,baseline]{\node[name=RelieG-\theNbRelie]{\Large\textbullet};}
-\fi&&&\ListeRelie[##1,2]\\}%
+ \uppercase{&}\stepcounter{NbRelie}\tikz[remember
+ picture,overlay]{\node[name=RelieG-\theNbRelie,inner
+ sep=0pt]{};\fill[]
+ (RelieG-\theNbRelie) circle[radius=1.5pt];}
+ \fi&&&\itemtomacro\PfCListeReponsesMelangees[##1]\PfCNumReponses\ListeRelie[\PfCNumReponses,2]\\}%
\end{tabular}%
\setcounter{NbRelie}{0}%
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
index 6ab6ebf847e..4c116cff671 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex
@@ -1,7 +1,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,AffichageUnites=true,MarquePrimaire=true,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,ValeurMiny=-4000,ValeurMaxy=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp",Niveaux=false,Decale=false,Tiret=false,Cadre=false}
+\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,AffichageUnites=true,MarquePrimaire=true,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,ValeurMiny=-4000,ValeurMaxy=4000,Etages=4,Code=false,Globe=false,Rho=1500,Phi=22,Theta=10,CouleurE=orange,CouleurG=green,Axes=false,TypeProj="persp",Niveaux=false,Decale=false,Tiret=false,Cadre=false,ModeleCouleur=5,EchelleCroix=1,CouleurCroix=black}
\defKV[ClesReperage]{Traces=\setKV[ClesReperage]{Code}}%
\defKV[ClesReperage]{Niveau=\setKV[ClesReperage]{Etages=#1}\setKV[ClesReperage]{Niveaux}}%
% ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :)
@@ -53,6 +53,13 @@
\mplibnumbersystem{double}%
\mplibforcehmode%
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+
+ if defaultcolormodel=7:
+ cmykcolor black;
+ black=(0,0,0,1);
+ fi;
+
input PfCSolid;
% Pour convertir les (Long,lat) données en degrés en (Long,lat) données en radians
vardef ConvDeg(expr fa,fl)=
@@ -235,7 +242,13 @@
\def\MPEspaceSphere#1#2{%
\ifluatex
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor white,blanc;
+ white=(0,0,0,1);
+ blanc=(0,0,0,0);
+ fi;
typetrace:="3D";
typerepre:="persp";
anglephi:=\useKV[ClesReperage]{AnglePhi};
@@ -425,136 +438,142 @@
\def\MPEspacePave#1#2#3#4#5#6#7#8#9{%
\ifluatex%
\mplibforcehmode%
- \begin{mplibcode}
- typetrace:="3D";
- typerepre:="persp";
- Figure(-20u,-20u,20u,20u);
- Initialisation(1500,30,20,abs(#9));
- %marque_r:=marque_r/2;
- marque_p:="plein";
- color A,B,C,D,E,F,G,H,M[],N[];
- draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
- if #9>0:
- drawarrow Projette(A)--Projette(1.5[D,A]);
- drawarrow Projette(C)--Projette(1.5[D,C]);
- drawarrow Projette(E)--Projette(1.5[D,E]);
- label.top(btex $x$ etex,Projette(1.5[D,A]));
- label.top(btex $y$ etex,Projette(1.5[D,C]));
- label.top(btex $z$ etex,Projette(1.5[D,E]));
- label.ulft(btex 1 etex,Projette((1/#2)[D,A]));
- label.bot(btex 1 etex,Projette((1/#4)[D,C]));
- label.lft(btex 1 etex,Projette((1/#6)[D,E]));
- for k=1 upto (#2):
- pointe((k/#2)[D,A]);
- endfor;
- for k=1 upto (#4):
- pointe((k/#4)[D,C]);
- endfor;
- for k=1 upto (#6):
- pointe((k/#6)[D,E]);
- endfor;
- else:
- drawarrow Projette(D)--Projette(1.5[A,D]) dashed evenly;
- drawarrow Projette(B)--Projette(1.5[A,B]);
- drawarrow Projette(F)--Projette(1.5[A,F]);
- label.lrt(btex $x$ etex,Projette(1.5[A,D]));
- label.top(btex $y$ etex,Projette(1.5[A,B]));
- label.top(btex $z$ etex,Projette(1.5[A,F]));
- label.ulft(btex 1 etex,Projette((1/#2)[A,D]));
- label.bot(btex 1 etex,Projette((1/#4)[A,B]));
- label.lft(btex 1 etex,Projette((1/#6)[A,F]));
- for k=1 upto (#2):
- pointe((k/#2)[A,D]);
- endfor;
- for k=1 upto (#4):
- pointe((k/#4)[A,B]);
- endfor;
- for k=1 upto (#6):
- pointe((k/#6)[A,F]);
- endfor;
- fi;
- vardef tata(text t)=
- n:=1;%pour compter combien de points
- k:=0;%pour garder l'abscisse
- l:=0;%pour garder l'ordonn\'ee
- m:=0;%pour garder l'altitude
- if #8>0:
- for p_=t:
- if (n mod 4)=1:
- k:=p_;
- fi;
- if (n mod 4)=2:
- l:=p_;
- fi;
- if (n mod 4)=3:
- m:=p_;
- fi;
- if (n mod 4)=0:
- M[n]=(k/#2)[D,A]+(l/#4)*(C-D)+(m/#6)*(E-D);
- N[n]=(k/#2)[D,A]+(l/#4)*(C-D);
- if (#8>1):
- label.top(TEX(p_),Projette(M[n]));
- pointe(M[n]);
- fi;
- if (#8=1) or (#8=3) :
- drawoptions(dashed evenly withcolor gris);
- draw segment(M[n],(0,0,bluepart(M[n])));
- draw segment(M[n],N[n]);
- draw segment(N[n],(redpart(M[n]),0,0));
- draw segment(N[n],(0,greenpart(M[n]),0));
- drawoptions();
- fi;
- fi;
- n:=n+1;
- endfor;
- fi;
- enddef;
- vardef toto(text t)=
- n:=1;%pour compter combien de points
- k:=0;%pour garder l'abscisse
- l:=0;%pour garder l'ordonn\'ee
- m:=0;%pour garder l'altitude
- if #8>0:
- for p_=t:
- if (n mod 4)=1:
- k:=p_;
- fi;
- if (n mod 4)=2:
- l:=p_;
- fi;
- if (n mod 4)=3:
- m:=p_;
- fi;
- if (n mod 4)=0:
- % message("je suis ici : "&p_);
- M[n]=(k/#2)[A,D]+(l/#4)*(B-A)+(m/#6)*(F-A);
- N[n]=(k/#2)[A,D]+(l/#4)*(B-A);
- if (#8>1):
- label.top(TEX(p_),Projette(M[n]));
- pointe(M[n]);
- fi;
- if (#8=1) or (#8=3) :
- drawoptions(dashed evenly withcolor gris);
- draw segment(M[n],A+(0,0,bluepart(M[n])));
- draw segment(M[n],N[n]);
- draw segment(N[n],A+(l/#4)*(B-A));
- draw segment(N[n],A+(k/#2)*(D-A));
- drawoptions();
- fi;
- fi;
- n:=n+1;
- endfor;
- fi;
- enddef;
- if #9>0:
- tata(#7);
- else:
- toto(#7);
- fi;
- draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
- if \useKV[ClesReperage]{Code}:
- \useKV[ClesReperage]{Traces}
- fi;
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor CoulTrace,gris;
+ CoulTrace=(0,0,0,1);
+ gris=0.1(0,0,0,1);
+ fi;
+ typetrace:="3D";
+ typerepre:="persp";
+ Figure(-20u,-20u,20u,20u);
+ Initialisation(1500,30,20,abs(#9));
+ % marque_r:=marque_r/2;
+ marque_p:="plein";
+ color A,B,C,D,E,F,G,H,M[],N[];
+ draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
+ if #9>0:
+ drawarrow Projette(A)--Projette(1.5[D,A]);
+ drawarrow Projette(C)--Projette(1.5[D,C]);
+ drawarrow Projette(E)--Projette(1.5[D,E]);
+ label.top(btex $x$ etex,Projette(1.5[D,A]));
+ label.top(btex $y$ etex,Projette(1.5[D,C]));
+ label.top(btex $z$ etex,Projette(1.5[D,E]));
+ label.ulft(btex 1 etex,Projette((1/#2)[D,A]));
+ label.bot(btex 1 etex,Projette((1/#4)[D,C]));
+ label.lft(btex 1 etex,Projette((1/#6)[D,E]));
+ for k=1 upto (#2):
+ pointe((k/#2)[D,A]);
+ endfor;
+ for k=1 upto (#4):
+ pointe((k/#4)[D,C]);
+ endfor;
+ for k=1 upto (#6):
+ pointe((k/#6)[D,E]);
+ endfor;
+ else:
+ drawarrow Projette(D)--Projette(1.5[A,D]) dashed evenly;
+ drawarrow Projette(B)--Projette(1.5[A,B]);
+ drawarrow Projette(F)--Projette(1.5[A,F]);
+ label.lrt(btex $x$ etex,Projette(1.5[A,D]));
+ label.top(btex $y$ etex,Projette(1.5[A,B]));
+ label.top(btex $z$ etex,Projette(1.5[A,F]));
+ label.ulft(btex 1 etex,Projette((1/#2)[A,D]));
+ label.bot(btex 1 etex,Projette((1/#4)[A,B]));
+ label.lft(btex 1 etex,Projette((1/#6)[A,F]));
+ for k=1 upto (#2):
+ pointe((k/#2)[A,D]);
+ endfor;
+ for k=1 upto (#4):
+ pointe((k/#4)[A,B]);
+ endfor;
+ for k=1 upto (#6):
+ pointe((k/#6)[A,F]);
+ endfor;
+ fi;
+ vardef tata(text t)=
+ n:=1;%pour compter combien de points
+ k:=0;%pour garder l'abscisse
+ l:=0;%pour garder l'ordonn\'ee
+ m:=0;%pour garder l'altitude
+ if #8>0:
+ for p_=t:
+ if (n mod 4)=1:
+ k:=p_;
+ fi;
+ if (n mod 4)=2:
+ l:=p_;
+ fi;
+ if (n mod 4)=3:
+ m:=p_;
+ fi;
+ if (n mod 4)=0:
+ M[n]=(k/#2)[D,A]+(l/#4)*(C-D)+(m/#6)*(E-D);
+ N[n]=(k/#2)[D,A]+(l/#4)*(C-D);
+ if (#8>1):
+ label.top(TEX(p_),Projette(M[n]));
+ pointe(M[n]);
+ fi;
+ if (#8=1) or (#8=3) :
+ drawoptions(dashed evenly withcolor gris);
+ draw segment(M[n],(0,0,bluepart(M[n])));
+ draw segment(M[n],N[n]);
+ draw segment(N[n],(redpart(M[n]),0,0));
+ draw segment(N[n],(0,greenpart(M[n]),0));
+ drawoptions();
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
+ enddef;
+ vardef toto(text t)=
+ n:=1;%pour compter combien de points
+ k:=0;%pour garder l'abscisse
+ l:=0;%pour garder l'ordonn\'ee
+ m:=0;%pour garder l'altitude
+ if #8>0:
+ for p_=t:
+ if (n mod 4)=1:
+ k:=p_;
+ fi;
+ if (n mod 4)=2:
+ l:=p_;
+ fi;
+ if (n mod 4)=3:
+ m:=p_;
+ fi;
+ if (n mod 4)=0:
+ % message("je suis ici : "&p_);
+ M[n]=(k/#2)[A,D]+(l/#4)*(B-A)+(m/#6)*(F-A);
+ N[n]=(k/#2)[A,D]+(l/#4)*(B-A);
+ if (#8>1):
+ label.top(TEX(p_),Projette(M[n]));
+ pointe(M[n]);
+ fi;
+ if (#8=1) or (#8=3) :
+ drawoptions(dashed evenly withcolor gris);
+ draw segment(M[n],A+(0,0,bluepart(M[n])));
+ draw segment(M[n],N[n]);
+ draw segment(N[n],A+(l/#4)*(B-A));
+ draw segment(N[n],A+(k/#2)*(D-A));
+ drawoptions();
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
+ enddef;
+ if #9>0:
+ tata(#7);
+ else:
+ toto(#7);
+ fi;
+ draw Pave(A,B,C,D,E,F,G,H)(#1,#3,#5);
+ if \useKV[ClesReperage]{Code}:
+ \useKV[ClesReperage]{Traces}
+ fi;
\end{mplibcode}
\else
\begin{mpost}[mpsettings={input PfCGeometrie;}]
@@ -719,6 +738,7 @@
% #5 : liste des points pour les string
\ifluatex
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
boolean Tiret,Code,AffichageGrad,Cadre;
Tiret=\useKV[ClesReperage]{Tiret};
Code=\useKV[ClesReperage]{Code};
@@ -1236,6 +1256,7 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -1251,6 +1272,13 @@
AffichageUnites=\useKV[ClesReperage]{AffichageUnites};
MarquePrimaire=\useKV[ClesReperage]{MarquePrimaire};
Decale=\useKV[ClesReperage]{Decale};
+ if defaultcolormodel=7:
+ cmykcolor CouleurCroix;
+ else:
+ color CouleurCroix;
+ fi;
+ CouleurCroix=\useKV[ClesReperage]{CouleurCroix};
+ EchelleCroix=\useKV[ClesReperage]{EchelleCroix};
numeric valeur[];
vardef titi(text t)=
n:=0;
@@ -1321,7 +1349,7 @@
endfor;
fi;
% marquage des points
- m_c:=m_c*3;
+ m_c:=m_c*3/EchelleCroix;
marque_p:="croix";
labeloffset:=labeloffset*3;
if AffichageUnites:
@@ -1346,7 +1374,9 @@
label.top(TEX(p_),unitp*(valeur[n],0));
fi;
if p_<>"":
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
endfor;
fi;
@@ -1358,7 +1388,9 @@
if substring(1,2) of p_="*":
ACoord:=scantokens(substring(0,1) of p_);
if ACoord=4:
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=3:
if Decale:
drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm);
@@ -1379,17 +1411,23 @@
fi;
fi;
labeloffset:=Labeloffset;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=2:
if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurOrigine*pasx)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&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;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
elseif ACoord=1:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
else:
if AffichageCoord=4:
@@ -1415,7 +1453,9 @@
fi;
fi;
labeloffset:=Labeloffset;
+ drawoptions(withcolor CouleurCroix);
pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
elseif AffichageCoord=2:
if p_<>"":
@@ -1424,12 +1464,16 @@
else:
label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
- pointe(unitp*(valeur[n],0));
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
elseif AffichageCoord=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));
+ drawoptions(withcolor CouleurCroix);
+ pointe(unitp*(valeur[n],0));
+ drawoptions();
fi;
fi;
fi;
@@ -1599,6 +1643,7 @@
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -1973,6 +2018,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
maxx:=0;
minx:=4000;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
@@ -2159,6 +2205,11 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur};
+ if defaultcolormodel=7:
+ cmykcolor white;
+ white=(0,0,0,1);
+ fi;
unitex:=\useKV[ClesReperage]{Unitex}*cm;
pasx:=10;
unitp:=unitex/pasx;
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
index dbd54d18571..4ac96a74e66 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex
@@ -1,7 +1,7 @@
%%%
% Tableur
%%%
-\setKVdefault[Tableur]{Colonnes=4,Largeur=30pt,LargeurUn=30pt,Bandeau=true,Formule={},Cellule=A1,Ligne=0,Colonne=0,PasL=1,PasC=1,Selection=false}%
+\setKVdefault[Tableur]{Colonnes=4,Largeur=30pt,LargeurUn=30pt,Bandeau=true,Formule={},Cellule=A1,Ligne=0,Colonne=0,PasL=1,PasC=1,Selection=false,DebutColonnes=0,DebutLignes=0}%
%Idee de P. Nuns
\defKV[Tableur]{Couleur=\setKV[Tableur]{Selection}}%
%
@@ -9,7 +9,8 @@
%Bas\'e sur un code de Christian T\'ell\'ech\'ea.
\newcount\cntlin%
\newcount\cntcol%
-
+\newcount\Affichecntcol%
+\newcount\Affichecntlin%
\makeatletter%
\newtoks\t@b%
\long\def\ifremain@lines#1\\#2\@nil{%
@@ -28,13 +29,21 @@
\newlength\PfCTableurLargeurUn%
\newlength\PfCTableurLargeur%
-%\RequirePackage{printlen}
-
\newenvironment{Tableur}[1][]{%
\useKVdefault[Tableur]%
\setKV[Tableur]{#1}%
\setlength{\PfCTableurLargeurUn}{\fpeval{\useKV[Tableur]{LargeurUn}}pt}%
\setlength{\PfCTableurLargeur}{\fpeval{\useKV[Tableur]{Largeur}}pt}%
+ \ifnum\useKV[Tableur]{DebutColonnes}=0\relax
+ \Affichecntcol\z@%
+ \else
+ \Affichecntcol=\number\numexpr\useKV[Tableur]{DebutColonnes}-1%
+ \fi
+ \ifnum\useKV[Tableur]{DebutLignes}=0\relax
+ \Affichecntlin\z@%
+ \else
+ \Affichecntlin=\number\numexpr\useKV[Tableur]{DebutLignes}-1%
+ \fi
\ttfamily%
\newcolumntype{A}{>{\centering\arraybackslash}m{\PfCTableurLargeurUn}}%
\newcolumntype{B}{>{\centering\arraybackslash}m{\PfCTableurLargeur}}%
@@ -50,12 +59,13 @@
\t@b{%
\begin{NiceTabular}{%
>{%
- \global\cntcol\z@\global\advance\cntlin\@ne%
+ \global\cntcol\z@
+ \global\advance\cntlin\@ne%
\centering\arraybackslash%
\ifnum\cntlin>\@ne%
\ifboolKV[Tableur]{Selection}{%
- \xintifboolexpr{\cntlin>\useKV[Tableur]{Ligne} && \cntlin<\fpeval{\useKV[Tableur]{Ligne}+\useKV[Tableur]{PasL}+1}}{\textcolor{white}{\number\numexpr\cntlin-1\relax}}{\number\numexpr\cntlin-1\relax}%
- }{\number\numexpr\cntlin-1\relax}\fi}%
+ \xintifboolexpr{\cntlin>\useKV[Tableur]{Ligne} && \cntlin<\fpeval{\useKV[Tableur]{Ligne}+\useKV[Tableur]{PasL}+1}}{\textcolor{white}{\fpeval{\cntlin+\Affichecntlin-1}}}{\fpeval{\cntlin+\Affichecntlin-1}}%
+ }{\fpeval{\cntlin+\Affichecntlin-1}}\fi}%
wc{20pt}A*{\fpeval{\useKV[Tableur]{Colonnes}-1}}{B}}[hvlines,color-inside]%
\CodeBefore
% on colorie en gris toute la première ligne
@@ -80,23 +90,24 @@
}%
\Body
%
- }%
+ }%
\loop%
\ifnum\cntcol<\useKV[Tableur]{Colonnes}%
- \advance\cntcol\@ne%
+ \advance\cntcol\@ne%
+ \advance\Affichecntcol\@ne%
\addtot@b{&}%
% modif by Pascal Nuns
\ifboolKV[Tableur]{Selection}{%
\ifnum\cntcol>\fpeval{\useKV[Tableur]{Colonne}-1}%
\ifnum\cntcol<\fpeval{\useKV[Tableur]{Colonne}+\useKV[Tableur]{PasC}}%
- \edftot@b{{\noexpand\textcolor{white}{\noexpand\bfseries\@Alph{\the\cntcol}}}}%
+ \edftot@b{{\noexpand\textcolor{white}{\noexpand\bfseries\@Alph{\the\Affichecntcol}}}}%
\else%
- \edftot@b{\@Alph{\the\cntcol}}%
+ \edftot@b{\@Alph{\the\Affichecntcol}}%
\fi%
\else%
- \edftot@b{\@Alph{\the\cntcol}}%
+ \edftot@b{\@Alph{\the\Affichecntcol}}%
\fi%
- }{\edftot@b{\@Alph{\the\cntcol}}}%
+ }{\edftot@b{\@Alph{\the\Affichecntcol}}}%
% fin de modif
\repeat%
\addtot@b{\\&}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex b/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
index b88aa3d582f..a5ce8ebf635 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCResoudreEquation.tex
@@ -1,7 +1,7 @@
%%%
% Equations
%%%
-\setKVdefault[ClesEquation]{Ecart=0.5,Fleches=false,FlecheDiv=false,Laurent=false,Decomposition=false,Terme=false,Composition=false,Symbole=false,Decimal=false,Entier=false,Lettre=x,Solution=false,LettreSol=true,Bloc=false,Simplification=false,CouleurTerme=black,CouleurCompo=black,CouleurSous=red,CouleurSymbole=orange,Verification=false,Nombre=0,Egalite=false,Produit=false,Facteurs=false,Carre=false,Exact=false,Pose=false,Equivalence=false}
+\setKVdefault[ClesEquation]{Ecart=0.5,Fleches=false,FlecheDiv=false,Laurent=false,Decomposition=false,Terme=false,Composition=false,Symbole=false,ModeleBarre=false,Decimal=false,Entier=false,Lettre=x,Solution=false,LettreSol=true,Bloc=false,Simplification=false,CouleurTerme=black,CouleurCompo=black,CouleurSous=red,CouleurSymbole=orange,Verification=false,Nombre=0,Egalite=false,Produit=false,Facteurs=false,Carre=false,Exact=false,Pose=false,Equivalence=false}
\newcommand\rightcomment[4]{%
\begin{tikzpicture}[remember picture,overlay]
@@ -148,7 +148,8 @@
\input{PfCEquationComposition2}%
\input{PfCEquationPose1}%
\input{PfCEquationSymbole1}%
-\input{PfCEquationLaurent1}
+\input{PfCEquationLaurent1}%
+\input{PfCEquationModeleBarre}%
\newcommand\ResolEquation[5][]{%
\useKVdefault[ClesEquation]%
@@ -166,20 +167,24 @@
\ifboolKV[ClesEquation]{Verification}{%
\Verification[#1]{#2}{#3}{#4}{#5}%
}{%
- \ifboolKV[ClesEquation]{Symbole}{%
- \ResolEquationSymbole[#1]{#2}{#3}{#4}{#5}%
+ \ifboolKV[ClesEquation]{ModeleBarre}{%
+ \ResolEquationMBarre[#1]{#2}{#3}{#4}{#5}%
}{%
- \ifboolKV[ClesEquation]{Laurent}{%
- \ResolEquationLaurent[#1]{#2}{#3}{#4}{#5}%
+ \ifboolKV[ClesEquation]{Symbole}{%
+ \ResolEquationSymbole[#1]{#2}{#3}{#4}{#5}%
}{%
- \ifboolKV[ClesEquation]{Terme}{%
- \ResolEquationTerme[#1]{#2}{#3}{#4}{#5}%
- }{\ifboolKV[ClesEquation]{Composition}{%
- \ResolEquationComposition[#1]{#2}{#3}{#4}{#5}%
- }{\ifboolKV[ClesEquation]{Pose}{%
- \ResolEquationL[#1]{#2}{#3}{#4}{#5}%
- }{%
- \ResolEquationSoustraction[#1]{#2}{#3}{#4}{#5}%
+ \ifboolKV[ClesEquation]{Laurent}{%
+ \ResolEquationLaurent[#1]{#2}{#3}{#4}{#5}%
+ }{%
+ \ifboolKV[ClesEquation]{Terme}{%
+ \ResolEquationTerme[#1]{#2}{#3}{#4}{#5}%
+ }{\ifboolKV[ClesEquation]{Composition}{%
+ \ResolEquationComposition[#1]{#2}{#3}{#4}{#5}%
+ }{\ifboolKV[ClesEquation]{Pose}{%
+ \ResolEquationL[#1]{#2}{#3}{#4}{#5}%
+ }{%
+ \ResolEquationSoustraction[#1]{#2}{#3}{#4}{#5}%
+ }%
}%
}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex b/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
index 3f1e8679d27..0315d8d3a87 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCScratch.tex
@@ -11,7 +11,7 @@
\def\barre{\vrule height2.1ex depth.9ex width0pt}%
\def\demibarre{\vrule height1.4ex depth.6ex width0pt}%
-\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1,Naturel=false}%
+\setKVdefault[Scratch]{ModeleCouleur=5,Impression=false,Numerotation=false,Echelle=1,Naturel=false}%
\ifluatex
\NewDocumentEnvironment{Scratch}{o +b}{%
@@ -19,17 +19,25 @@
\setKV[Scratch]{#1}%
\mplibforcehmode%
\ifboolKV[Scratch]{Naturel}{}{\myfontScratch}%
- \begin{mplibcode}%
- boolean Naturel;
- Naturel=\useKV[Scratch]{Naturel};
- if Naturel: input PfCPseudo; print:=true; else: input PfCScratch; print:=\useKV[Scratch]{Impression}; fi;
- NumeroteLignes:=\useKV[Scratch]{Numerotation};%
- #2%
- picture recap;%
- recap:=currentpicture scaled \useKV[Scratch]{Echelle};%
- currentpicture:=nullpicture;%
- draw recap;%
- \end{mplibcode}%
+ \begin{mplibcode}%
+ defaultcolormodel:=\useKV[Scratch]{ModeleCouleur};
+ boolean Naturel;
+ Naturel=\useKV[Scratch]{Naturel};
+ if Naturel: input PfCPseudo; print:=true; else: input PfCScratch; print:=\useKV[Scratch]{Impression}; fi;
+ NumeroteLignes:=\useKV[Scratch]{Numerotation};%
+ if defaultcolormodel=7:
+ cmykcolor white,White,CoulLignes;
+ coefprint:=1-coefprint;
+ White=(0,0,0,1);
+ white=(0,0,0,0);
+ CoulLignes=(0,0,0,1);
+ fi;
+ #2%
+ picture recap;%
+ recap:=currentpicture scaled \useKV[Scratch]{Echelle};%
+ currentpicture:=nullpicture;%
+ draw recap;%
+ \end{mplibcode}%
}{}
\else%
\NewDocumentEnvironment{Scratch}{o +b}{%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
index 3e2aa47db97..bea6d2d6888 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex
@@ -316,4 +316,17 @@
\tofrac{#1/#2}
\fi
}%
+}%
+
+\NewDocumentCommand\LesDiviseursCommuns{mm}{%
+ \xdef\PfCListeDivComAvant{1}%
+ \xintFor* ##2 in {\xintSeq{2}{#1}}\do{%
+ \modulo{#1}{##2}\relax
+ \ifnum\remainder=0\relax%
+ \modulo{#2}{##2}\relax
+ \ifnum\remainder=0\relax%
+ \xdef\PfCListeDivComAvant{\PfCListeDivComAvant,##2}%
+ \fi%
+ \fi%
+ }%
}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
index 0dfa500bf18..9da7bce2594 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCSolides.tex
@@ -844,6 +844,74 @@
\fi
}
+%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\MPSolideDemiSphere[3]{%
+ \ifluatex
+ \mplibnumbersystem{double}
+ \mplibforcehmode
+ \begin{mplibcode}
+ boolean NommeSommets,Code,Sections,Axes,RemplisSection;
+ NommeSommets=\useKV[ClesSolides]{Sommets};
+ Code=\useKV[ClesSolides]{Code};
+ Axes:=\useKV[ClesSolides]{Axes};
+ %Initialisation
+ PfCRho=\useKV[ClesSolides]{Rho};
+ PfCPhi=0;%\useKV[ClesSolides]{Phi};
+ PfCTheta=10;%\useKV[ClesSolides]{Theta};
+ PfCDistance=\useKV[ClesSolides]{Distance};
+ anglerotationx=\useKV[ClesSolides]{Anglex};
+ rayonsphere=\useKV[ClesSolides]{RayonSphere};
+
+ color PfCOutColor;
+ PfCOutColor=\useKV[ClesSolides]{Couleur};
+ input PfCSolid;
+
+ Figure(-10u,-10u,10u,10u);
+ Initialisation(PfCRho,PfCPhi,PfCTheta,PfCDistance);
+ typetrace:="3D";
+ typerepre:="persp";
+ eclairage:=false;
+ nb:=24;%36
+ subh:=36;%
+ incolor:=white;
+ outcolor:=white;%PfCOutColor;
+ % Ferme1:=false;
+ creux:=true;
+ angx:=anglerotationx;
+ Objetdemispherebasse1("R="&decimal(rayonsphere));
+ % traits:=false;
+ AffichageObjet1;
+ color Sommet[],SommetN,SommetS,SommetB;
+ Sommet1=(0,0,0);
+ Sommet2=(0,rayonsphere,0);
+ Sommet3=(-rayonsphere,0,0);
+ Sommet4=(0,0,rayonsphere);
+ SommetN=Sommet4;
+ SommetS=(0,0,-rayonsphere);
+ SommetB=(rayonsphere,0,0);
+ Sommet2:=RotXYZ(Sommet2);
+ Sommet3:=RotXYZ(Sommet3);
+ Sommet4:=RotXYZ(Sommet4);
+ SommetN:=RotXYZ(SommetN);
+ SommetS:=RotXYZ(SommetS);
+ SommetB:=RotXYZ(SommetB);
+
+ fill Cercles((0,0,0),(0,1,0),(0,0,0),(0,1,0),(-1,0,0)) withcolor white;
+ trace Cercles((0,0,0),(0,1,0),(0,0,0),(0,1,0),(-1,0,0));
+
+ DefinirSommets(#1);
+
+ if Code:
+ \useKV[ClesSolides]{Traces};
+ fi;
+
+ \end{mplibcode}
+ \mplibnumbersystem{scaled}
+ \fi
+}
+%%%
+
+
\def\UpdatetoksSolide#1\nil{\addtotok\toksolidelistesommets{"#1",}}
\newtoks\toksolidelistesommets%
\newtoks\toksolidelistepointssections%
@@ -876,6 +944,9 @@
{sphere}{%
\MPSolideSphere{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{PointsSection}}%
}%
+ {demisphere}{%
+ \MPSolideDemiSphere{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{PointsSection}}%
+ }%
{boule}{%
\MPSolideSphere{\useKV[ClesSolides]{ListeSommets}}{\the\toksolidelistesommets}{\useKV[ClesSolides]{PointsSection}}%
}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
index 3be43cc34da..0fc78fb7579 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex
@@ -26,7 +26,9 @@ Representation=false,%
%Pour les barres horizontales
Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0,%Grille est dispo
% Pour les histogrammes
-Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
+Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1,%
+% Pour la quadri...
+ModeleCouleur=5%
}%
% compl\'ements
%\defKV[ClesStat]{ListeHachures=\setKV[ClesStat]{Hachures}}%
@@ -305,6 +307,7 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
\ifluatex%
\mplibforcehmode%
\begin{mplibcode}%
+ defaultcolormodel := \useKV[ClesStat]{ModeleCouleur};
\NewMPDiagBarreHorCode%
vardef TraceDiag=
if Grille:
@@ -536,6 +539,8 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesStat]{ModeleCouleur};
+
\MPStatNewCode
%
vardef Test(expr nb)=
@@ -935,6 +940,8 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesStat]{ModeleCouleur};
+
\NewMPStatCirculaireCodeQ
% DebutAngle=\useKV[ClesStat]{DebutAngle};
if Inverse=false:
@@ -1358,6 +1365,8 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
% \mplibnumbersystem{double}
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesStat]{ModeleCouleur};
+
maxx:=-infinity;
minx:=infinity;
maxy:=-infinity;
@@ -1815,13 +1824,13 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
\[
\num{\ListeComplete[1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
+\num{\ListeComplete[##1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
- }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}%
+ }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}.%
\]}{%
\[
\num{\ListeComplete[1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}\xintFor* ##1 in {\xintSeq {2}{3}}\do{%
+\num{\ListeComplete[##1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}+\dots\xintFor* ##1 in {\xintSeq {\ListeCompletelen-1}{\ListeCompletelen}}\do{%
+\num{\ListeComplete[##1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
- }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}%
+ }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}.%
\]%
}%
}{}%
@@ -2001,7 +2010,7 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
\[
\ifnum\ListeComplete[1,2]=1\else\num{\ListeComplete[1,2]}\times\fi\num{\ListeComplete[1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
+\ifnum\ListeComplete[##1,2]=1\else\num{\ListeComplete[##1,2]}\times\fi\num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
- }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
+ }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}.
\]
}{%
\[
@@ -2009,7 +2018,7 @@ Histogramme=false,UniteAire=1,MemeAmpli,DepartHisto=1%
+\ifnum\ListeComplete[##1,2]=1\else\num{\ListeComplete[##1,2]}\times\fi\num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
}+\dots\xintFor* ##1 in {\xintSeq {\ListeCompletelen-1}{\ListeCompletelen}}\do{%
+\ifnum\ListeComplete[##1,2]=1\else\num{\ListeComplete[##1,2]}\times\fi\num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
- }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
+ }=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}.
\]
}%
}{}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
index 1b8ed8a5ba4..47aabb47da2 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex
@@ -8,7 +8,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,IntroCalculs,CouleursNum=false,CouleursDen=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,CouleursNum=false,CouleursDen=false,ModeleCouleur=5}
\defKV[ClesThales]{CouleurNum=\setKV[ClesThales]{CouleursNum}}
\defKV[ClesThales]{CouleurDen=\setKV[ClesThales]{CouleursDen}}
@@ -26,6 +26,7 @@
% \mplibcodeinherit{enable}
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesThales]{ModeleCouleur};
u:=\useKV[ClesThales]{Echelle};
boolean CouleursNum,CouleursDen;
CouleursNum=\useKV[ClesThales]{CouleursNum};
@@ -177,6 +178,7 @@
\mplibcodeinherit{enable}
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesThales]{ModeleCouleur};
u:=\useKV[ClesThales]{Echelle};
pair A,B,C,M,N,O;%
%On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
@@ -261,6 +263,7 @@
\mplibforcehmode
\mplibcodeinherit{enable}
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesThales]{ModeleCouleur};
u:=\useKV[ClesThales]{Echelle};
boolean CouleursNum,CouleursDen;
CouleursNum=\useKV[ClesThales]{CouleursNum};
@@ -434,6 +437,7 @@
\mplibforcehmode
\mplibcodeinherit{enable}
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesThales]{ModeleCouleur};
u:=\useKV[ClesThales]{Echelle};
pair A,B,C,M,N,O;%
O=(2.5u,2.5u);
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
index e562486a581..c31076e010a 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTrigonometrie.tex
@@ -6,6 +6,7 @@
% \mplibcodeinherit{enable}
\mplibforcehmode
\begin{mplibcode}
+ defaultcolormodel := \useKV[ClesTrigo]{ModeleCouleur};
u:=\useKV[ClesTrigo]{Echelle};
pair A,B,C,O,I,D,E,F;%
% On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
@@ -210,7 +211,8 @@
\ifluatex
\mplibcodeinherit{enable}
\mplibforcehmode
- \begin{mplibcode}
+ \begin{mplibcode}
+ defaultcolormodel := \useKV[ClesTrigo]{ModeleCouleur};
u:=\useKV[ClesTrigo]{Echelle};
pair A,B,C,O,I,D,E,F;%
% On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
@@ -347,7 +349,7 @@
\fi
}
-\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,ValeurExacte=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm}%
+\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,ValeurExacte=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false,Perso=false,Echelle=1cm,ModeleCouleur=5}%
\newcommand\RedactionTrigo{}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
index e847c48affc..11355d5d796 100644
--- a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
+++ b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex
@@ -1,7 +1,7 @@
\newlength\PfCTrioHauteur%
\newcounter{PfCTrioLettre}%
-\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false}%
+\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false}%
\defKV[Trio]{Graine=\setKV[Trio]{Graines}}%
\defKV[Trio]{Cible=\setKV[Trio]{Cibles}}%
@@ -22,10 +22,19 @@
\useKVdefault[Trio]%
\setKV[Trio]{#1}%
\ifboolKV[Trio]{Graines}{\PfCGraineAlea{\useKV[Trio]{Graine}}}{}%
- \ifboolKV[Trio]{Repere}{\xdef\PfCTrioNbCases{8}}{\xdef\PfCTrioNbCases{7}}%
+ \ifboolKV[Trio]{Ecole}{\xdef\PfCTrioMaxA{5}\xdef\PfCTrioMaxB{3}}{\xdef\PfCTrioMaxA{7}\xdef\PfCTrioMaxB{5}}
+ \ifboolKV[Trio]{Repere}{\xdef\PfCTrioNbCases{\fpeval{\PfCTrioMaxA+1}}}{\xdef\PfCTrioNbCases{\PfCTrioMaxA}}%
% On définit la liste de nombres
- \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9}%
- \MelangeListe{\PfCTrioFoo}{49}%
+ \ifboolKV[Trio]{Relatifs}{%
+ \xdef\PfCTrioFoo{-4,-4,-4,-4,-4,-3,-3,-3,-3,-3,-3,-2,-2,-2,-2,-2,-2,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4}%
+ }{%
+ \ifboolKV[Trio]{Ecole}{%
+ \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5}%
+ }{%
+ \xdef\PfCTrioFoo{1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9}%
+ }%
+ }%
+ \ifboolKV[Trio]{Ecole}{\MelangeListe{\PfCTrioFoo}{25}}{\MelangeListe{\PfCTrioFoo}{49}}%
\setsepchar{,}\ignoreemptyitems%
\readlist*\PfCTrioMelange{\faa}%
\reademptyitems%
@@ -39,11 +48,11 @@
\xdef\PfCTrioAjout{0}
}%
% Calculs des horizontaux
- \xintFor* ##2 in{\xintSeq{1}{7}}\do{%
- \xintFor* ##1 in{\xintSeq{1}{5}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##2-1)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##2-1)+##1+2}]}%
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -60,11 +69,11 @@
\xintBreakFor}{}%
}%
% Calculs des verticaux
- \xintFor* ##2 in{\xintSeq{1}{7}}\do{%
- \xintFor* ##1 in{\xintSeq{1}{5}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##1-1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##1)+##2}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##1+1)+##2}]}%
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -81,11 +90,11 @@
\xintBreakFor}{}%
}%
% Calculs des diag positives (descendantes)
- \xintFor* ##2 in{\xintSeq{1}{5}}\do{%
- \xintFor* ##1 in{\xintSeq{1}{5}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##2)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##2+1)+##1+2}]}%
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -106,11 +115,11 @@
\xintBreakFor}{}%
}%
% Calculs des diagonale négatives (montantes)
- \xintFor* ##2 in{\xintSeq{1}{5}}\do{%
- \xintFor* ##1 in{\xintSeq{2}{6}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##1-1)+##2+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##1-2)+##2+2}]}%
+ \xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxB}}\do{%
+ \xintFor* ##1 in{\xintSeq{2}{\fpeval{\PfCTrioMaxB+1}}}\do{%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-2)+##2+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -134,15 +143,15 @@
}{}%
\Body
\ifboolKV[Trio]{Repere}{%
- \rule{0pt}{\PfCTrioHauteur}\Block[fill=gray!15]{}{}\xintFor* ##1in{\xintSeq{1}{7}}\do{%
+ \rule{0pt}{\PfCTrioHauteur}\Block[fill=gray!15]{}{}\xintFor* ##1in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
&\Block[fill=gray!15]{}{\stepcounter{PfCTrioLettre}\Alph{PfCTrioLettre}}%
}\\
}{}%
- \xintFor* ##1 in{\xintSeq{1}{7}}\do{%
+ \xintFor* ##1 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
\rule{0pt}{\PfCTrioHauteur}%
\ifboolKV[Trio]{Repere}{\Block[fill=gray!15]{}{##1}}{}%
- \ifboolKV[Trio]{Repere}{&}{}\xintFor* ##2 in{\xintSeq{1}{7}}\do{%
- \xintifForFirst{}{&}\Block{}{\PfCTrioMelange[\fpeval{7*(##1-1)+##2}]}%
+ \ifboolKV[Trio]{Repere}{&}{}\xintFor* ##2 in{\xintSeq{1}{\PfCTrioMaxA}}\do{%
+ \xintifForFirst{}{&}\Block{}{\num{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}}%
}\\
}%
\end{NiceTabular}%
@@ -165,9 +174,9 @@
% Calculs des horizontaux
\xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}+2}}}\do{%
\xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##2-1)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##2-1)+##1+2}]}%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -186,9 +195,9 @@
% Calculs des verticaux
\xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}+2}}}\do{%
\xintFor* ##1 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##1-1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##1)+##2}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##1+1)+##2}]}%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
|| \fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -207,9 +216,9 @@
% Calculs des diag positives (descendantes)
\xintFor* ##2 in{\xintSeq{\useKV[Trio]{Ligne}}{\useKV[Trio]{Ligne}}}\do{%
\xintFor* ##1 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##2-1)+##1}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##2)+##1+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##2+1)+##1+2}]}%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -232,9 +241,9 @@
% Calculs des diagonale négatives (montantes)
\xintFor* ##2 in{\xintSeq{\useKV[Trio]{Colonne}}{\useKV[Trio]{Colonne}}}\do{%
\xintFor* ##1 in{\xintSeq{\fpeval{\useKV[Trio]{Ligne}}}{\fpeval{\useKV[Trio]{Ligne}}}}\do{%
- \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{7*(##1+1)+##2}]}%
- \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{7*(##1)+##2+1}]}%
- \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{7*(##1-1)+##2+2}]}%
+ \xdef\PfCTrioNombreA{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}%
+ \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2+1}]}%
+ \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+2}]}%
\xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}%
||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}%
@@ -266,7 +275,7 @@
\rule{0pt}{\PfCTrioHauteur}%
\ifboolKV[Trio]{Repere}{\Block[fill=gray!15]{}{\ifboolKV[Trio]{VideRepere}{}{##1}}}{}%
\ifboolKV[Trio]{Repere}{&}{}\xintFor* ##2 in{\xintSeq{\fpeval{\useKV[Trio]{Colonne}}}{\fpeval{\useKV[Trio]{Colonne}+2}}}\do{%
- \xintifForFirst{}{&}\Block{}{\ifboolKV[Trio]{Vide}{}{\PfCTrioMelange[\fpeval{7*(##1-1)+##2}]}}%
+ \xintifForFirst{}{&}\Block{}{\ifboolKV[Trio]{Vide}{}{\num{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2}]}}}%
}\\
}%
\end{NiceTabular}%
diff --git a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
index 18b287fba40..5b62dc03b76 100644
--- a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
+++ b/Master/texmf-dist/tex/latex/profcollege/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{2023/11/14}%
+\def\filedate{2023/12/01}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-z-w}%
+\def\fileversion{0.99-z-y}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
@@ -68,16 +68,10 @@
\else%
\if@shellescape%
\RequirePackage[shellescape,latex]{gmp}%inclusion de figures metapost "à la volée"%
-\gmpoptions{everymp={prologues:=3; input PfCLaTeX; input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur;}}%
-\usempxclass{article}%
-\usempxpackage{ProfCollege}%
-\usempxpackage[utf8]{inputenc}%
-\usempxpackage[T1]{fontenc}%
-\usempxpackage{fourier}%
-\usempxpackage[french]{babel}%
-\usempxpackage{pifont}%
\else%
+%
\RequirePackage[latex]{gmp}%inclusion de figures metapost "à la volée"%
+\fi%
\gmpoptions{everymp={prologues:=3; input PfCLaTeX; input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur;}}%
\usempxclass{article}%
\usempxpackage{ProfCollege}%
@@ -87,7 +81,6 @@
\usempxpackage[french]{babel}%
\usempxpackage{pifont}%
\fi%
-\fi%
\RequirePackage{xintexpr}%
\RequirePackage{listofitems}%
@@ -176,6 +169,10 @@
}%
}%
+\NewDocumentCommand\NumS{m}{%
+ \xintifboolexpr{#1==0}{}{\xintifboolexpr{#1>0}{+\num{#1}}{\num{#1}}}
+}%
+
\newcounter{Marque}
\NewDocumentCommand\AffichageTab{O{x}mmm}{%
@@ -225,7 +222,7 @@
\fi%
}%
%encadrer avec des "sommets arrondis"
-\newsavebox{\logobox}%
+%\newsavebox{\logobox}%
\newcommand\Logo[2]{%
\setbox1=\hbox{\includegraphics[scale=#2]{#1}}%
@@ -248,6 +245,59 @@
\end{tikzpicture}%
}%
+\makeatletter
+\def\Suspensionfill{%
+\leavevmode
+\cleaders \hb@xt@\LongBoitePoint{\ldotp}\hfill
+\kern\z@}
+\makeatother
+
+\newlength{\LongBoitePoint}
+
+\NewDocumentCommand\PointsSuspensionold{sm}{%
+ \setbox2=\hbox{\ldotp}%
+ \setlength{\LongBoitePoint}{\wd2}%
+ \IfBooleanTF{#1}{%
+ \Suspensionfill%
+ }{%
+ \setbox1=\hbox{#2}%
+ \StrLen{#2}[\LongueurPoints]%
+ \ifmmode%
+ \mathinner{%
+ \xintFor* ##1 in {\xintSeq{1}{\LongueurPoints}}\do{%
+ \ldotp%
+ }%
+ }%
+ \else%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{round(\wd1/\wd2)}}}\do{%
+ \ldotp%
+ }%
+ \fi%
+ }%
+}%
+
+\NewDocumentCommand\PointsSuspension{m}{%
+ \setbox2=\hbox{\ldotp}%
+ \setlength{\LongBoitePoint}{\wd2}%
+ \ifx\bla#1\bla%
+ \Suspensionfill%
+ \else%
+ \setbox1=\hbox{#1}%
+ \StrLen{#1}[\LongueurPoints]%
+ \ifmmode%
+ \mathinner{%
+ \xintFor* ##1 in {\xintSeq{1}{\LongueurPoints}}\do{%
+ \ldotp%
+ }%
+ }%
+ \else%
+ \xintFor* ##1 in {\xintSeq{1}{\fpeval{round(\wd1/\wd2)}}}\do{%
+ \ldotp%
+ }%
+ \fi%
+ \fi%
+}%
+
\makeatletter%
\NewDocumentCommand\Dotfill{}{%
\leavevmode%
@@ -263,8 +313,8 @@
}%
\NewDocumentCommand\Lignespointilles{m}{%
- \xintifboolexpr{#1>1}{%
- \xintFor* ##1 in {\xintSeq {1}{#1}}\do{%
+ \xintifboolexpr{\fpeval{#1}>1}{%
+ \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{%
\pointilles\par%
}%
}{}%
@@ -660,6 +710,7 @@
\readlist*\ListeMateriaux{aluminium/'/2.7,chêne/e~/0.69,bouleau/e~/0.65,sapin/e~/0.45,polystyrène/e~/1.04,porcelaine/la/2.5,acier/'/7.85,cuivre/e~/8.92,fer/e~/7.86,or/'/19.3,argent/'/10.5,bronze/e~/8.4,plomb/e~/11.35,marbre/e~/2.75,laiton/e~/7.3,titane/e~/4.5,PVC/e~/1.38}
\setsepchar{,}
+\input{PfCConversion}
\input{PfCCritere}
\input{PfCLego}
\input{PfCJeton}