diff options
author | Karl Berry <karl@freefriends.org> | 2021-11-08 23:18:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-11-08 23:18:25 +0000 |
commit | ca1660fd2373f74ea7901e5170dffd72b5a784f4 (patch) | |
tree | 9190bb006c14918ce1056276050562e58961e9e7 /Master/texmf-dist/tex | |
parent | 87b3a936763b34a0b1a91c081cc739a2067192bc (diff) |
profcollege (9nov21)
git-svn-id: svn://tug.org/texlive/trunk@60999 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty | 1037 |
1 files changed, 686 insertions, 351 deletions
diff --git a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty index c2d0d77ee79..1dd88a757a7 100644 --- a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty +++ b/Master/texmf-dist/tex/latex/profcollege/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 % |