summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/ProfCollege.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-15 03:01:24 +0000
committerNorbert Preining <norbert@preining.info>2021-03-15 03:01:24 +0000
commit36607734949d1736c36ed7b9f3a12a74d7a8ce86 (patch)
tree16f4b95c6487768dc8c9ab93a82bbcfe6e7f35df /macros/latex/contrib/profcollege/latex/ProfCollege.sty
parent954d393d844eacce4354b6174613f467bcd7a257 (diff)
CTAN sync 202103150301
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/ProfCollege.sty')
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty5782
1 files changed, 3862 insertions, 1920 deletions
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index 121428955b..215caf5503 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -1,65 +1,11 @@
% Author : Christophe Poulain
% Licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
-%%%%%%%
-% 90 : Reprise d'une partie de la doc. Quelques ajouts.
-% 87-88 : amélioration \Thales. \Labyrinthe.
-% 85 : passage à lua.
-% 75 : plein de choses que j'ai oubliées :(
-% 71 : Possibilité de choisir les fontes pour les figures MP
-% 70 : Ajout de la commande \calculatrice. Coupure des calculs longs
-% pour la moyenne et médiane. Egalités remarquables pour le
-% développement. Tableau vide pour les stats.
-% 67 : préparation au dépôt sur ctan.org
-% 66 : Ajout de la commande \Ratio.
-% 62 : Refonte des commandes !\Result! - Ajout d'une commande \Result
-% dans SommeAngles. Rectification espace dans \Distri avec Reduction active.
-% 61 : Simplication d'une fraction en version longue :) - Ajout
-% d'options à la commande \lstinline!\Stat!. Ajout d'options à la
-% commande \lstinline!\Thales!.
-% 60 : Nouvelle présentation de la résolution d'une équation. Reprise
-% et ajout d'une clé à la commande \SommeAngles.
-% 59 : amélioration de la macro \Pythagore pour pouvoir enchaîner les
-% calculs. Amélioration de la macro \Reperage pour améliorer
-% la gestion de l'affichage sur les droites graduées.
-% 58 : ajout d'un affichage des angles dans les diagrammes circulaires.
-% 57 : ajout de la commande \Fraction. Ajout d'un VF dans la macro \QCM
-% 56 : ajout de commandes "utiles" :) / Modification de \SommeAngles
-% pour éviter les conflits.
-% 55 : ajout d'une clé \Cle{Longue} dans la commande \Décomposition
-% 54 : adaptations mineures :) à gmp
-% 53 : ajout de la commande \QFlash
-% 52 : ajout de la macro \QCM
-% 51 : ajout de la macro \Relie
-% 50 : Changement des clés.
-% 37 : Reprise de la macro \Distri pour qu'elle accepte des valeurs
-%décimales.
-% 36 : Ajout d'un développement numérique. Reprise de la décomposition
-% des nombres premiers (pour éviter conflit entre \newcount\c et la
-% commande \c... Suppression de "spurious blank"
-% 35 : Ajout d'une quatrième version de présentation de la résolution
-% d'une équation - Nouvelle macro : Puissances. Ajout d'une option
-% \EFacteurs pour les équations produit nul. Amélioration (rédaction)
-% de \FonctionAffine - Ajout de la couleur de fond paramétrable dans
-% les fleches PH et BH de \Propor
-% 34 : Ajout de la commande \ResultatTrigo, \ResultatThalesx... Suppression de spurious blank. Corrections typographiques. Reprise de l'affichage de la moyenne dans la commande \Stat
-% 33 : MAJ Distri : Problème d'espace en utilisant les nombres négatifs (1ere étape).
-% 32 : MAJ Pythagore : Ajout de la clé PUnite - Possibilité de récupérer la valeur numérique obtenue par la macro Pythagore - Justification des textes dans les bulles. Ajout d'un FlecheCoefDebut dans \Propor.
-% 31 : MAJ Pourcentage. Correction quelques bugs. Correction de \og spurious blank\fg. Oubli du RequirePackage{multido} :(
-% 29 : MAJ Trigo (figure reprise pour utiliser \num de siunitx)
-% 28 : Mise à jour de \Propor : flèches inversées \FlechesPH et \FlechesPB, homogénéité des flèches. Pourcentage.
-% 27 : ajout du repérage
-% 26 : ajout des schémas de proba + MAJ avec geometriesyr16 + MAJ Nombre premier.
-% 25 : ajout des formules
-% 24 : ajout d'une option pour les équations $X^2=a$
-% 23 : ajout d'une option pour les équations produit.
-% 22 : ajout d'une option TColonnes dans la macro Tableaux
-% 21 : Ajout d'une vérification dans la macro \ResolEquation - Correction de quelques bugs dans la résolution d'équation.
-% 20: ajout d'une macro simpliste (car pas beaucoup d'utilité) sur les fonctions.
-% 19 : Modification AAntécédent dans Affine + Amélioration Pythagore (Cas des triangles rectangles isocèles, dans le calcul de la longueur d'un côté)
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfCollege}[2021/01/30 v0.90 Aide pour l'utilisation de LaTeX au collège]
+\ProvidesPackage{ProfCollege}[2021/03/10 v0.95 Aide pour l'utilisation de LaTeX au collège]
+
+\RequirePackage{verbatim}
\RequirePackage{mathtools}%Amélioration des rendus
\RequirePackage{amssymb}
@@ -77,6 +23,14 @@
\newcommand\speed[1]{\SI{#1}{\kmh}}
\newcommand\Speed[1]{\SI[per-mode=symbol]{#1}{\kmh}}
+\DeclareSIUnit{\are}{a}
+\DeclareSIUnit{\annee}{an}
+\DeclareSIUnit{\mois}{mois}
+\DeclareSIUnit{\jour}{j}
+\DeclareSIUnit{\quintal}{q}
+\DeclareSIUnit{\octet}{o}
+\DeclareSIUnit{\fahrenheit}{\degree F}
+
\RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
\RequirePackage{xstring}%Gestion de chaines de caractères
\RequirePackage{simplekv}%Gestion de paramètres sous forme de clés
@@ -90,24 +44,24 @@
\if@shellescape
\RequirePackage[shellescape,latex]{gmp}%inclusion de figures metapost "à la volée"%
-\gmpoptions{everymp={prologues:=3; input PfC-LaTeX; input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie;}}
+\gmpoptions{everymp={prologues:=3; input PfC-LaTeX; input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie; input PfC-Afficheur;}}
\usempxclass{article}
+\usempxpackage{ProfCollege}
\usempxpackage[utf8]{inputenc}
\usempxpackage[T1]{fontenc}
\usempxpackage{fourier}
\usempxpackage[french]{babel}
\usempxpackage{pifont}
-\usempxpackage[locale=FR]{siunitx}
\else
\RequirePackage[latex]{gmp}%inclusion de figures metapost "à la volée"%
-\gmpoptions{everymp={prologues:=3; input PfC-LaTeX; input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie;}}
+\gmpoptions{everymp={prologues:=3; input PfC-LaTeX; input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie; input PfC-Afficheur;}}
\usempxclass{article}
+\usempxpackage{ProfCollege}
\usempxpackage[utf8]{inputenc}
\usempxpackage[T1]{fontenc}
\usempxpackage{fourier}
\usempxpackage[french]{babel}
\usempxpackage{pifont}
-\usempxpackage[locale=FR]{siunitx}
\fi
\RequirePackage{xintexpr}
@@ -138,17 +92,15 @@
\RequirePackage{stackengine}
\RequirePackage[thicklines]{cancel}
-%\ifpdftex
-%\RequirePackage[babel=true,kerning=true]{microtype}%Pour gérer le souci du ; dans tikz avec pdftex...
-%\fi
+\RequirePackage{nicematrix}%pour le tableur
% https://stackoverflow.com/questions/3391103/how-to-make-the-grayed-round-box-using-tiks
\RequirePackage{environ}
+%
-%%% 80
\ifluatex
\RequirePackage{luamplib}
-\everymplib{input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie; beginfig(1);}
+\everymplib{input PfC-Svgnames; input PfC-Constantes; input PfC-Geometrie; input PfC-Afficheur; beginfig(1);}
\everyendmplib{endfig;}
\fi
@@ -180,9 +132,9 @@
\hfil\crcr #1\crcr}}\,}
\catcode`\@=12
-%%%%%%%%%%%%%%%%%%%%%
+%%%
%% Commandes "utiles"
-%%%%%%%%%%%%%%%%%%%%%
+%%%
%encadrer avec des "sommets arrondis"
\newsavebox{\logobox}
@@ -217,9 +169,28 @@
}
}
-%%%%%%%%%%%%%%%%%
+\newcommand\MultiCol[2]{%
+ \setsepchar[*]{/}%
+ \readlist*\ListeNombreCol{#1}%
+ \setsepchar[*]{§}%
+ \readlist*\ListeContenuCol{#2}%
+ \xintFor* ##1 in {\xintSeq {1}{\ListeNombreCollen}}\do{%
+ \begin{minipage}{\ListeNombreCol[##1]\linewidth}
+ \ListeContenuCol[##1]
+ \end{minipage}%
+ \xintifboolexpr{##1<\ListeNombreCollen}{\hfill}{}%
+ }%
+}%
+
+\newcommand\Demain{%
+ \advance\day by 1%
+ \today%
+ \advance\day by -1%
+}
+
+%%%
% Tables Addition-Multiplication
-%%%%%%%%%%%%%%%%%
+%%%
\setKVdefault[Tables]{Addition=false,Multiplication=true,Seul=false,Debut=0,Fin=10,Couleur=white}
% pour mémoire
@@ -303,7 +274,6 @@
}%
}%
-
\newcommand\Tables[2][]{%
\useKVdefault[Tables]%
\setKV[Tables]{#1}%
@@ -322,15 +292,82 @@
}%
}%
-%%%%%%%%%%%%%%
+%%%
+% Rangement des nombres
+%%%
+\setKVdefault[ClesRgt]{Croissant,Decroissant=false,Strict,Fraction=false,Details=false}
+
+\DTLgnewdb{mtnumedb}%
+\DTLgnewdb{mtnumeretourdb}%
+
+\newcommand\Rangement[2][]{%
+ \useKVdefault[ClesRgt]%
+ \setKV[ClesRgt]{#1}%
+ \ifboolKV[ClesRgt]{Fraction}{%
+ \setsepchar[*]{,*/}%\ignoreemptyitems%
+ \readlist*\ListeRgt{#2}%
+ % on cherche le dénominateur commun
+ \ppcm=1\relax
+ \foreachitem\x\in\ListeRgt{%
+ \PPCM{\fpeval{\ListeRgt[\xcnt,2]}}{\fpeval{\the\ppcm}}%
+ }%
+ % On crée la liste des rangements.
+ \DTLcleardb{mtnumedb}%
+ % on les trie pour les ranger par ordre croissant
+ \foreachitem\x\in\ListeRgt{%
+ \DTLnewrow{mtnumedb}%
+ \itemtomacro\ListeRgt[\xcnt,1]\y%
+ \DTLnewdbentry{mtnumedb}{Numeric}{\fpeval{\y*\the\ppcm/\ListeRgt[\xcnt,2]}}%
+ }%
+ % On trie
+ \ifboolKV[ClesRgt]{Decroissant}{%
+ % On trie la liste
+ \dtlsort{Numeric=descending}{mtnumedb}{\dtlicompare}%
+ \ifboolKV[ClesRgt]{Details}{\ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=Numeric}{\frac{\num{\numeroDonnee}}{\num{\the\ppcm}}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}}{%
+ \ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=Numeric}{\Simplification{\numeroDonnee}{\ppcm}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}%
+ }
+ }{%
+ % On trie la liste
+ \dtlsort{Numeric}{mtnumedb}{\dtlicompare}%
+ \ifboolKV[ClesRgt]{Details}{%
+ \ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=Numeric}{\frac{\num{\numeroDonnee}}{\num{\the\ppcm}}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
+ }{%
+ \ensuremath{\DTLforeach{mtnumedb}{\numeroDonnee=Numeric}{\Simplification{\numeroDonnee}{\ppcm}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
+ }
+ }%
+ }{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeRgt{#2}%
+ % on crée la base de données des valeurs
+ \DTLcleardb{mtdb}%
+ % on les trie pour les ranger par ordre croissant
+ \foreachitem\x\in\ListeRgt{%
+ \DTLnewrow{mtdb}%
+ \itemtomacro\ListeRgt[\xcnt]\y%
+ \DTLnewdbentry{mtdb}{Numeric}{\y}%
+ }%
+ %
+ \ifboolKV[ClesRgt]{Decroissant}{%
+ % On trie la liste
+ \dtlsort{Numeric=descending}{mtdb}{\dtlicompare}%
+ \ensuremath{\DTLforeach{mtdb}{\numeroDonnee=Numeric}{\num{\numeroDonnee}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{>}{\geqslant}}}}%
+ }{%
+ % On trie la liste
+ \dtlsort{Numeric}{mtdb}{\dtlicompare}%
+ \ensuremath{\DTLforeach{mtdb}{\numeroDonnee=Numeric}{\num{\numeroDonnee}\DTLiflastrow{}{\ifboolKV[ClesRgt]{Strict}{<}{\leqslant}}}}%
+ }%
+ }
+}%
+
+%%%
% Labyrinthe
-%%%%%%%%%%%%%%
+%%%
\setKVdefault[Labyrinthe]{Lignes=6,Colonnes=3,Longueur=4,Hauteur=2,Passages=false,EcartH=1,EcartV=1,CouleurF=gray!50,Texte=\color{black}}
\newcommand\Labyrinthe[3][]{%
\useKVdefault[Labyrinthe]%
\setKV[Labyrinthe]{#1}%
- \setsepchar[*]{,*/}%\ignoreemptyitems%
+ \setsepchar[*]{,*/}%
\readlist*\ListeLaby{#2}%
\ifboolKV[Labyrinthe]{Passages}{%
\readlist*\ListeLabySol{#3}%
@@ -393,21 +430,21 @@
définitions de {\ttfamily Colonnes} et {\ttfamily Lignes} !}}%
}
-%%%%%%%%%%%%%%%
+%%%
% Calculatrice
-%%%%%%%%%%%%%%%
+%%%
%https://tex.stackexchange.com/questions/290321/mimicking-a-calculator-inputs-and-screen
-\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}
-\colorlet{whiteish}{white}
-\colorlet{orangeish}{yellow!90!red}
-\colorlet{greenish}{green!16!gray}
-\colorlet{redish}{red!80!black}
+\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}%
+\colorlet{whiteish}{white}%
+\colorlet{orangeish}{yellow!90!red}%
+\colorlet{greenish}{green!16!gray}%
+\colorlet{redish}{red!80!black}%
\tcbset{calbackground/.style={
enhanced,
@@ -427,7 +464,7 @@
colbacklower=greenish,
colframe=white,
autoparskip,
- }}
+ }}%
\newtcbox{\KY}[1][]{
enhanced,
@@ -444,7 +481,7 @@
fontupper=\footnotesize\sffamily,
coltext=orangeish,
before upper=\vrule width 0pt height 2ex depth 1ex\relax,
-}
+}%
\newtcbox{\KYm}[1][]{
enhanced,
@@ -462,7 +499,7 @@
coltext=orangeish,
before upper=\vrule width 0pt height 2ex depth 1ex\relax$,
after upper=$,
-}
+}%
\newtcbox{\KN}{
enhanced,
@@ -479,9 +516,7 @@
fontupper=\footnotesize\sffamily,
coltext=whiteish,
before upper=\vrule width 0pt height 2ex depth 1ex\relax,
-}
-
-\parindent0pt
+}%
\newtcolorbox{calc}[1][]{%
enhanced,bicolor,
@@ -504,13 +539,13 @@
at (frame.north east) {#1};}
}
-\def\MPCalculatrice#1#2{
+\def\MPCalculatrice#1#2#3{
% #1 Calcul %2 réponse
\ifluatex
\mplibforcehmode
\begin{mplibcode}
input PfC-Calculatrice;
- LCD(#1)(#2);
+ LCD(#1)(#2)(#3);
\end{mplibcode}
\else
\begin{mpost}[mpsettings={input PfC-Calculatrice;}]
@@ -519,7 +554,7 @@
\fi
}
-\setKVdefault[ClesCalculatrice]{Ecran=false}
+\setKVdefault[ClesCalculatrice]{Ecran=false,NbLignes=0}
\newcommand\Calculatrice[2][]{%
\setstackgap{L}{0.775\baselineskip}%
@@ -528,7 +563,7 @@
\ifboolKV[ClesCalculatrice]{Ecran}{%
\setsepchar[*]{,*/}%
\readlist\ListeCalc{#2}%
- \MPCalculatrice{\ListeCalc[1,1]}{\ListeCalc[1,2]}%
+ \MPCalculatrice{\ListeCalc[1,1]}{\ListeCalc[1,2]}{\useKV[ClesCalculatrice]{NbLignes}}%
}{%
\setsepchar[*]{,*/}%
\readlist\ListeCalc{#2}%
@@ -538,34 +573,49 @@
\setstackgap{L}{\baselineskip}%
}%
-
-%%%%%%%%%%%%%%%%
-%%% Questions Flash
-%%%%%%%%%%%%%%%%
+%%%
+% Questions Flash
+%%%
\tcbset{Expression/.style={colback=white,valign=center,left=0mm,right=0mm,top=1mm,bottom=1mm,colframe=white}}%
\tcbset{ExpressionSerie1/.style={colback=\useKV[ClesFlash]{Couleur1},left=0mm,right=0mm,top=1mm,bottom=1mm}}%
\tcbset{ExpressionSerie2/.style={colback=\useKV[ClesFlash]{Couleur2},left=0mm,right=0mm,top=1mm,bottom=1mm}}%
\tcbset{ExpressionSerie3/.style={colback=\useKV[ClesFlash]{Couleur3},left=0mm,right=0mm,top=1mm,bottom=1mm}}
\tcbset{ExpressionSerie4/.style={colback=\useKV[ClesFlash]{Couleur4},left=0mm,right=0mm,top=1mm,bottom=1mm}}
-\tcbset{BoiteExpression/.style={enhanced,nobeforeafter,tcbox raise
- base,colback=white,right=3.5mm,left=3.5mm,halign=center,colframe=black}}
+\tcbset{BoiteExpression/.style={enhanced,nobeforeafter,tcbox raise base,colback=white,right=3.5mm,left=3.5mm,halign=center,colframe=black}}
\newtcolorbox{CadreNombre}[1][]{%
Expression,#1}
-\setKVdefault[ClesFlash]{Hauteur=0.2\textheight,Simple=false,Intrus=false,Kahout=false,Daily=false,Expression=false,Mental=false,Mesure=false,Heure=false,Decimal=false,Operation=Multiplie,Numeration=false,Evaluation=false,Pause=false,Couleur1=blue!10,Couleur2=orange!10,Couleur3=green!10,Couleur4=yellow!10}
+\setKVdefault[ClesFlash]{Hauteur=0.2\textheight,Simple=false,Intrus=false,Kahout=false,Daily=false,Expression=false,Mental=false,Mesure=false,Heure=false,Decimal=false,Operation=Multiplie,Numeration=false,Evaluation=false,Pause=false,Couleur1=blue!10,Couleur2=orange!10,Couleur3=green!10,Couleur4=yellow!10,Numerique=false,Seul=false}
\newlength{\HauteurFlash}
-\tikzset{
- arrow/.style={
- draw,
- minimum height=1.25cm,
- inner sep=0.25em,
- shape=signal,
- signal from=west,
- signal to=east,
- signal pointer angle=150,
- }
+\def\MPAfficheur#1#2#3{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ u:=0.5u;
+ draw Afficheur(#1 div10,0);
+ draw Afficheur(#1 mod10,0) shifted(u*(1,0));
+ draw Afficheur(10,0) shifted(u*(2,0));
+ draw Afficheur(#2 div10,0) shifted(u*(3,0));
+ draw Afficheur(#2 mod10,0) shifted(u*(4,0));
+ draw Afficheur(10,0) shifted(u*(5,0));
+ draw Afficheur(#3 div10,0) shifted(u*(6,0));
+ draw Afficheur(#3 mod10,0) shifted(u*(7,0));
+ \end{mplibcode}
+ \else
+ \begin{mpost}
+ u:=0.5u;
+ draw Afficheur(#1 div10,0);
+ draw Afficheur(#1 mod10,0) shifted(u*(1,0));
+ draw Afficheur(10,0) shifted(u*(2,0));
+ draw Afficheur(#2 div10,0) shifted(u*(3,0));
+ draw Afficheur(#2 mod10,0) shifted(u*(4,0));
+ draw Afficheur(10,0) shifted(u*(5,0));
+ draw Afficheur(#3 div10,0) shifted(u*(6,0));
+ draw Afficheur(#3 mod10,0) shifted(u*(7,0));
+ \end{mpost}
+ \fi
}
\def\MPHorloge#1#2#3{
@@ -683,7 +733,7 @@
\newcommand\QFHeure{%
\begin{CadreNombre}
- {\Large L'HEURE DU JOUR est : }\raisebox{-0.9cm}{\MPHorloge{\NbHeures}{\NbMinutes}{\NbSecondes}}
+ {\Large L'HEURE DU JOUR est : }\ifboolKV[ClesFlash]{Numerique}{\raisebox{-0.3cm}{\MPAfficheur{\NbHeures}{\NbMinutes}{\NbSecondes}}}{\raisebox{-0.9cm}{{\MPHorloge{\NbHeures}{\NbMinutes}{\NbSecondes}}}}
\ifboolKV[ClesFlash]{Pause}{\pause}{}
\begin{tcolorbox}[ExpressionSerie1]
$\square$ \textbf{\ListeFlash[1,2] :}
@@ -734,26 +784,37 @@
\end{CadreNombre}
}
+\tikzset{
+ arrow/.style={
+ draw,
+ minimum height=1.25cm,
+ inner sep=0.25em,
+ shape=signal,
+ signal from=west,
+ signal to=east,
+ signal pointer angle=150,
+ }
+}
+
\newcommand\QFDaily{%
- \begin{tikzpicture}
- \begin{scope}[start chain=transition going right,node
- distance=-\pgflinewidth]
- \foreach \s in {1,...,\ListeFlashlen}{%
- \xintifboolexpr{\s = 1}{%
- \node[arrow,on chain] {\Huge\bfseries\ListeFlash[\s]};
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{tikzpicture}%
+ \begin{scope}[start chain=transition going right,node distance=-\pgflinewidth]%
+ \foreach \s in {1,...,\ListeFlashlen}{%
+ \xintifboolexpr{\s = 1}{%
+ \node[arrow,on chain] {\Huge\bfseries\ListeFlash[\s]};%
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}%
+ }{%
+ \xintifboolexpr{\s = \ListeFlashlen}{%
+ \node[arrow,on chain] {\Huge\bfseries?};%
}{%
- \xintifboolexpr{\s = \ListeFlashlen}{%
- \node[arrow,on chain] {\Huge\bfseries?};
- }{%
- \node[arrow,on chain] {\ListeFlash[\s]};
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- }
- }
- }
- \end{scope}
- \end{tikzpicture}
-}
+ \node[arrow,on chain] {\ListeFlash[\s]};%
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}%
+ }%
+ }%
+ }%
+ \end{scope}%
+ \end{tikzpicture}%
+}%
\newcommand\QFDecimal{%
\begin{CadreNombre}
@@ -761,7 +822,7 @@
\tcbox[BoiteExpression]{\num{\ListeFlash[1,1]}}
\ifboolKV[ClesFlash]{Pause}{\pause}{}
\begin{tcolorbox}[ExpressionSerie1]
- $\square$ \textbf{\'Ecriture en fraction décimale :}
+ $\square$ \textbf{\'Ecris-le en fraction décimale :}
\tcbox[BoiteExpression]{$\dfrac{\phantom{1000000}}{\phantom{1000000}}$}
\end{tcolorbox}
\ifboolKV[ClesFlash]{Pause}{\pause}{}
@@ -845,264 +906,296 @@
\end{CadreNombre}
}
+\newcommand\BoiteFlash[1]{%
+ \ifx\bla#1\bla%
+ \tcbox[BoiteExpression]{\phantom{10000000}}%
+ \else
+ \tcbox[BoiteExpression]{#1}%
+ \fi
+}
+
+\newcommand\QFVide{%
+ \begin{CadreNombre}
+ {\ListeFlash[1]}
+ \xintFor* ##1 in {\xintSeq {1}{\ListeFlashlen-1}}\do{%
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{tcolorbox}[ExpressionSerie##1]
+ \ListeFlash[1+##1]
+ \end{tcolorbox}
+ }
+ \end{CadreNombre}
+}
+
\newcommand\QFlash[2][]{%
- \useKVdefault[ClesFlash]
- \setKV[ClesFlash]{#1}
- \setlength{\HauteurFlash}{\useKV[ClesFlash]{Hauteur}}
- \colorlet{CouleurUn}{\useKV[ClesFlash]{Couleur1}}
- \colorlet{CouleurDeux}{\useKV[ClesFlash]{Couleur2}}
- \colorlet{CouleurTrois}{\useKV[ClesFlash]{Couleur3}}
- \colorlet{CouleurQuatre}{\useKV[ClesFlash]{Couleur4}}
+ \useKVdefault[ClesFlash]%
+ \setKV[ClesFlash]{#1}%
+ \setlength{\HauteurFlash}{\useKV[ClesFlash]{Hauteur}}%
+ \colorlet{CouleurUn}{\useKV[ClesFlash]{Couleur1}}%
+ \colorlet{CouleurDeux}{\useKV[ClesFlash]{Couleur2}}%
+ \colorlet{CouleurTrois}{\useKV[ClesFlash]{Couleur3}}%
+ \colorlet{CouleurQuatre}{\useKV[ClesFlash]{Couleur4}}%
\ifboolKV[ClesFlash]{Evaluation}{%
- \ifboolKV[ClesFlash]{Numeration}{%
- \setsepchar[*]{,*/}%
+ \ifboolKV[ClesFlash]{Seul}{%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
- \QFNumeration%
+ \QFVide%
}{%
- \ifboolKV[ClesFlash]{Heure}{%
+ \ifboolKV[ClesFlash]{Numeration}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \StrMid{\ListeFlash[1,1]}{1}{2}[\NbHeures]%
- \StrMid{\ListeFlash[1,1]}{3}{4}[\NbMinutes]%
- \StrMid{\ListeFlash[1,1]}{5}{6}[\NbSecondes]%
- \QFHeure%
+ \QFNumeration%
}{%
- \ifboolKV[ClesFlash]{Mesure}{%
+ \ifboolKV[ClesFlash]{Heure}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \QFMesure%
+ \StrMid{\ListeFlash[1,1]}{1}{2}[\NbHeures]%
+ \StrMid{\ListeFlash[1,1]}{3}{4}[\NbMinutes]%
+ \StrMid{\ListeFlash[1,1]}{5}{6}[\NbSecondes]%
+ \QFHeure%
}{%
- \ifboolKV[ClesFlash]{Daily}{%
- \setsepchar[*]{/}%
+ \ifboolKV[ClesFlash]{Mesure}{%
+ \setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \QFDaily%
+ \QFMesure%
}{%
- \ifboolKV[ClesFlash]{Decimal}{%
- \setsepchar[*]{,*/}%
+ \ifboolKV[ClesFlash]{Daily}{%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
- \begin{frame}
- \QFDecimal%
- \end{frame}
+ \QFDaily%
}{%
- \ifboolKV[ClesFlash]{Mental}{%
+ \ifboolKV[ClesFlash]{Decimal}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \QFMental%
+ \QFDecimal%
}{%
- \ifboolKV[ClesFlash]{Expression}{%
+ \ifboolKV[ClesFlash]{Mental}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \QFExpression%
+ \QFMental%
}{%
- \setsepchar[*]{/}%
- \readlist*\ListeFlash{#2}%
- \ifboolKV[ClesFlash]{Simple}{%
- \ListeFlash[1]
- \begin{tcolorbox}[valign=center]
- \ListeFlash[2]
- \end{tcolorbox}
+ \ifboolKV[ClesFlash]{Expression}{%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeFlash{#2}%
+ \QFExpression%
}{%
- \setsepchar[*]{*/}%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
- \ifboolKV[ClesFlash]{Kahout}{%
- \setsepchar[*]{*/}%
- \readlist*\ListeFlash{#2}%
- \begin{tcolorbox}[halign=center,valign=center]
- \ListeFlash[1,1]
+ \ifboolKV[ClesFlash]{Simple}{%
+ \ListeFlash[1]
+ \begin{tcolorbox}[valign=center]
+ \ListeFlash[2]
\end{tcolorbox}
- % \par
- \begin{multicols}{4}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=CouleurUn,halign=center,valign=center]
- \ListeFlash[1,2]
- \end{tcolorbox}
- % \hfill%
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=CouleurDeux,halign=center,valign=center]
- \ListeFlash[1,3]
- \end{tcolorbox}
- % \hfill%
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,colback=CouleurTrois,halign=center,valign=center]
- \ListeFlash[1,4]
- \end{tcolorbox}
- % \hfill%
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=CouleurQuatre,halign=center,valign=center]
- \ListeFlash[1,5]
- \end{tcolorbox}
- \end{multicols}
}{%
\setsepchar[*]{*/}%
\readlist*\ListeFlash{#2}%
- \begin{tcolorbox}[halign=center,valign=center]
- \ListeFlash[1,1]
- \end{tcolorbox}
- \begin{multicols}{4}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,2]
- \end{tcolorbox}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,3]
- \end{tcolorbox}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,boxrule=1mm,colback=white,halign=center,valign=center]
- \ListeFlash[1,4]
+ \ifboolKV[ClesFlash]{Kahout}{%
+ \setsepchar[*]{*/}%
+ \readlist*\ListeFlash{#2}%
+ \begin{tcolorbox}[halign=center,valign=center]
+ \ListeFlash[1,1]
\end{tcolorbox}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,5]
+ % \par
+ \begin{multicols}{4}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=CouleurUn,halign=center,valign=center]
+ \ListeFlash[1,2]
+ \end{tcolorbox}
+ % \hfill%
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=CouleurDeux,halign=center,valign=center]
+ \ListeFlash[1,3]
+ \end{tcolorbox}
+ % \hfill%
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,colback=CouleurTrois,halign=center,valign=center]
+ \ListeFlash[1,4]
+ \end{tcolorbox}
+ % \hfill%
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=CouleurQuatre,halign=center,valign=center]
+ \ListeFlash[1,5]
+ \end{tcolorbox}
+ \end{multicols}
+ }{%
+ \setsepchar[*]{*/}%
+ \readlist*\ListeFlash{#2}%
+ \begin{tcolorbox}[halign=center,valign=center]
+ \ListeFlash[1,1]
\end{tcolorbox}
- \end{multicols}
+ \begin{multicols}{4}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,2]
+ \end{tcolorbox}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,3]
+ \end{tcolorbox}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,boxrule=1mm,colback=white,halign=center,valign=center]
+ \ListeFlash[1,4]
+ \end{tcolorbox}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,5]
+ \end{tcolorbox}
+ \end{multicols}
+ }%
}%
}%
}%
}%
- }
+ }%
}%
}%
}%
}%
}{%
- \ifboolKV[ClesFlash]{Numeration}{%
- \setsepchar[*]{,*/}%
+ \ifboolKV[ClesFlash]{Seul}{%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
\begin{frame}
- \QFNumeration%
+ \QFVide%
\end{frame}
}{%
- \ifboolKV[ClesFlash]{Heure}{%
+ \ifboolKV[ClesFlash]{Numeration}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \StrMid{\ListeFlash[1,1]}{1}{2}[\NbHeures]%
- \StrMid{\ListeFlash[1,1]}{3}{4}[\NbMinutes]%
- \StrMid{\ListeFlash[1,1]}{5}{6}[\NbSecondes]%
\begin{frame}
- \QFHeure%
+ \QFNumeration%
\end{frame}
}{%
- \ifboolKV[ClesFlash]{Mesure}{%
+ \ifboolKV[ClesFlash]{Heure}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
+ \StrMid{\ListeFlash[1,1]}{1}{2}[\NbHeures]%
+ \StrMid{\ListeFlash[1,1]}{3}{4}[\NbMinutes]%
+ \StrMid{\ListeFlash[1,1]}{5}{6}[\NbSecondes]%
\begin{frame}
- \QFMesure%
+ \QFHeure%
\end{frame}
}{%
- \ifboolKV[ClesFlash]{Daily}{%
- \setsepchar[*]{/}%
+ \ifboolKV[ClesFlash]{Mesure}{%
+ \setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
\begin{frame}
- \QFDaily
+ \QFMesure%
\end{frame}
}{%
- \ifboolKV[ClesFlash]{Decimal}{%
- \setsepchar[*]{,*/}%
+ \ifboolKV[ClesFlash]{Daily}{%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
\begin{frame}
- \QFDecimal%
+ \QFDaily%
\end{frame}
}{%
- \ifboolKV[ClesFlash]{Mental}{%
+ \ifboolKV[ClesFlash]{Decimal}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
\begin{frame}
- \QFMental%
+ \QFDecimal%
\end{frame}
- }{
- \ifboolKV[ClesFlash]{Expression}{%
+ }{%
+ \ifboolKV[ClesFlash]{Mental}{%
\setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
\begin{frame}
- \QFExpression%
+ \QFMental%
\end{frame}
}{%
- \setsepchar[*]{/}%
- \readlist*\ListeFlash{#2}%
- \ifboolKV[ClesFlash]{Simple}{%
+ \ifboolKV[ClesFlash]{Expression}{%
+ \setsepchar[*]{,*/}%
+ \readlist*\ListeFlash{#2}%
\begin{frame}
- \ListeFlash[1]
- \begin{tcolorbox}[valign=center]
- \ListeFlash[2]
- \end{tcolorbox}
+ \QFExpression%
\end{frame}
}{%
- \setsepchar[*]{,*/}%
+ \setsepchar[*]{/}%
\readlist*\ListeFlash{#2}%
- \ifboolKV[ClesFlash]{Kahout}{%
- \setsepchar[*]{*/}%
- \readlist*\ListeFlash{#2}%
+ \ifboolKV[ClesFlash]{Simple}{%
\begin{frame}
+ \ListeFlash[1]
\begin{tcolorbox}[valign=center]
- \ListeFlash[1,1]
+ \ListeFlash[2]
\end{tcolorbox}
- \vfill
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{columns}[T]
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=CouleurUn,halign=center,valign=center]
- \ListeFlash[1,2]
- \end{tcolorbox}
- \end{column}
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=CouleurDeux,halign=center,valign=center]
- \ListeFlash[1,3]
- \end{tcolorbox}
- \end{column}
- \end{columns}
- \bigskip
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{columns}[T]
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,colback=CouleurTrois,halign=center,valign=center]
- \ListeFlash[1,4]
- \end{tcolorbox}
- \end{column}
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=CouleurQuatre,halign=center,valign=center]
- \ListeFlash[1,5]
- \end{tcolorbox}
- \end{column}
- \end{columns}
\end{frame}
}{%
- \setsepchar[*]{*/}%
+ \setsepchar[*]{,*/}%
\readlist*\ListeFlash{#2}%
- \begin{frame}
- \begin{tcolorbox}[valign=center]
- \ListeFlash[1,1]
- \end{tcolorbox}
- \vfill
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{columns}[T]
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,2]
- \end{tcolorbox}
- \end{column}
+ \ifboolKV[ClesFlash]{Kahout}{%
+ \setsepchar[*]{*/}%
+ \readlist*\ListeFlash{#2}%
+ \begin{frame}
+ \begin{tcolorbox}[valign=center]
+ \ListeFlash[1,1]
+ \end{tcolorbox}
+ \vfill
\ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,3]
- \end{tcolorbox}
- \end{column}
- \end{columns}
- \bigskip
- \ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{columns}[T]
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,boxrule=1mm,colback=white,halign=center,valign=center]
- \ListeFlash[1,4]
- \end{tcolorbox}
- \end{column}
+ \begin{columns}[T]
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=CouleurUn,halign=center,valign=center]
+ \ListeFlash[1,2]
+ \end{tcolorbox}
+ \end{column}
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=CouleurDeux,halign=center,valign=center]
+ \ListeFlash[1,3]
+ \end{tcolorbox}
+ \end{column}
+ \end{columns}
+ \bigskip
\ifboolKV[ClesFlash]{Pause}{\pause}{}
- \begin{column}{0.45\linewidth}
- \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=white,boxrule=1mm,halign=center,valign=center]
- \ListeFlash[1,5]
- \end{tcolorbox}
- \end{column}
- \end{columns}
- \end{frame}
+ \begin{columns}[T]
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,colback=CouleurTrois,halign=center,valign=center]
+ \ListeFlash[1,4]
+ \end{tcolorbox}
+ \end{column}
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=CouleurQuatre,halign=center,valign=center]
+ \ListeFlash[1,5]
+ \end{tcolorbox}
+ \end{column}
+ \end{columns}
+ \end{frame}
+ }{%
+ \setsepchar[*]{*/}%
+ \readlist*\ListeFlash{#2}%
+ \begin{frame}
+ \begin{tcolorbox}[valign=center]
+ \ListeFlash[1,1]
+ \end{tcolorbox}
+ \vfill
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{columns}[T]
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurUn!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,2]
+ \end{tcolorbox}
+ \end{column}
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurDeux!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,3]
+ \end{tcolorbox}
+ \end{column}
+ \end{columns}
+ \bigskip
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{columns}[T]
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurTrois!150,boxrule=1mm,colback=white,halign=center,valign=center]
+ \ListeFlash[1,4]
+ \end{tcolorbox}
+ \end{column}
+ \ifboolKV[ClesFlash]{Pause}{\pause}{}
+ \begin{column}{0.45\linewidth}
+ \begin{tcolorbox}[height=\HauteurFlash,colframe=CouleurQuatre!150,colback=white,boxrule=1mm,halign=center,valign=center]
+ \ListeFlash[1,5]
+ \end{tcolorbox}
+ \end{column}
+ \end{columns}
+ \end{frame}
+ }%
}%
}%
}%
}%
- }
+ }%
}%
}%
}%
@@ -1110,12 +1203,209 @@
}%
}%
-%%%%%%%%%%%%%
-%%% Fractions
-%%%%%%%%%%%%%
-\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1}
+%%%
+% Fractions
+%%%
+\setKVdefault[ClesFraction]{Rayon=2cm,Disque,Regulier=false,Segment=false,Rectangle=false,Longueur=5cm,Largeur=2cm,Cotes=5,Triangle=false,Parts=3,Couleur=green,Reponse=false,Multiple=1,Hachures=false,Epaisseur=1}
+
+\def\MPFractionTriangle#1#2#3#4#5{
+ % #1 longueur du côté
+ % #2 partage sur le côté
+ % #3 num
+ % #4 déno (attention : = #2^2)
+ % #5 couleur
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ nbtriangle=0;
+
+ vardef Ligne(expr longueur)=
+ for k=0 upto 2*(longueur-1):
+ nbtriangle:=nbtriangle+1;
+ if (k mod 2)=0:
+ M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ else:
+ M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ fi;
+ endfor;
+ enddef;
+
+ pair A,B,C;
+ A=u*(0.5,0.5);
+ B-A=(#1,0);
+ C=rotation(B,A,60);
+
+ nbparts:=#2;
+
+ path M[];
+
+ path Tria,Trir;
+ Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+
+ for k=nbparts downto 1:
+ Ligne(k);
+ endfor;
+
+ for k=1 upto #3:
+ fill M[k] withcolor #5;
+ endfor;
+
+ for k=1 upto nbparts:
+ trace segment((k/nbparts)[A,B],(k/nbparts)[A,C]);
+ trace segment((k/nbparts)[B,A],(k/nbparts)[B,C]);
+ trace segment((k/nbparts)[C,A],(k/nbparts)[C,B]);
+ endfor;
+ \end{mplibcode}
+ \else
+ \begin{mpost}
+ nbtriangle=0;
+
+ vardef Ligne(expr longueur)=
+ for k=0 upto 2*(longueur-1):
+ nbtriangle:=nbtriangle+1;
+ if (k mod 2)=0:
+ M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ else:
+ M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ fi;
+ endfor;
+ enddef;
+
+ pair A,B,C;
+ A=u*(0.5,0.5);
+ B-A=(#1,0);
+ C=rotation(B,A,60);
+
+ nbparts:=#2;
-\def\MPFractionRegulier#1#2#3#4#5{
+ path M[];
+
+ path Tria,Trir;
+ Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+
+ for k=nbparts downto 1:
+ Ligne(k);
+ endfor;
+
+ for k=1 upto #3:
+ fill M[k] withcolor #5;
+ endfor;
+
+ for k=1 upto nbparts:
+ trace segment((k/nbparts)[A,B],(k/nbparts)[A,C]);
+ trace segment((k/nbparts)[B,A],(k/nbparts)[B,C]);
+ trace segment((k/nbparts)[C,A],(k/nbparts)[C,B]);
+ endfor;
+ \end{mpost}
+ \fi
+ }
+
+ \def\MPFractionTriangleH#1#2#3#4#5#6{
+ % #1 longueur du côté
+ % #2 partage sur le côté
+ % #3 num
+ % #4 déno (attention : = #2^2)
+ % #5 couleur
+ % #6 épaisseur
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ nbtriangle=0;
+
+ vardef Ligne(expr longueur)=
+ for k=0 upto 2*(longueur-1):
+ nbtriangle:=nbtriangle+1;
+ if (k mod 2)=0:
+ M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ else:
+ M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ fi;
+ endfor;
+ enddef;
+
+ pair A,B,C;
+ A=u*(0.5,0.5);
+ B-A=(#1,0);
+ C=rotation(B,A,60);
+
+ nbparts:=#2;
+
+ path M[];
+
+ path Tria,Trir;
+ Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+
+ for k=nbparts downto 1:
+ Ligne(k);
+ endfor;
+
+ diversite=floor(uniformdeviate(#2**2-#3-1));
+
+ for k=(1+diversite) upto (#3+diversite):
+ drawoptions(withpen pencircle scaled #6);
+ trace hachurage(M[k],90,0.2,0) withcolor #5;
+ endfor;
+ drawoptions(withpen pencircle scaled #6);
+ for k=1 upto nbparts:
+ trace segment((k/nbparts)[A,B],(k/nbparts)[A,C]);
+ trace segment((k/nbparts)[B,A],(k/nbparts)[B,C]);
+ trace segment((k/nbparts)[C,A],(k/nbparts)[C,B]);
+ endfor;
+ \end{mplibcode}
+ \else
+ \begin{mpost}
+ nbtriangle=0;
+
+ vardef Ligne(expr longueur)=
+ for k=0 upto 2*(longueur-1):
+ nbtriangle:=nbtriangle+1;
+ if (k mod 2)=0:
+ M[nbtriangle]=(Tria shifted(0.5*k*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ else:
+ M[nbtriangle]=(Trir shifted(0.5*(k-1)*(1/nbparts)*(B-A))) shifted((nbparts-longueur)*(1/nbparts)*(C-A));
+ fi;
+ endfor;
+ enddef;
+
+ pair A,B,C;
+ A=u*(0.5,0.5);
+ B-A=(#1,0);
+ C=rotation(B,A,60);
+
+ nbparts:=#2;
+
+ path M[];
+
+ path Tria,Trir;
+ Tria=polygone(A,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+ Trir=symetrie(Tria,(1/nbparts)[A,B],(1/nbparts)[A,C]);
+
+ for k=nbparts downto 1:
+ Ligne(k);
+ endfor;
+
+ diversite=floor(uniformdeviate(#2**2-#3-1));
+
+ for k=(1+diversite) upto (#3+diversite):
+ drawoptions(withpen pencircle scaled #6);
+ trace hachurage(M[k],90,0.2,0) withcolor #5;
+ endfor;
+ drawoptions(withpen pencircle scaled #6);
+
+ for k=1 upto nbparts:
+ trace segment((k/nbparts)[A,B],(k/nbparts)[A,C]);
+ trace segment((k/nbparts)[B,A],(k/nbparts)[B,C]);
+ trace segment((k/nbparts)[C,A],(k/nbparts)[C,B]);
+ endfor;
+ \end{mpost}
+ \fi
+ }
+
+
+\def\MPFractionRegulier#1#2#3#4#5{%
% #1 rayon, #2 nb côtés, #3 num, #4 deno, #5 couleur
\ifluatex
\mplibforcehmode
@@ -1506,47 +1796,99 @@
\fi
}
+\def\MPFractionSegmentH#1#2#3#4#5{
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ pair A,C,B[];
+ A=(0,0);
+ C-A=(#1,0);
+ for k=0 upto #3:
+ B[k]=(k/#3)[A,C];
+ endfor;
+ drawoptions(withpen pencircle scaled#5);
+ draw hachurage(polygone(B[0]+u*(0,-0.15),B[#2]+u*(0,-0.15),B[#2]+u*(0,0.15),B[0]+u*(0,0.15)),120,0.2,0)
+ withcolor #4;
+ drawoptions(withpen pencircle scaled#5);
+ draw segment(A,C);
+ marque_p:="tiretv";
+ for k=0 upto #3:
+ pointe(B[k]);
+ endfor;
+ \end{mplibcode}
+ \else
+ \begin{mpost}
+ pair A,C,B[];
+ A=(0,0);
+ C-A=(#1,0);
+ for k=0 upto #3:
+ B[k]=(k/#3)[A,C];
+ endfor;
+ drawoptions(withpen pencircle scaled#5);
+ draw hachurage(polygone(B[0]+u*(0,-0.15),B[#2]+u*(0,-0.15),B[#2]+u*(0,0.15),B[0]+u*(0,0.15)),120,0.2,0)
+ withcolor #4;
+ drawoptions(withpen pencircle scaled#5);
+ draw segment(A,C);
+ marque_p:="tiretv";
+ for k=0 upto #3:
+ pointe(B[k]);
+ endfor;
+ \end{mpost}
+ \fi
+}
+
\newcommand\Fraction[2][]{%
\useKVdefault[ClesFraction]%
\setKV[ClesFraction]{#1}%
\setsepchar[*]{/}%
\readlist*\ListeFraction{#2}%
- %\ListeFractionlen -- Le numérateur est \ListeFraction[1] et le
- %dénominateur est \ListeFraction[2].
- \ifboolKV[ClesFraction]{Regulier}{%
+ \ifboolKV[ClesFraction]{Triangle}{%
\ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
- \ifboolKV[ClesFraction]{Hachures}{%
- \MPFractionRegulierH{\useKV[ClesFraction]{Rayon}}{\useKV[ClesFraction]{Cotes}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
+ \ifboolKV[ClesFraction]{Hachures}{%
+ \MPFractionTriangleH{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Parts}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
}{%
- \MPFractionRegulier{\useKV[ClesFraction]{Rayon}}{\useKV[ClesFraction]{Cotes}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
+ \MPFractionTriangle{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Parts}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
}
}{%
- \ifboolKV[ClesFraction]{Segment}{%
+ \ifboolKV[ClesFraction]{Regulier}{%
\ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
- \MPFractionSegment{\useKV[ClesFraction]{Longueur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
- }{
- \ifboolKV[ClesFraction]{Rectangle}{%rectangle
+ \ifboolKV[ClesFraction]{Hachures}{%
+ \MPFractionRegulierH{\useKV[ClesFraction]{Rayon}}{\useKV[ClesFraction]{Cotes}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
+ }{%
+ \MPFractionRegulier{\useKV[ClesFraction]{Rayon}}{\useKV[ClesFraction]{Cotes}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
+ }
+ }{%
+ \ifboolKV[ClesFraction]{Segment}{%
\ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
\ifboolKV[ClesFraction]{Hachures}{%
- \MPFractionRectangleH{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Largeur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Multiple}}{\useKV[ClesFraction]{Epaisseur}}%
+ \MPFractionSegmentH{\useKV[ClesFraction]{Longueur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
}{%
- \MPFractionRectangle{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Largeur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Multiple}}%
+ \MPFractionSegment{\useKV[ClesFraction]{Longueur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
}
- }{%disque
- \ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
- \ifboolKV[ClesFraction]{Hachures}{%
- \MPFractionDisqueH{\useKV[ClesFraction]{Rayon}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
- }{%
- \MPFractionDisque{\useKV[ClesFraction]{Rayon}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
+ }{
+ \ifboolKV[ClesFraction]{Rectangle}{%rectangle
+ \ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
+ \ifboolKV[ClesFraction]{Hachures}{%
+ \MPFractionRectangleH{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Largeur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Multiple}}{\useKV[ClesFraction]{Epaisseur}}%
+ }{%
+ \MPFractionRectangle{\useKV[ClesFraction]{Longueur}}{\useKV[ClesFraction]{Largeur}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Multiple}}%
+ }
+ }{%disque
+ \ifboolKV[ClesFraction]{Reponse}{}{\setKV[ClesFraction]{Couleur=white}}%
+ \ifboolKV[ClesFraction]{Hachures}{%
+ \MPFractionDisqueH{\useKV[ClesFraction]{Rayon}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}{\useKV[ClesFraction]{Epaisseur}}%
+ }{%
+ \MPFractionDisque{\useKV[ClesFraction]{Rayon}}{\ListeFraction[1]}{\ListeFraction[2]}{\useKV[ClesFraction]{Couleur}}%
+ }%
}%
}%
}%
}%
}%
-%%%%%%%%%%%%%%%%
-%%% Réponses à relier
-%%%%%%%%%%%%%%%%
+%%%
+% Réponses à relier
+%%%
\setKVdefault[ClesRelie]{Solution=false,LargeurG=5cm,LargeurD=2cm,Stretch=1.5,Ecart=2cm}
\newcommand\Relie[2][]{%
@@ -1603,63 +1945,86 @@
\setcounter{NbRelie}{0}%
}%
-%%%%%%%%%%%%%%%%%%
-%% QCM
-%%%%%%%%%%%%%%%%%%
-\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=2cm,Couleur=gray!15,Titre=false,Nom=Réponse,Alph=false,VF=false,Depart=1,Alterne=false}
+%%%
+% QCM
+%%%
+\setKVdefault[ClesQCM]{Reponses=3,Solution=false,Stretch=1,Largeur=2cm,Couleur=gray!15,Titre=false,Nom=Réponse,NomV=Vrai,NomF=Faux,Alph=false,AlphT=false,VF=false,Depart=1,Alterne=false,Noms={A/B/C},Multiple=false}
\newlength{\LargeurQCM}
\newcounter{QuestionQCM}
+\newcounter{TitreQCM}
\newcommand\QCM[2][]{%
\useKVdefault[ClesQCM]%
\setKV[ClesQCM]{#1}%
\setcounter{QuestionQCM}{\fpeval{\useKV[ClesQCM]{Depart}-1}}%
+ \setcounter{TitreQCM}{0}
\setsepchar[*]{,*&}\ignoreemptyitems%
\readlist*\ListeQCM{#2}%
- \ifboolKV[ClesQCM]{VF}{%
- \setKV[ClesQCM]{Reponses=2}
+ \ifboolKV[ClesQCM]{Multiple}{%
\renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
\setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
\xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \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|}{}&Vrai&Faux\\
- \hline%
- \xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{gray!15}\fi}{}\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{gray!15}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2=\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
- }\\
- }%
- \hline%
- \end{tabular}
- }{%
- \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
- \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
- \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
- \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{%
- &\useKV[ClesQCM]{Nom} ##2}%
+ &\ListeNomsMul[##2]}%
\\
- }{}
\hline%
\xintFor* ##1 in {\xintSeq {1}{\ListeQCMlen}}\do{%
- \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alph}{\textbf{\Alph{QuestionQCM}}/}{\textbf{\theQuestionQCM/}}~\ListeQCM[##1,1]\xintFor* ##2 in {\xintSeq {1}{\useKV[ClesQCM]{Reponses}}}\do{%
- &\ifboolKV[ClesQCM]{Solution}{\xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}\xintifboolexpr{##2=\ListeQCM[##1,\NumeroReponse]}{\cellcolor{\useKV[ClesQCM]{Couleur}}}{}}{}\ListeQCM[##1,##2+1]%
+ \stepcounter{QuestionQCM}\ifboolKV[ClesQCM]{Alterne}{\modulo{\theQuestionQCM}{2}\ifnum\remainder=0\cellcolor{gray!15}\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{gray!15}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{\ListeQCM[##1,\fpeval{##2+1}]=1}{$\boxtimes$}{$\square$}}{$\square$}%
}\\
}%
\hline%
\end{tabular}%
+ }{%
+ \ifboolKV[ClesQCM]{VF}{%
+ \setKV[ClesQCM]{Reponses=2}
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \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{gray!15}\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{gray!15}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xintifboolexpr{##2=\ListeQCM[##1,2]}{$\boxtimes$}{$\square$}}{$\square$}%
+ }\\
+ }%
+ \hline%
+ \end{tabular}
+ }{%
+ \renewcommand{\arraystretch}{\useKV[ClesQCM]{Stretch}}%
+ \setlength{\LargeurQCM}{\fpeval{(\linewidth-\useKV[ClesQCM]{Reponses}*(3*\tabcolsep+\useKV[ClesQCM]{Largeur}))}pt}%
+ \xdef\NBcases{\fpeval{\useKV[ClesQCM]{Reponses}+1}}%
+ \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{gray!15}\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{gray!15}\fi}{}\ifboolKV[ClesQCM]{Solution}{\xdef\NumeroReponse{\fpeval{\useKV[ClesQCM]{Reponses}+2}}\xintifboolexpr{##2=\ListeQCM[##1,\NumeroReponse]}{\cellcolor{\useKV[ClesQCM]{Couleur}}}{}}{}\ListeQCM[##1,##2+1]%
+ }\\
+ }%
+ \hline%
+ \end{tabular}%
+ }%
}%
}
-%%%%%%%%%%%%%%%%%%%%%
-%%%% Somme des angles
-%%%%%%%%%%%%%%%%%%%%%
+%%%
+% Somme des angles
+%%%
-\setKVdefault[ClesSommeAngle]{Detail=true,Figure=false,Isocele=false}%
+\setKVdefault[ClesSommeAngle]{Detail=true,Isocele=false,Figure=false,FigureSeule=false,Angle=0}%
-% On définit la figure à utiliser
-\def\MPFigureSommeAngle#1#2#3#4#5#6{
+\def\MPFigureSommeAngle#1#2#3#4#5#6#7{
% #1 Premier sommet
% #2 Deuxième sommet
% #3 Troisième sommet
@@ -1679,11 +2044,9 @@
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#7);
+ B:=B rotatedabout(O,#7);
+ C:=C rotatedabout(O,#7);
% On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
@@ -1715,16 +2078,13 @@
draw Codelongueur(A,B,A,C,2);
marque_s:=marque_s*2;
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
- % label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
label(btex ? etex,A+0.95u*unitvector(I-A));
else:
-% if (#4=180-#5-#4) or (#5=180-#5-#4):
marque_s:=marque_s/2;
draw Codelongueur(A,B,A,C,2);
marque_s:=marque_s*2;
label(btex $\ang{#4}$ etex,A+0.95u*unitvector(I-A));
label(btex ? etex,B+0.95u*unitvector(I-B));
- % label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
fi;
else:
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
@@ -1747,11 +2107,9 @@
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#7);
+ B:=B rotatedabout(O,#7);
+ C:=C rotatedabout(O,#7);
% On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
@@ -1783,16 +2141,13 @@
draw Codelongueur(A,B,A,C,2);
marque_s:=marque_s*2;
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
- % label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
label(btex ? etex,A+0.95u*unitvector(I-A));
else:
- %if (#4=180-#5-#4) or (#5=180-#5-#4):
marque_s:=marque_s/2;
draw Codelongueur(A,B,A,C,2);
marque_s:=marque_s*2;
label(btex $\ang{#4}$ etex,A+0.95u*unitvector(I-A));
label(btex ? etex,B+0.95u*unitvector(I-B));
- % label(btex $\ang{#5}$ etex,C+0.95u*unitvector(I-C));
fi;
else:
label(btex $\ang{#4}$ etex,B+0.95u*unitvector(I-B));
@@ -1863,33 +2218,45 @@
\StrMid{#2}{2}{2}[\NomB]%
\StrMid{#2}{3}{3}[\NomC]%
% Figure ou pas ?
- \ifboolKV[ClesSommeAngle]{Figure}{%
- \begin{multicols}{2}%
- {\em La figure est donnée à titre indicatif.}%
- \ifx#3\bla\bla%
- \xdef\Intermed{\fpeval{0.5*(180-#4)}}%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{\Intermed}{0}\]%
- \else%
- \ifx#4\bla\bla%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#3}{0}\]%
- \else%
- \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{1}\]%
- \fi%
- \fi%
- \par\columnbreak\par%
- % on rédige
+ \ifboolKV[ClesSommeAngle]{FigureSeule}{%
+ \ifx#3\bla\bla%
+ \xdef\Intermed{\fpeval{0.5*(180-#4)}}%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{\Intermed}{0}{\useKV[ClesSommeAngle]{Angle}}%
+ \else%
+ \ifx#4\bla\bla%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#3}{0}{\useKV[ClesSommeAngle]{Angle}}%
+ \else%
+ \MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{1}{\useKV[ClesSommeAngle]{Angle}}%
+ \fi%
+ \fi%
+ }{%
+ \ifboolKV[ClesSommeAngle]{Figure}{%
+ \begin{multicols}{2}%
+ {\em La figure est donnée à titre indicatif.}%
+ \ifx#3\bla\bla%
+ \xdef\Intermed{\fpeval{0.5*(180-#4)}}%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#4}{\Intermed}{0}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \else%
+ \ifx#4\bla\bla%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#3}{0}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \else%
+ \[\MPFigureSommeAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{1}{\useKV[ClesSommeAngle]{Angle}}\]%
+ \fi%
+ \fi%
+ \par\columnbreak\par%
+ % on rédige
+ \RedactionSomme[#1]{#2}{#3}{#4}%
+ \end{multicols}%
+ }{% on rédige
\RedactionSomme[#1]{#2}{#3}{#4}%
- \end{multicols}%
- }{% on rédige
- \RedactionSomme[#1]{#2}{#3}{#4}%
+ }%
}%
}%
-%%%%%%%%%%%%%%%%
-%% Le théorème de Pythagore
-%%%%%%%%%%%%%%%%
-% On définit le trousseau de clés optionnelles
-\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,Angle=0,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,ValeurA=0,ValeurB=0,ValeurC=0}
+%%%
+% Le théorème de Pythagore
+%%%
+\setKVdefault[ClesPythagore]{Exact=false,AvantRacine=false,Racine=false,Entier=false,Egalite=false,Precision=2,Soustraction=false,Figure=false,FigureSeule=false,Angle=0,Reciproque=false,ReciColonnes=false,Faible=false,Unite=cm,EnchaineA=false,EnchaineB=false,EnchaineC=false,ValeurA=0,ValeurB=0,ValeurC=0}
% On définit les figures à utiliser
\def\MPFigurePytha#1#2#3#4#5#6{%
@@ -1926,19 +2293,20 @@
decalage=3mm;
if #4<#5 :
if ypart(B)>ypart(O) :
- label(btex \num{#4} etex rotated angle(C-B),1/2[C,B]-decalage*(unitvector(A-B)));
- label(btex \num{#5} etex rotated(angle(B-A)),1/2[A,B]-decalage*(unitvector(C-B)));
- else:
- label(btex \num{#4} etex rotated angle(B-C),1/2[C,B]-decalage*(unitvector(A-B)));
- label(btex \num{#5} etex rotated(angle(A-B)),1/2[A,B]-decalage*(unitvector(C-B)));
- fi
+ label(btex \num{#4} etex,1/2[C,B]-decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ else:
+ label(btex \num{#4} etex,1/2[C,B]-decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ fi
else:
if ypart(B)>ypart(O) :
- label(btex \num{#4} etex rotated angle(C-A),1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
- label(btex \num{#5} etex rotated(angle(C-B)),1/2[C,B]-decalage*(unitvector(C-B)));
- else:
- label(btex \num{#4} etex rotated angle(A-C),1/2[A,C]+decalage*(unitvector(A-C) rotated 90));
- label(btex \num{#5} etex rotated(angle(A-B)),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#4} etex,1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
+ label(btex \num{#5} etex,1/2[C,B]+decalage*(unitvector(B-A)));
+ else:
+ label(btex \num{#4} etex,1/2[A,C]+decalage*(unitvector(A-C)
+ rotated 90));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
fi;
label(btex #3 etex,1.2[O,A]);
@@ -1971,20 +2339,20 @@
decalage=3mm;
if #4<#5 :
if ypart(B)>ypart(O) :
- label(LATEX("\num{"&decimal(#4)&"}") rotated
- angle(C-B),1/2[C,B]-decalage*(unitvector(A-B)));
- label(LATEX("\num{"&decimal(#5)&"}") rotated(angle(B-A)),1/2[A,B]-decalage*(unitvector(C-B)));
- else:
- label(LATEX("\num{"&decimal(#4)&"}") rotated angle(B-C),1/2[C,B]-decalage*(unitvector(A-B)));
- label(LATEX("\num{"&decimal(#5)&"}") rotated(angle(A-B)),1/2[A,B]-decalage*(unitvector(C-B)));
- fi
+ label(btex \num{#4} etex,1/2[C,B]-decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ else:
+ label(btex \num{#4} etex,1/2[C,B]-decalage*(unitvector(A-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ fi
else:
if ypart(B)>ypart(O) :
- label(LATEX("\num{"&decimal(#4)&"}") rotated angle(C-A),1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
- label(LATEX("\num{"&decimal(#5)&"}") rotated(angle(C-B)),1/2[C,B]-decalage*(unitvector(C-B)));
- else:
- label(LATEX("\num{"&decimal(#4)&"}") rotated angle(A-C),1/2[A,C]+decalage*(unitvector(A-C) rotated 90));
- label(LATEX("\num{"&decimal(#5)&"}") rotated(angle(A-B)),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#4} etex,1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
+ label(btex \num{#5} etex,1/2[C,B]+decalage*(unitvector(B-A)));
+ else:
+ label(btex \num{#4} etex,1/2[A,C]+decalage*(unitvector(A-C)
+ rotated 90));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
fi;
label(btex #3 etex,1.2[O,A]);
@@ -2018,23 +2386,18 @@
A:=A rotatedabout(O,#7);
B:=B rotatedabout(O,#7);
C:=C rotatedabout(O,#7);
- % On définit l'angle droit
- % D-B=7*unitvector(C-B);
- % F-B=7*unitvector(A-B);
- % E-D=F-B;
draw A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
draw B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
- % draw D--E--F;
decalage=3mm;
if ypart(B)>ypart(O) :
- label(btex \num{#4} etex rotated angle(C-A),1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
- label(btex \num{#5} etex rotated(angle(C-B)),1/2[C,B]-decalage*(unitvector(C-B)));
- label(btex \num{#6} etex rotated(angle(B-A)),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#4} etex,1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
+ label(btex \num{#5} etex,1/2[C,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#6} etex,1/2[A,B]-decalage*(unitvector(C-B)));
else:
- label(btex \num{#4} etex rotated angle(A-C),1/2[A,C]+decalage*(unitvector(A-C) rotated 90));
- label(btex \num{#5} etex rotated(angle(A-B)),1/2[A,B]-decalage*(unitvector(C-B)));
- label(btex \num{#6} etex rotated angle(C-B),1/2[C,B]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[A,C]+decalage*(unitvector(A-C) rotated 90));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#6} etex,1/2[C,B]-decalage*(unitvector(A-B)));
fi;
label(btex #1 etex,1.2[O,A]);
label(btex #2 etex,1.2[O,B]);
@@ -2055,14 +2418,9 @@
A:=A rotatedabout(O,#7);
B:=B rotatedabout(O,#7);
C:=C rotatedabout(O,#7);
- % On définit l'angle droit
- % D-B=7*unitvector(C-B);
- % F-B=7*unitvector(A-B);
- % E-D=F-B;
draw A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
draw B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
- % draw D--E--F;
decalage=3mm;
if ypart(B)>ypart(O) :
label(LATEX("\num{"&decimal(#4)&"}") rotated angle(C-A),1/2[C,A]-decalage*(unitvector(C-A) rotated 90));
@@ -2098,20 +2456,54 @@
\opcopy{#4}{A2}%
\opcopy{#5}{A3}%
% On trace une figure ou pas ?
- \ifboolKV[ClesPythagore]{Figure}{%Utilisation obligatoire de l'option --shell-escape de la compilation
- \begin{multicols}{2}
- {\em La figure est donnée à titre indicatif.}%
- \[\MPFigureReciPytha{\NomA}{\NomB}{\NomC}{#3}{#4}{#5}{\useKV[ClesPythagore]{Angle}}\]%
- \par\columnbreak\par%
- % on rédige
+ \ifboolKV[ClesPythagore]{FigureSeule}{%
+ \MPFigureReciPytha{\NomA}{\NomB}{\NomC}{#3}{#4}{#5}{\useKV[ClesPythagore]{Angle}}%
+ }{%
+ \ifboolKV[ClesPythagore]{Figure}{%Utilisation obligatoire de l'option --shell-escape de la compilation
+ \begin{multicols}{2}
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigureReciPytha{\NomA}{\NomB}{\NomC}{#3}{#4}{#5}{\useKV[ClesPythagore]{Angle}}\]%
+ \par\columnbreak\par%
+ % on rédige
+ Dans le triangle $#2$, $[\NomA\NomC]$ est le plus grand côté.%
+ \ifboolKV[ClesPythagore]{ReciColonnes}{%
+ \[
+ \begin{array}{cccc|cccc}
+ &&\NomA\NomC^2&&&\NomA\NomB^2&+&\NomB\NomC^2\\
+ &&\opexport{A1}{\Aun}\num{\Aun}^2&&&\opexport{A2}{\Adeux}\num{\Adeux}^2&+&\opexport{A3}{\Atrois}\num{\Atrois}^2\\
+ &&\opmul*{A1}{A1}{a1}&&&\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}&+&\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}\\
+ &&\opexport{a1}{\Aun}\num{\Aun}&&&\multicolumn{3}{c}{\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}}\\
+ \end{array}
+ \]
+ }{%
+ \[\left.
+ \begin{array}{l}
+ \NomA\NomC^2=\opexport{A1}{\Aun}\num{\Aun}^2=\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}\\
+ \\
+ \NomA\NomB^2+\NomB\NomC^2=\opexport{A2}{\Adeux}\num{\Adeux}^2+\opexport{A3}{\Atrois}\num{\Atrois}^2=\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}+\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}=\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}\\
+ \end{array}
+ \right\}\opcmp{a1}{a4}\ifopeq\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2\fi\opcmp{a1}{a4}\ifopneq\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2\fi
+ \]
+ }
+ \ifboolKV[ClesPythagore]{Egalite}{%
+ \opcmp{a1}{a4}\ifopeq Comme $\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore est vérifiée. Donc le triangle $#2$ est rectangle en $\NomB$.\fi%
+ \opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore n'est pas vérifiée. Donc le triangle $#2$ n'est pas rectangle.\fi%
+ }{%
+ \opcmp{a1}{a4}\ifopeq Comme $\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2$, alors le triangle $#2$ est rectangle
+ en $\NomB$ d'après la réciproque du théorème de Pythagore.\fi%
+ \opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors le
+ triangle $#2$ n'est pas rectangle\ifboolKV[ClesPythagore]{Faible}{.}{ d'après la contraposée du théorème de Pythagore.}\fi%
+ }
+ \end{multicols}
+ }{%
Dans le triangle $#2$, $[\NomA\NomC]$ est le plus grand côté.%
\ifboolKV[ClesPythagore]{ReciColonnes}{%
\[
\begin{array}{cccc|cccc}
- \NomA\NomC^2&&&&&\NomA\NomB^2&+&\NomB\NomC^2\\
- \opexport{A1}{\Aun}\num{\Aun}^2&&&&&\opexport{A2}{\Adeux}\num{\Adeux}^2&+&\opexport{A3}{\Atrois}\num{\Atrois}^2\\
- \opmul*{A1}{A1}{a1}&&&&&\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}&+&\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}\\
- \opexport{a1}{\Aun}\num{\Aun}&&&&&\multicolumn{3}{c}{\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}}\\
+ &&\NomA\NomC^2&&&\NomA\NomB^2&+&\NomB\NomC^2\\
+ &&\opexport{A1}{\Aun}\num{\Aun}^2&&&\opexport{A2}{\Adeux}\num{\Adeux}^2&+&\opexport{A3}{\Atrois}\num{\Atrois}^2\\
+ &&\opmul*{A1}{A1}{a1}&&&\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}&+&\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}\\
+ &&\opexport{a1}{\Aun}\num{\Aun}&&&\multicolumn{3}{c}{\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}}\\
\end{array}
\]
}{%
@@ -2123,7 +2515,7 @@
\end{array}
\right\}\opcmp{a1}{a4}\ifopeq\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2\fi\opcmp{a1}{a4}\ifopneq\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2\fi
\]
- }
+ }%
\ifboolKV[ClesPythagore]{Egalite}{%
\opcmp{a1}{a4}\ifopeq Comme $\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore est vérifiée. Donc le triangle $#2$ est rectangle en $\NomB$.\fi%
\opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore n'est pas vérifiée. Donc le triangle $#2$ n'est pas rectangle.\fi%
@@ -2132,39 +2524,9 @@
en $\NomB$ d'après la réciproque du théorème de Pythagore.\fi%
\opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors le
triangle $#2$ n'est pas rectangle\ifboolKV[ClesPythagore]{Faible}{.}{ d'après la contraposée du théorème de Pythagore.}\fi%
- }
- \end{multicols}
- }{%
- Dans le triangle $#2$, $[\NomA\NomC]$ est le plus grand côté.%
- \ifboolKV[ClesPythagore]{ReciColonnes}{%
- \[
- \begin{array}{cccc|cccc}
- \NomA\NomC^2&&&&&\NomA\NomB^2&+&\NomB\NomC^2\\
- \opexport{A1}{\Aun}\num{\Aun}^2&&&&&\opexport{A2}{\Adeux}\num{\Adeux}^2&+&\opexport{A3}{\Atrois}\num{\Atrois}^2\\
- \opmul*{A1}{A1}{a1}&&&&&\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}&+&\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}\\
- \opexport{a1}{\Aun}\num{\Aun}&&&&&\multicolumn{3}{c}{\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}}\\
- \end{array}
- \]
- }{%
- \[\left.
- \begin{array}{l}
- \NomA\NomC^2=\opexport{A1}{\Aun}\num{\Aun}^2=\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}\\
- \\
- \NomA\NomB^2+\NomB\NomC^2=\opexport{A2}{\Adeux}\num{\Adeux}^2+\opexport{A3}{\Atrois}\num{\Atrois}^2=\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}+\opmul*{A3}{A3}{a3}\opexport{a3}{\Atrois}\num{\Atrois}=\opadd*{a2}{a3}{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}\\
- \end{array}
- \right\}\opcmp{a1}{a4}\ifopeq\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2\fi\opcmp{a1}{a4}\ifopneq\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2\fi
- \]
- }
- \ifboolKV[ClesPythagore]{Egalite}{%
- \opcmp{a1}{a4}\ifopeq Comme $\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore est vérifiée. Donc le triangle $#2$ est rectangle en $\NomB$.\fi%
- \opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors l'égalité de Pythagore n'est pas vérifiée. Donc le triangle $#2$ n'est pas rectangle.\fi%
- }{%
- \opcmp{a1}{a4}\ifopeq Comme $\NomA\NomC^2=\NomA\NomB^2+\NomB\NomC^2$, alors le triangle $#2$ est rectangle
- en $\NomB$ d'après la réciproque du théorème de Pythagore.\fi%
- \opcmp{a1}{a4}\ifopneq Comme $\NomA\NomC^2\not=\NomA\NomB^2+\NomB\NomC^2$, alors le
- triangle $#2$ n'est pas rectangle\ifboolKV[ClesPythagore]{Faible}{.}{ d'après la contraposée du théorème de Pythagore.}\fi%
- }
- }
+ }%
+ }%
+ }%
}{%
% [xlop] paramètres de calcul
\opcopy{#3}{A1}%
@@ -2175,74 +2537,73 @@
\StrMid{#2}{2}{2}[\NomB]%
\StrMid{#2}{3}{3}[\NomC]%
% On trace une figure ou pas ?
- \ifboolKV[ClesPythagore]{Figure}{%Utilisation obligatoire de l'option --shell-escape de la compilation
- \begin{multicols}{2}%
- {\em La figure est donnée à titre indicatif.}%
- \[\MPFigurePytha{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}\]
- \par\columnbreak\par%
+ \ifboolKV[ClesPythagore]{FigureSeule}{%
+ \MPFigurePytha{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}
+ }{%
+ \ifboolKV[ClesPythagore]{Figure}{%Utilisation obligatoire de l'option --shell-escape de la compilation
+ \begin{multicols}{2}%
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigurePytha{\NomA}{\NomB}{\NomC}{#3}{#4}{\useKV[ClesPythagore]{Angle}}\]
+ \par\columnbreak\par%
+ % On démarre la résolution
+ \ifboolKV[ClesPythagore]{Egalite}{Comme le triangle $#2$ est rectangle en $\NomB$, alors l'égalité de Pythagore est vérifiée :}{Dans le triangle $#2$ rectangle en $\NomB$, le th\'eor\`eme de Pythagore permet d'\'ecrire :%
+ }%
+ \xintifboolexpr{#3<#4 || #3=#4}{%\ifnum#3<#4%
+ \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
+ \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
+ \begin{align*}
+ \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
+ \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
+ \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ }%
+ \end{align*}
+ }{%\else%
+ \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2-#4^2),\useKV[ClesPythagore]{Precision})}}%
+ \begin{align*}
+ \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
+ \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
+ \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
+ \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ }%
+ \end{align*}
+ }%\fi%
+ \end{multicols}
+ }{%
% On démarre la résolution
\ifboolKV[ClesPythagore]{Egalite}{Comme le triangle $#2$ est rectangle en $\NomB$, alors l'égalité de Pythagore est vérifiée :}{Dans le triangle $#2$ rectangle en $\NomB$, le th\'eor\`eme de Pythagore permet d'\'ecrire :%
}%
\xintifboolexpr{#3<#4 || #3=#4}{%\ifnum#3<#4%
\xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
- \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
\begin{align*}
\NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
\NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
\NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
\NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \\
- \ifboolKV[ClesPythagore]{Entier}{}{\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\\}
- \ifboolKV[ClesPythagore]{Racine}{}{\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
}
\end{align*}
- }{%\else%
+ }{%\else
\xdef\ResultatPytha{\fpeval{round(sqrt(#3^2-#4^2),\useKV[ClesPythagore]{Precision})}}%
- \begin{align*}
- \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
- \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
- \ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}&=\NomA\NomB^2+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \\
- \ifboolKV[ClesPythagore]{Entier}{}{\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\\}
- \ifboolKV[ClesPythagore]{Racine}{}{\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
- }
- \end{align*}
- }%\fi%
- \end{multicols}
- }{%
- % On démarre la résolution
- \ifboolKV[ClesPythagore]{Egalite}{Comme le triangle $#2$ est rectangle en $\NomB$, alors l'égalité de Pythagore est vérifiée :}{Dans le triangle $#2$ rectangle en $\NomB$, le th\'eor\`eme de Pythagore permet d'\'ecrire :%
- }%
- \xintifboolexpr{#3<#4 || #3=#4}{%\ifnum#3<#4%
- \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2+#4^2),\useKV[ClesPythagore]{Precision})}}%
- \begin{align*}
- \NomA\NomC^2&=\NomA\NomB^2+\NomB\NomC^2\\
- \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opcopy{\useKV[ClesPythagore]{ValeurA}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}+\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
- \NomA\NomC^2&=\ifboolKV[ClesPythagore]{EnchaineA}{\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}+\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomC^2&=\opadd*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \\
- \ifboolKV[ClesPythagore]{Entier}{}{\NomA\NomC&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\\}
- \ifboolKV[ClesPythagore]{Racine}{}{\ifboolKV[ClesPythagore]{Exact}{\NomA\NomC&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomC&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
- }
- \end{align*}
- }{%\else
- \xdef\ResultatPytha{\fpeval{round(sqrt(#3^2-#4^2),\useKV[ClesPythagore]{Precision})}}%
- \ifboolKV[ClesPythagore]{Soustraction}{%
- \begin{align*}
+ \ifboolKV[ClesPythagore]{Soustraction}{%
+ \begin{align*}
\NomA\NomB^2&=\NomA\NomC^2-\NomB\NomC^2\\
\NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opexport{A1}{\Aun}\num{\Aun}^2}-\ifboolKV[ClesPythagore]{EnchaineB}{\opcopy{\useKV[ClesPythagore]{ValeurB}}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}{\opexport{A2}{\Adeux}\num{\Adeux}^2}\\
\NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
- \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
- \ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \\
- \ifboolKV[ClesPythagore]{Entier}{}{\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\\}
- \ifboolKV[ClesPythagore]{Racine}{}{\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
- }
+ \NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
+ \ifboolKV[ClesPythagore]{AvantRacine}{}{%
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ }
\end{align*}
}{%
\begin{align*}
@@ -2252,20 +2613,20 @@
\NomA\NomB^2&=\ifboolKV[ClesPythagore]{EnchaineC}{\opcopy{\useKV[ClesPythagore]{ValeurC}}{a1}\opexport{a1}{\Aun}\num{\Aun}}{\opmul*{A1}{A1}{a1}\opexport{a1}{\Aun}\num{\Aun}}-\ifboolKV[ClesPythagore]{EnchaineB}{\opexport{a2}{\Adeux}\num{\Adeux}}{\opmul*{A2}{A2}{a2}\opexport{a2}{\Adeux}\num{\Adeux}}\\
\NomA\NomB^2&=\opsub*{a1}{a2}{a3}\opexport{a3}{\Atrois}\num{\Atrois}%\\
\ifboolKV[ClesPythagore]{AvantRacine}{}{%
- \\
- \ifboolKV[ClesPythagore]{Entier}{}{\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}\\}
- \ifboolKV[ClesPythagore]{Racine}{}{\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
+ \ifboolKV[ClesPythagore]{Entier}{}{\\\NomA\NomB&=\sqrt{\opexport{a3}{\Atrois}\num{\Atrois}}}%
+ \ifboolKV[ClesPythagore]{Racine}{}{\\\ifboolKV[ClesPythagore]{Exact}{\NomA\NomB&=\opsqrt[maxdivstep=3]{a3}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}{\NomA\NomB&\approx\opsqrt[maxdivstep=5]{a3}{a4}\opround{a4}{pres}{a4}\opunzero{a4}\opexport{a4}{\Aquatre}\num{\Aquatre}~\text{\useKV[ClesPythagore]{Unite}}}}%\\
}
\end{align*}
}%
- }%\fi%
+ }%\fi%
+ }%
}%
}%
}%
-%%%%%%%%%%%%%%%%%
-%% Distributivité
-%%%%%%%%%%%%%%%%%
+%%%
+% Distributivité
+%%%
% https://tex.stackexchange.com/questions/168972/draw-arrows-to-show-multiplication-pattern-distributive-property/169278?noredirect=1
\newcommand{\Tikzmark}[1]{%
\tikz[remember picture,baseline,inner sep=0pt]{%
@@ -2303,8 +2664,7 @@
% y a dans un "seul calcul".
\setcounter{NbCalculDistri}{0}
-\setKVdefault[ClesDistributivite]{Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0}%,AideAdd=false
- %inutile ?
+\setKVdefault[ClesDistributivite]{Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0}%,AideAdd=false:inutile ?
\newcommand\Affichage[4][]{%
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
@@ -2332,9 +2692,7 @@
\useKVdefault[ClesDistributivite]%obligatoire car la macro n'est pas dans un groupe.
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
\ifboolKV[ClesDistributivite]{RAZ}{\xdef\SommeA{0}\xdef\SommeB{0}\xdef\SommeC{0}%
- % 80
\setcounter{NbCalculDistri}{0}%
- % fin 80
}{}%
\colorlet{DCAide}{\useKV[ClesDistributivite]{CouleurAide}}%
\colorlet{DCReduction}{\useKV[ClesDistributivite]{CouleurReduction}}%
@@ -2343,193 +2701,183 @@
\xintifboolexpr{\useKV[ClesDistributivite]{Echange}>0}{%
\DistriEchange[#1]{#2}{#3}{#4}{#5}%
}{%
- \ifboolKV[ClesDistributivite]{Remarquable}{%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=1}{%
- \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
- }{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2+2\times\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2-2\times\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2-\num{#3}^2\fi}{}
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
- %80
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- % fin 80
- \ifx\bla#4\bla%
- \xdef\Multi{\fpeval{#2*#2}}%
- \xdef\Multij{\fpeval{#2*#3}}%
- \xdef\Multik{\fpeval{#3*#2}}%
- \xdef\Multil{\fpeval{#3*#3}}%
- %% ils sont redéfinis pour pouvoir envisager la somme de deux
- %% expressions à développer
- \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
- \else%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont redéfinis pour pouvoir envisager la somme de deux
- %% expressions à développer
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- \Affichage{\Multi}{\Multim}{\Multil}%
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- \fi%
- }{}%
- }{%
- \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}}%
- }{%
- \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)}}%
+ \ifboolKV[ClesDistributivite]{Remarquable}{%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=1}{%
+ \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi%
+ }{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=2}{\ifx\bla#4\bla\xintifboolexpr{#3>0}{\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2+2\times\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{#3}+\num{#3}^2}{\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2-2\times\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesDistributivite]{Lettre}\times\num{\fpeval{0-#3}}+\num{\fpeval{0-#3}}^2}\else\xintifboolexpr{#2=1}{}{(\num{#2}}\useKV[ClesDistributivite]{Lettre}\xintifboolexpr{#2=1}{}{)}^2-\num{#3}^2\fi}{}
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifx\bla#4\bla%
+ \xdef\Multi{\fpeval{#2*#2}}%
+ \xdef\Multij{\fpeval{#2*#3}}%
+ \xdef\Multik{\fpeval{#3*#2}}%
+ \xdef\Multil{\fpeval{#3*#3}}%
+ %% ils sont redéfinis pour pouvoir envisager la somme de deux
+ %% expressions à développer
+ \xdef\Multim{\fpeval{#2*#3+#3*#2}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
}{%
- \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)}})}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
- }%
- }%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#2}}\xdef\SommeB{\fpeval{\SommeB+#2*#3+#3*#2}}\xdef\SommeC{\fpeval{\SommeC+#3*#3}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#2}}\xdef\SommeB{\fpeval{\SommeB-#2*#3-#3*#2}}\xdef\SommeC{\fpeval{\SommeC-#3*#3}}}{}%
+ \else%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont redéfinis pour pouvoir envisager la somme de deux
+ %% expressions à développer
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \Affichage{\Multi}{\Multim}{\Multil}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ \fi%
+ }{}%
}{%
- \ifboolKV[ClesDistributivite]{All}{%
- \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
- \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
- \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
- {\NomLettre&=\Distri[Etape=##1]{#2}{#3}{#4}{#5}\\}%
- \NomLettre&=\Distri[Etape=\NomFin]{#2}{#3}{#4}{#5}%
+ \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}}%
+ }{%
+ \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)}}%
+ }{%
+ \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)}})}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{\num{#3}\times\num{#4}\xintifboolexpr{#5>0}{+}{-}\num{#3}\times\num{\fpeval{abs(#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=4}{\num{\fpeval{#3*#4}}\xintifboolexpr{#5>0}{+}{-}\num{\fpeval{abs(#3*#5)}}}{}%
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=5}{\num{\fpeval{#3*#4+#3*#5}}}{}%
+ }%
+ }%
}{%
- % Etape 1
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=1}{%
- \xintifboolexpr{#2=0}{%
- }{\xintifboolexpr{#3=0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#3>0}{\xintifboolexpr{#2=0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
- \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{#2=0}{}{\xintifboolexpr{#3=0}{}{)}}%
- %
- \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
- \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
- %
- \xintifboolexpr{\Multi=0}{\times%
- \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
- \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
- \xintifboolexpr{#5>0}{\xintifboolexpr{#4=0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4=0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
- \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
- \xintifboolexpr{\Multi=0}{%
- \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
- \ifboolKV[ClesDistributivite]{Fleches}{%
- \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \ifboolKV[ClesDistributivite]{All}{%
+ \xdef\NomLettre{\useKV[ClesDistributivite]{NomExpression}}%
+ \xdef\NomFin{\useKV[ClesDistributivite]{Fin}}%
+ \xintFor* ##1 in {\xintSeq {1}{\useKV[ClesDistributivite]{Fin}-1}}\do
+ {\NomLettre&=\Distri[Etape=##1]{#2}{#3}{#4}{#5}\\}%
+ \NomLettre&=\Distri[Etape=\NomFin]{#2}{#3}{#4}{#5}%
+ }{%
+ % Etape 1
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=1}{%
+ \xintifboolexpr{#2=0}{%
+ }{\xintifboolexpr{#3=0}{}{(}}\Tikzmark{\Affichage[#1]{0}{#2}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#3>0}{\xintifboolexpr{#2=0}{}{+}}{\xintifboolexpr{#3<0}{-}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#3)}}}%
+ \ifboolKV[ClesDistributivite]{AideAdda}{\mathcolor{DCAide}{)}}{}%
+ \xintifboolexpr{#2=0}{}{\xintifboolexpr{#3=0}{}{)}}%
+ %
+ \ifboolKV[ClesDistributivite]{AideMul}{\times}{}%on aide dans le cas double
+ \xdef\Multi{\fpeval{#4*#5}}%affichage auto si (a+b)xk
+ %
+ \xintifboolexpr{\Multi=0}{\times%
+ \xintifboolexpr{#4<0}{(}{\xintifboolexpr{#5<0}{(}{}}}{(}%
+ \Tikzmark{\Affichage[#1]{0}{#4}{0}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{+(}}{}%
+ \xintifboolexpr{#5>0}{\xintifboolexpr{#4=0}{}{+}}{\xintifboolexpr{#5<0}{\xintifboolexpr{#4=0}{{-}}{-}}{}}\Tikzmark{\Affichage[#1]{0}{0}{\fpeval{abs(#5)}}}%
+ \ifboolKV[ClesDistributivite]{AideAddb}{\mathcolor{DCAide}{)}}{}%
\xintifboolexpr{\Multi=0}{%
- \xdef\Multij{\fpeval{#2*#3}}%\relax
- \xintifboolexpr{\Multij=0}{\xintifboolexpr{#2=0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4=0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
- }{%
- \DrawArrow%
+ \xintifboolexpr{#4<0}{)}{\xintifboolexpr{#5<0}{)}{}}}{)}%
+ \ifboolKV[ClesDistributivite]{Fleches}{%
+ \xdef\Multi{\fpeval{#2*#3*#4*#5}}%
+ \xintifboolexpr{\Multi=0}{%
+ \xdef\Multij{\fpeval{#2*#3}}%\relax
+ \xintifboolexpr{\Multij=0}{\xintifboolexpr{#2=0}{\DrawArrowSimple{1}}{\DrawArrowSimple{0}}}{\xintifboolexpr{#4=0}{\DrawArrowSimpleRenverse{3}}{\DrawArrowSimpleRenverse{2}}}%
+ }{%
+ \DrawArrow%
+ }%
+ }{}\setcounter{NbDistri}{0}%
+ }{}
+ % Etape 2
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=2}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xintifboolexpr{\Multi=0}{}{%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
+ }
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xintifboolexpr{\Multij=0}{}{%
+ \xintifboolexpr{\Multi=0}{}{+}%
+ \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
}%
- }{}\setcounter{NbDistri}{0}%
- }{}
- % Etape 2
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=2}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xintifboolexpr{\Multi=0}{}{%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }
- \xdef\Multij{\fpeval{#2*#5}}%
- \xintifboolexpr{\Multij=0}{}{%
- \xintifboolexpr{\Multi=0}{}{+}%
- \xintifboolexpr{#2<0}{(}{}\Affichage[#1]{0}{#2}{0}\xintifboolexpr{#2<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xintifboolexpr{\Multik=0}{}{%
- \xintifboolexpr{\Multi=0}{}{+}%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
- }%
- \xdef\Multil{\fpeval{#3*#5}}%
- \xintifboolexpr{\Multil=0}{}{+%
- \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
- }%
- }{}%
- % Etape 3
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
- %80
- \stepcounter{NbCalculDistri}%
- % fin 80
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont redéfinis pour pouvoir envisager la somme de deux
- %% expressions à développer
- %80
- \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- %fin 80
- \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
- \xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xintifboolexpr{\Multik=0}{}{%
+ \xintifboolexpr{\Multi=0}{}{+}%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#4<0}{(}{}\Affichage[#1]{0}{#4}{0}\xintifboolexpr{#4<0}{)}{}%
}%
- }{%
- \xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
- \xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
- }%
- \xintifboolexpr{\Multil=0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
- }{}%
- % Etape 4
- \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=4}{%
- \xdef\Multi{\fpeval{#2*#4}}%
- \xdef\Multij{\fpeval{#2*#5}}%
- \xdef\Multik{\fpeval{#3*#4}}%
- \xdef\Multil{\fpeval{#3*#5}}%
- %% ils sont redéfinis pour pouvoir envisager la somme de deux
- %% expressions à développer
- \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
- %80
- \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
- \stepcounter{NbCalculDistri}%
- %fin 80
- \ifboolKV[ClesDistributivite]{Oppose}{%
- \xdef\Multi{\fpeval{-\Multi}}%
- \xdef\Multim{\fpeval{-\Multim}}%
- \xdef\Multil{\fpeval{-\Multil}}%
- \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
- \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
- \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
- }{%
- %80
+ \xdef\Multil{\fpeval{#3*#5}}%
+ \xintifboolexpr{\Multil=0}{}{+%
+ \xintifboolexpr{#3<0}{(}{}\Affichage[#1]{0}{0}{#3}\xintifboolexpr{#3<0}{)}{}\times\xintifboolexpr{#5<0}{(}{}\Affichage[#1]{0}{0}{#5}\xintifboolexpr{#5<0}{)}{}%
+ }%
+ }{}%
+ % Etape 3
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
+ \stepcounter{NbCalculDistri}%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont redéfinis pour pouvoir envisager la somme de deux
+ %% expressions à développer
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
- \xintifboolexpr{\Multim=0}{}{%
- \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ \ifboolKV[ClesDistributivite]{Reduction}{\mathunderline{DCReduction}{%
+ \xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{{}+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
+ }%
+ }{%
+ \xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\Affichage{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
+ \xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{\xintifboolexpr{#2=0}{}{+}}\xintifboolexpr{\Multik<0}{(}{}\Affichage{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
}%
- \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%\Affichage{\Multi}{\Multim}{\Multil}%
- % fin 80
- }
- \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
- \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
- }{}%
+ \xintifboolexpr{\Multil=0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
+ }{}%
+ % Etape 4
+ \xintifboolexpr{\useKV[ClesDistributivite]{Etape}=4}{%
+ \xdef\Multi{\fpeval{#2*#4}}%
+ \xdef\Multij{\fpeval{#2*#5}}%
+ \xdef\Multik{\fpeval{#3*#4}}%
+ \xdef\Multil{\fpeval{#3*#5}}%
+ %% ils sont redéfinis pour pouvoir envisager la somme de deux
+ %% expressions à développer
+ \xdef\Multim{\fpeval{#2*#5+#3*#4}}%
+ \xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
+ \stepcounter{NbCalculDistri}%
+ \ifboolKV[ClesDistributivite]{Oppose}{%
+ \xdef\Multi{\fpeval{-\Multi}}%
+ \xdef\Multim{\fpeval{-\Multim}}%
+ \xdef\Multil{\fpeval{-\Multil}}%
+ \xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{(}{}\Affichage{\Multi}{0}{0}\xintifboolexpr{\Multi<0}{)}{}}%
+ \xintifboolexpr{\Multim=0}{}{\xintifboolexpr{\Multim>0}{+}{+(}\Affichage{0}{\Multim}{0}\xintifboolexpr{\Multim<0}{)}{}}%
+ \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil>0}{+}{+(}\Affichage{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}}%
+ }{%
+ \xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\Affichage{\Multi}{0}{0})}{\Affichage{\Multi}{0}{0}}}{\Affichage{\Multi}{0}{0}}%
+ \xintifboolexpr{\Multim=0}{}{%
+ \xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
+ }%
+ \xintifboolexpr{\Multil=0}{}{\xintifboolexpr{\Multil<0}{-\Affichage{0}{0}{\fpeval{-\Multil}}}{+\Affichage{0}{0}{\Multil}}}%
+ }
+ \ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+#2*#4}}\xdef\SommeB{\fpeval{\SommeB+#2*#5+#3*#4}}\xdef\SommeC{\fpeval{\SommeC+#3*#5}}}{}%
+ \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}%
+ }{}%
+ }%
}%
}%
}%
}%
- }%
}%
\newcommand{\Resultat}[1][]{%
@@ -2560,9 +2908,7 @@
\useKVdefault[ClesDistributivite]%obligatoire car la macro n'est pas dans un groupe.
\setKV[ClesDistributivite]{#1}%On lit les arguments optionnels
\ifboolKV[ClesDistributivite]{RAZ}{\xdef\SommeA{0}\xdef\SommeB{0}\xdef\SommeC{0}%
- % 80
\setcounter{NbCalculDistri}{0}%
- % fin 80
}{}%
\colorlet{DCAide}{\useKV[ClesDistributivite]{CouleurAide}}%
\colorlet{DCReduction}{\useKV[ClesDistributivite]{CouleurReduction}}%
@@ -2583,10 +2929,8 @@
\fi%
}{}
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
\stepcounter{NbCalculDistri}%
- % fin 80
\ifx\bla#4\bla%
\xdef\Multi{\fpeval{#2*#2}}%
\xdef\Multij{\fpeval{#2*#3}}%
@@ -2776,9 +3120,7 @@
}{}
% Etape 3
\xintifboolexpr{\useKV[ClesDistributivite]{Etape}=3}{%
- % 80
\stepcounter{NbCalculDistri}%
- % fin 80
\xdef\Multi{\fpeval{#2*#4}}%
\xdef\Multij{\fpeval{#2*#5}}%
\xdef\Multik{\fpeval{#3*#4}}%
@@ -2786,9 +3128,7 @@
%% ils sont redéfinis pour pouvoir envisager la somme de deux
%% expressions à développer
\xintifboolexpr{\useKV[ClesDistributivite]{Echange}=1}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\AffichageEchange{0}{\Multi}{0})}{\AffichageEchange{0}{\Multi}{0}}}{\AffichageEchange{0}{\Multi}{0}}%
- %fin 80\AffichageEchange{0}{\Multi}{0}%pas de soulignement de réduction ici
\xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\AffichageEchange{\Multij}{0}{0}\xintifboolexpr{\Multij<0}{)}{}}%
\xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\AffichageEchange{0}{0}{\Multik}\xintifboolexpr{\Multik<0}{)}{}}%
\xintifboolexpr{\Multil=0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\AffichageEchange{0}{\Multil}{0}\xintifboolexpr{\Multil<0}{)}{}%
@@ -2797,9 +3137,7 @@
\ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-\Multik}}\xdef\SommeB{\fpeval{\SommeB-\Multim}}\xdef\SommeC{\fpeval{\SommeC-\Multij}}}{}%
}{}%
\xintifboolexpr{\useKV[ClesDistributivite]{Echange}=2}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\AffichageEchange{0}{\Multi}{0})}{\AffichageEchange{0}{\Multi}{0}}}{\AffichageEchange{0}{\Multi}{0}}%
- %fin 80\AffichageEchange{0}{\Multi}{0}%pas de soulignement de réduction ici
\xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\AffichageEchange{0}{0}{\Multij}\xintifboolexpr{\Multij<0}{)}{}}%
\xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\AffichageEchange{\Multik}{0}{0}\xintifboolexpr{\Multik<0}{)}{}}%
\xintifboolexpr{\Multil=0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\AffichageEchange{0}{\Multil}{0}\xintifboolexpr{\Multil<0}{)}{}%
@@ -2808,9 +3146,7 @@
\ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-\Multij}}\xdef\SommeB{\fpeval{\SommeB-\Multim}}\xdef\SommeC{\fpeval{\SommeC-\Multik}}}{}%
}{}%
\xintifboolexpr{\useKV[ClesDistributivite]{Echange}=3}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multi<0}{(\AffichageEchange{\Multi}{0}{0})}{\AffichageEchange{\Multi}{0}{0}}}{\AffichageEchange{\Multi}{0}{0}}%
- %fin 80\AffichageEchange{\Multi}{0}{0}%pas de soulignement de réduction ici
\xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multi=0}{}{+}\xintifboolexpr{\Multij<0}{(}{}\AffichageEchange{0}{\Multij}{0}\xintifboolexpr{\Multij<0}{)}{}}%
\xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multil=0}{\xintifboolexpr{#2=0}{}{+}}{+}\xintifboolexpr{\Multik<0}{(}{}\AffichageEchange{0}{\Multik}{0}\xintifboolexpr{\Multik<0}{)}{}}%
\xintifboolexpr{\Multil=0}{}{+}\xintifboolexpr{\Multil<0}{(}{}\AffichageEchange{0}{0}{\Multil}\xintifboolexpr{\Multil<0}{)}{}%
@@ -2827,10 +3163,8 @@
\xdef\Multil{\fpeval{#3*#5}}%
%% ils sont redéfinis pour pouvoir envisager la somme de deux
%% expressions à développer
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\setcounter{NbCalculDistri}{0}}{}%
\stepcounter{NbCalculDistri}%
- %fin 80
\xintifboolexpr{\useKV[ClesDistributivite]{Echange}=1}{%
\xdef\Multim{\fpeval{#2*#4+#3*#5}}%
\ifboolKV[ClesDistributivite]{Oppose}{%
@@ -2841,13 +3175,11 @@
\xintifboolexpr{\Multimo=0}{}{\xintifboolexpr{\Multimo>0}{+}{+(}\Affichage{0}{\Multimo}{0}\xintifboolexpr{\Multimo<0}{)}{}}%
\xintifboolexpr{\Multijo=0}{}{\xintifboolexpr{\Multijo>0}{+}{+(}\Affichage{0}{0}{\Multijo}\xintifboolexpr{\Multijo<0}{)}{}}%
}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multik<0}{(\Affichage{\Multik}{0}{0})}{\Affichage{\Multik}{0}{0}}}{\Affichage{\Multik}{0}{0}}%
\xintifboolexpr{\Multim=0}{}{%
\xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
}%
\xintifboolexpr{\Multij=0}{}{\xintifboolexpr{\Multij<0}{-\Affichage{0}{0}{\fpeval{-\Multij}}}{+\Affichage{0}{0}{\Multij}}}%
- % fin 80
}%
\ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+\Multik}}\xdef\SommeB{\fpeval{\SommeB+\Multim}}\xdef\SommeC{\fpeval{\SommeC+\Multij}}}{}%
\ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-\Multik}}\xdef\SommeB{\fpeval{\SommeB-\Multim}}\xdef\SommeC{\fpeval{\SommeC-\Multij}}}{}%
@@ -2862,13 +3194,11 @@
\xintifboolexpr{\Multimo=0}{}{\xintifboolexpr{\Multimo>0}{+}{+(}\Affichage{0}{\Multimo}{0}\xintifboolexpr{\Multimo<0}{)}{}}%
\xintifboolexpr{\Multiko=0}{}{\xintifboolexpr{\Multiko>0}{+}{+(}\Affichage{0}{0}{\Multiko}\xintifboolexpr{\Multiko<0}{)}{}}%
}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multij<0}{(\Affichage{\Multij}{0}{0})}{\Affichage{\Multij}{0}{0}}}{\Affichage{\Multij}{0}{0}}%
\xintifboolexpr{\Multim=0}{}{%
\xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
}%
\xintifboolexpr{\Multik=0}{}{\xintifboolexpr{\Multik<0}{-\Affichage{0}{0}{\fpeval{-\Multik}}}{+\Affichage{0}{0}{\Multik}}}%
- % fin 80\Affichage{\Multij}{\Multim}{\Multik}%
}%
\ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+\Multij}}\xdef\SommeB{\fpeval{\SommeB+\Multim}}\xdef\SommeC{\fpeval{\SommeC+\Multik}}}{}%
\ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-\Multij}}\xdef\SommeB{\fpeval{\SommeB-\Multim}}\xdef\SommeC{\fpeval{\SommeC-\Multik}}}{}%
@@ -2883,13 +3213,11 @@
\xintifboolexpr{\Multimo=0}{}{\xintifboolexpr{\Multimo>0}{+}{+(}\Affichage{0}{\Multimo}{0}\xintifboolexpr{\Multimo<0}{)}{}}%
\xintifboolexpr{\Multio=0}{}{\xintifboolexpr{\Multio>0}{+}{+(}\Affichage{0}{0}{\Multio}\xintifboolexpr{\Multio<0}{)}{}}%
}{%
- % 80
\xintifboolexpr{\theNbCalculDistri>1}{\xintifboolexpr{\Multil<0}{(\Affichage{\Multil}{0}{0})}{\Affichage{\Multil}{0}{0}}}{\Affichage{\Multil}{0}{0}}%
\xintifboolexpr{\Multim=0}{}{%
\xintifboolexpr{\Multim>0}{+\Affichage{0}{\Multim}{0}}{-\Affichage{0}{\fpeval{-\Multim}}{0}}%
}%
\xintifboolexpr{\Multi=0}{}{\xintifboolexpr{\Multi<0}{-\Affichage{0}{0}{\fpeval{-\Multi}}}{+\Affichage{0}{0}{\Multi}}}%
- % fin 80\Affichage{\Multil}{\Multim}{\Multi}%
}
\ifboolKV[ClesDistributivite]{Somme}{\xdef\SommeA{\fpeval{\SommeA+\Multil}}\xdef\SommeB{\fpeval{\SommeB+\Multim}}\xdef\SommeC{\fpeval{\SommeC+\Multi}}}{}%
\ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-\Multil}}\xdef\SommeB{\fpeval{\SommeB-\Multim}}\xdef\SommeC{\fpeval{\SommeC-\Multi}}}{}%
@@ -2901,9 +3229,9 @@
}%
}%
-%%%%%%%%%%%%%%%
-%Nombre Premier
-%%%%%%%%%%%%%%%
+%%%
+% Nombre Premier
+%%%
\setKVdefault[ClesNombrePremier]{Tableau=false,TableauVertical=false,TableauVerticalVide=false,Exposant=false,Longue=false,All=false,Arbre=false,ArbreVide=false,ArbreComplet=false,Diviseurs=false,DiviseursT=false,Dot=\dotfill}
\newcommand\Decomposition[2][]{%
@@ -2930,7 +3258,7 @@
pair Ancre[];
numeric decalage;
decalage=10mm;
-
+
vardef PremierSimple(expr NB)=
b:=2;
depart:=NB;
@@ -3393,7 +3721,6 @@ vardef Positions(expr Step)=
\dnpvv=\numexpr\dnpvv+1\relax
\cnpvv=\numexpr\anpvv/\bnpvv\relax
\anpvv=\cnpvv\relax
- %\num{\the\bnpvv}%
\else%
\bnpvv=\numexpr\bnpvv+1\relax%
\fi%
@@ -3419,7 +3746,6 @@ vardef Positions(expr Step)=
\dnpmv=\numexpr\dnpmv+1\relax
\cnpmv=\numexpr\anpmv/\bnpmv\relax
\anpmv=\cnpmv\relax
- %\num{\the\bnpmv}
\else%
\bnpmv=\numexpr\bnpmv+1\relax%
\fi%
@@ -3469,7 +3795,7 @@ vardef Positions(expr Step)=
\anp=#1\relax%
\bnp=2\relax%
\premier=-1\relax%
- % Pour déterminer le nombre d'étapes
+ % Pour déterminer le nombre d'étapes
\whiledo{\anp > 1}{%
\modulo{\the\anp}{\the\bnp}
\ifnum\remainder=0\relax%
@@ -3479,7 +3805,7 @@ vardef Positions(expr Step)=
\else%
\bnp=\numexpr\bnp+1\relax%
\fi%
- }
+ }%
\ifnum\premier=0%
Le nombre \num{#1} est un nombre premier.%
\else%
@@ -3536,22 +3862,21 @@ vardef Positions(expr Step)=
\else%
\ifnum\exposant>0\relax
\num{\the\pileb}\ifnum\exposant>1 ^{\num{\the\exposant}}\fi\times%
- %\pilea=\anp\relax
\fi
\bnp=\numexpr\bnp+1\relax%
\pileb=\bnp\relax%
- \exposant=0\relax
+ \exposant=0\relax%
\fi%
- }
+ }%
\num{\the\pileb}\ifnum\exposant>1^{\num{\the\exposant}}\fi%
- }
-}
+ }%
+}%
\newcommand{\PremierLong}[1]{%
%#1 : le nombre entier à tester
\ensuremath{%
\newcount\anpl\newcount\bnpl\newcount\cnpl%
- \newcount\pilebl
+ \newcount\pilebl%
\anpl=#1\relax%
\bnpl=2\relax%
\pilebl=2\relax%
@@ -3564,7 +3889,7 @@ vardef Positions(expr Step)=
\else%
\bnpl=\numexpr\bnpl+1\relax%
\pilebl=\bnpl\relax%
- \fi%
+ \fi%
}
}
}
@@ -3635,9 +3960,9 @@ vardef Positions(expr Step)=
}%
}
-%%%%%%%%%%%%%%%%%%%
+%%%
% Simplification
-%%%%%%%%%%%%%%%%%%%
+%%%
\makeatletter%by christian Tellechea
% Calcul du PGCD de #1 et #2
\newcount\cnt@a\newcount\cnt@b\newcount\pgcd
@@ -3675,6 +4000,11 @@ vardef Positions(expr Step)=
\numerateur=\valabsnum
\denominateur=\valabsdeno
\fi
+ \else
+ \ifnum\the\denominateur<0\relax
+ \numerateur=-\valabsnum
+ \denominateur=\valabsdeno
+ \fi
\fi
\ifnum\number#2=0\relax
\text{\bfseries(???)}
@@ -3718,6 +4048,17 @@ vardef Positions(expr Step)=
\else
\valabsdeno=\number#2
\fi
+ \ifnum\the\numerateur<0\relax
+ \ifnum\the\denominateur<0\relax
+ \numerateur=\valabsnum
+ \denominateur=\valabsdeno
+ \fi
+ \else
+ \ifnum\the\denominateur<0\relax
+ \numerateur=-\valabsnum
+ \denominateur=\valabsdeno
+ \fi
+ \fi
\ifnum\number#2=0\relax
\ensuremath{\text{\bfseries(???)}}
\else
@@ -3743,49 +4084,50 @@ vardef Positions(expr Step)=
\fi
}
+\newcount\anpdc\newcount\bnpdc\newcount\cnpdc\newcount\dnpdc%
+\newcount\DivCom
\newcommand\DiviseurCommun[2]{%
% #1 : le premier nombre entier
- % #2 : le deuxième nombre entier
- \newcount\anpdc\newcount\bnpdc\newcount\cnpdc%
+ % #2 : le deuxième nombre entier
+ % nombre 1 vaut #1 - Nombre 2 vaut #2
\anpdc=#1%
\cnpdc=#2%
\bnpdc=2\relax%
- \whiledo{\bnpdc<\anpdc}{%
- \modulo{\the\anpdc}{\the\bnpdc}{}%
+ \dnpdc=\numexpr#1+1\relax%
+ \DivCom=1\relax%
+ \whiledo{\bnpdc<\dnpdc}{%
+ \modulo{\the\anpdc}{\the\bnpdc}\relax
\ifnum\remainder=0%
- \modulo{\the\cnpdc}{\the\bnpdc}{}
+ \modulo{\the\cnpdc}{\the\bnpdc}
\ifnum\remainder=0%
- \xdef\DivCom{\the\bnpdc}%
+ \DivCom=\bnpdc%
\bnpdc=\anpdc%
\else%
- \xdef\DivCom{1}%
- \bnpdc=\numexpr\bnpdc+1%
- \fi%
+ \DivCom=1%
+ \fi
\else%
- \xdef\DivCom{1}%
- \bnpdc=\numexpr\bnpdc+1%
+ \DivCom=1%
\fi
+ \bnpdc=\numexpr\bnpdc+1\relax%
}%
}
\newcommand\LongueSimplification[2]{%
- \DiviseurCommun{#1}{#2}%
\xdef\NumerateurDiv{#1}%
\xdef\DenominateurDiv{#2}%
+ \DiviseurCommun{#1}{#2}%
\ensuremath{%
- \whiledo{\DivCom > 1}{%
- \xdef\DivComa{\DivCom}\xdef\MulComa{\fpeval{\NumerateurDiv/\DivComa}}
- \xdef\DivComb{\DivCom}\xdef\MulComb{\fpeval{\DenominateurDiv/\DivComb}}
- \frac{\num{\DivComa}\times\num{\MulComa}}{\num{\DivComb}\times\num{\MulComb}}=\frac{\num{\MulComa}}{\num{\MulComb}}%
- \xdef\NumerateurDiv{\MulComa}%
- \xdef\DenominateurDiv{\MulComb}%
+ \whiledo{\DivCom>1}{%
+ \frac{\num{\fpeval{\NumerateurDiv/\the\DivCom}}\times\num{\the\DivCom}}{\num{\fpeval{\DenominateurDiv/\the\DivCom}}\times\num{\the\DivCom}}=\frac{\num{\fpeval{\NumerateurDiv/\DivCom}}}{\num{\fpeval{\DenominateurDiv/\DivCom}}}%
+ \xdef\NumerateurDiv{\fpeval{\NumerateurDiv/\DivCom}}%
+ \xdef\DenominateurDiv{\fpeval{\DenominateurDiv/\DivCom}}%
\DiviseurCommun{\NumerateurDiv}{\DenominateurDiv}%
\xintifboolexpr{\DivCom>1}{=}{}%
- }
- }
-}
+ }%
+ }%
+}%
-\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false}
+\setKVdefault[ClesSimplification]{Details=false,All=false,Longue=false,Fleches=false,Contraire=0}
\newcounter{NbFrac}%
\setcounter{NbFrac}{0}%
@@ -3814,17 +4156,23 @@ vardef Positions(expr Step)=
\draw[out=-45,in=-135,-stealth,transform canvas={yshift=-0.25em}] (pic cs:B-\theNbFrac) to node[midway,below]{\Listeb[1,2]}(pic cs:D-\theNbFrac);%
\end{tikzpicture}%
}{%
- \ifboolKV[ClesSimplification]{Longue}{%
- \LongueSimplification{#2}{#3}%
+ \xintifboolexpr{\useKV[ClesSimplification]{Contraire}>1}{%
+ \ensuremath{%
+ \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]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}%
+ \ifboolKV[ClesSimplification]{Longue}{%
+ \LongueSimplification{#2}{#3}%
+ }{%
+ \ifboolKV[ClesSimplification]{Details}{\SSimpli{#2}{#3}}{\ifboolKV[ClesSimplification]{All}{\ensuremath{\SSimpli{#2}{#3}=\SSimplifie{#2}{#3}}}{\SSimplifie{#2}{#3}}}%
+ }%
}%
}%
}%
-%%%%%%%%%%%%%%%%%%%%%
-%%% Thales
-%%%%%%%%%%%%%%%%%%%%%
+%%%
+% Thales
+%%%
\newcount\ppcm
\newcommand\PPCM[2]{%
@@ -3832,10 +4180,10 @@ vardef Positions(expr Step)=
\ppcm=\numexpr#1*#2/\pgcd\relax
}
-\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,Figurecroisee=false,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false}
+\setKVdefault[ClesThales]{Calcul=true,Droites=false,Propor=false,Segment=false,Figure=false,FigureSeule=false,Figurecroisee=false,FigurecroiseeSeule=false,Angle=0,Precision=2,Entier=false,Unite=cm,Reciproque=false,Produit=false,ChoixCalcul=0,Simplification,Redaction=false,Remediation=false}
%On définit la figure à utiliser
-\def\MPFigThales#1#2#3#4#5{
+\def\MPFigThales#1#2#3#4#5#6{
% #1 Premier sommet
% #2 Deuxième sommet
% #3 Troisième sommet
@@ -3855,15 +4203,10 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
- % On définit le centre du cercle inscrit
- %(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- %(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
- %on dessine à main levée :)
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
+ % on dessine à main levée :)
path cotes[];
cotes1=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
cotes2=B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
@@ -3909,14 +4252,10 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
- % On définit le centre du cercle inscrit
- %(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- %(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
- %on dessine à main levée :)
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
+ % on dessine à main levée :)
path cotes[];
cotes1=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
cotes2=B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
@@ -3953,7 +4292,7 @@ vardef Positions(expr Step)=
}
%On définit la figure à utiliser
-\def\MPFigReciThales#1#2#3#4#5{
+\def\MPFigReciThales#1#2#3#4#5#6{
% #1 Premier sommet
% #2 Deuxième sommet
% #3 Troisième sommet
@@ -3973,15 +4312,10 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
- % On définit le centre du cercle inscrit
- %(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- %(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
- %on dessine à main levée :)
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
+ % on dessine à main levée :)
path cotes[];
cotes1=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
cotes2=B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
@@ -4015,14 +4349,10 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
- % On définit le centre du cercle inscrit
- %(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
- %(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
- %on dessine à main levée :)
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
+ % on dessine à main levée :)
path cotes[];
cotes1=A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
cotes2=B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
@@ -4042,24 +4372,12 @@ vardef Positions(expr Step)=
label(btex #5 etex,1.1[B,N]);
fill (fullcircle scaled 0.75mm) shifted (cotes1 intersectionpoint cotes4);
fill (fullcircle scaled 0.75mm) shifted (cotes3 intersectionpoint cotes4);
-% pair I,J,K;
-% I=1/2[M,N];
-% J=1/2[B,C];
-% K=1/2[I,J];
-% path cd;
-% cd=(fullcircle scaled 6mm) shifted K;
-% drawoptions(withcolor 0.75*white);
-% drawarrow reverse((I{dir(210+angle(I-J))}..{dir(150+angle(I-J))}K) cutafter cd);
-% drawarrow reverse((J{dir(210+angle(J-I))}..{dir(150+angle(J-I))}K) cutafter cd);
-% draw cd;
-% label(btex $//$ etex ,K);
-% drawoptions();
\end{mpost}
\fi
}
%On définit la deuxième figure à utiliser
-\def\MPFigThalesCroisee#1#2#3#4#5{%
+\def\MPFigThalesCroisee#1#2#3#4#5#6{%
% #1 Premier sommet
% #2 Deuxième sommet
% #3 Troisième sommet
@@ -4079,11 +4397,9 @@ vardef Positions(expr Step)=
B=A rotatedabout(O,130);
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
% on dessine à main levée :)
M=1.4[B,A];
N=1.4[C,A];
@@ -4102,7 +4418,6 @@ vardef Positions(expr Step)=
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
(I-M) rotated ((angle(C-M)-angle(A-M))/2) shifted M=whatever[M,C];
%on labelise
- %label(btex #1 etex,1.15[1/2[B,C],A]);
label(btex #1 etex,I);
label(btex #2 etex,1.2[M,B]);
label(btex #3 etex,1.2[N,C]);
@@ -4136,10 +4451,9 @@ vardef Positions(expr Step)=
B=A rotatedabout(O,130);
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
% on dessine à main levée :)
M=1.4[B,A];
N=1.4[C,A];
@@ -4158,7 +4472,6 @@ vardef Positions(expr Step)=
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
(I-M) rotated ((angle(C-M)-angle(A-M))/2) shifted M=whatever[M,C];
%on labelise
- %label(btex #1 etex,1.15[1/2[B,C],A]);
label(btex #1 etex,I);
label(btex #2 etex,1.2[M,B]);
label(btex #3 etex,1.2[N,C]);
@@ -4183,7 +4496,7 @@ vardef Positions(expr Step)=
}
%On définit la deuxième figure à utiliser
-\def\MPFigReciThalesCroisee#1#2#3#4#5{%
+\def\MPFigReciThalesCroisee#1#2#3#4#5#6{%
% #1 Premier sommet
% #2 Deuxième sommet
% #3 Troisième sommet
@@ -4203,11 +4516,9 @@ vardef Positions(expr Step)=
B=A rotatedabout(O,130);
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
% on dessine à main levée :)
M=1.4[B,A];
N=1.4[C,A];
@@ -4226,7 +4537,6 @@ vardef Positions(expr Step)=
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
(I-M) rotated ((angle(C-M)-angle(A-M))/2) shifted M=whatever[M,C];
%on labelise
- %label(btex #1 etex,1.15[1/2[B,C],A]);
label(btex #1 etex,I);
label(btex #2 etex,1.2[M,B]);
label(btex #3 etex,1.2[N,C]);
@@ -4250,10 +4560,9 @@ vardef Positions(expr Step)=
B=A rotatedabout(O,130);
C=(A--2[A,B rotatedabout(A,45)]) intersectionpoint (B--2[B,A rotatedabout(B,-60)]);
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#6);
+ B:=B rotatedabout(O,#6);
+ C:=C rotatedabout(O,#6);
% on dessine à main levée :)
M=1.4[B,A];
N=1.4[C,A];
@@ -4272,7 +4581,6 @@ vardef Positions(expr Step)=
(I-C) rotated ((angle(A-C)-angle(M-C))/2) shifted C=whatever[A,C];
(I-M) rotated ((angle(C-M)-angle(A-M))/2) shifted M=whatever[M,C];
%on labelise
- %label(btex #1 etex,1.15[1/2[B,C],A]);
label(btex #1 etex,I);
label(btex #2 etex,1.2[M,B]);
label(btex #3 etex,1.2[N,C]);
@@ -4291,7 +4599,7 @@ vardef Positions(expr Step)=
\useKVdefault[ClesThales]%
\setKV[ClesThales]{#1}%
\ifboolKV[ClesThales]{Droites}{%
- Les droites $(#3#5)$ et $(#4#6)$ sont sécantes en $#2$.%
+ Les droites \ifboolKV[ClesThales]{Remediation}{\pointilles[2cm]}{$(#3#5)$} et \ifboolKV[ClesThales]{Remediation}{\pointilles[2cm]}{$(#4#6)$} sont sécantes en \ifboolKV[ClesThales]{Remediation}{\pointilles[2cm]}{$#2$}.%
}{%
Dans le triangle \ifboolKV[ClesThales]{Remediation}{\pointilles[2cm]}{$#2#3#4$}, \ifboolKV[ClesThales]{Remediation}{\pointilles[1cm]}{$#5$} est un point \ifboolKV[ClesThales]{Segment}{du segment}{de la
droite}
@@ -4869,23 +5177,31 @@ vardef Positions(expr Step)=
\newcommand{\TThales}[8][]{%
\setKV[ClesThales]{#1}%
- \ifboolKV[ClesThales]{Figure}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
- \begin{multicols}{2}%
- {\em La figure est donnée à titre indicatif.}%
- \[\MPFigThales\NomA\NomB\NomC\NomM\NomN\]%
- \par\columnbreak\par%
- \ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}%
- \end{multicols}%
- }{\ifboolKV[ClesThales]{Figurecroisee}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
- \begin{multicols}{2}%
- {\em La figure est donnée à titre indicatif.}%
- \[\MPFigThalesCroisee\NomA\NomB\NomC\NomM\NomN\]%
- \par\columnbreak\par%
- \ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}%
- \end{multicols}%
- }{\ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}}%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \ifboolKV[ClesThales]{FigureSeule}{%
+ \MPFigThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
+ }{\ifboolKV[ClesThales]{FigurecroiseeSeule}{%
+ \MPFigThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
+ }{%
+ \ifboolKV[ClesThales]{Figure}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \begin{multicols}{2}%
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]%
+ \par\columnbreak\par%
+ \ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}%
+ \end{multicols}%
+ }{\ifboolKV[ClesThales]{Figurecroisee}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \begin{multicols}{2}%
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]%
+ \par\columnbreak\par%
+ \ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}%
+ \end{multicols}%
+ }{\ifboolKV[ClesThales]{Entier}{\TThalesCalculsE[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}{\TThalesCalculsD[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}}}%
+ }%
+ }%
}%
}%
%%%%
@@ -4984,31 +5300,40 @@ vardef Positions(expr Step)=
% #4 longueur AB
% #5 longueur AF
% #6 longueur AC
- \ifboolKV[ClesThales]{Figure}{%
+ \ifboolKV[ClesThales]{FigureSeule}{%
\StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
- \begin{multicols}{2}
- {\em La figure est donnée à titre indicatif.}
- \[\MPFigReciThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}\]
- \par\columnbreak\par
- \ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
- \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}
- \end{multicols}
- }{\ifboolKV[ClesThales]{Figurecroisee}{%
- \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]
- \begin{minipage}{0.4\linewidth}
- {\em La figure est donnée à titre indicatif.}
- \[\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}\]
- \end{minipage}
- \hfill
- \begin{minipage}{0.55\linewidth}
- \ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
- \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}
- \end{minipage}\\%
- }{\ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
- \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}
- }
- }
-}
+ \MPFigReciThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
+ }{\ifboolKV[ClesThales]{FigurecroiseeSeule}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
+ }{%
+ \ifboolKV[ClesThales]{Figure}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \begin{multicols}{2}
+ {\em La figure est donnée à titre indicatif.}
+ \[\MPFigReciThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]
+ \par\columnbreak\par
+ \ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
+ \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}
+ \end{multicols}
+ }{\ifboolKV[ClesThales]{Figurecroisee}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]
+ \begin{minipage}{0.4\linewidth}
+ {\em La figure est donnée à titre indicatif.}
+ \[\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.55\linewidth}
+ \ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
+ \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
+ \end{minipage}\\%
+ }{\ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par
+ \ReciThalesCalculs[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
+ }%
+ }%
+ }%
+ }%
+}%
\newcommand{\Thales}[8][]{%
\useKVdefault[ClesThales]%
@@ -5016,18 +5341,48 @@ vardef Positions(expr Step)=
\ifboolKV[ClesThales]{Reciproque}{%
\ReciproqueThales[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
}{%
- \ifboolKV[ClesThales]{Redaction}{%
- \TTThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}%
+ \ifboolKV[ClesThales]{FigureSeule}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \MPFigThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
}{%
- \TThales[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
- }
+ \ifboolKV[ClesThales]{FigurecroiseeSeule}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \MPFigThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}%
+ }{%
+ \ifboolKV[ClesThales]{Redaction}{%
+ \ifboolKV[ClesThales]{Figure}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \begin{multicols}{2}
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigThales{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]%
+ \par\columnbreak\par%
+ \TTThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}%
+ \end{multicols}%
+ }{%
+ \ifboolKV[ClesThales]{Figurecroisee}{%
+ \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN]%
+ \begin{multicols}{2}
+ {\em La figure est donnée à titre indicatif.}%
+ \[\MPFigThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]%
+ \par\columnbreak\par%
+ \TTThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}%
+ \end{multicols}
+ }{%
+ \TTThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}%
+ }
+ }
+ }{%
+ \TThales[#1]{#2}{#3}{#4}{#5}{#6}{#7}{#8}%
+ }%
+ }%
+ }%
}%
}%
-%%%%%%%%%%%%%%%%
-%% Trigonométrie
-%%%%%%%%%%%%%%%%
-\def\MPFigTrigo#1#2#3#4#5#6#7{%
+%%%
+% Trigonométrie
+%%%
+\def\MPFigTrigo#1#2#3#4#5#6#7#8{%
\ifluatex
\mplibcodeinherit{enable}
\mplibforcehmode
@@ -5042,11 +5397,9 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Angle;
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#8);
+ B:=B rotatedabout(O,#8);
+ C:=C rotatedabout(O,#8);
% On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
@@ -5065,8 +5418,6 @@ vardef Positions(expr Step)=
picture MAngle;
MAngle=image(
draw (cc shifted A);
- % draw (cc shifted B);
- % draw (cc shifted C);
);
draw MAngle;
clip currentpicture to triangle;
@@ -5084,15 +5435,15 @@ vardef Positions(expr Step)=
else:
if angle(1/2[A,C]-B)>0:
if #6=0:
- label(btex ? etex rotated angle(C-A),1.1[B,1/2[A,C]]);
+ label(btex ? etex,1.1[B,1/2[A,C]]);
else:
- label(btex \num{#6} etex rotated angle(C-A),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
fi;
else:
if #6=0:
- label(btex ? etex rotated angle(A-C),1.1[B,1/2[A,C]]);
+ label(btex ? etex,1.1[B,1/2[A,C]]);
else:
- label(btex \num{#6} etex rotated angle(A-C),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
fi;
fi;
fi;
@@ -5100,15 +5451,15 @@ vardef Positions(expr Step)=
else:
if angle(1/2[B,C]-A)>0:
if #4=0:
- label(btex ? etex rotated(angle(B-C)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex ? etex,1/2[B,C]-decalage*(unitvector(A-B)));
else:
- label(btex \num{#4} etex rotated(angle(B-C)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
fi;
else:
if #4=0:
- label(btex ? etex rotated(angle(C-B)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex ? etex,1/2[B,C]-decalage*(unitvector(A-B)));
else:
- label(btex \num{#4} etex rotated(angle(C-B)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
fi;
fi;
fi;
@@ -5116,15 +5467,15 @@ vardef Positions(expr Step)=
else:
if angle(1/2[A,B]-C)>0:
if #5=0:
- label(btex ? etex rotated angle(A-B),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex ? etex,1/2[A,B]-decalage*(unitvector(C-B)));
else:
- label(btex \num{#5} etex rotated angle(A-B),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
else:
if #5=0:
- label(btex ? etex rotated angle(B-A),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex ? etex,1/2[A,B]-decalage*(unitvector(C-B)));
else:
- label(btex \num{#5} etex rotated angle(B-A),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
fi;
fi;
@@ -5142,10 +5493,9 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#8);
+ B:=B rotatedabout(O,#8);
+ C:=C rotatedabout(O,#8);
% On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
@@ -5231,7 +5581,7 @@ vardef Positions(expr Step)=
\fi
}
-\def\MPFigTrigoAngle#1#2#3#4#5#6{%
+\def\MPFigTrigoAngle#1#2#3#4#5#6#7{%
% #1 A
% #2 B
% #3 C
@@ -5252,12 +5602,10 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- numeric Anglelua;
- Anglelua=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Anglelua);
- B:=B rotatedabout(O,Anglelua);
- C:=C rotatedabout(O,Anglelua);
- % On définit le centre du cercle inscrit
+ A:=A rotatedabout(O,#7);
+ B:=B rotatedabout(O,#7);
+ C:=C rotatedabout(O,#7);
+ % On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
%on dessine à main levée :)
@@ -5275,34 +5623,32 @@ vardef Positions(expr Step)=
picture MAngle;
MAngle=image(
draw (cc shifted A);
-% draw (cc shifted B);
-% draw (cc shifted C);
);
draw MAngle;
clip currentpicture to triangle;
draw A{dir(angle(B-A)+5)}..B{dir(angle(B-A)+5)};
draw B{dir(angle(C-B)+5)}..C{dir(angle(C-B)+5)};
draw C{dir(angle(A-C)+5)}..A{dir(angle(A-C)+5)};
- %on labelise
+ % on labelise
label(btex #1 etex,1.15[O,A]);
label(btex #2 etex,1.15[O,B]);
label(btex #3 etex,1.15[O,C]);
label(btex ? etex,A+0.95u*unitvector(I-A));
decalage:=3mm;
if angle(1/2[A,C]-B)>0:
- label(btex \num{#6} etex rotated angle(C-A),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
else:
- label(btex \num{#6} etex rotated angle(A-C),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
fi;
if angle(1/2[B,C]-A)>0:
- label(btex \num{#4} etex rotated(angle(B-C)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
else:
- label(btex \num{#4} etex rotated(angle(C-B)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
fi;
if angle(1/2[A,B]-C)>0:
- label(btex \num{#5} etex rotated angle(A-B),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
else:
- label(btex \num{#5} etex rotated angle(B-A),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
\end{mplibcode}
\mplibcodeinherit{disable}
@@ -5318,10 +5664,9 @@ vardef Positions(expr Step)=
O - .5[A,B] = whatever * (B-A) rotated 90;
O - .5[B,C] = whatever * (C-B) rotated 90;
% On tourne pour éventuellement moins de lassitude :)
- Angle=uniformdeviate(180);%Caractère aléatoire
- A:=A rotatedabout(O,Angle);
- B:=B rotatedabout(O,Angle);
- C:=C rotatedabout(O,Angle);
+ A:=A rotatedabout(O,#7);
+ B:=B rotatedabout(O,#7);
+ C:=C rotatedabout(O,#7);
% On définit le centre du cercle inscrit
(I-C) rotated ((angle(A-C)-angle(B-C))/2) shifted C=whatever[A,C];
(I-B) rotated ((angle(C-B)-angle(A-B))/2) shifted B=whatever[B,C];
@@ -5340,8 +5685,6 @@ vardef Positions(expr Step)=
picture MAngle;
MAngle=image(
draw (cc shifted A);
-% draw (cc shifted B);
-% draw (cc shifted C);
);
draw MAngle;
clip currentpicture to triangle;
@@ -5355,25 +5698,25 @@ vardef Positions(expr Step)=
label(btex ? etex,A+0.95u*unitvector(I-A));
decalage:=3mm;
if angle(1/2[A,C]-B)>0:
- label(btex \num{#6} etex rotated angle(C-A),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
else:
- label(btex \num{#6} etex rotated angle(A-C),1.1[B,1/2[A,C]]);
+ label(btex \num{#6} etex,1.1[B,1/2[A,C]]);
fi;
if angle(1/2[B,C]-A)>0:
- label(btex \num{#4} etex rotated(angle(B-C)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
else:
- label(btex \num{#4} etex rotated(angle(C-B)),1/2[B,C]-decalage*(unitvector(A-B)));
+ label(btex \num{#4} etex,1/2[B,C]-decalage*(unitvector(A-B)));
fi;
if angle(1/2[A,B]-C)>0:
- label(btex \num{#5} etex rotated angle(A-B),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
else:
- label(btex \num{#5} etex rotated angle(B-A),1/2[A,B]-decalage*(unitvector(C-B)));
+ label(btex \num{#5} etex,1/2[A,B]-decalage*(unitvector(C-B)));
fi;
\end{mpost}
\fi
}
-\setKVdefault[ClesTrigo]{Angle=false,Propor=false,Figure=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false}%
+\setKVdefault[ClesTrigo]{Angle=0,Propor=false,Figure=false,FigureSeule=false,Precision=2,Unite=cm,Sinus=false,Cosinus=false,Tangente=false}%
\newcommand\TrigoCalculs[5][]{%
\setKV[ClesTrigo]{#1}%
@@ -5381,18 +5724,19 @@ vardef Positions(expr Step)=
% #2 Nom du triangle ABC, rectangle en B, angle connu ou pas : BAC
% #3 Longueur
% #4 Longueur
- %#5 angle
+ % #5 angle
% On définit les points
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
\StrMid{#2}{3}{3}[\NomC]%
- Dans le triangle $\NomA\NomB\NomC$, rectangle en $\NomB$, on a :
+ Dans le triangle $\NomA\NomB\NomC$, rectangle en $\NomB$, on a :%
\ifboolKV[ClesTrigo]{Cosinus}{%
\ifx\bla#3\bla%on calcule le côté adjacent
- \ifboolKV[ClesTrigo]{Propor}{%
- \begin{align*}
- \NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
- \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*cosd(#5)},\useKV[ClesTrigo]{Precision})}}%
+ \ifboolKV[ClesTrigo]{Propor}{%
+ \begin{align*}
+ \NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
+ \num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\
\num{\fpeval{round(\fpeval{#4*cosd(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(\fpeval{#4*cosd(#5)},2)}}{=}{\approx}\NomA\NomB%
\end{align*}%
}{%
@@ -5400,12 +5744,12 @@ vardef Positions(expr Step)=
\cos(\widehat{\NomB\NomA\NomC})&=\frac{\NomA\NomB}{\NomA\NomC}\\
\cos(\ang{#5})&=\frac{\NomA\NomB}{\num{#4}}\\
\num{#4}\times\cos(\ang{#5})&=\NomA\NomB\\
- \num{\fpeval{round(\fpeval{#4*cosd(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(\fpeval{#4*cosd(#5)},2)}}{=}{\approx}\NomA\NomB%
- \end{align*}%
+ \num{\fpeval{round(\fpeval{#4*cosd(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(\fpeval{#4*cosd(#5)},2)}}{=}{\approx}\NomA\NomB
+ \end{align*}
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*cosd(#5)},\useKV[ClesTrigo]{Precision})}}%
- \else
+ \else%
\ifx\bla#4\bla%on calcule l'hypothénuse
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/cosd(#5)},\useKV[ClesTrigo]{Precision})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
@@ -5421,8 +5765,8 @@ vardef Positions(expr Step)=
\NomA\NomC&\IfInteger{\fpeval{round(\fpeval{#3/cosd(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/cosd(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/cosd(#5)},\useKV[ClesTrigo]{Precision})}}%
\else%on calcule l'angle
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{acosd(#3/#4)})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\cos(\widehat{\NomB\NomA\NomC})&=\NomA\NomB\\
@@ -5437,12 +5781,12 @@ vardef Positions(expr Step)=
\widehat{\NomB\NomA\NomC}&\IfInteger{\fpeval{round(\fpeval{acosd(#3/#4)},2)}}{=}{\approx}\ang{\fpeval{round(\fpeval{acosd(#3/#4)})}}%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{acosd(#3/#4)})}}%
- \fi
- \fi
- }{}
+ \fi%
+ \fi%
+ }{}%
\ifboolKV[ClesTrigo]{Sinus}{%
\ifx\bla#3\bla%on calcule le côté opposé
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*sind(#5)},\useKV[ClesTrigo]{Precision})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
@@ -5457,26 +5801,26 @@ vardef Positions(expr Step)=
\num{\fpeval{round(\fpeval{#4*sind(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(\fpeval{#4*sind(#5)},2)}}{=}{\approx}\NomB\NomC%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*sind(#5)},\useKV[ClesTrigo]{Precision})}}%
\else
\ifx\bla#4\bla%on calcule l'hypothénuse
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}%
\ifboolKV[ClesTrigo]{Propor}{%
- \begin{align*}
- \NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
- \NomA\NomC\times\sin(\ang{#5})&=\num{#3}\\
- \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(\fpeval{#3/sind(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
- \end{align*}%
- }{
- \begin{align*}
- \sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\
- \sin(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
- \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
- \NomA\NomC&\IfInteger{\fpeval{round(\fpeval{#3/sind(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
- \end{align*}%
- }%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}%
- \else%on calcule l'angle
+ \begin{align*}
+ \NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
+ \NomA\NomC\times\sin(\ang{#5})&=\num{#3}\\
+ \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
+ \NomA\NomC&\IfInteger{\fpeval{round(\fpeval{#3/sind(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \end{align*}%
+ }{%
+ \begin{align*}
+ \sin(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomC}\\
+ \sin(\ang{#5})&=\frac{\num{#3}}{\NomA\NomC}\\
+ \NomA\NomC&=\frac{\num{#3}}{\sin(\ang{#5})}\\
+ \NomA\NomC&\IfInteger{\fpeval{round(\fpeval{#3/sind(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/sind(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \end{align*}%
+ }%
+ \else%on calcule l'angle
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{asind(#3/#4)})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomC\times\sin(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
@@ -5491,12 +5835,12 @@ vardef Positions(expr Step)=
\widehat{\NomB\NomA\NomC}&\IfInteger{\fpeval{round(\fpeval{asind(#3/#4)},2)}}{=}{\approx}\ang{\fpeval{round(\fpeval{asind(#3/#4)})}}%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{asind(#3/#4)})}}%
- \fi
- \fi
- }{}
+ \fi%
+ \fi%
+ }{}%
\ifboolKV[ClesTrigo]{Tangente}{%
\ifx\bla#3\bla%on calcule le côté opposé
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*tand(#5)},\useKV[ClesTrigo]{Precision})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\%
@@ -5511,26 +5855,26 @@ vardef Positions(expr Step)=
\num{\fpeval{round(\fpeval{#4*tand(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}&\IfInteger{\fpeval{round(\fpeval{#4*tand(#5)},2)}}{=}{\approx}\NomB\NomC%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#4*tand(#5)},\useKV[ClesTrigo]{Precision})}}%
\else
\ifx\bla#4\bla%on calcule l'adjacent
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}%
\ifboolKV[ClesTrigo]{Propor}{%
- \begin{align*}
- \NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
- \NomA\NomB\times\tan(\ang{#5})&=\num{#3}\\
- \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
- \NomA\NomB&\IfInteger{\fpeval{round(\fpeval{#3/tand(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
- \end{align*}%
- }{
- \begin{align*}
- \tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\
- \tan(\ang{#5})&=\frac{\num{#3}}{\NomA\NomB}\\
- \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
- \NomA\NomB&\IfInteger{\fpeval{round(\fpeval{#3/tand(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
- \end{align*}%
- }%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}%
+ \begin{align*}
+ \NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
+ \NomA\NomB\times\tan(\ang{#5})&=\num{#3}\\
+ \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
+ \NomA\NomB&\IfInteger{\fpeval{round(\fpeval{#3/tand(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \end{align*}%
+ }{%
+ \begin{align*}
+ \tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\
+ \tan(\ang{#5})&=\frac{\num{#3}}{\NomA\NomB}\\
+ \NomA\NomB&=\frac{\num{#3}}{\tan(\ang{#5})}\\
+ \NomA\NomB&\IfInteger{\fpeval{round(\fpeval{#3/tand(#5)},2)}}{=}{\approx}\num{\fpeval{round(\fpeval{#3/tand(#5)},\useKV[ClesTrigo]{Precision})}}~\text{\useKV[ClesTrigo]{Unite}}%
+ \end{align*}%
+ }%
\else%on calcule l'angle
+ \xdef\ResultatTrigo{\fpeval{round(\fpeval{atand(#3/#4)})}}%
\ifboolKV[ClesTrigo]{Propor}{%
\begin{align*}
\NomA\NomB\times\tan(\widehat{\NomB\NomA\NomC})&=\NomB\NomC\\
@@ -5538,18 +5882,17 @@ vardef Positions(expr Step)=
\tan(\widehat{\NomB\NomA\NomC})&=\frac{\num{#3}}{\num{#4}}\\
\widehat{\NomB\NomA\NomC}&\IfInteger{\fpeval{round(\fpeval{atand(#3/#4)},2)}}{=}{\approx}\ang{\fpeval{round(\fpeval{atand(#3/#4)})}}%
\end{align*}%
- }{
+ }{%
\begin{align*}
\tan(\widehat{\NomB\NomA\NomC})&=\frac{\NomB\NomC}{\NomA\NomB}\\
\tan(\widehat{\NomB\NomA\NomC})&=\frac{\num{#3}}{\num{#4}}\\
\widehat{\NomB\NomA\NomC}&\IfInteger{\fpeval{round(\fpeval{atand(#3/#4)},2)}}{=}{\approx}\ang{\fpeval{round(\fpeval{atand(#3/#4)})}}%
\end{align*}%
}%
- \xdef\ResultatTrigo{\fpeval{round(\fpeval{atand(#3/#4)})}}%
- \fi
- \fi
- }{}
-}
+ \fi%
+ \fi%
+ }{}%
+}%
\newcommand\Trigo[5][]{%
\useKVdefault[ClesTrigo]%
@@ -5557,77 +5900,114 @@ vardef Positions(expr Step)=
% #1 Clés
% #2 Nom du triangle ABC, rectangle en B, angle connu ou pas : BAC
% #3 Longueur
- % #4 Longueur ou angle en fonction du calcul à faire. Si longueur, #3<#4
+ % #4 Longueur
+ % #5 angle
% On définit les points
\StrMid{#2}{1}{1}[\NomA]%
\StrMid{#2}{2}{2}[\NomB]%
\StrMid{#2}{3}{3}[\NomC]%
% On rédige
- \ifboolKV[ClesTrigo]{Figure}{%
- \begin{multicols}{2}%
- {\em La figure est donnée à titre indicatif.}%
- \ifboolKV[ClesTrigo]{Angle}{%figure pour calculer un angle
+ \ifboolKV[ClesTrigo]{FigureSeule}{%
+ \ifx#5\bla\bla%
+ \ifboolKV[ClesTrigo]{Cosinus}{%
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{}{#3}{#4}{\useKV[ClesTrigo]{Angle}}
+ }{}%
+ \ifboolKV[ClesTrigo]{Sinus}{%
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{}{#4}{\useKV[ClesTrigo]{Angle}}
+ }{}%
+ \ifboolKV[ClesTrigo]{Tangente}{%
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{}{\useKV[ClesTrigo]{Angle}}
+ }{}%
+ \else%}{%figure pour calculer une longueur
+ \ifboolKV[ClesTrigo]{Cosinus}{%
+ \ifx#3\bla\bla%adjacent inconnu
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{0}{#4}{#5}{\useKV[ClesTrigo]{Angle}}
+ \else
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{#3}{0}{#5}{\useKV[ClesTrigo]{Angle}}
+ \fi
+ }{}%
+ \ifboolKV[ClesTrigo]{Sinus}{%
+ \ifx#3\bla\bla%adjacent inconnu
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{-1}{#4}{#5}{\useKV[ClesTrigo]{Angle}}
+ \else
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{-1}{0}{#5}{\useKV[ClesTrigo]{Angle}}
+ \fi
+ }{}%
+ \ifboolKV[ClesTrigo]{Tangente}{%
+ \ifx#3\bla\bla%adjacent inconnu
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{#4}{-1}{#5}{\useKV[ClesTrigo]{Angle}}
+ \else%
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{0}{-1}{#5}{\useKV[ClesTrigo]{Angle}}
+ \fi%
+ }{}%
+ \fi%
+ }{%
+ \ifboolKV[ClesTrigo]{Figure}{%
+ \begin{multicols}{2}%
+ {\em La figure est donnée à titre indicatif.}%
+ \ifx#5\bla\bla%
\ifboolKV[ClesTrigo]{Cosinus}{%
\begin{center}
- \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{}{#3}{#4}
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{}{#3}{#4}{\useKV[ClesTrigo]{Angle}}
\end{center}
}{}%
\ifboolKV[ClesTrigo]{Sinus}{%
\begin{center}
- \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{}{#4}
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{}{#4}{\useKV[ClesTrigo]{Angle}}
\end{center}
}{}%
\ifboolKV[ClesTrigo]{Tangente}{%
\begin{center}
- \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{}
+ \MPFigTrigoAngle{\NomA}{\NomB}{\NomC}{#3}{#4}{}{\useKV[ClesTrigo]{Angle}}
\end{center}
}{}%
- }{%figure pour calculer une longueur
+ \else%}{%figure pour calculer une longueur
\ifboolKV[ClesTrigo]{Cosinus}{%
\ifx#3\bla\bla%adjacent inconnu
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{0}{#4}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{0}{#4}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\else
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{#3}{0}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{-1}{#3}{0}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\fi
}{}%
\ifboolKV[ClesTrigo]{Sinus}{%
\ifx#3\bla\bla%adjacent inconnu
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{-1}{#4}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{-1}{#4}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\else
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{-1}{0}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{-1}{0}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\fi
}{}%
\ifboolKV[ClesTrigo]{Tangente}{%
\ifx#3\bla\bla%adjacent inconnu
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{#4}{-1}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{0}{#4}{-1}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\else%
\begin{center}
- \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{0}{-1}{#5}
+ \MPFigTrigo{\NomA}{\NomB}{\NomC}{#3}{0}{-1}{#5}{\useKV[ClesTrigo]{Angle}}
\end{center}
\fi%
}{}%
- }%
- \par\columnbreak\par
- \TrigoCalculs{#2}{#3}{#4}{#5}%
- \end{multicols}
- }{%
- \TrigoCalculs{#2}{#3}{#4}{#5}%
+ \fi%
+ \par\columnbreak\par
+ \TrigoCalculs[#1]{#2}{#3}{#4}{#5}%
+ \end{multicols}
+ }{%
+ \TrigoCalculs[#1]{#2}{#3}{#4}{#5}%
+ }%
}%
}%
-%%%%%%%%%%%%%%%
-%% Statistiques
-%%%%%%%%%%%%%%%
+%%%
+% Statistiques
+%%%
\newcommand\NbDonnees{}
\newcommand\SommeDonnees{}%
\newcommand\EffectifTotal{}%
@@ -5638,104 +6018,183 @@ vardef Positions(expr Step)=
\newcommand\DonneeMin{}%
\newcommand\EffectifMax{}%
-\setKVdefault[ClesStat]{Tableau=false,Frequence=false,EffectifTotal=false,Etendue=false,Moyenne=false,SET=false,Mediane=false,Total=false,Concret=false,Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif(s),Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,Graphique=false,Batons=true,Unitex=0.5,Unitey=0.5,Rayon=3cm,AffichageAngle=false,Liste=false,ECC=false,Coupure=10,ColorTab=gray!15}
+\setKVdefault[ClesStat]{ColVide=0,EffVide=false,%
+FreqVide=false,AngVide=false,ECCVide=false,TotalVide=false,Sondage=false,%
+Tableau=false,Stretch=1,Frequence=false,EffectifTotal=false,%
+Etendue=false,Moyenne=false,SET=false,Mediane=false,Total=false,Concret=false,%
+Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Origine=0,Angle=false,SemiAngle=false,Qualitatif=false,TableauVide=false,Graphique=false,Batons=true,Unitex=0.5,Unitey=0.5,Rayon=3cm,AffichageAngle=false,Liste=false,ECC=false,Coupure=10,CouleurTab=gray!15,ListeCouleurs={white},Hachures=false,Inverse=false,AbscisseRotation=false}
% La construction du tableau
\def\addtotok#1#2{#1\expandafter{\the#1#2}}
\newtoks\tabtoksa\newtoks\tabtoksb\newtoks\tabtoksc
-\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{&\num{#1}}\addtotok\tabtoksb{&\num{#2}}}
-\def\buildtab{%
+\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{\ifboolKV[ClesStat]{Qualitatif}{&#1}{&\num{#1}}}\addtotok\tabtoksb{&\num{#2}}}
+\def\buildtab{% %%Tableau sans total
\tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
\foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}%
\[%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{ColorTab}}}c|*{\number\numexpr\ListeCompletelen}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
+ %\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{\ListeComplete[##1,2]}%
+ \renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}%
+ \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\number\numexpr\ListeCompletelen}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
\hline%
- \rowcolor{\useKV[ClesStat]{ColorTab}}\the\tabtoksa\\\hline%
- \the\tabtoksb\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculFrequence{##1}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculAngle{##1}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\CalculSemiAngle{##1}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculECC{##1}}}\\\hline}{}%
- \end{tabular}
+ \rowcolor{\useKV[ClesStat]{CouleurTab}}\the\tabtoksa\\\hline%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}<1%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}>\ListeCompletelen%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\the\tabtoksb}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}=1%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}=\ListeCompletelen%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}}&\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculSemiAngle{##1}}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}\\\hline}{}%
+ \end{tabular}
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \renewcommand{\arraystretch}{1}%
\]
}
-\def\buildtabt{%
+\def\buildtabt{% %%Tableau avec total
\tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
\foreachitem\compteur\in\ListeComplete{\expandafter\updatetoks\compteur\nil}%
- \[%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{ColorTab}}}c|*{\number\numexpr\ListeCompletelen+1}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
+ \[%
+ \renewcommand{\arraystretch}{\useKV[ClesStat]{Stretch}}%
+ \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{CouleurTab}}}c|*{\number\numexpr\ListeCompletelen+1}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
\hline%
- \rowcolor{\useKV[ClesStat]{ColorTab}}\the\tabtoksa&Total\\\hline%
- \the\tabtoksb&\ifboolKV[ClesStat]{TableauVide}{}{\num{\EffectifTotal}}%
- \\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculFrequence{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{100}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculAngle{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{360}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculSemiAngle{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{180}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculECC{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{\num{\EffectifTotal}}\\\hline}{}%
+ \rowcolor{\useKV[ClesStat]{CouleurTab}}\the\tabtoksa&Total\\\hline%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}<1%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen+1}}\do{&}}{\the\tabtoksb&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
\end{tabular}
- \]
-}
-
-\def\updatetoksq#1/#2\nil{\addtotok\tabtoksa{&#1}\addtotok\tabtoksb{&\num{#2}}}
-\def\buildtabq{%
- \tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
- \foreachitem\compteur\in\ListeComplete{\expandafter\updatetoksq\compteur\nil}%
- \[%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{ColorTab}}}c|*{\number\numexpr\ListeCompletelen}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
- \hline%
- \rowcolor{\useKV[ClesStat]{ColorTab}}\the\tabtoksa\\\hline%
- \the\tabtoksb\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculFrequence{##1}}}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculAngle{##1}}}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculSemiAngle{##1}}}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculECC{##1}}}\\\hline}{}%
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}>\ListeCompletelen%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen+1}}\do{&}}{\the\tabtoksb&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
\end{tabular}
- \]
-}
-
-\def\buildtabqt{%
- \tabtoksa{\useKV[ClesStat]{Donnee}}\tabtoksb{\useKV[ClesStat]{Effectif}}%
- \foreachitem\compteur\in\ListeComplete{\expandafter\updatetoksq\compteur\nil}%
- \[%
- \begin{tabular}{|>{\columncolor{\useKV[ClesStat]{ColorTab}}}c|*{\number\numexpr\ListeCompletelen+1}{>{\centering\arraybackslash}p{\useKV[ClesStat]{Largeur}}|}}%
- \hline%
- \rowcolor{\useKV[ClesStat]{ColorTab}}\the\tabtoksa&Total\\\hline%
- \the\tabtoksb&\num{\EffectifTotal}\\\hline%
- \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculFrequence{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{100}\\\hline}{}%
- \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculAngle{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{360}\\\hline}{}%
- \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculSemiAngle{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{180}\\\hline}{}%
- \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\CalculECC{##1}}}&\ifboolKV[ClesStat]{TableauVide}{}{\num{\EffectifTotal}}\\\hline}{}%
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}=1%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen+1}}\do{&}}{\useKV[ClesStat]{Effectif}&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.&\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifnum\number\numexpr\useKV[ClesStat]{ColVide}=\ListeCompletelen%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen+1}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ListeComplete[##1,2]}&&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
+ \end{tabular}
+ \else%
+ \ifboolKV[ClesStat]{EffVide}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen+1}}\do{&}}{\useKV[ClesStat]{Effectif}\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ListeComplete[##1,2]}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ListeComplete[##1,2]}&\ifboolKV[ClesStat]{TotalVide}{}{\num{\EffectifTotal}}}\\\hline%
+ \ifboolKV[ClesStat]{Frequence}{Fréquence (\%)\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{\CalculFrequence{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{FreqVide}{}{100}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{Angle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{360}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{SemiAngle}{Angle (\si{\degree})\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{\CalculSemiAngle{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{AngVide}{}{180}}}\\\hline}{}%
+ \ifboolKV[ClesStat]{ECC}{E.C.C.\xintFor* ##1 in {\xintSeq {1}{\number\numexpr\useKV[ClesStat]{ColVide}-1}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\xintFor* ##1 in {\xintSeq {\number\numexpr\useKV[ClesStat]{ColVide}+1}{\ListeCompletelen}}\do{&\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\CalculECC{##1}}}}&\ifboolKV[ClesStat]{TotalVide}{}{\ifboolKV[ClesStat]{TableauVide}{}{\ifboolKV[ClesStat]{ECCVide}{}{\num{\EffectifTotal}}}}\\\hline}{}%
\end{tabular}
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \renewcommand{\arraystretch}{1}%
\]
}
% Pour construire le diagramme en bâtons
\def\Updatetoks#1/#2\nil{\addtotok\toklistepoint{(#1,#2),}}
-\def\buildgraph{%
- \newtoks\toklistepoint
+\newcommand\buildgraph[1][]{%
+ \newtoks\toklistepoint
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoks\compteur\nil}%
- \[\MPStat{\useKV[ClesStat]{Unitex}}{\useKV[ClesStat]{Unitey}}{\the\toklistepoint}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}\]%
+ \[\MPStat[#1]{\useKV[ClesStat]{Unitex}}{\useKV[ClesStat]{Unitey}}{\the\toklistepoint}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]%
}%
% Pour construire le diagramme en bâtons qualitatif
\def\Updatetoksq#1/#2\nil{\addtotok\toklistepointq{"#1",#2,}}
-\def\buildgraphq{%
+\newcommand\buildgraphq[1][]{%
\newtoks\toklistepointq
- \toklistepointq{}
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}
- \[\MPStatQ{2*\useKV[ClesStat]{Unitex}}{0.5*\useKV[ClesStat]{Unitey}}{\the\toklistepointq}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}\]
+ \[\MPStatQ[#1]{2*\useKV[ClesStat]{Unitex}}{0.5*\useKV[ClesStat]{Unitey}}{\the\toklistepointq}{\useKV[ClesStat]{Donnee}}{\useKV[ClesStat]{Effectif}}{\useKV[ClesStat]{Origine}}{\useKV[ClesStat]{AbscisseRotation}}\]
}
+
+\def\UpdateCoul#1\nil{\addtotok\toklistecouleur{#1,}}%
+
% Pour construire le diagramme circulaire qualitatif
\def\buildgraphcq#1{%
\newtoks\toklistepointq%
\toklistepointq{}%
+ \newtoks\toklistecouleur%
+ \toklistecouleur{}%
+ %
\foreachitem\compteur\in\ListeComplete{\expandafter\Updatetoksq\compteur\nil}%
+ \xdef\ListeAvantCouleurs{\useKV[ClesStat]{ListeCouleurs}}%
+ \readlist*\ListeCouleur{\ListeAvantCouleurs}%
+ \foreachitem\couleur\in\ListeCouleur{\expandafter\UpdateCoul\couleur\nil}%
\ifboolKV[ClesStat]{AffichageAngle}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}\]%
+ \ifboolKV[ClesStat]{Hachures}{%
+ \ifboolKV[ClesStat]{Inverse}{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{1}\]%
+ }{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{1}{0}\]%
+ }%
+ }{%
+ \ifboolKV[ClesStat]{Inverse}{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{1}\]%
+ }{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{1}{\the\toklistecouleur}{0}{0}\]%
+ }%
+ }%
}{%
- \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}\]%
+ \ifboolKV[ClesStat]{Hachures}{%
+ \ifboolKV[ClesStat]{Inverse}{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{1}\]%
+ }{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{1}{0}\]%
+ }%
+ }{%
+ \ifboolKV[ClesStat]{Inverse}{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{1}\]%
+ }{%
+ \[\MPStatCirculaireQ{\useKV[ClesStat]{Rayon}}{\the\toklistepointq}{#1}{0}{\the\toklistecouleur}{0}{0}\]%
+ }%
+ }%
}%
}%
@@ -5767,92 +6226,103 @@ vardef Positions(expr Step)=
\num{\TotalECC}%
}
-% la construction du graphique
-\def\MPStat#1#2#3#4#5#6{%
+% la construction du graphique en bâtons pour quantitatif
+\newcommand\MPStat[8][]{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
maxx:=0;
maxy:=0;
- unitex:=#1*cm;
- unitey:=#2*cm;
+ unitex:=#2*cm;
+ unitey:=#3*cm;
pair A[],B[],P[];
n:=0;
vardef toto(text t)=
for p_=t:
if pair p_:
n:=n+1;
- P[n]=((xpart(p_)-(#6))*unitex,ypart(p_)*unitey);
+ P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey);
if xpart(p_)>maxx:
- maxx:=xpart(p_)-(#6);
+ maxx:=xpart(p_)-(#7);
fi;
if ypart(p_)>maxy:
maxy:=ypart(p_);
fi;
- A[n]=unitex*(xpart(p_)-(#6),0);
+ A[n]=unitex*(xpart(p_)-(#7),0);
B[n]=unitey*(0,ypart(p_));
+ if (#8):
+ label.bot(TEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]);
+ else :
label.bot(TEX("\num{"&decimal(xpart(p_))&"}"),A[n]);
+ fi;
label.lft(TEX("\num{"&decimal(ypart(p_))&"}"),B[n]);
fi;
endfor;
enddef;
- toto(#3);
+ toto(#4);
for k=1 upto n:
draw A[k]--P[k] withpen pencircle scaled 2bp;
draw B[k]--P[k] dashed evenly;
endfor;
drawarrow (0,0)--unitex*(maxx+1,0);
drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #4 etex,unitex*(maxx+1,0));
- label.urt(btex #5 etex,unitey*(0,maxy+1));
+ label.lrt(btex #5 etex,unitex*(maxx+1,0));
+ label.urt(btex #6 etex,unitey*(0,maxy+1));
\end{mplibcode}
\else
+ \mpxcommands{%
+ \setKV[ClesStat]{#1}%
+ }
\begin{mpost}
maxx:=0;
maxy:=0;
- unitex:=#1*cm;
- unitey:=#2*cm;
+ unitex:=#2*cm;
+ unitey:=#3*cm;
pair A[],B[],P[];
n:=0;
vardef toto(text t)=
for p_=t:
if pair p_:
n:=n+1;
- P[n]=((xpart(p_)-(#6))*unitex,ypart(p_)*unitey);
+ P[n]=((xpart(p_)-(#7))*unitex,ypart(p_)*unitey);
if xpart(p_)>maxx:
- maxx:=xpart(p_)-(#6);
+ maxx:=xpart(p_)-(#7);
fi;
if ypart(p_)>maxy:
maxy:=ypart(p_);
fi;
- A[n]=unitex*(xpart(p_)-(#6),0);
+ A[n]=unitex*(xpart(p_)-(#7),0);
B[n]=unitey*(0,ypart(p_));
+ if (#8):
+ label.bot(LATEX("\num{"&decimal(xpart(p_))&"}") rotated 90,A[n]);
+ else :
label.bot(LATEX("\num{"&decimal(xpart(p_))&"}"),A[n]);
+ fi;
label.lft(LATEX("\num{"&decimal(ypart(p_))&"}"),B[n]);
fi;
endfor;
enddef;
- toto(#3);
+ toto(#4);
for k=1 upto n:
draw A[k]--P[k] withpen pencircle scaled 2bp;
draw B[k]--P[k] dashed evenly;
endfor;
drawarrow (0,0)--unitex*(maxx+1,0);
drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #4 etex,unitex*(maxx+1,0));
- label.urt(btex #5 etex,unitey*(0,maxy+1));
+ label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(maxx+1,0));
+ label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1));
\end{mpost}
\fi
}
-% la construction du graphique qualitatif
-\def\MPStatQ#1#2#3#4#5#6{%
+% la construction du graphique en bâtons pour qualitatif
+\newcommand\MPStatQ[8][]{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
maxy:=0;
- unitex:=#1*cm;
- unitey:=#2*cm;
+ unitex:=#2*cm;
+ unitey:=#3*cm;
pair A[],B[],P[];
n:=0;
vardef toto(text t)=
@@ -5867,25 +6337,32 @@ vardef Positions(expr Step)=
n:=n+1;
else:
A[n]=unitex*(n+1,0);
+ if (#8):
label.bot(TEX(p_) rotated 90,A[n]);
+ else :
+ label.bot(TEX(p_),A[n]);
+ fi;
fi;
endfor;
enddef;
- toto(#3);
+ toto(#4);
for k=0 upto n-1:
draw A[k]--P[k] withpen pencircle scaled 2bp;
draw B[k]--P[k] dashed evenly;
endfor;
drawarrow (0,0)--unitex*(n+1,0);
drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #4 etex,unitex*(n+1,0));
- label.urt(btex #5 etex,unitey*(0,maxy+1));
+ label.lrt(btex #5 etex,unitex*(n+1,0));
+ label.urt(btex #6 etex,unitey*(0,maxy+1));
\end{mplibcode}
\else
+ \mpxcommands{%
+ \setKV[ClesStat]{#1}%
+ }
\begin{mpost}
maxy:=0;
- unitex:=#1*cm;
- unitey:=#2*cm;
+ unitex:=#2*cm;
+ unitey:=#3*cm;
pair A[],B[],P[];
n:=0;
vardef toto(text t)=
@@ -5900,25 +6377,29 @@ vardef Positions(expr Step)=
n:=n+1;
else:
A[n]=unitex*(n+1,0);
+ if (#8):
label.bot(LATEX(p_) rotated 90,A[n]);
+ else :
+ label.bot(LATEX(p_),A[n]);
+ fi;
fi;
endfor;
enddef;
- toto(#3);
+ toto(#4);
for k=0 upto n-1:
draw A[k]--P[k] withpen pencircle scaled 2bp;
draw B[k]--P[k] dashed evenly;
endfor;
drawarrow (0,0)--unitex*(n+1,0);
drawarrow (0,0)--unitey*(0,maxy+1);
- label.lrt(btex #4 etex,unitex*(n+1,0));
- label.urt(btex #5 etex,unitey*(0,maxy+1));
+ label.lrt(\btex \useKV[ClesStat]{Donnee} etex,unitex*(n+1,0));
+ label.urt(\btex \useKV[ClesStat]{Effectif} etex,unitey*(0,maxy+1));
\end{mpost}
\fi
}
% la construction du graphique qualitatif
-\def\MPStatCirculaireQ#1#2#3#4{%
+\def\MPStatCirculaireQ#1#2#3#4#5#6#7{%
\ifluatex
\mplibforcehmode
\begin{mplibcode}
@@ -5930,13 +6411,20 @@ vardef Positions(expr Step)=
ang[0]:=0;
path cc;
cc=(fullcircle scaled (2*#1));
- if #3=360:
- draw cc;
+ % on récupère les couleurs
+ color Col[];
+ n:=0;
+ for p_=#5:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ if #7=0:
+ A[0]=point(0) of cc;
else:
- draw (subpath(0,length cc/2) of cc)--cycle;
+ A[0]=point(180) of cc;
fi;
- A[0]=point(0) of cc;
vardef toto(text t)=
+ n:=0;
for p_=t:
if numeric p_:
n:=n+1;
@@ -5951,28 +6439,65 @@ vardef Positions(expr Step)=
for p_=t:
if numeric p_:
n:=n+1;
+ if #7=0:
A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N]));
- draw A[n-1]--O--A[n];
+ else:
+ A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N]));
+ fi;
+ %hachure ou pas ?
+ if #6=0:
+ fill (O--if #7=0:arccercle(A[n-1],A[n],O) else:
+ arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi;
+ else:
+ draw
+ hachurage((O--if #7=0:arccercle(A[n-1],A[n],O)
+ else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if
+ (n mod 2)=0: +90 else: -90 fi,0.25,if (n mod 2)=0 : 0 else: 1 fi)
+ if #4=1: withcolor 0.5white fi;
+ fi;
+ draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi;
% Affichage des angles associés
if #4=1:
if round(p_*(#3/total[N]))>15:
if (n mod 2)=0:
- marque_a:=0.9*20
+ marque_a:=3.1*20
else:
- marque_a:=1.1*20/0.9
+ marque_a:=3.1*20/0.9
+ fi;
+ if #6=1:
+ if #7=0:
+ undraw
+ Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ else:
+ undraw
+ Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ fi;
+ fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
+ blanc;
+ fi;
+ if #7=0:
+ draw
+ Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ else:
+ draw
+ Codeangle(A[n],O,A[n-1],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
fi;
- draw Codeangle(A[n-1],O,A[n],0,(((TEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")) scaled 0.5)));
fi;
fi;
%
fi;
endfor;
+ if #3=360:
+ draw cc if #6=1: withpen pencircle scaled2 fi;
+ else:
+ draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;;
+ fi;
n:=0;
path cd[];
for p_=t:
if string p_:
n:=n+1;
- C[n]=A[n-1] rotatedabout(O,(ang[n]-ang[n-1])/2);
+ C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2);
draw 0.95[O,C[n]]--1.05[O,C[n]];
C[n]:=1.05[O,C[n]];
if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)):
@@ -6002,7 +6527,7 @@ vardef Positions(expr Step)=
toto(#2);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfC-Geometrie;}]
+ \begin{mpost}%[mpsettings={input PfC-Geometrie;}]
pair A[],O,B[],C[],D[];
O=(0,0);
n:=0;
@@ -6011,13 +6536,20 @@ vardef Positions(expr Step)=
ang[0]:=0;
path cc;
cc=(fullcircle scaled (2*#1));
- if #3=360:
- draw cc;
+ % on récupère les couleurs
+ color Col[];
+ n:=0;
+ for p_=#5:
+ n:=n+1;
+ Col[n]=p_;
+ endfor;
+ if #7=0:
+ A[0]=point(0) of cc;
else:
- draw (subpath(0,length cc/2) of cc)--cycle;
+ A[0]=point(180) of cc;
fi;
- A[0]=point(0) of cc;
vardef toto(text t)=
+ n:=0;
for p_=t:
if numeric p_:
n:=n+1;
@@ -6032,28 +6564,65 @@ vardef Positions(expr Step)=
for p_=t:
if numeric p_:
n:=n+1;
+ if #7=0:
A[n]=A[n-1] rotatedabout(O,p_*(#3/total[N]));
- draw A[n-1]--O--A[n];
+ else:
+ A[n]=A[n-1] rotatedabout(O,-p_*(#3/total[N]));
+ fi;
+ %hachure ou pas ?
+ if #6=0:
+ fill (O--if #7=0:arccercle(A[n-1],A[n],O) else:
+ arccercle(A[n],A[n-1],O) fi--cycle) withcolor if unknown Col[n]: white else:Col[n] fi;
+ else:
+ draw
+ hachurage((O--if #7=0:arccercle(A[n-1],A[n],O)
+ else:arccercle(A[n],A[n-1],O) fi--cycle),p_*(#3/total[N]) if
+ (n mod 2)=0: +90 else: -90 fi,0.25,if (n mod 2)=0 : 0 else: 1 fi)
+ if #4=1: withcolor 0.5white fi;
+ fi;
+ draw A[n-1]--O--A[n] if #6=1: withpen pencircle scaled2 fi;
% Affichage des angles associés
if #4=1:
if round(p_*(#3/total[N]))>15:
if (n mod 2)=0:
- marque_a:=0.9*20
+ marque_a:=3.1*20
else:
- marque_a:=1.1*20/0.9
+ marque_a:=3.1*20/0.9
+ fi;
+ if #6=1:
+ if #7=0:
+ undraw
+ Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ else:
+ undraw
+ Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ fi;
+ fill cercles(w shifted(marque_ang*unitvector(w-O)),3mm) withcolor
+ blanc;
+ fi;
+ if #7=0:
+ draw
+ Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
+ else:
+ draw
+ Codeangle(A[n],O,A[n-1],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")))));
fi;
- draw Codeangle(A[n-1],O,A[n],0,(((LATEX("\ang{"&decimal(round(p_*(#3/total[N])))&"}")) scaled 0.5)));
fi;
fi;
%
fi;
endfor;
+ if #3=360:
+ draw cc if #6=1: withpen pencircle scaled2 fi;
+ else:
+ draw (subpath(0,length cc/2) of cc)--cycle if #6=1: withpen pencircle scaled2 fi;;
+ fi;
n:=0;
path cd[];
for p_=t:
if string p_:
n:=n+1;
- C[n]=A[n-1] rotatedabout(O,(ang[n]-ang[n-1])/2);
+ C[n]=A[n-1] rotatedabout(O,if #7=1:-1* fi(ang[n]-ang[n-1])/2);
draw 0.95[O,C[n]]--1.05[O,C[n]];
C[n]:=1.05[O,C[n]];
if (xpart(C[n])>xpart(O)) and (ypart(C[n])>ypart(O)):
@@ -6089,8 +6658,16 @@ vardef Positions(expr Step)=
\DTLgnewdb{mtdb}%
\dtlexpandnewvalue%
\newcount\nbdonnees%
-
-
+%
+\def\AjoutListEEaa#1\nil{\addtotok\tabtoksEEa{#1,}}%
+\def\AjoutListEEab#1\nil{\addtotok\tabtoksEEa{#1/}}%
+\def\AjoutListEEb#1\nil{\addtotok\tabtoksEEb{#1,}}%
+\def\AjoutListEEx#1\nil{\addtotok\tabtoksEE{#1,}}%
+\def\AjoutListEEy#1\nil{\addtotok\tabtoksEE{#1/}}%
+
+\DTLgnewdb{mtdbEE}%
+\DTLgnewdb{mtdbEEqual}%
+%
\newcommand\Stat[2][]{%
\useKVdefault[ClesStat]%
\setKV[ClesStat]{#1}%
@@ -6104,11 +6681,89 @@ vardef Positions(expr Step)=
}%
\readlist*\ListeComplete{\foo}%
\setKV[ClesStat]{Qualitatif}%
+ }{
+ \ifboolKV[ClesStat]{Sondage}{%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\Liste{#2}%
+ % "liste vide"
+ \newtoks\tabtoksEEa%
+ \tabtoksEEa{}%
+ %
+ % "liste vide"
+ \newtoks\tabtoksEEb%
+ \tabtoksEEb{}%
+ %
+ \readlist*\ListeSansDoublonsEE{999}% %% Pour ne pas avoir une liste vide
+ %
+ \newcount\cmptEE%
+ \newcount\PasNumEE% %% Permettra de savoir si ce sondage est qualitatif ou quantitatif
+ \PasNumEE=0\relax%
+ \DTLcleardb{mtdbEE}%
+ % on range les resultats du sondage par ordre croissant.
+ \foreachitem\x\in\Liste{%
+ \DTLnewrow{mtdbEE}%
+ \DTLnewdbentry{mtdbEE}{Numeric}{\x}%
+ }%
+ \dtlsort{Numeric}{mtdbEE}{\dtlicompare}%
+ \DTLforeach{mtdbEE}{\nba=Numeric}{%
+ \IfDecimal{\nba}{}{\PasNumEE=\numexpr\PasNumEE+1\relax}%
+ \cmptEE=0\relax%
+ \foreachitem\nbb\in\ListeSansDoublonsEE{%
+ \ifthenelse{\equal{\nba}{\nbb}}{\cmptEE=\numexpr\cmptEE+1\relax}{}%
+ }%
+ \ifthenelse{\equal{\the\cmptEE}{0}}{%
+ \expandafter\AjoutListEEb\nba\nil%
+ \xdef\listEEa{\the\tabtoksEEb}%
+ \ignoreemptyitems%
+ \setsepchar{,}%
+ \readlist*\ListeSansDoublonsEE\listEEa% %%% Enlève tous les élements
+ %%% identiques de Liste
+ }{}%
+ }%
+ \foreachitem\nba\in\ListeSansDoublonsEE{%
+ \cmptEE=0\relax%
+ \DTLforeach{mtdbEE}{\nbb=Numeric}{%
+ \ifthenelse{\equal{\nba}{\nbb}}{\cmptEE=\numexpr\cmptEE+1\relax}{}%
+ }%
+ \expandafter\AjoutListEEab\nba\nil%
+ \expandafter\AjoutListEEaa\the\cmptEE\nil% %%% Compte tous les élements
+ %%% identiques de Liste
+ }%
+ \xdef\listEEb{\the\tabtoksEEa}
+ \ignoreemptyitems%
+ \setsepchar[*]{,*/}
+ \readlist*\ListeComplete\listEEb%
+ %
+ \ifthenelse{\equal{\the\PasNumEE}{0}}{\setKV[ClesStat]{Quantitatif}}{\setKV[ClesStat]{Qualitatif}}%
}{%
+ \ifboolKV[ClesStat]{Qualitatif}{%
% % on lit la liste écrite sous la forme valeur/effectif
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListeComplete{#2}%
- }
+ }{% Dans le qualitatif, on trie d'abord les valeurs.
+ \setsepchar[*]{,*/}\ignoreemptyitems%
+ \readlist*\ListeInitiale{#2}%
+% "liste vide"
+ \newtoks\tabtoksEE%
+ \tabtoksEE{}%
+ \DTLcleardb{mtdbEEqual}%
+ \foreachitem\x\in\ListeInitiale{%
+ \DTLnewrow{mtdbEEqual}%
+ \itemtomacro\ListeInitiale[\xcnt,1]\x%
+ \DTLnewdbentry{mtdbEEqual}{Val}{\x}%
+ \itemtomacro\ListeInitiale[\xcnt,2]\y%
+ \DTLnewdbentry{mtdbEEqual}{Eff}{\y}%
+ }%
+ \dtlsort{Val}{mtdbEEqual}{\dtlicompare}%
+ \DTLforeach{mtdbEEqual}{\Val=Val,\Eff=Eff}{%
+ \expandafter\AjoutListEEy\Val\nil%
+ \expandafter\AjoutListEEx\Eff\nil%
+ }
+ \xdef\listEE{\the\tabtoksEE}
+ \ignoreemptyitems%
+ \setsepchar[*]{,*/}
+ \readlist*\ListeComplete\listEE%
+ }}}
% on crée la base de données des valeurs dans le cas qualitatif
\DTLcleardb{mtdb}%
% on les trie pour la médiane dans le cas qualitatif % Touhami / Texnique.fr
@@ -6134,14 +6789,20 @@ vardef Positions(expr Step)=
% %% celui de la somme des données
\foreachitem\don\in\ListeComplete{\xdef\SommeDonnees{\fpeval{\SommeDonnees+\ListeComplete[\doncnt,2]}}}%
% %% celui de l'effectif total
- \xdef\EffectifTotal{\SommeDonnees}%
\ifboolKV[ClesStat]{EffectifTotal}{%
- L'effectif total est \num{\ListeCompletelen}.\par
- }{}
+ \ifboolKV[ClesStat]{Liste}{L'effectif total de la série est
+ \num{\ListeCompletelen}.\par}{
+ \foreachitem\don\in\ListeComplete{\xdef\EffectifTotal{\fpeval{\EffectifTotal+\ListeComplete[\doncnt,2]}}}%
+ L'effectif total de la série est : \[\ListeComplete[1,2]\xintFor* ##1 in
+ {\xintSeq {2}{\ListeCompletelen}}\do{%
+ +\ListeComplete[##1,2]}=\num{\EffectifTotal}\]}
+ }{}%
+ \xdef\EffectifTotal{\SommeDonnees}%
% %% celui de la moyenne
- \xdef\Moyenne{\fpeval{\SommeDonnees/\ListeCompletelen}}%
+ \xdef\Moyenne{\fpeval{\SommeDonnees/\ListeCompletelen}}%
\ifboolKV[ClesStat]{Moyenne}{%
- La somme des données est :%
+ \ifboolKV[ClesStat]{Liste}{%
+ La somme des données de la série est :%
\xintifboolexpr{\ListeCompletelen<\useKV[ClesStat]{Coupure}}{%
\[
\num{\ListeComplete[1,2]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
@@ -6155,15 +6816,15 @@ vardef Positions(expr Step)=
}=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}%
\]%
}%
- \ifboolKV[ClesStat]{SET}{}{L'effectif total est \num{\ListeCompletelen}.\\}%
- Donc la moyenne est égale à :%
+ \ifboolKV[ClesStat]{SET}{}{Le nombre de données de la série est \num{\ListeCompletelen}.\\}%
+ Donc la moyenne de la série est égale à :%
\[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\ListeCompletelen}}%\IfInteger{\fpeval{round(\fpeval{\SommeDonnees/\ListeCompletelen},\useKV[ClesStat]{Precision})}}{=}{\approx}
\opdiv*{\SommeDonnees}{\ListeCompletelen}{resultatmoy}{restemoy}%
\opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
\opcmp{resultatmoy}{resultatmoy1}\ifopeq=\else\approx\fi%
\num{\fpeval{round(\fpeval{\SommeDonnees/\ListeCompletelen},\useKV[ClesStat]{Precision})}}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}.}{.}%
\]%
- }{}%
+ }{Pas de moyenne possible pour une série de données à caractère qualitatif.}}{}%
% % %% celui de l'étendue
\xintFor* ##1 in {\xintSeq {1}{\ListeCompletelen}}\do{%
\xintifboolexpr{\ListeComplete[##1,2]>\DonneeMax}{%
@@ -6175,11 +6836,12 @@ vardef Positions(expr Step)=
}%
\xdef\EffectifMax{\DonneeMax}%
\xdef\Etendue{\fpeval{\DonneeMax-\DonneeMin}}%
- \ifboolKV[ClesStat]{Etendue}{L'étendue est égale à $\num{\DonneeMax}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}-\num{\DonneeMin}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}=\num{\Etendue}$\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
- }{}%
+ \ifboolKV[ClesStat]{Etendue}{%
+ \ifboolKV[ClesStat]{Liste}{%
+ L'étendue de la série est égale à $\num{\DonneeMax}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}-\num{\DonneeMin}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}=\num{\Etendue}$\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
+ }{Pas d'étendue possible pour une série de données à caractère qualitatif.}}{}%
\ifboolKV[ClesStat]{Mediane}{%
- %%%%%%%%%%%%%%%%%%%%%%%%
-
+ \ifboolKV[ClesStat]{Liste}{%
On range les données par ordre croissant :%
\nbdonnees=0%
\xintifboolexpr{\ListeCompletelen<\useKV[ClesStat]{Coupure}}{%
@@ -6198,35 +6860,38 @@ vardef Positions(expr Step)=
\newcount\meda%
\ifodd\number\ListeCompletelen%odd impair
\med=\fpeval{(\ListeCompletelen+1)/2}\relax%
- L'effectif total est \num{\ListeCompletelen}. Or, $\num{\ListeCompletelen}=\num{\fpeval{\med-1}}+1+\num{\fpeval{\med-1}}$.\\
+ L'effectif total de la série est \num{\ListeCompletelen}. Or, $\num{\ListeCompletelen}=\num{\fpeval{\med-1}}+1+\num{\fpeval{\med-1}}$.\\
\else% pair
\med=\fpeval{\ListeCompletelen/2}\relax
\meda=\numexpr\med+1\relax
- L'effectif total est \num{\ListeCompletelen}. Or, $\num{\ListeCompletelen}=\num{\the\med}+\num{\the\med}$.\\
+ L'effectif total de la série est \num{\ListeCompletelen}. Or, $\num{\ListeCompletelen}=\num{\the\med}+\num{\the\med}$.\\
\fi%
\newcount\k%
\k=0%
\DTLforeach{mtdb}{\numeroDonnee=Numeric}{\k=\numexpr\k+1\relax%
\ifnum\k=\med %La médiane vaut \numeroDonnee\fi
\ifodd\number\ListeCompletelen%
- La médiane est la \the\med\ieme{} donnée.\\Donc la médiane est \num{\numeroDonnee}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
+ La médiane de la série est la \the\med\ieme{} donnée.\\Donc la médiane de la série est \num{\numeroDonnee}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
\else%
La \the\med\ieme{} donnée est \num{\numeroDonnee}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}\xdef\Mediane{\numeroDonnee} %
\fi
\fi
\ifnum\k=\meda
- La \the\meda\ieme{} donnée est \num{\numeroDonnee}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.} Donc la médiane est \xdef\Mediane{\fpeval{(\Mediane+\numeroDonnee)/2}}\num{\Mediane}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}
+ La \the\meda\ieme{} donnée est \num{\numeroDonnee}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.} Donc la médiane de la série est \xdef\Mediane{\fpeval{(\Mediane+\numeroDonnee)/2}}\num{\Mediane}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}
\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%
- }{}
- % construction du tableau
- \ifboolKV[ClesStat]{Tableau}{\ifboolKV[ClesStat]{Total}{\buildtabqt}{\buildtabq}}{}
- % Construction du graphique ??
+ }{Pas de médiane possible pour une série de données à caractère qualitatif.}}{}
+ % Construction du tableau
+ \ifboolKV[ClesStat]{Tableau}{%
+ \ifboolKV[ClesStat]{Liste}{Pas de tableau possible avec la clé Liste.\\Utilisez plutôt la clé Sondage si vous voulez un tableau avec cette liste.}{%
+ \ifboolKV[ClesStat]{Total}{\buildtabt}{\buildtab}}}%
+ {}%
+ % Construction du graphique
\ifboolKV[ClesStat]{Graphique}{%
- \ifboolKV[ClesStat]{Angle}{\buildgraphcq{360}}{\ifboolKV[ClesStat]{SemiAngle}{\buildgraphcq{180}}{}}
- \ifboolKV[ClesStat]{Batons}{\buildgraphq}{}
- }{}
+ \ifboolKV[ClesStat]{Liste}{Pas de graphique possible avec la clé Liste.\\Utilisez plutôt la clé Sondage si vous voulez un graphique avec cette liste.}{%
+ \ifboolKV[ClesStat]{Angle}{\buildgraphcq{360}}{\ifboolKV[ClesStat]{SemiAngle}{\buildgraphcq{180}}{\buildgraphq[#1]}}%
+ }}{}
}{%%%%%%%%%%%%%%%%%%%%%Début quantitatif
% % on effectue les calculs
% %% celui de la somme des données
@@ -6247,12 +6912,12 @@ vardef Positions(expr Step)=
% %% celui de la moyenne
\xdef\Moyenne{\fpeval{\SommeDonnees/\EffectifTotal}}%
\ifboolKV[ClesStat]{EffectifTotal}{%
- L'effectif total est : \[\ListeComplete[1,2]\xintFor* ##1 in
+ L'effectif total de la série est : \[\ListeComplete[1,2]\xintFor* ##1 in
{\xintSeq {2}{\ListeCompletelen}}\do{%
+\ListeComplete[##1,2]}=\num{\EffectifTotal}\]
}{}%
\ifboolKV[ClesStat]{Moyenne}{%
- La somme des données est :%
+ La somme des données de la série est :%
\xintifboolexpr{\ListeCompletelen<\useKV[ClesStat]{Coupure}}{%
\[
\ifnum\ListeComplete[1,2]=1\else\num{\ListeComplete[1,2]}\times\fi\num{\ListeComplete[1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
@@ -6268,7 +6933,7 @@ vardef Positions(expr Step)=
}=\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}
\]
}
- \ifboolKV[ClesStat]{SET}{}{L'effectif total est :%
+ \ifboolKV[ClesStat]{SET}{}{L'effectif total de la série est :%
\ifboolKV[ClesStat]{Liste}{ \num{\EffectifTotal}\\}{%
\[\num{\ListeComplete[1,2]}\xintFor* ##1 in {\xintSeq {2}{\ListeCompletelen}}\do{%
+\num{\ListeComplete[##1,2]}
@@ -6276,7 +6941,7 @@ vardef Positions(expr Step)=
\]%
}%
}
- Donc la moyenne est égale à :%
+ Donc la moyenne de la série est égale à :%
\[\frac{\num{\SommeDonnees}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}}{\num{\EffectifTotal}}%
\opdiv*{\SommeDonnees}{\EffectifTotal}{resultatmoy}{restemoy}%
\opround{resultatmoy}{\useKV[ClesStat]{Precision}}{resultatmoy1}%
@@ -6287,7 +6952,7 @@ vardef Positions(expr Step)=
}{}%
% % Affichage des réponses.
% %% pour l'étendue
- \ifboolKV[ClesStat]{Etendue}{L'étendue est égale à $\num{\ListeComplete[\ListeCompletelen,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}-\num{\ListeComplete[1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}=\num{\Etendue}$\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}}{}%
+ \ifboolKV[ClesStat]{Etendue}{L'étendue de la série est égale à $\num{\ListeComplete[\ListeCompletelen,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}-\num{\ListeComplete[1,1]}\ifboolKV[ClesStat]{Concret}{~\text{\useKV[ClesStat]{Unite}}}{}=\num{\Etendue}$\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}}{}%
% %% pour la médiane
\ifboolKV[ClesStat]{Mediane}{%
@@ -6295,11 +6960,11 @@ vardef Positions(expr Step)=
\newcount\meda%
\ifodd\number\EffectifTotal%odd impair
\med=\fpeval{(\EffectifTotal+1)/2}\relax%
- L'effectif total est \num{\EffectifTotal}. Or, $\num{\EffectifTotal}=\num{\fpeval{\med-1}}+1+\num{\fpeval{\med-1}}$. %
+ L'effectif total de la série est \num{\EffectifTotal}. Or, $\num{\EffectifTotal}=\num{\fpeval{\med-1}}+1+\num{\fpeval{\med-1}}$. %
\else% pair
\med=\fpeval{\EffectifTotal/2}\relax%
\meda=\numexpr\med+1\relax%
- L'effectif total est \num{\EffectifTotal}. Or, $\num{\EffectifTotal}=\num{\fpeval{\med}}+\num{\fpeval{\med}}$. %
+ L'effectif total de la série est \num{\EffectifTotal}. Or, $\num{\EffectifTotal}=\num{\fpeval{\med}}+\num{\fpeval{\med}}$. %
\fi%
\newcount\k%
\k=0%
@@ -6308,13 +6973,13 @@ vardef Positions(expr Step)=
\k=\numexpr\k+1\relax%
\ifnum\k=\med%
\ifodd\number\EffectifTotal%
- La médiane est la \the\med\ieme{} donnée. Donc la médiane est \num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
+ La médiane de la série est la \the\med\ieme{} donnée. Donc la médiane de la série est \num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
\else%
La \the\med\ieme{} donnée est \num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}. }{. }\xdef\Mediane{\ListeComplete[##1,1]}%
\fi%
\fi%
\ifnum\k=\meda%
- La \the\meda\ieme{} valeur est \num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}\\Donc la médiane est \xdef\Mediane{\fpeval{(\Mediane+\ListeComplete[##1,1])/2}}\num{\Mediane}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
+ La \the\meda\ieme{} valeur est \num{\ListeComplete[##1,1]}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}\\Donc la médiane de la série est \xdef\Mediane{\fpeval{(\Mediane+\ListeComplete[##1,1])/2}}\num{\Mediane}\ifboolKV[ClesStat]{Concret}{~\useKV[ClesStat]{Unite}.}{.}%
\fi%
}%
}%
@@ -6322,13 +6987,15 @@ vardef Positions(expr Step)=
% Construction de tableau
\ifboolKV[ClesStat]{Tableau}{\ifboolKV[ClesStat]{Total}{\buildtabt}{\buildtab}}{}%
% Construction du graphique ??
- \ifboolKV[ClesStat]{Graphique}{\buildgraph}{}%
+ \ifboolKV[ClesStat]{Graphique}{%
+ \ifboolKV[ClesStat]{Angle}{\buildgraphcq{360}}{\ifboolKV[ClesStat]{SemiAngle}{\buildgraphcq{180}}{\buildgraph[#1]}}
+ }{}%
}%
}%
-%%%%%%%%%%%%%
-%%% Radar
-%%%%%%%%%%%%%
+%%%
+% Radar
+%%%
\setKVdefault[ClesRadar]{Rayon=3cm,Reference=20,MoyenneClasse=false,Disciplines=false,Pas=5}
\newtoks\toklisteradara%pour la moyenne de l'élève
@@ -6359,12 +7026,17 @@ vardef Positions(expr Step)=
p:=0;
for p_=#2:
p:=p+1;
- if N[p]>180:
- label(TEX(p_)
- rotated(90+N[p]),1.15[O,pointarc(cc,N[p])]);
- else:
- label(TEX(p_)
- rotated(-90+N[p]),1.15[O,pointarc(cc,N[p])]);
+ if (N[p]<90) or (N[p]=90):
+ label.urt(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if ((N[p]>90) and (N[p]<180)) or (N[p]=180):
+ label.ulft(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if (N[p]>180) and (N[p]<270):
+ label.llft(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if (N[p]>270) or (N[p]=270):
+ label.lrt(TEX(p_),1.025[O,pointarc(cc,N[p])]);
fi;
endfor;
% tracé des pas:
@@ -6376,7 +7048,7 @@ vardef Positions(expr Step)=
trace pointarc(cc,N[1]) for l=2 upto n: --pointarc(cc,N[l]) endfor
--cycle;
% etiquettage des pas
- dotlabel.top(btex \tiny #4 etex rotated -90,pointarc(cc,0));
+ dotlabel.urt(btex \tiny #4 etex,pointarc(cc,0));
dotlabel.urt(btex \tiny #3 etex,(1/pas)[O,pointarc(cc,0)]);
% tracé des résultats élèves
pair El[];
@@ -6414,12 +7086,17 @@ vardef Positions(expr Step)=
p:=0;
for p_=#2:
p:=p+1;
- if N[p]>180:
- label(LATEX(p_)
- rotated(90+N[p]),1.15[O,pointarc(cc,N[p])]);
- else:
- label(LATEX(p_)
- rotated(-90+N[p]),1.15[O,pointarc(cc,N[p])]);
+ if (N[p]<90) or (N[p]=90):
+ label.urt(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if ((N[p]>90) and (N[p]<180)) or (N[p]=180):
+ label.ulft(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if (N[p]>180) and (N[p]<270):
+ label.llft(TEX(p_),1.025[O,pointarc(cc,N[p])]);
+ fi;
+ if (N[p]>270) or (N[p]=270):
+ label.lrt(TEX(p_),1.025[O,pointarc(cc,N[p])]);
fi;
endfor;
% tracé des pas:
@@ -6460,6 +7137,7 @@ vardef Positions(expr Step)=
\useKVdefault[ClesRadar]%
\setKV[ClesRadar]{#1}%
\ignoreemptyitems%
+ \setsepchar[*]{,}%
\readlist*\ListeRadar{#2}%
\toklisteradara{}%
\foreachitem\compteur\in\ListeRadar{\expandafter\UpdateRadara\compteur\nil}%
@@ -6474,9 +7152,9 @@ vardef Positions(expr Step)=
\MPRadar{\useKV[ClesRadar]{Rayon}}{\the\toklisteradarb}{\useKV[ClesRadar]{Pas}}{\useKV[ClesRadar]{Reference}}{\the\toklisteradara}{\the\toklisteradarc}%
}
-%%%%%%%%%%%%
+%%%
% Barres de niveaux
-%%%%%%%%%%%%
+%%%
\setKVdefault[ClesBarre]{Niveau=false,LimiteI=25,LimiteF=50,LimiteS=75,TexteOrigine=0,TexteReference=100,CouleurGraduation=white,CouleurFond=gray!50,CouleurBarre=black,Graduation=false,Nom=Défaut,Pas=10,CouleurI=red,CouleurF=orange,CouleurS=yellow,CouleurM=green}
\newlength{\barrewidth}
@@ -6537,10 +7215,10 @@ vardef Positions(expr Step)=
}
}
-%%%%%%%%%%%%%%%
-%%% Equations
-%%%%%%%%%%%%%%%
-\setKVdefault[ClesEquation]{Ecart=0.5,Fleches=false,FlecheDiv=false,Laurent=false,Decomposition=false,Terme=false,Composition=false,Symbole=false,Entier=false,Lettre=x,Solution=false,Bloc=false,Simplification=false,CouleurTerme=black,CouleurCompo=black,CouleurSous=red,CouleurSymbole=orange,Verification=false,Nombre=0,Egalite=false,Produit=false,Facteurs=false,Carre=false,Pose=false,Equivalence=false}
+%%%
+% Equations
+%%%
+\setKVdefault[ClesEquation]{Ecart=0.5,Fleches=false,FlecheDiv=false,Laurent=false,Decomposition=false,Terme=false,Composition=false,Symbole=false,Entier=false,Lettre=x,Solution=false,LettreSol=true,Bloc=false,Simplification=false,CouleurTerme=black,CouleurCompo=black,CouleurSous=red,CouleurSymbole=orange,Verification=false,Nombre=0,Egalite=false,Produit=false,Facteurs=false,Carre=false,Exact=false,Pose=false,Equivalence=false}
\newcommand\rightcomment[4]%
{\begin{tikzpicture}[remember picture,overlay]
@@ -6552,7 +7230,6 @@ vardef Positions(expr Step)=
\end{tikzpicture}%
}
-
\newcommand\leftcomment[4]%
{\begin{tikzpicture}[remember picture,overlay]
\draw[Cfleches,-stealth]
@@ -6659,9 +7336,9 @@ vardef Positions(expr Step)=
\definecolor{Cfleches}{RGB}{100,100,100}%
-\input{PfC-EquationSoustraction1}%
+\input{PfC-EquationSoustraction2}%
\input{PfC-EquationTerme1}%
-\input{PfC-EquationComposition1}%
+\input{PfC-EquationComposition2}%
\input{PfC-EquationPose1}%
\input{PfC-EquationSymbole1}%
\input{PfC-EquationLaurent1}
@@ -6716,12 +7393,12 @@ vardef Positions(expr Step)=
Comme \num{#2} est positif, alors l'équation $\useKV[ClesEquation]{Lettre}^2=\num{#2}$ a deux solutions :%
\begin{align*}
\useKV[ClesEquation]{Lettre}&=\sqrt{\num{#2}}&&\text{et}&\useKV[ClesEquation]{Lettre}&=-\sqrt{\num{#2}}%\\
- \ifboolKV[ClesEquation]{Entier}{\\%
+ \ifboolKV[ClesEquation]{Exact}{\\%
\useKV[ClesEquation]{Lettre}&=\num{\fpeval{sqrt(#2)}}&&\text{et}&\useKV[ClesEquation]{Lettre}&=-\num{\fpeval{sqrt(#2)}}}{}%
\end{align*}
- }
- }
-}
+ }%
+ }%
+}%
\newcommand\ResolEquationProduit[5][]{%
\setKV[ClesEquation]{#1}%
@@ -6782,9 +7459,8 @@ vardef Positions(expr Step)=
}
\end{align*}
}%
-
- \ifboolKV[ClesEquation]{Solution}{L'équation $\xintifboolexpr{#3=0}{\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}}{(\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}})}\xintifboolexpr{#5=0}{\times\xintifboolexpr{#4=1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}}{(\xintifboolexpr{#4=1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#5>0}{+\num{#5}}{-\num{\fpeval{0-#5}}})}=0$ a deux solutions : \opdiv*{\Coeffb}{\Coeffa}{solution}{resteequa}\opcmp{resteequa}{0}$\useKV[ClesEquation]{Lettre}=\displaystyle\ifopeq\opexport{solution}{\solution}\num{\solution}\else\ifboolKV[ClesEquation]{Entier}{\SSimplifie{\Coeffb}{\Coeffa}}{\frac{\num{\Coeffb}}{\num{\Coeffa}}}\fi$ et \opdiv*{\Coeffd}{\Coeffc}{solution}{resteequa}\opcmp{resteequa}{0}$\useKV[ClesEquation]{Lettre}=\displaystyle\ifopeq\opexport{solution}{\solution}\num{\solution}\else\ifboolKV[ClesEquation]{Entier}{\SSimplifie{\Coeffd}{\Coeffc}}{\frac{\num{\Coeffd}}{\num{\Coeffc}}}\fi$.
- }{}
+ \ifboolKV[ClesEquation]{Solution}{L'équation $\xintifboolexpr{#3=0}{\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}}{(\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}})}\xintifboolexpr{#5=0}{\times\xintifboolexpr{#4=1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}}{(\xintifboolexpr{#4=1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#5>0}{+\num{#5}}{-\num{\fpeval{0-#5}}})}=0$ a deux solutions : \opdiv*{\Coeffb}{\Coeffa}{solution}{resteequa}\opcmp{resteequa}{0}$\ifboolKV[ClesEquation]{LettreSol}{\useKV[ClesEquation]{Lettre}=}{}\displaystyle\ifopeq\opexport{solution}{\solution}\num{\solution}\else\ifboolKV[ClesEquation]{Entier}{\SSimplifie{\Coeffb}{\Coeffa}}{\frac{\num{\Coeffb}}{\num{\Coeffa}}}\fi$ et \opdiv*{\Coeffd}{\Coeffc}{solution}{resteequa}\opcmp{resteequa}{0}$\ifboolKV[ClesEquation]{LettreSol}{\useKV[ClesEquation]{Lettre}=}{}\displaystyle\ifopeq\opexport{solution}{\solution}\num{\solution}\else\ifboolKV[ClesEquation]{Entier}{\SSimplifie{\Coeffd}{\Coeffc}}{\frac{\num{\Coeffd}}{\num{\Coeffc}}}\fi$.
+ }{}%
}
\newcommand\Verification[5][]{%
@@ -6802,10 +7478,10 @@ vardef Positions(expr Step)=
}{\xintifboolexpr{\Testa=\Testb}{Comme $\num{\Testa}=\num{\Testb}$, alors $\useKV[ClesEquation]{Lettre}=\num{\useKV[ClesEquation]{Nombre}}$ est bien }{Comme $\num{\Testa}\not=\num{\Testb}$, alors $\useKV[ClesEquation]{Lettre}=\num{\useKV[ClesEquation]{Nombre}}$ n'est pas }une solution de l'équation $\xintifboolexpr{#2=0}{\num{#3}}{\xintifboolexpr{#2=1}{}{\num{#2}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#3=0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}}}=\xintifboolexpr{#4=0}{\num{#5}}{\xintifboolexpr{#4=1}{}{\num{#4}}\useKV[ClesEquation]{Lettre}\xintifboolexpr{#5=0}{}{\xintifboolexpr{#5>0}{+\num{#5}}{-\num{\fpeval{0-#5}}}}}$.}
}
-%%%%%%%%%%%%%%%%%%%%
-%%% Proportionnalité
-%%%%%%%%%%%%%%%%%%%%
-\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,ColorTab=gray!15}%Tableau=false :
+%%%
+% Proportionnalité
+%%%
+\setKVdefault[ClesPropor]{GrandeurA=Grandeur A,GrandeurB=Grandeur B,Largeur=1cm,Math=false,Stretch=1,ColorFill=white,CouleurTab=gray!15}%Tableau=false :
%inutile ?
\def\Updatetoksmath#1/#2\nil{\addtotok\tabtoksa{&#1}\addtotok\tabtoksb{&#2}}%
@@ -6819,7 +7495,7 @@ vardef Positions(expr Step)=
}%
\xdef\LongListe{\ListeValeurlen}%
\renewcommand{\arraystretch}{\useKV[ClesPropor]{Stretch}}%
- \begin{tabular}{|>{\columncolor{\useKV[ClesPropor]{ColorTab}}}c|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}}%
+ \begin{tabular}{|>{\columncolor{\useKV[ClesPropor]{CouleurTab}}}c|*{\number\numexpr\ListeValeurlen}{>{\centering\arraybackslash}p{\useKV[ClesPropor]{Largeur}}|}}%
\multicolumn{1}{c}{\TikzPHD\setcounter{NbPropor}{1}}\xintFor* ##1 in {\xintSeq {1}{\ListeValeurlen}}\do{&\multicolumn{1}{c}{\TikzPH}}\\%
\hhline{*{\number\numexpr\ListeValeurlen+1}{-}}%
\the\tabtoksa\\%
@@ -6839,9 +7515,15 @@ vardef Positions(expr Step)=
}%
\newcommand{\TikzPHD}{%
- \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}
- \tikz[remember picture,overlay]{%
- \coordinate[name=ProporHD,xshift=-0.5*\the\wd1,yshift=-\the\dp\strutbox*\arraystretch];}%
+ \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
+ \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
+ \xintifboolexpr{\wd1>\wd2}{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporHD,xshift=-0.5\wd1,yshift=-\the\dp\strutbox*\arraystretch];}%
+ }{%
+ \tikz[remember picture,overlay]{%
+ \coordinate[name=ProporHD,xshift=-0.5\wd2,yshift=-\the\dp\strutbox*\arraystretch];}%
+ }
}%
\newcommand{\TikzPB}{%
@@ -6851,20 +7533,26 @@ vardef Positions(expr Step)=
}%
\newcommand{\TikzPBD}{%
- \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}
- \tikz[remember picture, overlay]{%
- \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\the\ht\strutbox*\arraystretch];}%
+ \setbox1=\hbox{\useKV[ClesPropor]{GrandeurA}}%
+ \setbox2=\hbox{\useKV[ClesPropor]{GrandeurB}}%
+ \xintifboolexpr{\wd1>\wd2}{%
+ \tikz[remember picture, overlay]{%
+ \coordinate[name=ProporBD,xshift=-0.5*\the\wd1,yshift=\the\ht\strutbox*\arraystretch];}%
+ }{%
+ \tikz[remember picture, overlay]{%
+ \coordinate[name=ProporBD,xshift=-0.5*\the\wd2,yshift=\the\ht\strutbox*\arraystretch];}%
+ }
\stepcounter{NbPropor}%
}%
\newcommand\FlechesPH[3]{%
\ifnum#1<#2\relax%
\begin{tikzpicture}[remember picture,overlay]%
- \draw[-stealth,out=50,in=130] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.65, sloped]{#3}(ProporH-#2);%
+ \draw[-stealth,out=50,in=130] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);%
\end{tikzpicture}%
\else%
\begin{tikzpicture}[remember picture,overlay]%
- \draw[-stealth,out=130,in=50] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.65, sloped]{#3}(ProporH-#2);%
+ \draw[-stealth,out=130,in=50] (ProporH-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporH-#2);%
\end{tikzpicture}%
\fi%
}%
@@ -6872,11 +7560,11 @@ vardef Positions(expr Step)=
\newcommand\FlechesPB[3]{%
\ifnum\number#1<\number#2\relax%
\begin{tikzpicture}[remember picture,overlay]%
- \draw[-stealth,out=-50,in=-130] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.65, sloped]{#3}(ProporB-#2);%
+ \draw[-stealth,out=-50,in=-130] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporB-#2);%
\end{tikzpicture}%
\else%
\begin{tikzpicture}[remember picture,overlay]%
- \draw[-stealth,out=-130,in=-50] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.65, sloped]{#3}(ProporB-#2);%
+ \draw[-stealth,out=-130,in=-50] (ProporB-#1) to node[inner sep=0pt, inner xsep=1pt,fill=\colorfill, pos=0.5, sloped]{#3}(ProporB-#2);%
\end{tikzpicture}%
\fi%
}
@@ -6902,14 +7590,13 @@ vardef Positions(expr Step)=
\end{tikzpicture}%
}%
-\newcommand\FlecheCoefDebut[2][1.25\tabcolsep]{%
+\newcommand\FlecheCoefDebut[2][\tabcolsep+\arrayrulewidth]{%
\begin{tikzpicture}[remember picture, overlay]%
\node[] (Noeud1) at ($(ProporHD)!0.1!(ProporBD)$) {};%
\node[] (Noeud2) at ($(ProporHD)!0.9!(ProporBD)$) {};%
\coordinate[left of=Noeud1,node distance=#1] (noeud1);%
\coordinate[left of=Noeud2,node distance=#1] (noeud2);%
\draw[-stealth,out=160,in=-160] (noeud2) to node[midway,left,inner sep=1pt]{#2}(noeud1);%
- %\draw[red](ProporHD) to (ProporBD);
\end{tikzpicture}%
}%
@@ -6945,26 +7632,26 @@ vardef Positions(expr Step)=
\end{tikzpicture}
}
-%%%%%%%%%%%
-%% Application : pourcentage
-%%%%%%%%%%%
-\setKVdefault[ClesPourcentage]{Appliquer,Calculer=false,Augmenter=false,Reduire=false,Fractionnaire=false,Decimal,Formule=false,Unite=g,Concret=false,GrandeurA=Grandeur A,GrandeurB=Total,MotReduction=diminution,AideTableau=false,ColorFill=white,ColorTab=gray!15}
+%%%
+% Application : pourcentage
+%%%
+\setKVdefault[ClesPourcentage]{Appliquer,Calculer=false,Augmenter=false,Reduire=false,Fractionnaire=false,Decimal,Formule=false,Unite=g,Concret=false,GrandeurA=Grandeur A,GrandeurB=Total,MotReduction=diminution,AideTableau=false,ColorFill=white,CouleurTab=gray!15}
\newcommand\Pourcentage[3][]{%
\useKVdefault[ClesPourcentage]%
\setKV[ClesPourcentage]{#1}%
\ifboolKV[ClesPourcentage]{Reduire}{%
\ifboolKV[ClesPourcentage]{Formule}{%
- Réduire une quantité de \num{#2}~\%, cela revient à multiplier cette quantitié par $1-\dfrac{\num{#2}}{100}$. Par conséquent, si on réduit \num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{} de \num{#2}~\%, cela donne :
+ Réduire une quantité de \num{#2}~\%, cela revient à multiplier cette quantité par $1-\dfrac{\num{#2}}{100}$. Par conséquent, si on réduit \num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{} de \num{#2}~\%, cela donne :
\[\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times\left(1-\frac{\num{#2}}{100}\right)=\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times(1-\num{\fpeval{#2/100}})=\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times\num{\fpeval{(1-#2/100)}}=\num{\fpeval{#3*(1-#2/100)}}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\]
}{%
Calculons ce que représente la \useKV[ClesPourcentage]{MotReduction} de \num{#2}~\%.
\ifboolKV[ClesPourcentage]{AideTableau}{%
\xdef\NomA{\useKV[ClesPourcentage]{GrandeurA}}%
\xdef\NomB{\useKV[ClesPourcentage]{GrandeurB}}%
- \xdef\NomColorTab{\useKV[ClesPourcentage]{ColorTab}}%
+ \xdef\NomCouleurTab{\useKV[ClesPourcentage]{CouleurTab}}%
\begin{center}
- \Propor[GrandeurA=\NomA,GrandeurB=\NomB,ColorTab=\NomColorTab]{/#3,#2/100}
+ \Propor[GrandeurA=\NomA,GrandeurB=\NomB,CouleurTab=\NomCouleurTab]{/#3,#2/100}
\end{center}
\FlecheCoefInv{\tiny$\times\num{\fpeval{#2/100}}$}%
On obtient une \useKV[ClesPourcentage]{MotReduction} de $\num{\fpeval{#2/100}}\times\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}=\num{\fpeval{#3*#2/100}}$\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{}. Donc un total de $\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}-\num{\fpeval{#3*#2/100}}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}=\num{\fpeval{#3*(1-#2/100)}}$\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{}.%
@@ -6975,16 +7662,16 @@ vardef Positions(expr Step)=
}{%
\ifboolKV[ClesPourcentage]{Augmenter}{%
\ifboolKV[ClesPourcentage]{Formule}{%
- Augmenter de \num{#2}~\% une quantité, cela revient à multiplier cette quantitié par $1+\dfrac{\num{#2}}{100}$. Par conséquent, si on augmente \num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{} de \num{#2}~\%, cela donne :
+ Augmenter de \num{#2}~\% une quantité, cela revient à multiplier cette quantité par $1+\dfrac{\num{#2}}{100}$. Par conséquent, si on augmente \num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{} de \num{#2}~\%, cela donne :
\[\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times\left(1+\frac{\num{#2}}{100}\right)=\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times(1+\num{\fpeval{#2/100}})=\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\times\num{\fpeval{(1+#2/100)}}=\num{\fpeval{#3*(1+#2/100)}}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}\]
}{%
Calculons ce que représente l'augmentation de \num{#2}~\%. %
\ifboolKV[ClesPourcentage]{AideTableau}{%
\xdef\NomA{\useKV[ClesPourcentage]{GrandeurA}}%
\xdef\NomB{\useKV[ClesPourcentage]{GrandeurB}}%
- \xdef\NomColorTab{\useKV[ClesPourcentage]{ColorTab}}%
+ \xdef\NomCouleurTab{\useKV[ClesPourcentage]{CouleurTab}}%
\begin{center}%
- \Propor[GrandeurA=\NomA,GrandeurB=\NomB,ColorTab=\NomColorTab]{/#3,#2/100}%
+ \Propor[GrandeurA=\NomA,GrandeurB=\NomB,CouleurTab=\NomCouleurTab]{/#3,#2/100}%
\end{center}%
\FlecheCoefInv{\tiny$\times\num{\fpeval{#2/100}}$}%
On obtient une augmentation de $\num{\fpeval{#2/100}}\times\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}=\num{\fpeval{#3*#2/100}}$\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{}.\\Donc un total de $\num{#3}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}+\num{\fpeval{#3*#2/100}}\ifboolKV[ClesPourcentage]{Concret}{~\text{\useKV[ClesPourcentage]{Unite}}}{}=\num{\fpeval{#3*(1+#2/100)}}$\ifboolKV[ClesPourcentage]{Concret}{~\useKV[ClesPourcentage]{Unite}}{}.%
@@ -6996,8 +7683,8 @@ vardef Positions(expr Step)=
\ifboolKV[ClesPourcentage]{Calculer}{%
\xdef\NomA{\useKV[ClesPourcentage]{GrandeurA}}%
\xdef\NomB{\useKV[ClesPourcentage]{GrandeurB}}%
- \xdef\NomColorTab{\useKV[ClesPourcentage]{ColorTab}}%
- \Propor[GrandeurA=\NomA,GrandeurB=\NomB,ColorTab=\NomColorTab]{#2/#3,/100}%
+ \xdef\NomCouleurTab{\useKV[ClesPourcentage]{CouleurTab}}%
+ \Propor[GrandeurA=\NomA,GrandeurB=\NomB,CouleurTab=\NomCouleurTab]{#2/#3,/100}%
\xdef\colorfill{\useKV[ClesPourcentage]{ColorFill}}%
\FlechesPB{2}{1}{\scriptsize$\times\num{\fpeval{#3/100}}$}%
\FlechesPH{1}{2}{\scriptsize$\div\num{\fpeval{#3/100}}$}%
@@ -7010,10 +7697,10 @@ vardef Positions(expr Step)=
}%
}%
-%%%%%%%%%%%%%
-%Lien : ratio
-%%%%%%%%%%%%%
-\setKVdefault[ClesRatio]{Figure=false,Longueur=5cm,TexteTotal=quantité,TextePart=part,Tableau=false,GrandeurA=Grandeur A,GrandeurB=Part(s),Largeur=1cm,Stretch=1,Nom=false,CouleurUn=gris,CouleurDeux=0.5gris+0.5blanc,CouleurTrois=white,ColorTab=gray!15}
+%%%
+% Lien : ratio
+%%%
+\setKVdefault[ClesRatio]{Figure=false,Longueur=5cm,TexteTotal=quantité,TextePart=part,Tableau=false,GrandeurA=Grandeur A,GrandeurB=Part(s),Largeur=1cm,Stretch=1,Nom=false,CouleurUn=gris,CouleurDeux=0.5gris+0.5blanc,CouleurTrois=white,CouleurTab=gray!15}
\newcommand\MPTest[9][]{%
% #2 : Longueur de la barre unité
@@ -7098,12 +7785,11 @@ vardef Positions(expr Step)=
fi;
\end{mplibcode}
\else
- \usempxpackage{simplekv}
\mpxcommands{%
\setKVdefault[ClesRatio]{TexteTotal=quantité,TextePart=part}
\setKV[ClesRatio]{#1}
}
- \begin{mpost}[mpsettings={input PfC-Geometrie;}]
+ \begin{mpost}
vardef RatioTrois(expr long)(text t)=%longueur de la barre / quantité à partager / textepart :) / t le ratio
pair A,B,C,D;
A=u*(1,1);
@@ -7189,7 +7875,7 @@ vardef Positions(expr Step)=
\foreachitem\compteur\in\ListeRatio{\expandafter\updateratiotoks\compteur\nil}%
\xdef\LongListe{\ListeRatiolen}%
\renewcommand{\arraystretch}{\useKV[ClesRatio]{Stretch}}%
- \begin{tabular}{|>{\columncolor{\useKV[ClesRatio]{ColorTab}}}c|*{\number\numexpr\ListeRatiolen}{>{\centering\arraybackslash}p{\useKV[ClesRatio]{Largeur}}|}l}
+ \begin{tabular}{|>{\columncolor{\useKV[ClesRatio]{CouleurTab}}}c|*{\number\numexpr\ListeRatiolen}{>{\centering\arraybackslash}p{\useKV[ClesRatio]{Largeur}}|}l}
\ifboolKV[ClesRatio]{Nom}{%
\hhline{~*{\number\numexpr\ListeRatiolen}{-}}
\multicolumn{1}{c|}{}\the\tabtoksc\\
@@ -7245,7 +7931,7 @@ vardef Positions(expr Step)=
\foreachitem\compteur\in\ListeRatio{\expandafter\UpdateRatio\compteur\nil}%
\itemtomacro\ListeRatio[1]\NbUn
\itemtomacro\ListeRatio[2]\NbDeux
- \xintifboolexpr{\ListeRatiolen>2}{\itemtomacro\ListeRatio[3]\NbTrois}{\newcommand\NbTrois{}}
+ \xintifboolexpr{\ListeRatiolen>2}{\itemtomacro\ListeRatio[3]\NbTrois}{\xdef\NbTrois{}}
\MPTest[#1]{\useKV[ClesRatio]{Longueur}}{\NbUn}{\NbDeux}{\NbTrois}{\the\toklisteratio}{\useKV[ClesRatio]{CouleurUn}}{\useKV[ClesRatio]{CouleurDeux}}{\useKV[ClesRatio]{CouleurTrois}}%
}{%
\ifboolKV[ClesRatio]{Tableau}{%
@@ -7256,9 +7942,9 @@ vardef Positions(expr Step)=
}%
}%
-%%%%%%%%%%%%%%%
-%% Cartes Mentales
-%%%%%%%%%%%%%%%
+%%%
+% Cartes Mentales
+%%%
\setKVdefault[ClesMentales]{Nom={Bulle}, Largeur=5cm, Ancre={0,0},Pointilles=false,CTrace=black,CFond=white,Epaisseur=1pt,Rayon=1}%
\newenvironment{Mind}{\begin{tikzpicture}}{\end{tikzpicture}}%
@@ -7282,9 +7968,9 @@ vardef Positions(expr Step)=
}
}
-%%%%%%%%%%%%
+%%%
% Pptés des droites (6eme)
-%%%%%%%%%%%
+%%%
\setKVdefault[ClesDroites]{Brouillon=false,CitePropriete=false,Num=1,Figure=false,Remediation=false}
\newcommand\Redaction[4][]{%
@@ -7320,7 +8006,7 @@ vardef Positions(expr Step)=
Comme les droites $(\hbox to2em{\dotfill})$ et $(\hbox to2em{\dotfill})$ sont parallèles, alors la droite $(\hbox to2em{\dotfill})$ qui est perpendiculaire à $(\hbox to2em{\dotfill})$ est également perpendiculaire à la droite $(\hbox to2em{\dotfill})$.
}
}
- }%%%%%%%%%%%%%%%%%%%%%
+ }%
}{%
\xintifboolexpr{\useKV[ClesDroites]{Num}=1}{%
\ifboolKV[ClesDroites]{CitePropriete}{%
@@ -7351,11 +8037,11 @@ vardef Positions(expr Step)=
Donc les droites $(#2)$ et $(#3)$ sont perpendiculaires.
}{%
Comme les droites $(#2)$ et $(#4)$ sont parallèles, alors la droite $(#3)$ qui est perpendiculaire à $(#4)$ est également perpendiculaire à la droite $(#2)$.
- }
- }
- }
- }
-}
+ }%
+ }%
+ }%
+ }%
+}%
\newcommand\Brouillon[4][]{%
\setlength{\abovedisplayskip}{0pt}
@@ -7417,10 +8103,10 @@ vardef Positions(expr Step)=
\end{array}
\right\}(#2)\perp(#3)
\]
- }
- }
- }
-}
+ }%
+ }%
+ }%
+}%
\def\MPFigureDroite#1#2{%
\ifluatex
@@ -7626,11 +8312,10 @@ vardef Positions(expr Step)=
}%
}%
-%%%%%%%%%%%%%%%%%%%%
-%%% Fonction Affine
-%%%%%%%%%%%%%%%%%%%%
-\setKVdefault[ClesAffine]{Nom=f,Variable=x,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 ?
+%%%
+% Fonction Affine
+%%%
+\setKVdefault[ClesAffine]{Nom=f,Variable=x,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 ?
\newcommand\FonctionAffine[5][]{%
% #1 nombre ou abscisse premier point
@@ -7641,7 +8326,7 @@ vardef Positions(expr Step)=
\setKV[ClesAffine]{#1}%
\ifboolKV[ClesAffine]{Image}{%
\ifboolKV[ClesAffine]{Ligne}{%
- \ensuremath{\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}=\num{\fpeval{#2*#3}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}\xintifboolexpr{#4=0}{}{=\num{\fpeval{#2*#3+#4}}}}%
+ \ensuremath{\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}=\num{\fpeval{#2*#3}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}\xintifboolexpr{#4=0}{}{=\num{\fpeval{#2*#3+#4}}}}%
}{%
\ifboolKV[ClesAffine]{ProgCalcul}{%
\begin{align*}
@@ -7650,8 +8335,8 @@ vardef Positions(expr Step)=
\end{align*}
}{%
\begin{align*}
- \useKV[ClesAffine]{Nom}(\num{#2})&=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}\\
- \useKV[ClesAffine]{Nom}(\num{#2})&=\num{\fpeval{#3*#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}%\\
+ \useKV[ClesAffine]{Nom}(\num{#2})&=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}\\
+ \useKV[ClesAffine]{Nom}(\num{#2})&=\num{\fpeval{#3*#2}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}%\\
\xintifboolexpr{#4=0}{}{\\
\useKV[ClesAffine]{Nom}(\num{#2})&=\num{\fpeval{#3*#2+#4}}%\\
}
@@ -7669,17 +8354,20 @@ vardef Positions(expr Step)=
\useKV[ClesAffine]{Nom}&:\frac{\num{\fpeval{#2-#4}}}{\num{#3}}\stackrel{\div\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longleftarrow}\num{\fpeval{#2-#4}}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{\stackrel{-\num{#4}}{\longleftarrow}}{\stackrel{+\num{\fpeval{0-#4}}}{\longleftarrow}}\num{#2}}
\end{align*}
}{%
- On cherche l'antécédent de $\num{#2}$ par la fonction $\useKV[ClesAffine]{Nom}$, c'est-à-dire le nombre $\useKV[ClesAffine]{Variable}$ tel que $\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\num{#2}$. Or, la fonction $\useKV[ClesAffine]{Nom}$ est définie 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}}}}
- \end{align*}
+ On cherche l'antécédent de $\num{#2}$ par la fonction
+ $\useKV[ClesAffine]{Nom}$, c'est-à-dire le nombre
+ $\useKV[ClesAffine]{Variable}$ tel que
+ $\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\num{#2}$. Or,
+ la fonction $\useKV[ClesAffine]{Nom}$ est définie 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}}}}}
+ \]
Par conséquent, on a :
\begin{align*}
- \num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}&=\num{#2}\\
- \xintifboolexpr{#4=0}{\useKV[ClesAffine]{Variable}\uppercase{&}=\frac{\num{#2}}{\num{#3}}
- }{\num{#3}\useKV[ClesAffine]{Variable}&=\num{\fpeval{#2-#4}}\\
- \useKV[ClesAffine]{Variable}&=\frac{\num{\fpeval{#2-#4}}}{\num{#3}}
- }
+ \num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4=0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}&=\num{#2}\\
+ \xintifboolexpr{#4=0}{\useKV[ClesAffine]{Variable}\uppercase{&}=\frac{\num{#2}}{\num{#3}}%\\
+ }{\num{#3}\useKV[ClesAffine]{Variable}&=\num{\fpeval{#2-#4}}\\
+ \useKV[ClesAffine]{Variable}&=\frac{\num{\fpeval{#2-#4}}}{\num{#3}}%\\
+ }
\end{align*}
}%
}{%
@@ -7716,16 +8404,15 @@ vardef Positions(expr Step)=
\ifboolKV[ClesAffine]{Redaction}{%
\xintifboolexpr{#2=0}{Comme la fonction $\useKV[ClesAffine]{Nom}$
est une fonction constante, alors sa représentation graphique est une droite parallèle à l'axe des abscisses passant par le point de coordonnées $(0;\num{#3})$.}%
- {\xintifboolexpr{#3=0}{Comme la fonction
- $\useKV[ClesAffine]{Nom}$ est une fonction linéaire, alors sa représentation graphique est une droite passant par l'origine du repère.\\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ées $(\num{#4};\num{\fpeval{#2*#4+#3}})$.
+ {\xintifboolexpr{#3=0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction linéaire, alors sa représentation graphique est une droite passant par l'origine du repère.\\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ées $(\num{#4};\num{\fpeval{#2*#4+#3}})$.
}{%
- Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa représentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonction{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonnées $(\num{#4};\num{\fpeval{#2*#4+#3}})$.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#4}. On place le point de coordonnées $(\num{#5};\num{\fpeval{#2*#5+#3}})$.%
+ Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa représentation 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ées $(\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ées $(\num{#5};\num{\fpeval{#2*#5+#3}})$.%
}%
}%
}%
{}%
- \ifboolKV[ClesAffine]{Ecriture}{\ensuremath{\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#2=0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2=0}{\num{#3}}{\xintifboolexpr{#3=0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{\num{#3}}}}}}{}%
- \ifboolKV[ClesAffine]{Definition}{\ensuremath{\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\xintifboolexpr{#2=0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2=0}{\num{#3}}{\xintifboolexpr{#3=0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{\num{#3}}}}}}{}%
+ \ifboolKV[ClesAffine]{Ecriture}{\ensuremath{\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#2=0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2=0}{\num{#3}}{\xintifboolexpr{#3=0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}}}}}{}%
+ \ifboolKV[ClesAffine]{Definition}{\ensuremath{\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\xintifboolexpr{#2=0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2=0}{\num{#3}}{\xintifboolexpr{#3=0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}}}}}{}%
}%
\def\MPFonctionAffine#1#2#3#4#5#6#7{%
@@ -7987,30 +8674,228 @@ vardef Positions(expr Step)=
}
-%%%%%%%%%%%%%%%
+%%%
% Fonction
-%%%%%%%%%%%%%%%
-\setKVdefault[ClesFonction]{Nom=f,Variable=x,Calcul=x,Tableau=false,Largeur=5mm,Ecriture=false,Definition=false}
+%%%
+\setKVdefault[ClesFonction]{Nom=f,Variable=x,Calcul=x,Tableau=false,Largeur=5mm,Ecriture=false,Definition=false,Points=false,Tangentes=false,PasX=1,PasY=1,UniteX=1,UniteY=1,Prolonge=false}
+
+\newtoks\toklistePtsFn%pour la discipline
+
+\def\UpdatePtsFn#1/#2/#3/#4\nil{\addtotok\toklistePtsFn{#1,(#2,#3),#4,}}%
+\def\UpdatePtsFN#1/#2/#3/#4\nil{\addtotok\toklistePtsFn{(#2,#3),}}%
+
+\def\MPCourbePoints#1#2#3#4#5#6{%
+ % #1 la liste des points
+ % #2: pas en x
+ % #3: pas en y
+ % #4: unité en x
+ % #5: unité en y
+ % #6 : prolongement avant et après les premier et dernier points ?
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ x.u:=#2;
+ y.u:=#3;
+ X.u:=#4;
+ Y.u:=#5;
+ numeric dirav[],dirap[];
+ pair Fn[],Gn[];
+ n=0;
+ for p_=#1:
+ Gn[n]=p_;
+ Fn[n]=cm*(X.u*xpart(p_),Y.u*ypart(p_));
+ n:=n+1;
+ endfor;
+ N:=(n-1);
+ MinX=999;
+ MaxX=-999;
+ MinY=999;
+ MaxY=-999;
+ for k=0 upto N:
+ if xpart(Gn[k])<MinX:
+ MinX:=xpart(Gn[k]);
+ fi;
+ if xpart(Gn[k])>MaxX:
+ MaxX:=xpart(Gn[k]);
+ fi;
+ if ypart(Gn[k])<MinY:
+ MinY:=ypart(Gn[k]);
+ fi;
+ if ypart(Gn[k])>MaxY:
+ MaxY:=ypart(Gn[k]);
+ fi;
+ endfor;
+ if #6=0:
+ for k=MinY-1 step y.u until MaxY+1:
+ draw cm*((MinX-1)*X.u,k*Y.u)--cm*((MaxX+1)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX-1 step x.u until MaxX+1:
+ draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
+ endfor;
+ else:
+ for k=MinY-1 step y.u until MaxY+1:
+ draw cm*((MinX)*X.u,k*Y.u)--cm*((MaxX)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX step x.u until MaxX:
+ draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
+ endfor;
+ fi;
+ if #6=0:
+ for k=0 upto N:
+ fill cercles(Fn[k],0.5mm);
+ endfor;
+ else:
+ for k=1 upto N-1:
+ fill cercles(Fn[k],0.5mm);
+ endfor;
+ fi;
+ if #6=0:
+ drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
+ drawarrow ((MinX-1)*X.u*cm,0)--((MaxX+1)*X.u*cm,0);
+ else:
+ drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
+ drawarrow ((MinX)*X.u*cm,0)--((MaxX)*X.u*cm,0);
+ fi;
+ label.llft(btex O etex,(0,0));
+ dotlabel.bot(btex 1 etex,cm*X.u*(1,0));
+ dotlabel.lft(btex 1 etex,cm*Y.u*(0,1));
+ draw Fn[0]
+ for k=1 upto N:
+ ..Fn[k]
+ endfor;
+ \end{mplibcode}
+ \fi
+}
+
+\def\MPCourbe#1#2#3#4#5#6{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ x.u:=#2;
+ y.u:=#3;
+ X.u:=#4;
+ Y.u:=#5;
+ numeric dirav[],dirap[];
+ pair Fn[],Gn[];
+ n=0;
+ for p_=#1:
+ if (n mod 3)=0:
+ dirav[n div 3]=p_;
+ fi;
+ if (n mod 3)=1:
+ Gn[n div 3]=p_;
+ Fn[n div 3]=cm*(X.u*xpart(p_),Y.u*ypart(p_));
+ fi;
+ if (n mod 3)=2:
+ dirap[n div 3]=p_;
+ fi;
+ n:=n+1;
+ endfor;
+ N:=(n-1) div 3;
+ MinX=999;
+ MaxX=-999;
+ MinY=999;
+ MaxY=-999;
+ for k=0 upto N:
+ if xpart(Gn[k])<MinX:
+ MinX:=xpart(Gn[k]);
+ fi;
+ if xpart(Gn[k])>MaxX:
+ MaxX:=xpart(Gn[k]);
+ fi;
+ if ypart(Gn[k])<MinY:
+ MinY:=ypart(Gn[k]);
+ fi;
+ if ypart(Gn[k])>MaxY:
+ MaxY:=ypart(Gn[k]);
+ fi;
+ endfor;
+ if #6=0:
+ for k=MinY-1 step y.u until MaxY+1:
+ draw cm*((MinX-1)*X.u,k*Y.u)--cm*((MaxX+1)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX-1 step x.u until MaxX+1:
+ draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
+ endfor;
+ else:
+ for k=MinY-1 step y.u until MaxY+1:
+ draw cm*((MinX)*X.u,k*Y.u)--cm*((MaxX)*X.u,k*Y.u) withcolor 0.75white;
+ endfor;
+ for k=MinX step x.u until MaxX:
+ draw cm*(k*X.u,(MinY-1)*Y.u)--cm*(k*X.u,(MaxY+1)*Y.u) withcolor 0.75white;
+ endfor;
+ fi;
+ if #6=0:
+ for k=0 upto N:
+ fill cercles(Fn[k],0.5mm);
+ endfor;
+ else:
+ for k=1 upto N-1:
+ fill cercles(Fn[k],0.5mm);
+ endfor;
+ fi;
+ if #6=0:
+ drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
+ drawarrow ((MinX-1)*X.u*cm,0)--((MaxX+1)*X.u*cm,0);
+ else:
+ drawarrow (0,(MinY-1)*Y.u*cm)--(0,(MaxY+1)*Y.u*cm);
+ drawarrow ((MinX)*X.u*cm,0)--((MaxX)*X.u*cm,0);
+ fi;
+ label.llft(btex O etex,(0,0));
+ dotlabel.bot(btex 1 etex,cm*X.u*(1,0));
+ dotlabel.lft(btex 1 etex,cm*Y.u*(0,1));
+ draw Fn[0]{dir dirap[0]}
+ for k=1 upto (N-1):
+ ..{dir dirav[k]}Fn[k]{dir dirap[k]}
+ endfor
+ ..{dir dirav[N]}Fn[N];
+ \end{mplibcode}
+ \fi
+}
\newcommand{\Fonction}[2][]{%
\useKVdefault[ClesFonction]
\setKV[ClesFonction]{#1}
- \ignoreemptyitems%
- \readlist*\ListeFonction{#2}
- \StrSubstitute{\useKV[ClesFonction]{Calcul}}{\useKV[ClesFonction]{Variable}}{\i}[\temp]%
-
- \StrSubstitute{\useKV[ClesFonction]{Calcul}}{**}{^}[\tempa]%
- \StrSubstitute{\tempa}{*}{}[\tempab]%
- \ifboolKV[ClesFonction]{Ecriture}{%
- \ensuremath{\useKV[ClesFonction]{Nom}(\useKV[ClesFonction]{Variable})=\tempab}
- }{}%
- \ifboolKV[ClesFonction]{Definition}{%
- \ensuremath{\useKV[ClesFonction]{Nom}:\useKV[ClesFonction]{Variable}\mapsto\tempab}
- }{}%
- \ifboolKV[ClesFonction]{Tableau}{%
- \buildtabfonction%
- }{}
-}
+ \ifboolKV[ClesFonction]{Points}{%
+ \toklistePtsFn{}%
+ \setsepchar[*]{,*/}%\ignoreemptyitems%
+ \readlist*\ListePoints{#2}%
+ \ifboolKV[ClesFonction]{Tangentes}{%
+ \foreachitem\compteur\in\ListePoints{%
+ \expandafter\UpdatePtsFn\compteur\nil%
+ }%
+ \ifboolKV[ClesFonction]{Prolonge}{%
+ \MPCourbe{\the\toklistePtsFn}{\useKV[ClesFonction]{PasX}}{\useKV[ClesFonction]{PasY}}{\useKV[ClesFonction]{UniteX}}{\useKV[ClesFonction]{UniteY}}{1}%
+ }{%
+ \MPCourbe{\the\toklistePtsFn}{\useKV[ClesFonction]{PasX}}{\useKV[ClesFonction]{PasY}}{\useKV[ClesFonction]{UniteX}}{\useKV[ClesFonction]{UniteY}}{0}%
+ }%
+ }{%
+ \foreachitem\compteur\in\ListePoints{%
+ \expandafter\UpdatePtsFN\compteur\nil%
+ }%
+ \ifboolKV[ClesFonction]{Prolonge}{%
+ \MPCourbePoints{\the\toklistePtsFn}{\useKV[ClesFonction]{PasX}}{\useKV[ClesFonction]{PasY}}{\useKV[ClesFonction]{UniteX}}{\useKV[ClesFonction]{UniteY}}{1}%
+ }{%
+ \MPCourbePoints{\the\toklistePtsFn}{\useKV[ClesFonction]{PasX}}{\useKV[ClesFonction]{PasY}}{\useKV[ClesFonction]{UniteX}}{\useKV[ClesFonction]{UniteY}}{0}%
+ }%
+ }%
+ }{%
+ \ignoreemptyitems%
+ \readlist*\ListeFonction{#2}
+ \StrSubstitute{\useKV[ClesFonction]{Calcul}}{\useKV[ClesFonction]{Variable}}{\i}[\temp]%
+ \StrSubstitute{\useKV[ClesFonction]{Calcul}}{**}{^}[\tempa]%
+ \StrSubstitute{\tempa}{*}{}[\tempab]%
+ \ifboolKV[ClesFonction]{Ecriture}{%
+ \ensuremath{\useKV[ClesFonction]{Nom}(\useKV[ClesFonction]{Variable})=\tempab}
+ }{}%
+ \ifboolKV[ClesFonction]{Definition}{%
+ \ensuremath{\useKV[ClesFonction]{Nom}:\useKV[ClesFonction]{Variable}\mapsto\tempab}
+ }{}%
+ \ifboolKV[ClesFonction]{Tableau}{%
+ \buildtabfonction%
+ }{}%
+ }%
+}%
\def\buildtabfonction{%\\
\[%
@@ -8018,16 +8903,16 @@ vardef Positions(expr Step)=
\hline
\useKV[ClesFonction]{Variable}\xintFor* ##1 in {\xintSeq {1}{\ListeFonctionlen}}\do{&\num{\ListeFonction[##1]}}\\
\hline
- \useKV[ClesFonction]{Nom}(\useKV[ClesFonction]{Variable})\xintFor* ##1 in {\xintSeq {1}{\ListeFonctionlen}}\do{& \StrSubstitute{\useKV[ClesFonction]{Calcul}}{\useKV[ClesFonction]{Variable}}{\ListeFonction[##1]}[\tempab]\num{\fpeval{\tempab}}}
+ \useKV[ClesFonction]{Nom}(\useKV[ClesFonction]{Variable})\xintFor* ##1 in {\xintSeq {1}{\ListeFonctionlen}}\do{& \StrSubstitute{\useKV[ClesFonction]{Calcul}}{\useKV[ClesFonction]{Variable}}{(\ListeFonction[##1])}[\tempab]\num{\fpeval{\tempab}}}
\\\hline
\end{array}
\]
}
-%%%%%%%
-%% Formules
-%%%%%%
-\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carré,Solide=pavé droit,Figure=false,Angle=0,Ancre={(0,0)},Largeur=5cm}
+%%%
+% Formules
+%%%
+\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carré,Solide=pavé,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white}
\def\MPFigureCarre{%
\ifluatex
@@ -8496,7 +9381,6 @@ vardef Positions(expr Step)=
\mplibforcehmode
\begin{mplibcode}
drawoptions( dashed dashpattern(on1cm));
- % Figure(-10u,-10u,10u,10u);
u:=0.5cm;
z0=(-0.5,0)*u;
z1=(2.5,0.5)*u;
@@ -8788,7 +9672,6 @@ vardef Positions(expr Step)=
\mplibforcehmode
\begin{mplibcode}
drawoptions( dashed dashpattern(on1cm));
- % Figure(-5u,-5u,5u,5u);
pair A,B,C,H,I,J;
A=u*(0.5,1);
B-A=u*(1.4,0);
@@ -8866,12 +9749,13 @@ vardef Positions(expr Step)=
}
\newcommand\Formule[1][]{%
- \useKVdefault[ClesFormule]
- \setKV[ClesFormule]{#1}
- \setlength{\RoundedBoxWidth}{\useKV[ClesFormule]{Largeur}}
+ \useKVdefault[ClesFormule]%
+ \setKV[ClesFormule]{#1}%
+ \setlength{\RoundedBoxWidth}{\useKV[ClesFormule]{Largeur}}%
+ \xdef\ColorFill{\useKV[ClesFormule]{Couleur}}%
\ifboolKV[ClesFormule]{Perimetre}{%
\begin{tikzpicture}[remember picture, overlay]
- \node[draw,dashed,rounded corners,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
+ \node[draw,fill=\ColorFill,dashed,rounded corners,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
\IfStrEqCase{\useKV[ClesFormule]{Surface}}{%
{carré}{\begin{center}
\MPFigureCarre\par
@@ -8883,7 +9767,7 @@ vardef Positions(expr Step)=
Périmètre d'un polygone : \par$\text{Somme des côtés}$
\end{center}
}%
- {rectangle}{
+ {rectangle}{%
\begin{center}
\MPFigureRectangle\par
Périmètre d'un rectangle : \par$2\times(L+\ell)$
@@ -8907,7 +9791,7 @@ vardef Positions(expr Step)=
Périmètre d'un cercle : \par$\pi\times\text{diamètre}$
\end{center}
}%
- {parallélogramme}{
+ {parallélogramme}{%
\begin{center}
\MPFigureParallelogramme\par
Périmètre d'un parallélogramme : \par Somme des côtés
@@ -8917,7 +9801,7 @@ vardef Positions(expr Step)=
\end{tikzpicture}
}{\ifboolKV[ClesFormule]{Aire}{%
\begin{tikzpicture}[remember picture, overlay]
- \node[draw,dashed,rounded corners=2,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
+ \node[draw,fill=\ColorFill,dashed,rounded corners=2,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
\IfStrEqCase{\useKV[ClesFormule]{Surface}}{%
{carré}{\begin{center}
\MPFigureCarre\par
@@ -8963,7 +9847,7 @@ vardef Positions(expr Step)=
\end{tikzpicture}
}{%Volume
\begin{tikzpicture}[remember picture, overlay]
- \node[draw,dashed,rounded corners=2,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
+ \node[draw,fill=\ColorFill,dashed,rounded corners=2,rotate={\useKV[ClesFormule]{Angle}}] (test) at \useKV[ClesFormule]{Ancre} {\begin{minipage}{\RoundedBoxWidth}%
\IfStrEqCase{\useKV[ClesFormule]{Solide}}{%
{boule}{\begin{center}
\MPFigureSphere\par
@@ -9012,10 +9896,10 @@ vardef Positions(expr Step)=
}
}
-%%%%%%%%%%
-%%% Proba
-%%%%%%%%%%
-\setKVdefault[ClesProba]{Echelle=false,Arbre=false,Branche=2,Angle=60,Rayon=0.25,LongueurEchelle=5,Affichage=0,Grille=0}
+%%%
+% Proba
+%%%
+\setKVdefault[ClesProba]{Echelle=false,Arbre=false,Branche=2,Angle=60,Rayon=0.25,LongueurEchelle=5,Affichage=0,Grille=1}
\def\Updatetoksproba#1/#2\nil{\addtotok\toklistepointproba{"#1","\footnotesize #2",}}
\def\Updatetoksprobaechelle#1/#2/#3\nil{\addtotok\toklistepointproba{#1,#2,"#3",}}
@@ -9091,7 +9975,7 @@ vardef Positions(expr Step)=
dotlabel.top("",C[k]);
fi;
if (#3>2):
- label.bot(TEX("$\frac{"&decimal(num)&"}{"&decimal(deno)&"}$"),C[k]-u*(0,0.5));%Le \noexpand est nécessaire pour éviter un problème à la compilation, dû à l'expansion du \frac par gmp.
+ label.bot(TEX("$\frac{"&decimal(num)&"}{"&decimal(deno)&"}$"),C[k]-u*(0,0.5));
fi;
k:=k+1;
fi;
@@ -9271,10 +10155,10 @@ vardef Positions(expr Step)=
}
}
-%%%%%%%%%%%%%%
-%%%Reperage
-%%%%%%%%%%%%%%
-\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AffichageNom=false,AffichageCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,EchelleEspace=50,CouleurCoord=black}
+%%%
+% Reperage
+%%%
+\setKVdefault[ClesReperage]{Unitex=1,Pasx=1,Unitey=1,Pasy=1,Unitez=1,Pasz=1,DemiDroite=false,Droite=false,Plan=false,Trace=false,ListeSegment={},Espace=false,Sphere=false,AffichageNom=false,AffichageGrad=false,AffichageAbs=0,AffichageCoord=false,LectureCoord=false,ValeurUnitex=1,ValeurUnitey=1,ValeurOrigine=0,NomOrigine=O,EchelleEspace=50,CouleurCoord=black}
% ValeurOrigine permet de faire des morceaux de demi-droite graduée en passant par droite :)
\def\Updatetoksdroite#1/#2\nil{\addtotok\toklistepointdroite{#1,"#2",}}
@@ -9565,46 +10449,44 @@ vardef Positions(expr Step)=
}%
% Pour construire le repère du plan
-\def\buildrepere{%
+\def\buildreperenew{%
\toklistepointrepere{}%
\foreachitem\compteur\in\ListePointRepere{\expandafter\Updatetoksrepere\compteur\nil}%
\ifboolKV[ClesReperage]{Trace}{%
\[\MPPlanTrace{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\the\toklistepointrepere}{2}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurUnitey}}{\useKV[ClesReperage]{ListeSegment}}\]%
}{%
- \ifboolKV[ClesReperage]{AffichageNom}{%
- \ifboolKV[ClesReperage]{AffichageCoord}{%
- \[\MPPlan{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\the\toklistepointrepere}{3}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurUnitey}}\]%
- }{%
- \[\MPPlan{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\the\toklistepointrepere}{2}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurUnitey}}\]%
- }
- }{%
- \ifboolKV[ClesReperage]{AffichageCoord}{%
- \[\MPPlan{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\the\toklistepointrepere}{1}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurUnitey}}\]%
- }{%
- \[\MPPlan{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\useKV[ClesReperage]{Unitey}}{\useKV[ClesReperage]{Pasy}}{\the\toklistepointrepere}{0}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurUnitey}}\]%
- }
- }%
+ \xdef\AfficheNom{0}\ifboolKV[ClesReperage]{AffichageNom}{\ifboolKV[ClesReperage]{LectureCoord}{\xdef\AfficheNom{3}}{\xdef\AfficheNom{2}}}{\ifboolKV[ClesReperage]{LectureCoord}{\xdef\AfficheNom{1}}{}}%
+ \xdef\AfficheGrad{0}\ifboolKV[ClesReperage]{AffichageGrad}{\xdef\AfficheGrad{1}}{}%
+ \xdef\AfficheCoord{\useKV[ClesReperage]{AffichageAbs}}%
+ \MPPlannew{(\useKV[ClesReperage]{Unitex},\useKV[ClesReperage]{Pasx})}{(\useKV[ClesReperage]{Unitey},\useKV[ClesReperage]{Pasy})}{\the\toklistepointrepere}{\AfficheNom}{\AfficheCoord}{\AfficheGrad}{(\useKV[ClesReperage]{ValeurUnitex},\useKV[ClesReperage]{ValeurUnitey})}%
}%
}
-\def\MPPlan#1#2#3#4#5#6#7#8{%
+\def\MPPlannew#1#2#3#4#5#6#7{%
+ %#1 : Unitex, pasx
+ %#2 : unitey, pasy
+ %#3 : liste de points
+ %#4 : Affichage nom + lecture graphique
+ %#5 : Affichage des (abscisses/ordonnées)
+ %#6 : Graduation complète ?
+ %#7 : (unitex,unitey)
\ifluatex
\begin{mplibcode}
maxx:=-4000;
- minx=4000;
- unitex:=#1*cm;
- pasx=#2;
- unitpx:=unitex/pasx;
- maxy:=-4000;
- miny:=4000;
- unitey:=#3*cm;
- pasy:=#4;
- unitpy:=unitey/pasy;
- n:=1;
- vardef toto(text t)=
+ minx=4000;
+ unitex:=(xpart(#1))*cm;
+ pasx=ypart(#1);
+ unitpx:=unitex/pasx;
+ maxy:=-4000;
+ miny:=4000;
+ unitey:=(xpart(#2))*cm;
+ pasy:=ypart(#2);
+ unitpy:=unitey/pasy;
+ n:=1;
+ vardef toto(text t)=
for p_=t:
if (n mod 3)=1:
- if p_>maxx:
+ if p_>maxx:
maxx:=p_;
fi;
if p_<minx:
@@ -9623,22 +10505,22 @@ vardef Positions(expr Step)=
endfor;
maxx:=maxx+1;
minx:=minx-1;
- if maxx<(#2+1):
- maxx:=#2+1;
+ if maxx<(ypart(#1)+1):
+ maxx:=ypart(#1)+1;
fi;
- if minx>(-#2-1):
- minx:=-#2-1;
+ if minx>(-ypart(#1)-1):
+ minx:=-ypart(#1)-1;
fi;
maxy:=maxy+1;
miny:=miny-1;
- if maxy<(#4+1):
- maxy:=#2+1;
+ if maxy<(ypart(#2)+1):
+ maxy:=ypart(#2)+1;
fi;
- if miny>(-#4-1):
- miny:=-#4-1;
+ if miny>(-ypart(#2)-1):
+ miny:=-ypart(#2)-1;
fi;
enddef;
- toto(#5);
+ toto(#3);
Figure((minx-1)*unitpx,(miny-1)*unitpy,(maxx+1)*unitpx,(maxy+1)*unitpy);
pair A,B,C,D,E;
A=(0,0);
@@ -9654,14 +10536,32 @@ vardef Positions(expr Step)=
endfor;
drawarrow (B+(-0.75*unitpx,0))--(C+(0.75*unitpx,0));
drawarrow (D+(0,-0.75*unitpy))--(E+(0,0.75*unitpy));
- dotlabel.bot(TEX("\footnotesize\num{"&decimal(#7)&"}"),(unitex,0));
- dotlabel.lft(TEX("\footnotesize\num{"&decimal(#8)&"}"),(0,unitey));
- label.llft(btex 0 etex,A);
+ % graduation complète ou pas ?
+ label.llft(btex \footnotesize 0 etex,A);
+ if #6>0:
+ for k=minx upto maxx:
+ if (xpart((k*unitex,0))>xpart(B+(-0.75*unitpx,0))) and (xpart((k*unitex,0))<xpart(C+(0.75*unitpx,0))):
+ if k<>0:
+ dotlabel.lrt(TEX("\footnotesize\num{"&decimal(k)&"}"),(k*unitex,0));
+ fi;
+ fi;
+ endfor;
+ for k=miny upto maxy:
+ if (ypart((0,k*unitey))>ypart(D+(0,-0.75*unitpy))) and (ypart((0,k*unitey))<ypart(E+(0,0.75*unitpy))):
+ if k<>0:
+ dotlabel.ulft(TEX("\footnotesize\num{"&decimal(k)&"}"),(0,k*unitey));
+ fi;
+ fi;
+ endfor;
+ else:
+ dotlabel.lrt(TEX("\footnotesize\num{"&decimal(xpart(#7))&"}"),(unitex,0));
+ dotlabel.ulft(TEX("\footnotesize\num{"&decimal(ypart(#7))&"}"),(0,unitey));
+ fi;
% apparition du nom des points ou pas
m_c:=m_c*3;
marque_p:="croix";
vardef tata(text t)=%on place les points
- if #6>0:
+ if #4>0:
n:=1;
k:=0;%pour retenir la coordonnée en x
l:=0;%pour retenir la coordonnée en y
@@ -9677,15 +10577,14 @@ vardef Positions(expr Step)=
fi;
fi;
if (n mod 3)=0:
- if #6>1:
- message("p = "&p_);
- % if p_<>"":
+ if #4>1:
+ if p_<>"":
if (k>0) and (l>0):
label.urt(TEX(p_),(k*unitpx,l*unitpy));
fi;
- if (k=0) and (l>0):
- label.urt(TEX(p_),(k*unitpx,l*unitpy));
- fi;
+ if (k=0) and (l>0):
+ label.urt(TEX(p_),(k*unitpx,l*unitpy));
+ fi;
if (k>0) and (l=0):
label.urt(TEX(p_),(k*unitpx,l*unitpy));
fi;
@@ -9705,35 +10604,92 @@ vardef Positions(expr Step)=
label.lrt(TEX(p_),(k*unitpx,l*unitpy));
fi;
pointe((k*unitpx,l*unitpy));
- % fi;
fi;
- if (#6=1) or (#6=3):
+ fi;
+ if (#4=1) or (#4=3):
draw (0,l*unitpy)--(k*unitpx,l*unitpy)--(k*unitpx,0) dashed evenly;
fi;
fi;
n:=n+1;
endfor;
fi;
+ if #5=2:
+ n:=1;
+ k:=0;%pour retenir la coordonnée en x
+ l:=0;%pour retenir la coordonnée en y
+ for p_=t:
+ if (n mod 3)=1:
+ if numeric p_:
+ k:=p_;
+ fi;
+ fi;
+ if (n mod 3)=2:
+ if numeric p_:
+ l:=p_;
+ fi;
+ fi;
+ if (n mod 3)=0:
+ if p_<>"":
+ if (k mod pasx)<>0:
+ label.lrt(TEX("\footnotesize$\frac{\num{"&decimal(k)&"}}{\num{"&decimal(pasx)&"}}$"),(k*unitpx,0));
+ else:
+ label.lrt(TEX("\footnotesize\num{\fpeval{"&decimal(k)&"/"&decimal(pasx)&"}}"),(k*unitpx,0));
+ fi;
+ if (l mod pasy)<>0:
+ label.ulft(TEX("\footnotesize$\frac{\num{"&decimal(l)&"}}{\num{"&decimal(pasy)&"}}$"),(0,l*unitpy));
+ else:
+ label.ulft(TEX("\footnotesize\num{\fpeval{"&decimal(l)&"/"&decimal(pasy)&"}}"),(0,l*unitpy));
+ fi;
+ pointe((k*unitpx,0),(0,l*unitpy));
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ elseif #5=1:
+ n:=1;
+ k:=0;%pour retenir la coordonnée en x
+ l:=0;%pour retenir la coordonnée en y
+ for p_=t:
+ if (n mod 3)=1:
+ if numeric p_:
+ k:=p_;
+ fi;
+ fi;
+ if (n mod 3)=2:
+ if numeric p_:
+ l:=p_;
+ fi;
+ fi;
+ if (n mod 3)=0:
+ if p_<>"":
+ label.lrt(TEX("\footnotesize\num{\fpeval{"&decimal(k)&"/"&decimal(pasx)&"}}"),(k*unitpx,0));
+ label.ulft(TEX("\footnotesize\num{\fpeval{"&decimal(l)&"/"&decimal(pasy)&"}}"),(0,l*unitpy));
+ pointe((k*unitpx,0),(0,l*unitpy));
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
enddef;
- tata(#5);
+ tata(#3);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfC-Geometrie;}]
- maxx:=-4000;
- minx=4000;
- unitex:=#1*cm;
- pasx=#2;
- unitpx:=unitex/pasx;
- maxy:=-4000;
- miny:=4000;
- unitey:=#3*cm;
- pasy:=#4;
- unitpy:=unitey/pasy;
- n:=1;
- vardef toto(text t)=
+ \begin{mpost}
+ maxx:=-4000;
+ minx=4000;
+ unitex:=(xpart(#1))*cm;
+ pasx=ypart(#1);
+ unitpx:=unitex/pasx;
+ maxy:=-4000;
+ miny:=4000;
+ unitey:=(xpart(#2))*cm;
+ pasy:=ypart(#2);
+ unitpy:=unitey/pasy;
+ n:=1;
+ vardef toto(text t)=
for p_=t:
if (n mod 3)=1:
- if p_>maxx:
+ if p_>maxx:
maxx:=p_;
fi;
if p_<minx:
@@ -9752,22 +10708,22 @@ vardef Positions(expr Step)=
endfor;
maxx:=maxx+1;
minx:=minx-1;
- if maxx<(#2+1):
- maxx:=#2+1;
+ if maxx<(ypart(#1)+1):
+ maxx:=ypart(#1)+1;
fi;
- if minx>(-#2-1):
- minx:=-#2-1;
+ if minx>(-ypart(#1)-1):
+ minx:=-ypart(#1)-1;
fi;
maxy:=maxy+1;
miny:=miny-1;
- if maxy<(#4+1):
- maxy:=#2+1;
+ if maxy<(ypart(#2)+1):
+ maxy:=ypart(#2)+1;
fi;
- if miny>(-#4-1):
- miny:=-#4-1;
+ if miny>(-ypart(#2)-1):
+ miny:=-ypart(#2)-1;
fi;
enddef;
- toto(#5);
+ toto(#3);
Figure((minx-1)*unitpx,(miny-1)*unitpy,(maxx+1)*unitpx,(maxy+1)*unitpy);
pair A,B,C,D,E;
A=(0,0);
@@ -9783,14 +10739,32 @@ vardef Positions(expr Step)=
endfor;
drawarrow (B+(-0.75*unitpx,0))--(C+(0.75*unitpx,0));
drawarrow (D+(0,-0.75*unitpy))--(E+(0,0.75*unitpy));
- dotlabel.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#7)&"}"),(unitex,0));
- dotlabel.lft(LATEX("\noexpand\footnotesize\num{"&decimal(#8)&"}"),(0,unitey));
- label.llft(btex 0 etex,A);
+ % graduation complète ou pas ?
+ label.llft(btex \noexpand\footnotesize 0 etex,A);
+ if #6>0:
+ for k=minx upto maxx:
+ if (xpart((k*unitex,0))>xpart(B+(-0.75*unitpx,0))) and (xpart((k*unitex,0))<xpart(C+(0.75*unitpx,0))):
+ if k<>0:
+ dotlabel.lrt(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(k)&"}"),(k*unitex,0));
+ fi;
+ fi;
+ endfor;
+ for k=miny upto maxy:
+ if (ypart((0,k*unitey))>ypart(D+(0,-0.75*unitpy))) and (ypart((0,k*unitey))<ypart(E+(0,0.75*unitpy))):
+ if k<>0:
+ dotlabel.ulft(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(k)&"}"),(0,k*unitey));
+ fi;
+ fi;
+ endfor;
+ else:
+ dotlabel.lrt(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(xpart(#7))&"}"),(unitex,0));
+ dotlabel.ulft(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(ypart(#7))&"}"),(0,unitey));
+ fi;
% apparition du nom des points ou pas
m_c:=m_c*3;
marque_p:="croix";
vardef tata(text t)=%on place les points
- if #6>0:
+ if #4>0:
n:=1;
k:=0;%pour retenir la coordonnée en x
l:=0;%pour retenir la coordonnée en y
@@ -9806,7 +10780,8 @@ vardef Positions(expr Step)=
fi;
fi;
if (n mod 3)=0:
- if #6>1:
+ if #4>1:
+ if p_<>"":
if (k>0) and (l>0):
label.urt(LATEX(p_),(k*unitpx,l*unitpy));
fi;
@@ -9833,15 +10808,73 @@ vardef Positions(expr Step)=
fi;
pointe((k*unitpx,l*unitpy));
fi;
- if (#6=1) or (#6=3):
+ fi;
+ if (#4=1) or (#4=3):
draw (0,l*unitpy)--(k*unitpx,l*unitpy)--(k*unitpx,0) dashed evenly;
fi;
fi;
n:=n+1;
endfor;
fi;
+ if #5=2:
+ n:=1;
+ k:=0;%pour retenir la coordonnée en x
+ l:=0;%pour retenir la coordonnée en y
+ for p_=t:
+ if (n mod 3)=1:
+ if numeric p_:
+ k:=p_;
+ fi;
+ fi;
+ if (n mod 3)=2:
+ if numeric p_:
+ l:=p_;
+ fi;
+ fi;
+ if (n mod 3)=0:
+ if p_<>"":
+ if (k mod pasx)<>0:
+ label.lrt(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{"&decimal(k)&"}}{\noexpand\num{"&decimal(pasx)&"}}$"),(k*unitpx,0));
+ else:
+ label.lrt(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(k)&"/"&decimal(pasx)&"}}"),(k*unitpx,0));
+ fi;
+ if (l mod pasy)<>0:
+ label.ulft(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{"&decimal(l)&"}}{\noexpand\num{"&decimal(pasy)&"}}$"),(0,l*unitpy));
+ else:
+ label.ulft(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(l)&"/"&decimal(pasy)&"}}"),(0,l*unitpy));
+ fi;
+ pointe((k*unitpx,0),(0,l*unitpy));
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ elseif #5=1:
+ n:=1;
+ k:=0;%pour retenir la coordonnée en x
+ l:=0;%pour retenir la coordonnée en y
+ for p_=t:
+ if (n mod 3)=1:
+ if numeric p_:
+ k:=p_;
+ fi;
+ fi;
+ if (n mod 3)=2:
+ if numeric p_:
+ l:=p_;
+ fi;
+ fi;
+ if (n mod 3)=0:
+ if p_<>"":
+ label.lrt(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(k)&"/"&decimal(pasx)&"}}"),(k*unitpx,0));
+ label.ulft(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(l)&"/"&decimal(pasy)&"}}"),(0,l*unitpy));
+ pointe((k*unitpx,0),(0,l*unitpy));
+ fi;
+ fi;
+ n:=n+1;
+ endfor;
+ fi;
enddef;
- tata(#5);
+ tata(#3);
\end{mpost}
\fi
}
@@ -10146,163 +11179,232 @@ vardef Positions(expr Step)=
\fi
}
-% Pour construire la demi-droite graduée
-\def\builddemidroite{%
- \toklistepointdroite{}%
- \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdroite\compteur\nil}%
- \ifboolKV[ClesReperage]{DemiDroite}{%
- \ifboolKV[ClesReperage]{AffichageNom}{%
- \[\MPDemiGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{1}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}\]%
- }{%
- \[\MPDemiGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{0}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}\]%
- }
- }{%
- \ifboolKV[ClesReperage]{AffichageNom}{%
- \[\MPDroiteGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{1}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}\]%
- }{%
- \[\MPDroiteGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{0}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}\]%
- }%
- }%
-}%
-
-\def\MPDemiGraduee#1#2#3#4#5#6{%
- % #1 : unite
+\def\MPDEMIGraduee#1#2#3#4#5#6#7#8{%
+ % #1 : unite
% #2 : pas
% #3 : liste des points à placer en pas. pour gérer le cas des repérages fractionnaires
% #4 : on affiche le nom des points ou pas
% #5 : quelle est la valeur de la longueur unité ?
% #6 : la valeur de l'unité (ne sert à rien ici, mais en prévision
% de Droite)
+ % #7 : on affiche les abscisses ou pas : 0 non, 1 oui, 2 fraction
+ % #8 : on affiche tous les multiples de la graduation "principale"
\ifluatex
+ \mplibforcehmode
\begin{mplibcode}
maxx:=0;
- unitex:=#1*cm;
- pasx:=#2;
- unitp:=unitex/pasx;%unité de déplacement
- vardef toto(text t)=%On détermine le nombre "d'unités" à placer
- for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- fi;
- endfor;
- maxx:=maxx+1;
- if maxx<(#2+1):
- maxx:=#2+1;
- fi;
- enddef;
- toto(#3);
- Figure(-u,-u,(maxx+0.75)*unitp,u);
- pair A,B;
- A=(0,0);
- B=unitp*(maxx,0);
- drawarrow A--(B+(0.75*unitp,0));
- %marquage secondaire
- marque_s:=marque_s/3;
- for k=0 step 2 until (maxx):
- draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
- endfor;
- drawoptions();
- % marquage primaire
- marque_s:=marque_s*3;
- for k=0 step pasx until (maxx-1):
- draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
- endfor;
- % marquage des points
- m_c:=m_c*3;
- marque_p:="croix";
- labeloffset:=labeloffset*2;
- dotlabel.bot(TEX("\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
- label.bot(TEX("\footnotesize\num{"&decimal(#6)&"}"),A);
- vardef tata(text t)=%on place les points
- if #4>0:
- for p_=t:
- if numeric p_:
- label("",unitp*(p_,0));
- k:=p_;
- fi;
- if string p_:
- if p_<>"":
- label.top(TEX(p_),unitp*(k,0));
- pointe(unitp*(k,0));
- fi;
- fi;
- endfor;
- fi;
- enddef;
- tata(#3);
+ unitex:=#1*cm;
+ pasx:=#2;
+ unitp:=unitex/pasx;%unité de déplacement
+ vardef toto(text t)=%On détermine le nombre "d'unités" à placer
+ for p_=t:
+ if numeric p_:
+ if p_>maxx:
+ maxx:=p_;
+ fi;
+ fi;
+ endfor;
+ maxx:=maxx+1;
+ if maxx<(#2+1):
+ maxx:=#2+1;
+ fi;
+ enddef;
+ toto(#3);
+ Figure(-u,-u,(maxx+0.75)*unitp,u);
+ pair A,B;
+ A=(0,0);
+ B=unitp*(maxx,0);
+ drawarrow A--(B+(0.75*unitp,0));
+ % marquage secondaire
+ marque_s:=marque_s/3;
+ for k=0 step 2 until (maxx):
+ draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
+ endfor;
+ drawoptions();
+ % marquage primaire
+ marque_s:=marque_s*3;
+ for k=0 step pasx until (maxx-1):
+ draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
+ endfor;
+ % marquage des points
+ m_c:=m_c*3;
+ marque_p:="croix";
+ labeloffset:=labeloffset*2;
+ dotlabel.bot(TEX("\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
+ label.bot(TEX("\footnotesize\num{"&decimal(#6)&"}"),A);
+ if #8>0:
+ for k=2 upto maxx:
+ dotlabel.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}"),unitex*(k,0));
+ endfor;
+ fi;
+ vardef tata(text t)=%on place les points
+ if #4>0:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ label.top(TEX(p_),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
+ if #7=2:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ if ((#5*k) mod pasx)<>0:
+ label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(k,0));
+ else:
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ fi;
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ elseif #7=1:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
+ enddef;
+ tata(#3);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfC-Geometrie;}]
- maxx:=0;
- unitex:=#1*cm;
- pasx:=#2;
- unitp:=unitex/pasx;%unité de déplacement
- vardef toto(text t)=%On détermine le nombre "d'unités" à placer
- for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- fi;
- endfor;
- maxx:=maxx+1;
- if maxx<(#2+1):
- maxx:=#2+1;
- fi;
- enddef;
- toto(#3);
- Figure(-u,-u,(maxx+0.75)*unitp,u);
- pair A,B;
- A=(0,0);
- B=unitp*(maxx,0);
- drawarrow A--(B+(0.75*unitp,0));
- %marquage secondaire
- marque_s:=marque_s/3;
- for k=0 step 2 until (maxx):
- draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
- endfor;
- drawoptions();
- % marquage primaire
- marque_s:=marque_s*3;
- for k=0 step pasx until (maxx-1):
- draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
- endfor;
- % marquage des points
- m_c:=m_c*3;
- marque_p:="croix";
- labeloffset:=labeloffset*2;
- dotlabel.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
- label.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#6)&"}"),A);
- vardef tata(text t)=%on place les points
- if #4>0:
- for p_=t:
- if numeric p_:
- label("",unitp*(p_,0));
- k:=p_;
- fi;
- if string p_:
- label.top(LATEX(p_),unitp*(k,0));
- if p_<>"":
- pointe(unitp*(k,0));
- fi;
- fi;
- endfor;
- fi;
- enddef;
- tata(#3);
-\end{mpost}
-\fi
+ \begin{mpost}
+ maxx:=0;
+ unitex:=#1*cm;
+ pasx:=#2;
+ unitp:=unitex/pasx;%unité de déplacement
+ vardef toto(text t)=%On détermine le nombre "d'unités" à placer
+ for p_=t:
+ if numeric p_:
+ if p_>maxx:
+ maxx:=p_;
+ fi;
+ fi;
+ endfor;
+ maxx:=maxx+1;
+ if maxx<(#2+1):
+ maxx:=#2+1;
+ fi;
+ enddef;
+ toto(#3);
+ Figure(-u,-u,(maxx+0.75)*unitp,u);
+ pair A,B;
+ A=(0,0);
+ B=unitp*(maxx,0);
+ drawarrow A--(B+(0.75*unitp,0));
+ % marquage secondaire
+ marque_s:=marque_s/3;
+ for k=0 step 2 until (maxx):
+ draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
+ endfor;
+ drawoptions();
+ % marquage primaire
+ marque_s:=marque_s*3;
+ for k=0 step pasx until (maxx-1):
+ draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
+ endfor;
+ % marquage des points
+ m_c:=m_c*3;
+ marque_p:="croix";
+ labeloffset:=labeloffset*2;
+ dotlabel.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
+ label.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#6)&"}"),A);
+ if #8>0:
+ for k=2 upto maxx:
+ dotlabel.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}"),unitex*(k,0));
+ endfor;
+ fi;
+ vardef tata(text t)=%on place les points
+ if #4>0:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ label.top(LATEX(p_),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
+ if #7=2:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ if ((#5*k) mod pasx)<>0:
+ label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(k,0));
+ else:
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ fi;
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ elseif #7=1:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
+ enddef;
+ tata(#3);
+ \end{mpost}
+ \fi
}
-\def\MPDroiteGraduee#1#2#3#4#5#6{%
- % #1 : unite
- % #2 : pas
- % #3 : liste des points à placer en pas. pour gérer le cas des repérages fractionnaires
- % #4 : on affiche le nom des points ou pas
- % #5 : quelle est la valeur de la longueur unité ?
+% Pour construire les droite/demi-droite graduée
+\def\builddemidroitenew{%
+ \toklistepointdroite{}%
+ \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdroite\compteur\nil}%
+ \xdef\AffichageNom{0}\ifboolKV[ClesReperage]{AffichageNom}{\xdef\AffichageNom{1}}{}
+ \xdef\AffichageCoord{\useKV[ClesReperage]{AffichageAbs}}
+ \xdef\AffichageGrad{0}\ifboolKV[ClesReperage]{AffichageGrad}{\xdef\AffichageGrad{1}}{}
+ \ifboolKV[ClesReperage]{DemiDroite}{%
+ \[\MPDEMIGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{\AffichageNom}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}{\AffichageCoord}{\AffichageGrad}\]%
+ }{%
+ \[\MPDROITEGraduee{\useKV[ClesReperage]{Unitex}}{\useKV[ClesReperage]{Pasx}}{\the\toklistepointdroite}{\AffichageNom}{\useKV[ClesReperage]{ValeurUnitex}}{\useKV[ClesReperage]{ValeurOrigine}}{\AffichageCoord}{\AffichageGrad}\]%
+ }%
+}%
+
+
+\def\MPDROITEGraduee#1#2#3#4#5#6#7#8{%
+ % #1 : unite
+ % #2 : pas
+ % #3 : liste des points à placer en pas. pour gérer le cas des repérages fractionnaires
+ % #4 : on affiche le nom des points ou pas
+ % #5 : quelle est la valeur de la longueur unité ?
+ % #6 : la valeur de l'unité
+ % #7 : on affiche les abscisses ou pas : 0 non, 1 oui, 2 fraction
+ % #8 : on affiche tous les multiples de la graduation "principale"
\ifluatex
+ \mplibforcehmode
\begin{mplibcode}
maxx:=0;
minx:=4000;
@@ -10310,67 +11412,71 @@ vardef Positions(expr Step)=
pasx:=#2;
unitp:=unitex/pasx;%unité de déplacement
vardef toto(text t)=%On détermine le nombre "d'unités" à placer
- for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- if p_<minx:
- minx:=p_;
- fi;
- fi;
- endfor;
- maxx:=maxx+1;
- minx:=minx-1;
- if maxx<(#2+1):
- maxx:=#2+1;
- fi;
- if minx>(-#2-1):
- minx:=-#2-1;
- fi;
+ for p_=t:
+ if numeric p_:
+ if p_>maxx:
+ maxx:=p_;
+ fi;
+ if p_<minx:
+ minx:=p_;
+ fi;
+ fi;
+ endfor;
+ maxx:=maxx+(pasx div 2);
+ minx:=minx-(pasx div 2);
+ if maxx<(#2+1):
+ maxx:=#2+(pasx-1);
+ fi;
+ if minx>(-#2-1):
+ minx:=-#2-(pasx-1);
+ fi;
enddef;
toto(#3);
- Figure((minx-1)*u,-u,(maxx+1)*unitp,u);
+ Figure((minx-1)*unitp,-u,(maxx+1)*unitp,u);
pair A,B,C;
A=(0,0);
B=unitp*(maxx,0);
C=unitp*(minx,0);
drawarrow (C+unitp*(-0.75,0))--(B+unitp*(0.75,0));
+ % marquage secondaire
marque_s:=marque_s/3;
labeloffset:=labeloffset*2;
if ((maxx-minx) mod 2)=0:
-% show maxx; show minx;
for k=(minx+1) step 2 until (maxx-1):
draw marquedemidroite(C,B);
draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
endfor;
else:
- % show maxx; show minx;
for k=(minx) step 2 until (maxx-1):
draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
endfor;
fi;
- % marquage primaire%%%%%%%%%%%%%%%%%%%%%%%%
- marque_s:=marque_s*3;
- for k=0 step pasx until (maxx-pasx):
- draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
- endfor;
- for k=0 step -pasx until (minx+pasx):
- draw marquesegment((k/maxx)[A,B],((k-pasx)/maxx)[A,B]);
- endfor;
+ % marquage primaire
+ marque_s:=marque_s*3;
+ for k=0 step pasx until (maxx-pasx):
+ draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
+ endfor;
+ for k=0 step -pasx until (minx+pasx):
+ draw marquesegment((k/maxx)[A,B],((k-pasx)/maxx)[A,B]);
+ endfor;
+ % marquage des points
m_c:=m_c*3;
marque_p:="croix";
- dotlabel.bot(TEX("\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
+ labeloffset:=labeloffset*2;
+ label.bot(TEX("\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
label.bot(TEX("\footnotesize\num{"&decimal(#6)&"}"),A);
- if #5=1:
- label.top(TEX("I"),unitex*(1,0));
+ if #8>0:
+ for k=2 upto maxx:
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
+ endfor;
+ for k=minx upto -1:
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
+ endfor;
fi;
- label.top(TEX("O"),A);
vardef tata(text t)=%on place les points
if #4>0:
for p_=t:
if numeric p_:
- label("",unitp*(p_,0));
k:=p_;
fi;
if string p_:
@@ -10381,83 +11487,145 @@ vardef Positions(expr Step)=
fi;
endfor;
fi;
+ if #7=2:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ if ((#5*k) mod pasx)<>0:
+ label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(k,0));
+ else:
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ fi;
+ pointe(unitp*(k-#6,0));
+ fi;
+ fi;
+ endfor;
+ elseif #7=1:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
enddef;
tata(#3);
\end{mplibcode}
\else
- \begin{mpost}[mpsettings={input PfC-Geometrie;}]
+ \begin{mpost}
maxx:=0;
minx:=4000;
unitex:=#1*cm;
pasx:=#2;
unitp:=unitex/pasx;%unité de déplacement
vardef toto(text t)=%On détermine le nombre "d'unités" à placer
- for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- if p_<minx:
- minx:=p_;
- fi;
- fi;
- endfor;
- maxx:=maxx+1;
- minx:=minx-1;
- if maxx<(#2+1):
- maxx:=#2+1;
- fi;
- if minx>(-#2-1):
- minx:=-#2-1;
- fi;
+ for p_=t:
+ if numeric p_:
+ if p_>maxx:
+ maxx:=p_;
+ fi;
+ if p_<minx:
+ minx:=p_;
+ fi;
+ fi;
+ endfor;
+ maxx:=maxx+(pasx div 2);
+ minx:=minx-(pasx div 2);
+ if maxx<(#2+1):
+ maxx:=#2+(pasx-1);
+ fi;
+ if minx>(-#2-1):
+ minx:=-#2-(pasx-1);
+ fi;
enddef;
toto(#3);
- Figure((minx-1)*u,-u,(maxx+1)*unitp,u);
+ Figure((minx-1)*unitp,-u,(maxx+1)*unitp,u);
pair A,B,C;
A=(0,0);
B=unitp*(maxx,0);
C=unitp*(minx,0);
drawarrow (C+unitp*(-0.75,0))--(B+unitp*(0.75,0));
+ % marquage secondaire
marque_s:=marque_s/3;
labeloffset:=labeloffset*2;
if ((maxx-minx) mod 2)=0:
-% show maxx; show minx;
for k=(minx+1) step 2 until (maxx-1):
draw marquedemidroite(C,B);
draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
endfor;
else:
- % show maxx; show minx;
for k=(minx) step 2 until (maxx-1):
draw marquesegment((k/maxx)[A,B],((k+1)/maxx)[A,B]);
endfor;
fi;
- % marquage primaire%%%%%%%%%%%%%%%%%%%%%%%%
- marque_s:=marque_s*3;
- for k=0 step pasx until (maxx-pasx):
- draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
- endfor;
- for k=0 step -pasx until (minx+pasx):
- draw marquesegment((k/maxx)[A,B],((k-pasx)/maxx)[A,B]);
- endfor;
+ % marquage primaire
+ marque_s:=marque_s*3;
+ for k=0 step pasx until (maxx-pasx):
+ draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
+ endfor;
+ for k=0 step -pasx until (minx+pasx):
+ draw marquesegment((k/maxx)[A,B],((k-pasx)/maxx)[A,B]);
+ endfor;
+ % marquage des points
m_c:=m_c*3;
marque_p:="croix";
- dotlabel.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
- label.bot(LATEX("\noexpand\footnotesize\num{"&decimal(#6)&"}"),A);
- if #5=1:
- label.top(LATEX("I"),unitex*(1,0));
+ labeloffset:=labeloffset*2;
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(#5)&"}"),unitex*(1,0));
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(#6)&"}"),A);
+ if #8>0:
+ for k=2 upto maxx:
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
+ endfor;
+ for k=minx upto -1:
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
+ endfor;
fi;
- label.top(LATEX("O"),A);
vardef tata(text t)=%on place les points
if #4>0:
for p_=t:
if numeric p_:
- label("",unitp*(p_,0));
k:=p_;
fi;
if string p_:
+ if p_<>"":
label.top(LATEX(p_),unitp*(k,0));
+ pointe(unitp*(k,0));
+ fi;
+ fi;
+ endfor;
+ fi;
+ if #7=2:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
+ if p_<>"":
+ if ((#5*k) mod pasx)<>0:
+ label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(k,0));
+ else:
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
+ fi;
+ pointe(unitp*(k-#6,0));
+ fi;
+ fi;
+ endfor;
+ elseif #7=1:
+ for p_=t:
+ if numeric p_:
+ k:=p_;
+ fi;
+ if string p_:
if p_<>"":
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
pointe(unitp*(k,0));
fi;
fi;
@@ -10468,7 +11636,7 @@ vardef Positions(expr Step)=
\end{mpost}
\fi
}
-
+
\newcommand\Reperage[2][]{%
\useKVdefault[ClesReperage]%
\setKV[ClesReperage]{#1}%
@@ -10481,51 +11649,146 @@ vardef Positions(expr Step)=
}{\ifboolKV[ClesReperage]{Plan}{%
\setsepchar[*]{,*/}\ignoreemptyitems%
\readlist*\ListePointRepere{#2}%
- \buildrepere%
- }{\ifboolKV[ClesReperage]{Droite}{%
- \setsepchar[*]{,*/}\ignoreemptyitems%
- \readlist*\ListePointDroite{#2}%
- \builddemidroite%
- }{%
- \setsepchar[*]{,*/}\ignoreemptyitems%
- \readlist*\ListePointDroite{#2}%
- \builddemidroite%
- }%
+ \buildreperenew%
+ }{%
+ \setsepchar[*]{,*/}\ignoreemptyitems%
+ \readlist*\ListePointDroite{#2}%
+ \builddemidroitenew%
}%
}%
}%
-
-%%%%%%%%
-%% Puissances
-%%%%%%
+%%%
+% Puissances
+%%%
\newcommand\Puissances[2]{%
- \ensuremath{
+ \ensuremath{%
\xintifboolexpr{#2=0}{1}{\xintifboolexpr{#2>0}{\xdef\total{\fpeval{#2-1}}#1\multido{\i=1+1}{\total}{\times#1}}{\xdef\total{\fpeval{-#2-1}}\frac{1}{#1\multido{\i=1+1}{\total}{\times#1}}}}%
- }
+ }%
}
-%%%%%%%%%
+%%%
% Ecritures d'unités
-%%%%%%%%%%
-\setKVdefault[Unites]{m=false,km=false,hm=false,dam=false,dm=false,cm=true,mm=false,g=true,kg=false,hg=false,dag=false,dg=false,cg=false,mg=false,kmh=true,ms=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}
+%%%
+\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,kmh=true,kms=false,ms=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}
+
+%D'apres https://tex.stackexchange.com/questions/38905/time-of-the-day-or-time-period-using-the-package-siunitx
+\ExplSyntaxOn
+\NewDocumentCommand \Temps { o > { \SplitArgument { 5 } { ; } } m }
+{
+ \group_begin:
+ \IfNoValueF {#1}
+ { \keys_set:nn { siunitx } {#1} }
+ \siunitx_hms_output:nnn #2
+ \group_end:
+}
+\cs_new_protected:Npn \siunitx_hms_output:nnn #1#2#3#4#5#6
+{
+ \IfNoValueF {#1}
+ {
+ \tl_if_blank:nF {#1}
+ {
+ \SI {#1} { \annee\xintifboolexpr{#1>1}{s}{} }
+ \IfNoValueF {#2} { ~ }
+ }
+ }
+ \IfNoValueF {#2}
+ {
+ \tl_if_blank:nF {#2}
+ {
+ \SI {#2} { \mois }
+ \IfNoValueF {#3} { ~ }
+ }
+ }
+ \IfNoValueF {#3}
+ {
+ \tl_if_blank:nF {#3}
+ {
+ \SI {#3} { \jour }
+ \IfNoValueF {#4} { ~ }
+ }
+ }
+ \IfNoValueF {#4}
+ {
+ \tl_if_blank:nF {#4}
+ {
+ \SI {#4} { \hour }
+ \IfNoValueF {#5} { ~ }
+ }
+ }
+ \IfNoValueF {#5}
+ {
+ \tl_if_blank:nF {#5}
+ {
+ \SI {#5} { \minute }
+ \IfNoValueF {#6} { ~ }
+ }
+ }
+ \IfNoValueF {#6}
+ { \tl_if_blank:nF {#6} { \SI {#6} { \second } } }
+}
+\ExplSyntaxOff
+
+\newcommand\Temp[2][]{%
+ \useKVdefault[Unites]%
+ \setKV[Unites]{#1}%
+ \ifboolKV[Unites]{F}{%
+ \SI{#2}{\fahrenheit}%
+ }{%
+ \ifboolKV[Unites]{K}{%
+ \SI{#2}{\kelvin}%
+ }{%
+ \SI{#2}{\celsius}%
+ }%
+ }%
+}%
+
+\newcommand\Conso[2][]{%
+ \SI{#2}{\kWh}%
+}
+
+\newcommand\Octet[2][]{%
+ \useKVdefault[Unites]%
+ \setKV[Unites]{#1}%
+ \ifboolKV[Unites]{o}{%
+ \SI{#2}{\octet}%
+ }{%
+ \ifboolKV[Unites]{ko}{%
+ \SI{#2}{\kilo\octet}%
+ }{\ifboolKV[Unites]{Mo}{%
+ \SI{#2}{\mega\octet}%
+ }{\ifboolKV[Unites]{To}{%
+ \SI{#2}{\tera\octet}%
+ }{%
+ \SI{#2}{\giga\octet}%
+ }%
+ }%
+ }%
+ }%
+}%
\newcommand\Lg[2][]{%
\useKVdefault[Unites]%
\setKV[Unites]{#1}%
- \ifboolKV[Unites]{km}{%
- \SI{#2}{\km}%
- }{\ifboolKV[Unites]{hm}{%
- \SI{#2}{\hecto\metre}%
- }{\ifboolKV[Unites]{dam}{%
- \SI{#2}{\deca\metre}%
- }{\ifboolKV[Unites]{dm}{%
- \SI{#2}{\dm}%
- }{\ifboolKV[Unites]{m}{%
- \SI{#2}{\m}%
- }{\ifboolKV[Unites]{mm}{%
- \SI{#2}{\mm}%
- }{\SI{#2}{\cm}%
+ \ifboolKV[Unites]{nm}{%
+ \SI{#2}{\nm}%
+ }{\ifboolKV[Unites]{um}{%
+ \SI{#2}{\um}%
+ }{\ifboolKV[Unites]{km}{%
+ \SI{#2}{\km}%
+ }{\ifboolKV[Unites]{hm}{%
+ \SI{#2}{\hecto\metre}%
+ }{\ifboolKV[Unites]{dam}{%
+ \SI{#2}{\deca\metre}%
+ }{\ifboolKV[Unites]{dm}{%
+ \SI{#2}{\dm}%
+ }{\ifboolKV[Unites]{m}{%
+ \SI{#2}{\m}%
+ }{\ifboolKV[Unites]{mm}{%
+ \SI{#2}{\mm}%
+ }{\SI{#2}{\cm}%
+ }%
+ }%
}%
}%
}%
@@ -10537,19 +11800,32 @@ vardef Positions(expr Step)=
\newcommand\Masse[2][]{%
\useKVdefault[Unites]%
\setKV[Unites]{#1}%
- \ifboolKV[Unites]{kg}{%
- \SI{#2}{\kg}%
- }{\ifboolKV[Unites]{hg}{%
- \SI{#2}{\hecto\gram}%
- }{\ifboolKV[Unites]{dag}{%
- \SI{#2}{\deca\gram}%
- }{\ifboolKV[Unites]{dg}{%
- \SI{#2}{\deci\gram}%
- }{\ifboolKV[Unites]{cg}{%
- \SI{#2}{\centi\gram}%
- }{\ifboolKV[Unites]{mg}{%
- \SI{#2}{\milli\gram}%
- }{\SI{#2}{\gram}%
+ \ifboolKV[Unites]{ng}{%
+ \SI{#2}{\ng}%
+ }{\ifboolKV[Unites]{ug}{%
+ \SI{#2}{\ug}%
+ }{\ifboolKV[Unites]{t}{%
+ \SI{#2}{\tonne}%
+ }{\ifboolKV[Unites]{q}{%
+ \SI{#2}{\quintal}%
+ }{%
+ \ifboolKV[Unites]{kg}{%
+ \SI{#2}{\kg}%
+ }{\ifboolKV[Unites]{hg}{%
+ \SI{#2}{\hecto\gram}%
+ }{\ifboolKV[Unites]{dag}{%
+ \SI{#2}{\deca\gram}%
+ }{\ifboolKV[Unites]{dg}{%
+ \SI{#2}{\deci\gram}%
+ }{\ifboolKV[Unites]{cg}{%
+ \SI{#2}{\centi\gram}%
+ }{\ifboolKV[Unites]{mg}{%
+ \SI{#2}{\milli\gram}%
+ }{\SI{#2}{\gram}%
+ }%
+ }%
+ }%
+ }%
}%
}%
}%
@@ -10589,15 +11865,21 @@ vardef Positions(expr Step)=
\SI{#2}{\square\km}%
}{\ifboolKV[Unites]{hm}{%
\SI{#2}{\square\hecto\metre}%
- }{\ifboolKV[Unites]{dam}{%
- \SI{#2}{\square\deca\metre}%
- }{\ifboolKV[Unites]{dm}{%
- \SI{#2}{\square\dm}%
- }{\ifboolKV[Unites]{m}{%
- \SI{#2}{\square\metre}%
- }{\ifboolKV[Unites]{mm}{%
- \SI{#2}{\square\mm}%
- }{\SI{#2}{\square\cm}%
+ }{\ifboolKV[Unites]{ha}{%
+ \SI{#2}{\hectare}%
+ }{\ifboolKV[Unites]{dam}{%
+ \SI{#2}{\square\deca\metre}%
+ }{\ifboolKV[Unites]{a}{%
+ \SI{#2}{\are}%
+ }{\ifboolKV[Unites]{dm}{%
+ \SI{#2}{\square\dm}%
+ }{\ifboolKV[Unites]{m}{%
+ \SI{#2}{\square\metre}%
+ }{\ifboolKV[Unites]{mm}{%
+ \SI{#2}{\square\mm}%
+ }{\SI{#2}{\square\cm}%
+ }%
+ }%
}%
}%
}%
@@ -10636,7 +11918,11 @@ vardef Positions(expr Step)=
\ifboolKV[Unites]{ms}{%
\SI[per-mode=symbol]{#2}{\meter\per\second}%
}{%
- \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}%
+ \ifboolKV[Unites]{kms}{%
+ \SI[per-mode=symbol]{#2}{\kilo\meter\per\second}%
+ }{%
+ \SI[per-mode=symbol]{#2}{\kilo\meter\per\hour}%
+ }%
}%
}%
@@ -10650,177 +11936,378 @@ vardef Positions(expr Step)=
}%
}%
-%%%%%%%%%
-%% Tableaux d'unités
-%%%%%%%%%
-\setKVdefault[ClesTableaux]{Entiers=false,Decimaux=false,Milliards=false,Millions=false,Milliers=true,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Classes=false,Nombres=false,Metre=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,Colonnes=false,Prefixes=false}
+%%%
+% Tableaux d'unités
+%%%
+\setKVdefault[ClesTableaux]{Virgule=true,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false}
\newcommand\Tableau[1][]{%
\useKVdefault[ClesTableaux]%
\setKV[ClesTableaux]{#1}%
+ %
+ %%% Clé Prefixes
+ %
\ifboolKV[ClesTableaux]{Prefixes}{%
- \setlength{\tabcolsep}{0.01\tabcolsep}
- \begin{center}
- \begin{tabular}{|*{12}{>{\centering\arraybackslash}m{3.25em}|}>{\columncolor{gray!15},}{c}|*{12}{>{\centering\arraybackslash}m{3.25em}|}}
+ \setlength{\tabcolsep}{0.01\tabcolsep}%
+ \begin{center}%
+ %
+ %%% Definition du tableau
+ %
+ \begin{tabular}{|*{\ifboolKV[ClesTableaux]{Milliards}{12}{%
+ \ifboolKV[ClesTableaux]{Millions}{9}{6}%
+ }}{>{\centering\arraybackslash}m{3.25em}|}>{\columncolor{gray!15}}{c}|*{%
+ \ifboolKV[ClesTableaux]{Micro}{6}{%
+ \ifboolKV[ClesTableaux]{Nano}{9}{3}%
+ }}%
+ {>{\centering\arraybackslash}m{3.25em}|}}%
+ %
+ %%% Prise en compte de la clé Partie
+ %
\ifboolKV[ClesTableaux]{Partie}{%
- \multicolumn{12}{c}{\bfseries Partie entière}
- &\multicolumn{1}{c}{\cellcolor{gray!15},}%
- &\multicolumn{12}{c}{\bfseries Partie décimale}\\}{}
+ \multicolumn{%
+ \ifboolKV[ClesTableaux]{Milliards}{12}{%
+ \ifboolKV[ClesTableaux]{Millions}{9}{6}%
+ }}{c}{\bfseries Partie entière}
+ &\multicolumn{1}{c}{\cellcolor{gray!15}\ifboolKV[ClesTableaux]{Virgule}{,}{}}%
+ &\multicolumn{%
+ \ifboolKV[ClesTableaux]{Micro}{6}{%
+ \ifboolKV[ClesTableaux]{Nano}{9}{3}%
+ }}%
+ {c}{\bfseries Partie décimale}\\}{}%
+ %
+ %%% Prise en compte de la clé Classes
+ %
\ifboolKV[ClesTableaux]{Classes}{%
- \hline%
- \multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe
- des milliards}%
- &\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe
+ \hline
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \cline{1-12}\multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe des milliards}%
+ &\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}%
+ &}{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \cline{1-9}\multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe
des millions}%
- &\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
+ &}{%
+ \cline{1-6}}}%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \multicolumn{3}{c|}}{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \multicolumn{3}{c|}}{\multicolumn{3}{|c|}}}%
+ {\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
des milliers}%
&\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{Couleuru}}Classe
des unités}%
- &&&&&&&&&&&&&\\}{}
- \hline
- %
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
+ &\multicolumn{%
+ \ifboolKV[ClesTableaux]{Micro}{6}{%
+ \ifboolKV[ClesTableaux]{Nano}{9}{3}%
+ }}%
+ {c|}{}\\}{}%
+ %
+ %%% Valeurs par défaut
+ %
+ \hline%
+ \ifboolKV[ClesTableaux]{Milliards}{%
&%
&\fontsize{8.5}{8.5}\selectfont giga%
&%
&%
&\fontsize{8.5}{8.5}\selectfont méga%
&%
+ }{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &%
+ &\fontsize{8.5}{8.5}\selectfont méga%
+ &%
+ }{%
+ }}%
&%
&\fontsize{8.5}{8.5}\selectfont kilo%
&\fontsize{8.5}{8.5}\selectfont hecto%
&\fontsize{8.5}{8.5}\selectfont déca%
&\fontsize{8.5}{8.5}\selectfont unités%
- &%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
&\fontsize{8.5}{8.5}\selectfont deci%
&\fontsize{8.5}{8.5}\selectfont centi%
- &\fontsize{8.5}{8.5}\selectfont milli%
+ &\fontsize{8.5}{8.5}\selectfont milli%
+ \ifboolKV[ClesTableaux]{Micro}{&%
&%
+ &\fontsize{8.5}{8.5}\selectfont micro\\}{%
+ \ifboolKV[ClesTableaux]{Nano}{&%
&%
&\fontsize{8.5}{8.5}\selectfont micro%
&%
&%
- &\fontsize{8.5}{8.5}\selectfont nano%
+ &\fontsize{8.5}{8.5}\selectfont nano\\}{\\}%
+ }%
+ %
+ %%% Prise en compte de la clé Nombres
+ %
+ \ifboolKV[ClesTableaux]{Nombres}{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \fontsize{4.5}{4.5}\selectfont\num{100000000000}%
+ &\fontsize{4.5}{4.5}\selectfont\num{10000000000}%
+ &\fontsize{4.5}{4.5}\selectfont\num{1000000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{100000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000000}%
&%
+ }{}
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \fontsize{4.5}{4.5}\selectfont \num{100000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000000}%
&%
- &\\
- \ifboolKV[ClesTableaux]{Nombres}{%
+ }{}
+ \fontsize{4.5}{4.5}\selectfont \num{100000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{100}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1}%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,1} ou $\dfrac{\strut1}{\strut10}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,01} ou $\dfrac{\strut1}{\strut100}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,001} ou $\dfrac{\strut1}{\strut\num{1000}}$%
+ \ifboolKV[ClesTableaux]{Micro}{%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,0001} ou $\dfrac{\strut1}{\strut\num{10000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,00001} ou $\dfrac{\strut1}{\strut\num{100000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,000001} ou $\dfrac{\strut1}{\strut\num{1000000}}$%
+ }{%
+ \ifboolKV[ClesTableaux]{Nano}{%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,0001} ou $\dfrac{\strut1}{\strut\num{10000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,00001} ou $\dfrac{\strut1}{\strut\num{100000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,000001} ou $\dfrac{\strut1}{\strut\num{1000000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,0000001} ou $\dfrac{\strut1}{\strut\num{10000000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,00000001} ou $\dfrac{\strut1}{\strut\num{100000000}}$%
+ &\fontsize{4.5}{4.5}\selectfont \num{0,000000001} ou $\dfrac{\strut1}{\strut\num{1000000000}}$%
+ }{}%
+ }{}\\}{}%
+ %
+ %%% Prise en compte de la clé Puissances
+ %
+ \ifboolKV[ClesTableaux]{Puissances}{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
&%
&\fontsize{4.5}{4.5}\selectfont $\times10^{9}$%
&%
&%
&\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ \ifboolKV[ClesTableaux]{Millions}{%
&%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ }}%
&%
&\fontsize{4.5}{4.5}\selectfont $\times10^3$%
&\fontsize{4.5}{4.5}\selectfont $\times\num{10}^2$%
&\fontsize{4.5}{4.5}\selectfont $\times\num{10}^1$%
&\fontsize{4.5}{4.5}\selectfont $\times\num{1}$%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-1}$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-2}$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-3}$%
+ \ifboolKV[ClesTableaux]{Micro}{&%
&%
- &\fontsize{4.5}{4.5}\selectfont$\times\num{10}^{-1}$%
- &\fontsize{4.5}{4.5}\selectfont$\times\num{10}^{-2}$%
- &\fontsize{4.5}{4.5}\selectfont$\times\num{10}^{-3}$%
- &%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-6}$}{%
+ \ifboolKV[ClesTableaux]{Nano}{&%
&%
&\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-6}$%
&%
&%
- &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-9}$%
- &
- &
- &\\
- }{}
- \hline
- &&&&&&&&&&&&&&&&&&&&&&&&\\
- &&&&&&&&&&&&&&&&&&&&&&&&\\
- \end{tabular}
- \end{center}
- \setlength{\tabcolsep}{100\tabcolsep}
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-9}$}{}%
+ }%
+ \\%
+ }{}%
+ %
+ %%% Lignes vierges
+ %
+ \hline%
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &&&&&&%
+ }{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &&&%
+ }{%
+ }}%
+ &&&&&&,&&&%
+ \ifboolKV[ClesTableaux]{Micro}{&&&}{%
+ \ifboolKV[ClesTableaux]{Nano}{&&&&&&}{}%
+ }
+ \\}%
+ \end{tabular}%
+ \end{center}%
+ \setlength{\tabcolsep}{100\tabcolsep}%
}{}%
+ %
+ %%% Clé Entiers
+ %
\ifboolKV[ClesTableaux]{Entiers}{%
- \setlength{\tabcolsep}{0.01\tabcolsep}
- \begin{center}
- \begin{tabular}{|*{12}{>{\centering\arraybackslash}m{4.75em}|}}
- \ifboolKV[ClesTableaux]{Classes}{\hline\multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe
- des milliards}%
- &\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe
- des millions}%
- &\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
+ \setlength{\tabcolsep}{0.01\tabcolsep}%
+ \begin{center}%
+ %
+ %%% Definition du tableau
+ %
+ \begin{tabular}{|*{%
+ \ifboolKV[ClesTableaux]{Milliards}{12}{%
+ \ifboolKV[ClesTableaux]{Millions}{9}{6}%
+ }%
+ }{>{\centering\arraybackslash}m{4.75em}|}}%
+ \ifboolKV[ClesTableaux]{Classes}{%
+ \hline
+ \ifboolKV[ClesTableaux]{Milliards}{\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe des milliards}&\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}&}{}
+ \ifboolKV[ClesTableaux]{Millions}{\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}&}{}
+ \multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
des milliers}%
&\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{Couleuru}}Classe des unités}\\}{}
\hline
+ \ifboolKV[ClesTableaux]{Milliards}{%
\fontsize{4.5}{4.5}\selectfont centaines de milliards%
&\fontsize{4.5}{4.5}\selectfont dizaines de milliards%
&\fontsize{4.5}{4.5}\selectfont unités de milliards%
&\fontsize{4.5}{4.5}\selectfont centaines de millions%
&\fontsize{4.5}{4.5}\selectfont dizaines de millions%
&\fontsize{4.5}{4.5}\selectfont unités de millions%
- &\fontsize{4.5}{4.5}\selectfont centaines de milliers%
+ &
+ }{}
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \fontsize{4.5}{4.5}\selectfont centaines de millions%
+ &\fontsize{4.5}{4.5}\selectfont dizaines de millions%
+ &\fontsize{4.5}{4.5}\selectfont unités de millions%
+ &
+ }{}
+ \fontsize{4.5}{4.5}\selectfont centaines de milliers%
&\fontsize{4.5}{4.5}\selectfont dizaines de milliers%
&\fontsize{4.5}{4.5}\selectfont unités de milliers%
&\fontsize{4.5}{4.5}\selectfont centaines%
&\fontsize{4.5}{4.5}\selectfont dizaines%
&\fontsize{4.5}{4.5}\selectfont unités\\%
\ifboolKV[ClesTableaux]{Nombres}{%
- \fontsize{4.5}{4.5}\selectfont \num{100000000000}%
- &\fontsize{4.5}{4.5}\selectfont \num{10000000000}%
- &\fontsize{4.5}{4.5}\selectfont \num{1000000000}%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \fontsize{4.5}{4.5}\selectfont\num{100000000000}%
+ &\fontsize{4.5}{4.5}\selectfont\num{10000000000}%
+ &\fontsize{4.5}{4.5}\selectfont\num{1000000000}%
&\fontsize{4.5}{4.5}\selectfont \num{100000000}%
&\fontsize{4.5}{4.5}\selectfont \num{10000000}%
&\fontsize{4.5}{4.5}\selectfont \num{1000000}%
- &\fontsize{4.5}{4.5}\selectfont \num{100000}%
+ &%
+ }{}
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \fontsize{4.5}{4.5}\selectfont \num{100000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000000}%
+ &%
+ }{}
+ \fontsize{4.5}{4.5}\selectfont \num{100000}%
&\fontsize{4.5}{4.5}\selectfont \num{10000}%
&\fontsize{4.5}{4.5}\selectfont \num{1000}%
&\fontsize{4.5}{4.5}\selectfont \num{100}%
&\fontsize{4.5}{4.5}\selectfont \num{10}%
&\fontsize{4.5}{4.5}\selectfont \num{1}%
\\
- }{}
- \hline
- &&&&&&&&&&&\\
- &&&&&&&&&&&\\
- \end{tabular}
- \end{center}
- \setlength{\tabcolsep}{100\tabcolsep}
+ }{}
+ %
+ %%% Prise en compte de la clé Puissances
+ %
+ \ifboolKV[ClesTableaux]{Puissances}{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{9}$%
+ &%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ }}%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^3$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^2$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^1$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{1}$%
+ \\%
+ }{}%
+ %
+ %%% Lignes vierges
+ %
+ \hline%
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &&&&&&}{}%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &&&}{}
+ &&&&&\\}%
+ \end{tabular}%
+ \end{center}%
+ \setlength{\tabcolsep}{100\tabcolsep}%
}{}%
+ %
+ %%% Clé Decimaux
+ %
\ifboolKV[ClesTableaux]{Decimaux}{%
- \setlength{\tabcolsep}{0.01\tabcolsep}
- \ifboolKV[ClesTableaux]{Milliards}{%
- \newcolumntype{X}{|*{12}{>{\centering\arraybackslash}m{4.75em}|}>{\columncolor{gray!15},}{c}|*{3}{>{\centering\arraybackslash}m{4.75em}|}}%
- }{\ifboolKV[ClesTableaux]{Millions}{%
- \newcolumntype{X}{|*{9}{>{\centering\arraybackslash}m{4.75em}|}>{\columncolor{gray!15},}{c}|*{3}{>{\centering\arraybackslash}m{4.75em}|}}%
- }{\newcolumntype{X}{|*{6}{>{\centering\arraybackslash}m{4.75em}|}>{\columncolor{gray!15},}{c}|*{3}{>{\centering\arraybackslash}m{4.75em}|}}%
- }
- }
- \begin{center}
- \begin{tabular}{X}
+ \setlength{\tabcolsep}{0.01\tabcolsep}%
+ \begin{center}%
+ %
+ %%% Definition du tableau
+ %
+ \begin{tabular}{|*{\ifboolKV[ClesTableaux]{Milliards}{12}{%
+ \ifboolKV[ClesTableaux]{Millions}{9}{6}%
+ }}{>{\centering\arraybackslash}m{4.75em}|}>{\columncolor{gray!15}}{c}|*{3}%
+ {>{\centering\arraybackslash}m{4.75em}|}}%
+ %
+ %%% Prise en compte de la clé Partie
+ %
\ifboolKV[ClesTableaux]{Partie}{%
- \ifboolKV[ClesTableaux]{Milliards}{\multicolumn{12}{c}{\bfseries Partie entière}}{\ifboolKV[ClesTableaux]{Millions}{\multicolumn{9}{c}{\bfseries Partie entière}}{\multicolumn{6}{c}{\bfseries Partie entière}}}
- &\multicolumn{1}{c}{\cellcolor{gray!15},}%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \multicolumn{12}{c}{\bfseries Partie entière}}{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \multicolumn{9}{c}{\bfseries Partie entière}}{%
+ \multicolumn{6}{c}{\bfseries Partie entière}}}%
+ &\multicolumn{1}{c}{\cellcolor{gray!15}\ifboolKV[ClesTableaux]{Virgule}{,}{}}%
&\multicolumn{3}{c}{\bfseries Partie décimale}\\}{}
+ %
+ %%% Prise en compte de la clé Classes
+ %
\ifboolKV[ClesTableaux]{Classes}{%
\hline%
- \ifboolKV[ClesTableaux]{Milliards}{\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe des milliards}\uppercase{&}\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}\uppercase{&}}{}
- \ifboolKV[ClesTableaux]{Millions}{\multicolumn{3}{|c}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}\uppercase{&}}{}
- \multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurG}}Classe des milliards}&\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}&}{}%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \multicolumn{3}{|c|}{\cellcolor{\useKV[ClesTableaux]{CouleurM}}Classe des millions}&}{}%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \multicolumn{3}{c|}}{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ \multicolumn{3}{c|}}{\multicolumn{3}{|c|}}}%
+ {\cellcolor{\useKV[ClesTableaux]{Couleurm}}Classe
des milliers}%
&\multicolumn{3}{c|}{\cellcolor{\useKV[ClesTableaux]{Couleuru}}Classe
des unités}%
- &&&&\\}{}
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}&\multicolumn{3}{c|}{}\\}{}
+ %
+ %%% Valeurs ci-dessous par défaut
+ %
\hline
\ifboolKV[ClesTableaux]{Milliards}{%
\fontsize{4.5}{4.5}\selectfont centaines de milliards%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont dizaines de milliards%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont unités de milliards%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont centaines de millions%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont dizaines de millions%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont unités de millions%
- \uppercase{&}
+ &\fontsize{4.5}{4.5}\selectfont dizaines de milliards%
+ &\fontsize{4.5}{4.5}\selectfont unités de milliards%
+ &\fontsize{4.5}{4.5}\selectfont centaines de millions%
+ &\fontsize{4.5}{4.5}\selectfont dizaines de millions%
+ &\fontsize{4.5}{4.5}\selectfont unités de millions%
+ &
}{}
\ifboolKV[ClesTableaux]{Millions}{%
\fontsize{4.5}{4.5}\selectfont centaines de millions%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont dizaines de millions%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont unités de millions%
- \uppercase{&}
+ &\fontsize{4.5}{4.5}\selectfont dizaines de millions%
+ &\fontsize{4.5}{4.5}\selectfont unités de millions%
+ &
}{}
\fontsize{4.5}{4.5}\selectfont centaines de milliers%
&\fontsize{4.5}{4.5}\selectfont dizaines de milliers%
@@ -10828,53 +12315,84 @@ vardef Positions(expr Step)=
&\fontsize{4.5}{4.5}\selectfont centaines%
&\fontsize{4.5}{4.5}\selectfont dizaines%
&\fontsize{4.5}{4.5}\selectfont unités%
- &%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
&\fontsize{4.5}{4.5}\selectfont dixièmes%
&\fontsize{4.5}{4.5}\selectfont centièmes%
&\fontsize{4.5}{4.5}\selectfont millièmes\\
\ifboolKV[ClesTableaux]{Nombres}{%
\ifboolKV[ClesTableaux]{Milliards}{%
\fontsize{4.5}{4.5}\selectfont\num{100000000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont\num{10000000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont\num{1000000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont \num{100000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont \num{10000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont \num{1000000}%
- \uppercase{&}%
+ &\fontsize{4.5}{4.5}\selectfont\num{10000000000}%
+ &\fontsize{4.5}{4.5}\selectfont\num{1000000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{100000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{10000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000000}%
+ &%
}{}
\ifboolKV[ClesTableaux]{Millions}{%
\fontsize{4.5}{4.5}\selectfont \num{100000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont \num{10000000}%
- \uppercase{&}\fontsize{4.5}{4.5}\selectfont \num{1000000}%
- \uppercase{&}%
- }{}
+ &\fontsize{4.5}{4.5}\selectfont \num{10000000}%
+ &\fontsize{4.5}{4.5}\selectfont \num{1000000}%
+ &%
+ }{}
\fontsize{4.5}{4.5}\selectfont \num{100000}%
&\fontsize{4.5}{4.5}\selectfont \num{10000}%
&\fontsize{4.5}{4.5}\selectfont \num{1000}%
&\fontsize{4.5}{4.5}\selectfont \num{100}%
&\fontsize{4.5}{4.5}\selectfont \num{10}%
&\fontsize{4.5}{4.5}\selectfont \num{1}%
- &%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
&\fontsize{4.5}{4.5}\selectfont \num{0,1} ou $\dfrac{\strut1}{\strut10}$%
&\fontsize{4.5}{4.5}\selectfont \num{0,01} ou $\dfrac{\strut1}{\strut100}$%
&\fontsize{4.5}{4.5}\selectfont \num{0,001} ou $\dfrac{\strut1}{\strut\num{1000}}$%
\\
+ }{}%
+ %
+ %%% Prise en compte de la clé Puissances
+ %
+ \ifboolKV[ClesTableaux]{Puissances}{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{9}$%
+ &%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^{6}$%
+ &
+ }{%
+ }}%
+ &%
+ &\fontsize{4.5}{4.5}\selectfont $\times10^3$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^2$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^1$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{1}$%
+ &\ifboolKV[ClesTableaux]{Virgule}{,}{}%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-1}$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-2}$%
+ &\fontsize{4.5}{4.5}\selectfont $\times\num{10}^{-3}$%
+ \\%
}{}
- \hline
- \ifboolKV[ClesTableaux]{Milliards}{%
- \uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}}{} %
- \ifboolKV[ClesTableaux]{Millions}{%
- \uppercase{&}\uppercase{&}\uppercase{&}}{}
- &&&&&&&&&\\
- \ifboolKV[ClesTableaux]{Milliards}{%
- \uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}\uppercase{&}}{} %
+ \hline%
+ %
+ %%% Lignes vierges
+ %
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &&&&&&}{}%
\ifboolKV[ClesTableaux]{Millions}{%
- \uppercase{&}\uppercase{&}\uppercase{&}}{}
- &&&&&&&&&\\
+ &&&}{}
+ &&&&&&,&&&\\}
\end{tabular}
- \end{center}
- \setlength{\tabcolsep}{100\tabcolsep}
- }{}
+ \end{center}%
+ \setlength{\tabcolsep}{100\tabcolsep}%
+ }{}%
+ %
+ %%% Prise en compte de la clé Metre
+ %
\ifboolKV[ClesTableaux]{Metre}{%
\[\renewcommand{\arraystretch}{1.15}%
\begin{tabular}{|*{7}{p{7.5mm}|}}%
@@ -10888,7 +12406,8 @@ vardef Positions(expr Step)=
\hline
\multicolumn{1}{|c|}{km}&\multicolumn{1}{c|}{hm}&\multicolumn{1}{c|}{dam}&\multicolumn{1}{c|}{m}&\multicolumn{1}{c|}{dm}&\multicolumn{1}{c|}{cm}&\multicolumn{1}{c|}{mm}\\
\hline
- &&&&&&\\
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ &&&&&&\\}
\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (G1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (F1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (E1);}}%
@@ -10896,33 +12415,25 @@ vardef Positions(expr Step)=
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (C1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (B1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (A1);}}\\%
- \end{tabular}
- \]
- \ifboolKV[ClesTableaux]{Fleches}{%
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (A) to node[above, midway]{\small$\times\mbox{10}$}(B);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to node[above, midway]{\small$\times\mbox{10}$}(C);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to node[above, midway]{\small$\times\mbox{10}$}(D);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to node[above, midway]{\small$\times\mbox{10}$}(E);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to node[above, midway]{\small$\times\mbox{10}$}(F);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to node[above, midway]{\small$\times\mbox{10}$}(G);}
- % bas
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to node[below, midway]{\small$\div\mbox{10}$}(B1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to node[below, midway]{\small$\div\mbox{10}$}(C1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to node[below, midway]{\small$\div\mbox{10}$}(D1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to node[below, midway]{\small$\div\mbox{10}$}(E1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to node[below, midway]{\small$\div\mbox{10}$}(F1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to node[below, midway]{\small$\div\mbox{10}$}(G1);}
- }{}
- }
- {}
+ \end{tabular}%
+ \]%
+ \Conversion{10}%
+ }%
+ {}%
+ %
+ %%% Prise en compte de la clé Carre
+ %
\ifboolKV[ClesTableaux]{Carre}{%
\[\renewcommand{\arraystretch}{1.15}%
\ifboolKV[ClesTableaux]{Colonnes}{%
- \newcolumntype{X}{|*{7}{p{2.5mm}!{\color{gray!50}\vrule}p{2.5mm}|}}%
+ \newcolumntype{X}{|*{7}{>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}|}}%
}{%
- \newcolumntype{X}{|*{7}{p{2.5mm}p{2.5mm}|}}
- }
- \begin{tabular}{X}
+ \ifboolKV[ClesTableaux]{Are}{%
+ \newcolumntype{X}{|*{7}{>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}|}}%
+ }{
+ \newcolumntype{X}{|*{7}{p{3.5mm}p{3.5mm}|}}%
+ }}%
+ \begin{tabular}{X}%
\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate (A);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate (B);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate (C);}}%
@@ -10931,9 +12442,14 @@ vardef Positions(expr Step)=
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate (F);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate (G);}}\\%
\hline
- \multicolumn{2}{|c|}{km$^2$}&\multicolumn{2}{c|}{hm$^2$}&\multicolumn{2}{c|}{dam$^2$}&\multicolumn{2}{c|}{m$^2$}&\multicolumn{2}{c|}{dm$^2$}&\multicolumn{2}{c|}{cm$^2$}&\multicolumn{2}{c|}{mm$^2$}\\
- \hline
- &&&&&&&&&&&&&\\
+ \multicolumn{2}{|c|}{km$^2$}&\multicolumn{2}{c|}{hm$^2$}&\multicolumn{2}{c|}{dam$^2$}&\multicolumn{2}{c|}{m$^2$}&\multicolumn{2}{c|}{dm$^2$}&\multicolumn{2}{c|}{cm$^2$}&\multicolumn{2}{c|}{mm$^2$}\\%
+ \ifboolKV[ClesTableaux]{Are}{%
+ \cline{3-6}
+ \multicolumn{2}{|c|}{}&&{\scriptsize ha}&&{\scriptsize a}&\multicolumn{2}{c|}{}&\multicolumn{2}{c|}{}&\multicolumn{2}{c|}{}&\multicolumn{2}{c|}{}\\
+ }{}
+ \hline
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ &&&&&&&&&&&&&\\}
\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=0.6em] (G1);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=0.6em] (F1);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=0.6em] (E1);}}%
@@ -10942,32 +12458,23 @@ vardef Positions(expr Step)=
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=0.6em] (B1);}}%
&\multicolumn{2}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=0.6em] (A1);}}\\%
\end{tabular}
- \]
- \ifboolKV[ClesTableaux]{Fleches}{%
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (A) to node[above, midway]{\small$\times\mbox{100}$}(B);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to node[above, midway]{\small$\times\mbox{100}$}(C);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to node[above, midway]{\small$\times\mbox{100}$}(D);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to node[above, midway]{\small$\times\mbox{100}$}(E);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to node[above, midway]{\small$\times\mbox{100}$}(F);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to node[above, midway]{\small$\times\mbox{100}$}(G);}
- % bas
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to node[below, midway]{\small$\div\mbox{100}$}(B1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to node[below, midway]{\small$\div\mbox{100}$}(C1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to node[below, midway]{\small$\div\mbox{100}$}(D1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to node[below, midway]{\small$\div\mbox{100}$}(E1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to node[below, midway]{\small$\div\mbox{100}$}(F1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to node[below, midway]{\small$\div\mbox{100}$}(G1);}
- }{}%
- }%
- {}%
+ \]%
+ \Conversion{100}%
+ }{}%
+ %
+ %%% Prise en compte de la clé Cube
+ %
\ifboolKV[ClesTableaux]{Cube}{%
\setlength{\tabcolsep}{0.625\tabcolsep}%
- \ifboolKV[ClesTableaux]{Colonnes}{%
- \newcolumntype{X}{|*{7}{p{2.5mm}!{\color{gray!50}\vrule}p{2.5mm}!{\color{gray!50}\vrule}p{2.5mm}|}}%
+ \ifboolKV[ClesTableaux]{Colonnes}{%
+ \newcolumntype{X}{|*{7}{>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}|}}%
}{%
- \newcolumntype{X}{|*{7}{p{2.5mm}p{2.5mm}p{2.5mm}|}}%
- }
- \[\renewcommand{\arraystretch}{1.15}
+ \ifboolKV[ClesTableaux]{Capacite}{%
+ \newcolumntype{X}{|*{7}{>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}!{\color{gray!50}\vrule}>{\centering\arraybackslash}p{3.5mm}|}}%
+ }{%
+ \newcolumntype{X}{|*{7}{p{3.5mm}p{3.5mm}p{3.5mm}|}}%
+ }}%
+ \[\renewcommand{\arraystretch}{1.15}%
\begin{tabular}{X}
\multicolumn{3}{c}{\tikz[remember picture,overlay]{\coordinate (A);}}%
&\multicolumn{3}{c}{\tikz[remember picture,overlay]{\coordinate (B);}}%
@@ -10978,8 +12485,14 @@ vardef Positions(expr Step)=
&\multicolumn{3}{c}{\tikz[remember picture,overlay]{\coordinate (G);}}\\%
\hline
\multicolumn{3}{|c|}{km$^3$}&\multicolumn{3}{c|}{hm$^3$}&\multicolumn{3}{c|}{dam$^3$}&\multicolumn{3}{c|}{m$^3$}&\multicolumn{3}{c|}{dm$^3$}&\multicolumn{3}{c|}{cm$^3$}&\multicolumn{3}{c|}{mm$^3$}\\
+ \ifboolKV[ClesTableaux]{Capacite}{%
+ \cline{10-15}
+ \multicolumn{3}{|c|}{}&\multicolumn{3}{c|}{}&\multicolumn{3}{c|}{}&{\scriptsize hL}&{\scriptsize daL}&{\scriptsize L}&{\scriptsize dL}&{\scriptsize cL}&{\scriptsize mL}&\multicolumn{3}{c|}{}&\multicolumn{3}{c|}{}\\
+ }{}%
\hline
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
&&&&&&&&&&&&&&&&&&&&\\
+ }%
\multicolumn{3}{c}{\tikz[remember picture,overlay,yshift=\ht\strutbox]{\coordinate (G1);}}%
&\multicolumn{3}{c}{\tikz[remember picture,overlay,yshift=\ht\strutbox]{\coordinate (F1);}}%
&\multicolumn{3}{c}{\tikz[remember picture,overlay,yshift=\ht\strutbox]{\coordinate (E1);}}%
@@ -10988,75 +12501,41 @@ vardef Positions(expr Step)=
&\multicolumn{3}{c}{\tikz[remember picture,overlay,yshift=\ht\strutbox]{\coordinate (B1);}}%
&\multicolumn{3}{c}{\tikz[remember picture,overlay,yshift=\ht\strutbox]{\coordinate (A1);}}\\%
\end{tabular}
- \]
- \setlength{\tabcolsep}{1.6\tabcolsep}
- \ifboolKV[ClesTableaux]{Fleches}{%
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150]
- (A) to node[above, midway]{$\times\mbox{\num{1000}}$}(B);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to
- node[above, midway]{$\times\mbox{\num{1000}}$}(C);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to
- node[above, midway]{$\times\mbox{\num{1000}}$}(D);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to
- node[above, midway]{$\times\mbox{\num{1000}}$}(E);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to
- node[above, midway]{$\times\mbox{\num{1000}}$}(F);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to
- node[above, midway]{$\times\mbox{\num{1000}}$}(G);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(B1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(C1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(D1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(E1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(F1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to
- node[below, midway]{$\div\mbox{\num{1000}}$}(G1);}
- }{}
- }
- {}
+ \]%
+ \setlength{\tabcolsep}{1.6\tabcolsep}%
+ \Conversion{1000}%
+ }{}%
+ %
+ %%% Prise en compte de la clé Litre
+ %
\ifboolKV[ClesTableaux]{Litre}{%
\[\renewcommand{\arraystretch}{1.15}%
- \begin{tabular}{|*{7}{p{7.5mm}|}}
+ \begin{tabular}{|*{6}{p{7.5mm}|}}
\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (A);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (B);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (C);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (D);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (E);}}%
- &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (F);}}%
- &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (G);}}\\%
+ &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (F);}}\\%
\hline
- \multicolumn{1}{|c|}{kL}&\multicolumn{1}{c|}{hL}&\multicolumn{1}{c|}{daL}&\multicolumn{1}{c|}{L}&\multicolumn{1}{c|}{dL}&\multicolumn{1}{c|}{cL}&\multicolumn{1}{c|}{mL}\\
- \hline
- &&&&&&\\
- \multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (G1);}}%
- &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (F1);}}
+ \multicolumn{1}{|c|}{hL}&\multicolumn{1}{c|}{daL}&\multicolumn{1}{c|}{L}&\multicolumn{1}{c|}{dL}&\multicolumn{1}{c|}{cL}&\multicolumn{1}{c|}{mL}\\
+ \hline
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}-1}}\do{%
+ &&&&&\\}%
+ &&&&&\\%
+ \multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (F1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (E1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (D1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (C1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (B1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (A1);}}\\%
\end{tabular}
- \]
- \ifboolKV[ClesTableaux]{Fleches}{%
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (A) to node[above, midway]{\small$\times\mbox{10}$}(B);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to node[above, midway]{\small$\times\mbox{10}$}(C);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to node[above, midway]{\small$\times\mbox{10}$}(D);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to node[above, midway]{\small$\times\mbox{10}$}(E);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to node[above, midway]{\small$\times\mbox{10}$}(F);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to node[above, midway]{\small$\times\mbox{10}$}(G);}
- % bas
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to node[below, midway]{\small$\div\mbox{10}$}(B1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to node[below, midway]{\small$\div\mbox{10}$}(C1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to node[below, midway]{\small$\div\mbox{10}$}(D1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to node[below, midway]{\small$\div\mbox{10}$}(E1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to node[below, midway]{\small$\div\mbox{10}$}(F1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to node[below, midway]{\small$\div\mbox{10}$}(G1);}
- }{}%
+ \]%
+ \Conversion{10}%
}{}%
+ %
+ %%% Prise en compte de la clé Gramme
+ %
\ifboolKV[ClesTableaux]{Gramme}{%
\[\renewcommand{\arraystretch}{1.15}%
\begin{tabular}{|*{7}{p{7.5mm}|}}
@@ -11066,11 +12545,12 @@ vardef Positions(expr Step)=
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (D);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (E);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (F);}}%
- &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (G);}}
- \\%
+ &\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate (G);}}\\%
\hline
\multicolumn{1}{|c|}{kg}&\multicolumn{1}{c|}{hg}&\multicolumn{1}{c|}{dag}&\multicolumn{1}{c|}{g}&\multicolumn{1}{c|}{dg}&\multicolumn{1}{c|}{cg}&\multicolumn{1}{c|}{mg}\\
\hline
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}-1}}\do{%
+ &&&&&&\\}%
&&&&&&\\
\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (G1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (F1);}}%
@@ -11080,21 +12560,483 @@ vardef Positions(expr Step)=
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (B1);}}%
&\multicolumn{1}{c}{\tikz[remember picture,overlay]{\coordinate[yshift=1em] (A1);}}\\%
\end{tabular}
- \]
- \ifboolKV[ClesTableaux]{Fleches}{%
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (A) to node[above, midway]{\small$\times\mbox{10}$}(B);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to node[above, midway]{\small$\times\mbox{10}$}(C);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to node[above, midway]{\small$\times\mbox{10}$}(D);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to node[above, midway]{\small$\times\mbox{10}$}(E);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to node[above, midway]{\small$\times\mbox{10}$}(F);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to node[above, midway]{\small$\times\mbox{10}$}(G);}
-% % bas
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to node[below, midway]{\small$\div\mbox{10}$}(B1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to node[below, midway]{\small$\div\mbox{10}$}(C1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to node[below, midway]{\small$\div\mbox{10}$}(D1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to node[below, midway]{\small$\div\mbox{10}$}(E1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to node[below, midway]{\small$\div\mbox{10}$}(F1);}
- \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to node[below, midway]{\small$\div\mbox{10}$}(G1);}
- }{}%
+ \]%
+ \Conversion{10}%
+ }{}%
+}%
+
+\newcommand\Conversion[1]{%
+ \ifboolKV[ClesTableaux]{Fleches}{\setKV[ClesTableaux]{FlechesH,FlechesB}}{}%
+ \ifboolKV[ClesTableaux]{FlechesH}{%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (A) to node[above, midway]{\small$\times\num{#1}$}(B);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (B) to node[above, midway]{\small$\times\num{#1}$}(C);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (C) to node[above, midway]{\small$\times\num{#1}$}(D);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (D) to node[above, midway]{\small$\times\num{#1}$}(E);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (E) to node[above, midway]{\small$\times\num{#1}$}(F);}%
+ \ifboolKV[ClesTableaux]{Litre}{}{\tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=30,in=150] (F) to node[above, midway]{\small$\times\num{#1}$}(G);}%
+ }%
}{}%
+ \ifboolKV[ClesTableaux]{FlechesB}{%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (A1) to node[below, midway]{\small$\div\num{#1}$}(B1);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (B1) to node[below, midway]{\small$\div\num{#1}$}(C1);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (C1) to node[below, midway]{\small$\div\num{#1}$}(D1);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (D1) to node[below, midway]{\small$\div\num{#1}$}(E1);}%
+ \tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (E1) to node[below, midway]{\small$\div\num{#1}$}(F1);}%
+ \ifboolKV[ClesTableaux]{Litre}{}{\tikz[remember picture, overlay]{\draw[gray,->,>=latex,out=-150,in=-30] (F1) to node[below, midway]{\small$\div\num{#1}$}(G1);}}%
+ }{}%
+}%
+
+%%%
+% Cards
+%%%
+\newtcolorbox{Mybox}[3]{%
+ enhanced,
+ nobeforeafter,
+ left=0pt,right=0pt,top=0pt,
+ text fill,
+ width=\largeurcarte,
+ height=\hauteurcarte,
+ arc=5pt,
+ overlay unbroken and first={%
+ \coordinate[yshift=-0.5\hauteurtitre] (A1) at (frame.north west);
+ \coordinate[yshift=-0.5\hauteurtitre] (B1) at (frame.north east);
+ \coordinate[yshift=-\hauteurtitre] (A) at (frame.north west);
+ \coordinate[yshift=-\hauteurtitre] (B) at (frame.north east);
+ \coordinate[xshift=1.5pt,yshift=8mm] (S1) at (frame.south west);
+ \coordinate[xshift=-1.5pt,yshift=8mm] (S2) at (frame.south east);
+ \coordinate[xshift=3mm+(\largeurtitre/2)] (A2) at (A1);
+ \coordinate[xshift=-3mm-(\largeurtitre/2)] (B2) at (B1);
+ \node[rounded corners, draw=black, rectangle,minimum height=1cm,text width=\largeurtitre,fill=TrameCouleur] (T1) at (A2){};
+ \node[TexteCouleur] (T1a) at (T1){\Large #1};
+ \node[yshift=-0.65cm] (T1b) at (T1){\tiny réponse précédente};
+ \node[inner sep=0pt,rounded corners, rectangle, draw=black,minimum height=1cm,text width=\largeurtitre,fill=TrameCouleur] (T2) at (B2){};
+ \node[inner sep=0pt,TexteCouleur] (T2a) at (T2){
+ \begin{minipage}{\largeurtitre}
+ \begin{center}
+ #2
+ \end{center}
+ \end{minipage}
+ };
+ \node[yshift=-0.65cm] (T2b) at (T2){};
+ \ifboolKV[Cards]{Titre}{\node[] at (T2b) {\tiny\useKV[Cards]{NomTitre}};}{},
+ \node[rectangle,xshift=5mm,yshift=4.25mm,minimum width=2em,rounded corners,fill=TrameCouleur,draw=black] (R) at (frame.south west) {\color{black}\Large\bfseries #3};
+ \draw[dashed] (S1) -- (S2);
+ },
+ colback=white,
+ colbacktitle=TrameCouleur,
+}
+
+\usetikzlibrary{backgrounds}
+
+\makeatletter
+%https://tex.stackexchange.com/questions/347434/clip-background-image-inside-tcolorbox
+\newtcolorbox{MyboxSimpleAv}[1]{%
+ enhanced,
+ nobeforeafter,
+ left=0pt,right=0pt,top=\hauteurtitre,bottom=0pt,
+ text fill,
+ width=\largeurcarte,
+ height=\hauteurcarte,
+ arc=5pt,
+ colback=white,
+ underlay={%
+ \ifboolKV[Cards]{BackgroundAv}{%
+ \begin{tcbclipinterior}
+ \node[anchor=center,opacity=1]
+ at (interior.center) {%
+ \includegraphics[%
+ height=\tcb@height,
+ width=\tcb@width,
+ ]{\useKV[Cards]{ImageAv}}};
+ \end{tcbclipinterior},
+ }{}
+ },
+ overlay unbroken and first={%
+ \coordinate[yshift=-0.5\hauteurtitre] (A) at (frame.north);
+ \node[rounded corners, draw=black, rectangle,minimum height=1cm,text width=\largeurcarte-6mm,fill=TrameCouleur] (T1) at
+ (A){\begin{minipage}{\largeurcarte-6mm}
+ \begin{center}
+ #1
+ \end{center}
+ \end{minipage}};
+ \node[yshift=-0.5em-0.5\hauteurtitre] (B) at (A){};
+ \ifboolKV[Cards]{Titre}{\node[fill=white] at (B) {\useKV[Cards]{NomTitre}};}{},
+ }
+}
+
+\newtcolorbox{MyboxSimpleAr}[1]{%
+ enhanced,
+ nobeforeafter,
+ left=0pt,right=0pt,top=\hauteurtitre,bottom=0pt,
+ text fill,
+ width=\largeurcarte,
+ height=\hauteurcarte,
+ arc=5pt,
+ colback=white,
+ underlay={%
+ \ifboolKV[Cards]{BackgroundAr}{%
+ \begin{tcbclipinterior}
+ \node[anchor=center,opacity=1]
+ at (interior.center) {%
+ \includegraphics[%
+ height=\tcb@height,
+ width=\tcb@width,
+ ]{\useKV[Cards]{ImageAr}}};
+ \end{tcbclipinterior},
+ }{}
+ },
+ overlay unbroken and first={%
+ \coordinate[yshift=-0.5\hauteurtitre] (A) at (frame.north);
+ \node[rounded corners, draw=black, rectangle,minimum height=1cm,text width=\largeurcarte-6mm,fill=TrameCouleur] (T1) at
+ (A){\begin{minipage}{\largeurcarte-6mm}
+ \begin{center}
+ #1
+ \end{center}
+ \end{minipage}};
+ %\node[yshift=-1em] (B) at (A){};
+ %\ifboolKV[Cards]{Titre}{\node[fill=white] at (B) {\useKV[Cards]{NomTitre}};}{},
+ }
+}
+\makeatother
+
+\newlength{\largeurcards}
+\newlength{\hauteurcards}
+\newlength{\largeurcarte}
+\newlength{\hauteurcarte}
+\newlength{\hauteurtitre}
+\newlength{\largeurtitre}
+
+\newlength{\margeh}
+\newlength{\margev}
+
+\NewEnviron{Trame}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ % quadrillages horizontal et vertical
+ \coordinate[yshift=-\margev] (A) at (current page.north west);
+ \coordinate[yshift=-\margev] (B) at (current page.north east);
+ \coordinate[yshift=-\hauteurcards] (A1) at (A);
+ \coordinate[yshift=-\hauteurcards] (B1) at (B);
+ \coordinate[yshift=-\hauteurcards] (A2) at (A1);
+ \coordinate[yshift=-\hauteurcards] (B2) at (B1);
+ \coordinate[yshift=-\hauteurcards] (A3) at (A2);
+ \coordinate[yshift=-\hauteurcards] (B3) at (B2);
+ \coordinate[yshift=-\hauteurcards] (A4) at (A3);
+ \coordinate[yshift=-\hauteurcards] (B4) at (B3);
+ \coordinate[xshift=\margeh] (C) at (current page.north west);
+ \coordinate[xshift=\margeh] (D) at (current page.south west);
+ \coordinate[xshift=\largeurcards] (C1) at (C);
+ \coordinate[xshift=\largeurcards] (D1) at (D);
+ \coordinate[xshift=\largeurcards] (C2) at (C1);
+ \coordinate[xshift=\largeurcards] (D2) at (D1);
+ \coordinate[xshift=\largeurcards] (C3) at (C2);
+ \coordinate[xshift=\largeurcards] (D3) at (D2);
+ \draw (A) -- (B);
+ \draw (A1) -- (B1);
+ \draw (A2) -- (B2);
+ \draw (A3) -- (B3);
+ \draw (A4) -- (B4);
+ \draw (C)--(D);
+ \draw (C1)--(D1);
+ \draw (C2)--(D2);
+ \draw (C3)--(D3);
+ % point pour placer les cartes
+ \coordinate[xshift=\margeh+0.5\largeurcards,yshift=-0.5\hauteurcards] (Carte1) at (A);
+ \coordinate[xshift=\largeurcards,yshift=0mm] (Carte2) at (Carte1);
+ \coordinate[xshift=2\largeurcards,yshift=0mm] (Carte3) at (Carte1);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte4) at (Carte1);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte5) at (Carte2);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte6) at (Carte3);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte7) at (Carte4);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte8) at (Carte5);
+ \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte9) at (Carte6);
+ \BODY
+ \end{tikzpicture}
+}
+
+\setKVdefault[Cards]{Largeur=59,Hauteur=89,HauteurTheme=15,Marge=4,Landscape=false,Couleur=Cornsilk,Theme=Théorème\\de
+ Pythagore,ThemeSol=Solution,Trame=false,Titre=false,NomTitre=Jeu 1,Loop,BackgroundAv=false,BackgroundAr=false,ImageAv=4813762.jpg,ImageAr=4813762.jpg}
+
+\newcommand\Cartes[2][]{%
+ \useKVdefault[Cards]%
+ \setKV[Cards]{#1}%
+ \setsepchar[*]{§*/}%
+ \readlist*\ListeCards{#2}%
+ \ifboolKV[Cards]{Landscape}{%
+ \setlength{\hauteurcarte}{\fpeval{\useKV[Cards]{Largeur}-\useKV[Cards]{Marge}}mm}%
+ \setlength{\largeurcarte}{\fpeval{\useKV[Cards]{Hauteur}-\useKV[Cards]{Marge}}mm}%
+ \setlength{\largeurcards}{95mm}%
+ \setlength{\hauteurcards}{65mm}%
+ \setlength{\margeh}{(297mm-3\largeurcards)/2}%
+ \setlength{\margev}{(210mm-3\hauteurcards)/2}%
+ }{
+ \setlength{\hauteurcarte}{\fpeval{\useKV[Cards]{Hauteur}-\useKV[Cards]{Marge}}mm}%
+ \setlength{\largeurcarte}{\fpeval{\useKV[Cards]{Largeur}-\useKV[Cards]{Marge}}mm}%
+ \setlength{\largeurcards}{65mm}
+ \setlength{\hauteurcards}{95mm}
+ \setlength{\margeh}{(210mm-3\largeurcards)/2}
+ \setlength{\margev}{(297mm-3\hauteurcards)/2}
+ }
+ \setlength{\hauteurtitre}{\fpeval{\useKV[Cards]{HauteurTheme}}mm}%
+ \setlength{\largeurtitre}{\fpeval{(\useKV[Cards]{Largeur}-\useKV[Cards]{Marge}-9)/2}mm}%
+ \colorlet{TexteCouleur}{black}
+ \colorlet{TrameCouleur}{\useKV[Cards]{Couleur}}
+ \ifboolKV[Cards]{Loop}{%
+ \ifboolKV[Cards]{Trame}{%
+ \clearpage%
+ \thispagestyle{empty}%
+ \begin{Trame}
+ \multido{\i=1+1}{9}{%
+ \node at (Carte\i) {%
+ \begin{Mybox}{\ListeCards[\i,1]}{\useKV[Cards]{Theme}}{\ListeCards[\i,2]}%
+ \ListeCards[\i,3]%
+ \end{Mybox}%
+ };%
+ }%
+ \end{Trame}%
+ \clearpage%
+ }{%
+ \begin{Mybox}{\ListeCards[1,1]}{\useKV[Cards]{Theme}}{\ListeCards[1,2]}%
+ \ListeCards[1,3]%
+ \end{Mybox}%
+ }%
+ }{%
+ \ifboolKV[Cards]{Trame}{%
+ \clearpage%
+ \thispagestyle{empty}%
+ \begin{Trame}
+ \multido{\i=1+1}{9}{%
+ \node[] at (Carte\i) {%
+ \begin{MyboxSimpleAv}{\useKV[Cards]{Theme}}%
+ \ListeCards[\i,1]%
+ \end{MyboxSimpleAv}%
+ };%
+ }%
+ \end{Trame}%
+ \clearpage%
+ \thispagestyle{empty}%
+ \begin{Trame}
+ \multido{\i=1+1}{3}{%
+ \node at (Carte\i) {%
+ \begin{MyboxSimpleAr}{\useKV[Cards]{ThemeSol}}%
+ \ListeCards[\fpeval{4-\i},2]%
+ \end{MyboxSimpleAr}%
+ };%
+ }%
+ \multido{\i=4+1}{3}{%
+ \node at (Carte\i) {%
+ \begin{MyboxSimpleAr}{\useKV[Cards]{ThemeSol}}%
+ \ListeCards[\fpeval{10-\i},2]%
+ \end{MyboxSimpleAr}%
+ };%
+ }%
+ \multido{\i=7+1}{3}{%
+ \node at (Carte\i) {%
+ \begin{MyboxSimpleAr}{\useKV[Cards]{ThemeSol}}%
+ \ListeCards[\fpeval{16-\i},2]%
+ \end{MyboxSimpleAr}%
+ };%
+ }%
+ \end{Trame}%
+ \clearpage%
+ }{%
+ \begin{MyboxSimpleAv}{\useKV[Cards]{Theme}}%
+ \ListeCards[1,1]%
+ \end{MyboxSimpleAv}
+ \begin{MyboxSimpleAr}{\useKV[Cards]{ThemeSol}}%
+ \ListeCards[1,2]%
+ \end{MyboxSimpleAr}
+ }%
+ }%
+}
+
+\newcommand\SolutionCarte[2]{%
+ \begin{center}
+ \bfseries#1
+ \end{center}
+
+ #2
+}
+
+%%%
+% Tableur
+%%%
+\setKVdefault[Tableur]{Colonnes=4,Largeur=3,Formule={},Cellule=A1,Ligne=0,Colonne=0,PasL=1,PasC=1}
+
+%Basé sur un code de Christian Télléchéa.
+\makeatletter
+\newcount\cntlin
+\newcount\cntcol
+
+\newtoks\t@b
+\long\def\ifremain@lines#1\\#2\@nil{%
+ \csname @\ifx\@empty#2\@empty second\else first\fi oftwo\endcsname}
+\long\def\subst@eol#1\\#2\@nil{\addtot@b{#1\\\hline}%
+ \ifremain@lines#2\\\@nil{\addtot@b&\subst@eol#2\@nil}{\addtot@b{#2\CodeAfter\xintifboolexpr{\useKV[Tableur]{Ligne}=0 || \useKV[Tableur]{Colonne}=0}{}{\tikz\draw[line width=2pt](row-\fpeval{\useKV[Tableur]{Ligne}+1}-|col-\fpeval{\useKV[Tableur]{Colonne}+1}) rectangle (row-\fpeval{\useKV[Tableur]{Ligne}+1+\useKV[Tableur]{PasL}}-|col-\fpeval{\useKV[Tableur]{Colonne}+1+\useKV[Tableur]{PasC}});}\end{NiceTabular}}}}
+\long\def\collectcp@body#1\end{\subst@eol#1\@nil\end}
+
+\newcommand\addtot@b[1]{\t@b\expandafter{\the\t@b#1}}
+\newcommand\edftot@b[1]{\edef\temp@{#1}\expandafter\addtot@b\expandafter{\temp@}}
+
+\newlength\LongInter
+\newlength\TotalInter
+
+\newenvironment{Tableur}[1][]{%
+ \useKVdefault[Tableur]%
+ \setKV[Tableur]{#1}%
+ \ttfamily%
+ \setlength{\LongInter}{\fpeval{(\useKV[Tableur]{Colonnes}-1)*\useKV[Tableur]{Largeur}-4}em+\fpeval{\useKV[Tableur]{Colonnes}*2-6}\tabcolsep+\fpeval{\useKV[Tableur]{Colonnes}-3}\arrayrulewidth}
+ \newcolumntype X{>{\centering\arraybackslash}p{\useKV[Tableur]{Largeur}em}}%
+ \begin{tabular}{|p{\useKV[Tableur]{Largeur}em}|p{1em}|p{5em}|p{\LongInter}|}
+ \cline{1-2}\cline{4-4}%
+ \useKV[Tableur]{Cellule}&\centering\arraybackslash\scriptsize$\blacktriangledown$&$f_x$\hfill$\sum$~\scriptsize$\blacktriangledown$\hfill$=$&\useKV[Tableur]{Formule}\hfill\scriptsize$\blacktriangledown$\\
+ \cline{1-2}\cline{4-4}%
+ \end{tabular}
+
+ \cntlin\z@
+ \t@b{%
+ \begin{NiceTabular}{%
+ |>{%
+ \columncolor{gray!15}
+ \global\cntcol\z@\global\advance\cntlin\@ne
+ \centering\arraybackslash
+ \ifnum\cntlin>\@ne\number\numexpr\cntlin-1\relax\fi}
+ p{2em}|*{\useKV[Tableur]{Colonnes}}{X|}}%
+ \hline
+ \rowcolor{gray!15}}%
+ \loop
+ \ifnum\cntcol<\useKV[Tableur]{Colonnes}
+ \advance\cntcol\@ne
+ \addtot@b{&}%
+ \edftot@b{{\noexpand\@Alph\the\cntcol}}%
+ \repeat
+ \addtot@b{\\\hline&}%
+ \collectcp@body}{\the\t@b}
+\makeatother
+
+%%%
+% Domino
+%%%
+\newtcolorbox{MyDominoMini}[1][]{%
+ enhanced,
+ nobeforeafter,
+ left skip=0pt,
+ right skip=0pt,
+ left=0pt,right=0pt,top=0pt,bottom=0pt,
+ width=\textwidth/\ColonneDomino,
+ height=\textheight/\LigneDomino,
+ segmentation style={solid, line width=1.5pt},
+ colback=\CouleurDomino,
+ center upper,
+ valign upper=center,
+ center lower,
+ valign lower=center,
+ arc=2pt,
+ #1
+}
+
+\newtcolorbox{MyDominoLogo}[1][]{%
+ enhanced,
+ nobeforeafter,
+ left skip=0pt,
+ right skip=0pt,
+ left=0pt,right=0pt,top=0pt,bottom=0pt,
+ width=\textwidth/\ColonneDomino,
+ height=\textheight/\LigneDomino,
+ valign=center,
+ halign=center,
+ arc=2pt,
+ colback=white,
+ #1
+}
+
+\NewEnviron{TrameDomino}{%
+ \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);
+ % 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
+ \end{tikzpicture}
+}
+
+\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[*]{§*/}%
+ \readlist*\ListeDominos{#2}%
+ \xdef\CouleurDomino{\useKV[Domino]{Couleur}}%
+ \xdef\ratiodomino{\useKV[Domino]{Ratio}}%
+ \xdef\LigneDomino{\useKV[Domino]{Lignes}}%
+ \xdef\ColonneDomino{\useKV[Domino]{Colonnes}}%
+ \ifboolKV[Domino]{Trame}{%
+ \clearpage
+ \begin{TrameDomino}
+ \foreach\i in {1,...,\fpeval{\LigneDomino*\ColonneDomino}}{%
+ \node[] at (Domino\i){%
+ \ifboolKV[Domino]{Superieur}{%
+ \begin{MyDominoMini}[space=\ratiodomino]%
+ \ListeDominos[\i,1]\tcblower\ListeDominos[\i,2]%
+ \end{MyDominoMini}%
+ }{%
+ \begin{MyDominoMini}[sidebyside,sidebyside gap=4mm,righthand ratio=\ratiodomino]%
+ \ListeDominos[\i,1]\tcblower\ListeDominos[\i,2]%
+ \end{MyDominoMini}%
+ }%
+ };
+ }%
+ \end{TrameDomino}%
+ \ifboolKV[Domino]{Logo}{%
+ \clearpage
+ \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}%
+ }{}%
+ }{%
+ \ifboolKV[Domino]{Superieur}{%
+ \begin{MyDominoMini}[space=\ratiodomino]%
+ \ListeDominos[1,1]\tcblower\ListeDominos[1,2]%
+ \end{MyDominoMini}%
+ }{%
+ \begin{MyDominoMini}[sidebyside,sidebyside gap=4mm,righthand ratio=\ratiodomino]%
+ \ListeDominos[1,1]\tcblower%
+ \ListeDominos[1,2]%
+ \end{MyDominoMini}%
+ }%
+ }%
}% \ No newline at end of file