summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/ProfCollege.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-11-08 03:02:49 +0000
committerNorbert Preining <norbert@preining.info>2021-11-08 03:02:49 +0000
commitf3bd7117b5dfa4a51d51c4e416c8a656651f1ce2 (patch)
tree5053c95dab175775cc85badf7990ffa535676f23 /macros/latex/contrib/profcollege/latex/ProfCollege.sty
parent8389f0bb8e6af2c5dcbfe3cdad746a9c170d1157 (diff)
CTAN sync 202111080302
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/ProfCollege.sty')
-rw-r--r--macros/latex/contrib/profcollege/latex/ProfCollege.sty1037
1 files changed, 686 insertions, 351 deletions
diff --git a/macros/latex/contrib/profcollege/latex/ProfCollege.sty b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
index c2d0d77ee7..1dd88a757a 100644
--- a/macros/latex/contrib/profcollege/latex/ProfCollege.sty
+++ b/macros/latex/contrib/profcollege/latex/ProfCollege.sty
@@ -1,23 +1,23 @@
% Author : Christophe Poulain
-% Licence : Released under the LaTeX Project Public License v1.3c
+% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfCollege}[2021/10/01 v0.99-h Aide pour l'utilisation de LaTeX au collège]
+\ProvidesPackage{ProfCollege}[2021/11/01 v0.99-i Aide pour l'utilisation de LaTeX au collège]
\RequirePackage{verbatim}
-\RequirePackage{mathtools}%Amélioration des rendus
+\RequirePackage{mathtools}
\RequirePackage{amssymb}
% mathématiques
-\RequirePackage{siunitx}%unités SI
+\RequirePackage{siunitx}
\sisetup{%
- locale=FR,
+ locale=FR,%
detect-all,%
output-decimal-marker={,},%
group-minimum-digits=4%
-}
+}%
\DeclareSIUnit{\kmh}{\km\per\hour}
\newcommand\speed[1]{\SI{#1}{\kmh}}
@@ -79,7 +79,6 @@
\RequirePackage{multido}
\RequirePackage{xlop}%Pour effectuer les calculs nécessaires.
-%\opset{decimalsepsymbol={,}}%
\RequirePackage{xfp}%Pour les calculs trigonométriques
@@ -88,7 +87,7 @@
\RequirePackage{tikz}
% https://tex.stackexchange.com/questions/349259/curved-arrow-describing-a-step-in-a-equation-derivation
%https://tex.stackexchange.com/questions/58656/best-way-to-draw-a-chevron-diagram-using-tikz
-\usetikzlibrary{calc,shapes,arrows,tikzmark,chains,positioning,shapes.symbols,babel}
+\usetikzlibrary{calc,shapes,arrows,tikzmark,chains,positioning,shapes.symbols,babel,fit}
\RequirePackage{suffix}%pour la commande étoilée
@@ -100,7 +99,7 @@
\RequirePackage[thicklines]{cancel}
\RequirePackage{fontawesome5}%Pour l'environnement Twitter
-
+\RequirePackage{pifont}%Pour la commande \Autonomie
\RequirePackage{nicematrix}%pour le tableur
\let\myoldmulticolumn\multicolumn
@@ -111,7 +110,6 @@
% https://stackoverflow.com/questions/3391103/how-to-make-the-grayed-round-box-using-tiks
\RequirePackage{environ}
-%
%%%%% Quelques besoins particuliers
@@ -181,13 +179,13 @@
\else%
\hbox to#1{\Dotfill}%
\fi
-}
+}%
\newcommand\Lignespointilles[1]{%
\xintFor* ##1 in {\xintSeq {1}{#1}}\do{%
\pointilles\par%
- }
-}
+ }%
+}%
\newcommand\MultiCol[2]{%
\setsepchar[*]{/}%
@@ -277,7 +275,7 @@
\today\relax%
\fi%
\fi%
- \ifnum\month=8\relax%
+ \ifnum\month=8\relax%
\ifnum\day>31\relax%
\day=\numexpr1\relax%
\advance\month by 1\relax%
@@ -519,6 +517,157 @@
}
%%%
+% Op\'erations pos\'es à trou
+%%%
+%% D'après https://tex.stackexchange.com/questions/277246/drawing-a-circle-around-the-numbers-in-xlop-package
+
+\newcommand{\PfCchiffre}[2]{\tikz[remember picture] \node[inner sep=0pt](#1){#2};}
+
+\newcommand{\PfCentoure}[2]{\tikz[remember picture,overlay] \node[preaction={draw={\useKV[ClesOperations]{CouleurCadre}},ultra thick,opacity=1,
+transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick,inner sep=.55em,fit=(#1.center)(#2.center)]{} ;}
+
+\newcounter{divxlop}%
+\newcounter{mulxlop}%
+\newcounter{addxlop}%
+\newcounter{subxlop}%
+
+\setKVdefault[ClesOperations]{Solution=false,CouleurCadre=LightSteelBlue,CouleurSolution=red,CouleurFond=white,CouleurVirgule=white}
+
+\newcommand\Division[3][]{%
+ \useKVdefault[ClesOperations]%
+ \setKV[ClesOperations]{#1}%
+ \setcounter{divxlop}{0}%
+ \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}}%
+ \opidiv[lineheight=1.5em,columnwidth=1.25em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},remainderstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop},resultstyle=\stepcounter{divxlop}\color{PfCSolOp}\PfCchiffre{A\thedivxlop}]{#2}{#3}%
+ \foreach \i in {1,...,\thedivxlop}{%
+ \PfCentoure{A\i}{A\i}%
+ }%
+}%
+
+\newcommand\Multiplication[3][]{%
+ \useKVdefault[ClesOperations]%
+ \setKV[ClesOperations]{#1}%
+ \setcounter{mulxlop}{0}%
+ \ifboolKV[ClesOperations]{Solution}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}%
+ \opmul[decimalsepsymbol={,},lineheight=2em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{mulxlop}\color{PfCSolOp}\PfCchiffre{A\themulxlop},resultstyle=\stepcounter{mulxlop}\color{PfCSolOp}\PfCchiffre{A\themulxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}%
+ \foreach \i in {1,...,\themulxlop}{%
+ \PfCentoure{A\i}{A\i}%
+ }%
+}%
+
+\newcommand\Addition[3][]{%
+ \useKVdefault[ClesOperations]%
+ \setKV[ClesOperations]{#1}%
+ \setcounter{addxlop}{0}%
+ \ifboolKV[ClesOperations]{Solution}{\opset{carryadd,carrystyle=\color{PfCSolOp}\scriptsize}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\opset{carryadd=false}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}%
+ \opadd[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{addxlop}\color{PfCSolOp}\PfCchiffre{A\theaddxlop},resultstyle=\stepcounter{addxlop}\color{PfCSolOp}\PfCchiffre{A\theaddxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}
+ \foreach \i in {1,...,\theaddxlop}{%
+ \PfCentoure{A\i}{A\i}%
+ }%
+}%
+
+\newcommand\Soustraction[3][]{%
+ \useKVdefault[ClesOperations]%
+ \setKV[ClesOperations]{#1}%
+ \setcounter{subxlop}{0}%
+ \ifboolKV[ClesOperations]{Solution}{\opset{carrysub,carrystyle=\color{PfCSolOp}\scriptsize}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurSolution}}\colorlet{PfCCouleurVirgule}{PfCSolOp}}{\opset{carrysub=false}\colorlet{PfCSolOp}{\useKV[ClesOperations]{CouleurFond}}\colorlet{PfCCouleurVirgule}{\useKV[ClesOperations]{CouleurVirgule}}}%
+ \opsub[decimalsepsymbol={,},lineheight=1.75em,columnwidth=1.5em,displayintermediary=all,voperator=bottom,intermediarystyle=\stepcounter{subxlop}\color{PfCSolOp}\PfCchiffre{A\thesubxlop},resultstyle=\stepcounter{subxlop}\color{PfCSolOp}\PfCchiffre{A\thesubxlop},resultstyle.d=\color{PfCCouleurVirgule}]{#2}{#3}%
+ \foreach \i in {1,...,\thesubxlop}{%
+ \PfCentoure{A\i}{A\i}
+ }%
+}%
+
+%%%
+% Cartographie
+%%%
+\setKVdefault[Cartographie]{Echelle=1,Carte=false,All=false,Europe=false,Asie=false,Amsud=false,Amnord=false,Amcentre=false,Caraibes=false,Afrique=false,AfficheEchelle=false,PaysSeul=false,VillesSup=false,Capitales=false,Impression=false,Fleuves=false,CouleurFond=ciel,Largeur=12,Hauteur=12,Arborescence="/usr/local/texlive/2021/texmf-dist/metapost/profcollege/datastest/"}
+\defKV[Cartographie]{EchelleCarte=\setKV[Cartographie]{Carte}}
+\defKV[Cartographie]{Pays=\setKV[Cartographie]{PaysSeul}}
+\defKV[Cartographie]{Villes=\setKV[Cartographie]{VillesSup}}
+
+\newcommand\Cartographie[3][]{%
+ \ifluatex
+ \useKVdefault[Cartographie]
+ \setKV[Cartographie]{#1}
+ \mplibforcehmode
+ \begin{mplibcode}
+ input PfCMonde;
+ string arborescence;
+ arborescence:=\useKV[Cartographie]{Arborescence};
+ LargeurCadre=\useKV[Cartographie]{Largeur};
+ HauteurCadre=\useKV[Cartographie]{Hauteur};
+ distanceecran=100*\useKV[Cartographie]{Echelle};
+ fleuves:=\useKV[Cartographie]{Fleuves};
+ boolean Carte,Impression,VillesSup;
+ Carte=\useKV[Cartographie]{Carte};
+ Impression=\useKV[Cartographie]{Impression};
+ VillesSup=\useKV[Cartographie]{VillesSup};
+ couleurfond:=\useKV[Cartographie]{CouleurFond};
+ if Impression:
+ noncolore:=true;
+ payscolor:=0.85white;
+ couleurfond:=white;
+ couleurfleuve:=couleurfond;
+ fi;
+ capitales:=\useKV[Cartographie]{Capitales};
+ All:=\useKV[Cartographie]{All};
+ Europe:=\useKV[Cartographie]{Europe};
+ Asie:=\useKV[Cartographie]{Asie};
+ Amsud:=\useKV[Cartographie]{Amsud};
+ Amnord:=\useKV[Cartographie]{Amnord};
+ Amcentrale:=\useKV[Cartographie]{Amcentre};
+ Caraibes:=\useKV[Cartographie]{Caraibes};
+ Afrique:=\useKV[Cartographie]{Afrique};
+ if Carte:
+ Echelle:=\useKV[Cartographie]{AfficheEchelle};
+ figure(-0.5u*LargeurCadre,-0.5u*HauteurCadre,0.5u*LargeurCadre,0.5u*HauteurCadre);
+ if \useKV[Cartographie]{PaysSeul}:
+ projection:="bonne";
+ theta:=#2;
+ phi:=#3;
+ zoom(echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
+ fill (bonnec(-90,-180) for k=-85 step 5 until 90:..bonnec(k,-180) endfor)..reverse(bonnec(-90,180) for k=-85 step 5 until 90:..bonnec(k,180) endfor)..cycle withcolor couleurfond;
+ lecturep(arborescence&\useKV[Cartographie]{Pays}&".dat",couleurfond);%
+ trace feuillet withpen pencircle scaled 2;
+ if Echelle=true:
+ draw ((Xa,Ya)+u*(1,1))--((Xa,Ya)+u*(2,1));
+ labeloffset:=labeloffset*1.5;
+ label.top(btex 0 etex,(Xa,Ya)+u*(1,1));
+ label.top(TEX(""&decimal(Long)&"~km"),(Xa,Ya)+u*(2,1));
+ labeloffset:=labeloffset/1.5;
+ draw ((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9));
+ draw (((Xa,Ya)+u*(1,1.1))--((Xa,Ya)+u*(1,0.9))) shifted(u*(1,0));
+ fi;
+ else:
+ projection:="bonne";
+ Projection(#2,#3,echelle(#2,#3,\useKV[Cartographie]{EchelleCarte}));
+ trace feuillet withpen pencircle scaled 2;
+ fi;
+ if VillesSup:
+ nomfichiermul:=\useKV[Cartographie]{Villes};
+ nblec:=scantokens readfrom nomfichiermul;
+ drawoptions(withcolor (0.15,0.15,0.15));
+ projection:="bonne";
+ for p=1 upto nblec:
+ pair Coord[],latlon;string p_;
+ latlon=scantokens readfrom nomfichiermul;
+ p_=scantokens readfrom nomfichiermul;
+ Coord[p]=bonnec(ypart(latlon),xpart(latlon));
+ dotlabel.scantokens readfrom nomfichiermul(TEX(""&p_&""),Coord[p]);
+ endfor;
+ drawoptions();
+ closefrom nomfichiermul;
+ fi;
+ else:
+ mappemonde(#2,#3);
+ fi;
+ \end{mplibcode}
+ \else
+ \PackageWarning{ProfCollege}{"La commande Cartographie n'est compatible qu'avec LuaLaTeX."}
+ \fi
+}%
+
+%%%
% Twitter
%%%
\setKVdefault[Twitter]{Largeur=0.95\linewidth,Auteur=Christophe,Date=\today,Url=ViveLaTeX,EchelleLogo=0.035,Logo=DrStrange,Publie=false}
@@ -711,11 +860,11 @@
\RKsad
- \vspace{1em}
-
+ \vspace{1em}
+
\RKsmallsmile
-
- \vspace{1em}
+
+ \vspace{1em}
\RKbigsmile
\end{center}
@@ -1114,7 +1263,7 @@
\ppcm=1\relax
\foreachitem\x\in\ListeRgt{%
\PPCM{\fpeval{\ListeRgt[\xcnt,2]}}{\fpeval{\the\ppcm}}%
- }%ok
+ }%
% On cr\'ee la liste des rangements.
\DTLcleardb{mtnumedb}%
% on les trie pour les ranger par ordre croissant
@@ -1173,7 +1322,7 @@
\setKV[MotsCodes]{#1}%
\setsepchar[*]{§*/}%
\readlist*\ListeMotsCodes{#2}%
- \xdef\ListeMotsCodesPas{\fpeval{\ListeMotsCodeslen/\useKV[MotsCodes]{Colonnes}}}
+ \xdef\ListeMotsCodesPas{\fpeval{\ListeMotsCodeslen/\useKV[MotsCodes]{Colonnes}}}%
\begin{NiceTabular}{*{\fpeval{\useKV[MotsCodes]{Colonnes}}}{>{\centering\arraybackslash}m{\useKV[MotsCodes]{Largeur}}}}
\xintFor* ##1 in {\xintSeq {1}{\ListeMotsCodesPas}}\do{%
\xintFor* ##2 in {\xintSeq {1}{\fpeval{\useKV[MotsCodes]{Colonnes}}}}\do{%
@@ -1195,7 +1344,7 @@
\newcommand\MotsCodesTableau[3][]{%
\useKVdefault[MotsCodes]%
\setKV[MotsCodes]{#1}%
- \setsepchar[*]{,*/}
+ \setsepchar[*]{,*/}%
\readlist*\ListeMotsCodesTableau{#2}%
\xdef\ListeMotsCodesMax{0}%
\setsepchar{,}%
@@ -1232,7 +1381,6 @@
\tikzset{FIndirect/.style={stealth-}}
\tikzset{FBidirect/.style={stealth-stealth}}
-
\newcommand\Labyrinthe[3][]{%
\useKVdefault[Labyrinthe]%
\setKV[Labyrinthe]{#1}%
@@ -1364,7 +1512,7 @@
%%%
% Triominos
%%%
-\setKVdefault[ClesTriomino]{Longueur=5cm,Etages=3,AffichagePiece=false}
+\setKVdefault[ClesTriomino]{Longueur=5cm,Etages=3,AffichagePiece=false}%
\defKV[ClesTriomino]{Piece=\setKV[ClesTriomino]{AffichagePiece=true}}%
\def\TraceTriomino#1{%
@@ -1496,7 +1644,7 @@
\setKV[ClesTriomino]{#1}%
\setsepchar{§}%\ignoreemptyitems%
\readlist*\ListeTriominos{#2}%
- \toklisteTriomino{}
+ \toklisteTriomino{}%
\ifboolKV[ClesTriomino]{AffichagePiece}{%
\setKV[ClesTriomino]{Etages=1}%
\TraceTriomino{"\ListeTriominos[\fpeval{3*\useKV[ClesTriomino]{Piece}-2}]","\ListeTriominos[\fpeval{3*\useKV[ClesTriomino]{Piece}-1}]","\ListeTriominos[\fpeval{3*\useKV[ClesTriomino]{Piece}}]"}%
@@ -2466,7 +2614,7 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
}%
%%% Autonomie %%%
-\setKVdefault[Autonomie]{AfficheMarge=false,TitreEnigme=Enigme,TitreAtoi=\`A toi,Enigme=false,TexteCorrection=\bfseries Correction}%
+\setKVdefault[Autonomie]{AfficheMarge=false,TitreEnigme=Enigme,TitreAtoi=\`A toi,Enigme=false,TexteCorrection=\bfseries Correction,ARemplir=false,Deux=false}%
\newcommand\Autonomie[3][]{%
\useKVdefault[Autonomie]%
@@ -2493,9 +2641,16 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\coordinate[yshift=-\i*0.25*\paperheight] (F\i) at (current page.north east);%
\coordinate[yshift=-\i*0.25*\paperheight] (D\i) at (A1);%
\coordinate[yshift=-\i*0.25*\paperheight] (E\i) at (A3);%
- \draw (C\i) to (D\i);
- \draw (E\i) to (F\i);
- }
+ }%
+ \ifboolKV[Autonomie]{Deux}{%
+ \draw (C2) to (D2);
+ \draw (E2) to (F2);
+ }{%
+ \foreach\i in{1,...,4}{%
+ \draw (C\i) to (D\i);
+ \draw (E\i) to (F\i);
+ }%
+ }%
\coordinate (Q1) at ($(F1)!0.5!(A3)$);
\coordinate (Q2) at ($(F2)!0.5!(E1)$);
\coordinate (Q3) at ($(F3)!0.5!(E2)$);
@@ -2506,12 +2661,28 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\coordinate (Q8) at ($(C4)!0.5!(D3)$);
\draw[dashed] (A1) to (B1);%
\draw[dashed] (A3) to (B3);%
- \foreach \i in {1,...,4}{%
- \node[xshift=-5mm,align=justify,anchor=center,text width=0.8*0.25\textwidth] (Test\i) at (Q\i) {\ding{\fpeval{171+\i}}~\ListeAutoQ[\i,1]};
- }
- \foreach \i in {5,...,8}{%
- \node[align=justify,anchor=center,text width=0.8*0.25\textwidth] (Test\i) at (Q\i) {\ding{\fpeval{171+\i}}~\ListeAutoQ[\i,1]};
- }
+ \ifboolKV[Autonomie]{ARemplir}{%
+ \ifboolKV[Autonomie]{Deux}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test1) at ($(Q1)!0.5!(Q2)$) {\ListeAutoQ[1,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test2) at ($(Q3)!0.5!(Q4)$) {\ListeAutoQ[2,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test3) at ($(Q5)!0.5!(Q6)$) {\ListeAutoQ[3,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test4) at ($(Q7)!0.5!(Q8)$) {\ListeAutoQ[4,1]};
+ }{%
+ \foreach \i in {1,...,4}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};
+ }%
+ \foreach \i in {5,...,8}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] (Test\i) at (Q\i) {\ListeAutoQ[\i,1]};
+ }%
+ }%
+ }{%
+ \foreach \i in {1,...,4}{%
+ \node[xshift=-5mm,align=justify,anchor=center,text width=0.8*0.25\textwidth] (Test\i) at (Q\i) {\ding{\fpeval{171+\i}}~\ListeAutoQ[\i,1]};
+ }%
+ \foreach \i in {5,...,8}{%
+ \node[align=justify,anchor=center,text width=0.8*0.25\textwidth] (Test\i) at (Q\i) {\ding{\fpeval{171+\i}}~\ListeAutoQ[\i,1]};
+ }%
+ }%
\end{tikzpicture}
\clearpage
\begin{tikzpicture}[remember picture,overlay]%
@@ -2523,15 +2694,21 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\foreach \i in {1,...,3}{%
\coordinate[xshift=\i*0.25*\paperwidth] (A\i) at (current page.north west);%
\coordinate[xshift=\i*0.25*\paperwidth] (B\i) at (current page.south west);%
- }
+ }%
\foreach \i in{1,...,4}{%
\coordinate[yshift=-\i*0.25*\paperheight] (C\i) at (current page.north west);%
\coordinate[yshift=-\i*0.25*\paperheight] (F\i) at (current page.north east);%
\coordinate[yshift=-\i*0.25*\paperheight] (D\i) at (A1);%
\coordinate[yshift=-\i*0.25*\paperheight] (G\i) at (A2);%
\coordinate[yshift=-\i*0.25*\paperheight] (E\i) at (A3);%
- \draw (C\i) to (F\i);
- }
+ }%
+ \ifboolKV[Autonomie]{Deux}{%
+ \draw (C2) to (F2);
+ }{%
+ \foreach \i in{1,...,4}{%
+ \draw (C\i) to (F\i);
+ }%
+ }%
\coordinate (T1) at ($(current page.north west)!0.5!(A1)$);
\coordinate (T2) at ($(C1)!0.5!(D1)$);
\coordinate (T3) at ($(C2)!0.5!(D2)$);
@@ -2564,26 +2741,52 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul.
\coordinate (S6) at ($(R2)!0.5!(R6)$);
\coordinate (S7) at ($(R3)!0.5!(R7)$);
\coordinate (S8) at ($(R4)!0.5!(R8)$);
+ \coordinate (V1) at ($(T1)!0.5!(U1)$);
+ \coordinate (V2) at ($(T2)!0.5!(U2)$);
+ \coordinate (V3) at ($(T3)!0.5!(U3)$);
+ \coordinate (V4) at ($(T4)!0.5!(U4)$);
+ \coordinate (V5) at ($(T5)!0.5!(U5)$);
+ \coordinate (V6) at ($(T6)!0.5!(U6)$);
+ \coordinate (V7) at ($(T7)!0.5!(U7)$);
+ \coordinate (V8) at ($(T8)!0.5!(U8)$);
\draw[dashed] (A1) to (B1);%
\draw[dashed] (A2) to (B2);
\draw[dashed] (A3) to (B3);%
- \foreach \i in {1,...,8}{%
- \node[rotate=90,anchor=north] (Cor\i) at (S\i) {\useKV[Autonomie]{TexteCorrection}};
- \node[anchor=west,xshift=2em,text width=0.8*0.25\paperwidth] (Test\i)
- at (S\i) {\ListeAutoQ[\i,2]};
- \node[anchor=north,yshift=-1em,text width=0.85*0.25\paperwidth] (TestEn\i)
- at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi} :} \ListeAutoEn[\i,1]};
- \ifboolKV[Autonomie]{Enigme}{%
- \node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i)
- at (U\i) {%
- \ListeAutoEn[\i,2] : \pointilles\\
- Lettre \ding{\fpeval{171+\i}} : \pointilles
- };%
+ \ifboolKV[Autonomie]{ARemplir}{%
+ \ifboolKV[Autonomie]{Deux}{%
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V1)!0.5!(V2)$) {\ListeAutoEn[1,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V3)!0.5!(V4)$) {\ListeAutoEn[2,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V5)!0.5!(V6)$) {\ListeAutoEn[3,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(V7)!0.5!(V8)$) {\ListeAutoEn[4,1]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R1)!0.5!(R2)$) {\ListeAutoQ[1,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R3)!0.5!(R4)$) {\ListeAutoQ[2,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R5)!0.5!(R6)$) {\ListeAutoQ[3,2]};
+ \node[align=justify,anchor=center,text width=0.9*0.25\textwidth] at ($(R7)!0.5!(R8)$) {\ListeAutoQ[4,2]};
}{%
- \node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i)
- at (U\i) {%
- \ListeAutoEn[\i,2]%
- };%
+ \foreach \i in {1,...,8}{%
+ \node[text width=0.9*0.25\paperwidth] at (V\i) {\ListeAutoQ[\i,2]};
+ \node[text width=0.9*0.25\paperwidth] at (R\i) {\ListeAutoEn[\i,1]};
+ }%
+ }%
+ }{%
+ \foreach \i in {1,...,8}{%
+ \node[rotate=90,anchor=north] (Cor\i) at (S\i) {\useKV[Autonomie]{TexteCorrection}};
+ \node[anchor=west,xshift=2em,text width=0.8*0.25\paperwidth] (Test\i)
+ at (S\i) {\ListeAutoQ[\i,2]};
+ \node[anchor=north,yshift=-1em,text width=0.85*0.25\paperwidth] (TestEn\i)
+ at (T\i) {\textbf{\useKV[Autonomie]{TitreAtoi} :} \ListeAutoEn[\i,1]};
+ \ifboolKV[Autonomie]{Enigme}{%
+ \node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i)
+ at (U\i) {%
+ \ListeAutoEn[\i,2] : \pointilles\\
+ Lettre \ding{\fpeval{171+\i}} : \pointilles
+ };%
+ }{%
+ \node[anchor=south,yshift=1em,text width=0.85*0.25\paperwidth] (TestREn\i)
+ at (U\i) {%
+ \ListeAutoEn[\i,2]%
+ };%
+ }%
}%
}
\end{tikzpicture}
@@ -12994,7 +13197,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%%
% Formules
%%%
-\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carr\'e,Solide=pav\'e,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white}
+\setKVdefault[ClesFormule]{Perimetre=false,Aire=false,Volume=false,Surface=carr\'e,Solide=pav\'e,Angle=0,Ancre={(0,0)},Largeur=5cm,Couleur=white,EchelleEspace=70}
\def\MPFigureCarre{%
\ifluatex
@@ -13199,7 +13402,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
drawoptions( dashed dashpattern(on1cm));
typetrace:="3D";
Figure(-10u,-10u,10u,10u);
- Initialisation(5,0,10,500);
+ Initialisation(5,0,10,\useKV[ClesFormule]{EchelleEspace});
color O,A,B,C;
O=(0,0,0);
A-O=(0,1/2,0);
@@ -13284,7 +13487,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
typetrace:="3D";
typerepre:="persp";
Figure(-10u,-10u,10u,10u);
- Initialisation(5,30,20,115);
+ Initialisation(5,30,20,\useKV[ClesFormule]{EchelleEspace});
color A,B,C,D,E,F,G,H;
D=(0.75,0,0);
G=(0,1,0);
@@ -13378,7 +13581,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
typetrace:="3D";
typerepre:="persp";
Figure(-10u,-10u,10u,10u);
- Initialisation(5,0,20,70);
+ Initialisation(5,0,20,\useKV[ClesFormule]{EchelleEspace});
color O,O',A,A',B,B',C,C';
O=(0,0,0);
O'-O=(0,0,1);
@@ -13444,7 +13647,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
typetrace:="3D";
typerepre:="persp";
Figure(-10u,-10u,10u,10u);
- Initialisation(5,0,10,70);
+ Initialisation(5,0,10,\useKV[ClesFormule]{EchelleEspace});
color O,O',A,B,C;
O=(0,0,0);
O'-O=(0,0,1.5);
@@ -14276,11 +14479,15 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
% ValeurOrigine permet de faire des morceaux de demi-droite gradu\'ee en passant par droite :)
\def\Updatetoksdroite#1/#2\nil{\addtotok\toklistepointdroite{#1,"#2",}}
+\def\Updatetoksdroite#1/#2\nil{\addtotok\toklistepointdroite{#1,"#2",}}
+\def\Updatetoksdemidroite#1/#2\nil{\addtotok\toklistenompointdemidroite{"#2",}}
\def\Updatetoksrepere#1/#2/#3\nil{\addtotok\toklistepointrepere{#1,#2,"#3",}}
\def\Updatetoksespace#1/#2/#3/#4\nil{\addtotok\toklistepointespace{#1,#2,#3,"#4",}}
\newtoks\toklistepointrepere%
\newtoks\toklistepointdroite%
+\newtoks\toklistepointdemidroite%
+\newtoks\toklistenompointdemidroite%
\newtoks\toklistepointespace%
% Pour construire le rep\`ere de l'espace
@@ -14347,12 +14554,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
path Codageun,Codagedeux;
if k>0:
Codageun=cercles(O,1[O,C],O,1[O,C],D) cutafter chemin(O,(cosd(k),sind(k),0));
- else:
+ elseif k<0:
Codageun=cercles(O,1[O,C],O,1[O,C],D) cutbefore chemin(O,(cosd(k),sind(k),0));
fi;
if l>0:
Codagedeux=cercles(O,(cosd(k),sind(k),0),O,(cosd(k),sind(k),0),Z) cutafter chemin(O,M[n]);
- else:
+ elseif l<0:
Codagedeux=cercles(O,(cosd(k),sind(k),0),O,(cosd(k),sind(k),0),Z) cutbefore chemin(O,M[n]);
fi;
%%%% if l>0:
@@ -14362,8 +14569,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%%fill Projette(O)--Codagedeux--Projette((cosd(k),sind(k),0))--cycle withcolor \useKV[ClesReperage]{CouleurLa};
%%%fill Projette(O)--Codageun--Projette(C)--cycle withcolor \useKV[ClesReperage]{CouleurLon};
%%%fi;
- trace Codageun;
- trace Codagedeux;
+ if unknown Codageun: else: trace Codageun; fi;
+ if unknown Codagedeux: else: trace Codagedeux; fi;
if \useKV[ClesReperage]{AffichageCoord}:
picture CodageUn,CodageDeux;
CodageUn=image(
@@ -14439,12 +14646,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
path Codageun,Codagedeux;
if k>0:
Codageun=cercles(O,1[O,C],O,1[O,C],D) cutafter chemin(O,(cosd(k),sind(k),0));
- else:
+ elseif k<0:
Codageun=cercles(O,1[O,C],O,1[O,C],D) cutbefore chemin(O,(cosd(k),sind(k),0));
fi;
if l>0:
Codagedeux=cercles(O,(cosd(k),sind(k),0),O,(cosd(k),sind(k),0),Z) cutafter chemin(O,M[n]);
- else:
+ elseif k<0:
Codagedeux=cercles(O,(cosd(k),sind(k),0),O,(cosd(k),sind(k),0),Z) cutbefore chemin(O,M[n]);
fi;
%if l>0:
@@ -14454,8 +14661,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%fill Projette(O)--Codagedeux--Projette((cosd(k),sind(k),0))--cycle withcolor \useKV[ClesReperage]{CouleurLa};
%fill Projette(O)--Codageun--Projette(C)--cycle withcolor \useKV[ClesReperage]{CouleurLon};
%fi;
- trace Codageun;
- trace Codagedeux;
+ if unknown Codageun: else: trace Codageun; fi;
+ if unknown Codagedeux: else: trace Codagedeux; fi;
if AffichageCoord:
picture CodageUn,CodageDeux;
CodageUn=image(
@@ -15483,41 +15690,45 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\fi
}
-\def\MPDEMIGraduee#1#2#3#4#5#6#7#8{%
- % #1 : unite
- % #2 : pas
- % #3 : liste des points \`a placer en pas. pour g\'erer le cas des rep\'erages fractionnaires
- % #4 : on affiche le nom des points ou pas
- % #5 : quelle est la valeur de la longueur unit\'e ?
- % #6 : la valeur de l'unit\'e (ne sert \`a rien ici, mais en pr\'evision
- % 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"
+\def\MPNewDEMIGraduee#1#2{%
+ % #1 : liste des points \`a placer en pas. pour g\'erer le cas des rep\'erages fractionnaires
+ % #2 : liste des noms des points
\ifluatex
\mplibforcehmode
\begin{mplibcode}
maxx:=0;
- unitex:=#1*cm;
- pasx:=#2;
+ unitex:=\useKV[ClesReperage]{Unitex}*cm;
+ pasx:=\useKV[ClesReperage]{Pasx};
unitp:=unitex/pasx;%unit\'e de d\'eplacement
- vardef toto(text t)=%On d\'etermine le nombre "d'unit\'es" \`a placer
+ ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex};
+ ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine};
+ AffichageGrad:=\AffichageGrad;
+ AffichageCoord:=\useKV[ClesReperage]{AffichageAbs};
+ AffichageNom:=\AffichageNom;
+ numeric valeur[];
+ vardef titi(text t)=
+ n:=0;
for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
+ n:=n+1;
+ valeur[n]=p_;
+ endfor;
+ enddef;
+ titi(#1);
+ % Détermination de l'abscisse maximale
+ for k=1 upto n:
+ if valeur[k]>maxx:
+ maxx:=valeur[k];
fi;
endfor;
maxx:=maxx+1;
- if maxx<(#2+1):
- maxx:=#2+1;
+ if maxx<(pasx+1):
+ maxx:=pasx+1;
fi;
- enddef;
- toto(#3);
- Figure(-u,-u,(maxx+0.75)*unitp,u);
+ % -----
pair A,B;
A=(0,0);
B=unitp*(maxx,0);
+ % On trace la demi-droite
drawarrow A--(B+(0.75*unitp,0));
% marquage secondaire
marque_s:=marque_s/3;
@@ -15530,100 +15741,92 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
for k=0 step pasx until (maxx-1):
draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
endfor;
- % marquage des points
+ %% 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:
+ dotlabel.bot(TEX("\footnotesize\num{"&decimal(ValeurUnitex)&"}"),unitex*(1,0));
+ label.bot(TEX("\footnotesize\num{"&decimal(ValeurOrigine)&"}"),A);
+ if AffichageGrad>0:
for k=2 upto maxx:
- dotlabel.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}"),unitex*(k,0));
+ dotlabel.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(k)&"}}"),unitex*(k,0));
endfor;
fi;
- vardef tata(text t)=%on place les points
- if #4>0:
+ %%
+ vardef tata(text t)=
+ if AffichageNom>0:
+ n:=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;
+ n:=n+1;
+ label.top(TEX(p_),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
endfor;
fi;
- if #7=3:
+ if AffichageCoord=3:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
if p_<>"":
- drawarrow (unitp*(k,-1))--(unitp*(k,-0.3));
- label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(k,-1)));
- pointe(unitp*(k-#6,0));
- fi;
+ drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+ label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1)));
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=2:
+ elseif AffichageCoord=2:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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));
+ if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+ label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
else:
- label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
- fi;
- pointe(unitp*(k,0));
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
- elseif #7=1:
+ elseif AffichageCoord=1:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
if p_<>"":
- label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
- pointe(unitp*(k,0));
- fi;
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
fi;
enddef;
- tata(#3);
+ %----
+ tata(#2);
+ clip currentpicture to polygone(u*(-1,-1),((maxx+0.75)*unitp,-u),((maxx+0.75)*unitp,u),u*(-1,1));
\end{mplibcode}
\else
- \begin{mpost}
+ \begin{mpost}[mpsettings={unitex:=\useKV[ClesReperage]{Unitex}*cm; pasx:=\useKV[ClesReperage]{Pasx}; unitp:=unitex/pasx; ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex}; ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine}; AffichageGrad:=\AffichageGrad; AffichageCoord:=\useKV[ClesReperage]{AffichageAbs}; AffichageNom:=\AffichageNom;}]
maxx:=0;
- unitex:=#1*cm;
- pasx:=#2;
- unitp:=unitex/pasx;%unit\'e de d\'eplacement
- vardef toto(text t)=%On d\'etermine le nombre "d'unit\'es" \`a placer
+ numeric valeur[];
+ vardef titi(text t)=
+ n:=0;
for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
+ n:=n+1;
+ valeur[n]=p_;
+ endfor;
+ enddef;
+ titi(#1);
+ % Détermination de l'abscisse maximale
+ for k=1 upto n:
+ if valeur[k]>maxx:
+ maxx:=valeur[k];
fi;
endfor;
maxx:=maxx+1;
- if maxx<(#2+1):
- maxx:=#2+1;
+ if maxx<(pasx+1):
+ maxx:=pasx+1;
fi;
- enddef;
- toto(#3);
- Figure(-u,-u,(maxx+0.75)*unitp,u);
+ % -----
pair A,B;
A=(0,0);
B=unitp*(maxx,0);
+ % On trace la demi-droite
drawarrow A--(B+(0.75*unitp,0));
% marquage secondaire
marque_s:=marque_s/3;
@@ -15636,137 +15839,116 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
for k=0 step pasx until (maxx-1):
draw marquesegment((k/maxx)[A,B],((k+pasx)/maxx)[A,B]);
endfor;
- % marquage des points
+ %% 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:
+ dotlabel.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(ValeurUnitex)&"}"),unitex*(1,0));
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(ValeurOrigine)&"}"),A);
+ if AffichageGrad>0:
for k=2 upto maxx:
- dotlabel.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(#5)&"*"&decimal(k)&"}}"),unitex*(k,0));
+ dotlabel.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(k)&"}}"),unitex*(k,0));
endfor;
fi;
- vardef tata(text t)=%on place les points
- if #4>0:
+ %%
+ vardef tata(text t)=
+ if AffichageNom>0:
+ n:=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;
+ n:=n+1;
+ label.top(LATEX(p_),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
endfor;
fi;
- if #7=3:
+ if AffichageCoord=3:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
if p_<>"":
- drawarrow (unitp*(k,-1))--(unitp*(k,-0.3));
- label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(k,-1)));
- pointe(unitp*(k-#6,0));
- fi;
+ drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+ label.bot(btex \noexpand\hbox to2em{\noexpand\dotfill} etex,(unitp*(valeur[n],-1)));
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=2:
+ elseif AffichageCoord=2:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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));
+ if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+ label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],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));
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
- elseif #7=1:
+ elseif AffichageCoord=1:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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;
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
fi;
enddef;
- tata(#3);
+ %----
+ tata(#2);
+ clip currentpicture to polygone(u*(-1,-1),((maxx+0.75)*unitp,-u),((maxx+0.75)*unitp,u),u*(-1,1));
\end{mpost}
\fi
}
-% Pour construire les droite/demi-droite gradu\'ee
-\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 \`a placer en pas. pour g\'erer le cas des rep\'erages fractionnaires
- % #4 : on affiche le nom des points ou pas
- % #5 : quelle est la valeur de la longueur unit\'e ?
- % #6 : la valeur de l'unit\'e
- % #7 : on affiche les abscisses ou pas : 0 non, 1 oui, 2 fraction, 3 Fleche dots
- % #8 : on affiche tous les multiples de la graduation "principale"
+\def\MPNewDROITEGraduee#1#2{%
+ % #1 : liste des points \`a placer en pas. pour g\'erer le cas des rep\'erages fractionnaires
+ % #2 : liste des noms des points
\ifluatex
\mplibforcehmode
\begin{mplibcode}
maxx:=0;
minx:=4000;
- unitex:=#1*cm;
- pasx:=#2;
+ unitex:=\useKV[ClesReperage]{Unitex}*cm;
+ pasx:=\useKV[ClesReperage]{Pasx};
unitp:=unitex/pasx;%unit\'e de d\'eplacement
- vardef toto(text t)=%On d\'etermine le nombre "d'unit\'es" \`a placer
+ ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex};
+ ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine};
+ AffichageGrad:=\AffichageGrad;
+ AffichageCoord:=\useKV[ClesReperage]{AffichageAbs};
+ AffichageNom:=\AffichageNom;
+ numeric valeur[];
+ vardef titi(text t)=
+ n:=0;
for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- if p_<minx:
- minx:=p_;
+ n:=n+1;
+ valeur[n]=p_;
+ endfor;
+ enddef;
+ titi(#1);
+ % Détermination des abscisses maximale et minimale
+ for k=1 upto n:
+ if valeur[k]>maxx:
+ maxx:=valeur[k];
fi;
+ if valeur[k]<minx:
+ minx:=valeur[k];
fi;
endfor;
maxx:=maxx+(pasx div 2);
minx:=minx-(pasx div 2);
- if maxx<(#2+1):
- maxx:=#2+(pasx-1);
+ if maxx<(pasx+1):
+ maxx:=2*pasx-1;
fi;
- if minx>(-#2-1):
- minx:=-#2-(pasx-1);
+ if minx>(-pasx-1):
+ minx:=-2*pasx-1;
fi;
- enddef;
- toto(#3);
- Figure((minx-1)*unitp,-2u,(maxx+1)*unitp,u);
+ % -----
pair A,B,C;
A=(0,0);
B=unitp*(maxx,0);
C=unitp*(minx,0);
+ % On trace la demi-droite
drawarrow (C+unitp*(-0.75,0))--(B+unitp*(0.75,0));
% marquage secondaire
marque_s:=marque_s/3;
@@ -15793,108 +15975,98 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
m_c:=m_c*3;
marque_p:="croix";
labeloffset:=labeloffset*2;
- label.bot(TEX("\footnotesize\num{"&decimal(#5)&"}"),unitex*(1,0));
- label.bot(TEX("\footnotesize\num{"&decimal(#6)&"}"),A);
- if #8>0:
+ label.bot(TEX("\footnotesize\num{"&decimal(ValeurUnitex)&"}"),unitex*(1,0));
+ label.bot(TEX("\footnotesize\num{"&decimal(ValeurOrigine)&"}"),A);
+ if AffichageGrad>0:
for k=2 upto maxx:
- label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#6)&"+"&decimal(#5-(#6))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&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));%%%
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
endfor;
fi;
vardef tata(text t)=%on place les points
- if #4>0:
+ if AffichageNom>0:
+ n:=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;
+ n:=n+1;
+ label.top(TEX(p_),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
endfor;
fi;
- if #7=3:
+ if AffichageCoord=3:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
if p_<>"":
- drawarrow (unitp*(k,-1))--(unitp*(k,-0.3));
- label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(k,-1)));
- pointe(unitp*(k-#6,0));
- fi;
+ drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+ label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1)));
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=2:
+ elseif AffichageCoord=2:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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));
+ if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+ label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0));
else:
- label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(#5)&"*"&decimal(k)&"/"&decimal(pasx)&"}}"),unitp*(k,0));
- fi;
- pointe(unitp*(k-#6,0));
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=1:
+ elseif AffichageCoord=1:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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;
+ label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
fi;
enddef;
- tata(#3);
+ %%%
+ tata(#2);
\end{mplibcode}
\else
- \begin{mpost}
+ \begin{mpost}[mpsettings={unitex:=\useKV[ClesReperage]{Unitex}*cm; pasx:=\useKV[ClesReperage]{Pasx}; unitp:=unitex/pasx; ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex}; ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine}; AffichageGrad:=\AffichageGrad; AffichageCoord:=\useKV[ClesReperage]{AffichageAbs}; AffichageNom:=\AffichageNom;}]
maxx:=0;
minx:=4000;
- unitex:=#1*cm;
- pasx:=#2;
- unitp:=unitex/pasx;%unit\'e de d\'eplacement
- vardef toto(text t)=%On d\'etermine le nombre "d'unit\'es" \`a placer
+ numeric valeur[];
+ vardef titi(text t)=
+ n:=0;
for p_=t:
- if numeric p_:
- if p_>maxx:
- maxx:=p_;
- fi;
- if p_<minx:
- minx:=p_;
+ n:=n+1;
+ valeur[n]=p_;
+ endfor;
+ enddef;
+ titi(#1);
+ % Détermination des abscisses maximale et minimale
+ for k=1 upto n:
+ if valeur[k]>maxx:
+ maxx:=valeur[k];
fi;
+ if valeur[k]<maxx:
+ minx:=valeur[k];
fi;
endfor;
maxx:=maxx+(pasx div 2);
minx:=minx-(pasx div 2);
- if maxx<(#2+1):
- maxx:=#2+(pasx-1);
+ if maxx<(pasx+1):
+ maxx:=2*pasx-1;
fi;
- if minx>(-#2-1):
- minx:=-#2-(pasx-1);
+ if minx>(-pasx-1):
+ minx:=-2*pasx-1;
fi;
- enddef;
- toto(#3);
- Figure((minx-1)*unitp,-2u,(maxx+1)*unitp,u);
+ % -----
pair A,B,C;
A=(0,0);
B=unitp*(maxx,0);
C=unitp*(minx,0);
+ % On trace la demi-droite
drawarrow (C+unitp*(-0.75,0))--(B+unitp*(0.75,0));
% marquage secondaire
marque_s:=marque_s/3;
@@ -15921,77 +16093,86 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
m_c:=m_c*3;
marque_p:="croix";
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:
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(ValeurUnitex)&"}"),unitex*(1,0));
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{"&decimal(ValeurOrigine)&"}"),A);
+ if AffichageGrad>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));%%%
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&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));%%%
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(k)&"}}"),unitex*(k,0));%%%
endfor;
fi;
vardef tata(text t)=%on place les points
- if #4>0:
+ if AffichageNom>0:
+ n:=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;
+ n:=n+1;
+ label.top(LATEX(p_),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
endfor;
fi;
- if #7=3:
+ if AffichageCoord=3:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
if p_<>"":
- drawarrow (unitp*(k,-1))--(unitp*(k,-0.3));
- label.bot(\btex \hbox to2em{\dotfill} etex,(unitp*(k,-1)));
- pointe(unitp*(k-#6,0));
- fi;
+ drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3));
+ label.bot(btex \noexpand\hbox to2em{\noexpand\dotfill} etex,(unitp*(valeur[n],-1)));
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=2:
+ elseif AffichageCoord=2:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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));
+ if ((ValeurUnitex*valeur[n]) mod pasx)<>0:
+ label.bot(LATEX("\noexpand\footnotesize$\noexpand\frac{\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\noexpand\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],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));
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
fi;
+ pointe(unitp*(valeur[n]-ValeurOrigine,0));
fi;
endfor;
- elseif #7=1:
+ elseif AffichageCoord=1:
+ n:=0;
for p_=t:
- if numeric p_:
- k:=p_;
- fi;
- if string p_:
+ n:=n+1;
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;
+ label.bot(LATEX("\noexpand\footnotesize\noexpand\num{\noexpand\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0));
+ pointe(unitp*(valeur[n],0));
fi;
endfor;
fi;
enddef;
- tata(#3);
+ %%%
+ tata(#2);
\end{mpost}
\fi
-}
+}%
+
+% Pour construire les droite/demi-droite gradu\'ee
+\def\builddemidroitenew{%
+ \toklistepointdroite{}%
+ \toklistenompointdemidroite{}%
+ \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}{%
+ \xdef\Listedesvaleursaplacersurlademidroite{}%
+ \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdemidroite\compteur\nil}%
+ \foreachitem\compteur\in\ListePointDroite{\xdef\Listedesvaleursaplacersurlademidroite{\Listedesvaleursaplacersurlademidroite,\ListePointDroite[\compteurcnt,1]}}%
+ \Listedesvaleursaplacersurlademidroite%
+ \[\MPNewDEMIGraduee{\Listedesvaleursaplacersurlademidroite}{\the\toklistenompointdemidroite}\]%
+ }{%
+ \foreachitem\compteur\in\ListePointDroite{\expandafter\Updatetoksdemidroite\compteur\nil}%
+ \xdef\Listedesvaleursaplacersurlademidroite{}%
+ \foreachitem\compteur\in\ListePointDroite{\xdef\Listedesvaleursaplacersurlademidroite{\Listedesvaleursaplacersurlademidroite,\ListePointDroite[\compteurcnt,1]}}%
+ \Listedesvaleursaplacersurlademidroite%
+ \[\MPNewDROITEGraduee{\Listedesvaleursaplacersurlademidroite}{\the\toklistenompointdemidroite}\]%
+ }%
+}%
\newcommand\Reperage[2][]{%
\useKVdefault[ClesReperage]%
@@ -16304,7 +16485,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%%
% Tableaux d'unit\'es
%%%
-\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}
+\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,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,Couleurd=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\PfCTBstrut{\rule[-1.2ex]{0pt}{3.8ex}} % Top and Bottom strut
@@ -16325,7 +16506,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\ifboolKV[ClesTableaux]{Nano}{\xdef\PfCDerniereColonne{\fpeval{\PfCDerniereColonne+6}}}{\ifboolKV[ClesTableaux]{Micro}{\xdef\PfCDerniereColonne{\fpeval{\PfCDerniereColonne+3}}}{}}
\begin{NiceTabular}{*{\ifboolKV[ClesTableaux]{Milliards}{12}{%
\ifboolKV[ClesTableaux]{Millions}{9}{6}%
- }}{m{3.25em}}>{\columncolor{gray!15}}{c}*{%
+ }}{m{3.25em}}>{\columncolor{gray!15}}{c}*{%
\ifboolKV[ClesTableaux]{Micro}{6}{%
\ifboolKV[ClesTableaux]{Nano}{9}{3}%
}}%
@@ -16413,7 +16594,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
&\Block[borders={right}]{}{}%
&\Block[borders={right}]{}{}%
&\Block[borders={right}]{}{\fontsize{8}{8}\selectfont nano}\\}{\\}%
- }%
+ }%
%
%%% Prise en compte de la cl\'e Nombres
%
@@ -16463,8 +16644,8 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%% Prise en compte de la cl\'e Puissances
%
\ifboolKV[ClesTableaux]{Puissances}{%
- \xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}%
- \ifboolKV[ClesTableaux]{Milliards}{%
+ \xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}%
+ \ifboolKV[ClesTableaux]{Milliards}{%
\Block[borders={left,right}]{}{}&%
\Block[borders={right}]{}{}%
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont $\times10^{9}$}%
@@ -16653,9 +16834,9 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\\%
}{}%
%
-% %%% Lignes vierges
-% %
- \hline%
+ %%% Lignes vierges
+ %
+ \hline%
\xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
\ifboolKV[ClesTableaux]{Milliards}{%
&&&&&&}{}%
@@ -16679,7 +16860,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
}%
%% On place le nombre éventuel
\ifx\bla#2\bla%
- \else%\xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}
+ \else%
\setsepchar{,}%
\readlist*\ListeNombreAPlacer{#2}%
\xintFor* ##2 in{\xintSeq {1}{\ListeNombreAPlacerlen}}\do{%
@@ -16769,9 +16950,9 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
&\Block[]{1-3}{\bfseries Partie d\'ecimale}%
&&\\
}{}%
- %
+ %
%%% Prise en compte de la cl\'e Classes
- %
+ %
\ifboolKV[ClesTableaux]{Classes}{%
\xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}\ifboolKV[ClesTableaux]{Milliards}{\Block[draw,fill={\useKV[ClesTableaux]{CouleurG}}]{1-3}{Classe des milliards}&&&\Block[draw,fill={\useKV[ClesTableaux]{CouleurM}}]{1-3}{Classe des millions}&&&}{}%
\ifboolKV[ClesTableaux]{Millions}{\Block[draw,fill={\useKV[ClesTableaux]{CouleurM}}]{1-3}{Classe des millions}&&&}{}%
@@ -16810,9 +16991,9 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont dixi\`emes}%
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont centi\`emes}%
&\Block[borders={right}]{}{\fontsize{5}{5}\selectfont milli\`emes}\\
- %
+ %
%%% Prise en compte de la cl\'e Nombres
- %
+ %
\ifboolKV[ClesTableaux]{Nombres}{%
\xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}%
\ifboolKV[ClesTableaux]{Milliards}{%
@@ -16846,7 +17027,7 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
%%% Prise en compte de la cl\'e Puissances
%
\ifboolKV[ClesTableaux]{Puissances}{%
- \xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}%
+ \xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}%
\ifboolKV[ClesTableaux]{Milliards}{%
\Block[borders={left,right}]{}{}&%
\Block[borders={right}]{}{}%
@@ -16875,12 +17056,12 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\\%
}{}%
%
- %%% Lignes vierges
+ %%% Lignes vierges
%
\hline%
\xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
\ifboolKV[ClesTableaux]{Milliards}{%
- &&&&&&}{}%
+ &&&&&&}{}%
\ifboolKV[ClesTableaux]{Millions}{%
&&&}{}%
&&&&&&,&&&\\}%
@@ -16914,6 +17095,160 @@ Unite={},Largeur=1cm,Precision=2,Donnee=Valeurs,Effectif=Effectif,Grille=false,O
\end{center}%
\setlength{\tabcolsep}{100\tabcolsep}%
}{}%
+ % Décimal version inclinée
+ \ifboolKV[ClesTableaux]{Incline}{%
+ \colorlet{PfCCouleurd}{\useKV[ClesTableaux]{Couleurd}}%
+ \xdef\DecalageLigne{0}%
+ \setlength{\tabcolsep}{0.01\tabcolsep}%
+ \begin{center}%
+ %
+ %%% Definition du tableau
+ %
+ \ifboolKV[ClesTableaux]{Milliards}{\xdef\PfCDerniereColonne{17}}{\ifboolKV[ClesTableaux]{Millions}{\xdef\PfCDerniereColonne{14}}{\xdef\PfCDerniereColonne{11}}}%
+ \begin{NiceTabular}{*{\ifboolKV[ClesTableaux]{Milliards}{12}{%
+ \ifboolKV[ClesTableaux]{Millions}{9}{6}%
+ }}{m{1cm}}*{5}{m{1cm}}}%
+ %
+ \CodeBefore%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurG}}] (1|-5)--(2|-1)--(3|-1)--(2|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurG}}] (2|-5)--(3|-1)--(4|-1)--(3|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurG}}] (3|-5)--(4|-1)--(5|-1)--(4|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (4|-5)--(5|-1)--(6|-1)--(5|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (5|-5)--(6|-1)--(7|-1)--(6|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (6|-5)--(7|-1)--(8|-1)--(7|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (7|-5)--(8|-1)--(9|-1)--(8|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (8|-5)--(9|-1)--(10|-1)--(9|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (9|-5)--(10|-1)--(11|-1)--(10|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (10|-5)--(11|-1)--(12|-1)--(11|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (11|-5)--(12|-1)--(13|-1)--(12|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (12|-5)--(13|-1)--(14|-1)--(13|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!50] (13|-5)--(14|-1)--(15|-1)--(14|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!40] (14|-5)--(15|-1)--(16|-1)--(15|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!30] (15|-5)--(16|-1)--(17|-1)--(16|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!20] (16|-5)--(17|-1)--(18|-1)--(17|-5)--cycle;
+ }{\ifboolKV[ClesTableaux]{Millions}{%
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (1|-5)--(2|-1)--(3|-1)--(2|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (2|-5)--(3|-1)--(4|-1)--(3|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{CouleurM}}] (3|-5)--(4|-1)--(5|-1)--(4|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (4|-5)--(5|-1)--(6|-1)--(5|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (5|-5)--(6|-1)--(7|-1)--(6|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (6|-5)--(7|-1)--(8|-1)--(7|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (7|-5)--(8|-1)--(9|-1)--(8|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (8|-5)--(9|-1)--(10|-1)--(9|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (9|-5)--(10|-1)--(11|-1)--(10|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!50] (10|-5)--(11|-1)--(12|-1)--(11|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!40] (11|-5)--(12|-1)--(13|-1)--(12|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!30] (12|-5)--(13|-1)--(14|-1)--(13|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!20] (13|-5)--(14|-1)--(15|-1)--(14|-5)--cycle;
+ }{%
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (1|-5)--(2|-1)--(3|-1)--(2|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (2|-5)--(3|-1)--(4|-1)--(3|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleurm}}] (3|-5)--(4|-1)--(5|-1)--(4|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (4|-5)--(5|-1)--(6|-1)--(5|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (5|-5)--(6|-1)--(7|-1)--(6|-5)--cycle;
+ \tikz\draw[draw=black,fill={\useKV[ClesTableaux]{Couleuru}}] (6|-5)--(7|-1)--(8|-1)--(7|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!50] (7|-5)--(8|-1)--(9|-1)--(8|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!40] (8|-5)--(9|-1)--(10|-1)--(9|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!30] (9|-5)--(10|-1)--(11|-1)--(10|-5)--cycle;
+ \tikz\draw[draw=black,fill=PfCCouleurd!20] (10|-5)--(11|-1)--(12|-1)--(11|-5)--cycle;
+ }%
+ }%
+ \Body
+ %% Pour décaler et laisser la place nécessaire
+ \xintFor* ##1 in {\xintSeq{1}{4}}\do{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &&&&&&}{}%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &&&}{}%
+ &&&&&&&&&&\\}%
+ %%% Lignes vierges
+ %
+ \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ &&&&&&}{}%
+ \ifboolKV[ClesTableaux]{Millions}{%
+ &&&}{}%
+ &&&&&&&&&&\\}%
+ \CodeAfter%%
+ % on trace les lignes verticales
+ \xintFor* ##1 in {\xintSeq{2}{\fpeval{\PfCDerniereColonne-1}}}\do{%
+ \tikz\draw[dashed] (\fpeval{\DecalageLigne+5}-|##1)--(\fpeval{\DecalageLigne+5+\useKV[ClesTableaux]{NbLignes}}-|##1);%
+ }%
+ \tikz\draw (\fpeval{\DecalageLigne+5}-|1)--(\fpeval{\DecalageLigne+5+\useKV[ClesTableaux]{NbLignes}}-|1);%
+ \tikz\draw (\fpeval{\DecalageLigne+5}-|\fpeval{\PfCDerniereColonne})--(\fpeval{\DecalageLigne+5+\useKV[ClesTableaux]{NbLignes}}-|\fpeval{\PfCDerniereColonne});%
+ %% On place le nombre éventuel
+ \ifx\bla#2\bla%
+ \else%
+ \ifboolKV[ClesTableaux]{Milliards}{\xdef\PfCDerniereColonneEntiere{13}}{\ifboolKV[ClesTableaux]{Millions}{\xdef\PfCDerniereColonneEntiere{10}}{\xdef\PfCDerniereColonneEntiere{7}}}%
+ \xdef\PfCPremiereColonneDecimale{\fpeval{\PfCDerniereColonneEntiere+1}}%
+ \setsepchar[*]{,*.}%
+ \ignoreemptyitems%
+ \readlist*\ListeNombreAPlacer{#2}%
+ \xintFor* ##2 in{\xintSeq {1}{\ListeNombreAPlacerlen}}\do{%
+ \StrLen{\ListeNombreAPlacer[##2,1]}[\TabLongueurNombre]%
+ \xintFor* ##1 in{\xintSeq {\TabLongueurNombre}{1}}\do{%
+ \tikz\node at (\fpeval{\DecalageLigne+##2+4.5}-|\fpeval{\PfCDerniereColonneEntiere-0.5-\TabLongueurNombre+##1}) {\PfCTBstrut\StrMid{\ListeNombreAPlacer[##2,1]}{##1}{##1}};%
+ }%
+ \StrLen{\ListeNombreAPlacer[##2,2]}[\TabLongueurNombre]%
+ \xintifboolexpr{\ListeNombreAPlacer[##2,2]==0}{}{%
+ %On place la virgule
+ \tikz\node[xshift=1em] at (\fpeval{\DecalageLigne+##2+4.5}-|\fpeval{\PfCDerniereColonneEntiere-0.5-\TabLongueurNombre+1}) {\PfCTBstrut,};%
+ %on écrit la partie décimale
+ \xintFor* ##1 in{\xintSeq {1}{\TabLongueurNombre}}\do{%
+ \tikz\node at (\fpeval{\DecalageLigne+##2+4.5}-|\fpeval{\PfCPremiereColonneDecimale-1.5+##1}) {\PfCTBstrut\StrMid{\ListeNombreAPlacer[##2,2]}{##1}{##1}};%
+ }%
+ }%
+ }%
+ \fi%
+ \ifboolKV[ClesTableaux]{Milliards}{%
+ \tikz\node[rotate=58] at (2|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de milliards\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (3|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de milliards\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (4|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Milliards\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (5|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (6|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (7|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (8|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (9|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (10|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (11|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (12|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (13|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Unités\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (14|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dixièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (15|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (16|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Millièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (17|-3) {\begin{minipage}{2cm}\begin{center}\scriptsize Dix-millièmes\end{center}\end{minipage}};
+ }{\ifboolKV[ClesTableaux]{Millions}{%
+ \tikz\node[rotate=58] at (2|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (3|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (4|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Millions\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (5|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (6|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (7|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (8|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (9|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (10|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Unités\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (11|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dixièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (12|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (13|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Millièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (14|-3) {\begin{minipage}{2cm}\begin{center}\scriptsize Dix-millièmes\end{center}\end{minipage}};
+ }{%
+ \tikz\node[rotate=58] at (2|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (3|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\\de milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (4|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Milliers\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (5|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (6|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dizaines\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (7|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Unités\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (8|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Dixièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (9|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Centièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (10|-3) {\begin{minipage}{1.5cm}\begin{center}\scriptsize Millièmes\end{center}\end{minipage}};
+ \tikz\node[rotate=58] at (11|-3) {\begin{minipage}{2cm}\begin{center}\scriptsize Dix-millièmes\end{center}\end{minipage}};
+ }%
+ }%
+ \end{NiceTabular}%
+ \end{center}%
+ \setlength{\tabcolsep}{100\tabcolsep}%
+ }{}%
%
%%% Prise en compte de la cl\'e Metre
%