diff options
author | Norbert Preining <norbert@preining.info> | 2022-07-14 03:00:55 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-07-14 03:00:55 +0000 |
commit | 247e399be12f89ba7ad8f79d3c582512e4913abf (patch) | |
tree | 181b0286a261db710a9c599e2d0ba1e930f17a2e /macros/latex/contrib/profcollege/latex/ProfCollege.sty | |
parent | d6c082314db045e788a1bb06d0752edf054d4dee (diff) |
CTAN sync 202207140300
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/ProfCollege.sty')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/ProfCollege.sty | 463 |
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;% |