%%% % Op\'erations pos\'es à trou %%% %% D'après https://tex.stackexchange.com/questions/277246/drawing-a-circle-around-the-numbers-in-xlop-package %\begin{document}% % %\end{document} \newcommand\PfCchiffre[2]{\tikz[remember picture] \node[inner sep=0pt](#1){#2};} \newcommand\PfCentoure[2]{\tikz[remember picture,overlay] \node[preaction={draw={\useKV[ClesOperations]{CouleurCadre}},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcommand\PfCchiffreclip[2]{% \ifboolKV[ClesOperations]{Solution}{% \xintFor* ##1 in{\xintSeq{1}{\PfCListeTroulen}}\do{% \xintifboolexpr{\thedivxlop==\PfCListeTrou[##1]}{% \color{PfCSolOp}}{}% }% }{}% \tikz[remember picture] \node[inner sep=0pt](#1){#2};% }% \newcommand\PfCentoureclip[2]{\tikz[remember picture,overlay] \node[preaction={draw={\useKV[ClesOperations]{CouleurCadre}},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcounter{divxlop}% %\newcounter{mulxlop}% %\newcounter{addxlop}% %\newcounter{subxlop}% \setKVdefault[ClesOperations]{Solution=false,CouleurCadre=LightSteelBlue,CouleurSolution=red,CouleurFond=white,CouleurVirgule=white,Listes=false} \defKV[ClesOperations]{Liste=\setKV[ClesOperations]{Listes}\xdef\PfCFooListeTrou{#1}}% \newcommand\Division[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% \ifboolKV[ClesOperations]{Listes}{% \setsepchar{,}\ignoreemptyitems% \readlist*\PfCListeTrou{\PfCFooListeTrou}% \reademptyitems% %,displayintermediary=all \opidiv[lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},intermediarystyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop}]{#2}{#3}% \ifboolKV[ClesOperations]{Solution}{}{% \foreachitem\compteur\in\PfCListeTrou{% \xdef\PfCRetiensTrou{\PfCListeTrou[\compteurcnt]}% \PfCentoureclip{A\PfCRetiensTrou}{A\PfCRetiensTrou}% }% }% }{% \opidiv[lineheight=1.5em,columnwidth=1.25em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop}]{#2}{#3}% \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% }% }% \newcommand\DivisionD[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% \opdiv[decimalsepsymbol={,},lineheight=1.5em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% }% \newcommand\Multiplication[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% \ifboolKV[ClesOperations]{Listes}{% \setsepchar{,}\ignoreemptyitems% \readlist*\PfCListeTrou{\PfCFooListeTrou}% \reademptyitems% \begingroup \setlength{\baselineskip}{1.75em} \StrLen{#3}[\PfCLongueurFacteurDeux] \ifnum\PfCLongueurFacteurDeux=1\relax \opset{lineheight=\baselineskip} % nécessaire \else \opset{lineheight=\baselineskip,displayintermediary=all,displayshiftintermediary=all} % nécessaire \fi \opmul[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},intermediarystyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \endgroup% \ifboolKV[ClesOperations]{Solution}{}{% \foreachitem\compteur\in\PfCListeTrou{% \xdef\PfCRetiensTrou{\PfCListeTrou[\compteurcnt]}% \PfCentoureclip{A\PfCRetiensTrou}{A\PfCRetiensTrou}% }% }% }{% \begingroup \setlength{\baselineskip}{2em} \StrLen{#3}[\PfCLongueurFacteurDeux] \ifnum\PfCLongueurFacteurDeux=1\relax \opset{lineheight=\baselineskip} % nécessaire \else \opset{lineheight=\baselineskip,displayintermediary=all,displayshiftintermediary=all} % nécessaire \fi \opmul[decimalsepsymbol={,},lineheight=2em,columnwidth=1.5em,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% \endgroup } }% \newcommand\Addition[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\opset{carryadd,carrystyle=\color{PfCSolOp}\scriptsize}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\opset{carryadd=false}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% \ifboolKV[ClesOperations]{Listes}{% \setsepchar{,}\ignoreemptyitems% \readlist*\PfCListeTrou{\PfCFooListeTrou}% \reademptyitems% \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle.1=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},operandstyle.2=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \ifboolKV[ClesOperations]{Solution}{}{% \foreachitem\compteur\in\PfCListeTrou{% \xdef\PfCRetiensTrou{\PfCListeTrou[\compteurcnt]}% \PfCentoureclip{A\PfCRetiensTrou}{A\PfCRetiensTrou}% }% }% }{% \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3} \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% }% }% \newcommand\Soustraction[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\opset{carrysub,carrystyle=\color{PfCSolOp}\scriptsize}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\opset{carrysub=false}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% \ifboolKV[ClesOperations]{Listes}{% \setsepchar{,}\ignoreemptyitems% \readlist*\PfCListeTrou{\PfCFooListeTrou}% \reademptyitems% \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,operandstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle=\stepcounter{divxlop}\PfCchiffreclip{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \ifboolKV[ClesOperations]{Solution}{}{% \foreachitem\compteur\in\PfCListeTrou{% \xdef\PfCRetiensTrou{\PfCListeTrou[\compteurcnt]}% \PfCentoureclip{A\PfCRetiensTrou}{A\PfCRetiensTrou}% }% }% }{% \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom,resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}% \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i} }% }% }% \NewDocumentCommand\MultiAddition{om}{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{divxlop}{0}% \ifboolKV[ClesOperations]{Solution}{\opset{carryadd,carrystyle=\color{PfCSolOp}\scriptsize}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\opset{carryadd=false}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}% \opmanyadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,vmanyoperator=bottom,resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle.d=\color{PfCCouleurVirgule}]#2 \foreach \i in {1,...,\thedivxlop}{% \PfCentoure{A\i}{A\i}% }% }% %%%%%%%%%%%%%%%%%%%%% Colorees %%%%%%%%%%%%%%%%%%% % Merci JCC %%% Seule ligne à modifier selon la convenance %%% \newcommand\couleurs{blue,red,green,blue,red,green,blue,red,green,blue,red,green}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcount\numint% \newcount\indint% \newcount\ind% \def\nnil{\nil}% \def\ExtraitCouleurs{% \ind=0% \expandafter\ExtraitCouleursAux\couleurs,\nil,% }% \def\ExtraitCouleursAux#1,{% \def\arg{#1}% \ifx\arg\nnil% \edef\cmax{\the\ind}% \else% \def\couleur{#1}% \stepcounter{coulxlop}% \stepcounter{coulxlopa}% \stepcounter{coulxlopd}% \expandafter\edef\csname PfCOpCouleurs\Roman{coulxlop}\endcsname{\couleur}% \expandafter\edef \csname op@operandstyle.1.\the\numexpr\ind+1\endcsname{% \noexpand\PfCchiffre{CA\thecoulxlop}% }% \expandafter\edef \csname op@operandstyle.2.\the\numexpr\ind+1\endcsname{% \noexpand\PfCchiffre{CB\thecoulxlopa}% }% \expandafter\edef \csname op@resultstyle.\the\numexpr\ind+1\endcsname{% \noexpand\PfCchiffre{CC\thecoulxlopd}% }% \numint = \numexpr\ind+1 \indint = 1 \ConstruitIntermediaire \advance\ind by 1 \expandafter\ExtraitCouleursAux \fi } \def\ConstruitIntermediaire{% \ifnum\numint>0 \stepcounter{coulxlopi}% \expandafter\edef\csname PfCOpCouleursi\Roman{coulxlopi}\endcsname{\couleur}% \expandafter\edef \csname op@intermediarystyle.\the\numint.\the\indint\endcsname{% \noexpand\PfCchiffre{CD\thecoulxlopi}% }% \advance\indint by 1 \advance\numint by -1 \expandafter\ConstruitIntermediaire \fi } \def\ConstruitRemainder{% \ifnum\numint>0 \stepcounter{coulxlopidiv}% \expandafter\edef\csname PfCOpCouleursid\Roman{coulxlopidiv}\endcsname{\couleur}% \expandafter\edef \csname op@remainderystyle.\the\numint.\the\indint\endcsname{% \noexpand\PfCchiffre{CE\thecoulxlopidiv}% }% \advance\indint by 1 \advance\numint by -1 \expandafter\ConstruitRemainder \fi } \newcounter{coulxlop}% \newcounter{coulxlopi}% \newcounter{coulxlopa}% \newcounter{coulxlopd}% \newcounter{coulxlopidiv}% \newcounter{coulxlopcoul}% \newcommand\PfCentoureColor[2]{% \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleurs\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcommand\PfCentoureColorR[3]{% \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleurs\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcommand\PfCentoureColorI[2]{% \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursi\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcommand\PfCentoureColorIR[2]{% \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursi\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,fill=PfCSolOp,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \newcommand\PfCentoureColorIdiv[2]{% \expandafter\edef\csname RetiensCouleur\endcsname{\csname PfCOpCouleursid\Roman{coulxlopcoul}\endcsname}\colorlet{CouleurCadre}{\RetiensCouleur}% \tikz[remember picture,overlay] \node[preaction={draw={CouleurCadre},ultra thick,opacity=1, transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{};} \makeatletter \long\def\ifnodedefined#1#2#3{% \@ifundefined{pgf@sh@ns@#1}{#3}{#2}% } \makeatother \NewDocumentCommand\MultiplicationColore{omm}{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \setcounter{coulxlop}{0}% \setcounter{coulxlopa}{0}% \setcounter{coulxlopd}{0}% \setcounter{coulxlopi}{0}% \setcounter{coulxlopcoul}{0}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% \ExtraitCouleurs% \begingroup% \setlength{\baselineskip}{1.75em}% \StrLen{#3}[\PfCLongueurFacteurDeux]% \ifnum\PfCLongueurFacteurDeux=1\relax% \opset{lineheight=\baselineskip} % nécessaire \else% \opset{lineheight=\baselineskip,displayintermediary=all,displayshiftintermediary=all} % nécessaire \fi% \opmul[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% \endgroup% \foreach \i in {1,...,\thecoulxlop}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CA\i}{% \PfCentoureColor{CA\i}{CA\i}% }{} }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopa}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CB\i}{% \PfCentoureColor{CB\i}{CB\i}% }{} }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopd}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CC\i}{% \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% }{} }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopi}{% \stepcounter{coulxlopcoul}% % La couleur est \ifnodedefined{CD\i}{% \ifboolKV[ClesOperations]{Solution}{\PfCentoureColorI{CD\i}{CD\i}}{\PfCentoureColorIR{CD\i}{CD\i}}% }{}% }% }% \newcommand\AdditionColore[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% \setcounter{coulxlop}{0}% \setcounter{coulxlopa}{0}% \setcounter{coulxlopd}{0}% \setcounter{coulxlopi}{0}% \setcounter{coulxlopcoul}{0}% \ExtraitCouleurs% \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% \foreach \i in {1,...,\thecoulxlop}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CA\i}{% \PfCentoureColor{CA\i}{CA\i}% }{}% }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopa}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CB\i}{% \PfCentoureColor{CB\i}{CB\i}% }{}% }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopd}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CC\i}{% \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% }{}% }% }% \newcommand\SoustractionColore[3][]{% \useKVdefault[ClesOperations]% \setKV[ClesOperations]{#1}% \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}% \setcounter{coulxlop}{0}% \setcounter{coulxlopa}{0}% \setcounter{coulxlopd}{0}% \setcounter{coulxlopi}{0}% \setcounter{coulxlopcoul}{0}% \ExtraitCouleurs% \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,voperator=bottom]{#2}{#3}% \foreach \i in {1,...,\thecoulxlop}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CA\i}{% \PfCentoureColor{CA\i}{CA\i}% }{} }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopa}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CB\i}{% \PfCentoureColor{CB\i}{CB\i}% }{} }% \setcounter{coulxlopcoul}{0}% \foreach \i in {1,...,\thecoulxlopd}{% \stepcounter{coulxlopcoul}% \ifnodedefined{CC\i}{% \ifboolKV[ClesOperations]{Solution}{\PfCentoureColor{CC\i}{CC\i}}{\PfCentoureColorR{CC\i}{CC\i}}% }{} }% }%