%%% % Multiplication Japonaise %%% \def\filedateMulEthiopie{2025/08/01}% \def\fileversionMulEthiopie{0.1}% \message{-- \filedateMulEthiopie\space v\fileversionMulEthiopie}% % \setKVdefault[MulEthiopie]{Etape=0,CouleurInter=Crimson,Details=false,Aide=false} \makeatletter \NewDocumentCommand\MulEthiopie{om}{% \useKVdefault[MulEthiopie]% \setKV[MulEthiopie]{#1}% \setsepchar{x}\ignoreemptyitems% \readlist*\PfC@MulEthiopie{#2}% \reademptyitems% \ifboolKV[MulEthiopie]{Details}{% \PfM@BuildTabMulEthiopieDetaille% }{% \PfM@BuildTabMulEthiopie% }% }% \NewDocumentCommand\PfM@BuildTabMulEthiopie{}{% % Combien de lignes \edef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \edef\PfC@FacteurB{\PfC@MulEthiopie[2]}% \edef\PfC@ProduitFinal{\fpeval{\PfC@FacteurA*\PfC@FacteurB}}% \StrLen{\PfC@ProduitFinal}[\PfC@LongueurTab]% \edef\PfC@MulEthiopieTotalEtape{0}% \whiledo{\PfC@FacteurA>1}{% \quotient{\PfC@FacteurA}{2}% \edef\PfC@FacteurA{\the\intquotient}% \edef\PfC@MulEthiopieTotalEtape{\fpeval{\PfC@MulEthiopieTotalEtape+1}}% }% \colorlet{PfCCouleurMulEthiopie}{\useKV[MulEthiopie]{CouleurInter}}% \ifnum\useKV[MulEthiopie]{Etape}<3\relax% \begin{NiceTabular}{m{\fpeval{0.5*\PfC@LongueurTab}em}m{\fpeval{0.5*\PfC@LongueurTab}em}}% \CodeBefore \ifnum\useKV[MulEthiopie]{Etape}=2\relax% \xdef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \xintFor* ##1 in{\xintSeq{1}{\fpeval{\PfC@MulEthiopieTotalEtape+1}}}\do{% \ifodd\PfC@FacteurA\relax% \ifboolKV[MulEthiopie]{Aide}{\tikz \draw[fill=LightGreen] (\fpeval{##1+1+1}-|1) rectangle (\fpeval{##1+1}-|2);}{}% \else% \fi% \quotient{\PfC@FacteurA}{2}% \xdef\PfC@FacteurA{\the\intquotient}% }% \fi% \Body% \Block[draw,fill=Cornsilk]{1-2}{$\num{\PfC@MulEthiopie[1]}\times\num{\PfC@MulEthiopie[2]}$}&\\ \ifnum\useKV[MulEthiopie]{Etape}=0\relax% \num{\PfC@MulEthiopie[1]}&\num{\PfC@MulEthiopie[2]}\\% \xintFor* ##1 in{\xintSeq{1}{\PfC@MulEthiopieTotalEtape}}\do{% &\\% }% \fi% \ifnum\useKV[MulEthiopie]{Etape}>0\relax% \xdef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \xdef\PfC@FacteurB{\PfC@MulEthiopie[2]}% \xintFor* ##1 in{\xintSeq{1}{\fpeval{\PfC@MulEthiopieTotalEtape+1}}}\do{% \num{\PfC@FacteurA}&% \ifodd\PfC@FacteurA\relax% \ifnum\useKV[MulEthiopie]{Etape}=2\relax% \textcolor{PfCCouleurMulEthiopie}{\num{\PfC@FacteurB}}% \else% \num{\PfC@FacteurB}% \fi% \else% \num{\PfC@FacteurB}% \fi% \quotient{\PfC@FacteurA}{2}% \xdef\PfC@FacteurA{\the\intquotient}% \xdef\PfC@FacteurB{\fpeval{\PfC@FacteurB*2}}% \\ }% \fi% \CodeAfter% \tikz \draw[line width=1pt] (2-|2) to (last-|2);% \ifnum\useKV[MulEthiopie]{Etape}=2\relax% \xdef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \xintFor* ##1 in{\xintSeq{1}{\fpeval{\PfC@MulEthiopieTotalEtape+1}}}\do{% \ifodd\PfC@FacteurA\relax% \else% \tikz \draw[line width=1pt] (\fpeval{##1+1+0.5}-|1) to (\fpeval{##1+1+0.5}-|3);% \fi% \quotient{\PfC@FacteurA}{2}% \xdef\PfC@FacteurA{\the\intquotient}% }% \fi% \end{NiceTabular}% \else% \begin{align*} \num{\PfC@MulEthiopie[1]}\times\num{\PfC@MulEthiopie[2]}&= \xdef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \xdef\PfC@FacteurB{\PfC@MulEthiopie[2]}% \xintFor* ## 1in{\xintSeq{1}{\fpeval{\PfC@MulEthiopieTotalEtape+1}}}\do{% \ifodd\PfC@FacteurA\relax% \num{\PfC@FacteurB}\xintifForLast{}{+}% \fi% \quotient{\PfC@FacteurA}{2}% \xdef\PfC@FacteurA{\the\intquotient}% \xdef\PfC@FacteurB{\fpeval{\PfC@FacteurB*2}}% }\\ \num{\PfC@MulEthiopie[1]}\times\num{\PfC@MulEthiopie[2]}&=\mathcolor{Evidence}{\num{\fpeval{\PfC@MulEthiopie[1]*\PfC@MulEthiopie[2]}}} \end{align*} \fi% }% \NewDocumentCommand\PfM@BuildTabMulEthiopieDetaille{}{% % Combien de lignes \edef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \edef\PfC@FacteurB{\PfC@MulEthiopie[1]}% \edef\PfC@ProduitFinal{\fpeval{\PfC@FacteurA*\PfC@FacteurB}}% \StrLen{\PfC@ProduitFinal}[\PfC@LongueurTab]% \edef\PfC@MulEthiopieTotalEtape{0}% \whiledo{\PfC@FacteurA>1}{% \quotient{\PfC@FacteurA}{2}% \edef\PfC@FacteurA{\the\intquotient}% \edef\PfC@MulEthiopieTotalEtape{\fpeval{\PfC@MulEthiopieTotalEtape+1}}% }% \ifnum\useKV[MulEthiopie]{Etape}>\fpeval{\PfC@MulEthiopieTotalEtape+1}\relax% \message{Le nombre d'étapes demandé est supérieur aux \fpeval{\PfC@MulEthiopieTotalEtape+1} nécessaires à la multiplication \PfC@FacteurA x \PfC@FacteurB}% \else% \colorlet{PfCCouleurMulEthiopie}{\useKV[MulEthiopie]{CouleurInter}}% \begin{NiceTabular}{m{\fpeval{0.5*\PfC@LongueurTab}em}m{\fpeval{0.5*\PfC@LongueurTab}em}}% \Block[draw,fill=Cornsilk]{1-2}{$\num{\PfC@MulEthiopie[1]}\times\num{\PfC@MulEthiopie[2]}$}&\\ \xdef\PfC@FacteurA{\PfC@MulEthiopie[1]}% \xdef\PfC@FacteurB{\PfC@MulEthiopie[2]}% \xintFor* ##1 in{\xintSeq{1}{\useKV[MulEthiopie]{Etape}}}\do{% \num{\PfC@FacteurA}&\num{\PfC@FacteurB}% \quotient{\PfC@FacteurA}{2}% \xdef\PfC@FacteurA{\the\intquotient}% \xdef\PfC@FacteurB{\fpeval{\PfC@FacteurB*2}}% \\ }% \ifnum\useKV[MulEthiopie]{Etape}<\fpeval{\PfC@MulEthiopieTotalEtape+1}\relax% \xintFor* ##1 in{\xintSeq{\fpeval{\useKV[MulEthiopie]{Etape}+1}}{\fpeval{\PfC@MulEthiopieTotalEtape+1}}}\do{% &\\ }% \fi% \CodeAfter \tikz \draw[line width=1pt] (2-|2) to (last-|2); \end{NiceTabular}% \fi% }% \makeatother