\index{Démontrer}\index[cle]{Pythagore@\lstinline+\NPythagore+}
La commande \lstinline!\NPythagore! permet de rédiger la solution d'un exercice basé sur le
théorème de Pythagore, sa réciproque ou la contraposée. Elle a la
forme suivante :
\begin{lstlisting}[escapechar=!,belowskip=0pt]
  \NPythagore[!\sffamily\textlangle clés{\sffamily\textrangle}!]{description des côtés du triangle}
\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{\sffamily\textlangle description des côtés du triangle{\sffamily\textrangle}} permet de donner les informations nécessaires à la résolution du théorème de Pythagore. Dans cette description, l'hypoténuse ou le côté le plus long seront repérés par l'ajout d'une étoile {\ttfamily *} après leur nom.
  \end{itemize}
  \begin{multicols}{2}
    % \begin{Codes}[listing side text]{0.5}{}
    \begin{Codes}[]{0.5}{}
% Calculer la longueur de l'hypoténuse
\NPythagore{AB*=?,AC=5,AB=7}
\end{Codes}
% \begin{Codes}[listing side text]{0.5}{}
\begin{Codes}[]{0.5}{}
% Calculer la longueur du côté [IJ]
\NPythagore{IK=7,JK*=10,IJ=?}
\end{Codes}
\end{multicols}
\begin{Codes}{0.4}{}
% Déterminer si le triangle RST est rectangle.
\NPythagore{RS=3,ST=4,TR*=5}
\end{Codes}
\subsection*{Calculer avec le théorème de Pythagore}
Les clés disponibles portent sur la
présentation générale;  les calculs ou les
figures éventuellement associées aux calculs.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Soustraction|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Egalite|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Alias|mygobble}
\begin{Key}{Soustraction}{false}
  permet d'afficher le théorème de Pythagore sous sa forme
  soustractive lorsqu'on calcule la longueur d'un côté de l'angle droit.
\end{Key}
\begin{Key}{Egalite}{false}
  permet de passer de l'écriture \og le théorème de
  Pythagore\fg{} à l'écriture \og l'égalité de Pythagore\fg\footnotemark.
\end{Key}
\begin{Key}{Alias}{\{\}}\PfCMAJ{0.99-A-p}
  supprime l'affichage de la rédaction et utilise les alias pour nommer les cotés.
\end{Key}
\end{tcolorbox}
\footnotetext{\'Ecriture qui
  était, un temps, apparue dans les programmes du cycle 4.}
\begin{Exemple}[]{}
\NPythagore[Egalite]{FT=7,BT=5,FB=?}
\end{Exemple}
\begin{multicols}{2}
\begin{Codes}{0.45}{}
\NPythagore[Soustraction]{%
  IK*=10,JK=5,IJ=?}
\end{Codes}
\columnbreak
\begin{Codes}{0.4}{}
\NPythagore[Alias={a,b,c}]{%
  FT*=7,BT=5,FB=?}
\end{Codes}
\end{multicols}
La partie \og calculs\fg{} de cette commande \lstinline!\NPythagore!
peut être paramétrée.%\footnote{Depuis la version {\ttfamily 0.99-z-o}, la clé \Cle{Exact} n'est plus utile.}.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Entier|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Racine|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Precision|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Unite|mygobble}
\begin{Key}{Entier}{false}
  supprime l'étape avec la racine carrée.
\end{Key}
\begin{Key}{Racine}{false}
  stoppe la rédaction au niveau de l'écriture de la réponse sous sa forme d'une racine carrée.
\end{Key}
\begin{Key}{Precision}{2}
  indique la précision à utiliser pour
  l'écriture de la valeur approchée de la réponse.
\end{Key}
\begin{Key}{Unite}{cm}
  permet le changement d'unité dans l'écriture finale de la longueur cherchée.
\end{Key}
\end{tcolorbox}
\begin{multicols}{2}
\begin{Exemple}[]{}
\NPythagore[Entier]{ST=6,SR=8,RT*=?}
\end{Exemple}
\begin{Exemple}[]{}
\NPythagore[Racine]{IB*=7,FB=5,FI=?}%
\end{Exemple}
\end{multicols}
\begin{Codes}[listing side text]{0.5}{}
\NPythagore[Precision=3]{%
  FI*=?,FB=6,BI=9}
\end{Codes}
\begin{tcolorbox}[tikzRemarque]
  \begin{itemize}
    \item Le calcul de la racine carrée est effectué jusqu'à la cinquième décimale.
    \item L'affichage de la réponse tient compte de la précision demandée mais également des règles mathématiques. Par exemple, on a : \[\sqrt{74}\approx\num{\fpeval{round(sqrt(74),11,1)}}\] mais avec une précision à $10^{-2}$ près, il est affiché : \[\sqrt{74}\approx\num{\fpeval{round(sqrt(74),2,1)}}.\]
    \item Pour ne pas indiquer d'unité de longueur dans les calculs, on utilise la clé \lstinline!Unite={}! \textit{localement} ou la commande \lstinline!\setKVdefault[ClesPythagore]{Unite={}}! \textit{globalement}.
    \end{itemize}
\end{tcolorbox}
%\clearpage
Dans les calculs, on remarque qu'il n'y a pas de conclusion. Pour celle-ci, chacun peut écrire celle qu'il souhaite en utilisant
la commande \lstinline!\ResultatPytha!.
\begin{Codes}[listing side text]{0.4}{}
\NPythagore[Entier]{RS=600,ST=800,RT*=?}
Le segment $[RT]$ mesure \ResultatPytha.
% Le nombre 1000 n'est pas "correctement"
% formaté avec la commande \ResultatPytha.
\end{Codes}
Mais attention, le nombre renvoyé par la commande
\lstinline!\ResultatPytha! n'est pas mis en forme automatiquement afin
d'anticiper une éventuelle réutilisation (page
\pageref{EnchainementPytha}). Cela peut se faire avec la commande
\lstinline!\Lg! (page \pageref{Grandeurs}).
\begin{Codes}[listing side text]{0.45}{}
\NPythagore[Entier]{RT*=?,RS=6,ST=8}
La longueur $RT$ est égale
à \Lg{\ResultatPytha}.
\end{Codes}
%\clearpage
%La clé suivante va permettre de remédier au changement d'unité.
\begin{multicols}{2}
  \begin{Exemple}[]{}
\NPythagore[Unite=mm]{FI*=9,BI=6,FB=?}
\end{Exemple}
\begin{Exemple}[]{}
\NPythagore[Precision=3,Unite=km]{FI*=9,BI=6,FB=?}
\end{Exemple}
\end{multicols}
%\clearpage
\subsection*{Prouver qu'un triangle est rectangle}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!ReciColonnes|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Faible|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!UnePart|mygobble}
  \begin{Key}{ReciColonnes}{false}
    permet de changer la présentation des calculs.
  \end{Key}
  \begin{Key}{Faible}{false}
    permet d'enlever \og d'après la contraposée du théorème de Pythagore\fg{} dans la rédaction.
  \end{Key}
  \begin{Key}{UnePart}{false}
    permet d'ajouter, lorsqu'elle est positionnée à \lstinline!true!, les locutions « d'une part » et « d'autre part ».
  \end{Key}
  La clé \Cle{Egalite} est également disponible.
\end{tcolorbox}
\begin{Codes}[]{0.4}{}
\NPythagore{ES*=17,RS=15,RE=8}
\end{Codes}
\begin{Codes}[]{0.4}{}
\NPythagore[Egalite]{RT*=8,RS=4.8,ST=6.4}
\end{Codes}
\begin{multicols}{2}
  \begin{Exemple}[]{\small}
\NPythagore[Faible]{IJ=5,JK=6,IK*=9}
\NPythagore[ReciColonnes]{IJ=5,JK=6,IK*=9}
\end{Exemple}
  \begin{Exemple}[]{}
\NPythagore[ReciColonnes,UnePart]{
  IJ=5,JK=6,IK*=9}
\end{Exemple}
\end{multicols}
\subsection*{Ajouter une figure}
D'un point de vue de l'enseignement, il peut être intéressant
d'associer une figure à une rédaction.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Figure|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Figure!Angle|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Figure!Echelle|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!FigureSeule|mygobble}
  \begin{KeyS}{Figure}{false}
    crée et affiche une figure cohérente au nom du triangle et
    aux valeurs utilisés.
    \begin{SousDescription}
    \item[La clé \Cle{Angle}] \DefautR{0}
      modifie l'orientation des figures.
    \item[La clé \Cle{Echelle}] \DefautR{1cm}
      modifie l'unité de longueur des figures.
    \end{SousDescription}
  \end{KeyS}
  \begin{KeyS}{FigureSeule}{false}
    crée et affiche {\em uniquement} une figure cohérente au nom du triangle et
    aux valeurs utilisés.
    \begin{SousDescription}
    \item[Les clés \Cle{Angle} et \Cle{Echelle}] sont également disponibles.
    \end{SousDescription}
  \end{KeyS}
  \begin{tcolorbox}[tikzRemarque]
    La figure n'est pas centrée; l'utilisateur peut la placer selon ses souhaits.
  \end{tcolorbox}
\end{tcolorbox}
\begin{Codes}{0.4}{}
\NPythagore[Figure]{IC*=?,IL=5,LC=6}
\end{Codes}
\begin{Codes}{0.4}{}
\NPythagore[ReciColonnes,Figure,Echelle=8mm,Angle=30]{MS*=8,MJ=6,SJ=4}
\end{Codes}
\begin{Exemple}[]{}
\NPythagore[FigureSeule,Angle=15,Echelle=7mm]{IC*=?,IL=5,LC=6}

\NPythagore[FigureSeule,Angle=30]{MS=8,MJ=6,SJ=4}
\end{Exemple}
\subsection*{\og Enchaîner\fg{} des calculs de longueurs}
On peut être amené\footnote{Situation proposée par Laurent {\sc
    Lassalle Carrere}.} à \og enchaîner\fg{} deux calculs de longueur à
l'aide du théorème de Pythagore\label{EnchainementPytha}. Si les nombres entiers et les
valeurs exactes peuvent être réutilisés sans problème, reste le cas de
la réutilisation des valeurs approchées comme sur la figure suivante\footnote{D'après
  \url{https://mep-outils.sesamath.net/manuel_numerique/diapo.php?atome=36618&ordre=1}.}.
\[\includegraphics{PythagoreSesamath-1}\]
\begin{Codes}[]{0.5}{}
\begin{multicols}{2}
  \NPythagore{ER*=?,EI=6,IE=10.5}%

  \columnbreak
  
  \NPythagore{NE*=13.5,NR=?,RE=12.09}%
\end{multicols}
\end{Codes}
Dans ce cas, si on écrit le théorème de Pythagore sous la forme :
\[\underbrace{\text{\sffamily EnchaineC}}_{\text{\sffamily ValeurC à substituer}}=\underbrace{\text{\sffamily EnchaineA}}_{\text{\sffamily ValeurA à substituer}}+\underbrace{\text{\sffamily EnchaineB}}_{\text{\sffamily ValeurB à substituer}}\]
il faut utiliser les clés ci-dessous.
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!EnchaineA|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!EnchaineB|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!EnchaineC|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!ValeurA|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!ValeurB|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!ValeurC|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!AvantRacine|mygobble}
\begin{KEYSl}{\Cle{EnchaineA}, \Cle{EnchaineB},
  \Cle{EnchaineC}}{false}
  indiquent quelle valeur doit
  être substituée.
  \begin{SousDescription}
    \item[Les clés \Cle{ValeurA},
  \Cle{ValeurB}, \Cle{ValeurC}]\Defauts{0}
  indiquent quelle valeur utiliser pour la substitution.
\end{SousDescription}
\end{KEYSl}
\begin{Key}{AvantRacine}{false}
  arrête l'écriture des calculs avant l'étape de la
  racine carrée.
\end{Key}
\end{tcolorbox}
\begin{Codes}{0.4}{}
\begin{multicols}{2}
  \NPythagore{ER*=?,EI=6,IR=10.5}%
  
  \NPythagore[EnchaineB,ValeurB=146.25,Entier]{NE*=13.5,NR=?,RE=12.09}%
\end{multicols}
\end{Codes}
% \columnbreak%
\begin{Codes}{0.4}{}
% Autre exemple.
\[\includegraphics{PythagoreSesamath-2}\]
\begin{multicols}{2}
  \NPythagore{EN*=13.5,NR=6,RE=?}%

  \NPythagore[EnchaineC,ValeurC=146.25,Entier]{ER*=12.09,RI=10.5,EI=?}%
\end{multicols}
\end{Codes}
\begin{Codes}{0.4}{}
% On peut vouloir insister sur le fait que $ER^2=\num{146.25}$ est
% l'information utile.
\begin{multicols}{2}
  \NPythagore[AvantRacine]{EN*=13.5,ER=?,RN=6}%

  \columnbreak
  
  \NPythagore[EnchaineC,ValeurC=146.25,Entier]{ER*=12.09,EI=?,IR=10.5}%
\end{multicols}
\end{Codes}
%\clearpage
On peut vouloir également enchainer les calculs avec pour objectif l'utilisation de la réciproque du théorème de Pythagore comme sur la figure suivante pour le triangle $GHM$ : est-il rectangle ?
\begin{center}
\begin{Geometrie}[CoinHD={u*(10,6.5)}]
  trace papierisometrique withcolor orange;
  pair A,B,C,D,E,F,G,H,M;
  A=pp(2,2);
  B-A=pp(3,-1.5);
  C-B=pp(4,2);
  D-A=C-B;
  E-D=pp(0,2);
  F-A=E-D;
  G-B=E-D;
  H-C=E-D;
  M=3/5[B,C];
  trace chemin(G,M,H);
  label.llft(btex A etex,A);
  label.bot(btex B etex,B);
  label.rt(btex C etex,C);
  label.urt(btex H etex,H);
  label.top(btex E etex,E);
  label.ulft(btex F etex,F);
  label.bot(btex D etex,D);
  label.llft(btex G etex,G);
  label.bot(btex M etex,M);
  trace appelation(G,B,2mm,btex 4~cm etex);
  trace appelation(F,E,2mm,btex 10~cm etex);
  trace appelation(A,B,-3mm,btex 5~cm etex);
  trace appelation(B,M,-3mm,btex 6~cm etex);
  drawoptions(withpen pencircle scaled1.5bp);
  trace polygone(A,B,C,H,E,F);
  trace chemin(F,G,H);
  trace segment(G,B);
  trace chemin(A,D,C) dashed evenly;
  trace segment(D,E) dashed evenly;
\end{Geometrie}
\end{center}
\begin{Codes}[]{0.4}{}
\NPythagore[ValeurA=52,ValeurB=32,Faible]{GH*=10,GM=7,MH=6}
\end{Codes}
\clearpage
\subsection*{Pour une remédiation}
\begin{tcolorbox}[tikzcle]
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Couleurs|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!SansMots|mygobble}
  \index[cle]{Pythagore@\lstinline+\NPythagore+!Perso|mygobble}
  \begin{Key}{Couleurs}{\{\}}\PfCMAJ{0.99-A-p}
    permet de colorier les côtés. Les couleurs, au maximum 3, sont données du plus petit côté à l'hypoténuse.
  \end{Key}
\begin{Key}{SansMots}{false}
  écrit la résolution d'un calcul avec le théorème de Pythagore uniquement sous forme de figure.
  \begin{SousDescription}
    \item[Les clés \Cle{Angle} et \Cle{Echelle}] sont également disponibles.
  \end{SousDescription}
\end{Key}
\begin{Keyl}{\Cle{Perso}}{false}
  permet de personnaliser la rédaction.\\On utilisera les commandes \lstinline!\\RedactionPythagore!, \lstinline!\\RedactionReciPythagore! associées aux commandes \lstinline!\\NomTriangle!, \lstinline!\\NomAngleDroit! (ou \lstinline!\\NomSommetB!), \lstinline!\\NomSommetA! et \lstinline!\\NomSommetC!.
\end{Keyl}
\index[cle]{Pythagore@\lstinline+\NPythagore+!AllPerso|mygobble}
\begin{Key}{AllPerso}{false}
  permet de personnaliser {\em entièrement} la rédaction du théorème de Pythagore et de sa réciproque.\\On dispose des commandes \lstinline!\\RedactionCalculsPythagore!, \lstinline!\\RedactionCalculsReciPythagore! et \lstinline!\\RedactionConclusionReciPythagore!.
\end{Key}
\end{tcolorbox}
%\clearpage
\begin{multicols}{2}
\begin{Codes}[]{0.4}{}
\NPythagore[SansMots,Echelle=7mm]{%
  AC*=?,AB=3,BC=4}
\end{Codes}
\begin{Exemple}[]{\footnotesize}
\NPythagore[SansMots,Echelle=7mm]{IK*=5,IJ=3,JK=?}
\end{Exemple}
\columnbreak
\begin{Codes}{0.375}{}
\renewcommand{\RedactionPythagore}{%
  Je sais que le triangle $\NomTriangle$ est rectangle en $\NomAngleDroit$. Donc j'applique le théorème de Pythagore :%
}
\NPythagore[Perso,Entier,Soustraction]{AB=?,AC*=10,BC=6}
\end{Codes}
\end{multicols}
\begin{Codes}[]{}{\small}
\NPythagore[Figure,Couleurs={red,green},Entier]{AB=3,BC=4,AC*=?}
\end{Codes}
\begin{Codes}[listing side text]{0.4}{}
\renewcommand\RedactionPythagore{%
  Je sais que le triangle $\NomTriangle$ est rectangle en $\pointilles[1.5cm]$. Donc j'applique le théorème de \pointilles[4cm].
}
\NPythagore[Perso,Entier]{IK*=10,IJ=?,JK=6}
\end{Codes}
\begin{Codes}[]{0.45}{\small}
\renewcommand\RedactionReciPythagore{%
  Je sais que le côté $[\NomA \NomC]$ est le plus grand côté du triangle $\NomTriangle$.}
\NPythagore[Reciproque,Perso]{IK*=8,IJ=5,JK=4}
\end{Codes}
\begin{Codes}[]{}{\footnotesize}
\renewcommand\RedactionReciPythagore{%
  Je sais que le côté $[\NomA \NomC]$ est le plus grand côté du triangle $\NomTriangle$.}%
\renewcommand\RedactionCalculsReciPythagore{%
  \begin{itemize}
  \item[$\blacktriangleright$] $\NomA \NomC^2=\pointilles[1.5cm]=\pointilles[1.5cm]$
  \item[$\blacktriangleright$] $\NomA \NomB^2+\NomB \NomC^2=\pointilles[1.5cm]+\pointilles[1.5cm]=\pointilles[1.5cm]+\pointilles[1.5cm]=\pointilles[1.5cm]$
  \item[$\blacktriangleright$] $\pointilles[1.5cm]=\pointilles[1.5cm]+\pointilles[1.5cm]$
  \end{itemize}
}%
\renewcommand\RedactionConclusionReciPythagore{%
  D'après la \pointilles[4cm] du \pointilles[4cm] de \pointilles[4cm], $\NomTriangle$ est \pointilles[4cm] en \pointilles[1cm].}%
\NPythagore[AllPerso]{AC*=17,AB=15,BC=8}
\end{Codes}