\index{Calcul litteral@Calcul littéral}\index[cle]{Distributivite@\lstinline+\NDistri+}
La commande \lstinline!\NDistri! a pour but de développer des
expressions en utilisant la simple ou la double distributivité. On
l'utilise pour développer des expressions littérales du type $(2x+3)(4x+3)$;
$2(x+3)$ ou $5x(x-2)$ ainsi que pour effectuer des calculs numériques
 du type $8\times12$; $4\times\num{6.5}+4\times\num{3.5}$.
\begin{tcolorbox}[tikzRemarque]
  Cette commande s'utilise dans tous les modes.
\end{tcolorbox}
Elle a la forme suivante :
\begin{lstlisting}[escapechar=!,belowskip=0pt]
  \NDistri[!\sffamily\textlangle clés{\sffamily\textrangle}!]{(ax+b)(cx+d)}
\end{lstlisting}
où
\begin{itemize}
\item{\sffamily\textlangle}\lstinline!clés!{\sffamily\textrangle} constituent un ensemble d'options pour paramétrer la commande (paramètres optionnels);
\item\lstinline!(ax+b)(cx+d)! est l'expression à développer avec \lstinline!a!, \lstinline!b!, \lstinline!c! et \lstinline!d! des nombres décimaux relatifs.
\end{itemize}
\begin{Code}
\NDistri{(2x+3)(4x+5)}
\end{Code}
\begin{Code}
$\NDistri{(-3x+4)(-2x-3)}$
\end{Code}
\begin{Code}
\[\NDistri{(5x+3)(4x-1)}\]
\end{Code}
\begin{Code}
\[\NDistri{2x(4x+5)}\]
\end{Code}
\begin{Code}
\[\NDistri{(2x+4)5}\]
\end{Code}
Si cette commande ne servait qu'à écrire des expressions telles que
$(2x+1)(3x-2)$, elle serait bien inutile\dots
\\Les {\sffamily paramètres optionnels} vont faire la différence.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Distributivite@\lstinline+\NDistri+!Numerique|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Numerique!Etape|mygobble}
\begin{Key}{Numerique}{false}
  permet de faire un calcul numérique basé sur le développement ou la
  factorisation.
  \begin{tcolorbox}[tikzRemarque]
    Avec cette clé \Cle{Numerique}, le premier paramètre \lstinline!a!
    est toujours nul.
  \end{tcolorbox}
  \begin{SousDescription}
  \item[La clé \Cle{Etape}]\DefautR{1}
    permet de choisir  le type de calcul :
    \begin{itemize}
    \item si la clé \Cle{Etape} vaut 0, alors on obtient un calcul complet du
      type $a(b+c)$;
    \item si la clé \Cle{Etape} vaut $-1$, alors on obtient un calcul complet du
      type $a\times b+a\times c$.
    \end{itemize}
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Codes}{}{}
\[\NDistri[Etape=0,Numerique]{3(10+2)}\]
\end{Codes}
\begin{Codes}{}{}
\[\NDistri[Etape=-1,Numerique]{3(8.5+1.5)}\]
\end{Codes}
\clearpage
Passons au c\oe ur de la commande \lstinline!\NDistri! : le calcul littéral.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Distributivite@\lstinline+\NDistri+!Etape|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!All|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!All!NomExpression|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!All!Fin|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!All!Tableau|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Lettre|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Fleches|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Fleches!CouleurFH|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Fleches!CouleurFB|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!AideMul|mygobble}
%  \index[cle]{Distributivite@\lstinline+\NDistri+!Reduction|mygobble}
%  \index[cle]{Distributivite@\lstinline+\NDistri+!Reduction!CouleurReduction|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!CouleurReduction|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!AideAdda|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!AideAddb|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!AideAdda!CouleurAide|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!AideAddb!CouleurAide|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Cours|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Cours!Lettrea|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Cours!Lettreb|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Cours!Lettrec|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Cours!Lettred|mygobble}
\begin{Key}{Etape}{1}
  écrit une des étapes du développement.  La valeur est choisie parmi
  les nombres entiers de 1 à 4.
\end{Key}
\begin{Key}{All}{false}
  écrit l'ensemble du développement d'une expression.
  \begin{SousDescription}
  \item[La clé \Cle{NomExpression}]\DefautR{A}
    modifie le nom utilisé pour repérer l'expression à développer.
  \item[La clé \Cle{Fin}]\DefautR{4}
    indique quelle est la valeur de la clé \Cle{Etape} à utiliser pour
    terminer le calcul.
    \end{SousDescription}
    \begin{tcolorbox}[tikzRemarque]
      Il faut {\em impérativement} que cette clé
      soit utilisée à l'intérieur d'un environnement mathématique type
      \lstinline!align*!. De plus, toutes les autres clés sont
      désactivées.
    \end{tcolorbox}
  \end{Key}
  \begin{Key}{Tableau}{false}
  affiche un tableau de multiplications associées au calcul demandé.\PfCMAJ{0.99-z-b}
\end{Key}
\begin{Key}{Lettre}{x}
  permet de modifier le \og nom\fg{} de la lettre utilisée dans un
  calcul littéral : $h$ pour une hauteur, $n$ pour un nombre\dots
\end{Key}
\begin{KeyD}{Fleches}{false}
  fait apparaître la (ou les) flèche(s) du développement.
  
  \begin{SousDescription}
  \item[La clé \Cle{CouleurFH}]\DefautR{blue}
    modifie la couleur des flèches hautes.
  \item[La clé \Cle{CouleurFB}]\DefautR{red}
    modifie la couleur des flèches basses.
  \end{SousDescription}
\end{KeyD}
\begin{Key}{AideMul}{false}
  fait apparaître le signe multiplicatif entre les deux facteurs.
  \begin{tcolorbox}[tikzRemarque]
  Cette aide n'est pas nécessaire quand le deuxième facteur est un
  nombre seul\dots
%\begin{Codes}[listing side text,colback=Crimson!15,colframe=Crimson!50,]{0.5}{\small}
%\[\NDistri[]{-2}{4}{0}{2}\]
%\end{Codes}
\end{tcolorbox}
\end{Key}
%\begin{Key}{Reduction}{false}
%  souligne les termes à regrouper {\em uniquement} dans la double distributivité et à l'étape 3.
%    \begin{SousDescription}
%  \item[La clé \Cle{CouleurReduction}]\DefautR{black}
%    change la couleur {\em du soulignement}.
%  \end{SousDescription}
%\end{Key}
\begin{Key}{CouleurReduction}{-}
  souligne, avec la couleur choisie, les termes à regrouper {\em uniquement} dans la double distributivité et à l'étape 3.
\end{Key}
\begin{KEYSl}{\Cle{AideAdda} et \Cle{AideAddb}}{false}
  fait apparaître l'écriture du développement considéré sous la forme
  :
  \begin{itemize}
  \item[$\star$] $k(a+b)$ avec la clé \Cle{AideAdda} ou \Cle{AideAddb};
  \item[$\star$] $(a+b)(c+d)$ avec les clés \Cle{AideAdda} et \Cle{AideAddb}.
  \end{itemize}
    \begin{SousDescription}
  \item[La clé \Cle{CouleurAide}]\DefautR{red}
    modifie la couleur de l'aide apportée par les clés \Cle{AideAdda}
    et \Cle{AideAddb}.
  \end{SousDescription}
\end{KEYSl}
\begin{Key}{Cours}{false}
  affiche les formules du cours.
  \begin{SousDescription}
  \item[Les clés \Cle{Lettrea}, \Cle{Lettreb}, \Cle{Lettrec} et \Cle{Lettred}]\PfCMAJ{0.99-z-w}\DefautR{a/b/c/d} permettent de modifier le nom des variables intervenant dans la formule du cours.
    \item[Les clés \Cle{AideMul}, \Cle{Fleches}, \Cle{AideAdda} et \Cle{AideAddb}] sont aussi disponibles.
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Codes}[listing side text]{0.4}{\small}
Développer l'expression $A=\NDistri{(2x+3)(4x-1)}$.
\begin{align*}
  A & = \NDistri{(2x+3)(4x-1)}\\
  A & = \NDistri[Etape=2]{(2x+3)(4x-1)}\\
  A & = \NDistri[Etape=3]{(2x+3)(4x-1)}\\
  A & = \NDistri[Etape=4]{(2x+3)(4x-1)}
\end{align*}
\end{Codes}
\begin{Codes}[listing side text]{0.4}{\small}
Développer l'expression $B=\NDistri{-3x(4x+2)}$.
\begin{align*}
  B & = \NDistri{-3x(4x+2)}\\
  B & = \NDistri[Etape=2]{-3x(4x+2)}\\
  B & = \NDistri[Etape=3]{-3x(4x+2)}\\
  B & = \NDistri[Etape=4]{-3x(4x+2)}
\end{align*}
\end{Codes}
\begin{multicols}{2}
\begin{Exemple}[]{\small}
Développer l'expression
\[C=\NDistri{(1.5x+3)(4-0.5x)}\]
\begin{align*}
  C & = \NDistri{(1.5x+3)(4-0.5x)}\\
  C & = \NDistri[Etape=2]{(1.5x+3)(4-0.5x)}\\
  C & = \NDistri[Etape=3]{(1.5x+3)(4-0.5x)}\\
  C & = \NDistri[Etape=4]{(1.5x+3)(4-0.5x)}
\end{align*}
\end{Exemple}
\begin{Exemple}[]{\small}
\begin{align*}
  \NDistri[All]{(2x+4)(3x+7)}
\end{align*}
\begin{align*}
  \NDistri[All,NomExpression=E]{(3x-5)(-5x+7)}
\end{align*}
\end{Exemple}
\end{multicols}
\begin{Exemple}[]{\small}
\begin{align*}
  \NDistri[All,Fin=3]{(3x+1)3x} 
\end{align*}
\end{Exemple}
Néanmoins, il faut veiller à \og la bonne\fg{} écriture des calculs
obtenus grâce à la clé \Cle{All}.
\begin{multicols}{2}
  \begin{Codes}{}{}
\begin{align*}
  \NDistri[All,NomExpression=Z,Fin=3]{-1(5x-2)}
\end{align*}
\end{Codes}
\begin{Codes}{}{}
\begin{align*}
  Z&=\NDistri{-1(5x-2)}\\
  Z&=\NDistri[Etape=2]{-1(5x-2)}\\
  Z&=\NDistri[Etape=4]{-1(5x-2)}
\end{align*}
\end{Codes}
\end{multicols}
%On peut opter pour présenter les calculs sous la forme d'un tableau.

\begin{Codes}[listing side text]{0.5}{\small}
\NDistri[Tableau]{(2x-7)(4x-2)}
\end{Codes}
  \begin{Codes}[listing side text]{0.5}{\small}
\NDistri[Tableau]{-7(4x-2)}
\end{Codes}
  \begin{Codes}[listing side text]{0.5}{\small}
\NDistri[Tableau]{2x(4x-2)}
\end{Codes}
Il n'y a pas de clé prévue pour un développement direct {\em en ligne}. Deux raisons à cela :
  \begin{itemize}
  \item pédagogiquement, l'intérêt est très limité car cela engendre davantage d'erreurs de calculs;
  \item un \lstinline!\multido!\footnote{En utilisant le package {\color{DodgerBlue}\ttfamily multido}.} fait le travail.
  \end{itemize}
  \begin{Codes}{}{}
$A\multido{\i=1+1}{4}{=\NDistri[Etape=\i]{(2x+4)(7x+8)}}$
\end{Codes}

\begin{Exemple}[]{}
\NDistri{(5n-2)(-3n+7)}

\NDistri{(a-1)(-a+1)}
\end{Exemple}
Des lettres moins {\em conventionnelles}\footnote{Ici, un élément du
  package {\color{DodgerBlue}\ttfamily fontawesome5}.} peuvent être utilisées mais il
faut être prudent pour les protéger du mode mathématique\footnote{La
  commande \lstinline!\\text\{\}! provient du recommandé package
  \lstinline!mathtools!. Il est chargé par le package \lstinline!ProfCollege!.} :
\begin{Codes}[listing side text]{0.275}{}
\NDistri[Lettre=\text{\faRocket},Etape=3]{(2x+3)(5x+6)}
\end{Codes}
\begin{tcolorbox}[tikzRemarque]
  Les clés ne se transmettent pas !
  \begin{Codes}[listing side text,colback=Crimson!15,colframe=Crimson!50,]{0.355}{\small}
\small
\begin{align*}
  D & =\NDistri[Lettre=\text{\faRocket}]{(2x+3)(5x+6)}\\
  D & =\NDistri[Etape=2]{(2x+3)(5x+6)}
\end{align*}
\end{Codes}
\end{tcolorbox}
\begin{Code}
\[\NDistri[Fleches]{2x(3x-7)}\]
\end{Code}
\begin{Code}
\[\NDistri[Fleches]{(-2x+3)4x}\]
\end{Code}
\begin{Code}
\[\NDistri[Fleches]{(-2x+3)(-4x+2)}\]
\end{Code}
\begin{Code}
\[\NDistri[Fleches,CouleurFH=purple,%
  CouleurFB=cyan]{(-2x+3)(-4x+2)}\]
\end{Code}

\begin{Code}
% Multiplication entre facteurs.
\[\NDistri[AideMul]{(-2x+3)(-4x+2)}\]
  
\[\NDistri[AideMul]{-2x(-4x+2)}\]
\end{Code}
\begin{Codes}[listing side text]{0.25}{\small}
\[\NDistri[Etape=3,CouleurReduction=blue]{(-2x+3)(-4x+2)}\]
\end{Codes}
\clearpage
\begin{multicols}{2}
\begin{Exemple}[]{}
\NDistri[AideAddb]{2x(4x-1)}

\NDistri[AideAdda]{(-3x-5)2}
\end{Exemple}
\begin{Exemple}[]{}
\NDistri[AideAdda]{(-5x-2)(3x-1)}

\NDistri[AideAddb]{(-5x-2)(3x-1)}
\end{Exemple}
\end{multicols}
%\begin{Code}
%\NDistri[AideAdda,AideAddb]{-5}{-2}{3}{-1}
%\end{Code}
  \begin{Codes}[listing side text]{0.235}{}
\NDistri[AideAdda,AideAddb,CouleurAide=purple]{(-5x-2)(3x-1)}      
\end{Codes}
\begin{Codes}[listing side text]{0.4}{}
\NDistri[Cours]{(2x+3)(4x+5)}
\end{Codes}
\begin{Codes}[listing side text]{0.55}{}
\NDistri[Cours,Fleches,AideMul,
  AideAddb]{(2x+3)(4x-5)}
\end{Codes}
\begin{Codes}[listing side text]{0.35}{\small}
% Noter le 0 comme premier argument.
\NDistri[Cours,Fleches,AideMul,AideAddb]{3(4x-5)}

\vspace{1cm}

\NDistri[Cours,Fleches,AideMul,AideAddb]{3x(4x-5)}
\end{Codes}
%\clearpage
Un résumé des clés présentées est fourni par l'exemple ci-dessous.
\begin{Codes}[]{0.5}{\footnotesize}
\begin{align*}
  A&=\NDistri{(-5x-2)(3x-1)}\\
  A&=\NDistri[AideMul,AideAdda,AideAddb]{(-5x-2)(3x-1)}\\[5mm]
  A&=\NDistri[Fleches,CouleurFH=orange,CouleurFB=black,AideMul,AideAdda,AideAddb]{(-5x-2)(3x-1)}\\[5mm]
  A&=\NDistri[Etape=2]{(-5x-2)(3x-1)}\\
  A&=\NDistri[Etape=3,CouleurReduction=purple]{(-5x-2)(3x-1)}\\
  A&=\NDistri[Etape=4]{(-5x-2)(3x-1)}
\end{align*}
\end{Codes}
\clearpage
Les expressions peuvent être écrites sans ordre préétabli.
\begin{Code}
% Seul le premier facteur est du type a+bx.
\begin{align*}
  A&=\NDistri[]{(2+3x)(4x+5)}\\
  A&=\NDistri[Etape=2]{(2+3x)(4x+5)}\\
  A&=\NDistri[Etape=3]{(2+3x)(4x+5)}\\
  A&=\NDistri[Etape=4]{(2+3x)(4x+5)}
\end{align*}
\end{Code}
\begin{Code}
\begin{align*}
  B&=\NDistri[]{(2+3x)(4+5x)}\\
  B&=\NDistri[Etape=2]{(2+3x)(4+5x)}\\
  B&=\NDistri[Etape=3]{(2+3x)(4+5x)}\\
  B&=\NDistri[Etape=4]{(2+3x)(4+5x)}
\end{align*}
\end{Code}
\begin{Codes}[listing side text]{0.35}{}
\begin{align*}
  C&=\NDistri[]{(2+3x)(4+5x)}\\
  C&=\NDistri[Etape=2]{(2+3x)(4+5x)}\\
  C&=\NDistri[Etape=3]{(2+3x)(4+5x)}\\
  C&=\NDistri[Etape=4]{(2+3x)(4+5x)}
\end{align*}
\end{Codes}
\begin{Codes}{}{}
\begin{align*}
  A&=\NDistri[RAZ,Etape=1]{(2+3x)(4+2x)}-\NDistri[Etape=1]{(x+2)(-4+x)}\\
  A&=\NDistri[Etape=2]{(2+3x)(4+2x)}-(\NDistri[Etape=2]{(x+2)(-4+x)})\\
  A&=\NDistri[Etape=3]{(2+3x)(4+2x)}-(\NDistri[Etape=3]{(x+2)(-4+x)})\\
  A&=\NDistri[Etape=4]{(2+3x)(4+2x)}-(\NDistri[Etape=4]{(x+2)(-4+x)})\\
  A&=\NDistri[Etape=4,Somme]{(2+3x)(4+2x)}+\NDistri[Oppose,Etape=4,Difference]{(x+2)(-4+x)}\\
  A&=\Resultat
\end{align*}
\end{Codes}
\clearpage
\subsection*{Les tuiles algébriques}
Pour introduire la distributivité, on peut utiliser des tuiles algébriques. On utilisera alors la clé suivante.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Distributivite@\lstinline+\NDistri+!Tuile|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Tuile!Vide|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Tuile!Vide!Reperes|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Tuile!Impression|mygobble}
\begin{KeyS}{Tuile}{false}
  affiche le calcul de distributivité en utilisant des tuiles algébriques.
  \begin{SousDescription}
  \item[La clé \Cle{Vide}]\Defaut{false}
    n'affiche pas le calcul de distributivité mais uniquement les tuiles correspondantes au produit demandé.
    \begin{SSDescription}
    \item[La clé \Cle{Reperes}]\Defaut{false}
      affiche des repères de positionnement des tuiles.\PfCMAJ{0.99-z-f}
    \end{SSDescription}
  \item[La clé \Cle{Impression}]\Defaut{false}
    utilise des tuiles non colorées pour l'impression.
  \end{SousDescription}
\end{KeyS}
\end{tcolorbox}
\begin{multicols}{2}
  \begin{Codes}[]{0.4}{\small}
\NDistri[Tuile,Vide]{(2x+3)(x-2)}
\end{Codes}
  \begin{Codes}[]{0.4}{\small}
\NDistri[Tuile,Vide,Reperes]{(2x+3)(x-2)}
\end{Codes}
\end{multicols}
\begin{multicols}{2}
\begin{Codes}[]{0.4}{\small}
\NDistri[Tuile]{(2x+3)(x-2)}
\end{Codes}
\begin{Codes}[]{0.4}{\small}
\NDistri[Tuile]{(-2x+3)(x-2)}
\end{Codes}
\end{multicols}
\clearpage
On dispose également des commandes suivantes\footnote{Sur une idée initiale de Michaël Marchal.} permettant de positionner des tuiles :
\begin{itemize}
\item \lstinline!\SachetTuile{}!
\item \lstinline!\SachetTuileRegroupe{}!
\item et \lstinline!\SachetTuileDegroupe{}!
\end{itemize}
\begin{multicols}{3}
\begin{Codes}[]{}{\footnotesize}
\SachetTuile{24}
\end{Codes}
\begin{Codes}[]{}{\footnotesize}
\SachetTuileRegroupe{3*24}
\end{Codes}
\begin{Codes}[]{}{\footnotesize}
\SachetTuileDegroupe{3*24}
\end{Codes}
\end{multicols}
Enfin, la commande \lstinline!\TuileLibre! permet d'imager la réduction d'expression littérale.
\begin{tcolorbox}[tikzcle]%
\begin{Key}{Unite}{\Lg[mm]{5}}
  modifie l'unité de longueur utilisée pour construire les tuiles.
\end{Key}
\begin{KEYSl}{\Cle{CouleurPositif} / \Cle{CouleurNegatif}}{LightGreen/LightCoral}
  modifie la couleur utilisée pour les expressions « positives » / « négatives ».
\end{KEYSl}
%\begin{Key}{CouleurNegatif}{LightCoral}
%  modifie la couleur utilisée pour les expressions « négatives ».
%\end{Key}
\begin{KEYSl}{\Cle{CouleurSachetDizaine} / \Cle{CouleurSachetUnite}}{red}
  modifie la couleur utilisée pour les dizaines / unités de la commande \lstinline!\\SachetTuile\{\}!.
\end{KEYSl}
%\begin{Key}{CouleurSachetUnite}{green}
%  modifie la couleur utilisée pour les unités de la commande \lstinline!\\SachetTuile\{\}!.
%\end{Key}
\begin{Key}{EcartH}{2mm}
  modifie l'écart horizontal des pièces constituant un monôme.
\end{Key}
\begin{Key}{EcartV}{2mm}
  modifie l'écart vertical des pièces constituant un monôme.
\end{Key}
\end{tcolorbox}
La version étoilée de la commande supprime l'affichage de la légende de cahque expression.
\begin{Codes}[]{}{\footnotesize}
$\TuileLibre[Unite=3mm]{-4x+3-x^2+2x+1+2x^2}\qquad=\qquad \TuileLibre[Unite=3mm]{x^2-2x+4}$
\end{Codes}
\begin{multicols}{2}
  \begin{Codes}[]{}{\footnotesize}
\TuileLibre[%
Unite=3mm,
CouleurPositif=LightSteelBlue,
CouleurNegatif=Purple]{-4n+2n^2+5}
\end{Codes}
\begin{Codes}[]{}{\footnotesize}
\TuileLibre*[
Unite=3mm,
CouleurPositif=NavyBlue,
CouleurNegatif=Orange]{-4n+2n^2+5}
\end{Codes}
\end{multicols}
\clearpage
\subsection*{Somme et différence de développements}
Qu'en est-il de la somme ou la différence de deux développements ? On
peut procéder comme sur l'exemple ci-dessous où le calcul final est à faire à la main\dots
{\setlength{\abovedisplayskip}{0pt}%
\begin{Codes}{}{}
\begin{align*}
  A&=\NDistri[Etape=1]{(4x+5)(6x+7)}+\NDistri[Etape=1]{(2x-3)(5x-1)}\\
  A&=\NDistri[Etape=2]{(4x+5)(6x+7)}+\NDistri[Etape=2]{(2x-3)(5x-1)}\\
  A&=\NDistri[Etape=3]{(4x+5)(6x+7)}+\NDistri[Etape=3]{(2x-3)(5x-1)}\\
  A&=\NDistri[Etape=4]{(4x+5)(6x+7)}+\NDistri[Etape=4]{(2x-3)(5x-1)}\\
  A&=34x^2+41x+38
\end{align*}
\end{Codes}
}

\bigskip

Ce serait un peu bête, non ? Pour l'automatiser, nous disposons de
trois clés et d'une {\em commande}.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Distributivite@\lstinline+\NDistri+!RAZ|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Somme|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Difference|mygobble}
  \index[cle]{Distributivite@\lstinline+\NDistri+!Difference!Oppose|mygobble}
  \begin{Key}{RAZ}{false}
    réinitialise tous les calculs liés à une somme (ou à une différence)
    de développements.
  \end{Key}
  \begin{Commande}{\lstinline!\\Resultat!}{}{}
    affiche le résultat final en se basant sur les clés \Cle{Somme} et \Cle{Difference}.
  \end{Commande}
  \begin{Key}{Somme}{false}
    effectue la somme des divers coefficients d'un développement. Il
    faut positionner la clé {\em uniquement} à la dernière étape et sur
    tous les développements nécessitant une somme.
  \end{Key}
  \begin{Key}{Difference}{false}
    effectue la différence des divers coefficients d'un développement. Il
    faut positionner la clé {\em uniquement} à la dernière étape et sur
    tous les développements nécessitant une différence.
    \begin{SousDescription}
    \item[La clé \Cle{Oppose}]\DefautR{false}
      fait apparaître une ligne de calcul supplémentaire pour permettre
      l'utilisation de la propriété \og soustraire un nombre, c'est ajouter
      son opposé\fg.
    \end{SousDescription}
  \end{Key}
\end{tcolorbox}
{\setlength{\abovedisplayskip}{0pt}%
\begin{Codes}{}{}
\begin{align*}
  A&=\NDistri[RAZ,Etape=1]{(4x+5)(6x+7)}+\NDistri[Etape=1]{(2x-3)(5x-1)}\\
  A&=\NDistri[Etape=2]{(4x+5)(6x+7)}+\NDistri[Etape=2]{(2x-3)(5x-1)}\\
  A&=\NDistri[Etape=3]{(4x+5)(6x+7)}+\NDistri[Etape=3]{(2x-3)(5x-1)}\\
  A&=\NDistri[Somme,Etape=4]{(4x+5)(6x+7)}+\NDistri[Somme,Etape=4]{(2x-3)(5x-1)}\\
  A&=\Resultat
\end{align*}
\end{Codes}
}

{\setlength{\abovedisplayskip}{0pt}%
\begin{Codes}{}{}
\begin{align}
  A&=\NDistri[RAZ,Etape=1]{(4x+5)(6x+7)}-\NDistri[Etape=1]{2x(5x-1)}\\
  A&=\NDistri[Etape=2]{(4x+5)(6x+7)}-(\NDistri[Etape=2]{2x(5x-1)})\\
  A&=\NDistri[Etape=3]{(4x+5)(6x+7)}-(\NDistri[Etape=3]{2x(5x-1)})\\
  A&=\NDistri[Somme,Etape=4]{(4x+5)(6x+7)}-(\NDistri[Difference,Etape=4]{2x(5x-1)})\\
  A&=\Resultat
\end{align}
\end{Codes}
}
{\setlength{\abovedisplayskip}{0pt}%
  \setcounter{equation}{0}
\begin{Codes}{}{}
\begin{align}
  A&=\NDistri[RAZ,Etape=1]{(4x+5)(6x+7)}-\NDistri[Etape=1]{2x(5x-1)}\\
  A&=\NDistri[Etape=2]{(4x+5)(6x+7)}-(\NDistri[Etape=2]{2x(5x-1)})\\
  A&=\NDistri[Etape=3]{(4x+5)(6x+7)}-(\NDistri[Etape=3]{2x(5x-1)})\\
  A&=\NDistri[Etape=4]{(4x+5)(6x+7)}-(\NDistri[Etape=4]{2x(5x-1)})\\
  A&=\NDistri[Somme,Etape=4]{(4x+5)(6x+7)}+\NDistri[Oppose,Difference,Etape=4]{2x(5x-1)}\nonumber\\
  A&=\Resultat
\end{align}
\end{Codes}
}
\clearpage
Basée sur une idée de Laurent {\sc Lassalle Carrere}, on peut proposer
la commande suivante :
\begin{Codes}[listing only]{}{}
\newcommand\DoubleFlecheDifference[3][]{%
  % #1 : option
  % #2 : expression 1
  % #3 : expression 2
\setKV[ClesDistributivite]{#1}%
\begin{align*}
  \useKV[ClesDistributivite]{NomExpression}&=\NDistri[#1,RAZ,Etape=1]{#2}-\NDistri[#1,Etape=1]{#3}\\
  \useKV[ClesDistributivite]{NomExpression}&=\NDistri[Etape=2]{#2}-(\NDistri[Etape=2]{#3})\\
  \useKV[ClesDistributivite]{NomExpression}&=\NDistri[Etape=3]{#2}-(\NDistri[Etape=3]{#3})\\
  \useKV[ClesDistributivite]{NomExpression}&=\ifboolKV[ClesDistributivite]{Oppose}{\NDistri[Etape=4]{#2}-(\NDistri[Etape=4]{#3})\\}{\NDistri[Somme,Etape=4]{#2}-(\NDistri[Difference,Etape=4]{#3})\\}%
  \ifboolKV[ClesDistributivite]{Oppose}{\useKV[ClesDistributivite]{NomExpression}&=\NDistri[RAZ,Somme,Etape=4]{#2}+\NDistri[Oppose,Difference,Etape=4]{#3}\\}{}
  \useKV[ClesDistributivite]{NomExpression}&=\Resultat
\end{align*}
}
\end{Codes}
\begin{Codes}{}{}
\DoubleFlecheDifference[AideAdda,AideAddb]{(4x-5)(6x-7)}{(2x-3)(5x-1)}

\DoubleFlecheDifference[Oppose]{(4x-5)(6x-7)}{(2x-3)(5x-1)}
\end{Codes}
\clearpage
\subsection*{Cas des égalités remarquables}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Distributivite@\lstinline+\NDistri+!Remarquable|mygobble}
\begin{Key}{Remarquable}{false}
  développe les expressions en utilisant les égalités remarquables.
  \begin{SousDescription}
    \item[La clé \Cle{Numerique}] est également disponible.
  \end{SousDescription}
\end{Key}
\end{tcolorbox}
\begin{Code}
\NDistri{(2x+3)^2}
\end{Code}
\begin{Code}
\NDistri{(2x-3)^2}
\end{Code}
\begin{Code}
\NDistri{(2x+3)(2x-3)}
\end{Code}
\begin{Codes}{}{}
\begin{align*}
  D&=\NDistri{(2x+3)^2}&E&=\NDistri[]{(x-4)^2}&F&=\NDistri{(3t+2)(3t-2)}\\
  D&=\NDistri[Etape=2]{(2x+3)^2}&E&=\NDistri[Etape=2]{(x-4)^2}&F&=\NDistri[Remarquable,Etape=2]{(3t+2)(3t-2)}\\
  D&=\NDistri[Etape=3]{(2x+3)^2}&E&=\NDistri[Etape=3]{(x-4)^2}&F&=\NDistri[Remarquable,Etape=3]{(3x+2)(3x-2)}
\end{align*}
\end{Codes}
\begin{Codes}{}{}
\begin{align*}
  D&=\NDistri[RAZ]{(2x+3)^2}-\NDistri[]{(4x-5)^2}\\
  D&=\NDistri[Etape=2]{(2x+3)^2}-(\NDistri[Etape=2]{(4x-5)^2})\\
  D&=\NDistri[Etape=3]{(2x+3)^2}-(\NDistri[Etape=3]{(4x-5)^2})\\
  D&=\NDistri[Somme,Etape=3]{(2x+3)^2}+\NDistri[Difference,Oppose,Etape=3]{(4x-5)^2}\\
  D&=\Resultat
\end{align*}
\end{Codes}
\begin{Codes}[listing side text]{0.5}{\footnotesize}
\NDistri[Numerique]{(30+1)^2}

\NDistri[Numerique]{(30-1)^2}

\NDistri[Remarquable,Numerique]{(30+1)(30-1)}
\end{Codes}