diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-24 20:05:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-24 20:05:42 +0000 |
commit | 999b9447499aad71772d2421cd14d6e74017d5ef (patch) | |
tree | b0bb1d096fbd328a06c8a2751d6c7aed2a2ff32f /Master/texmf-dist/tex | |
parent | 9614ef3a79ae0b4ca0a708ed89b0d4ea26cb313a (diff) |
profcollege (24mar24)
git-svn-id: svn://tug.org/texlive/trunk@70746 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
32 files changed, 2142 insertions, 1323 deletions
diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex index acb5e283884..f77aea497a2 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCCAN.tex @@ -308,7 +308,8 @@ \hline% \endhead% \xintFor* ##1 in {\xintSeq{1}{\ListeFichierslen}}\do{% - \ttfamily{\theCNNumQ}\stepcounter{CNNumQ}&\xdef\CNReponse{}\input{\ListeFichiers[##1]}\ifboolKV[ClesCN]{Nom}{\par\hfill\footnotesize\ttfamily\ListeFichiers[##1]}{}&\ifboolKV[ClesCN]{CAN}{\ifboolKV[ClesCN]{Nom}{\multirow{2}{*}{\CNReponse}}{\multirow{1}{*}{\CNReponse}}}{}&\\% + \ttfamily{\theCNNumQ}\stepcounter{CNNumQ}&\xdef\CNReponse{}\input{\ListeFichiers[##1]}\ifboolKV[ClesCN]{Nom}{\par\hfill\footnotesize\ttfamily\ListeFichiers[##1]}{}&\CNReponse%\ifboolKV[ClesCN]{CAN}{\ifboolKV[ClesCN]{Nom}{\multirow{2}{*}{\CNReponse}}{\multirow{1}{*}{\CNReponse}}}{} + &\\% \hline% }% \end{longtable}% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex index dbe0adbd3e6..d2a189e29b5 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCCalculatrice.tex @@ -5,7 +5,7 @@ \definecolor{lightorange}{rgb}{0.9,0.4,0}% \definecolor{lightestorange}{rgb}{1,0.8,0.5}% \definecolor{darkorange}{rgb}{0.2,0.1,0}% - +% \colorlet{blackened}{black!90!white}% \colorlet{blackish}{black!70!white}% \colorlet{greyish}{black!60!white}% @@ -13,100 +13,100 @@ \colorlet{orangeish}{yellow!90!red}% \colorlet{greenish}{green!16!gray}% \colorlet{redish}{red!80!black}% - +% \tcbset{calbackground/.style={% - enhanced, - leftright skip=0.25cm,beforeafter skip=0pt, - toptitle=0mm,bottomtitle=0mm, - right=2mm,left=2mm, - top=1pt, - bottom=0.25cm, - boxsep=0pt, - boxrule=0mm, - sharp corners, - sidebyside, - sidebyside gap=2mm, - lefthand ratio=0.6, - bicolor, - colback=black!10!white, - colbacklower=greenish, - colframe=white, - autoparskip, + enhanced,% + leftright skip=0.25cm,beforeafter skip=0pt,% + toptitle=0mm,bottomtitle=0mm,% + right=2mm,left=2mm,% + top=1pt,% + bottom=0.25cm,% + boxsep=0pt,% + boxrule=0mm,% + sharp corners,% + sidebyside,% + sidebyside gap=2mm,% + lefthand ratio=0.6,% + bicolor,% + colback=black!10!white,% + colbacklower=greenish,% + colframe=white,% + autoparskip,% }}% - +% \newtcbox{\KY}[1][]{% - enhanced, - on line, - arc=2pt,outer arc=2pt, - boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm, - boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt, - interior style={top color=blackish,bottom color=blackened}, - colframe=greyish, - width=2.5em, - tcbox width=forced center, - equal height group=K, - valign=center, - fontupper=\footnotesize\sffamily, - coltext=orangeish, - before upper=\vrule width 0pt height 2ex depth 1ex\relax, + enhanced,% + on line,% + arc=2pt,outer arc=2pt,% + boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,% + boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,% + interior style={top color=blackish,bottom color=blackened},% + colframe=greyish,% + width=2.5em,% + tcbox width=forced center,% + equal height group=K,% + valign=center,% + fontupper=\footnotesize\sffamily,% + coltext=orangeish,% + before upper=\vrule width 0pt height 2ex depth 1ex\relax,% }% - +% \newtcbox{\KYm}[1][]{% - enhanced, - on line, - arc=2pt,outer arc=2pt, - boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm, - boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt, - interior style={top color=blackish,bottom color=blackened}, - colframe=greyish, - width=2.5em, - tcbox width=forced center, - equal height group=K, - valign=center, - fontupper=\footnotesize\sffamily, - coltext=orangeish, - before upper=\vrule width 0pt height 2ex depth 1ex\relax$, - after upper=$, + enhanced,% + on line,% + arc=2pt,outer arc=2pt,% + boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,% + boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,% + interior style={top color=blackish,bottom color=blackened},% + colframe=greyish,% + width=2.5em,% + tcbox width=forced center,% + equal height group=K,% + valign=center,% + fontupper=\footnotesize\sffamily,% + coltext=orangeish,% + before upper=\vrule width 0pt height 2ex depth 1ex\relax$,% + after upper=$,% }% - +% \newtcbox{\KN}{% - enhanced, - on line, - arc=2pt,outer arc=2pt, - boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm, - boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt, - interior style={top color=blackish,bottom color=blackened}, - colframe=greyish, - width=1.5em, - tcbox width=forced center, - equal height group=K, - valign=center, - fontupper=\footnotesize\sffamily, - coltext=whiteish, - before upper=\vrule width 0pt height 2ex depth 1ex\relax, + enhanced,% + on line,% + arc=2pt,outer arc=2pt,% + boxrule=0pt,bottomrule=0.25mm,rightrule=0.2mm,% + boxsep=0pt,left=0pt,right=0pt,top=1pt,bottom=1pt,% + interior style={top color=blackish,bottom color=blackened},% + colframe=greyish,% + width=1.5em,% + tcbox width=forced center,% + equal height group=K,% + valign=center,% + fontupper=\footnotesize\sffamily,% + coltext=whiteish,% + before upper=\vrule width 0pt height 2ex depth 1ex\relax,% }% - +% \newtcolorbox{calc}[1][]{% - enhanced,bicolor, - boxsep=0pt, - boxrule=0pt, - top=6pt,bottom=0pt,left=6pt,right=0pt, - sharp corners, - frame empty, - colback=black!10, - colbacklower=greenish, - sidebyside, - sidebyside align=top seam, - sidebyside gap=0pt, - righthand width=50.7mm, - before lower=\begin{tabular}{@{}l@{}}, - after lower=\end{tabular}, + enhanced,bicolor,% + boxsep=0pt,% + boxrule=0pt,% + top=6pt,bottom=0pt,left=6pt,right=0pt,% + sharp corners,% + frame empty,% + colback=black!10,% + colbacklower=greenish,% + sidebyside,% + sidebyside align=top seam,% + sidebyside gap=0pt,% + righthand width=50.7mm,% + before lower=\begin{tabular}{@{}l@{}},% + after lower=\end{tabular},% overlay={\node[inner sep=0pt, outer sep=0pt, text height=5pt, text depth=1pt, text width=50.7mm, fill=greenish, anchor=north east, font=\sffamily\tiny\bfseries, align=flush right] - at (frame.north east) {#1};} -} - + at (frame.north east) {#1};}% +}% +% \def\MPCalculatrice#1#2#3{% % #1 Calcul %2 r\'eponse \ifluatex% @@ -122,20 +122,28 @@ LargeurEcran:=\useKV[ClesCalculatrice]{Largeur}; boolean Calcul; Calcul=\useKV[ClesCalculatrice]{Calcul}; - print:=\useKV[ClesCalculatrice]{Impression}; + print:=\useKV[ClesCalculatrice]{Impression}; + Math:=\useKV[ClesCalculatrice]{Math}; LCD(#1)(#2)(#3); \end{mplibcode}% \mplibnumbersystem{scaled}% \else% - \begin{mpost}[mpsettings={input PfCCalculatrice;LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};}] - LCD(#1)(#2)(#3); - \end{mpost} + \begin{mpost}[mpsettings={input PfCCalculatrice;LargeurEcran:=\useKV[ClesCalculatrice]{Largeur};}]% + LCD(#1)(#2)(#3);% + \end{mpost}% \fi% }% +% +\setKVdefault[ClesCalculatrice]{ModeleCouleur=5,Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false,Math}% +% +\NewDocumentCommand\Calculatrice{}{%On désactive le ~ qui pose souci avec babel + \begingroup + \catcode`\~12 + \Calculatriceaux +}% -\setKVdefault[ClesCalculatrice]{ModeleCouleur=5,Ecran=false,NbLignes=0,BL=0.775,Largeur=120,Calcul=false,Impression=false}% - -\newcommand\Calculatrice[2][]{% +\NewDocumentCommand\Calculatriceaux{om}{% + \endgroup \setstackgap{L}{\useKV[ClesCalculatrice]{BL}\baselineskip}% \useKVdefault[ClesCalculatrice]% \setKV[ClesCalculatrice]{#1}% @@ -147,12 +155,12 @@ \setsepchar[*]{,*/}\reademptyitems% \readlist\ListeCalc{#2}% }% - \ignoreemptyitems + \ignoreemptyitems% \MPCalculatrice{\ListeCalc[1,1]}{\ListeCalc[1,2]}{\useKV[ClesCalculatrice]{NbLignes}}% }{% \setsepchar[*]{,*/}\reademptyitems% \readlist\ListeCalc{#2}% - \ignoreemptyitems + \ignoreemptyitems% \foreachitem\compteur\in\ListeCalc{\xintifboolexpr{\listlen\ListeCalc[\compteurcnt]==2}{\Longstack{{\tiny\ListeCalc[\compteurcnt,1]} \KN{\ListeCalc[\compteurcnt,2]}}}{\Longstack{{\tiny\ListeCalc[\compteurcnt,2]} \KY{\ListeCalc[\compteurcnt,3]}}}% }% }% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractionsoldv1.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractionsoldv1.tex deleted file mode 100644 index 0e4dac5a686..00000000000 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCalculsFractionsoldv1.tex +++ /dev/null @@ -1,192 +0,0 @@ -\setKVdefault[CalculsFractions]{Couleurs=false,Negatif=false}% -\defKV[CalculsFractions]{Couleur=\setKV[CalculsFractions]{Couleurs}}% - -\NewDocumentCommand\tofrac{m}{% - \IfDecimal{#1}{#1}{% - \StrBefore{#1}{/}[\PfCnum]% - \StrBehind{#1}{/}[\PfCden]% - \ifnum\PfCden=1\relax% - \num{\PfCnum}% - \else% - \frac{\num{\PfCnum}}{\num{\PfCden}}% - \fi% - }% -}% - -\NewDocumentCommand\AddFraction{soommo}{% - \useKVdefault[CalculsFractions]% - \setKV[CalculsFractions]{#2}% - \ifboolKV[CalculsFractions]{Couleurs}{\colorlet{CouleurDenoCom}{\useKV[CalculsFractions]{Couleur}}}{\colorlet{CouleurDenoCom}{black}}% - \IfBooleanTF{#1}{% - \xdef\PfCFractionOp{-}% - }{% - \xdef\PfCFractionOp{+}% - }% - \IfDecimal{#4}{% - \xdef\PfCNumA{#4}% - \xdef\PfCNumB{1}% - }{% - \StrCut{#4}{/}\PfCNumA\PfCNumB% - }% - \IfDecimal{#5}{% - \xdef\PfCNumC{#5}% - \xdef\PfCNumD{1}% - }{% - \StrCut{#5}{/}\PfCNumC\PfCNumD% - } - \xdef\PfCAddFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}% - \setsepchar[*]{,*/}\ignoreemptyitems% - \readlist*\ListeFractions{\PfCAddFoo}% - \reademptyitems% - \setsepchar{,}% - % Partie calculs - \PGCD{\fpeval{abs(\ListeFractions[1,2])}}{\fpeval{abs(\ListeFractions[2,2])}}% -% pgcd=\the\pgcd% - \xdef\PfCPremierMul{\fpeval{\ListeFractions[2,2]/\the\pgcd}}% -% PfCPremierMul=\PfCPremierMul - \xdef\PfCDeuxiemeMul{\fpeval{\ListeFractions[1,2]/\the\pgcd}}% - \xdef\PfCAddNumFin{\fpeval{(\ListeFractions[1,1])*(\PfCPremierMul)\PfCFractionOp(\ListeFractions[2,1])*(\PfCDeuxiemeMul)}}% - \xdef\PfCAddDenoFin{\fpeval{(\ListeFractions[1,2])*(\PfCPremierMul)}}% - \PGCD{\fpeval{abs(\PfCAddNumFin)}}{\fpeval{abs(\PfCAddDenoFin)}}\xdef\PfCAddPgcd{\the\pgcd}% - \xdef\PfCAddNumSimp{\fpeval{\PfCAddNumFin/\PfCAddPgcd}}% - \xdef\PfCAddDenoSimp{\fpeval{\PfCAddDenoFin/\PfCAddPgcd}}% - \xdef\PfCAddSumSimp{\PfCAddNumSimp/\PfCAddDenoSimp}% - \IfValueT{#6}{\xdef#6{\PfCAddSumSimp}}% - % Partie affichage - \ensuremath{% - \IfValueTF{#3}{% - \ifnum#3=4\relax% - %test - \ifboolKV[CalculsFractions]{Negatif}{% - \xintifboolexpr{\fpeval{\PfCAddNumSimp/\PfCAddDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCAddNumSimp)}/\fpeval{abs(\PfCAddDenoSimp)}}}{\tofrac{\PfCAddSumSimp}}% - }{\tofrac{\PfCAddSumSimp}}% - \else% - \ifnum#3=3\relax% - \SSimpliTest{\fpeval{abs(\PfCAddNumFin)}}{\fpeval{abs(\PfCAddDenoFin)}}\ifthenelse{\boolean{Simplification}}{\tofrac{\PfCAddNumFin/\PfCAddDenoFin}}{\tofrac{\PfCAddSumSimp}}% - \else% - \ifnum#3=1\relax% - \ifnum\fpeval{abs(\PfCPremierMul)}>1\relax% - \frac{\ListeFractions[1,1]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCPremierMul}}}}{\ListeFractions[1,2]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCPremierMul}}}} - \else% - \tofrac{#4}% - \fi% - \PfCFractionOp% - \ifnum\fpeval{abs(\PfCDeuxiemeMul)}>1\relax% - \frac{\ListeFractions[2,1]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCDeuxiemeMul}}}}{\ListeFractions[2,2]_{\mathcolor{CouleurDenoCom}{\times\NumMA{\PfCDeuxiemeMul}}}}% - \else% - \tofrac{#5}% - \fi% - \else% - \ifnum#3=2\relax% - \frac{\num{\fpeval{\ListeFractions[1,1]*\PfCPremierMul}}}{\num{\fpeval{\ListeFractions[1,2]*\PfCPremierMul}}}\PfCFractionOp\frac{\num{\fpeval{\ListeFractions[2,1]*\PfCDeuxiemeMul}}}{\num{\fpeval{\ListeFractions[2,2]*\PfCDeuxiemeMul}}}% - \fi% - \fi% - \fi% - \fi% - }{\tofrac{#4}\PfCFractionOp\tofrac{#5} - }% - }% -}% - -\NewDocumentCommand\SousFraction{oommo}{% - \AddFraction*[#1][#2]{#3}{#4}[#5]% -}% - -\NewDocumentCommand\MulFraction{oommo}{% - \useKVdefault[CalculsFractions]% - \setKV[CalculsFractions]{#1}% - \IfDecimal{#3}{% - \xdef\PfCNumA{#3}% - \xdef\PfCNumB{1}% - }{% - \StrCut{#3}{/}{\PfCNumA}{\PfCNumB}% - }% - \IfDecimal{#4}{% - \xdef\PfCNumC{#4}% - \xdef\PfCNumD{1}% - }{% - \StrCut{#4}{/}{\PfCNumC}{\PfCNumD}% - }% - \xdef\PfCMulFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}% - \setsepchar[*]{,*/}\ignoreemptyitems% - \readlist*\ListeFractions{\PfCMulFoo}% - \reademptyitems - \setsepchar{,}% - % Calculs - \xdef\PfCMulNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,1])}} - \xdef\PfCMulDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,2]}} - \PGCD{\fpeval{abs(\PfCMulNumFin)}}{\fpeval{abs(\PfCMulDenoFin)}}\xdef\PfCMulPgcd{\pgcd}% - \xdef\PfCMulNumSimp{\fpeval{\PfCMulNumFin/\PfCMulPgcd}}% - \xdef\PfCMulDenoSimp{\fpeval{\PfCMulDenoFin/\PfCMulPgcd}}% - \xdef\PfCMulPdtSimp{\PfCMulNumSimp/\PfCMulDenoSimp}% - \IfValueT{#5}{\xdef#5{\PfCMulPdtSimp}}% - \ensuremath{% - \IfValueTF{#2}{% - \ifnum#2=3\relax - \ifboolKV[CalculsFractions]{Negatif}{% - \xintifboolexpr{\fpeval{\PfCMulNumSimp/\PfCMulDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCMulNumSimp)}/\fpeval{abs(\PfCMulDenoSimp)}}}{\tofrac{\PfCMulPdtSimp}}% - }{\tofrac{\PfCMulPdtSimp}}% - \else - \ifnum#2=2\relax% - \SSimpliTest{\PfCMulNumFin}{\PfCMulDenoFin}\ifthenelse{\boolean{Simplification}}{\frac{\ifnum\PfCMulNumFin<0\relax-\fi\Decomposition[Longue]{\fpeval{abs(\PfCMulNumFin)}}}{\ifnum\PfCMulDenoFin<0\relax-\fi\Decomposition[Longue]{\fpeval{abs(\PfCMulDenoFin)}}}}{\tofrac{\PfCMulPdtSimp}}% - \else% - \ifnum#2=1\relax% - \frac{\ListeFractions[1,1]\times\ifnum\ListeFractions[2,1]<0\relax(\fi\ListeFractions[2,1]\ifnum\ListeFractions[2,1]<0\relax)\fi}{\ListeFractions[1,2]\times\ifnum\ListeFractions[2,2]<0\relax(\fi\ListeFractions[2,2]\ifnum\ListeFractions[2,2]<0\relax)\fi} - \fi - \fi - \fi - }{\tofrac{#3}\times\tofrac{#4} - } - }% -}% - -\NewDocumentCommand\DivFraction{oommo}{% - \useKVdefault[CalculsFractions]% - \setKV[CalculsFractions]{#1}% - \IfDecimal{#3}{% - \xdef\PfCNumA{#3}% - \xdef\PfCNumB{1}% - }{% - \StrCut{#3}{/}{\PfCNumA}{\PfCNumB}% - }% - \IfDecimal{#4}{% - \xdef\PfCNumC{#4}% - \xdef\PfCNumD{1}% - }{% - \StrCut{#4}{/}{\PfCNumC}{\PfCNumD}% - }% - \xdef\PfCDivFoo{\PfCNumA/\PfCNumB,\PfCNumC/\PfCNumD}% - \setsepchar[*]{,*/}\ignoreemptyitems% - \readlist*\ListeFractions{\PfCDivFoo}% - \reademptyitems% - \setsepchar{,}% - % Calculs - \xdef\PfCDivNumFin{\fpeval{(\ListeFractions[1,1])*(\ListeFractions[2,2])}}% - \xdef\PfCDivDenoFin{\fpeval{\ListeFractions[1,2]*\ListeFractions[2,1]}}% - \PGCD{\fpeval{abs(\PfCDivNumFin)}}{\fpeval{abs(\PfCDivDenoFin)}}\xdef\PfCDivPgcd{\pgcd}% - \xdef\PfCDivNumSimp{\fpeval{\PfCDivNumFin/\PfCDivPgcd}}% - \xdef\PfCDivDenoSimp{\fpeval{\PfCDivDenoFin/\PfCDivPgcd}}% - \xdef\PfCDivPdtSimp{\PfCDivNumSimp/\PfCDivDenoSimp}% - \IfValueT{#5}{\xdef#5{\PfCDivPdtSimp}}% - \ensuremath{% - \IfValueTF{#2}{% - \ifnum#2=4\relax - \ifboolKV[CalculsFractions]{Negatif}{% - \xintifboolexpr{\fpeval{\PfCDivNumSimp/\PfCDivDenoSimp}<0}{-\tofrac{\fpeval{abs(\PfCDivNumSimp)}/\fpeval{abs(\PfCDivDenoSimp)}}}{\tofrac{\PfCDivPdtSimp}}% - }{\tofrac{\PfCDivPdtSimp}}% - \else\ifnum#2=3\relax - \MulFraction[][\fpeval{#2-1}]{\ListeFractions[1,1]/\ListeFractions[1,2]}{\ListeFractions[2,2]/\ListeFractions[2,1]}% - \else - \ifnum#2=2\relax% - \MulFraction[][\fpeval{#2-1}]{\ListeFractions[1,1]/\ListeFractions[1,2]}{\ListeFractions[2,2]/\ListeFractions[2,1]}% - \else% - \ifnum#2=1\relax% - \tofrac{\ListeFractions[1,1]/\ListeFractions[1,2]}\times\tofrac{\ListeFractions[2,2]/\ListeFractions[2,1]} - \fi - \fi - \fi - \fi - }{\tofrac{#3}\div\tofrac{#4} - } - }% -}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex index b11a0c5289b..bf9b9e0cdef 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartesJeux.tex @@ -336,6 +336,10 @@ \end{tikzpicture}% }{}% +% Pour construire la liste des cartes lors d'un ajout automatiques +\newtoks\TokListeAjout{} +\def\UpdatetoksCartes#1/#2\nil{\addtotok\TokListeAjout{§#1/#2}}% + \NewDocumentCommand\CartesPerso{o +m}{% % 0/ La largeur est \useKV[Cards]{Largeur} - La hauteur est \useKV[Cards]{Hauteur}.\par \useKVdefault[Cards]% @@ -383,11 +387,33 @@ % Dimensions intérieures des cartes \setlength{\hauteurcarte}{\fpeval{\hauteurcards-\margecards}pt}% \setlength{\largeurcarte}{\fpeval{\largeurcards-\margecards}pt}% - % nombre de cartes sur la largeur + % nombre de cartes sur la largeur et sur la hauteur \xdef\PfCNbCartesLarg{\fpeval{floor(\paperwidth/\largeurcards)}}% \xdef\PfCNbCartesHaut{\fpeval{floor(\paperheight/\hauteurcards)}}% \xdef\PfCNbCartesPerso{\fpeval{\PfCNbCartesLarg*\PfCNbCartesHaut}}% - % Jointes + % On vérifie si le nombres de déclarations de cartes est compatible avec le nombre total de cartes calculé automatiquement. Mais pas dans le mode Trivial et surtout pas dans le cas où la trame n'est pas utilisée ! + \ifboolKV[Cards]{Trame}{% + \ifboolKV[Cards]{Trivial}{}{% + \xintifboolexpr{\PfCNbCartesPerso==\ListeCardslen}{% + % Je ne dois pas ajouter de cartes + }{% + % Je passe ici et j'ajoute des cartes\\ + % Je dois en ajouter \fpeval{\PfCNbCartesPerso-\ListeCardslen}% + \ifnum\fpeval{\PfCNbCartesPerso-\ListeCardslen}>0 + \foreachitem\compteur\in\ListeCards{\expandafter\UpdatetoksCartes\compteur\nil}% + \def\PfCFooAjout{Non connue/Non connue} + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\PfCNbCartesPerso-\ListeCardslen}}}\do{% + \expandafter\UpdatetoksCartes\PfCFooAjout\nil + }% + \xdef\PfCFooAjoutBis{\the\TokListeAjout}% + \setsepchar[*]{§*/}% + \readlist*\ListeCards{\PfCFooAjoutBis}% + \setsepchar{,}% + \fi + }% + }}{}% + % fin Ajout automatique + % Jointes \ifboolKV[Cards]{Jointes}{\setlength{\largeurcards}{\largeurcarte}}{}% \ifboolKV[Cards]{Jointes}{\setlength{\hauteurcards}{\hauteurcarte}}{}% % décalage entre les cartes ou pas @@ -424,10 +450,11 @@ \clearpage% \thispagestyle{empty}% \begin{Trame} - \multido{\i=1+1}{\PfCNbCartesPerso}{% - \node[] at (Carte\i) {% + %\multido{\i=1+1}{\PfCNbCartesPerso}{% +\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{ + \node[] at (Carte##1) {% \begin{MyboxSimpleAv}{\useKV[Cards]{Theme}}% - \ListeCards[\i,1]% + \ListeCards[##1,1]% \end{MyboxSimpleAv}% };% }% @@ -469,10 +496,11 @@ \clearpage% \thispagestyle{empty}% \begin{Trame} - \multido{\i=1+1}{\PfCNbCartesPerso}{% - \node[] at (Carte\i) {% - \begin{Mybox}{\ListeCards[\i,1]}{\useKV[Cards]{Theme}}{\ListeCards[\i,2]}% - \ListeCards[\i,3]% +% \multido{\i=1+1}{\PfCNbCartesPerso}{% +\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{ + \node[] at (Carte##1) {% + \begin{Mybox}{\ListeCards[##1,1]}{\useKV[Cards]{Theme}}{\ListeCards[##1,2]}% + \ListeCards[##1,3]% \end{Mybox}% };% }% @@ -513,9 +541,10 @@ \clearpage% \thispagestyle{empty}% \begin{Trame} - \multido{\i=1+1}{\PfCNbCartesPerso}{% - \node[] at (Carte\i) {% - \begin{MyboxJQ}{\ListeCards[\i,1]}{\ListeCards[\i,2]}% +% \multido{\i=1+1}{\PfCNbCartesPerso}{% +\xintFor* ##1 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{ + \node[] at (Carte##1) {% + \begin{MyboxJQ}{\ListeCards[##1,1]}{\ListeCards[##1,2]}% %% \end{MyboxJQ}% };% @@ -562,13 +591,14 @@ \clearpage% \thispagestyle{empty}% \begin{Trame} - \multido{\i=1+1}{\PfCNbCartesPerso}{% - \node[] at (Carte\i) {% +% \multido{\i=1+1}{\PfCNbCartesPerso}{% +\xintFor* ##2 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{ + \node[] at (Carte##2) {% \begin{MyboxTrivial}% \begin{center} \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% - \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\i,\fpeval{1+2*(##1-1)}]\\ + \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[##2,\fpeval{1+2*(##1-1)}]\\ }% \end{NiceTabular}% \end{center}% @@ -634,13 +664,14 @@ \clearpage% \thispagestyle{empty}% \begin{Trame} - \multido{\i=1+1}{\PfCNbCartesPerso}{% - \node[] at (Carte\i) {% +% \multido{\i=1+1}{\PfCNbCartesPerso}{% +\xintFor* ##2 in{\xintSeq{1}{\PfCNbCartesPerso}}\do{ + \node[] at (Carte##2) {% \begin{MyboxTrivial}% \begin{center} \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% - \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\i,\fpeval{1+2*(##1-1)}]\\ + \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[##2,\fpeval{1+2*(##1-1)}]\\ }% \end{NiceTabular}% \end{center}% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex index eb7b7b02853..ea9b30af037 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartesMentales.tex @@ -6,7 +6,7 @@ \newlength{\RoundedBoxWidth}% -\NewEnviron{Bulle}[1][]{% +\NewDocumentEnvironment{Bulle}{o+b}{% \setKV[ClesMentales]{#1}% \setlength{\RoundedBoxWidth}{\useKV[ClesMentales]{Largeur}}% \xdef\Pointilles{\ifboolKV[ClesMentales]{Pointilles}{dashed}{}}% @@ -14,12 +14,13 @@ \xdef\CouleurFond{\useKV[ClesMentales]{CFond}}% \xdef\EpaisseurLigne{\useKV[ClesMentales]{Epaisseur}}% \xdef\RayonCoin{\useKV[ClesMentales]{Rayon}}% - \node(\useKV[ClesMentales]{Nom}) [align=justify,draw=\CouleurTrace,line width=\EpaisseurLigne,\Pointilles,fill=\CouleurFond,rounded corners=\RayonCoin,text width=\RoundedBoxWidth] at (\useKV[ClesMentales]{Ancre}) {\begin{minipage}{\RoundedBoxWidth}\BODY\end{minipage}};% - \multido{\i=1+1}{9}{% - \xdef\x{\fpeval{\i/10}} - \coordinate (\useKV[ClesMentales]{Nom}-H-\i) at ($(\useKV[ClesMentales]{Nom}.north west)!\x!(\useKV[ClesMentales]{Nom}.north east)$); - \coordinate (\useKV[ClesMentales]{Nom}-D-\i) at ($(\useKV[ClesMentales]{Nom}.north east)!\x!(\useKV[ClesMentales]{Nom}.south east)$); - \coordinate (\useKV[ClesMentales]{Nom}-B-\i) at ($(\useKV[ClesMentales]{Nom}.south east)!\x!(\useKV[ClesMentales]{Nom}.south west)$); - \coordinate (\useKV[ClesMentales]{Nom}-G-\i) at ($(\useKV[ClesMentales]{Nom}.south west)!\x!(\useKV[ClesMentales]{Nom}.north west)$); + \node(\useKV[ClesMentales]{Nom}) [align=justify,draw=\CouleurTrace,line width=\EpaisseurLigne,\Pointilles,fill=\CouleurFond,rounded corners=\RayonCoin,text width=\RoundedBoxWidth] at (\useKV[ClesMentales]{Ancre}) {\begin{minipage}{\RoundedBoxWidth}#2\end{minipage}};% + % \multido{\i=1+1}{9}{% + \xintFor* ##1 in{\xintSeq{1}{9}}\do{% + \xdef\x{\fpeval{##1/10}} + \coordinate (\useKV[ClesMentales]{Nom}-H-##1) at ($(\useKV[ClesMentales]{Nom}.north west)!\x!(\useKV[ClesMentales]{Nom}.north east)$); + \coordinate (\useKV[ClesMentales]{Nom}-D-##1) at ($(\useKV[ClesMentales]{Nom}.north east)!\x!(\useKV[ClesMentales]{Nom}.south east)$); + \coordinate (\useKV[ClesMentales]{Nom}-B-##1) at ($(\useKV[ClesMentales]{Nom}.south east)!\x!(\useKV[ClesMentales]{Nom}.south west)$); + \coordinate (\useKV[ClesMentales]{Nom}-G-##1) at ($(\useKV[ClesMentales]{Nom}.south west)!\x!(\useKV[ClesMentales]{Nom}.north west)$); }% -}%
\ No newline at end of file +}{}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex index 53ffa097d88..cf9aeaf66ff 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCCartographie.tex @@ -1,10 +1,11 @@ %%% % 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,ModeleCouleur} +\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,VillesSupI=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,Boussole=false,Allegee=1} \defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}} \defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}} \defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}} +\defKV[Cartographie]{VillesI=\setKV[Cartographie]{VillesSupI}} \defKV[Cartographie]{Traces=\setKV[Cartographie]{Codes}} \newcommand\Cartographie[3][]{% @@ -13,13 +14,18 @@ \setKV[Cartographie]{#1}% \mplibforcehmode% \ifboolKV[Cartographie]{Projection}{% + \mplibnumbersystem{double}% \begin{mplibcode} input PfCMonde; string arborescence; arborescence:=\useKV[Cartographie]{Arborescence}; - boolean Impression,VillesSup; + boolean Impression,VillesSup,VillesSupI,Boussole; VillesSup=\useKV[Cartographie]{VillesSup}; + VillesSupI=\useKV[Cartographie]{VillesSupI}; Impression=\useKV[Cartographie]{Impression}; + Boussole=\useKV[Cartographie]{Boussole}; + + Allegee:=\useKV[Cartographie]{Allegee}; maillage:=true; fleuves:=false; @@ -44,6 +50,14 @@ clip currentpicture to (mercatorc(-85,-180)--mercatorc(-85,180)--mercatorc(85,180)--mercatorc(85,-180)--cycle); draw mercatorc(0,-180)--mercatorc(0,180); draw mercatorc(-85,0)--mercatorc(85,0); + % + if Boussole: + label.top(TEX("\scriptsize Nord"),mercatorc(85,0)); + label.bot(TEX("\scriptsize Sud"),mercatorc(-85,0)); + label.urt(TEX("\scriptsize Est"),mercatorc(0,180)); + label.ulft(TEX("\scriptsize Ouest"),mercatorc(0,-180)); + fi; + % label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),mercatorc(0,0)); for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),mercatorc(-k*10,0)); @@ -57,6 +71,14 @@ clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle); draw cylindriquec(0,-180)--cylindriquec(0,180); draw cylindriquec(-85,0)--cylindriquec(85,0); + % + if Boussole: + label.top(TEX("\scriptsize Nord"),cylindriquec(85,0)); + label.bot(TEX("\scriptsize Sud"),cylindriquec(-85,0)); + label.urt(TEX("\scriptsize Est"),cylindriquec(0,180)); + label.ulft(TEX("\scriptsize Ouest"),cylindriquec(0,-180)); + fi; + % label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0)); for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0)); @@ -70,6 +92,14 @@ clip currentpicture to (winkelc(-85,-180)--winkelc(-85,180) for k=-80 step 5 until 85:--winkelc(k,180) endfor --winkelc(85,-180) for k=80 step -5 until -85:--winkelc(k,-180) endfor --cycle); draw winkelc(0,-180)--winkelc(0,180); draw winkelc(-85,0)--winkelc(85,0); + % + if Boussole: + label.top(TEX("\scriptsize Nord"),winkelc(85,0)); + label.bot(TEX("\scriptsize Sud"),winkelc(-85,0)); + label.urt(TEX("\scriptsize Est"),winkelc(0,180)); + label.ulft(TEX("\scriptsize Ouest"),winkelc(0,-180)); + fi; + % label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),winkelc(0,0)); for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(-k*10,0)); @@ -79,23 +109,31 @@ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,-k*10)); label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),winkelc(0,k*10)); endfor; - elseif projection="cylindrique": - clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle); - draw cylindriquec(0,-180)--cylindriquec(0,180); - draw cylindriquec(-85,0)--cylindriquec(85,0); - label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0)); - for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: - label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0)); - label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0)); - endfor; - for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18: - label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10)); - label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10)); - endfor; +% elseif projection="cylindrique": +% clip currentpicture to (cylindriquec(-85,-180)--cylindriquec(-85,180)--cylindriquec(85,180)--cylindriquec(85,-180)--cycle); +% draw cylindriquec(0,-180)--cylindriquec(0,180); +% draw cylindriquec(-85,0)--cylindriquec(85,0); +% label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),cylindriquec(0,0)); +% for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: +% label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(-k*10,0)); +% label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(k*10,0)); +% endfor; +% for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 18: +% label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,-k*10)); +% label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),cylindriquec(0,k*10)); +% endfor; elseif projection="simple": clip currentpicture to (simplec(-85,-180)--simplec(-85,180)--simplec(85,180)--simplec(85,-180)--cycle); draw simplec(0,-180)--simplec(0,180); draw simplec(-85,0)--simplec(85,0); + % + if Boussole: + label.top(TEX("\scriptsize Nord"),simplec(85,0)); + label.bot(TEX("\scriptsize Sud"),simplec(-85,0)); + label.urt(TEX("\scriptsize Est"),simplec(0,180)); + label.ulft(TEX("\scriptsize Ouest"),simplec(0,-180)); + fi; + % label.llft(TEX("\tiny \ang{"&decimal(0)&"}"),simplec(0,0)); for k=\useKV[Cartographie]{Pasl} step \useKV[Cartographie]{Pasl} until 8: label.lft(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(-k*10,0)); @@ -106,6 +144,50 @@ label.bot(TEX("\tiny \ang{"&decimal(k*10)&"}"),simplec(0,k*10)); endfor; fi; + + vardef Villes(text t)= + pair CoordVille; + string NomVille; + n:=0; + for p_:=t: + n:=n+1; + if n=1: + %nblec:=p; + else: + if pair p_: + if projection="mercator": + CoordVille:=mercatorc(ypart(p_),xpart(p_)); + elseif projection="winkel": + CoordVille:=winkelc(ypart(p_),xpart(p_)); + elseif projection="cylindrique": + CoordVille:=cylindriquec(ypart(p_),xpart(p_)); + elseif projection="simple": + CoordVille:=simplec(ypart(p_),xpart(p_)); + fi; + elseif string p_: + NomVille:=p_; + else: + marque_p:="croix"; + pointe(CoordVille); + label.position(p_)(TEX(""&NomVille&""),CoordVille); + fi; + fi; + endfor; + drawoptions(); + enddef; + + def position(expr t)= + if t=1:rt + elseif t=2:urt + elseif t=3:top + elseif t=4:ulft + elseif t=5:lft + elseif t=6:llft + elseif t=7:bot + elseif t=8:lrt + fi + enddef; + if VillesSup: nomfichiermul:=\useKV[Cartographie]{Villes}; nblec:=scantokens readfrom nomfichiermul; @@ -130,7 +212,12 @@ drawoptions(); closefrom nomfichiermul; fi; + + if VillesSupI: + Villes(\useKV[Cartographie]{VillesI}); + fi; \end{mplibcode} + \mplibnumbersystem{scaled}% }{% % \mplibforcehmode \begin{mplibcode} diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex index 4f9e7f9cf65..3f11bb05b74 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCDecomposerNombrePremier.tex @@ -700,9 +700,9 @@ \bnpl=\numexpr\bnpl+1\relax% \pilebl=\bnpl\relax% \fi% - } - } -} + }% + }% +}% \NewDocumentCommand\PfCSommeChiffres{m}{% \xdef\PfCSMSomme{0}% @@ -791,16 +791,20 @@ \newcount\anp\newcount\bnp% \anp=#1% \bnp=2\relax% - 1 % - \whiledo{\bnp<\anp}{% - \modulo{\the\anp}{\the\bnp}{}% - \ifnum\remainder=0% - ; $\num{\the\bnp}$ % - \fi% - \bnp=\numexpr\bnp+1% - }% - et \num{\the\anp}% -} + \ifnum\anp=1 + 1% + \else + 1 % + \whiledo{\bnp<\anp}{% + \modulo{\the\anp}{\the\bnp}{}% + \ifnum\remainder=0% + ; $\num{\the\bnp}$ % + \fi% + \bnp=\numexpr\bnp+1% + }% + et \num{\the\anp}% + \fi% +}% \newcount\anpT\newcount\bnpT\newcount\cnpT\newcount\dnpT% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex index 1e8f371cdf8..ad0dd8885d8 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCDistributivite.tex @@ -430,7 +430,9 @@ \fi } -\newcommand\Affichage[4][]{% +% \newcommand\Affichage[4][]{% + +\NewDocumentCommand\Affichage{ommm}{% \setKV[ClesDistributivite]{#1}%On lit les arguments optionnels \def\LETTRE{\useKV[ClesDistributivite]{Lettre}}% \ensuremath{% @@ -594,10 +596,12 @@ }{% \ifboolKV[ClesDistributivite]{Numerique}{% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{% - \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}% + % \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\multido{\i=2+1}{4}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}% + \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}\xintFor* ##1 in{\xintSeq{2}{4}}\do{=\Distri[Numerique,Etape=##1]{#2}{#3}{#4}{#5}}% }{% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==-1}{% - \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}% + % \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\multido{\i=2+-1}{2}{=\Distri[Numerique,Etape=\i]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}% + \Distri[Numerique,Etape=3]{#2}{#3}{#4}{#5}\xintFor* ##1 in{\xintSeq{2}{0}}\do{=\Distri[Numerique,Etape=##1]{#2}{#3}{#4}{#5}}=\num{\fpeval{(#2+#3)*(#4+#5)}}% }{% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{\num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}}{}% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==2}{\num{\fpeval{#2+#3}}\times(\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#5)}})}{}% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex index a21e068e567..49cf667c163 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCDomino.tex @@ -17,7 +17,7 @@ valign lower=center, arc=2pt, #1 -} +}% \newtcolorbox{MyDominoLogo}[1][]{% enhanced, @@ -32,52 +32,52 @@ arc=2pt, colback=white, #1 -} +}% -\NewEnviron{TrameDomino}{% - \setlength{\margev}{1cm} - \setlength{\margeh}{1cm} - \begin{tikzpicture}[remember picture,overlay] +\NewDocumentEnvironment{TrameDomino}{+b}{% + \setlength{\margev}{1cm}% + \setlength{\margeh}{1cm}% + \begin{tikzpicture}[remember picture,overlay]% % quadrillages horizontal et vertical \coordinate[yshift=-\margev] (A0) at (current page.north west); \coordinate[yshift=-\margev] (B0) at (current page.north east); \foreach \i in {1,...,\useKV[Domino]{Lignes}}{% \coordinate[yshift=-\i*\textheight/\LigneDomino] (A\i) at (A0); \coordinate[yshift=-\i*\textheight/\LigneDomino] (B\i) at (B0); - } + }% \coordinate[xshift=\margeh] (C0) at (current page.north west); \coordinate[xshift=\margeh] (D0) at (current page.south west); \foreach \i in {1,...,\useKV[Domino]{Colonnes}}{ \coordinate[xshift=\i*\textwidth/\ColonneDomino] (C\i) at (C0); \coordinate[xshift=\i*\textwidth/\ColonneDomino] (D\i) at (D0); - } + }% \foreach \i in {0,...,\LigneDomino}{% \draw (A\i) -- (B\i); - } + }% \foreach \i in {0,...,\ColonneDomino}{% \draw (C\i) -- (D\i); - } - \draw[blue, line width=3pt] (A0)--(B0); - \draw[blue, line width=3pt] (A\LigneDomino)--(B\LigneDomino); - \draw[blue, line width=3pt] (C0)--(D0); - \draw[blue, line width=3pt] (C\ColonneDomino)--(D\ColonneDomino); + }% + \draw[blue, line width=3pt] (A0)--(B0);% + \draw[blue, line width=3pt] (A\LigneDomino)--(B\LigneDomino);% + \draw[blue, line width=3pt] (C0)--(D0);% + \draw[blue, line width=3pt] (C\ColonneDomino)--(D\ColonneDomino);% % point pour placer les cartes \foreach \i in {0,...,\fpeval{\ColonneDomino-1}}{% \foreach \j in {0,...,\fpeval{\LigneDomino-1}}{% - \coordinate[xshift=\margeh+(0.5\textwidth/\ColonneDomino)+\i*\textwidth/\ColonneDomino,yshift=-0.5\textheight/\LigneDomino-\j*\textheight/\LigneDomino] - (Domino\fpeval{\i+\ColonneDomino*\j+1}) at (A0); - } - } - \BODY + \coordinate[xshift=\margeh+(0.5\textwidth/\ColonneDomino)+\i*\textwidth/\ColonneDomino,yshift=-0.5\textheight/\LigneDomino-\j*\textheight/\LigneDomino]% + (Domino\fpeval{\i+\ColonneDomino*\j+1}) at (A0);% + }% + }% + #1 \end{tikzpicture} -} +}{}% -\setKVdefault[Domino]{Couleur=white,Trame,Ratio=0.5,Lignes=7,Colonnes=5,Superieur=false,Logo=false,Image=tiger.pdf} +\setKVdefault[Domino]{Couleur=white,Trame,Ratio=0.5,Lignes=7,Colonnes=5,Superieur=false,Logo=false,Image=tiger.pdf}% \newcommand\Dominos[2][]{% \useKVdefault[Domino]% \setKV[Domino]{#1}% - \setsepchar[*]{§*/}% + \setsepchar[*]{§*/}\reademptyitems% \readlist*\ListeDominos{#2}% \xdef\CouleurDomino{\useKV[Domino]{Couleur}}% \xdef\ratiodomino{\useKV[Domino]{Ratio}}% @@ -85,7 +85,7 @@ \xdef\ColonneDomino{\useKV[Domino]{Colonnes}}% \ifboolKV[Domino]{Trame}{% \clearpage - \begin{TrameDomino} + \begin{TrameDomino}% \foreach\i in {1,...,\fpeval{\LigneDomino*\ColonneDomino}}{% \node[] at (Domino\i){% \ifboolKV[Domino]{Superieur}{% @@ -97,18 +97,18 @@ \ListeDominos[\i,1]\tcblower\ListeDominos[\i,2]% \end{MyDominoMini}% }% - }; + };% }% \end{TrameDomino}% \ifboolKV[Domino]{Logo}{% \clearpage - \begin{TrameDomino} + \begin{TrameDomino}% \foreach\i in {1,...,\fpeval{\LigneDomino*\ColonneDomino}}{% \node at (Domino\i){% \begin{MyDominoLogo}% \includegraphics[height=\tcbtextheight]{\useKV[Domino]{Image}} \end{MyDominoLogo}% - }; + };% }% \end{TrameDomino}% }{}% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex b/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex new file mode 100644 index 00000000000..e395500a3c3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/profcollege/PfCDontCountDots.tex @@ -0,0 +1,197 @@ +% D'après twitter : https://twitter.com/DavidKButlerUoA/status/1700612346258002030/photo/1 +\setKVdefault[NCPP]{Largeur=5,Longueur=7,Unite=5mm,Rayon=1mm,Multiple=3,Couleur=black,Solution=false,Graines=false}% +\defKV[NCPP]{Graine=\setKV[NCPP]{Graines}\PfCGraineAlea{#1}}% + +\newtoks\tokcentre% +\def\updatetokscentre#1\nil{\addtotok\tokcentre{#1,}}% + +\NewDocumentCommand\NeComptePasPoints{o}{% + \tokcentre{}% + \useKVdefault[NCPP]% + \setKV[NCPP]{#1}% + % on crée la liste de tous les numéros des points. + \def\NCPPLongueur{\useKV[NCPP]{Longueur}}% + \def\NCPPLargeur{\useKV[NCPP]{Largeur}}% + \xdef\PfCFooListeCentres{1}% + \xintFor* ##1 in{\xintSeq{2}{\fpeval{\NCPPLargeur*\NCPPLongueur}}}\do{% + \xdef\PfCFooListeCentres{\PfCFooListeCentres,##1}% + }% + \ChoixAlea{\fpeval{ceil(0.6*\NCPPLargeur*\NCPPLongueur)}}{\fpeval{floor(0.8*\NCPPLargeur*\NCPPLongueur)}}{\Titi}% + \MelangeListe{\PfCFooListeCentres}{\Titi}% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeCentres{\faa}% + \ignoreemptyitems% + \foreachitem\compteur\in\ListeCentres{\expandafter\updatetokscentre\compteur\nil}% + \modulo{\Titi}{\useKV[NCPP]{Multiple}}% + \ifboolKV[NCPP]{Solution}{% + Il faut faire des paquets de \useKV[NCPP]{Multiple} points. Il existe plusieurs schémas expliquant la réponse. En voici un qui regroupe tous les points. + }{% + \textbf{Ne Compte pas les points !}\\ + Montre que le nombre de points \ifnum\remainder=0\relax% + est + \else + n'est pas\fi{} un multiple de \num{\useKV[NCPP]{Multiple}}. + }% + \begin{center} + \BuildNCPP{\the\tokcentre}% + \end{center} + \ifboolKV[NCPP]{Solution}{% + En faisant des paquets de \useKV[NCPP]{Multiple} points, on montre que le nombre de points \ifnum\remainder=0\relax% + est + \else + n'est pas\fi{} un multiple de \num{\useKV[NCPP]{Multiple}}. + }{}% +}% + +\NewDocumentCommand\BuildNCPP{m}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + Unite=\useKV[NCPP]{Unite}; + Rayon=\useKV[NCPP]{Rayon}; + Longueur=\useKV[NCPP]{Longueur}; + Largeur=\useKV[NCPP]{Largeur}; + Multiple=\useKV[NCPP]{Multiple}; + + boolean Choisi,Graines,Solution; + Solution=\useKV[NCPP]{Solution}; + + color CouleurCercle; + CouleurCercle=\useKV[NCPP]{Couleur}; + + TotalPoints=Longueur*Largeur; + + nbnoir:=0;%compte les noirs + nbblanc:=0;%compte les blancs + zr:=0;%pour compter les centres des points + + vardef Allumage(text t)= + nbnoirs:=0; + for p_=t: + nbnoirs:=nbnoirs+1; + Allume[p_]:=true; + fill cercles(A[p_],Rayon) withcolor CouleurCercle; + endfor; + enddef; + + pair A[]; + + boolean Allume[]; + for k=0 upto Largeur-1: + for l=1 upto Longueur: + Allume[k*Longueur+l]=false; + A[k*Longueur+l]=Unite*(l,-k); + endfor; + endfor; + + Allumage(#1); + + if Solution: + nbdeplaces:=0; + zmontant=0; + zdescendant=TotalPoints; + for k=0 upto Largeur-1: + for l=1 upto Longueur: + zmontant:=zmontant+1; + if zmontant<zdescendant: + if Allume[zmontant]: + forever: exitif Allume[zdescendant]=false; + zdescendant:=zdescendant-1; + endfor; + nbdeplaces:=nbdeplaces+1; + if (zdescendant>zmontant) and (nbdeplaces<nbnoirs): + Allume[zmontant]:=false; + Allume[zdescendant]:=true; + fill cercles(A[zmontant],Rayon) withcolor white; + fill cercles(A[zdescendant],Rayon) withcolor LightSteelBlue; +% label.top(TEX("?"),A[zdescendant]); + zdescendant:=zdescendant-1; + fi; + fi; + fi; + endfor; + endfor; + % + %nbcases:=0; + %for k=0 upto Largeur-1: + %for l=1 upto Longueur: + %nbcases:=nbcases+1; + %if Allume[nbcases]: + %fill cercles(A[nbcases],Rayon) withcolor Gold; + %fi; + %endfor; + %endfor; + etape=1; + forever: exitif Allume[etape]=true; + etape:=etape+1; + endfor; +% label.top(TEX("!"),A[etape]); + for k=0 upto (TotalPoints-etape): + if ((k+1) mod Multiple)=0: + draw (A[etape+k]+Unite*(-0.25,-0.25))--(A[etape+k]+Unite*(0.25,0.25)); + fi; + endfor; + for k=1 upto ((TotalPoints-etape-Multiple+1) mod Multiple): + fill cercles(A[TotalPoints-k+1],Rayon) withcolor red; + endfor; + fi; + \end{mplibcode} + \else + \begin{mpost}[mpsettings={Unite=\useKV[NCPP]{Unite};Rayon=\useKV[NCPP]{Rayon};Longueur=\useKV[NCPP]{Longueur};Largeur=\useKV[NCPP]{Largeur};Multiple=\useKV[NCPP]{Multiple};boolean Solution;Solution=\useKV[NCPP]{Solution};color CouleurCercle;CouleurCercle=\useKV[NCPP]{Couleur};}] + TotalPoints=Longueur*Largeur; + % + nbnoir:=0;%compte les noirs + nbblanc:=0;%compte les blancs + zr:=0;%pour compter les centres des points + % + vardef Allumage(text t)= + for p_=t: + Allume[p_]:=true; + fill cercles(A[p_],Rayon) withcolor CouleurCercle; + endfor; + enddef; + % + pair A[]; + % + boolean Allume[]; + for k=0 upto Largeur-1: + for l=1 upto Longueur: + Allume[k*Longueur+l]=false; + A[k*Longueur+l]=Unite*(l,-k); + endfor; + endfor; + % + Allumage(#1); + % + if Solution: + zmontant=0; + zdescendant=TotalPoints; + for k=0 upto Largeur-1: + for l=1 upto Longueur: + zmontant:=zmontant+1; + if zmontant<zdescendant: + if Allume[zmontant]: + forever: exitif Allume[zdescendant]=false; + zdescendant:=zdescendant-1; + endfor; + if zdescendant>zmontant: + fill cercles(A[zmontant],Rayon) withcolor white; + fill cercles(A[zdescendant],Rayon) withcolor LightSteelBlue; + zdescendant:=zdescendant-1; + fi; + fi; + fi; + endfor; + endfor; + for k=0 upto (TotalPoints-zdescendant): + if ((k+1) mod Multiple)=0: + drawarrow A[zdescendant+k+1]--(A[zdescendant+k+1]+Unite*(0.5,0)); + fi; + endfor; + for k=1 upto ((TotalPoints-zdescendant) mod Multiple): + fill cercles(A[TotalPoints-k+1],Rayon) withcolor red; + endfor; + fi; + \end{mpost} + \fi +}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex index 188bd3a5695..3d7a324b732 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcrireunQCM.tex @@ -1,148 +1,233 @@ %%% % QCM %%% -\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15}% +\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=60pt,Couleur=gray!15,Titre=false,Nom=R\'eponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false,Parties={Yeux,Nez,Bouche},CouleurAlt=gray!15,Seul=false}% \newlength{\LargeurQCM}% \newlength{\PfCLargeurQCM}% \newcounter{QuestionQCM}% \newcounter{TitreQCM}% % +\newcounter{TotalQCMSeul}% +\newcounter{TotalQCMSeulSol}% +\setcounter{TotalQCMSeul}{0}% +\setcounter{TotalQCMSeulSol}{0}% +% +\setKVdefault[QCMSeul]{Melange=false,Solution=false,EnColonne=false}% +\defKV[QCMSeul]{Colonnes=\setKV[QCMSeul]{EnColonne}}% +% +\NewDocumentCommand\PfCQCMSChoixLabelSol{m}{% + \xdef\PfCFooChoixLabel{\ListeQCM[\ListeQCMlen]}% + \setsepchar{-}% + \readlist*\PfCSolListeReponses{\PfCFooChoixLabel}% + \xdef\RetiensSiSol{0}% + \xintFor* ##3 in{\xintSeq{1}{\PfCSolListeReponseslen}}\do{% + \ifnum#1=\PfCSolListeReponses[##3]\relax% + \xdef\RetiensSiSol{\fpeval{\RetiensSiSol+1}}% + \fi% + }% + \ifnum\RetiensSiSol>0\relax% + $\blacksquare$% + \else% + $\square$% + \fi% +}% + +\NewDocumentCommand\QCMSeul{om}{% + \useKVdefault[QCMSeul]% + \setKV[QCMSeul]{#1}% + \setsepchar{&}\ignoreemptyitems% + \readlist*\ListeQCM{#2}% + % on définit une liste ordonnées des numéros d'items. Elle est utilisée par défaut. + \xdef\PfCFooListePermute{1}% + \xintFor* ##1 in{\xintSeq{2}{\fpeval{\ListeQCMlen-2}}}\do{% + \xdef\PfCFooListePermute{\PfCFooListePermute,##1}% + }% + % + \ifboolKV[QCMSeul]{Melange}{% + \ifboolKV[QCMSeul]{Solution}{% + \stepcounter{TotalQCMSeulSol}% + \expandafter\xdef\csname PfCQCMSListeAv\endcsname{\csname PfCQCMSListe\Roman{TotalQCMSeulSol}\endcsname}% + % La liste restaurée est \PfCQCMSListeAv + }{% + \stepcounter{TotalQCMSeul}% + \MelangeListe{\PfCFooListePermute}{\fpeval{\ListeQCMlen-2}}% + \expandafter\xdef\csname PfCQCMSListe\Roman{TotalQCMSeul}\endcsname{\faa}% + % La liste exportée est \faa + \expandafter\xdef\csname PfCQCMSListe\endcsname{\faa}% + }% + }{% + \ifboolKV[QCMSeul]{Solution}{% + \expandafter\xdef\csname PfCQCMSListeAv\endcsname{\csname PfCFooListePermute\endcsname}% + }{% + \expandafter\xdef\csname PfCQCMSListe\endcsname{\PfCFooListePermute}% + }% + }% + \setsepchar{,}\ignoreemptyitems% + \ifboolKV[QCMSeul]{Solution}{% + \readlist*\ListeEnumerate{\PfCQCMSListeAv}% + }{% + \readlist*\ListeEnumerate{\PfCQCMSListe}% + }% + % On écrit + \ListeQCM[1]% + \ifboolKV[QCMSeul]{EnColonne}{\begin{multicols}{\useKV[QCMSeul]{Colonnes}}}{}% + \begin{itemize}[label=$\square$] + \xintFor* ##1 in{\xintSeq{2}{\fpeval{\ListeQCMlen-1}}}\do{% + \xdef\Titi{\ListeEnumerate[\fpeval{##1-1}]} + \ifboolKV[QCMSeul]{Solution}{% + \item[\PfCQCMSChoixLabelSol{\Titi}] \ListeQCM[\fpeval{\Titi+1}] + }{% + \item \ListeQCM[\fpeval{\Titi+1}] + }% + }% + \end{itemize} + \ifboolKV[QCMSeul]{EnColonne}{\end{multicols}}{}% +}% +% \ifdef{\QCM}{% \PackageWarning{ProfCollege}{La commande \noexpand\QCM étant définie par la classe du document, ProfCollege modifie sa commande \noexpand\QCM en \noexpand\QCMPfC.}% \newcommand\QCMPfC[2][]{% \useKVdefault[ClesQCM]% \setKV[ClesQCM]{#1}% - \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}% - \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}% - \setcounter{TitreQCM}{0} - \setsepchar[*]{,*&}\ignoreemptyitems% - \readlist*\ListeQCM{#2}% - \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% - \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% - \ifboolKV[ClesQCM]{Multiple}{% - \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% - \xdef\ListeNom{\useKV[ClesQCM]{Noms}}% - \setsepchar[*]{/}% - \readlist*\ListeNomsMul{\ListeNom}% - \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% - \cline{2-\NBcases}% - \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ListeNomsMul[##2]}% - \\ - \hline% - \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% - \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}% - }\\ - }% - \hline% - \end{tabular}% - \renewcommand{\arraystretch}{1}% + \ifboolKV[ClesQCM]{Seul}{% + \QCMSeul[#1]{#2}% }{% - \ifboolKV[ClesQCM]{VF}{% - \setKV[ClesQCM]{Reponses=2}% -% \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% - \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}% - \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}% - \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}% + \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}% + \setcounter{TitreQCM}{0} + \setsepchar[*]{,*&}\ignoreemptyitems% + \readlist*\ListeQCM{#2}% + \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% + \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \ifboolKV[ClesQCM]{Multiple}{% + \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% + \xdef\ListeNom{\useKV[ClesQCM]{Noms}}% + \setsepchar[*]{/}% + \readlist*\ListeNomsMul{\ListeNom}% \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% \cline{2-\NBcases}% - \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\ - \hline% - \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% - \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}% - }\\ - }% - \hline% - \end{tabular} - }{% - \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% - \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% - \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}% \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}% + &\ListeNomsMul[##2]}% \\ - }{} \hline% \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}% }\\ }% \hline% \end{tabular}% + \renewcommand{\arraystretch}{1}% + }{% + \ifboolKV[ClesQCM]{VF}{% + \setKV[ClesQCM]{Reponses=2}% + % \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% + \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}% + \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}% + \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% + \cline{2-\NBcases}% + \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\ + \hline% + \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% + \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}% + }\\ + }% + \hline% + \end{tabular} + }{% + \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% + \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% + \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}% + \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}% + \\ + }{} + \hline% + \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% + \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,##2+1]% + }\\ + }% + \hline% + \end{tabular}% + }% }% + \renewcommand{\arraystretch}{1}% }% - \renewcommand{\arraystretch}{1}% }% }{% \newcommand\QCM[2][]{% \useKVdefault[ClesQCM]% \setKV[ClesQCM]{#1}% - \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}% - \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}% - \setcounter{TitreQCM}{0} - \setsepchar[*]{,*&}\ignoreemptyitems% - \readlist*\ListeQCM{#2}% - \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% - \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% - \ifboolKV[ClesQCM]{Multiple}{% - \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% - \xdef\ListeNom{\useKV[ClesQCM]{Noms}}% - \setsepchar[*]{/}% - \readlist*\ListeNomsMul{\ListeNom}% - \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% - \cline{2-\NBcases}% - \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ListeNomsMul[##2]}% - \\ - \hline% - \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% - \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}% - }\\ - }% - \hline% - \end{tabular}% - \renewcommand{\arraystretch}{1}% + \ifboolKV[ClesQCM]{Seul}{% + \QCMSeul[#1]{#2}% }{% - \ifboolKV[ClesQCM]{VF}{% - \setKV[ClesQCM]{Reponses=2}% - \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}% - \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}% - \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \colorlet{PfCCouleurAlterneQCM}{\useKV[ClesQCM]{CouleurAlt}}% + \setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}% + \setcounter{TitreQCM}{0} + \setsepchar[*]{,*&}\ignoreemptyitems% + \readlist*\ListeQCM{#2}% + \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}% + \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \ifboolKV[ClesQCM]{Multiple}{% + \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% + \xdef\ListeNom{\useKV[ClesQCM]{Noms}}% + \setsepchar[*]{/}% + \readlist*\ListeNomsMul{\ListeNom}% \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% \cline{2-\NBcases}% - \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\ - \hline% - \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% - \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}% - }\\ - }% - \hline% - \end{tabular} - }{% - \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% - \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}% - \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% - \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}% \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}% + &\ListeNomsMul[##2]}% \\ - }{}% \hline% \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% - &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]==1}{$\boxtimes$}{$\square$}}{$\square$}% }\\ }% \hline% \end{tabular}% + \renewcommand{\arraystretch}{1}% + }{% + \ifboolKV[ClesQCM]{VF}{% + \setKV[ClesQCM]{Reponses=2}% + \setlength{\PfCLargeurQCM}{\useKV[ClesQCM]{Largeur}}% + \setlength{\LargeurQCM}{\linewidth-6\tabcolsep-2\PfCLargeurQCM-4\arrayrulewidth}% + \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}% + \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% + \cline{2-\NBcases}% + \multicolumn{1}{c|}{}&\useKV[ClesQCM]{NomV}&\useKV[ClesQCM]{NomF}\\ + \hline% + \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% + \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2==\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}% + }\\ + }% + \hline% + \end{tabular} + }{% + \setlength{\LargeurQCM}{\fpeval{(\linewidth-2*\tabcolsep-\useKV[ClesQCM]{Reponses}*(2*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}% + \xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}% + \begin{tabular}{|p{\LargeurQCM}|*{\useKV[ClesQCM]{Reponses}}{>{\centering\arraybackslash}p{\useKV[ClesQCM]{Largeur}}|}}% + \ifboolKV[ClesQCM]{Titre}{\cline{2-\NBcases}% + \multicolumn{1}{c|}{}\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\stepcounter{TitreQCM}\useKV[ClesQCM]{Nom} \ifboolKV[ClesQCM]{AlphT}{\Alph{TitreQCM}}{##2}}% + \\ + }{}% + \hline% + \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{% + \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{% + &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{PfCCouleurAlterneQCM}\fi}{}\ifboolKV[ClesQCM]{Solution}{\PfCSolCellColor{##1}{##2}}{}\ListeQCM[##1,\fpeval{##2+1}]% + }\\ + }% + \hline% + \end{tabular}% + }% }% + \renewcommand{\arraystretch}{1}% }% - \renewcommand{\arraystretch}{1}% }% }% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex index a2cd50db028..11ae58b5b71 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureLettres.tex @@ -1,26 +1,26 @@ %%% % Ecriture des nombres en lettres %%% -\setKVdefault[ClesEcriture]{Math=false,Majuscule=false,E=false,Tradition=false,Zero=false} +\setKVdefault[ClesEcriture]{Math=false,Majuscule=false,E=false,Tradition=false,Zero=false}% \newcommand\EcriturePluriel[1]{% \xintifboolexpr{#1 > 1}{s}{}% -} +}% \newcommand\EcritureDecimale{% \StrLen{\ListeEcriture[2]}[\LongueurDecimale]% \xintifboolexpr{\LongueurDecimale == 6}{% ~millionième\EcriturePluriel{\ListeEcriture[2]}% }{\xintifboolexpr{\LongueurDecimale == 5}{% - ~cent-millième\EcriturePluriel{\ListeEcriture[2]} + ~cent-millième\EcriturePluriel{\ListeEcriture[2]}% }{\xintifboolexpr{\LongueurDecimale == 4}{% - ~dix-millième\EcriturePluriel{\ListeEcriture[2]} + ~dix-millième\EcriturePluriel{\ListeEcriture[2]}% }{\xintifboolexpr{\LongueurDecimale == 3}{% - ~millième\EcriturePluriel{\ListeEcriture[2]} + ~millième\EcriturePluriel{\ListeEcriture[2]}% }{\xintifboolexpr{\LongueurDecimale == 2}{% - ~centième\EcriturePluriel{\ListeEcriture[2]} + ~centième\EcriturePluriel{\ListeEcriture[2]}% }{\xintifboolexpr{\LongueurDecimale == 1}{% - ~dixième\EcriturePluriel{\ListeEcriture[2]} + ~dixième\EcriturePluriel{\ListeEcriture[2]}% }{}% }% }% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex index d146f5fd843..c4503954b3b 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEcritureUnites.tex @@ -1,7 +1,7 @@ %%% % Ecritures d'unit\'es %%% -\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false,Nombre,US=false,UK=false,Precision=2}% +\setKVdefault[Unites]{m=false,km=false,hm=false,ha=false,dam=false,a=false,dm=false,cm=true,mm=false,um=false,nm=false,g=true,t=false,q=false,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,ug=false,ng=false,mmin=false,kmh=true,kms=false,ms=false,mh=false,kgm=false,gcm=true,L=true,kL=false,hL=false,daL=false,dL=false,cL=false,mL=false,l=true,kl=false,hl=false,dal=false,dl=false,cl=false,ml=false,Go=true,Mo=false,ko=false,To=false,o=false,kWh=true,C=true,K=false,F=false,Nombre,US=false,UK=false,CFA=false,CFP=false,CHF=false,Euro=false,Precision=2}% \defKV[Unites]{Dots=\setKV[Unites]{Nombre=false}}% \newlength{\PfCLgUnites} @@ -170,37 +170,45 @@ }% }% -%Pour mémoire au cas où... -%\newcommand\Prixo[2][2]{% -% \SI[round-mode=places,round-precision=#1]{#2}{\EuRo}% -%} - -%\NewDocumentCommand\Prix{o O{2} m}{% -% \useKVdefault[Unites]% -% \setKV[Unites]{#1}% -% \ifboolKV[Unites]{Nombre}{% -% \SI[round-mode=places,round-precision=#2]{#3}{\EuRo}% -% }{% -% \setlength{\PfCLgUnites}{\useKV[Unites]{Dots}} -% \pointilles[\PfCLgUnites]~\si{\EuRo}% -% }% -%}% - +\makeatletter \NewDocumentCommand\Prix{o m}{% \useKVdefault[Unites]% \setKV[Unites]{#1}% - \ifboolKV[Unites]{US}{% - \DeclareSIUnit{\Tempo}{\Dollar}% + \ifboolKV[Unites]{CHF}{% + \DeclareSIUnit{\Tempo}{\PfCCHF}% }{% - \ifboolKV[Unites]{UK}{% - \DeclareSIUnit{\Tempo}{\LivreSterling}% + \ifboolKV[Unites]{CFA}{% + \DeclareSIUnit{\Tempo}{\PfCCFA}% }{% - \DeclareSIUnit{\Tempo}{\EuRo}% + \ifboolKV[Unites]{CFP}{% + \DeclareSIUnit{\Tempo}{\PfCCFP}% + }{% + \ifboolKV[Unites]{US}{% + \DeclareSIUnit{\Tempo}{\Dollar}% + }{% + \ifboolKV[Unites]{UK}{% + \DeclareSIUnit{\Tempo}{\LivreSterling}% + }{% + \ifboolKV[Unites]{Euro}{% + \DeclareSIUnit{\Tempo}{\EuRo}% + }{% + \if@CHF% + \setKV[Unites]{CHF}% + \fi% + \DeclareSIUnit{\Tempo}{\DeviseDefaut}% + }% + }% + }% + }% }% }% \ifboolKV[Unites]{Nombre}{% \IfInteger{#2}{% - \SI{#2}{\Tempo}% + \ifboolKV[Unites]{CHF}{% + \si{\PfCCHF}~\num{#2}.-% + }{% + \SI{#2}{\Tempo}% + }% }{% \SI[round-mode=places,round-precision=\useKV[Unites]{Precision}]{#2}{\Tempo}% }% @@ -209,6 +217,31 @@ \pointilles[\PfCLgUnites]~\si{\Tempo}% }% }% +\makeatother + +%\NewDocumentCommand\Prixold{o m}{% +% \useKVdefault[Unites]% +% \setKV[Unites]{#1}% +% \ifboolKV[Unites]{US}{% +% \DeclareSIUnit{\Tempo}{\Dollar}% +% }{% +% \ifboolKV[Unites]{UK}{% +% \DeclareSIUnit{\Tempo}{\LivreSterling}% +% }{% +% \DeclareSIUnit{\Tempo}{\EuRo}% +% }% +% }% +% \ifboolKV[Unites]{Nombre}{% +% \IfInteger{#2}{% +% \SI{#2}{\Tempo}% +% }{% +% \SI[round-mode=places,round-precision=\useKV[Unites]{Precision}]{#2}{\Tempo}% +% }% +% }{% +% \setlength{\PfCLgUnites}{\useKV[Unites]{Dots}}% +% \pointilles[\PfCLgUnites]~\si{\Tempo}% +% }% +%}% \NewDocumentCommand\Octet{o m}{% \useKVdefault[Unites]% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex index 86d323139eb..df5743e4399 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEngrenagesBase.tex @@ -4,9 +4,11 @@ \newtoks\tokPfCEngrenages% \def\UpdatetoksEngrenages#1/#2\nil{\addtotok\tokPfCEngrenages{#1,#2,}}% -\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm} +\setKVdefault[Engrenages]{Couleur=LightSteelBlue,Unite=3mm,ListeCouleurs={LightSteelBlue}} \NewDocumentCommand\Engrenages{o m}{% + \newtoks\toklistecouleur% + \toklistecouleur{}% \tokPfCEngrenages{} \useKVdefault[Engrenages]% \setKV[Engrenages]{#1}% @@ -18,12 +20,28 @@ \foreachitem\compteur\in\ListePfCEngrenages{% \xdef\PfCFooEngrenages{\PfCFooEngrenages \ListePfCEngrenages[\compteurcnt,1],\ListePfCEngrenages[\compteurcnt,2],}% }% - \BuildEngrenages{\PfCFooEngrenages}% + \xdef\ListeAvantCouleurs{\useKV[Engrenages]{ListeCouleurs}}% + \readlist*\ListeCouleur{\ListeAvantCouleurs}% + \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}% + \BuildEngrenages{\PfCFooEngrenages}{\the\toklistecouleur}% }% -\def\BuildEngrenagesCode#1{% +\def\BuildEngrenagesCode#1#2{% u:=\useKV[Engrenages]{Unite}; CouleurEngrenage=\useKV[Engrenages]{Couleur}; +% + vardef RecuperationCouleurs(text t)= + color Col[]; + n:=0; + for p_=t: + n:=n+1; + if color p_: + Col[n]=p_; + else: + Col[n]=CouleurEngrenage; + fi; + endfor; + enddef; % vardef LectureDonnees(text t)= n:=0;k=0;l=0; @@ -39,17 +57,26 @@ endfor; enddef; % + RecuperationCouleurs(#2); LectureDonnees(#1); % pair K; K=(0,0); picture EngrenageFinal; EngrenageFinal=image( + if unknown Col[1]: + else: + CouleurEngrenage:=Col[1]; + fi; trace Engrenage(Mm[1],Zz[1],(0,0)); % Signe=1; % for w=2 upto (n div 2): + if unknown Col[w]: + else: + CouleurEngrenage:=Col[w]; + fi; K:=K+pointarc(cercles((0,0),u*Mm[w]*(Zz[w-1]+Zz[w])*0.5+0.04*u),0); AngleRot[w]:=360/(2*Zz[w]); if w=2: @@ -77,16 +104,16 @@ ); } -\NewDocumentCommand\BuildEngrenages{m}{% +\NewDocumentCommand\BuildEngrenages{mm}{% \ifluatex \mplibforcehmode \begin{mplibcode} input PfCEngrenages; - \BuildEngrenagesCode{#1} + \BuildEngrenagesCode{#1}{#2} trace EngrenageFinal; \end{mplibcode} \else - \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}}] + \begin{mpost}[mpsettings={input PfCEngrenages;\BuildEngrenagesCode{#1}{#2}}] trace EngrenageFinal; \end{mpost} \fi diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex b/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex index bcaeaa7a6a5..192e470e66b 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCEratosthene.tex @@ -1,25 +1,25 @@ -\setKVdefault[ClesEra]{Premier=false,Nombre=1,CouleurP=Cornsilk!50,CouleurNP=Crimson!15,Colonnes=10,Lignes=10,Hauteur=24pt} +\setKVdefault[ClesEra]{Premier=false,Nombre=1,CouleurP=Cornsilk!50,CouleurNP=Crimson!15,Colonnes=10,Lignes=10,Hauteur=24pt}% \NewDocumentCommand\TestPremier{m}{% % #1 le nombre premier \`a tester \newcount\anp\newcount\bnp\newcount\cnp% - \anp=#1\relax - \bnp=2\relax - \premier=-1\relax + \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 + \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% \setKV[ClesEra]{Premier=true}% - \else + \else% \setKV[ClesEra]{Premier=false}% \fi% }% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex index 700fb9906b3..823f2036237 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCFactorisation.tex @@ -1,4 +1,4 @@ -\setKVdefault[Facto]{Aide=false,AideMul=false,Couleur=Crimson,NomExpression=A,Lettre=x,Details,Formel=false,VariableSup=false,ParenthesesFin=false,Finale=false} +\setKVdefault[Facto]{Aide=false,AideMul=false,Couleur=Crimson,NomExpression=A,Lettre=x,Details,Formel=false,VariableSup=false,ParenthesesFin=false,Finale=false,Type=0} \defKV[Facto]{Litteral=\setKV[Facto]{Details=false}} \defKV[Facto]{AutreVariable=\setKV[Facto]{VariableSup}} \defKV[Facto]{Resultat=\setKV[Facto]{Finale}} @@ -86,7 +86,7 @@ \end{align*} } \else%k*a+-k*b=k(a+-b) - \#3 #3 -- \#4 #4 -- \#5 #5 +% \#3 #3 -- \#4 #4 -- \#5 #5 \begin{CAS} % La variable vars('\useKV[Facto]{Lettre}'\ifboolKV[Facto]{VariableSup}{% @@ -121,16 +121,55 @@ }{%Avec au moins un des facteurs polynomes \StrCompare{\PfCFactoSymbole}{-}[\PfCRetiensSigneFacteurDeux]% \StrChar{#5}{1}[\RetiensPremierCaractere]%en cas de deuxième terme écrit b-ax - \begin{align*} - \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}% - \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\ - \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\ - \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\ - \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}% - \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}% - \end{align*} - } - \fi + \ifnum\fpeval{\useKV[Facto]{Type}}=1\relax + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \begin{align*} + \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}% + \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}% + \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}% + \end{align*} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \else + \ifnum\fpeval{\useKV[Facto]{Type}}=3\relax + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \begin{align*} + \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\\\setKV[Facto]{Aide}}{}% + \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}}{\PfCEcrireFacteur{#4}{Ka}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}}\setKV[Facto]{Aide=false}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}% + \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}% + \end{align*} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \else + \ifnum\fpeval{\useKV[Facto]{Type}}=2\relax + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \begin{align*} + \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}\\\setKV[Facto]{Aide}}{}% + \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}\times\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#3}{Kk}}\setKV[Facto]{Aide=false}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}% + \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}% + \end{align*} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \else + \begin{align*} + \ifboolKV[Facto]{Aide}{\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}\\\setKV[Facto]{Aide}}{}% + \PfCFactoNE&=\ifboolKV[Facto]{Aide}{\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#4}{Ka}}}_{a}\PfCFactoSymbole\underbrace{\Fdash{\PfCEcrireFacteur{#3}{Kk}}}_{k}\times\underbrace{\Fdash{\PfCEcrireFacteur{#5}{Kb}}}_{b}}{\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{AideMul}{\times}{}\PfCEcrireFacteur{#5}{Kb}}\setKV[Facto]{Aide=false}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\left[\PfCEcrireFacteur{#4}{Ka}\PfCFactoSymbole\PfCEcrireFacteur{#5}{Kb}\right]\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ka}\xintifboolexpr{\PfCRetiensSigneFacteurDeux==1}{\xintifboolexpr{\TestCASB<0}{\IfDecimal{\RetiensPremierCaractere}{+}{}}{+}\print{Kb}}{\xintifboolexpr{\TestCASB<0}{+}{}\print{Ko}}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}\\ + \PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\times\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}% + \ifboolKV[Facto]{Finale}{\\\PfCFactoNE&=\useKV[Facto]{Resultat}}{\ifboolKV[Facto]{Formel}{\\\PfCFactoNE&=\setKV[Facto]{Aide=false}\PfCEcrireFacteur{#3}{Kk}\ifboolKV[Facto]{ParenthesesFin}{\left(}{\left[}\print{Ke:expand():topolynomial()}\ifboolKV[Facto]{ParenthesesFin}{\right)}{\right]}}{}}% + \end{align*} + \fi% + \fi% + \fi% + }% + \fi% }% \NewDocumentCommand\Factorisationold{sommm}{% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex b/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex index b9ff48e1765..77c683b1486 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCFonctionAffine.tex @@ -1,7 +1,7 @@ %%% % Fonction Affine %%% -\setKVdefault[ClesAffine]{Nom=f,Variable=x,CoefDir=a,OrdoOrig=b,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false}%ACoefficient=false%: inutile ? +\setKVdefault[ClesAffine]{Nom=f,Variable=x,CoefDir=a,OrdoOrig=b,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false,Centre=false}%ACoefficient=false%: inutile ? \newcommand\FonctionAffine[5][]{% % #1 nombre ou abscisse premier point @@ -33,7 +33,7 @@ \ifboolKV[ClesAffine]{ProgCalcul}{% La fonction affine $\useKV[ClesAffine]{Nom}$ est d\'efinie par : \begin{align*} - \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}} + \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}}. \end{align*} Nous cherchons le nombre $\useKV[ClesAffine]{Variable}$ tel que son image par la fonction $\useKV[ClesAffine]{Nom}$ soit $\num{#2}$. Donc on obtient : \begin{align*} @@ -45,7 +45,7 @@ $\useKV[ClesAffine]{Variable}$ tel que $\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\num{#2}$. Or, la fonction $\useKV[ClesAffine]{Nom}$ est d\'efinie par : \[% - \useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#3==0}{}{\num{#3}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#3==0}{\num{#4}}{\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}} + \useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#3==0}{}{\num{#3}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#3==0}{\num{#4}}{\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}}. \] Par cons\'equent, on a : \begin{align*} @@ -90,9 +90,22 @@ \ifboolKV[ClesAffine]{Redaction}{% \xintifboolexpr{#2==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction constante, alors sa repr\'esentation graphique est une droite parall\`ele \`a l'axe des abscisses passant par le point de coordonn\'ees $(0;\num{#3})$.}% - {\xintifboolexpr{#3==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction lin\'eaire, alors sa repr\'esentation graphique est une droite passant par l'origine du rep\`ere.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonctionA{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonctionA,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$. + {\xintifboolexpr{#3==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction lin\'eaire, alors sa repr\'esentation graphique est une droite passant par l'origine du rep\`ere.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonctionA{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonctionA,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4}\,;\,\num{\fpeval{#2*#4+#3}})$. }{% - Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa repr\'esentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomVariable{\useKV[ClesAffine]{Variable}}\xdef\NomFonction{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$.\\Je choisis \setKV[ClesAffine]{Variable=\NomVariable}$\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#4}. On place le point de coordonn\'ees $(\num{#5};\num{\fpeval{#2*#5+#3}})$.% + Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa repr\'esentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est % + \xdef\NomVariable{\useKV[ClesAffine]{Variable}}\xdef\NomFonction{\useKV[ClesAffine]{Nom}}% + \ifboolKV[ClesAffine]{Centre}{: \[ + \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. + \]}{% + \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. % + }% + On place le point de coordonn\'ees $(\num{#4}\,;\,\num{\fpeval{#2*#4+#3}})$.\\Je choisis \setKV[ClesAffine]{Variable=\NomVariable}$\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est % + \ifboolKV[ClesAffine]{Centre}{: \[ + \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#5}. + \]}{% + \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#5}. % + }% + On place le point de coordonn\'ees $(\num{#5}\,;\,\num{\fpeval{#2*#5+#3}})$.% }% }% }% @@ -103,9 +116,10 @@ \def\MPFonctionAffine#1#2#3#4#5#6#7{% % #1 Unitex #2 Unitey - % #2 a pour f1 - #4 b pour f1 - % #5 abscisse du premier point - % #6 abscisse du deuxi\`eme point + % #3 a pour f1 - #4 b pour f1 + % #5 abscisse du premier point + % #6 abscisse du deuxi\`eme point + % #7 on affiche ou pas la lecture du coef directeur \ifluatex \mplibforcehmode \begin{mplibcode} @@ -155,14 +169,14 @@ %On trace les axes drawarrow (XMin*unitex,0)--(XMax*unitex,0); drawarrow (0,YMin*unitey)--(0,YMax*unitey); - label.llft(btex O etex,(0,0)); - dotlabel.bot(btex 1 etex,(unitex,0)); - dotlabel.lft(btex 1 etex,(0,unitey)); + label.llft(TEX("\footnotesize O"),(0,0)); + dotlabel.lrt(TEX("1"),(unitex,0)); + dotlabel.ulft(TEX("1"),(0,unitey)); % On trace la droite pair A[]; A1=(#5*unitex,(#5*#3+(#4))*unitey); A2=(#6*unitex,(#6*#3+(#4))*unitey); - draw 2[A1,A2]--2[A2,A1]; + draw 10[A1,A2]--10[A2,A1]; clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle); %On labellise les points fill (fullcircle scaled 1mm) shifted A1; @@ -171,20 +185,26 @@ draw (xpart(A2),0)--A2--(0,ypart(A2)) dashed evenly; if (#5*#3+(#4))=0: else: + if #5<>1: if (#5*#3+(#4))<0: label.top(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0)); else: label.bot(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0)); fi; fi; + fi; if (#6*#3+(#4))=0: else: if (#6*#3+(#4))<0: + if #6<>1: label.top(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0)); + fi; else: + if #6<>1: label.bot(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0)); fi; fi; + fi; if #3=0: label.urt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1))); else: @@ -192,19 +212,23 @@ if (#5*#3+(#4))=0: else: if (#5*#3+(#4))<0: + if #5<0: label.rt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1))); else: label.lft(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1))); fi; fi; + fi; if (#6*#3+(#4))=0: else: if (#6*#3+(#4))<0: + if #6<0: label.rt(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2))); else: label.lft(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2))); fi; fi; + fi; else: if (#5*#3+(#4))=0: else: @@ -287,7 +311,7 @@ pair A[]; A1=(#5*unitex,(#5*#3+(#4))*unitey); A2=(#6*unitex,(#6*#3+(#4))*unitey); - draw 2[A1,A2]--2[A2,A1]; + draw 10[A1,A2]--10[A2,A1]; clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle); %On labellise les points fill (fullcircle scaled 1mm) shifted A1; diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex index 86811da4ad8..901eb0a54bb 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCLego.tex @@ -22,7 +22,7 @@ \NewDocumentCommand\Lego{o}{% \useKVdefault[Lego]% \setKV[Lego]{#1}% - \xintifboolexpr{\useKV[Lego]{Unite}==1}{% + \xintifboolexpr{\useKV[Lego]{Unite}==1 || \useKV[Lego]{Unique}}{% \xdef\PfCNbCouleurs{1}% }{% \xdef\PfCNbCouleurs{\fpeval{floor(\useKV[Lego]{Unite}/\useKV[Lego]{Diviseur})}}% @@ -38,7 +38,7 @@ \NewDocumentCommand\BuildBarreLego{mm}{% \ifluatex% \mplibforcehmode% - \begin{mplibcode} + \begin{mplibcode}% boolean Plaque,Unique; Plaque=\useKV[Lego]{Plaque}; Unique=\useKV[Lego]{Unique}; @@ -105,9 +105,9 @@ RetiensLego=currentpicture; currentpicture:=nullpicture; draw RetiensLego scaled Echelle; - \end{mplibcode} - \else - \begin{mpost} + \end{mplibcode}% + \else% + \begin{mpost}% input PfCLego; % vardef ChoixCouleur(text t)= @@ -153,6 +153,6 @@ Lego_box(Diviseur,2,Brique[k]); endfor; fi; - \end{mpost} + \end{mpost}% \fi% }%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex index d000fef45b3..117c2a09059 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCNotionFonction.tex @@ -463,6 +463,30 @@ x.u:=#2; else: draw courbe1(MinX,MaxX,25,Lagrange(x)(#1)) withpen pencircle scaled Epaisseur withcolor CoulTrace; fi; + % 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; + %%% 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; diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex b/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex index 9395074379e..216d44d8ec7 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCProgrammeCalcul.tex @@ -28,30 +28,80 @@ \newlength{\PointillesClesProg}% -\newcommand\ProgCalcul[2][]{% - % #1 : cl\'es - % #2 : \'etapes +\NewDocumentCommand\ProgCalcul{som}{% + % #1 : pour l'écriture rapide, linéaire du programme de calcul + % #2 : cl\'es + % #3 : \'etapes \useKVdefault[ClesProg]% - \setKV[ClesProg]{#1}% - \ifboolKV[ClesProg]{ThemePerso}{}{% - \tcbset{ProgCalcul/.style={% - boxsep=1mm, - bottom=.75mm, - middle=2mm, - boxrule={\useKV[ClesProg]{Epaisseur}}, - text width={\useKV[ClesProg]{Largeur}}, - colframe={\useKV[ClesProg]{CouleurCadre}}, - colback={\useKV[ClesProg]{CouleurFond}}, - halign upper=center + \setKV[ClesProg]{#2}% + \IfBooleanTF{#1}{% + \setsepchar[*]{,* }\ignoreemptyitems% + \readlist*\ListeProg{#3}% + \ensuremath{% + \xdef\NbDepart{\ListeProg[1]}% + \ifboolKV[ClesProg]{SansCalcul}{% + \NbDepart\foreachitem\compteur\in\ListeProg[2]{% + \edef\Test{\ListeProg[2,\compteurcnt]}% + \expandarg% + \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\times}[\tempac]% + \StrSubstitute{\tempac}{/}{\div}[\tempad]% + % \hspace{0.2em} + \xrightarrow{\tempad} + % \hspace{0.2em} + \ListeProg[3,\compteurcnt]% + }% + }{% + \num{\NbDepart}~\foreachitem\compteur\in\ListeProg[2]{% + \ifboolKV[ClesProg]{Direct}{% + \edef\Test{\ListeProg[2,\compteurcnt]}% + \expandarg% + \StrSubstitute{\Test}{^}{\empty\dots{}^}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\times}[\tempac]% + \StrSubstitute{\tempac}{/}{\div}[\tempad]% + % \hspace{0.2em} + \xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\compteurcnt]}} + % \hspace{0.2em} + \xrightarrow{\tempad}~\num{\NbDepart}% + }{% + \edef\Test{\ListeProg[2,\compteurcnt]} + \expandarg% + \StrSubstitute{\Test}{^2}{\empty\sqrt{\dots{}}}[\tempa]% + \StrSubstitute{\tempa}{**}{^}[\tempab]% + \StrSubstitute{\tempab}{*}{\div}[\tempac]% + \StrSubstitute{\tempac}{/}{\times}[\tempad]% + \StrSubstitute{\tempad}{-}{+}[\tempae]% + \StrSubstitute{\tempae}{++}{-}[\tempaf]% + %\hspace{0.2em} + \xdef\NbDepart{\fpeval{(\NbDepart)\ListeProg[2,\compteurcnt]}} + % \hspace{0.2em} + \xleftarrow{\tempaf}~\num{\NbDepart}% + }% + }% + } + } + }{% + \ifboolKV[ClesProg]{ThemePerso}{}{% + \tcbset{ProgCalcul/.style={% + boxsep=1mm, + bottom=.75mm, + middle=2mm, + boxrule={\useKV[ClesProg]{Epaisseur}}, + text width={\useKV[ClesProg]{Largeur}}, + colframe={\useKV[ClesProg]{CouleurCadre}}, + colback={\useKV[ClesProg]{CouleurFond}}, + halign upper=center + }% }% }% - }% \ifboolKV[ClesProg]{Application}{% - % % by Thomas Dehon and cp - \setsepchar[*]{§*,} + % % by Thomas Dehon and cp + \setsepchar[*]{§*,}% % \setsepchar[*]{,* }% \ignoreemptyitems% - \readlist*\ListeTotale{#2}% + \readlist*\ListeTotale{#3}% \xdef\PfCPCfoo{\ListeTotale[1]}% \xdef\PfCPCfaa{\ListeTotale[2]}% %% @@ -94,7 +144,7 @@ % by Thomas Dehon \setsepchar[*]{,* }% \ignoreemptyitems% - \readlist*\ListeEtapes{#2}% + \readlist*\ListeEtapes{#3}% \begin{tcolorbox}[% ProgCalcul,% ] @@ -118,7 +168,7 @@ \end{tcolorbox} }{% \setsepchar[*]{,* }\ignoreemptyitems% - \readlist*\ListeProg{#2}% + \readlist*\ListeProg{#3}% \stepcounter{NBprog}% \ifboolKV[ClesProg]{Vide}{% \xdef\PfCNbDepart{\ListeProg[1]}% @@ -181,8 +231,8 @@ }% \end{tikzpicture}% }{}% - }{% - \xdef\NbDepart{\ListeProg[1]}% + }{% + \xdef\NbDepart{\ListeProg[1]}% \ifboolKV[ClesProg]{SansCalcul}{% $\NbDepart$\foreachitem\compteur\in\ListeProg[2]{% \hspace{0.2em}\tikzmark{A-\theNBprog-\compteurcnt}\hspace{\useKV[ClesProg]{Ecart}}\tikzmark{B-\theNBprog-\compteurcnt}\hspace{0.2em}$\ListeProg[3,\compteurcnt]$% @@ -236,4 +286,5 @@ }% }% }% + } }%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex new file mode 100644 index 00000000000..371688f120c --- /dev/null +++ b/Master/texmf-dist/tex/latex/profcollege/PfCRecyclage.tex @@ -0,0 +1,360 @@ +%%% +% Logos Recyclage +%%% +\setKVdefault[Recyclage]{Ticket,Papier=false,Verre=false,Bouteille=false,Carton=false,Couleurs}% +\defKV[Recyclage]{Couleur=\setKV[Recyclage]{Couleurs=false}}% + +\NewDocumentCommand\LogoRecyclage{o}{% + \useKVdefault[Recyclage]% + \setKV[Recyclage]{#1}% + \ifboolKV[Recyclage]{Papier}{% + \PfCLogoTriPapier% + }{% + \ifboolKV[Recyclage]{Carton}{% + \PfCLogoTriCarton% + }{% + \ifboolKV[Recyclage]{Verre}{% + \PfCLogoTriVerre% + }{% + \ifboolKV[Recyclage]{Bouteille}{% + \PfCLogoTriBouteille% + }{% + \PfCLogoTriTicket% + }% + }% + }% + }% +}% + +\def\PfCLogoTriCodeBase{% + largeur=3; + rayon=0.5; + pair A,B,C,D,Mab,Mbc,Mcd,Mda,O,N[],T[]; + A=(0,0); + B-A=u*(largeur,0); + C-B=u*(0,0.5*largeur); + D-C=A-B; + O=iso(A,B,C,D)+u*(rayon/2,0); + Mab-A=u*(rayon,0); + Mbc-C=u*(0,-rayon); + Mcd-C=u*(-rayon,0); + Mda-A=u*(0,rayon); + N1=2/5[D,C]+u*(rayon/2,-0.1); + N2-D=u*(0.1,-0.1); + N3-Mda=u*(0.1,0); + N4-Mab=u*(0,0.1); + N5=2/5[A,B]+u*(rayon/2,0.1); + path contourtri; + contourtri=D--Mda{dir-90}..{dir0}Mab--B--Mbc{dir90}..{dir180}Mcd--cycle; + path partieg; + partieg=O--N1--N2--N3{dir-90}..{dir0}N4--N5--cycle; + fill contourtri withcolor CouleurFond; + fill partieg withcolor white; + picture poubelle; + poubelle=image( + pair Q[],R[]; + Q1=C+u*(-0.75rayon,-.75rayon); + Q2-Q1=u*(-0.25rayon,-1.75rayon); + Q3-Q2=u*(-0.85rayon,0); + Q4-Q3=u*(-0.25rayon,1.75rayon); + R1-Q1=u*(0.125rayon,0.1rayon); + R2-R1=u*(0.05rayon,0.2rayon); + R3-R2=u*(-0.15rayon,0); + R4-R3=u*(-0.15rayon,0.15rayon); + R8-Q4=u*(-0.125rayon,0.1rayon); + R7-R8=u*(-0.05rayon,0.2rayon); + R6-R7=u*(0.15rayon,0); + R5-R6=u*(0.15rayon,0.15rayon); + drawoptions(withpen pencircle scaled 1.25 withcolor black); + trace Q1--Q2--Q3--Q4; + trace R1--R2--R3--R4--R5--R6--R7--R8--cycle; + trace 1/5[R3,R6]--4/5[R3,R6]; + drawoptions(withpen pencircle scaled 2.5 withcolor black); + trace (Q2+u*(0.1rayon,-0.1rayon))--(Q2+u*(0.1rayon,0.1rayon)); + trace (Q3+u*(-0.1rayon,-0.1rayon))--(Q3+u*(-0.1rayon,0.1rayon)); + drawoptions(); + ); + picture bacverre; + bacverre=image(% + pair S[]; + S1=C+u*(-0.5rayon,-.35rayon); + S2-S1=u*(0,-0.45rayon); + S3-S2=u*(0,-1.25rayon); + S4-S3=u*(-0.45rayon,-0.45rayon); + S5-S4=u*(-0.875rayon,0); + S6-S5=u*(-0.45rayon,0.45rayon); + S7-S6=u*(0,1.25rayon); + S8-S7=u*(0.45rayon,0.45rayon); + S9-S8=u*(0.875rayon,0); + trace S2--S3{dir-90}..{dir180}S4--S5{dir180}..{dir90}S6--S7{dir90}..{dir0}S8--S9{dir0}..cycle; + trace (S4+u*(0.15rayon,-0.05rayon))--(S5+u*(-0.15rayon,-0.05rayon)); + trace fullcircle scaled 1mm shifted (iso(S2,S7)); + ); +}% + +\NewDocumentCommand\PfCLogoTriTicket{}{% + \ifluatex + \begin{Geometrie}[Cadre="aucun"] + boolean Colore; + color CouleurFond; + Colore=\useKV[Recyclage]{Couleurs}; + if Colore: + CouleurFond=(253/256,197/256,47/256); + else: + CouleurFond=\useKV[Recyclage]{Couleur}; + fi; + \PfCLogoTriCodeBase; + picture journal; + journal=image(% +% typetrace:="mainlevee"; + label.top(TEX("\ttfamily\footnotesize TICKET"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4)); + T1=A+u*(rayon,1.5rayon); + T2-T1=u*(rayon,-rayon/4); + T3-T2=u*(0.5rayon,1rayon); + T4-T3=T1-T2; + path ticket,lignesprix[]; + ticket=T1--T2{dir60}..{dir90}T3--T4{dir-90}..{dir-150}T1--cycle; + draw ticket; + for k=2 upto 7: + lignesprix[k]=(point(3+k/10) of ticket)--((point(3+k/10) of ticket)+T2-T1); + if k<7: + draw subpath(0.1,0.5) of lignesprix[k]; + fi; + draw subpath(0.6,0.8) of lignesprix[k]; + endfor; + ); + trace journal; + if Colore: + drawoptions(withcolor black); + else: + drawoptions(withcolor white); + fi; + trace poubelle; + label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4)); + drawoptions(); + \end{Geometrie} + \fi +}% + +\NewDocumentCommand\PfCLogoTriBouteille{}{% + \ifluatex + \begin{Geometrie}[Cadre="aucun"] + boolean Colore; + color CouleurFond; + Colore=\useKV[Recyclage]{Couleurs}; + if Colore: + CouleurFond=(253/256,197/256,47/256); + else: + CouleurFond=\useKV[Recyclage]{Couleur}; + fi; + \PfCLogoTriCodeBase; + picture bouteille; + bouteille=image(% + %typetrace:="mainlevee"; + label.top(TEX("\ttfamily\footnotesize PLASTIQUE"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4)); + T1=A+u*(1.25rayon,1.125rayon); + T2-T1=u*(0.75rayon,0); + T3-T2=u*(0,0.5rayon); + T4-T3=u*(0,0.5rayon); + T5-T4=u*(0,0.125rayon); + T6-T5=u*(-0.25rayon,0.25rayon); + T7-T6=u*(-0.125rayon,0); + T8-T7=u*(-0.25rayon,-0.25rayon); + T9-T8=u*(0,-0.125rayon); + T10-T9=u*(0,-0.5rayon); + T11-T10=u*(0,-0.5rayon); + path corps,bouchon,corpsg,lignesgrad[]; + corps=T3{dir100}..{dir70}T4--T5{dir95}..{dir90}T6--T7{dir-90}..{dir-95}T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}..{dir10}T2{dir50}..cycle; + corpsg=T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}; + bouchon=T6--(T6+u*(0.05rayon,0))--(T6+u*(0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0))--cycle; + draw corps; + draw bouchon; + for k=1 upto 7: + lignesgrad[k]=(point(k*length corpsg/8) of corpsg){dir-10}..((point(k*length corpsg/8) of corpsg)+u*(0.125rayon,0)); + if k<>6: + draw lignesgrad[k]; + fi; + endfor; + ); + trace bouteille; + if Colore: + drawoptions(withcolor black); + else: + drawoptions(withcolor white); + fi; + trace poubelle; + label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4)); + drawoptions(); + \end{Geometrie} + \fi +}% + +\NewDocumentCommand\PfCLogoTriVerre{}{% + \ifluatex + \begin{Geometrie}[Cadre="aucun"] + boolean Colore; + color CouleurFond; + Colore=\useKV[Recyclage]{Couleurs}; + if Colore: + CouleurFond=(0,139/256,50/256); + else: + CouleurFond=\useKV[Recyclage]{Couleur}; + fi; + \PfCLogoTriCodeBase; + picture bouteille; + bouteille=image(% + %typetrace:="mainlevee"; + label.top(TEX("\ttfamily\footnotesize VERRE"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4)); + T1=A+u*(1.25rayon,1.125rayon); + T2-T1=u*(0.75rayon,0); + T3-T2=u*(0,0.5rayon); + T4-T3=u*(0,0.5rayon); + T5-T4=u*(0,0.125rayon); + T6-T5=u*(-0.25rayon,0.25rayon); + T7-T6=u*(-0.125rayon,0); + T8-T7=u*(-0.25rayon,-0.25rayon); + T9-T8=u*(0,-0.125rayon); + T10-T9=u*(0,-0.5rayon); + T11-T10=u*(0,-0.5rayon); + path corps,bouchon,corpsg,lignesgrad[]; + corps=T3{dir100}..{dir70}T4--T5{dir95}..{dir90}T6--T7{dir-90}..{dir-95}T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}..{dir10}T2{dir50}..cycle; + corpsg=T8--T9{dir-70}..{dir-100}T10..{dir-50}T11{dir-10}; + bouchon=T6--(T6+u*(0.05rayon,0))--(T6+u*(0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0.05rayon))--(T7+u*(-0.05rayon,0))--cycle; + draw corps; + draw bouchon; + for k=1 upto 7: + lignesgrad[k]=(point(k*length corpsg/8) of corpsg){dir-10}..((point(k*length corpsg/8) of corpsg)+u*(0.125rayon,0)); + if k<>6: + draw lignesgrad[k]; + fi; + endfor; + ); + trace bouteille; +% if Colore: +% drawoptions(withcolor black); +% else: + drawoptions(withpen pencircle scaled 1.25 withcolor white); +% fi; + trace bacverre; + label(TEX("\bfseries\scriptsize\begin{tabular}{c}TRI\\VERRE\end{tabular}"),iso(S3,S6)+u*(0,0.245rayon)); + drawoptions(); + \end{Geometrie} + \fi +}% + +\NewDocumentCommand\PfCLogoTriCarton{}{% + \ifluatex + \begin{Geometrie}[Cadre="aucun"] + boolean Colore; + color CouleurFond; + Colore=\useKV[Recyclage]{Couleurs}; + if Colore: + CouleurFond=(253/256,197/256,47/256); + else: + CouleurFond=\useKV[Recyclage]{Couleur}; + fi; + \PfCLogoTriCodeBase; + picture etui; + etui=image(% + %typetrace:="mainlevee"; + label.top(TEX("\ttfamily\footnotesize CARTON"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4)); + pair Tcarton[]; + Tcarton1=A+u*(0.75rayon,1.75rayon); + Tcarton2-Tcarton1=u*(0,0.5rayon); + Tcarton3-Tcarton2=u*(0.5rayon,0.25rayon); + Tcarton4-Tcarton3=u*(1.25rayon,-0.5rayon); + Tcarton5-Tcarton4=Tcarton1-Tcarton2; + Tcarton6-Tcarton5=Tcarton2-Tcarton3; + Tcarton7-Tcarton6=Tcarton4-Tcarton5; + Tcarton8-Tcarton3=Tcarton5-Tcarton4; + path cotehaut,cotegauche,cotedroit,cotebas; + cotehaut=polygone(Tcarton4,Tcarton7,Tcarton7+u*(0.05rayon,0.35rayon),Tcarton4+u*(0.05rayon,0.35rayon)); + cotebas=polygone(Tcarton5,Tcarton6,Tcarton6+u*(0.15rayon,-0.35rayon),Tcarton5+u*(0.15rayon,-0.35rayon)); + cotegauche=polygone(Tcarton6,Tcarton7,Tcarton7+u*(-0.15rayon,-0.35rayon),Tcarton6+u*(-0.15rayon,-0.35rayon)); + cotedroit=polygone(Tcarton4,Tcarton5,Tcarton5+u*(0.35rayon,-0.15rayon),Tcarton4+u*(0.35rayon,-0.15rayon)); + trace polygone(Tcarton4,Tcarton5,Tcarton6,Tcarton7); + trace chemin(Tcarton7,Tcarton2,Tcarton3); + trace segment(Tcarton2,Tcarton1); + trace cotehaut; trace cotebas; trace cotegauche; trace cotedroit; + trace segment(Tcarton3,Tcarton4) cutafter segment(Tcarton7+u*(0.05rayon,0.35rayon),Tcarton4+u*(0.05rayon,0.35rayon)); + trace segment(Tcarton1,Tcarton6) cutafter segment(Tcarton7+u*(-0.15rayon,-0.35rayon),Tcarton6+u*(-0.15rayon,-0.35rayon)); + trace segment(Tcarton5,Tcarton8) cutafter segment(Tcarton7,Tcarton6); + ); + trace etui; + if Colore: + drawoptions(withcolor black); + else: + drawoptions(withcolor white); + fi; + trace poubelle; + label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4)); + drawoptions(); + \end{Geometrie} + \fi +}% + +\NewDocumentCommand\PfCLogoTriPapier{}{% + \ifluatex + \begin{Geometrie}[Cadre="aucun"] + boolean Colore; + color CouleurFond; + Colore=\useKV[Recyclage]{Couleurs}; + if Colore: + CouleurFond=(253/256,197/256,47/256); + else: + CouleurFond=\useKV[Recyclage]{Couleur}; + fi; + \PfCLogoTriCodeBase; + picture journal; + journal=image(% +% typetrace:="mainlevee"; + label.top(TEX("\ttfamily\footnotesize PAPIER"),iso(A,iso(A,B)+u*(rayon/2,0))+u*(0,rayon/4)); + T1=A+u*(1.25rayon,rayon); + T2-T1=u*(0.5rayon,0.125rayon); + T3-T2=u*(0.5rayon,0); + T4-T3=u*(-0.125rayon,1.5rayon); + T5-T2=0.85*(T4-T3); + T6-T1=0.95*(T4-T3); + path ticket,lignesprix[]; + ticket=T1--T2--T3--T4--T5--T6--cycle; + draw ticket; + trace T2--T5; + % lignes côté gauche + for k=1 upto 3: + lignesprix[k]=(point(5+k/12) of ticket)--((point(5+k/12) of ticket)+T5-T6); + draw subpath(0.1,0.5) of lignesprix[k]; + endfor; + for k=5 upto 6: + lignesprix[k]=(point(5+k/12) of ticket)--((point(5.065+k/12) of ticket)+T2-T1); + draw subpath(0.1,0.9) of lignesprix[k]; + endfor; + for k=9 upto 11: + lignesprix[k]=(point(5+k/12) of ticket)--((point(5+k/12) of ticket)+T2-T1); + draw subpath(0.5,0.9) of lignesprix[k]; + endfor; + % lignes côté droit + for k=1 upto 3: + lignesprix[k]:=(point(2+k/12) of ticket)--((point(2+k/12) of ticket)+T2-T3); + draw subpath(0.1,0.5) of lignesprix[k]; + endfor; + for k=5 upto 7: + lignesprix[k]:=(point(2+k/12) of ticket)--((point(1.935+k/12) of ticket)+T2-T3); + draw subpath(0.1,0.4) of lignesprix[k]; + endfor; + for k=9 upto 11: + lignesprix[k]:=(point(2+k/12) of ticket)--((point(2+k/12) of ticket)+T5-T4); + draw subpath(0.2,0.8) of lignesprix[k]; + endfor; + ); + trace journal; + if Colore: + drawoptions(withcolor black); + else: + drawoptions(withcolor white); + fi; + trace poubelle; + label(TEX("\bfseries\scriptsize\begin{tabular}{c}BAC\\DE\\TRI\end{tabular}"),iso(Q1,Q2,Q3,Q4)); + drawoptions(); + \end{Geometrie} + \fi +}%
\ 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 70bd8b7c7a0..e363b35e8d9 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCReperage.tex @@ -737,6 +737,7 @@ % #4 : la liste courte des noms des points. % #5 : liste des points pour les string \ifluatex + \mplibforcehmode \begin{mplibcode} defaultcolormodel := \useKV[ClesReperage]{ModeleCouleur}; boolean Tiret,Code,AffichageGrad,Cadre; @@ -1305,15 +1306,23 @@ if minx>(-pasx-1): minx:=-2*pasx-1; fi; - if DemiDroite: - minx:=0; - fi; if minx<\useKV[ClesReperage]{ValeurMin}: minx:=\useKV[ClesReperage]{ValeurMin}; fi; if maxx>\useKV[ClesReperage]{ValeurMax}: maxx:=\useKV[ClesReperage]{ValeurMax}; fi; + % Pour gérer les cas des droites où toutes les valeurs sont soit positives soit négatives + if maxx<pasx: + maxx:=pasx+1; + fi; + if minx>-pasx: + minx:=-pasx-1; + fi; + % + if DemiDroite: + minx:=0; + fi; % ----- pair A,B,C; A=(0,0); @@ -1424,7 +1433,15 @@ pointe(unitp*(valeur[n],0)); drawoptions(); elseif ACoord=1: + % + if Decale: + drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm); + label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],-7mm if (n mod 2)=0:-5mm fi)); + else: + %drawarrow (unitp*valeur[n],-7mm)--(unitp*valeur[n],-3mm); + %label.bot(TEX("\pointilles[1cm]"),(unitp*valeur[n],-7mm)); label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); + fi; drawoptions(withcolor CouleurCroix); pointe(unitp*(valeur[n],0)); drawoptions(); @@ -1464,16 +1481,29 @@ else: label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); fi; - drawoptions(withcolor CouleurCroix); - pointe(unitp*(valeur[n],0)); - drawoptions(); + drawoptions(withcolor CouleurCroix); + pointe(unitp*(valeur[n],0)); + drawoptions(); fi; elseif AffichageCoord=1: if p_<>"": + if Decale: + Labeloffset:=labeloffset; + labeloffset:=2pt; + if (valeur[n]<>0) and (valeur[n]<>pasx): + drawarrow (unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)--(unitp*valeur[n],-3mm); + label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),(unitp*valeur[n],-7mm if (n mod 2)=0:-5mm fi)); + fi; + labeloffset:=Labeloffset; + else: + %drawarrow (unitp*valeur[n],-7mm)--(unitp*valeur[n],-3mm); + %label.bot(TEX("\pointilles[1cm]"),(unitp*valeur[n],-7mm)); 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; + %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; fi; fi; diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex index 4ac96a74e66..35eed814310 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCRepresenterTableur.tex @@ -12,6 +12,7 @@ \newcount\Affichecntcol% \newcount\Affichecntlin% \makeatletter% +% Pour la version nicematrix \newtoks\t@b% \long\def\ifremain@lines#1\\#2\@nil{% \csname @\ifx\@empty#2\@empty second\else first\fi oftwo\endcsname}% @@ -24,14 +25,26 @@ \newcommand\addtot@b[1]{\t@b\expandafter{\the\t@b#1}}% \newcommand\edftot@b[1]{\edef\temp@{#1}\expandafter\addtot@b\expandafter{\temp@}}% +%%%%%%%%%% +% Pour la version tabular +\newtoks\t@bs% +\long\def\ifremain@liness#1\\#2\@nil{% + \csname @\ifx\@empty#2\@empty second\else first\fi oftwo\endcsname}% +\long\def\subst@eols#1\\#2\@nil{\addtot@bs{#1\\\hline}% + \ifremain@lines#2\\\@nil{\addtot@bs&\subst@eols#2\@nil}{\addtot@bs{#2\end{tabular}}}}% +\long\def\collectcp@bodys#1\end{\subst@eols#1\@nil\end}% + +\newcommand\addtot@bs[1]{\t@bs\expandafter{\the\t@bs#1}}% +\newcommand\edftot@bs[1]{\edef\temp@{#1}\expandafter\addtot@bs\expandafter{\temp@}}% +%%%%%%%%%%%%%%% \newlength\PfCLongInter% \newlength\PfCTableurLargeurUn% \newlength\PfCTableurLargeur% -\newenvironment{Tableur}[1][]{% +\NewDocumentEnvironment{Tableur}{so}{% \useKVdefault[Tableur]% - \setKV[Tableur]{#1}% + \setKV[Tableur]{#2}% \setlength{\PfCTableurLargeurUn}{\fpeval{\useKV[Tableur]{LargeurUn}}pt}% \setlength{\PfCTableurLargeur}{\fpeval{\useKV[Tableur]{Largeur}}pt}% \ifnum\useKV[Tableur]{DebutColonnes}=0\relax @@ -47,6 +60,42 @@ \ttfamily% \newcolumntype{A}{>{\centering\arraybackslash}m{\PfCTableurLargeurUn}}% \newcolumntype{B}{>{\centering\arraybackslash}m{\PfCTableurLargeur}}% + \IfBooleanTF{#1}{% + \setlength{\PfCLongInter}{-40pt+\fpeval{\useKV[Tableur]{LargeurUn}}pt+\fpeval{(\useKV[Tableur]{Colonnes}-2)*\useKV[Tableur]{Largeur}}pt+\fpeval{2*\useKV[Tableur]{Colonnes}-6}\tabcolsep+\fpeval{\useKV[Tableur]{Colonnes}-3}\arrayrulewidth}% + \ifboolKV[Tableur]{Bandeau}{% + \begin{tabular}{|p{\PfCTableurLargeur}|p{10pt}|p{50pt}|p{\PfCLongInter}|}% + \hhline{--~-}% + \useKV[Tableur]{Cellule}&\scriptsize$\blacktriangledown$&$f_x$\hfill$\sum$~\scriptsize$\blacktriangledown$\hfill$=$&\useKV[Tableur]{Formule}\hfill\scriptsize$\blacktriangledown$\\% + \hhline{--~-}% + \end{tabular}% + \nopagebreak% + \\% + }{}% + \cntlin\z@% + \t@bs{% + \begin{tabular}{% + |>{% + \cellcolor{gray!15}% + \global\cntcol\z@ + \global\advance\cntlin\@ne% + \centering\arraybackslash% + \ifnum\cntlin>\@ne% + \fpeval{\cntlin+\Affichecntlin-1}\fi}% + wc{20pt}|A|*{\fpeval{\useKV[Tableur]{Colonnes}-1}}{B|}}% + \hline% + \rowcolor{gray!15}% + }% + \loop% + \ifnum\cntcol<\useKV[Tableur]{Colonnes}% + \advance\cntcol\@ne% + \advance\Affichecntcol\@ne% + \addtot@bs{&}% + % \edftot@bs{\@Alph{\the\cntcol}}% + \edftot@bs{\@Alph{\the\Affichecntcol}}% + \repeat% + \addtot@bs{\\\hline&}% + \collectcp@bodys + }{% \setlength{\PfCLongInter}{-40pt+\fpeval{\useKV[Tableur]{LargeurUn}}pt+\fpeval{(\useKV[Tableur]{Colonnes}-2)*\useKV[Tableur]{Largeur}}pt+\fpeval{2*\useKV[Tableur]{Colonnes}-6}\tabcolsep+\fpeval{\useKV[Tableur]{Colonnes}+2}\arrayrulewidth}% \ifboolKV[Tableur]{Bandeau}{% \begin{NiceTabular}{p{\PfCTableurLargeur}p{10pt}p{50pt}p{\PfCLongInter}}% @@ -111,5 +160,5 @@ % fin de modif \repeat% \addtot@b{\\&}% - \collectcp@body}{\the\t@b}% + \collectcp@body}}{\IfBooleanTF{#1}{\the\t@bs}{\the\t@b}}% \makeatother
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex b/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex index 175cb26f7a1..996e33c0265 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCReseauxSociaux.tex @@ -1,9 +1,9 @@ %%% % Twitter %%% -\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false} +\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}% -\NewEnviron{Twitter}[1][]{% +\NewDocumentEnvironment{Twitter}{o+b}{% \useKVdefault[Twitter]% \setKV[Twitter]{#1}% \xdef\EchelleLogo{\useKV[Twitter]{EchelleLogo}}% @@ -26,16 +26,16 @@ left=3em, bottom=2em] \vspace*{0.5em}\par - \BODY% + #2 \end{tcolorbox} -} +}{}% %%% % Facebook %%% -\setKVdefault[Facebook]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Heure=3:14,EchelleLogo=0.035,Logo=DrStrange,Publie=false} +\setKVdefault[Facebook]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Heure=3:14,EchelleLogo=0.035,Logo=DrStrange,Publie=false}% -\NewEnviron{Facebook}[1][]{% +\NewDocumentEnvironment{Facebook}{o+b}{% \useKVdefault[Facebook]% \setKV[Facebook]{#1}% \xdef\EchelleLogo{\useKV[Facebook]{EchelleLogo}}% @@ -68,18 +68,17 @@ colframe=gray!15, top=2em, left=3em, - bottom=4em] - %\vspace*{0.5em}\par - \BODY% + bottom={\ifboolKV[Facebook]{Publie}{4em}{2em}}] + #2 \end{tcolorbox} -} +}{}% %%% % Instagram %%% -\setKVdefault[Instagram]{Largeur=0.95\linewidth,Auteur=Christophe,Expediteur=Pierre,Date=\today,Temps=34,Publie=false,Logo=DrStrange,LogoEx=tiger,EchelleLogo=0.035,Texte={}} +\setKVdefault[Instagram]{Largeur=0.95\linewidth,Auteur=Christophe,Expediteur=Pierre,Date=\today,Temps=34,Publie=false,Logo=DrStrange,LogoEx=tiger,EchelleLogo=0.035,Texte={}}% -\NewEnviron{Instagram}[1][]{% +\NewDocumentEnvironment{Instagram}{o+b}{% \useKVdefault[Instagram]% \setKV[Instagram]{#1}% \xdef\EchelleLogo{\useKV[Instagram]{EchelleLogo}}% @@ -113,16 +112,16 @@ top=3em, left=3em, bottom=7em] - \BODY% + #2 \end{tcolorbox} -} +}{}% %%% % Snapchat %%% -\setKVdefault[Snapchat]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Temps=34,Logo=DrStrange,EchelleLogo=0.035,Texte=Envoyer un Chat} +\setKVdefault[Snapchat]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Temps=34,Logo=DrStrange,EchelleLogo=0.035,Texte=Envoyer un Chat}% -\NewEnviron{Snapchat}[1][]{% +\NewDocumentEnvironment{Snapchat}{o+b}{% \useKVdefault[Snapchat]% \setKV[Snapchat]{#1}% \xdef\EchelleLogo{\useKV[Snapchat]{EchelleLogo}}% @@ -154,6 +153,43 @@ top=3em, left=3em, bottom=3em] - \BODY% + #2 \end{tcolorbox} -}
\ No newline at end of file +}{}% + +%%% +% Mastodon +%%% +\setKVdefault[Mastodon]{Largeur=0.95\linewidth,Auteur=Christophe,Date=2~j,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}% + +\NewDocumentEnvironment{Mastodon}{o+b}{% + \useKVdefault[Mastodon]% + \setKV[Mastodon]{#1}% + \xdef\EchelleLogo{\useKV[Mastodon]{EchelleLogo}}% + \begin{tcolorbox}[% + enhanced,% + overlay unbroken and first={% + \node[anchor=west,xshift=3em,yshift=-2em] at (frame.north west) {% + \begin{tabular}{l} + \textbf{\useKV[Mastodon]{Auteur}}\\ + {\color{gray}@\ttfamily \useKV[Mastodon]{Url}} + \end{tabular}}; + \node[anchor=center,xshift=1em+2mm,yshift=-2em] at (frame.north west) {\LogoTW{\useKV[Mastodon]{Logo}}{\EchelleLogo}}; + \node[anchor=center,yshift=-2em,xshift=-2em] at (frame.north east) {\faGlobeAmericas~\useKV[Mastodon]{Date}}; + \coordinate[yshift=1em] (A) at (frame.south west); + \coordinate[yshift=1em] (B) at (frame.south east); + \node[] (C1) at ($(A)!0.1!(B)$) {\faReply\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}}; + \node[] (C2) at ($(A)!0.29!(B)$) {\faRetweet};%\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}}; + \node[] (C3) at ($(A)!0.48!(B)$) {\faStar[regular]};%\ifboolKV[Mastodon]{Publie}{~\fpeval{randint(1,10)}}{}}; + \node[] (C4) at ($(A)!0.67!(B)$) {\faBookmark[regular]}; + \node[] (C5) at ($(A)!0.85!(B)$) {...}; + }, + colback=white, + colframe=gray!15, + top=2em, + left=3em, + bottom=2em] + \vspace*{1em}\par + #2 + \end{tcolorbox} +}{}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernaleold.tex b/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernaleold.tex deleted file mode 100644 index bf7cc6225f0..00000000000 --- a/Master/texmf-dist/tex/latex/profcollege/PfCRondeInfernaleold.tex +++ /dev/null @@ -1,474 +0,0 @@ -%%% -% Ronde infernale -%%% -\newcommand\TestNombrePremier[1]{% - % #1 le nombre \`a tester - \newcount\anp\newcount\bnp\newcount\cnp% - \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% - }% -}% - -\newcommand\PfCRIListeDiviseur[1]{%#1 : nombre entier - \newcount\anp\newcount\bnp% - \anp=\fpeval{abs(#1)}% - \bnp=2\relax% - \xdef\PfCRIRetiensListeDiviseurs{}% - \ifnum#1=0% - \xdef\PfCRIRetiensListeDiviseurs{\fpeval{randint(2,5)},\fpeval{randint(6,9)}}% - \else - \whiledo{\bnp<\anp}{% - \modulo{\the\anp}{\the\bnp}{}% - \ifnum\remainder=0% - \ifnum#1>0 - \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\bnp,}% - \else - \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\bnp,-\the\bnp,}% - \fi - \fi% - \bnp=\numexpr\bnp+1% - }% - \ifnum#1>0 - \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\anp,1} - \else - \xdef\PfCRIRetiensListeDiviseurs{\PfCRIRetiensListeDiviseurs \the\anp,-\the\anp} - \fi - \fi -}% - -\setKVdefault[RondeInfernale]{Solution=false,Relatifs=false,Etapes=4,Perso=false,Cles=false,Vide,Rayon=2.5cm,Rectangle=false,Div=false,Cdot=false}% -\defKV[RondeInfernale]{Graine=\PfCGraineAlea{#1}} -\defKV[RondeInfernale]{Cle=\setKV[RondeInfernale]{Cles}\setKV[RondeInfernale]{Vide=false}}% -\defKV[RondeInfernale]{ListeOperations=\setKV[RondeInfernale]{Perso}}% -\defKV[RondeInfernale]{ListeNombres=\setKV[RondeInfernale]{Perso}}% -% - -\NewDocumentCommand\RondeInfernale{ }{%Mise en place pour les germanistes : le " est actif :( - \begingroup - \catcode`\"12 - \RondeInfernaleaux -}% - -\NewDocumentCommand\RondeInfernaleaux{o}{% - \endgroup - \useKVdefault[RondeInfernale]% - \setKV[RondeInfernale]{#1}% - % Graine -% \ifboolKV[RondeInfernale]{Graines}{\PfCGraineAlea{\useKV[RondeInfernale]{Graine}}}{}% - % Nombre clé - \ifboolKV[RondeInfernale]{Cles}{% - \xdef\PfCRINombreCle{\useKV[RondeInfernale]{Cle}}% - }{% - \ifboolKV[RondeInfernale]{Relatifs}{% - \xdef\PfCRIListeNegatifs{-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10} - \MelangeListe{\PfCRIListeNegatifs}{1} - \readlist*\PfCRIListeCle{\faa} - \xdef\PfCRINombreCle{\PfCRIListeCle[1]}% - }{% - \xdef\PfCRINombreCle{\fpeval{randint(2,9)}}% - }% - }% - \ifboolKV[RondeInfernale]{Perso}{% - \xdef\PfCRIRecupOperations{\useKV[RondeInfernale]{ListeOperations}}% - \xdef\PfCRIRecupNombres{\useKV[RondeInfernale]{ListeNombres}}% - }{% - % On définit les éléments nécessaires - \xdef\PfCRIListeToutesOperations{+,-,*,/}% - \xdef\PfCRIListeOperationsSansDiv{+,-,*}% - \xdef\PfCRIListeOperationsSansMul{+,-,/}% - \xdef\PfCRIListeOperationsSimple{+,-}% - \xdef\PfCRIRecupOperations{}% - \xdef\PfCRIRecupNombres{}% - \xdef\PfCRIRecupResultats{}% - \xdef\PfCRINombreATester{\PfCRINombreCle}% - \xdef\PfCRIRetiensNbEtapes{\useKV[RondeInfernale]{Etapes}}% - \setsepchar{,}\ignoreemptyitems% - % Liste des opérations jusqu'à l'étape n-1 - \xintFor* ##1 in{\xintSeq{1}{\fpeval{\useKV[RondeInfernale]{Etapes}-1}}}\do{% - \TestNombrePremier{\PfCRINombreATester}\relax% - \xintifboolexpr{\premier==0}{% - % Définition des opérations - \MelangeListe{\PfCRIListeOperationsSansDiv}{1}% - \readlist*\PfCRIRetiensLoperation{\faa}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \xdef\PfCRIOperateur{\fpeval{randint(2,9)}}% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRIOperateur,}% - \xdef\PfCRIResultat{\fpeval{\PfCRINombreATester\PfCRIRetiensLoperation[1]\PfCRIOperateur}}% - \xdef\PfCRIRecupResultats{\PfCRIRecupResultats \PfCRIResultat,}% - \xdef\PfCRINombreATester{\PfCRIResultat}% - }{% - \MelangeListe{\PfCRIListeToutesOperations}{1}% - \readlist*\PfCRIRetiensLoperation{\faa}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \IfStrEq{\PfCRIRetiensLoperation[1]}{/}{% - \PfCRIListeDiviseur{\PfCRINombreATester}% - \MelangeListe{\PfCRIRetiensListeDiviseurs}{1}% - \readlist*\PfCRIRetiensLeDiviseur{\faa}% - \xdef\PfCRIOperateur{\PfCRIRetiensLeDiviseur[1]}% - }{% - \xdef\PfCRIOperateur{\fpeval{randint(2,9)}}% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRIOperateur,}% - \xdef\PfCRIResultat{\fpeval{\PfCRINombreATester\PfCRIRetiensLoperation[1]\PfCRIOperateur}}% - \xdef\PfCRIRecupResultats{\PfCRIRecupResultats \PfCRIResultat,}% - \xdef\PfCRINombreATester{\PfCRIResultat}% - }% - }% - % Dernière opération - \xintifboolexpr{\fpeval{abs(\PfCRINombreATester)-abs(\PfCRINombreCle)}>0}{% - \modulo{\PfCRINombreATester}{\PfCRINombreCle}{}% - \xintifboolexpr{\remainder==0}{% - \MelangeListe{\PfCRIListeOperationsSansMul}{1}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \ignoreemptyitems% - \readlist*\PfCRIRetiensLoperation{\faa}% - \IfStrEq{\PfCRIRetiensLoperation[1]}{/}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester/\PfCRINombreCle}}% - }{% - \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}% - }{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}% - }% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }{% - \MelangeListe{\PfCRIListeOperationsSimple}{1}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \ignoreemptyitems% - \readlist*\PfCRIRetiensLoperation{\faa}% - \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}% - }{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }% - }{% - \xintifboolexpr{\fpeval{abs(\PfCRINombreATester)-abs(\PfCRINombreCle)}==0}{% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations *}% - \ignoreemptyitems% - \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres 1}% - }{% - \xintifboolexpr{\PfCRINombreATester==0}{% - \MelangeListe{\PfCRIListeOperationsSimple}{1}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \ignoreemptyitems% - \readlist*\PfCRIRetiensLoperation{\faa}% - \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}% - }{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }{% - \modulo{\PfCRINombreCle}{\PfCRINombreATester}{}% - \xintifboolexpr{\remainder==0}{%-1 - \MelangeListe{\PfCRIListeToutesOperations}{1}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \readlist*\PfCRIRetiensLoperation{\faa}% - \ignoreemptyitems% - \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}% - \IfStrEq{\PfCRIRetiensLoperation[1]}{*}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle/\PfCRINombreATester}}% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }{ - \IfStrEq{\PfCRIRetiensLoperation[1]}{-}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}% - }{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }% - }{% - \MelangeListe{\PfCRIListeOperationsSimple}{1}% - \xdef\PfCRIRecupOperations{\PfCRIRecupOperations \faa}% - \ignoreemptyitems% - \readlist*\PfCRIRIListeOperations{\PfCRIRecupOperations}% - \IfStrEq{\PfCRIRIListeOperations[\PfCRIRetiensNbEtapes]}{-}{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreATester-\PfCRINombreCle}}% - }{% - \xdef\PfCRINombreATester{\fpeval{\PfCRINombreCle-\PfCRINombreATester}}% - }% - \xdef\PfCRIRecupNombres{\PfCRIRecupNombres \PfCRINombreATester}% - }% - }% - }% - }% - }% - \ignoreemptyitems% - \readlist*\PfCRIRIOperations{\PfCRIRecupOperations}% - \readlist*\PfCRIRINombres{\PfCRIRecupNombres}% - \reademptyitems% - % On prépare le dessin - \xdef\PfCRINombresDessin{}% - \xdef\PfCRIOperationsDessin{}% - \foreachitem\compteur\in\PfCRIRINombres{% - \xintifboolexpr{\PfCRIRINombres[\compteurcnt]<0}{% - \xdef\PfCRINombresDessin{\PfCRINombresDessin "(\num{\PfCRIRINombres[\compteurcnt]})",}% - }{% - \xdef\PfCRINombresDessin{\PfCRINombresDessin "\num{\PfCRIRINombres[\compteurcnt]}",}% - }% - }% - \foreachitem\compteur\in\PfCRIRIOperations{% - \xdef\PfCRIOperationsDessin{\PfCRIOperationsDessin "\PfCRIRIOperations[\compteurcnt]",}% - }% - % On dessine - \BuildRondeInfernale{\PfCRINombresDessin}{\PfCRIOperationsDessin}% -}% - -\NewDocumentCommand\BuildRondeInfernale{m m}{% - \ifluatex - \mplibforcehmode - \begin{mplibcode} - boolean Vide,Rectangle,Perso; - Vide=\useKV[RondeInfernale]{Vide}; - Rectangle=\useKV[RondeInfernale]{Rectangle}; - Perso=\useKV[RondeInfernale]{Perso}; - if Perso: - string Depart; - Depart=\useKV[RondeInfernale]{Cle}; - else: - numeric Depart; - Depart=\PfCRINombreCle; - fi; - - numeric Rayon; - Rayon=\useKV[RondeInfernale]{Rayon}; - - string Nombre[]; - - vardef Compte(text t)=%On compte le nb d'étapes et on retient les nombres - nbcase:=0; - for p_=t: - nbcase:=nbcase+1; - Nombre[nbcase]=p_; - endfor; - enddef; - - vardef AfficheRonde(text t)=%On fait l'affichage des opérations - n:=0; - for k=1 upto nbcase: - fill cercles(rotation(A[k],O,0.5*(360/nbcase)),5mm) withcolor white; - endfor; - for p_=t: - n:=n+1; - if p_="*": - label(TEX("$\times"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - elseif p_="/": - label(TEX("$\div"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - else: - label(TEX("$"&p_&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - fi; - endfor; - enddef; - - vardef AfficheRectangle(text t)=%On fait l'affichage des opérations - n:=0; - for p_=t: - n:=n+1; - if n=nbcase: - if p_="*": - label.bot(TEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - elseif p_="/": - label.bot(TEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - else: - label.bot(TEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - fi; - else: - if p_="*": - label.top(TEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - elseif p_="/": - label.top(TEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - else: - label.top(TEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - fi; - fi; - endfor; - enddef; - - vardef BaseRonde= - pair O,A[]; - O=(0,0); - path cc; - cc=cercles(O,Rayon); - A[0]=pointarc(cc,0); - A[nbcase+1]=A[0]; - for k=1 upto nbcase: - A[k]=rotation(A[0],O,k*(360/nbcase)); - endfor; - for k=0 upto nbcase: - drawarrow reverse(arccercle(A[k],A[k+1],O) cutbefore cercles(A[k],5mm) cutafter cercles(A[k+1],5mm)) withpen pencircle scaled 1.5; - endfor; - for k=0 upto nbcase: - fill cercles(A[k],5mm) withcolor white; - trace cercles(A[k],5mm) withpen pencircle scaled 1.5; - endfor; - enddef; - - vardef BoiteRectangle= - save $; - path $; - $=u*(0.9,-0.5){dir 0}..{dir 90}(u*(1,-0.4))--(u*(1,0.4)){dir 90}..{dir180}(u*(0.9,0.5))--u*(-0.9,0.5){dir 180}..{dir-90}(u*(-1,0.4))--(u*(-1,-0.4)){dir-90}..{dir0}(u*(-0.9,-0.5))--cycle; - $ - enddef; - - vardef BaseRectangle= - pair O,A[]; - O=(0,0); - A[0]=O; - for k=1 upto nbcase: - A[k]-A[k-1]=(Rayon+2cm,0); - endfor; - for k=0 upto nbcase-2: - drawarrow (A[k]--A[k+1]) cutbefore (BoiteRectangle shifted A[k]) cutafter (BoiteRectangle shifted A[k+1]) withpen pencircle scaled 1.5; - endfor; - drawarrow (A[nbcase-1]--(A[nbcase-1]+u*(0,-1))--(A[0]+u*(0,-1))--A[0]) cutbefore (BoiteRectangle shifted A[nbcase-1]) cutafter (BoiteRectangle shifted A[0]) withpen pencircle scaled 1.5; - for k=0 upto nbcase-1: - trace (BoiteRectangle shifted A[k]) withpen pencircle scaled 1.5; - endfor; - enddef; - - Compte(#1); - - if Rectangle: - BaseRectangle; - AfficheRectangle(#2); - else: - BaseRonde; - AfficheRonde(#2); - fi; - if Vide=false: - if Perso: - label(TEX("$"&Depart&"$"),A[0]); - else: - label(TEX("$"&decimal(Depart)&"$"),A[0]); - fi; - fi; - \end{mplibcode} - \else - \begin{mpost}[mpsettings={% - boolean Vide,Rectangle,Perso;Vide=\useKV[RondeInfernale]{Vide};Rectangle=\useKV[RondeInfernale]{Rectangle};Perso=\useKV[RondeInfernale]{Perso};if Perso:string Depart;Depart=\useKV[RondeInfernale]{Cle};else:numeric Depart;Depart=\PfCRINombreCle;fi;numeric Rayon;Rayon=\useKV[RondeInfernale]{Rayon};}] - string Nombre[]; - - vardef Compte(text t)=%On compte le nb d'étapes et on retient les nombres - nbcase:=0; - for p_=t: - nbcase:=nbcase+1; - Nombre[nbcase]=p_; - endfor; - enddef; - - vardef AfficheRonde(text t)=%On fait l'affichage des opérations - n:=0; - for k=1 upto nbcase: - fill cercles(rotation(A[k],O,0.5*(360/nbcase)),5mm) withcolor white; - endfor; - for p_=t: - n:=n+1; - if p_="*": - label(LATEX("$\times"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - elseif p_="/": - label(LATEX("$\div"&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - else: - label(LATEX("$"&p_&Nombre[n]&"$"),rotation(A[nbcase-n],O,0.5*(360/nbcase))); - fi; - endfor; - enddef; - - vardef AfficheRectangle(text t)=%On fait l'affichage des opérations - n:=0; - for p_=t: - n:=n+1; - if n=nbcase: - if p_="*": - label.bot(LATEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - elseif p_="/": - label.bot(LATEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - else: - label.bot(LATEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[0]]+u*(0,-1)); - fi; - else: - if p_="*": - label.top(LATEX("$\times"&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - elseif p_="/": - label.top(LATEX("$\div"&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - else: - label.top(LATEX("$"&p_&Nombre[n]&"$"),1/2[A[n-1],A[n]]); - fi; - fi; - endfor; - enddef; - - vardef BaseRonde= - pair O,A[]; - O=(0,0); - path cc; - cc=cercles(O,Rayon); - A[0]=pointarc(cc,0); - A[nbcase+1]=A[0]; - for k=1 upto nbcase: - A[k]=rotation(A[0],O,k*(360/nbcase)); - endfor; - for k=0 upto nbcase: - drawarrow reverse(arccercle(A[k],A[k+1],O) cutbefore cercles(A[k],5mm) cutafter cercles(A[k+1],5mm)) withpen pencircle scaled 1.5; - endfor; - for k=0 upto nbcase: - fill cercles(A[k],5mm) withcolor white; - trace cercles(A[k],5mm) withpen pencircle scaled 1.5; - endfor; - enddef; - - vardef BoiteRectangle= - save $; - path $; - $=u*(0.9,-0.5){dir 0}..{dir 90}(u*(1,-0.4))--(u*(1,0.4)){dir 90}..{dir180}(u*(0.9,0.5))--u*(-0.9,0.5){dir 180}..{dir-90}(u*(-1,0.4))--(u*(-1,-0.4)){dir-90}..{dir0}(u*(-0.9,-0.5))--cycle; - $ - enddef; - - vardef BaseRectangle= - pair O,A[]; - O=(0,0); - A[0]=O; - for k=1 upto nbcase: - A[k]-A[k-1]=(Rayon+2cm,0); - endfor; - for k=0 upto nbcase-2: - drawarrow (A[k]--A[k+1]) cutbefore (BoiteRectangle shifted A[k]) cutafter (BoiteRectangle shifted A[k+1]) withpen pencircle scaled 1.5; - endfor; - drawarrow (A[nbcase-1]--(A[nbcase-1]+u*(0,-1))--(A[0]+u*(0,-1))--A[0]) cutbefore (BoiteRectangle shifted A[nbcase-1]) cutafter (BoiteRectangle shifted A[0]) withpen pencircle scaled 1.5; - for k=0 upto nbcase-1: - trace (BoiteRectangle shifted A[k]) withpen pencircle scaled 1.5; - endfor; - enddef; - - Compte(#1); - - if Rectangle: - BaseRectangle; - AfficheRectangle(#2); - else: - BaseRonde; - AfficheRonde(#2); - fi; - if Vide=false: - if Perso: - label(LATEX("$"&Depart&"$"),A[0]); - else: - label(LATEX("$"&decimal(Depart)&"$"),A[0]); - fi; - fi; - \end{mpost} - \fi -}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex index bea6d2d6888..94429def365 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCSimplifierFraction.tex @@ -180,8 +180,8 @@ }% }% -\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false} -\defKV[ClesSimplification]{Nombre=\setKV[ClesSimplification]{Impose}} +\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0,Couleur=black,Debut=false,Impose=false,Decomposition=false,DecompositionSeule=false}% +\defKV[ClesSimplification]{Nombre=\setKV[ClesSimplification]{Impose}}% \newcounter{NbFrac}% \setcounter{NbFrac}{0}% @@ -194,12 +194,8 @@ \setsepchar[*]{,*/}%\ignoreemptyitems \readlist*\Listea{#2}% \readlist*\Listeb{#3}% - \setbox1=\hbox{\Listea[1,1]{}}% - \setbox2=\hbox{\Listeb[1,1]}% - \setbox3=\hbox{\Listea[1,3]}% - \setbox4=\hbox{\Listeb[1,3]}% \ensuremath{% - \frac{\tikzmarknode[anchor=north]{A-\theNbFrac}{\Listea[1,1]}{}}{\tikzmarknode[anchor=south]{B-\theNbFrac}{\Listeb[1,1]}{}}=\frac{\tikzmarknode[anchor=north]{C-\theNbFrac}{\Listea[1,3]}{}}{\tikzmarknode[anchor=south]{D-\theNbFrac}{\Listeb[1,3]}{}}% + \frac{\tikzmarknode[anchor=north]{A-\theNbFrac}{\num{\Listea[1,1]}}{}}{\tikzmarknode[anchor=south]{B-\theNbFrac}{\num{\Listeb[1,1]}}{}}=\frac{\tikzmarknode[anchor=north]{C-\theNbFrac}{\Listea[1,3]}{}}{\tikzmarknode[anchor=south]{D-\theNbFrac}{\Listeb[1,3]}{}}% }% \begin{tikzpicture}[remember picture,overlay]% \draw[out=45,in=135,-stealth,transform canvas={yshift=0.25em}] @@ -215,16 +211,20 @@ \frac{\num{#2}}{\num{#3}}=\frac{\num{#2}\times\num{\useKV[ClesSimplification]{Contraire}}}{\num{#3}\times\num{\useKV[ClesSimplification]{Contraire}}}=\frac{\num{\fpeval{\useKV[ClesSimplification]{Contraire}*#2}}}{\num{\fpeval{\useKV[ClesSimplification]{Contraire}*#3}}}% }% }{% - \ifboolKV[ClesSimplification]{Decomposition}{% + \ifboolKV[ClesSimplification]{DecompositionSeule}{% + \DecompositionSimplificationSeule{#2}{#3}% + }{% + \ifboolKV[ClesSimplification]{Decomposition}{% \DecompositionSimplification{#2}{#3}% }{% - \ifboolKV[ClesSimplification]{Longue}{% - \colorlet{PfCSimpliCol}{\useKV[ClesSimplification]{Couleur}}% - \LongueSimplification{#2}{#3}% - }{% - \ifboolKV[ClesSimplification]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}% + \ifboolKV[ClesSimplification]{Longue}{% + \colorlet{PfCSimpliCol}{\useKV[ClesSimplification]{Couleur}}% + \LongueSimplification{#2}{#3}% + }{% + \ifboolKV[ClesSimplification]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}% }% }% + }% }% }% }% @@ -246,10 +246,10 @@ \xintFor* ##2 in{\xintSeq{1}{\LongueurH}}\do{% \DiviseurCommun{\DiviseurHaut[##2]}{\PfCDeuxiemeFacteur} \ifnum\PfCDivCom>1% - \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurHaut[##2]} + \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurHaut[##2]}} \xdef\PfCDeuxiemeFacteur{\fpeval{\PfCDeuxiemeFacteur/\DiviseurHaut[##2]}} \else - \DiviseurHaut[##2] + \num{\DiviseurHaut[##2]} \fi \xintifForLast{}{\times} } @@ -257,14 +257,14 @@ \xintFor* ##2 in{\xintSeq{1}{\LongueurB}}\do{% \DiviseurCommun{\DiviseurBas[##2]}{\PfCPremierFacteur} \ifnum\PfCDivCom>1% - \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurBas[##2]} + \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurBas[##2]}} \xdef\PfCPremierFacteur{\fpeval{\PfCPremierFacteur/\DiviseurBas[##2]}} \else - \DiviseurBas[##2] + \num{\DiviseurBas[##2]} \fi \xintifForLast{}{\times} } - }=\frac{\PfCPremierFacteur}{\PfCDeuxiemeFacteur} + }=\frac{\num{\PfCPremierFacteur}}{\num{\PfCDeuxiemeFacteur}} \else \tofrac{#1/#2} \fi @@ -293,10 +293,10 @@ \xintifboolexpr{\fpeval{#1*#2}<0}{\xintifboolexpr{#1<0}{-}{}}{}\xintFor* ##2 in{\xintSeq{1}{\LongueurH}}\do{% \DiviseurCommun{\DiviseurHaut[##2]}{\PfCDeuxiemeFacteur} \ifnum\PfCDivCom>1% - \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurHaut[##2]} + \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurHaut[##2]}} \xdef\PfCDeuxiemeFacteur{\fpeval{\PfCDeuxiemeFacteur/\DiviseurHaut[##2]}} \else - \DiviseurHaut[##2] + \num{\DiviseurHaut[##2]} \fi \xintifForLast{}{\times} } @@ -304,10 +304,10 @@ \xintifboolexpr{\fpeval{#1*#2}<0}{\xintifboolexpr{#1<0}{}{-}}{}\xintFor* ##2 in{\xintSeq{1}{\LongueurB}}\do{% \DiviseurCommun{\DiviseurBas[##2]}{\PfCPremierFacteur} \ifnum\PfCDivCom>1% - \mathcolor{\useKV[ClesSimplification]{Couleur}}{\DiviseurBas[##2]} + \mathcolor{\useKV[ClesSimplification]{Couleur}}{\num{\DiviseurBas[##2]}} \xdef\PfCPremierFacteur{\fpeval{\PfCPremierFacteur/\DiviseurBas[##2]}} \else - \DiviseurBas[##2] + \num{\DiviseurBas[##2]} \fi \xintifForLast{}{\times} } diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex index b45111daf58..0ae0894e969 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCStatistiques.tex @@ -657,11 +657,12 @@ ModeleCouleur=5% if Qualitatif: tutu(#1); else: toto(#1); fi; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if Grille: + %%%%%%%%%%%%%%%% -< Ici drawoptions(withcolor 0.75white); for k=0 step PasGrillex until ((maxx+1)): - trace (k*unitex,0)--(k*unitex,unitey*((floor(maxAxey/Pasy)+1)*Pasy)); + trace (k*unitex,0)--(k*unitex,unitey*((ceiling(maxAxey/Pasy)+1)*Pasy)); endfor; - for k=0 step PasGrilley until (floor(maxAxey/Pasy)+1)*Pasy:%((maxy+2*Pasy)): + for k=0 step PasGrilley until (ceiling(maxAxey/Pasy)+1)*Pasy:%((maxy+2*Pasy)): trace (0,k*unitey)--(unitex*(maxx+1),k*unitey); endfor; drawoptions(); @@ -711,9 +712,9 @@ ModeleCouleur=5% endfor; fi; drawarrow (0,0)--unitex*(maxx+1,0); - drawarrow (0,0)--unitey*(0,(floor(maxAxey/Pasy)+1)*Pasy); + drawarrow (0,0)--unitey*(0,(ceiling(maxAxey/Pasy)+1)*Pasy); label.lrt(TEX("\useKV[ClesStat]{Donnee}"),unitex*(maxx+1,0)); - label.urt(TEX("\useKV[ClesStat]{Effectif}"),unitey*(0,(floor(maxAxey/Pasy)+1)*Pasy)); + label.urt(TEX("\useKV[ClesStat]{Effectif}"),unitey*(0,(ceiling(maxAxey/Pasy)+1)*Pasy)); if Qualitatif: titi(#1); else:tata(#1); fi; \end{mplibcode} \else diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex index c88c18363ce..3399cbecff9 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCTablesOperations.tex @@ -1,7 +1,7 @@ %%% % Tables Addition-Multiplication %%% -\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white} +\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white,Inverse=false} % pour m\'emoire \newcommand\TableMultiplicationComplete{% @@ -95,17 +95,68 @@ }% }% +\NewDocumentCommand\PfCTableInverse{om}{% + % #1 paramètres + % #2 dizaine concernée + \useKVdefault[Tables]% + \setKV[Tables]{#1}% + \ifnum#2=0\relax% + \xdef\TIDepart{2}% + \else% + \xdef\TIDepart{\fpeval{#2*10}}% + \fi% + \xdef\TIFin{\fpeval{#2*10+9}}% + % On sauvegarde les nombres non premiers de la dizaine + \xdef\PfCRetiensNonPremiersInv{}% + \xintFor* ##1 in{\xintSeq{\TIDepart}{\TIFin}}\do{% + \TestPremier{##1}% + \ifboolKV[ClesEra]{Premier}{}{% + \xdef\PfCRetiensNonPremiersInv{\PfCRetiensNonPremiersInv##1,}% + }% + }% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeNombresRetenus{\PfCRetiensNonPremiersInv}% + \reademptyitems% + \xdef\PfCRetiensIntermediaire{}% + \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenuslen}}\do{% + \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire,\ListeNombresRetenus[##1]}% + \xintFor* ##2 in{\xintSeq{2}{\fpeval{floor(sqrt(\ListeNombresRetenus[##1]))}}}\do{% + \modulo{\ListeNombresRetenus[##1]}{##2}% + \ifnum\remainder=0\relax% + \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire/##2}% + \fi% + }% + }% + \setsepchar[*]{,*/}\ignoreemptyitems% + \readlist*\ListeNombresRetenusInd{\PfCRetiensIntermediaire}% + \reademptyitems% + \ensuremath{% + \begin{array}[t]{ccrcl}% + \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenusIndlen}}\do{% + \xintifForFirst{}{\\}% + \xintFor* ##2 in{\xintSeq{2}{\listlen\ListeNombresRetenusInd[##1]}}\do{% + \num{\ListeNombresRetenusInd[##1,1]}\uppercase{&}=\uppercase{&}\num{\ListeNombresRetenusInd[##1,##2]}\uppercase{&}\times\uppercase{&}\quotient{\ListeNombresRetenusInd[##1,1]}{\ListeNombresRetenusInd[##1,##2]}\num{\the\intquotient}\\% + } + } + \end{array}% + }% +}% + \newcommand\Tables[2][]{% \useKVdefault[Tables]% \setKV[Tables]{#1}% \ifboolKV[Tables]{Seul}{% - \ifboolKV[Tables]{Soustraction}{% - \TableSoustractionSeule{#2}% + \ifboolKV[Tables]{Inverse}{% + \PfCTableInverse[#1]{#2}% }{% - \ifboolKV[Tables]{Addition}{% - \TableAdditionSeule{#2}% + \ifboolKV[Tables]{Soustraction}{% + \TableSoustractionSeule{#2}% }{% - \TableMultiplicationSeule{#2}% + \ifboolKV[Tables]{Addition}{% + \TableAdditionSeule{#2}% + }{% + \TableMultiplicationSeule{#2}% + }% }% }% }{% diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex index a0ebd3b36f0..ea01972c256 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCThales.tex @@ -1214,9 +1214,9 @@ \end{array} \right\}\ifnum\NumA=\NumB \dfrac{\NomA\NomM}{\NomA\NomB}=\dfrac{\NomA\NomN}{\NomA\NomC}\else\dfrac{\NomA\NomM}{\NomA\NomB}\not=\dfrac{\NomA\NomN}{\NomA\NomC}\fi \] - } + }% \ifboolKV[ClesThales]{Propor}{% - \ifnum\NumA=\NumB Donc le tableau $\begin{array}{c|c} + \xintifboolexpr{\NumA==\NumB}{Donc le tableau $\begin{array}{c|c} \NomA\NomM&\NomA\NomN\\ \hline \NomA\NomB&\NomA\NomC\\ @@ -1225,8 +1225,8 @@ $\NomA$, $\NomM$, $\NomB$ sont align\'es dans le m\^eme ordre que les points $\NomA$, $\NomN$, $\NomC$. Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ sont parall\`eles d'apr\`es la r\'eciproque du - th\'eor\`eme de Thal\`es.\else% - Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas parall\`eles.\fi + th\'eor\`eme de Thal\`es.}{% + Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas parall\`eles.}% }{% \xintifboolexpr{\NumA==\NumB}{% De plus, les points $\NomA$, $\NomM$, $\NomB$ sont align\'es dans @@ -1234,9 +1234,9 @@ droites $(\NomM\NomN)$ et $(\NomB\NomC)$ sont parall\`eles d'apr\`es la r\'eciproque du th\'eor\`eme de Thal\`es.}{% Donc les droites $(\NomM\NomN)$ et $(\NomB\NomC)$ ne sont pas - parall\`eles.} - } -} + parall\`eles.}% + }% +}% \newcommand\ReciproqueThales[8][]{% % #1 Cl\'es diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex new file mode 100644 index 00000000000..1c460e36939 --- /dev/null +++ b/Master/texmf-dist/tex/latex/profcollege/PfCTicketCaisse.tex @@ -0,0 +1,210 @@ +%%% +% Ticket de caisse +%%% +\newcounter{PfCNbInsulte}% +\setcounter{PfCNbInsulte}{0}% + +\NewDocumentCommand\PfCPrixInsulte{sm}{% + \setsepchar{,}\ignoreemptyitems% + \readlist*\PfCListeInsulte{\%,!,§,\#,*,@,-}% + \reademptyitems% + \IfBooleanTF{#1}{% + \MelangeListe{1,2,3,4,5,6,7}{5}% + }{% + \stepcounter{PfCNbInsulte}% + \MelangeListe{1,2,3,4,5,6,7}{3}% + }% + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeInsulteMelange{\faa}% + \reademptyitems% + \ifboolKV[TicketCaisse]{Solution}{\textcolor{PfCTicketCouleurSolution}{#2}}{% + \xintFor* ##1 in{\xintSeq{1}{\ListeInsulteMelangelen}}\do{% + \xdef\Titi{\ListeInsulteMelange[##1]}% + \PfCListeInsulte[\Titi]% + }% + }% +}% + +\makeatletter +\NewDocumentCommand\PrixTicket{om}{% + \ifboolKV[TicketCaisse]{CHF}{% + \DeclareSIUnit{\Tempo}{\PfCCHF}% + }{% + \ifboolKV[TicketCaisse]{CFA}{% + \DeclareSIUnit{\Tempo}{\PfCCFA}% + }{% + \ifboolKV[TicketCaisse]{CFP}{% + \DeclareSIUnit{\Tempo}{\PfCCFP}% + }{% + \ifboolKV[TicketCaisse]{US}{% + \DeclareSIUnit{\Tempo}{\Dollar}% + }{% + \ifboolKV[TicketCaisse]{UK}{% + \DeclareSIUnit{\Tempo}{\LivreSterling}% + }{% + \ifboolKV[TicketCaisse]{Euro}{% + \DeclareSIUnit{\Tempo}{\EuRo}% + }{% + \if@CHF% + \setKV[TicketCaisse]{CHF}% + \fi% + \DeclareSIUnit{\Tempo}{\DeviseDefaut}% + }% + }% + }% + }% + }% + }% + \IfInteger{#2}{% + \ifboolKV[TicketCaisse]{CHF}{% + \si{\PfCCHF}~\num{#2}.-% + }{% + \SI[round-mode=places,round-precision=2]{#2}{\Tempo}% + }% + }{% + \SI[round-mode=places,round-precision=2]{#2}{\Tempo}% + }% +}% +\makeatother + +\setKVdefault[TicketCaisse]{Largeur=222,Especes=50,Enseigne=Au comptoir des maths,DateAchat=\today,HeureAchat=15:13:34,Taches=false,Rendu,Total,UK=false,US=false,CFA=false,CFP=false,CHF=false,Euro=false,Solution=false} +\defKV[TicketCaisse]{Couleur=\colorlet{PfCTicketCouleurSolution}{#1}\setKV[TicketCaisse]{Solution}} + +\NewDocumentCommand\TicketCaisse{om}{% + \setcounter{PfCNbInsulte}{0}% + \useKVdefault[TicketCaisse]% + \setKV[TicketCaisse]{#1}% + \setsepchar[*]{,*/}% + \readlist*\ListeAchats{#2}% + % On fait trois listes pour les retenir + % Liste Quantités + \xdef\PfCFooQuantites{}% + \foreachitem\compteur\in\ListeAchats{% + \StrChar{\ListeAchats[\compteurcnt,1]}{1}[\MyLetter]% + \IfStrEq{\MyLetter}{!}{% + \StrBehind{\ListeAchats[\compteurcnt,1]}{!}[\Titi]% + \xdef\PfCFooQuantites{\PfCFooQuantites,\Titi}% + }{% + \xdef\PfCFooQuantites{\PfCFooQuantites,\ListeAchats[\compteurcnt,1]}% + }% + }% + % Liste Elements + \xdef\PfCFooElements{}% + \foreachitem\compteur\in\ListeAchats{% + \xdef\PfCFooElements{\PfCFooElements,\ListeAchats[\compteurcnt,2]}% + }% + % Liste Prix Unitaire + \xdef\PfCFooPUnitaires{}% + \foreachitem\compteur\in\ListeAchats{% + \StrChar{\ListeAchats[\compteurcnt,3]}{1}[\MyLetter]% + \IfStrEqCase{\MyLetter}{% + {!}{% + \StrBehind{\ListeAchats[\compteurcnt,3]}{!}[\Titi]% + \StrChar{\Titi}{1}[\Toto]% + \IfStrEq{\Toto}{*}{% + \StrBehind{\ListeAchats[\compteurcnt,3]}{!*}[\Tata]% + \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Tata}% + }{% + \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Titi}% + }% + }% + {*}{\StrBehind{\ListeAchats[\compteurcnt,3]}{*}[\Titi]% + \xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\Titi}}% + }[\xdef\PfCFooPUnitaires{\PfCFooPUnitaires,\ListeAchats[\compteurcnt,3]}]% + }% + % On les lit + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeQuantites{\PfCFooQuantites}% + \readlist*\ListeElements{\PfCFooElements}% + \readlist*\ListePUnitaires{\PfCFooPUnitaires}% + % On calcul le coût total + \xdef\PfCTCTotal{0}% + \xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{% + \xdef\PfCTCTotal{\fpeval{\PfCTCTotal+\ListeQuantites[##1]*\ListePUnitaires[##1]}}% + }% +% Le coût total est \PfCTCTotal\\ + {\ttfamily% + \begin{NiceTabular}{m{107pt}m{29pt}m{36pt}m{50pt}}% + \CodeBefore + \tikz\node[opacity=0.2,yshift=-1.5cm] at ($(1-|1)!0.5!(1-|last)$) {\Large\bfseries\reflectbox{ + \begin{tabular}{c} + Papier garanti\\ + sans Phénol + \end{tabular} + } + }; + \tikz\node[opacity=0.2,anchor=center,yshift=1cm] at ($(last-|1)!0.5!(last-|last)$) {\Large\bfseries\reflectbox{% + \faRecycle~Pensez à trier.% + }% + };% + \tikz\node[opacity=0.5,anchor=center,yshift=2cm] at ($(last-|1)!0.5!(last-|last)$) {\Large\bfseries\reflectbox{ + \LogoRecyclage[Couleur=0.8white]% + }% + };% + \tikz\draw[fill=Ivory,opacity=0.5] (1-|1) rectangle (last-|last);% + \Body + &&&\\% + \Block{1-4}{\Large\bfseries\useKV[TicketCaisse]{Enseigne}}&&&\\% + \\% + \Cdots\\% + \\% + \Block[l]{}{\footnotesize\sc Description}&\Block{}{\footnotesize\sc Qte.}&\Block{}{\footnotesize\sc P.u.}&\Block[r]{}{\footnotesize\sc Prix Net}\\% + \\% + \xintFor* ##1 in{\xintSeq{1}{\ListeAchatslen}}\do{% + \ListeElements[##1]&% + \Block{}{% + \footnotesize% + \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]% + \IfStrEq{\MyLetter}{!}{\PfCPrixInsulte*{\ListeQuantites[##1]}}{\xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{\num{\ListeQuantites[##1]}}}% + }& + \Block[r]{}{% + \footnotesize + %Savoir si le nombre d'articles est affiché + \StrChar{\ListeAchats[##1,1]}{1}[\MyLetter]% + % Si le nombre d'articles n'est pas affiché, il faut impérativement afficher le prix unitaire + \IfStrEq{\MyLetter}{!}{% + \PrixTicket{\ListePUnitaires[##1]}% + }{% + % On regarde si on affiche le prix unitaire + \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]% + % Si c'est un !, on affiche pas + % Sinon, on affiche + \IfStrEq{\MyLettera}{!}{% + \PfCPrixInsulte*{\PrixTicket{\ListePUnitaires[##1]}}% + }{% + \xintifboolexpr{\fpeval{\ListeQuantites[##1]}==1}{}{% + \PrixTicket{\ListePUnitaires[##1]}% + }% + }% + }% + }% + &\Block[r]{}{% + \StrChar{\ListeAchats[##1,3]}{1}[\MyLetter]% + % Si le premier caractère est !, il faut regarder si le deuxième caractère est une étoile + \IfStrEq{\MyLetter}{!}{% + \StrChar{\ListeAchats[##1,3]}{2}[\MyLettera]% + \IfStrEq{\MyLettera}{*}{% + \PfCPrixInsulte*{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}% + }{% + \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}% + }% + }{%il faut regarder si c'est une étoile + \StrChar{\ListeAchats[##1,3]}{1}[\MyLettera]% + \IfStrEq{\MyLettera}{*}{% + \PfCPrixInsulte{\PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}}% + }{% + \PrixTicket{\fpeval{\ListeQuantites[##1]*\ListePUnitaires[##1]}}% + }% + }% + }\\ + }% + \\% + \Cdots\\% + Total&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Total}{\ifnum\thePfCNbInsulte=0\relax\PrixTicket{\PfCTCTotal}\else\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}\fi}{\PfCPrixInsulte*{\PrixTicket{\PfCTCTotal}}}}\\% + Espèces&&&\Block[r]{}{\PrixTicket{\useKV[TicketCaisse]{Especes}}}\\% + Rendu&&&\Block[r]{}{\ifboolKV[TicketCaisse]{Rendu}{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}{\PfCPrixInsulte*{\PrixTicket{\fpeval{\useKV[TicketCaisse]{Especes}-\PfCTCTotal}}}}}\\% + \\% + \Block{1-4}{\footnotesize\useKV[TicketCaisse]{DateAchat}\qquad\useKV[TicketCaisse]{HeureAchat}}&&&\\% + \end{NiceTabular} + }% +}%
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex index 11355d5d796..beee6278fa8 100644 --- a/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex +++ b/Master/texmf-dist/tex/latex/profcollege/PfCTrio.tex @@ -1,9 +1,11 @@ \newlength\PfCTrioHauteur% \newcounter{PfCTrioLettre}% -\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false}% +\setKVdefault[Trio]{Largeur=15pt,Graines=false,Repere=false,Cibles=false,Ligne=1,Colonne=1,Vide=false,VideRepere=false,Relatifs=false,Ecole=false,Horizontal=false,Vertical=false,DiagonaleM=false,DiagonaleD=false,NonAlea=false,NbSolutions=false}% \defKV[Trio]{Graine=\setKV[Trio]{Graines}}% \defKV[Trio]{Cible=\setKV[Trio]{Cibles}}% +\defKV[Trio]{Liste=\setKV[Trio]{NonAlea}}% +\defKV[Trio]{NbSolution=\setKV[Trio]{NbSolutions}}% \NewDocumentCommand\TrioCalculs{mmm}{% Les combinaisons Trio de #1, #2 et #3 sont :% @@ -17,129 +19,142 @@ \end{enumerate}% }% +\NewDocumentCommand\TrioTestCible{O{\useKV[Trio]{Cible}}mmm}{% + \xintifboolexpr{% + \fpeval{#2*#3+#4}==#1% + || \fpeval{#2*#3-#4}==#1% + || \fpeval{#3*#4+#2}==#1% + || \fpeval{#3*#4-#2}==#1% + || \fpeval{#4*#2+#3}==#1% + || \fpeval{#4*#2-#3}==#1% + % ajout pour une cible négative + || \fpeval{#3-#4*#2}==#1% + || \fpeval{#4-#2*#3}==#1% + || \fpeval{#2-#3*#4}==#1% + }{\xdef\PfCRetourTestCible{1}}{\xdef\PfCRetourTestCible{0}}% +}% + \NewDocumentCommand\Trio{o}{% - \setcounter{PfCTrioLettre}{0} + \setcounter{PfCTrioLettre}{0}% \useKVdefault[Trio]% \setKV[Trio]{#1}% + \xdef\PfCTitiH{0}% + \xdef\PfCTitiV{0}% + \xdef\PfCTitiDM{0}% + \xdef\PfCTitiDD{0}% + \ifboolKV[Trio]{Horizontal}{\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{Vertical}{\xdef\PfCTitiH{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{DiagonaleM}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{DiagonaleD}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}}{}% \ifboolKV[Trio]{Graines}{\PfCGraineAlea{\useKV[Trio]{Graine}}}{}% - \ifboolKV[Trio]{Ecole}{\xdef\PfCTrioMaxA{5}\xdef\PfCTrioMaxB{3}}{\xdef\PfCTrioMaxA{7}\xdef\PfCTrioMaxB{5}} + \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 - \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]{NonAlea}{% + \xdef\faa{\useKV[Trio]{Liste}}% }{% - \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}% + \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}% }{% - \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}{% + \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}}% }% - \ifboolKV[Trio]{Ecole}{\MelangeListe{\PfCTrioFoo}{25}}{\MelangeListe{\PfCTrioFoo}{49}}% \setsepchar{,}\ignoreemptyitems% - \readlist*\PfCTrioMelange{\faa}% + \greadlist*\PfCTrioMelange{\faa}% \reademptyitems% + %%%% + \ifboolKV[Trio]{Repere}{% + \xdef\PfCTrioAjout{1}% + }{% + \xdef\PfCTrioAjout{0}% + }% \setlength{\PfCTrioHauteur}{\useKV[Trio]{Largeur}+\tabcolsep}% - \begin{NiceTabular}{*{\PfCTrioNbCases}{m{\useKV[Trio]{Largeur}}}}[hvlines]% + \begin{NiceTabular}{*{\PfCTrioNbCases}{m{\useKV[Trio]{Largeur}}}}[hvlines,name=TS]% \CodeBefore% \ifboolKV[Trio]{Cibles}{% \ifboolKV[Trio]{Repere}{% \xdef\PfCTrioAjout{1}% }{% - \xdef\PfCTrioAjout{0} + \xdef\PfCTrioAjout{0}% }% - % Calculs des horizontaux + % Calculs des horizontaux + \ifnum\fpeval{\PfCTitiH}=0\relax \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}% - || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});\xintBreakFor}{}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});\xintBreakFor}{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% + \fi % Calculs des verticaux - \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}% - || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+3+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});\xintBreakFor}{}% + \ifnum\fpeval{\PfCTitiV}=0\relax + \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}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+3+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});\xintBreakFor}{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% + \fi % Calculs des diag positives (descendantes) - \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}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout});% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout}) rectangle (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout});% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout}) rectangle (\fpeval{##2+3+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});% - \xintBreakFor}{}% + \ifnum\fpeval{\PfCTitiDD}=0\relax + \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}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout}-|\fpeval{##1+\PfCTrioAjout}) rectangle (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout});% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout}-|\fpeval{##1+1+\PfCTrioAjout}) rectangle (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout});% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout}-|\fpeval{##1+2+\PfCTrioAjout}) rectangle (\fpeval{##2+3+\PfCTrioAjout}-|\fpeval{##1+3+\PfCTrioAjout});% + \xintBreakFor}{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% - % Calculs des diagonale négatives (montantes) - \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}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout+1}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+2+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout}) rectangle (\fpeval{##1+1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout});% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1-1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout}) rectangle (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+3+\PfCTrioAjout});% - \xintBreakFor% + \fi + % Calculs des diagonales négatives (montantes) + \ifnum\fpeval{\PfCTitiDM}=0\relax + \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}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout+1}-|\fpeval{##2+\PfCTrioAjout}) rectangle (\fpeval{##1+2+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout});% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+1+\PfCTrioAjout}) rectangle (\fpeval{##1+1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout});% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1-1+\PfCTrioAjout}-|\fpeval{##2+2+\PfCTrioAjout}) rectangle (\fpeval{##1+\PfCTrioAjout}-|\fpeval{##2+3+\PfCTrioAjout});% + \xintBreakFor% + }{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% + \fi }{}% \Body \ifboolKV[Trio]{Repere}{% @@ -155,11 +170,100 @@ }\\ }% \end{NiceTabular}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \ifboolKV[Trio]{NbSolutions}{% + \xdef\PfCNbSolutionH{0}% + \xdef\PfCNbSolutionV{0}% + \xdef\PfCNbSolutionDD{0}% + \xdef\PfCNbSolutionDM{0}% + \xdef\NbCibleSolution{\useKV[Trio]{NbSolution}}% + % Calculs des horizontaux + \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}]}% + \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xdef\PfCNbSolutionH{\fpeval{\PfCNbSolutionH+1}}% + \modulo{\PfCNbSolutionH}{2}% + \ifnum\remainder=0\relax% + \tikz[remember picture,overlay,transform canvas={yshift=0.25\PfCTrioHauteur}]\draw[Crimson,line width=2pt] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) -- (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+3+\PfCTrioAjout-1}.center);% + \else% + \tikz[remember picture,overlay,transform canvas={yshift=-0.25\PfCTrioHauteur}]\draw[Crimson,line width=2pt] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) -- (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+3+\PfCTrioAjout-1}.center);% + \fi% + }{}% + }% + }% + % Calculs des verticaux + \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}]}% + \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xdef\PfCNbSolutionV{\fpeval{\PfCNbSolutionV+1}}% + \modulo{\PfCNbSolutionV}{2}% + \ifnum\remainder=0\relax% + \tikz[remember picture,overlay,transform canvas={xshift=-0.25\PfCTrioHauteur}]\draw[NavyBlue,line width=2pt] (TS-\fpeval{##1+\PfCTrioAjout}-\fpeval{##2+\PfCTrioAjout}.center) -- (TS-\fpeval{##1+3+\PfCTrioAjout-1}-\fpeval{##2+\PfCTrioAjout}.center);% + \else% + \tikz[remember picture,overlay,transform canvas={xshift=0.25\PfCTrioHauteur}]\draw[NavyBlue,line width=2pt] (TS-\fpeval{##1+\PfCTrioAjout}-\fpeval{##2+\PfCTrioAjout}.center) -- (TS-\fpeval{##1+3+\PfCTrioAjout-1}-\fpeval{##2+\PfCTrioAjout}.center);% + \fi% + }{}% + }% + }% + % Calculs des diag positives (descendantes) + \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}]}% + \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xdef\PfCNbSolutionDD{\fpeval{\PfCNbSolutionDD+1}}% + \modulo{\PfCNbSolutionDD}{2}% + \ifnum\remainder=0\relax% + \tikz[remember picture,overlay]\draw[Orchid,line width=2pt,transform canvas={xshift=0.25\PfCTrioHauteur,yshift=0.25\PfCTrioHauteur}] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) to (TS-\fpeval{##2+3+\PfCTrioAjout-1}-\fpeval{##1+2+\PfCTrioAjout}.center);% + \else% + \tikz[remember picture,overlay]\draw[Orchid,line width=2pt,transform canvas={xshift=-0.25\PfCTrioHauteur,yshift=-0.25\PfCTrioHauteur}] (TS-\fpeval{##2+\PfCTrioAjout}-\fpeval{##1+\PfCTrioAjout}.center) to (TS-\fpeval{##2+3+\PfCTrioAjout-1}-\fpeval{##1+2+\PfCTrioAjout}.center);% + \fi% + }{}% + }% + }% + % Calculs des diag négatives (ascendantes) + \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}]}% + \TrioTestCible[\NbCibleSolution]{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xdef\PfCNbSolutionDM{\fpeval{\PfCNbSolutionDM+1}}% + \modulo{\PfCNbSolutionDM}{2}% + \ifnum\remainder=0\relax% + \tikz[remember picture,overlay]\draw[Lavender,line width=2pt,transform canvas={xshift=-0.25\PfCTrioHauteur,yshift=0.25\PfCTrioHauteur}] (TS-\fpeval{##1+\PfCTrioAjout+1}-\fpeval{##2+\PfCTrioAjout}.center) to (TS-\fpeval{##1+\PfCTrioAjout-1}-\fpeval{##2+3+\PfCTrioAjout-1}.center);% + \else% + \tikz[remember picture,overlay]\draw[Lavender,line width=2pt,transform canvas={xshift=0.25\PfCTrioHauteur,yshift=-0.25\PfCTrioHauteur}] (TS-\fpeval{##1+\PfCTrioAjout+1}-\fpeval{##2+\PfCTrioAjout}.center) to (TS-\fpeval{##1+\PfCTrioAjout-1}-\fpeval{##2+3+\PfCTrioAjout-1}.center);% + \fi% + }{}% + }% + }% + }{}% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% }% \NewDocumentCommand\TrioCourt{o}{% \useKVdefault[Trio]% \setKV[Trio]{#1}% + \xdef\PfCTitiH{0}% + \xdef\PfCTitiV{0}% + \xdef\PfCTitiDM{0}% + \xdef\PfCTitiDD{0}% + \ifboolKV[Trio]{Horizontal}{\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{Vertical}{\xdef\PfCTitiH{1}\xdef\PfCTitiDM{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{DiagonaleM}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDD{1}}{}% + \ifboolKV[Trio]{DiagonaleD}{\xdef\PfCTitiH{1}\xdef\PfCTitiV{1}\xdef\PfCTitiDM{1}}{}% \setcounter{PfCTrioLettre}{\useKV[Trio]{Colonne}-1}% \ifboolKV[Trio]{Repere}{\xdef\PfCTrioNbCases{4}}{\xdef\PfCTrioNbCases{3}}% \setlength{\PfCTrioHauteur}{\useKV[Trio]{Largeur}+\tabcolsep}% @@ -169,101 +273,81 @@ \ifboolKV[Trio]{Repere}{% \xdef\PfCTrioAjout{1}% }{% - \xdef\PfCTrioAjout{0} + \xdef\PfCTrioAjout{0}% }% % 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{\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}% - || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}% + \ifnum\fpeval{\PfCTitiH}=0\relax + \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{\PfCTrioMaxA*(##2-1)+##1}]}% + \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+1}]}% + \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2-1)+##1+2}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=Cornsilk,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% + \fi% % 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{\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}% - || \fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - || \fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}% + \ifnum\fpeval{\PfCTitiV}=0\relax + \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{\PfCTrioMaxA*(##1-1)+##2}]}% + \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2}]}% + \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1+1)+##2}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{\tikz\draw[fill=LightSteelBlue,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});\xintBreakFor}{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% + \fi % 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{\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}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \xintBreakFor}{}% + \ifnum\fpeval{\PfCTitiDD}=0\relax + \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{\PfCTrioMaxA*(##2-1)+##1}]}% + \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2)+##1+1}]}% + \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##2+1)+##1+2}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \tikz\draw[fill=MistyRose,line width=2pt] (\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \xintBreakFor}{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor + }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% - % 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{\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}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% - \xintBreakFor% + \fi + % Calculs des diagonales négatives (montantes) + \ifnum\fpeval{\PfCTitiDM}=0\relax + \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{\PfCTrioMaxA*(##1+1)+##2}]}% + \xdef\PfCTrioNombreB{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1)+##2+1}]}% + \xdef\PfCTrioNombreC{\PfCTrioMelange[\fpeval{\PfCTrioMaxA*(##1-1)+##2+2}]}% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+3+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+1+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+2+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \tikz\draw[fill=LavenderBlush,line width=2pt] (\fpeval{##1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+2+\PfCTrioAjout-\useKV[Trio]{Colonne}+1}) rectangle (\fpeval{##1+1+\PfCTrioAjout-\useKV[Trio]{Ligne}+1}-|\fpeval{##2+3+\PfCTrioAjout-\useKV[Trio]{Colonne}+1});% + \xintBreakFor% + }{}% + }% + \TrioTestCible{\PfCTrioNombreA}{\PfCTrioNombreB}{\PfCTrioNombreC}% + \xintifboolexpr{\PfCRetourTestCible==1}{% + \xintBreakFor }{}% }% - \xintifboolexpr{\fpeval{\PfCTrioNombreA*\PfCTrioNombreB+\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreA*\PfCTrioNombreB-\PfCTrioNombreC}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC+\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreB*\PfCTrioNombreC-\PfCTrioNombreA}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA+\PfCTrioNombreB}==\useKV[Trio]{Cible}% - ||\fpeval{\PfCTrioNombreC*\PfCTrioNombreA-\PfCTrioNombreB}==\useKV[Trio]{Cible}}{% - \xintBreakFor}{}% - }% + \fi% }{}% \Body \ifboolKV[Trio]{Repere}{% diff --git a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty index dd1f5c9237f..d09cfda9889 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{2024/01/22}% +\def\filedate{2024/03/24}% \let\PfCfiledate\filedate% -\def\fileversion{0.99-z-z}% +\def\fileversion{0.99-A-b}% \let\PfCfileversion\fileversion% \ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]% @@ -14,6 +14,20 @@ \newif\if@shellescape \@shellescapetrue% \newif\if@amssymb \@amssymbtrue% +% +\newif\if@Euro \@Eurotrue +\newif\if@CFA \@CFAfalse +\newif\if@CFP \@CFPfalse +\newif\if@CHF \@CHFfalse +\newif\if@US \@USfalse +\newif\if@UK \@UKfalse + +\DeclareOption{CFA}{\@Eurofalse\@CFAtrue}% +\DeclareOption{CFP}{\@Eurofalse\@CFPtrue}% +\DeclareOption{CHF}{\@Eurofalse\@CHFtrue}% +\DeclareOption{UK}{\@Eurofalse\@UKtrue}% +\DeclareOption{US}{\@Eurofalse\@UStrue}% +% \DeclareOption{nonshellescape}{\@shellescapefalse}% \DeclareOption{nonamssymb}{\@amssymbfalse}% \ProcessOptions\relax% @@ -25,8 +39,8 @@ % mathématiques \RequirePackage{siunitx}% \sisetup{% - locale=FR,% - mode = match, propagate-math-font = true,% + locale=FR,%mode = match, + propagate-math-font = true,% reset-math-version = false, reset-text-family = false,% reset-text-series = false, reset-text-shape = false,% text-family-to-math = true, text-series-to-math = true,% @@ -48,6 +62,30 @@ \DeclareSIUnit{\EuRo}{€}% \DeclareSIUnit{\Dollar}{\$}% \DeclareSIUnit{\LivreSterling}{£}% +\DeclareSIUnit{\PfCCFA}{F.C.F.A.}% +\DeclareSIUnit{\PfCCFP}{F.C.F.P.}% +\DeclareSIUnit{\PfCCHF}{CHF}% + +% +\if@CFA% + \DeclareSIUnit{\DeviseDefaut}{F.C.F.A.}% +\fi% +\if@CFP% + \DeclareSIUnit{\DeviseDefaut}{F.C.F.P.}% +\fi% +\if@CHF% + \DeclareSIUnit{\DeviseDefaut}{CHF}% +\fi% +\if@Euro% + \DeclareSIUnit{\DeviseDefaut}{€}% +\fi% +\if@US% + \DeclareSIUnit{\DeviseDefaut}{\Dollar}% +\fi% +\if@UK% + \DeclareSIUnit{\DeviseDefaut}{\LivreSterling}% +\fi% + \RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs %\PassOptionsToPackage{table,svgnames}{xcolor} @@ -88,7 +126,6 @@ \RequirePackage{multido}% \RequirePackage{xlop}% -\RequirePackage{xfp}% \RequirePackage{tcolorbox}% \tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8} @@ -98,7 +135,7 @@ %https://tex.stackexchange.com/questions/58656/best-way-to-draw-a-chevron-diagram-using-tikz \usetikzlibrary{calc,shapes,arrows,tikzmark,chains,positioning,shapes.symbols,babel,fit,backgrounds}% -\RequirePackage{suffix}%pour la commande étoilée +%\RequirePackage{suffix}%pour la commande étoilée \RequirePackage{multicol}% @@ -107,7 +144,7 @@ \RequirePackage{stackengine}% \RequirePackage[thicklines]{cancel}% -\RequirePackage{fontawesome5}%Pour l'environnement Twitter +\RequirePackage{fontawesome5}% \RequirePackage{pifont}%Pour la commande \Autonomie \RequirePackage{nicematrix}% \NiceMatrixOptions{allow-duplicate-names}% @@ -115,14 +152,14 @@ \let\myoldmulticolumn\multicolumn% \AtBeginEnvironment{tabular}{\let\multicolumn\myoldmulticolumn}% -\RequirePackage{multirow}% +%\RequirePackage{multirow}% \RequirePackage{longtable} \RequirePackage{fmtcount}% \FCloadlang{french}% % https://stackoverflow.com/questions/3391103/how-to-make-the-grayed-round-box-using-tiks -\RequirePackage{environ}% +%\RequirePackage{environ}% %%%%% Quelques besoins particuliers @@ -254,28 +291,6 @@ \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}% @@ -305,7 +320,6 @@ \kern\z@}% \NewDocumentCommand\PfCdotover{}{\leavevmode\cleaders\hb@xt@ .22em{\hss $\cdot$\hss}\hfill\kern\z@}% - \makeatother% \NewDocumentCommand\pointilles{o}{% @@ -519,6 +533,37 @@ \reademptyitems% }% +\newcommand\MelangeListeNewTwo[2]{% + % #1 Liste à mélanger + % #2 Nombre d'éléments à conserver + \setsepchar{,}\ignoreemptyitems% + \readlist*\ListeInter{#1}% +% \xdef\faa{}% Liste construite + \xdef\fii{}% Liste détruite + % on crée les #2 premieres solutions. + \xintFor* ##1 in {\xintSeq{1}{#2}}\do{% + \xintifboolexpr{\ListeInterlen>1}{% + \xdef\Alea{\fpeval{randint(\ListeInterlen)}}% + \ifnum\fpeval{##1}=1\relax + \xdef\faa{\ListeInter[\Alea]}% + \else + \xdef\faa{\faa,\ListeInter[\Alea]}% + \fi + \xdef\fii{}% + \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{% + \xintifboolexpr{##2 == \Alea}{% + }{% + \xdef\fii{\fii \ListeInter[##2],}% + }% + }% + }{% + \xdef\faa{\faa \ListeInter[1]}% + }% + \readlist*\ListeInter{\fii}% + }% + \reademptyitems% +}% + %%% % Smiley %%% https://tex.stackexchange.com/questions/3695/smileys-in-latex/227226 @@ -708,12 +753,15 @@ \setsepchar[*]{,*/}\ignoreemptyitems \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{,} +\setsepchar{,}\reademptyitems %Internationalisation \def\PfCSymbolTimes{\times}% \def\PfCSymbolDiv{\div}% +\input{PfCTicketCaisse} +\input{PfCRecyclage} +\input{PfCDontCountDots} \input{PfCConversion} \input{PfCCritere} \input{PfCLego} @@ -842,7 +890,7 @@ %%% \newcommand\Puissances[2]{% \ensuremath{% - \xintifboolexpr{#2==0}{1}{\xintifboolexpr{#2>0}{\xdef\TotalP{\fpeval{#2-1}}#1\multido{\i=1+1}{\TotalP}{\times#1}}{\xdef\TotalP{\fpeval{-#2-1}}\frac{1}{#1\multido{\i=1+1}{\TotalP}{\times#1}}}}% + \xintifboolexpr{#2==0}{1}{\xintifboolexpr{#2>0}{\xdef\TotalP{\fpeval{#2-1}}#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}{\xdef\TotalP{\fpeval{-#2-1}}\frac{1}{#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}}}% }% }% |