summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/ProfCollege.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-07-14 03:00:55 +0000
committerNorbert Preining <norbert@preining.info>2022-07-14 03:00:55 +0000
commit247e399be12f89ba7ad8f79d3c582512e4913abf (patch)
tree181b0286a261db710a9c599e2d0ba1e930f17a2e /macros/latex/contrib/profcollege/latex/ProfCollege.sty
parentd6c082314db045e788a1bb06d0752edf054d4dee (diff)
CTAN sync 202207140300
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/ProfCollege.sty')
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty463
1 files changed, 237 insertions, 226 deletions
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index 5221eebaa9..65eb19125d 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -2,7 +2,7 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfCollege}[2022/07/01 v0.99-r Aide pour utiliser LaTeX au college]
+\ProvidesPackage{ProfCollege}[2022/07/15 v0.99-s Aide pour utiliser LaTeX au college]
\RequirePackage{verbatim}
@@ -209,10 +209,10 @@
}%
}%
-\newcount\rappeljour
+\newcount\PfCrappeljour
\newcommand\Demain{%
- \rappeljour=\day\relax%
+ \PfCrappeljour=\day\relax%
\advance\day by 1\relax%
\ifnum\month=1\relax%
\ifnum\day>31\relax%
@@ -334,7 +334,7 @@
\today\relax%
\fi%
\fi%
- \day=\the\rappeljour\relax%
+ \day=\the\PfCrappeljour\relax%
}
%%%
@@ -573,9 +573,19 @@
\readlist*\ListeObjetsSymbolesCAN{fleurs/96,ciseaux/36,crayons/47,enveloppes/41}%uniquement avec pifont
\setsepchar{,}%
\readlist*\ListeObjetsCAN{bonbons,billes,jouets,fruits,biscuits,gâteaux,pommes,poires}
+\readlist*\ListePetitsObjetsCAN{bonbons,billes,biscuits,gommes,clous,vis}
\readlist*\ListeFruitsCAN{pommes,poires,abricots,cerises,fraises,framboises,noix,pêches,nectarines,myrtilles}
\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{%
+ \xdef\CANSGFoo{\CANSGFoo \ListePetitsObjetsCAN[\compteurcnt],}%
+ }%
+ \MelangeListe{\CANSGFoo}{#1}%
+ \readlist*\PetitsObjetsMelanges{\faa}%
+}%
+
\newcommand\ExtraitSymboles[1]{%
\xdef\CANSGFoo{}%
\foreachitem\compteur\in\ListeObjetsSymbolesCAN{%
@@ -722,7 +732,7 @@
\useKVdefault[ClesCN]%
\setKV[ClesCN]{#1}%
\ifboolKV[ClesCN]{Theme}{\renewcommand\CNTheme[1]{{\ttfamily Thème : ##1}\par}}{}%
- \ifboolKV[ClesCN]{RAZ}{%\setcounter{CNNumQ}{1}}{}%
+ \ifboolKV[ClesCN]{RAZ}{%
\setcounter{CNNumQ}{\useKV[ClesCN]{Debut}}%
}{}%
\setKV[ClesMathAlea]{NbQ=1}%
@@ -5421,8 +5431,8 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
%% D'après https://www.facebook.com/groups/994675223903586/user/100017057226847
%% et une programmation de Laurent Lassale-Carrere
-\newcounter{nexo}
-\newtcolorbox[use counter=nexo,number format=\arabic]{RapidoBox}{%
+\newcounter{PfCnexo}
+\newtcolorbox[use counter=PfCnexo,number format=\arabic]{RapidoBox}{%
% Titre
colbacktitle=white,
fonttitle=\color{black}\Large\bfseries,
@@ -5452,7 +5462,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\setKV[ClesRapido]{#1}%
%
\ifboolKV[ClesRapido]{Debut}{%
- \setcounter{nexo}{\fpeval{\useKV[ClesRapido]{Numero}-1}}
+ \setcounter{PfCnexo}{\fpeval{\useKV[ClesRapido]{Numero}-1}}
}{}%
\setlength{\WidthRapido}{\useKV[ClesRapido]{Largeur}}%
%
@@ -6660,46 +6670,57 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
% Somme des angles
%%%
-\setKVdefault[ClesSommeAngle]{Detail=true,Isocele=false,Figure=false,FigureSeule=false,Angle=0,Perso=false,Echelle=1cm}%
+\setKVdefault[ClesSommeAngle]{Detail=true,Isocele=false,Rectangle=false,Figure=false,FigureSeule=false,Angle=0,Perso=false,Echelle=1cm}%
-\def\MPFigureSommeAngle#1#2#3#4#5#6#7{
+\def\MPFigureSommeAngle#1#2#3#4#5{
% #1 Premier sommet
% #2 Deuxi\`eme sommet
% #3 Troisi\`eme sommet
% #4 1er angle
% #5 2eme angle
- % #6 0 isoc\`ele / 1 pas isoc\`ele
\ifluatex
\mplibcodeinherit{enable}
\mplibforcehmode
\begin{mplibcode}
- pair A,B,C,O,I;%
+ pair A,B,C,O,I;%
u:=\useKV[ClesSommeAngle]{Echelle};
- % On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
+ Angle:=\useKV[ClesSommeAngle]{Angle};
+ boolean Rectangle,Isocele;
+ Rectangle=\useKV[ClesSommeAngle]{Rectangle};%
+ Isocele=\useKV[ClesSommeAngle]{Isocele};
A=u*(1,1);
B-A=u*(4,0);
+ if Rectangle:
+ C=3/5[B,rotation(A,B,-90)];
+ else:
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
- % On d\'efinit le centre du cercle circonscrit
- O - .5[A,B] = whatever * (B-A) rotated 90;
- O - .5[B,C] = whatever * (C-B) rotated 90;
+ fi;
+ O=CentreCercleC(A,B,C);
% On tourne pour \'eventuellement moins de lassitude :)
- A:=A rotatedabout(O,#7);
- B:=B rotatedabout(O,#7);
- C:=C rotatedabout(O,#7);
+ A:=rotation(A,O,Angle);
+ B:=rotation(B,O,Angle);
+ C:=rotation(C,O,Angle);
% On d\'efinit le centre du cercle inscrit
- (I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- (I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
+ I=CentreCercleI(A,B,C);
% on dessine \`a main lev\'ee :)
path triangle;
triangle=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)}--B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)}--C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)}--cycle;
% pour marquer les angles
path cc;
cc=fullcircle scaled 1u;
- % on marque les angles
picture MAngle;
- MAngle=image(%
- if #6=0:%Pour l'isocèle
path cd; pair M[];
+ MAngle=image(%
+ if Isocele:%
+ if Rectangle:
+ trace codeperp(A,B,C,5);
+ cd=A--(A+B+C)/3;
+ M1=cd intersectionpoint (cc shifted A);
+ trace 9/10[A,M1]--11/10[A,M1];
+ cd:=C--(A+B+C)/3;
+ M1:=cd intersectionpoint (cc shifted C);
+ trace 9/10[C,M1]--11/10[C,M1];
+ else:
cd=B--(A+B+C)/3;
M1=cd intersectionpoint (cc shifted B);
trace 9/10[B,M1]--11/10[B,M1];
@@ -6707,8 +6728,13 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
M1:=cd intersectionpoint (cc shifted C);
trace 9/10[C,M1]--11/10[C,M1];
fi;
- draw (cc shifted A);
+ fi;
+ if Rectangle:
+ trace codeperp(A,B,C,5);
+ else:
draw (cc shifted B);
+ fi;
+ draw (cc shifted A);
draw (cc shifted C);
);
draw MAngle;
@@ -6720,56 +6746,95 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
label(btex #1 etex,1.2[O,A]);
label(btex #2 etex,1.2[O,B]);
label(btex #3 etex,1.2[O,C]);
- if #6=0:
- if #4=#5:
+ % Codage
+ if Isocele:
marque_s:=marque_s/2;
+ if Rectangle:
+ draw Codelongueur(A,B,B,C,2);
+ else:
draw Codelongueur(A,B,A,C,2);
+ fi;
marque_s:=marque_s*2;
- label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
+ fi;
+ % Affichage des angles:
+ if Isocele:
+ if Rectangle:
label(btex ? etex,A+0.95u*unitvector(I-A));
else:
- marque_s:=marque_s/2;
- draw Codelongueur(A,B,A,C,2);
- marque_s:=marque_s*2;
+ if #4>#5:%Cas où b est vide donc on affiche la mesure commune
label(btex $\ang{#4}$ etex,A+0.95u*unitvector(I-A));
label(btex ? etex,B+0.95u*unitvector(I-B));
+ else:
+ label(btex $\ang{#5}$ etex,B+0.95u*unitvector(I-B));
+ label(btex ? etex,A+0.95u*unitvector(I-A));
+ fi;
+ fi;
+ else:
+ if Rectangle:
+ if #4>#5:
+ label(btex $\ang{#4}$ etex,C+0.95u*unitvector(I-C));
+ else:
+ label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
fi;
else:
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
+ fi;
label(btex ? etex,A+0.95u*unitvector(I-A));
fi;
- %fi;
\end{mplibcode}
\mplibcodeinherit{disable}
\else
- \begin{mpost}[mpsettings={u:=\useKV[ClesSommeAngle]{Echelle};}]
+ \begin{mpost}[mpsettings={u:=\useKV[ClesSommeAngle]{Echelle};boolean Rectangle,Isocele;
+ Rectangle=\useKV[ClesSommeAngle]{Rectangle};Isocele=\useKV[ClesSommeAngle]{Isocele};Angle:=\useKV[ClesSommeAngle]{Angle};}]
pair A,B,C,O,I;%
- % On place les points A,B,C sur le cercle de mani\`ere \`a faciliter la rotation de la figure
A=u*(1,1);
B-A=u*(4,0);
+ if Rectangle:
+ C=3/5[B,rotation(A,B,-90)];
+ else:
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
- % On d\'efinit le centre du cercle circonscrit
- O - .5[A,B] = whatever * (B-A) rotated 90;
- O - .5[B,C] = whatever * (C-B) rotated 90;
+ fi;
+ O=CentreCercleC(A,B,C);
% On tourne pour \'eventuellement moins de lassitude :)
- A:=A rotatedabout(O,#7);
- B:=B rotatedabout(O,#7);
- C:=C rotatedabout(O,#7);
+ A:=rotation(A,O,Angle);
+ B:=rotation(B,O,Angle);
+ C:=rotation(C,O,Angle);
% On d\'efinit le centre du cercle inscrit
- (I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- (I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
+ I=CentreCercleI(A,B,C);
% on dessine \`a main lev\'ee :)
path triangle;
triangle=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)}--B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)}--C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)}--cycle;
% pour marquer les angles
path cc;
cc=fullcircle scaled 1u;
- % on marque les angles
picture MAngle;
- MAngle=image(
- draw (cc shifted A);
+ path cd; pair M[];
+ MAngle=image(%
+ if Isocele:%
+ if Rectangle:
+ trace codeperp(A,B,C,5);
+ cd=A--(A+B+C)/3;
+ M1=cd intersectionpoint (cc shifted A);
+ trace 9/10[A,M1]--11/10[A,M1];
+ cd:=C--(A+B+C)/3;
+ M1:=cd intersectionpoint (cc shifted C);
+ trace 9/10[C,M1]--11/10[C,M1];
+ else:
+ cd=B--(A+B+C)/3;
+ M1=cd intersectionpoint (cc shifted B);
+ trace 9/10[B,M1]--11/10[B,M1];
+ cd:=C--(A+B+C)/3;
+ M1:=cd intersectionpoint (cc shifted C);
+ trace 9/10[C,M1]--11/10[C,M1];
+ fi;
+ fi;
+ if Rectangle:
+ trace codeperp(A,B,C,5);
+ else:
draw (cc shifted B);
+ fi;
+ draw (cc shifted A);
draw (cc shifted C);
);
draw MAngle;
@@ -6781,26 +6846,42 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
label(btex #1 etex,1.2[O,A]);
label(btex #2 etex,1.2[O,B]);
label(btex #3 etex,1.2[O,C]);
- if #6=0:
- if #4=#5:
+ % Codage
+ if Isocele:
marque_s:=marque_s/2;
+ if Rectangle:
+ draw Codelongueur(A,B,B,C,2);
+ else:
draw Codelongueur(A,B,A,C,2);
+ fi;
marque_s:=marque_s*2;
- label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
+ fi;
+ % Affichage des angles:
+ if Isocele:
+ if Rectangle:
label(btex ? etex,A+0.95u*unitvector(I-A));
else:
- marque_s:=marque_s/2;
- draw Codelongueur(A,B,A,C,2);
- marque_s:=marque_s*2;
+ if #4>#5:%Cas où b est vide donc on affiche la mesure commune
label(btex $\ang{#4}$ etex,A+0.95u*unitvector(I-A));
label(btex ? etex,B+0.95u*unitvector(I-B));
+ else:
+ label(btex $\ang{#5}$ etex,B+0.95u*unitvector(I-B));
+ label(btex ? etex,A+0.95u*unitvector(I-A));
+ fi;
+ fi;
+ else:
+ if Rectangle:
+ if #4>#5:
+ label(btex $\ang{#4}$ etex,C+0.95u*unitvector(I-C));
+ else:
+ label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
fi;
else:
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
+ fi;
label(btex ? etex,A+0.95u*unitvector(I-A));
fi;
- %fi;
\end{mpost}
\fi
}
@@ -6811,9 +6892,8 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% #1 : nom du triangle pA pB pC
% #2 : mesure de l'angle pApBpC
% #3 : mesure de l'angle pBpCpA
- % la macro calculant la mesure de l'angle pCpApB
- \useKVdefault[ClesSommeAngle]%obligatoire car la macro n'est pas dans un groupe.
- \setKV[ClesSommeAngle]{#1}%On lit les arguments optionnels
+ \useKVdefault[ClesSommeAngle]%
+ \setKV[ClesSommeAngle]{#1}%
% On r\'ecup\`ere les noms des sommets.
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
@@ -6823,30 +6903,51 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\xdef\NomSommetA{\NomA}%
\xdef\NomSommetC{\NomC}%
% On r\'edige
- \ifboolKV[ClesSommeAngle]{Perso}{\RedactionSomme}{Dans le triangle $\NomA\NomB\NomC$,\ifboolKV[ClesSommeAngle]{Isocele}{ isoc\`ele en \NomA,}{} on a :}%
- \ifboolKV[ClesSommeAngle]{Isocele}{%
- \ifx\bla#4\bla%
- \begin{align*}%
+ \ifboolKV[ClesSommeAngle]{Perso}{\RedactionSomme}{Dans le triangle $\NomA\NomB\NomC$, \ifboolKV[ClesSommeAngle]{Rectangle}{ rectangle \ifboolKV[ClesSommeAngle]{Isocele}{isocèle }{}en $\NomB$, }{\ifboolKV[ClesSommeAngle]{Isocele}{ isoc\`ele en $\NomA$, }}%
+ on a :}%
+ \ifboolKV[ClesSommeAngle]{Rectangle}{%
+ \ifboolKV[ClesSommeAngle]{Isocele}{%
+ \ifx\bla#3\bla%
+ \begin{align*}
+ 2\times\widehat{\NomB\NomA\NomC}&=\ang{90}\\%
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomB\NomA\NomC}&=\frac{\ang{90}}{2}\\}{\widehat{\NomA\NomB\NomC}&=\ang{45}}%
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomB\NomA\NomC}&=\ang{45}}{}%
+ \end{align*}
+ \fi
+ }{%
+ \ifx\bla#3\bla%
+ \begin{align*}
+ \widehat{\NomB\NomA\NomC}+\widehat{\NomB\NomC\NomA}&=\ang{90}\\%
+ \widehat{\NomB\NomA\NomC}+\ang{#4}&=\ang{90}\\%
+ \xdef\totalangle{\fpeval{90-#4}}\ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomB\NomA\NomC}&=\ang{90}-\ang{#4}\\}{\widehat{\NomB\NomA\NomC}&=\ang{\totalangle}}%
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomB\NomA\NomC}&=\ang{\totalangle}}{}%
+ \end{align*}
+ \fi
+ }%
+ }{%
+ \ifboolKV[ClesSommeAngle]{Isocele}{%
+ \ifx\bla#4\bla%
+ \begin{align*}%
\widehat{\NomA\NomB\NomC}+\widehat{\NomB\NomC\NomA}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
2\times\ang{#3}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
\xdef\sommeangle{\fpeval{2*#3}}\xdef\totalangle{\fpeval{180-\sommeangle}}\ang{\sommeangle}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
\ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomC\NomA\NomB}&=\ang{180}-\ang{\sommeangle}\\}{\widehat{\NomC\NomA\NomB}&=\ang{\totalangle}}%
- \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomC\NomA\NomB}&=\ang{\totalangle}}{}%
- \end{align*}%
- \xdef\ResultatAngle{\totalangle}%
- \else%
- \begin{align*}%
- \widehat{\NomA\NomB\NomC}+\widehat{\NomB\NomC\NomA}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
- 2\times\widehat{\NomA\NomB\NomC}+\ang{#4}&=\ang{180}\\%
- \xdef\totalangle{\fpeval{180-#4}}%
- \ifboolKV[ClesSommeAngle]{Detail}{2\times\widehat{\NomA\NomB\NomC}&=\ang{180}-\ang{#4}\\}{2\times\widehat{\NomA\NomB\NomC}&=\ang{\totalangle}\\}%
- \ifboolKV[ClesSommeAngle]{Detail}{2\times\widehat{\NomA\NomB\NomC}&=\ang{\totalangle}\\}{\widehat{\NomA\NomB\NomC}&=\frac{\ang{\totalangle}}{2}\\}%
- \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomA\NomB\NomC}&=\frac{\ang{\totalangle}}{2}\\}{\widehat{\NomA\NomB\NomC}&=\ang{\fpeval{0.5*(180-#4)}}}%\\
- \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomA\NomB\NomC}&=\ang{\fpeval{0.5*(180-#4)}}\\}{}%
- \end{align*}%
- \xdef\ResultatAngle{\fpeval{0.5*(180-#4)}}%
- \fi%
- }{%
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomC\NomA\NomB}&=\ang{\totalangle}}{}%
+ \end{align*}%
+ \xdef\ResultatAngle{\totalangle}%
+ \else%
+ \begin{align*}%
+ \widehat{\NomA\NomB\NomC}+\widehat{\NomB\NomC\NomA}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
+ 2\times\widehat{\NomA\NomB\NomC}+\ang{#4}&=\ang{180}\\%
+ \xdef\totalangle{\fpeval{180-#4}}%
+ \ifboolKV[ClesSommeAngle]{Detail}{2\times\widehat{\NomA\NomB\NomC}&=\ang{180}-\ang{#4}\\}{2\times\widehat{\NomA\NomB\NomC}&=\ang{\totalangle}\\}%
+ \ifboolKV[ClesSommeAngle]{Detail}{2\times\widehat{\NomA\NomB\NomC}&=\ang{\totalangle}\\}{\widehat{\NomA\NomB\NomC}&=\frac{\ang{\totalangle}}{2}\\}%
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomA\NomB\NomC}&=\frac{\ang{\totalangle}}{2}\\}{\widehat{\NomA\NomB\NomC}&=\ang{\fpeval{0.5*(180-#4)}}}%\\
+ \ifboolKV[ClesSommeAngle]{Detail}{\widehat{\NomA\NomB\NomC}&=\ang{\fpeval{0.5*(180-#4)}}\\}{}%
+ \end{align*}%
+ \xdef\ResultatAngle{\fpeval{0.5*(180-#4)}}%
+ \fi%
+ }{%
\begin{align*}%
\widehat{\NomA\NomB\NomC}+\widehat{\NomB\NomC\NomA}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
\ang{#3}+\ang{#4}+\widehat{\NomC\NomA\NomB}&=\ang{180}\\%
@@ -6856,15 +6957,15 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\end{align*}%
\xdef\ResultatAngle{\totalangle}%
}%
+ }%
}%
-\newcommand\SommeAngles[4][]{%
+\newcommand\SommeAngles[4][]{% Macro calculant la mesure de l'angle pCpApB
% #1 : nom du triangle pA pB pC
% #2 : mesure de l'angle pApBpC
% #3 : mesure de l'angle pBpCpA
- % la macro calculant la mesure de l'angle pCpApB
\useKVdefault[ClesSommeAngle]%obligatoire car la macro n'est pas dans un groupe.
- \setKV[ClesSommeAngle]{#1}%On lit les arguments optionnels
+ \setKV[ClesSommeAngle]{#1}%lit les arguments optionnels
% On r\'ecup\`ere les noms des sommets.
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
@@ -6872,13 +6973,12 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% Figure ou pas ?
\ifboolKV[ClesSommeAngle]{FigureSeule}{%
\ifx\bla#3\bla%
- \xdef\Intermed{\fpeval{0.5*(180-#4)}}%
- \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{\Intermed}{0}{\useKV[ClesSommeAngle]{Angle}}%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{0}%
\else%
\ifx\bla#4\bla%
- \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#3}{0}{\useKV[ClesSommeAngle]{Angle}}%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{0}{#3}%
\else%
- \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{1}{\useKV[ClesSommeAngle]{Angle}}%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}%
\fi%
\fi%
}{%
@@ -6886,17 +6986,15 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\begin{multicols}{2}%
{\em La figure est donn\'ee \`a titre indicatif.}%
\ifx\bla#3\bla%
- \xdef\Intermed{\fpeval{0.5*(180-#4)}}%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{\Intermed}{0}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{0}\]%
\else%
\ifx\bla#4\bla%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#3}{0}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{0}{#3}\]%
\else%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{1}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}\]%
\fi%
\fi%
\par\columnbreak\par%
- % on r\'edige
\RedactionSom[#1]{#2}{#3}{#4}%
\end{multicols}%
}{% on r\'edige
@@ -7103,6 +7201,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
% #5 Troisi\`eme longueur (\'eventuellement vide)
\useKVdefault[ClesPythagore]%obligatoire car la macro n'est pas dans un groupe.
\setKV[ClesPythagore]{#1}%On lit les arguments optionnels
+ \DeclareSIUnit{\PfCPythaUnit}{\useKV[ClesPythagore]{Unite}}%
\ifboolKV[ClesPythagore]{Reciproque}{%
% On retient les noms des sommets
\StrMid{#2}{1}{1}[\NomA]%
@@ -7255,7 +7354,6 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}
\xintifboolexpr{#3<#4 || #3==#4}{%\ifnum#3<#4%
\xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
- % \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
\begin{align*}
\NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
\NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
@@ -7263,7 +7361,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
\ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}%
\end{align*}
}{%\else%
@@ -7276,7 +7374,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
\ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}%
\end{align*}
}%\fi%
@@ -7299,7 +7397,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
\ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}
\end{align*}
}{%\else
@@ -7312,7 +7410,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
\ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}
\end{align*}
}{%
@@ -7324,7 +7422,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
\ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}%
- \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\SI{\Aquatre}{\PfCPythaUnit}}}%\\
}
\end{align*}
}%
@@ -8343,9 +8441,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\useKVdefault[ClesNombrePremier]%
\setKV[ClesNombrePremier]{#1}%
\ifboolKV[ClesNombrePremier]{Impose}{\NombrePremierImpose{#2}{\useKV[ClesNombrePremier]{Nombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{Nombre}}}}{}%
- \ifboolKV[ClesNombrePremier]{ImposeAll}{\NombrePremierImposeAll{#2}{\useKV[ClesNombrePremier]{AllNombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{AllNombre}}}}{}%
+ \ifboolKV[ClesNombrePremier]{ImposeAll}{\NombrePremierImpose{#2}{\useKV[ClesNombrePremier]{AllNombre}}{\fpeval{#2/\useKV[ClesNombrePremier]{AllNombre}}}}{}%
\ifboolKV[ClesNombrePremier]{Tableau}{\NombrePremier{#2}}{}%
- \ifboolKV[ClesNombrePremier]{TableauVide}{\NombrePremierVide{#2}}{}%
+ \ifboolKV[ClesNombrePremier]{TableauVide}{\NombrePremier{#2}}{}%
\ifboolKV[ClesNombrePremier]{Potence}{\NombrePremierPotence{#2}}{}%
\ifboolKV[ClesNombrePremier]{TableauVertical}{\NombrePremierVertical{#2}}{}%
\ifboolKV[ClesNombrePremier]{TableauVerticalVide}{\NombrePremierVerticalVide{#2}}{}%
@@ -8682,33 +8780,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\newcommand\NombrePremier[1]{%\'ecrire la d\'ecomposition compl\`ete
% #1 le nombre premier \`a tester
- \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f%
- \anp=#1\relax
- \bnp=2\relax
- \premier=-1\relax
- % Pour d\'eterminer le nombre d'\'etapes
- \whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax
- \global\premier=\numexpr\premier+1\relax
- \cnp=\numexpr\anp/\bnp\relax
- \anp=\cnp\relax
- \else%
- \bnp=\numexpr\bnp+1\relax%
- \fi%
- }
- \ifnum\premier=0
- Le nombre \num{#1} est un nombre premier.
- \else
- \begin{align*}
- \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\PremierEtape{#1}{##1}\xintifboolexpr{##1<\premier}{\\}{}}%
- \end{align*}
- \fi
-}
-
-\newcommand\NombrePremierVide[1]{%\'ecrire la d\'ecomposition compl\`ete
- % #1 le nombre premier \`a tester
- \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f%
+ \newcount\anp\newcount\bnp\newcount\cnp%
\anp=#1\relax
\bnp=2\relax
\premier=-1\relax
@@ -8727,7 +8799,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
Le nombre \num{#1} est un nombre premier.
\else
\begin{align*}
- \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\phantom{\PremierEtape{#1}{##1}}\xintifboolexpr{##1<\premier}{\\}{}}%
+ \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\ifboolKV[ClesNombrePremier]{TableauVide}{\phantom{\PremierEtape{#1}{##1}}}{\PremierEtape{#1}{##1}}\xintifboolexpr{##1<\premier}{\\}{}}%
\end{align*}
\fi
}
@@ -8735,11 +8807,11 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\newcount\premierun
\newcount\premierdeux
-\newcommand\NombrePremierImpose[3]{%\'ecrire la d\'ecomposition compl\`ete
+\newcommand\NombrePremierImpose[3]{%
% #1 le nombre premier \`a tester
% #2 est le premier facteur imposé
% #3 est le deuxième facteur imposé
- \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f%
+ \newcount\anp\newcount\bnp\newcount\cnp%
% Pour d\'eterminer le nombre d'\'etapes pour #1
\anp=#1\relax
\bnp=2\relax
@@ -8782,6 +8854,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\bnp=\numexpr\bnp+1\relax%
\fi%
}%
+ \ifboolKV[ClesNombrePremier]{ImposeAll}{\xdef\PfCRappelImposeAll{1}}{\xdef\PfCRappelImposeAll{0}}%
\ifnum\premier=0
Le nombre \num{#1} est un nombre premier.
\else
@@ -8791,75 +8864,14 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\xintifboolexpr{\premier>0}{\\%
\xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\xintifboolexpr{##1<\premierun}{\PremierEtape{#2}{##1}}{\Decomposition[Longue]{#2}}\mathrel{\times}\xintifboolexpr{##1<\premierdeux}{\PremierEtape{#3}{##1}}{\Decomposition[Longue]{#3}}\xintifboolexpr{##1<\premier}{\\}{}}%
}{}%
+ \xintifboolexpr{\PfCRappelImposeAll==1}{\\\num{#1}&=\PremierExposant{#1}}{}%
\end{align*}
\fi
}%
-\newcommand\NombrePremierImposeAll[3]{%\'ecrire la d\'ecomposition compl\`ete
- % #1 le nombre premier \`a tester
- % #2 est le premier facteur imposé
- % #3 est le deuxième facteur imposé
- \newcount\anp\newcount\bnp\newcount\cnp%\newcount\e\newcount\f%
- % Pour d\'eterminer le nombre d'\'etapes pour #1
- \anp=#1\relax
- \bnp=2\relax
- \premier=-1\relax
- \whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax
- \global\premier=\numexpr\premier+1\relax
- \cnp=\numexpr\anp/\bnp\relax
- \anp=\cnp\relax
- \else%
- \bnp=\numexpr\bnp+1\relax%
- \fi%
- }
- % Pour d\'eterminer le nombre d'\'etapes pour #2
- \anp=#2\relax
- \bnp=2\relax
- \premierun=-1\relax
- \whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax
- \global\premierun=\numexpr\premierun+1\relax
- \cnp=\numexpr\anp/\bnp\relax
- \anp=\cnp\relax
- \else%
- \bnp=\numexpr\bnp+1\relax%
- \fi%
- }
- % Pour d\'eterminer le nombre d'\'etapes pour #3
- \anp=#3\relax
- \bnp=2\relax
- \premierdeux=-1\relax
- \whiledo{\anp > 1}{%
- \modulo{\the\anp}{\the\bnp}
- \ifnum\remainder=0\relax
- \global\premierdeux=\numexpr\premierdeux+1\relax
- \cnp=\numexpr\anp/\bnp\relax
- \anp=\cnp\relax
- \else%
- \bnp=\numexpr\bnp+1\relax%
- \fi%
- }%
- \ifnum\premier=0
- Le nombre \num{#1} est un nombre premier.
- \else%
- \xintifboolexpr{\premierun>\premierdeux}{\premier=\premierun}{\premier=\premierdeux}%
- \begin{align*}
- \num{#1}&=\num{#2}\times\num{#3}%\\
- \xintifboolexpr{\premier>0}{\\%
- \xintFor* ##1 in {\xintSeq {1}{\premier}}\do {\num{#1}&=\xintifboolexpr{##1<\premierun}{\PremierEtape{#2}{##1}}{\Decomposition[Longue]{#2}}\mathrel{\times}\xintifboolexpr{##1<\premierdeux}{\PremierEtape{#3}{##1}}{\Decomposition[Longue]{#3}}\\
- }%
- \num{#1}&=\PremierExposant{#1}%
- }{}
- \end{align*}
- \fi%
-}%
-
\newcommand\NombrePremierVertical[1]{%\'ecrire la d\'ecomposition compl\`ete
% #1 le nombre premier \`a tester
- \newcount\anpv\newcount\bnpv\newcount\cnpv%\newcount\e\newcount\f%
+ \newcount\anpv\newcount\bnpv\newcount\cnpv%
\anpv=#1\relax
\bnpv=2\relax
\premier=-1\relax
@@ -8885,9 +8897,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\fi
}
-\newcommand\NombrePremierPotence[1]{%\'ecrire la d\'ecomposition compl\`ete
+\newcommand\NombrePremierPotence[1]{%
% #1 le nombre premier \`a tester
- \newcount\anpv\newcount\bnpv\newcount\cnpv%\newcount\e\newcount\f%
+ \newcount\anpv\newcount\bnpv\newcount\cnpv%
\anpv=#1\relax
\bnpv=2\relax
\premier=-1\relax
@@ -8978,7 +8990,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}
}
-\newcommand\NombrePremierVerticalVide[1]{%\'ecrire la d\'ecomposition compl\`ete
+\newcommand\NombrePremierVerticalVide[1]{%
% #1 le nombre premier \`a tester
\newcount\anpv\newcount\bnpv\newcount\cnpv%
\anpv=#1\relax
@@ -9010,8 +9022,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\fi
}
-\newcommand\NombrePremierExposant[1]{%\'ecrire la d\'ecomposition
- % compl\`ete
+\newcommand\NombrePremierExposant[1]{%
\newcount\anp\newcount\bnp\newcount\cnp%
% #1 le nombre premier \`a tester
\anp=#1\relax%
@@ -9395,15 +9406,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
%%%
% Thales
%%%
-\newcount\ppcm
+\newcount\ppcm%
\newcommand\PPCM[2]{%
- \PGCD{#1}{#2}
- \ppcm=\numexpr#1*#2/\pgcd\relax
-}
+ \PGCD{#1}{#2}%
+ \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}
+\DeclareSIUnit{\PfCThalesUnit}{\useKV[ClesThales]{Unite}}%
+
%On d\'efinit la figure \`a utiliser
\def\MPFigThales#1#2#3#4#5#6{
% #1 Premier sommet
@@ -10056,7 +10069,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\\
% % 3eme ligne : Calculs
\ifnum\cmxa>0
- \Nomx\uppercase{&}\opdiv*{numx}{denox}{resultatx}{restex}\opcmp{restex}{0}\ifopeq=\num{\ResultatThalesx}\else\approx\num{\fpeval{round(\ResultatThalesx,\useKV[ClesThales]{Precision})}}\fi~\text{\useKV[ClesThales]{Unite}}%
+ \Nomx\uppercase{&}\opdiv*{numx}{denox}{resultatx}{restex}\opcmp{restex}{0}\ifopeq=\SI{\ResultatThalesx}{\PfCThalesUnit}\else\approx\SI{\fpeval{round(\ResultatThalesx,\useKV[ClesThales]{Precision})}}{\PfCThalesUnit}\fi%
\fi
% % Deuxi\`eme compteur \yyy
\ifnum\cmya>0
@@ -10065,7 +10078,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\else
\uppercase{&}
\fi
- \Nomy\uppercase{&}\opdiv*{numy}{denoy}{resultaty}{restey}\opcmp{restey}{0}\ifopeq=\num{\ResultatThalesy}\else\approx\num{\fpeval{round(\ResultatThalesy,\useKV[ClesThales]{Precision})}}\fi~\text{\useKV[ClesThales]{Unite}}%
+ \Nomy\uppercase{&}\opdiv*{numy}{denoy}{resultaty}{restey}\opcmp{restey}{0}\ifopeq=\SI{\ResultatThalesy}{\PfCThalesUnit}\else\approx\SI{\fpeval{round(\ResultatThalesy,\useKV[ClesThales]{Precision})}}{\PfCThalesUnit}\fi%
\fi
% %Troisi\`eme compteur \zzz
\ifnum\cmza>0
@@ -10075,9 +10088,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\else
\uppercase{&}
\fi
- \Nomz\uppercase{&}\opdiv*{numz}{denoz}{resultatz}{restez}\opcmp{restez}{0}\ifopeq=\num{\ResultatThalesz}\else\approx\num{\fpeval{round(\ResultatThalesz,\useKV[ClesThales]{Precision})}}\fi~\text{\useKV[ClesThales]{Unite}}%
+ \Nomz\uppercase{&}\opdiv*{numz}{denoz}{resultatz}{restez}\opcmp{restez}{0}\ifopeq=\SI{\ResultatThalesz}{\PfCThalesUnit}\else\approx\SI{\fpeval{round(\ResultatThalesz,\useKV[ClesThales]{Precision})}}{\PfCThalesUnit}\fi%
\else
- \uppercase{&}\Nomz\uppercase{&}\opdiv*{numz}{denoz}{resultatz}{restez}\opcmp{restez}{0}\ifopeq=\num{\ResultatThalesz}\else\approx\num{\fpeval{round(\ResultatThalesz,\useKV[ClesThales]{Precision})}}\fi~\text{\useKV[ClesThales]{Unite}}%
+ \uppercase{&}\Nomz\uppercase{&}\opdiv*{numz}{denoz}{resultatz}{restez}\opcmp{restez}{0}\ifopeq=\SI{\ResultatThalesz}{\PfCThalesUnit}\else\approx\SI{\fpeval{round(\ResultatThalesz,\useKV[ClesThales]{Precision})}}{\PfCThalesUnit}\fi%
\fi
\fi
\end{align*}
@@ -10978,10 +10991,9 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\setKV[ClesTrigo]{#1}%
% #1 Cl\'es
% #2 Nom du triangle ABC, rectangle en B, angle connu ou pas : BAC
- % #3 Longueur
- % #4 Longueur
- % #5 angle
+ % #3 Longueur #4 Longueur #5 angle
% On d\'efinit les points
+ \DeclareSIUnit{\PfCTrigoUnit}{\useKV[ClesTrigo]{Unite}}%
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
\StrMid{#2}{3}{3}[\NomC]%
@@ -10989,7 +11001,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\xdef\NomAngleDroit{\NomB}%
\xdef\NomSommetA{\NomA}%
\xdef\NomSommetB{\NomB}%
- \xdef\NomSommetC{\NomC}%
+ \xdef\NomSommetC{\NomC}%
\ifboolKV[ClesTrigo]{Perso}{%
\RedactionTrigo%
}{%
@@ -11003,7 +11015,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
\num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\
- \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}
+ \SI{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}
\end{align*}%
}{%
\begin{align*}
@@ -11011,7 +11023,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\cos(\ang{#5})&=\frac{\NomA\NomB}{\num{#4}}\\
\num{#4}\times\cos(\ang{#5})&=\NomA\NomB%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \num{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}%
+ \SI{\fpeval{round(#4*cosd(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*cosd(#5),9)}}{=}{\approx}\NomA\NomB}%
\end{align*}
}%
\else%
@@ -11023,7 +11035,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC\times\cos(\ang{#5})&=\num{#3}\\
\NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}
}{%
\begin{align*}
@@ -11031,7 +11043,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\cos(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
\NomA\NomC&=\frac{\num{#3}}{\cos(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/cosd(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/cosd(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -11063,7 +11075,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
\num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
+ \SI{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}{%
\begin{align*}
@@ -11071,7 +11083,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\sin(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\
\num{#4}\times\sin(\ang{#5})&=\NomB\NomC%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \num{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
+ \SI{\fpeval{round(#4*sind(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*sind(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}%
\else
@@ -11083,7 +11095,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomC\times\sin(\ang{#5})&=\num{#3}\\
\NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}%
}{%
\begin{align*}
@@ -11091,7 +11103,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\sin(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
\NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomC&\IfInteger{\fpeval{round(#3/sind(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/sind(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -11123,7 +11135,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\%
\num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\%
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
+ \SI{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}{%
\begin{align*}
@@ -11131,7 +11143,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\tan(\ang{#5})&=\frac{\NomB\NomC}{\num{#4}}\\
\num{#4}\times\tan(\ang{#5})&=\NomB\NomC%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \num{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
+ \SI{\fpeval{round(#4*tand(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}&\IfInteger{\fpeval{round(#4*tand(#5),9)}}{=}{\approx}\NomB\NomC}%
\end{align*}%
}%
\else
@@ -11143,7 +11155,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\NomA\NomB\times\tan(\ang{#5})&=\num{#3}\\
\NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}%
}{%
\begin{align*}
@@ -11151,7 +11163,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\tan(\ang{#5})&=\frac{\num{#3}}{\NomA\NomB}\\
\NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}%\\
\ifboolKV[ClesTrigo]{ValeurExacte}{}{\\%
- \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\num{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}}%
+ \NomA\NomB&\IfInteger{\fpeval{round(#3/tand(#5),9)}}{=}{\approx}\SI{\fpeval{round(#3/tand(#5),\useKV[ClesTrigo]{Precision})}}{\PfCTrigoUnit}}%
\end{align*}%
}%
\else%on calcule l'angle
@@ -11182,9 +11194,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\setKV[ClesTrigo]{#1}%
% #1 Cl\'es
% #2 Nom du triangle ABC, rectangle en B, angle connu ou pas : BAC
- % #3 Longueur
- % #4 Longueur
- % #5 angle
+ % #3 Longueur #4 Longueur #5 angle
% On d\'efinit les points
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
@@ -12840,7 +12850,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
+\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}}}{}
\]
- }
+ }%
\ifboolKV[ClesStat]{SET}{}{L'effectif total de la s\'erie est :%
\ifboolKV[ClesStat]{Liste}{ \num{\EffectifTotal}\\}{%
\[\num{\ListeComplete[1,2]}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
@@ -21542,17 +21552,18 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
\def\barre{\vrule height2.1ex depth.9ex width0pt}%
\def\demibarre{\vrule height1.4ex depth.6ex width0pt}%
-\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1}%
+\setKVdefault[Scratch]{Impression=false,Numerotation=false,Echelle=1,Naturel=false}%
\ifluatex
\NewDocumentEnvironment{Scratch}{o +b}{%
\useKVdefault[Scratch]%
\setKV[Scratch]{#1}%
\mplibforcehmode%
- \myfontScratch%
+ \ifboolKV[Scratch]{Naturel}{}{\myfontScratch}%
\begin{mplibcode}%
- input PfCScratch;%
- print:=\useKV[Scratch]{Impression};%
+ 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;%
@@ -21564,7 +21575,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis
\else%
\NewDocumentEnvironment{Scratch}{o +b}{%
\setKV[Scratch]{#1}%
- \begin{mpost}[mpsettings={input PfCScratchpdf;print:=\useKV[Scratch]{Impression};NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]%
+ \begin{mpost}[mpsettings={boolean Naturel;Naturel=\useKV[Scratch]{Naturel};if Naturel: input PfCPseudo; print:=true; else: input PfCScratch; print:=\useKV[Scratch]{Impression}; fi;NumeroteLignes:=\useKV[Scratch]{Numerotation};Echelle:=\useKV[Scratch]{Echelle};}]%
#2%
picture recap;%
recap:=currentpicture scaled Echelle;%