diff options
Diffstat (limited to 'macros/latex/contrib/proflycee/tex/ProfLycee.sty')
-rw-r--r-- | macros/latex/contrib/proflycee/tex/ProfLycee.sty | 3178 |
1 files changed, 25 insertions, 3153 deletions
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index f553031e8c..11c7d596db 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,11 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2023/04/06 2.5.8 Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2023/04/13 2.6.0 Aide pour l'utilisation de LaTeX en lycee] +% 2.6.0 Ajout d'une clé [Brut] pour les mesures principales + commande calcul ligne trigo +% Refonte des fichiers inclus + correction de bugs mineurs +% Split des thèmes en fichiers 'input' +% 2.5.9 Ajout clé [CouleurNombres] pour CodePiton % 2.5.8 Ajout du style Classique pour PythonLst (externalisation listings) + Modification marges CodePiton (1.5) % Refonte des commandes pour les codes pour éviter des soucis avec les étoilées % 2.5.7 Ajout d'un style classique pour le code python (Piton) + console piton/pyluatex @@ -118,3157 +122,25 @@ %%------Codes listings \input{proflycee-tools-listings.tex} - -%%------SPLINES -%commande utile pour extraire des infos d'une liste -\newcommand\extractcoeff[2]{%1=liste,2=numero - \setsepchar{§}% - \readlist*\lcoeffs{#1} - \ifnum \lcoeffslen=1 - \def\COEFFA{#1} - \def\COEFFB{#1} - \else - \itemtomacro\lcoeffs[#2]\COEFF - \IfSubStr{\COEFF}{/}% - {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}% - {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}} - \fi -} - -%splines en tikz avec ..controls -\defKV[spline]{% - Epaisseur=\def\SPLepaisseur{#1},% - Couleur=\def\SPLcouleur{#1},% - Coeffs=\def\SPLcoeffs{#1},% - CouleurPoints=\def\SPLcouleurpoints{#1},% - TaillePoints=\def\SPLtaillepoints{#1},% - Style=\def\SPLstyle{#1} -} - -\setKVdefault[spline]{% - Epaisseur=1.25pt,% - Couleur=red,% - Coeffs=3,% - CouleurPoints=black,% - TaillePoints=2pt,% - AffPoints=false,% - Style={} -} - -\newcommand\SplineTikz[2][]{% - \useKVdefault[spline] - \setKV[spline]{#1}% on paramètres les nouvelles clés et on les simplifie - %on lit la liste des points/nbderivés et on stocke dans \listepoints - \setsepchar[.]{§./}% - \readlist*\SPLlistepoints{#2}% - \def\SPLnbsplines{\inteval{\SPLlistepointslen-1}}% - %si uniquement deux points, pas de boucle... - \ifnum \SPLlistepointslen=2 - %extraction des coeffs de compensation - \extractcoeff{\SPLcoeffs}{1}% - %extraction des coordonnées - \itemtomacro\SPLlistepoints[1,1]\xa - \itemtomacro\SPLlistepoints[1,2]\ya - \itemtomacro\SPLlistepoints[1,3]\fprimea - \itemtomacro\SPLlistepoints[2,1]\xb - \itemtomacro\SPLlistepoints[2,2]\yb - \itemtomacro\SPLlistepoints[2,3]\fprimeb - \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb) ;% - %sinon on construit bout par bout ! - \else - \foreach \i in {1,2,...,\SPLnbsplines}{ - %extraction des coeffs de compensation - \extractcoeff{\SPLcoeffs}{\i} - \def\j{\inteval{\i+1}} - \itemtomacro\SPLlistepoints[\i,1]\xa - \itemtomacro\SPLlistepoints[\i,2]\ya - \itemtomacro\SPLlistepoints[\i,3]\fprimea - \itemtomacro\SPLlistepoints[\j,1]\xb - \itemtomacro\SPLlistepoints[\j,2]\yb - \itemtomacro\SPLlistepoints[\j,3]\fprimeb - \draw[line width=\SPLepaisseur,\SPLcouleur,\SPLstyle] (\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb) ;% - } - \fi - \ifboolKV[spline]{AffPoints}%on affiche les points de contrôle - {% - \foreach \i in {1,2,...,\SPLlistepointslen}{% - \itemtomacro\SPLlistepoints[\i,1]\xa - \itemtomacro\SPLlistepoints[\i,2]\ya - \filldraw[\SPLcouleurpoints] (\xa,\ya) circle[radius=\SPLtaillepoints] ;% - } - } - {} -} - -%tangente(s) en TikZ, avec point/dérivée ou liste points/dérivées -\defKV[tgte]{% - Epaisseur=\def\TGTepaisseur{#1},% - Couleur=\def\TGTcouleur{#1},% - xl=\def\TGTXL{#1},% - xr=\def\TGTXR{#1},% - Style=\def\TGTstyle{#1},% - Point=\def\TGTnumpt{#1} -} - -\setKVdefault[tgte]{ - Epaisseur=1.25pt,% - Couleur=red,% - xl=0.5,xr=0.5,% - Style={},% - Point=1 -} - -\newcommand\TangenteTikz[2][]{% - \useKVdefault[tgte]% - \setKV[tgte]{#1}% on paramètres les nouvelles clés et on les simplifie - \setsepchar[.]{§./}% - \readlist*\TGTlistepoints{#2}% - \itemtomacro\TGTlistepoints[\TGTnumpt,1]\xa - \itemtomacro\TGTlistepoints[\TGTnumpt,2]\ya - \itemtomacro\TGTlistepoints[\TGTnumpt,3]\fprimea - \def\TGTDEB{\fpeval{\xa-\TGTXL}}\def\TGTFIN{\fpeval{\xa+\TGTXR}}% - \draw[line width=\TGTepaisseur,\TGTcouleur,domain=\TGTDEB:\TGTFIN,\TGTstyle] plot (\x,{\fprimea*(\x-\xa)+\ya}) ;% -} - -%%------FENÊTRE CALCUL FORMEL -\newcommand\CFchap{\textasciicircum} -\newcounter{CFnum} -%def des clés -\defKV[paramfenxcas]{% - Largeur=\def\CFlarg{#1},% - EspaceLg=\def\CFesplg{#1},% - PremCol=\def\CFpremcol{#1},% - HautPremCol=\def\CFhpremcol{#1},% - Taille=\def\CFtaille{#1},% - Couleur=\def\CFcouleur{#1},% - TailleTitre=\def\CFtailletitre{#1},% - CouleurCmd=\def\CFcoulcmd{#1},% - CouleurRes=\def\CFcoulres{#1},% - PosCmd=\def\CFposcmd{#1},% - PosRes=\def\CFposres{#1},% - LabelTitre=\def\CFlabeltitre{#1}% -} -\setKVdefault[paramfenxcas]{% - Largeur=16,EspaceLg=2pt,PremCol=0.3,HautPremCol=0.4,% - Couleur=darkgray,Menu=true,Titre=false,TailleTitre=\normalsize,Taille=\normalsize,% - Sep=true,PosRes=centre,PosCmd=gauche,% - CouleurCmd=red,CouleurRes=blue,% - LabelTitre={Résultats obtenus avec un logiciel de Calcul Formel}% -} - -\newcommand\CalculFormelParametres[1][]{% - \setcounter{CFnum}{0} - \useKVdefault[paramfenxcas]% - \setKV[paramfenxcas]{#1}% on paramètres les nouvelles clés et on les simplifie -} - -\defKV[paramlgxcas]{% - HautCmd=\def\CFhle{#1},% - HautRes=\def\CFhlr{#1} -} -\setKVdefault[paramlgxcas]{% - HautCmd=0.75,% - HautRes=0.75 -} - -\newcommand\CalculFormelLigne[3][]{% - \addtocounter{CFnum}{1} - \def\CFL{\theCFnum}% - \def\CFLA{\inteval{\CFL-1}}% - \useKVdefault[paramlgxcas]% - \setKV[paramlgxcas]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\CFLA{\inteval{\CFL-1}}% - %DÉCLARATION DES NŒUDS (les "6" coins des lignes commande et résultat) - \xintifboolexpr{\CFL == 1}%si c'est la première ligne - {\coordinate (A0\CFL) at (0,0);} - {\coordinate (A0\CFL) at ($(A2\CFLA) + (0,{-\CFesplg})$);} - \coordinate (A1\CFL) at ($(A0\CFL) + (0,{-\CFhle})$); - \coordinate (A2\CFL) at ($(A1\CFL) + (0,{-\CFhlr})$); - \coordinate (A3\CFL) at ($(A0\CFL) + ({\CFlarg},0)$); - \coordinate (A4\CFL) at ($(A1\CFL) + ({\CFlarg},0)$); - \coordinate (A5\CFL) at ($(A2\CFL) + ({\CFlarg},0)$); - %DÉCLARATION DES NŒUDS INTERMÉDIAIRES (pour les commandes et les résultats) - \coordinate (C1\CFL) at ($(A0\CFL) + (0,{-0.5*\CFhle})$); - \coordinate (C2\CFL) at ($(A0\CFL) + ({0.5*\CFlarg},{-0.5*\CFhle})$); - \coordinate (C3\CFL) at ($(A0\CFL) + ({\CFlarg},{-0.5*\CFhle})$); - \coordinate (R1\CFL) at ($(A1\CFL) + (0,{-0.5*\CFhlr})$); - \coordinate (R2\CFL) at ($(A1\CFL) + ({0.5*\CFlarg},{-0.5*\CFhlr})$); - \coordinate (R3\CFL) at ($(A1\CFL) + ({\CFlarg},{-0.5*\CFhlr})$); - %RECTANGLE DE BASE - \draw[\CFcouleur] (A0\CFL) rectangle (A5\CFL) ; - %LA COMMANDE EN ROUGE - \IfStrEq{\CFposcmd}{centre}%si poscmd=center - {\draw (C2\CFL) node[\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - \IfStrEq{\CFposcmd}{gauche}%si poscmd=left - {\draw (C1\CFL) node[right,\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - \IfStrEq{\CFposcmd}{right}%si poscmd=right - {\draw (C3\CFL) node[left,\CFcoulcmd,font=\CFtaille] {#2} ;} - {} - %LE RÉSULTAT - \IfStrEq{\CFposres}{centre}%si posrep=center - {\draw (R2\CFL) node[\CFcoulres,font=\CFtaille] {#3} ;} - {} - \IfStrEq{\CFposres}{gauche}%si posrep=left - {\draw (R1\CFL) node[right,\CFcoulres,font=\CFtaille] {#3} ;} - {} - \IfStrEq{\CFposres}{right}%si posrep=right - {\draw (R3\CFL) node[left,\CFcoulres,font=\CFtaille] {#3} ;} - {} - \ifboolKV[paramfenxcas]{Sep}%si sep=true - {\draw[\CFcouleur] (A1\CFL) -- (A4\CFL);}% - {} - %LE PETIT NUMÉRO - \draw[\CFcouleur] (A0\CFL) rectangle ++ ({-\CFpremcol},{-\CFhpremcol}) node[\CFcouleur,midway,font=\small\sffamily\bfseries] {\CFL} ; - %LE RECTANGLE "MENU" - \ifboolKV[paramfenxcas]{Menu}%si menu=true - {\draw[\CFcouleur,fill=\CFcouleur!25] (A5\CFL) rectangle ++ (-0.65,0.25) node[black,midway,font=\tiny\sffamily\bfseries] {MENU} ;}% - {} - %LE BLOC "TITRE" - \ifboolKV[paramfenxcas]{Titre}%si titre=true - {\draw[\CFcouleur,fill=lightgray!25,rounded corners] ($(A01) + (0,2pt)$) rectangle ++ ($({\CFlarg},2em)$) node[ForestGreen!50!\CFcouleur,midway,font=\CFtailletitre\ttfamily\bfseries] {\CFlabeltitre};} - {} -} - -%%------FakeTerm -%couleurs (inspirées par termsim !) -\definecolor{PLmpurple}{RGB}{48,10,36} -\definecolor{PLmgray}{RGB}{70,72,67} -\definecolor{PLogray}{RGB}{148,147,141} -\definecolor{PLoorange}{RGB}{233,101,56} -\definecolor{PLterminal}{RGB}{80,78,70} -\definecolor{PLlinux}{RGB}{0,39,51} -\definecolor{PLwinblue}{HTML}{1883D7} -\definecolor{PLosxgray}{HTML}{D8D6D9} - -%WINDOWS -\tcbset{PLfaketermwin/.style={% - enhanced,boxrule=1pt,sharp corners,before skip=12pt,after skip=12pt,% - colframe=PLwinblue,colback=black,colbacktitle=white,colupper=white,coltitle=black,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\setKVdefault[fakeTERMwin]{Titre={Terminal Windows}} - -\newcommand\PLcommandeswin{% - \begin{tikzpicture}[thick,scale=0.66] - \draw (0,0)--(1em,0) ; \draw (2em,0) rectangle (3em,1em) ; \draw (4em,1em)--(5em,0) (4em,0)--(5em,1em) ; - \end{tikzpicture}% -} - -\newcommand\termwintitre[1][]{% - \restoreKV[fakeTERMwin] - \setKV[fakeTERMwin]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={X[l]r}} - {\footnotesize\faTerminal}~~\useKV[fakeTERMwin]{Titre} & \PLcommandeswin \\ % - \end{tblr} -} - -\DeclareTCBListing{TerminalWin}{ O{\linewidth} m !O{} }{%<taille> puis {Titre=...} puis [option] - PLfaketermwin,title={\termwintitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%LINUX -\newcommand{\PLUbuntuWhite}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[PLmgray] (0,0.25em) circle[radius=0.5em] ; - \end{tikzpicture}% -} -\newcommand{\PLUbuntuMin}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal](-0.35em,0.25em)--(0.35em,0.25em); - \end{tikzpicture}% -} -\newcommand{\PLUbuntuClose}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLoorange!70!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal] (-0.32em,-0.07em)--(0.32em,0.57em); - \draw[PLterminal] (-0.32em,0.57em)--(0.32em,-0.07em); - \end{tikzpicture}% -} -\newcommand{\PLUbuntuMax}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[color=PLogray!50!white] (0,0.25em) circle[radius=0.5em]; - \draw[PLterminal] (-0.32em,0.5em) rectangle (0.32em,0); - \end{tikzpicture}% -} - -\tcbset{PLtermlinux/.style={% - enhanced,boxrule=1pt,arc=4pt,before skip=12pt,after skip=12pt,% - colframe=PLmgray,colback=PLmpurple,colbacktitle=PLmgray,colupper=white,coltitle=white,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\setKVdefault[fakeTERMnux]{Titre={Terminal UNiX}} - -\newcommand\termnuxtitre[1][]{% - \restoreKV[fakeTERMnux] - \setKV[fakeTERMnux]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} - \PLUbuntuWhite~~\PLUbuntuWhite~~\PLUbuntuWhite & \vphantom{p}\useKV[fakeTERMnux]{Titre} & \PLUbuntuMin~~\PLUbuntuMax~~\PLUbuntuClose \\ - \end{tblr} -} - -\DeclareTCBListing{TerminalUnix}{ O{\linewidth} m !O{} }{%<taille> puis {Titre=...} puis [option] - PLtermlinux,title={\termnuxtitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%OSX -\tcbset{PLfaketermosx/.style={% - enhanced,boxrule=1pt,arc=6pt,before skip=12pt,after skip=12pt,% - colframe=PLosxgray,colback=lightgray!15,colbacktitle=PLosxgray,colupper=black,coltitle=black,% - titlerule=0.4pt,left=2pt,top=2pt,bottom=2pt,right=2pt,middle=2pt,% - fonttitle=\bfseries\small\sffamily - } -} - -\newcommand{\PLOSXRed}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[red] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXOrange}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[orange] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXGreen}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[ForestGreen] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\newcommand{\PLOSXLG}{% - \begin{tikzpicture}[thick,anchor=base,baseline] - \filldraw[PLosxgray] (0,0.25em) circle[radius=0.45em] ; - \end{tikzpicture}% -} - -\setKVdefault[fakeTERMosx]{titre={Terminal OSX}} - -\newcommand\termosxtitre[1][]{% - \restoreKV[fakeTERMosx] - \setKV[fakeTERMosx]{#1} - \begin{tblr}{colsep=0pt,rowsep=0pt,width=\linewidth,colspec={lX[c]r}} - \PLOSXRed~\PLOSXOrange~\PLOSXGreen & \vphantom{p}\useKV[fakeTERMosx]{Titre} & \PLOSXLG~\PLOSXLG~\PLOSXLG \\ - \end{tblr} -} - -\DeclareTCBListing{TerminalOSX}{ O{\linewidth} m !O{} }{%<taille> puis {Titre=...} puis [option] - PLfaketermosx,title={\termosxtitre[#2]},% - listing only,listing engine=listings,% - listing options={style=tcblatex,language={},basicstyle=\footnotesize\ttfamily},% - width=#1,#3 -} - -%%------CartoucheCapytale -\definecolor{vertcapyt}{rgb}{0.0,0.5,0.0} -%\definecolor{vertcapyt}{HTML}{008000} -\DeclareTotalTCBox{\CartoucheCapytale}{ s O{} m } - {enhanced,size=fbox,on line,arc=3pt,colback=vertcapyt,colframe=vertcapyt,fontupper=\IfBooleanTF{#1}{\ttfamily}{\sffamily}\bfseries,colupper=white}% - {#3#2~{\scriptsize\faLink}} - -%%------PaveDroitTikZ -\defKV[paramspave]{% - Largeur=\xdef\PFPaveLg{#1},% - Profondeur=\xdef\PFPavePf{#1},% - Hauteur=\xdef\PFPaveHt{#1},% - Angle=\xdef\PFPaveAngl{#1},% - Fuite=\xdef\PFPaveFuite{#1},% - Sommets=\def\PFPaveSommets{#1},% - Epaisseur=\xdef\PFPaveThick{#1} -} -\setKVdefault[paramspave]{% - Aff=false,% - Plein=false,% - Largeur=2,% - Profondeur=1,% - Hauteur=1.25,% - Angle=30,% - Fuite=0.5,% - Epaisseur=thick,% - Sommets=A§B§C§D§E§F§G§H,% - Cube=false,% - Math=false -} - -\newcommand\PaveTikz[1][]{% - \useKVdefault[paramspave]% - \setKV[paramspave]{#1}% - \ifboolKV[paramspave]{Cube} - {\xdef\PFPavePf{\PFPaveLg}% - \xdef\PFPaveHt{\PFPaveLg}} - {} - \setsepchar{§}% - \readlist*\PFListeSommets\PFPaveSommets - \itemtomacro\PFListeSommets[1]\PaveA - \itemtomacro\PFListeSommets[2]\PaveB - \itemtomacro\PFListeSommets[3]\PaveC - \itemtomacro\PFListeSommets[4]\PaveD - \itemtomacro\PFListeSommets[5]\PaveE - \itemtomacro\PFListeSommets[6]\PaveF - \itemtomacro\PFListeSommets[7]\PaveG - \itemtomacro\PFListeSommets[8]\PaveH - %les nœuds du pave - \coordinate (\PaveA) at (0,0) ; - \coordinate (\PaveB) at ({\PFPaveLg},0) ; - \coordinate (\PaveC) at ($(\PaveB) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ; - \coordinate (\PaveD) at ($(\PaveA) + ({\PFPaveAngl}:{\PFPaveFuite*\PFPavePf})$) ; - \coordinate (\PaveE) at ($(\PaveA) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveF) at ($(\PaveB) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveG) at ($(\PaveC) + (0,{\PFPaveHt})$) ; - \coordinate (\PaveH) at ($(\PaveD) + (0,{\PFPaveHt})$) ; - \ifboolKV[paramspave]{Aff} - {\draw (\PaveA) node[below left] {\ifboolKV[paramspave]{Math}{$\PaveA$}{\PaveA}} ; - \draw (\PaveB) node[below right] {\ifboolKV[paramspave]{Math}{$\PaveB$}{\PaveB}} ; - \draw (\PaveC) node[above right] {\ifboolKV[paramspave]{Math}{$\PaveC$}{\PaveC}} ; - \ifboolKV[paramspave]{Plein} - {} - {\draw (\PaveD) node[above left] {\ifboolKV[paramspave]{Math}{$\PaveD$}{\PaveD}} ;} - \draw (\PaveE) node[below left] {\ifboolKV[paramspave]{Math}{$\PaveE$}{\PaveE}} ; - \draw (\PaveF) node[below right] {\ifboolKV[paramspave]{Math}{$\PaveF$}{\PaveF}} ; - \draw (\PaveG) node[above right] {\ifboolKV[paramspave]{Math}{$\PaveG$}{\PaveG}} ; - \draw (\PaveH) node[above left] {\ifboolKV[paramspave]{Math}{$\PaveH$}{\PaveH}} ;} - {}%on affiche rien - \draw[\PFPaveThick] (\PaveA)--(\PaveB)--(\PaveF)--(\PaveE)--cycle - (\PaveB)--(\PaveC)--(\PaveG)--(\PaveF)--cycle - (\PaveG)--(\PaveH)--(\PaveE) ; - \ifboolKV[paramspave]{Plein} - {} - {\draw[dashed,\PFPaveThick] (\PaveA)--(\PaveD)--(\PaveC) - (\PaveD)--(\PaveH) ;} -} - -%%------TétraèdreTikZ -\defKV[paramstetra]{% - Largeur=\xdef\PFTetraLg{#1},% - Profondeur=\xdef\PFTetraPf{#1},% - Hauteur=\xdef\PFTetraHt{#1},% - Alpha=\xdef\PFTetraAlpha{#1},% - Beta=\xdef\PFTetraBeta{#1},% - Sommets=\def\PFTetraSommets{#1},% - Epaisseur=\xdef\PFTetraThick{#1} -} -\setKVdefault[paramstetra]{% - Aff=false,% - Plein=false,% - Largeur=4,% - Profondeur=1.25,% - Hauteur=3,% - Alpha=40,% - Beta=60,% - Epaisseur=thick,% - Sommets=A§B§C§D,% - Math=false -} - -\newcommand\TetraedreTikz[1][]{% - \useKVdefault[paramstetra]% - \setKV[paramstetra]{#1}% - \setsepchar{§}% - \readlist*\PFListeSommets\PFTetraSommets - \itemtomacro\PFListeSommets[1]\TetraA - \itemtomacro\PFListeSommets[2]\TetraB - \itemtomacro\PFListeSommets[3]\TetraC - \itemtomacro\PFListeSommets[4]\TetraD - %les nœuds du tétraèdre - \coordinate (\TetraA) at (0,0) ; - \coordinate (\TetraB) at ($(\TetraA) + ({-\PFTetraAlpha}:{\PFTetraPf})$) ; - \coordinate (\TetraC) at ({\PFTetraLg},0) ; - \coordinate (\TetraD) at ($(\TetraA) + ({\PFTetraBeta}:{\PFTetraHt})$) ; - \ifboolKV[paramstetra]{Aff} - {\draw (\TetraA) node[left] {\ifboolKV[paramstetra]{Math}{$\TetraA$}{\TetraA}} ; - \draw (\TetraB) node[below] {\ifboolKV[paramstetra]{Math}{$\TetraB$}{\TetraB}} ; - \draw (\TetraC) node[right] {\ifboolKV[paramstetra]{Math}{$\TetraC$}{\TetraC}} ; - \draw (\TetraD) node[above] {\ifboolKV[paramstetra]{Math}{$\TetraD$}{\TetraD}} ;} - {}%on affiche rien - \draw[\PFTetraThick] (\TetraA)--(\TetraD)--(\TetraC)--(\TetraB)--cycle - (\TetraD)--(\TetraB) ; - \ifboolKV[paramstetra]{Plein} - {} - {\draw[dashed,\PFTetraThick] (\TetraA)--(\TetraC) ;} -} - -%%------EnsembleList -\defKV[kvensemble]{% - Sep=\def\PLenssep{#1},% - Option=\def\PLensopt{#1} -} - -\setKVdefault[kvensemble]{% - Sep={;},% - Mathpunct=true,% - Option={} -} - -\newcommand\EcritureEnsemble[2][]{% - \useKVdefault[kvensemble]% - \setKV[kvensemble]{#1}% - \ifboolKV[kvensemble]{Mathpunct}% - {\left\lbrace \PLensopt{} \mathpunct{} \StrSubstitute{#2}{/}{\mathpunct{}{\PLenssep}\mathpunct{}} \mathpunct{} \right\rbrace}% - {\left\lbrace \PLensopt{} \StrSubstitute{#2}{/}{{\PLenssep}} \right\rbrace} -} - -%%------SimplFrac ancienne version -%\DeclareDocumentCommand\ConversionFraction{ O{} m }{% argument optionnel [d ou t] puis argument mandataire {calcul ou fraction} -% \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#2}}}}%on calcule et on transforme en A/B -% \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît -% {%si oui := fraction -% \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur -% \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur -% \ifblank{#1}{\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}{}%si l'argument optionnel est vide -% \IfStrEq{#1}{d}{\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}{}%si l'arg opt est d -% \IfStrEq{#1}{t}{\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}{}%si l'arg opt est t -% }{%si non := entier -% \num{\calculargument}%on affiche l'entier, avec le package siunitx -% }% -%} - -%%------SimplFrac nouvelle version -\NewDocumentCommand\ConversionFraction{ s O{} m }{% - %*=moins sur le numérateur - %2=argument.optionnel[d/t/dec=...] - %3=argument mandataire {calcul ou fraction} - \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B - \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît - {%si oui := fraction - \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur - \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur - \ifblank{#2}% - {% - \IfBooleanTF{#1}% - {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}% - {% - \ifthenelse{\numerateur < 0}% - {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}% - {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}% - }% - }% - {}%si l'argument optionnel est vide - \IfStrEq{#2}{d}% - {% - \IfBooleanTF{#1}% - {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}% - {% - \ifthenelse{\numerateur < 0}% - {\ensuremath{-\dfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}% - {\ensuremath{\dfrac{\num{\numerateur}}{\num{\denominateur}}}}% - }% - }% - {}%si l'argument optionnel est vide - \IfStrEq{#2}{t}% - {% - \IfBooleanTF{#1}% - {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}% - {% - \ifthenelse{\numerateur < 0}% - {\ensuremath{-\tfrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}% - {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}% - }% - }% - {}%si l'argument optionnel est vide - \IfStrEq{#2}{n}% - {% - %\IfBooleanTF{#1}% - {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}% - %{% - % \ifthenelse{\numerateur < 0}% - % {\ensuremath{-\nicefrac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}% - % {\ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}}% - %}% - }% - {}%si l'argument optionnel est vide - \IfSubStr{#2}{dec}%on veut la forme décimale - {% - \IfSubStr{#2}{=}%si on rajoute une précision - {% - \StrBehind{#2}{=}[\precdecimal]% - \ensuremath{\num{\xintfloateval{round(#3,\precdecimal)}}}% - }% - {% - \ensuremath{\num{\xintfloateval{#3}}}% - }% - }% - {}%si l'argument optionnel est vide - }{%si non := entier - \num{\calculargument}%on affiche l'entier, avec le package siunitx - }% -} - -%%------CabWeb -\defKV[webrecurr]{% - Fct=\def\PLRecurfct{#1},% - Nom=\def\PLRecurnom{#1},% - No=\def\PLRecurno{#1},% - Nb=\def\PLRecurnb{#1},% - Uno=\def\PLRecuruno{#1},% - PosLabel=\def\PLRecurposlab{#1},% - DecalLabel=\def\PLRecuroffset{#1},% - TailleLabel=\def\PLRecurlabelsize{#1} -} - -\setKVdefault[webrecurr]{ - No=0,% - Nom=u,% - Nb=5,% - AffTermes=true,% - PosLabel=below,% - DecalLabel=6pt,% - TailleLabel=\small -} - -\NewDocumentCommand\ToileRecurrence{ O{} O{thick,color=magenta} O{dotted} }{ - %<clés> + <style cabweb> + <style supplémentaire pointillés> - \useKVdefault[webrecurr]% - \setKV[webrecurr]{#1}% on paramètres les nouvelles clés et on les simplifie - \foreach \i [remember=\i as \x (initially \PLRecuruno)] in {1,...,\PLRecurnb}{% - \def\y{\fpeval{\PLRecurfct}} - %test de la position courbe / bissectrice ? - \ifnum \i=1 - \newdimen \X - \newdimen \Y - \X = \x pt - \Y = \y pt - \ifdim \Y < \X - \draw[#2] (\x,\y)--(\y,\y) ; - \else - \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ; - \fi - \else - \draw[#2] (\x,\x)--(\x,\y)--(\y,\y) ; - \fi - \ifboolKV[webrecurr]{AffTermes} - {\def\indice{\fpeval{\i+\PLRecurno-1}} - \draw[#2,#3] (\x,\y)--(\x,0) node[\PLRecurposlab=\PLRecuroffset,font=\PLRecurlabelsize]{$\PLRecurnom_\indice$};} - {} - \def\i{\fpeval{\y}}% - } -} - -%%------CercleTrigo -\defKV[cercletrigo]{% - Rayon=\def\PLcerclerayon{#1},% - Epaisseur=\def\PLcerclethick{#1},% - EpaisseurSol=\def\PLcerclesolthick{#1},% - Marge=\def\PLcerclemarge{#1},% - TailleValeurs=\def\PLcerclevaleurs{#1},% - TailleAngles=\def\PLcercleangles{#1},% - CouleurFond=\def\PLcerclefond{#1},% - Decal=\def\PLcercledecal{#1},% - cos=\def\PLcerclevalcos{#1},% - sin=\def\PLcerclevalsin{#1},% - CouleurSol=\def\PLcerclecoleq{#1} -} - -\setKVdefault[cercletrigo]{ - Rayon=3,% - Marge=0.25,% - Decal=10pt,% - Epaisseur=thick,% - EpaisseurSol=very thick,% - AffAngles=true,% - AffTraits=true,% - AffValeurs=true,% - MoinsPi=true,% - TailleValeurs=\scriptsize,% - TailleAngles=\footnotesize,% - CouleurFond=white,% - Equationcos=false,% - Equationsin=false,% - cos=45,% - sin=30,% - CouleurSol=blue -} - -\newcommand\CercleTrigo[1][]{% - \useKVdefault[cercletrigo] - \setKV[cercletrigo]{#1} - \tikzset{PLval/.style={inner sep=1pt,font=\PLcerclevaleurs,fill=\PLcerclefond}} - \tikzset{PLagl/.style={inner sep=1pt,font=\PLcercleangles,fill=\PLcerclefond}} - %valeurs remarquables - \ifboolKV[cercletrigo]{AffAngles} - {%valeursdudessus - \draw ({\PLcerclerayon},0) node[above right=2pt,font=\PLcercleangles] {0} ; - \draw ($(30:{\PLcerclerayon})+(30:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{6}$} ; - \draw ($(45:{\PLcerclerayon})+(45:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{4}$} ; - \draw ($(60:{\PLcerclerayon})+(60:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{3}$} ; - \draw (0,{\PLcerclerayon}) node[above right=2pt,PLagl] {$\tfrac{\pi}{2}$} ; - \draw ({-\PLcerclerayon},0) node[above left=2pt,PLagl] {$\pi$} ; - \draw ($(150:{\PLcerclerayon})+(150:\PLcercledecal)$) node[PLagl] {$\tfrac{5\pi}{6}$} ; - \draw ($(135:{\PLcerclerayon})+(135:\PLcercledecal)$) node[PLagl] {$\tfrac{3\pi}{4}$} ; - \draw ($(120:{\PLcerclerayon})+(120:\PLcercledecal)$) node[PLagl] {$\tfrac{2\pi}{3}$} ; - \draw ($(30:{\PLcerclerayon})+(30:\PLcercledecal)$) node[PLagl] {$\tfrac{\pi}{6}$} ; - %valeursdudessous - \draw ($(-30:{\PLcerclerayon})+(-30:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-}{11}\pi}{6}$} ; - \draw ($(-45:{\PLcerclerayon})+(-45:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-}{7}\pi}{4}$} ; - \draw ($(-60:{\PLcerclerayon})+(-60:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-}{5}\pi}{3}$} ; - \draw (0,{-\PLcerclerayon}) node[below right=2pt,PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-}{3}\pi}{2}$} ; - \draw ($(-120:{\PLcerclerayon})+(-120:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-2}{4}\pi}{3}$} ; - \draw ($(-135:{\PLcerclerayon})+(-135:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-3}{5}\pi}{4}$} ; - \draw ($(-150:{\PLcerclerayon})+(-150:\PLcercledecal)$) node[PLagl] {$\tfrac{\ifboolKV[cercletrigo]{MoinsPi}{-5}{7}\pi}{6}$} ; - \ifboolKV[cercletrigo]{MoinsPi} - {\draw ({-\PLcerclerayon},0) node[below left=2pt,PLagl] {$-\pi$} ;} - {\draw ({\PLcerclerayon},0) node[below right=2pt,PLagl] {$2\pi$} ;} - }% - {} - %tracés - \draw[\PLcerclethick,->,>=latex] ({-\PLcerclerayon-\PLcerclemarge},0)--({\PLcerclerayon+\PLcerclemarge},0) ; - \draw[\PLcerclethick,->,>=latex] (0,{-\PLcerclerayon-\PLcerclemarge})--(0,{\PLcerclerayon+\PLcerclemarge}) ; - \draw[\PLcerclethick] (0,0) circle[radius=\PLcerclerayon] ; - \draw (0,0) node[below left=2pt,PLval] {0} ; - %equations - \ifboolKV[cercletrigo]{Equationcos} - {%traitsdeconstructioncos - \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) - (-135:\PLcerclerayon) -- (45:\PLcerclerayon) - (30:\PLcerclerayon) -- (150:\PLcerclerayon) - (-30:\PLcerclerayon) -- (-150:\PLcerclerayon) - (-60:\PLcerclerayon)--(60:\PLcerclerayon) - (-120:\PLcerclerayon)--(120:\PLcerclerayon) ; - \draw[\PLcerclesolthick,\PLcerclecoleq] ({\PLcerclevalcos}:\PLcerclerayon)--({-\PLcerclevalcos}:\PLcerclerayon) ; - \filldraw[\PLcerclecoleq] ({\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ({-\PLcerclevalcos}:\PLcerclerayon) circle[radius=2pt] ;% - } - {} - \ifboolKV[cercletrigo]{Equationsin} - {%traitsdeconstructioncos - \draw[\PLcerclethick,dotted,gray] (-45:\PLcerclerayon) -- (135:\PLcerclerayon) - (-135:\PLcerclerayon) -- (45:\PLcerclerayon) - (30:\PLcerclerayon) -- (150:\PLcerclerayon) - (-30:\PLcerclerayon) -- (-150:\PLcerclerayon) - (-60:\PLcerclerayon)--(60:\PLcerclerayon) - (-120:\PLcerclerayon)--(120:\PLcerclerayon) ; - \draw[\PLcerclesolthick,\PLcerclecoleq] ({\PLcerclevalsin}:\PLcerclerayon)--({180-\PLcerclevalsin}:\PLcerclerayon) ; - \filldraw[\PLcerclecoleq] ({\PLcerclevalsin}:\PLcerclerayon) circle[radius=2pt] ({180-\PLcerclevalsin}:\PLcerclerayon) circle[radius=2pt] ;% - } - {} - %valeurs - \ifboolKV[cercletrigo]{AffValeurs} - {% - \draw ({0.5*\PLcerclerayon},0) node[below=2pt,PLval] {$\tfrac{1}{2}$} ; - \draw ({-0.5*\PLcerclerayon},0) node[below=2pt,PLval] {$-\tfrac{1}{2}$} ; - \draw (0,{0.5*\PLcerclerayon}) node[left=2pt,PLval] {$\tfrac{1}{2}$} ; - \draw (0,{-0.5*\PLcerclerayon}) node[left=2pt,PLval] {$-\tfrac{1}{2}$} ; - \draw ({0.866*\PLcerclerayon},0) node[below=2pt,PLval] {$\tfrac{\sqrt{3}}{2}$} ; - \draw ({-0.866*\PLcerclerayon},0) node[below=2pt,PLval] {$-\tfrac{\sqrt{3}}{2}$} ; - \draw (0,{0.866*\PLcerclerayon}) node[left=2pt,PLval] {$\tfrac{\sqrt{3}}{2}$} ; - \draw (0,{-0.866*\PLcerclerayon}) node[left=2pt,PLval] {$-\tfrac{\sqrt{3}}{2}$} ; - \draw ({0.707*\PLcerclerayon},0) node[above=2pt,PLval] {$\tfrac{\sqrt{2}}{2}$} ; - \draw ({-0.707*\PLcerclerayon},0) node[above=2pt,PLval] {$-\tfrac{\sqrt{2}}{2}$} ; - \draw (0,{0.707*\PLcerclerayon}) node[right=2pt,PLval] {$\tfrac{\sqrt{2}}{2}$} ; - \draw (0,{-0.707*\PLcerclerayon}) node[right=2pt,PLval] {$-\tfrac{\sqrt{2}}{2}$} ; - %\draw[\PLcerclethick] (0,0) circle[radius=\PLcerclerayon] ; %on retrace par dessus ? - }% - {} - %valeurs remarquables en dernier - \ifboolKV[cercletrigo]{AffTraits} - {% - \draw[\PLcerclethick,dotted,gray] (-120:\PLcerclerayon) rectangle (60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-150:\PLcerclerayon) rectangle (30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-135:\PLcerclerayon) rectangle (45:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-120:\PLcerclerayon)--(60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-150:\PLcerclerayon)--(30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (-135:\PLcerclerayon)--(45:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (120:\PLcerclerayon)--(-60:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (150:\PLcerclerayon)--(-30:\PLcerclerayon) ; - \draw[\PLcerclethick,dotted,gray] (135:\PLcerclerayon)--(-45:\PLcerclerayon) ; - }% - {} -} - -%%------AideTds -\defKV[aidetds]{% - Code=\def\tdsparam{#1},% - Couleur=\def\tdscouleur{#1},% - Racines=\def\tdsracine{#1},% - Largeur=\def\tdslarg{#1},% - Hauteur=\def\tdshaut{#1} -} - -\setKVdefault[aidetds]{% - Code=da+, - Couleur=red,% - Largeur=2,% - Hauteur=1,% - Cadre=true,% - Racines=2 -} - -\NewDocumentCommand\schematdsaff{ s m m m m }{%pour les droites (interne) - % * = étoilée -> a négatif - % #2 = couleur - % #3 = largeur - % #4 = hauteur - % #5 = racine - \IfBooleanTF{#1}%si étoile := droite qui descend - {% - \def\possgnavant{above right}\def\possgnapres{below left}\def\sgnavant{\strut+}\def\sgnapres{\strut-}% - \draw[thick,#2] ({-0.5*#3},{0.5*#4})--({0.5*#3},{-0.5*#4}); - } - {% - \def\possgnavant{below right}\def\possgnapres{above left}\def\sgnavant{\strut-}\def\sgnapres{\strut+}% - \draw[thick,#2] ({-0.5*#3},{-0.5*#4})--({0.5*#3},{0.5*#4}); - } - \draw[#2] ({-0.5*#3},0) node[inner sep=0pt,\possgnavant=1pt,font=\scriptsize] {\textcircled{$\sgnavant$}}; - \draw[#2] ({0.5*#3},0) node[inner sep=0pt,\possgnapres=1pt,font=\scriptsize] {\textcircled{$\sgnapres$}}; - \draw[#2] (0,0) node[inner sep=0pt,above=3pt,font=\scriptsize] {$\strut#5$} ; - \filldraw[#2] (0,0) circle[radius=2pt] ; -} - -\NewDocumentCommand\schematdsparab{ m m m m m o }{%pour les paraboles (interne) - % #1 = signe de a (1 ou -1) ? - % #2 = couleur - % #3 = largeur - % #4 = hauteur - % #5 = nb racine - % #6 = liste racines (option) - \xintifboolexpr{ #1 > 0 'and' #5 == 2 } %a>0 et delta>0 - {% - \saveexpandmode\expandarg - \StrCut{#6}{/}{\xun}{\xdeux} - \restoreexpandmode - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,{-0.5*#4}) ({0.375*#3},{0.5*#4}) ; - \draw[#2] ({-0.5*#3},0) node[above right=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \draw[#2] ({0.5*#3},0) node[above left=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \draw[#2] (0,0) node[below=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \filldraw[#2] ({0.2625*#3},0) circle[radius=2pt] node[below right=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xdeux$}; - \filldraw[#2] ({-0.2625*#3},0) circle[radius=2pt] node[below left=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xun$};% - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 2 } %a<0 et delta>0 - {% - \saveexpandmode\expandarg - \StrCut{#6}{/}{\xun}{\xdeux} - \restoreexpandmode - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,{0.5*#4}) ({0.375*#3},{-0.5*#4}) ; - \draw[#2] ({-0.5*#3},0) node[below right=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \draw[#2] ({0.5*#3},0) node[below left=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - \draw[#2] (0,0) node[above=1pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - \filldraw[#2] ({0.2625*#3},0) circle[radius=2pt] node[above right=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xdeux$}; - \filldraw[#2] ({-0.2625*#3},0) circle[radius=2pt] node[above left=1pt,inner sep=0pt,font=\scriptsize] {$\strut\xun$};% - } - {} - \xintifboolexpr{ #1 > 0 'and' #5 == 1 } %a>0 et delta=0 - {% - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,0) ({0.375*#3},{0.5*#4}) ; - \filldraw[#2] (0,0) circle[radius=2pt] node[below=3pt,inner sep=1pt,font=\scriptsize] {$#6$}; - \draw[#2] (0,0) node[above=3pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 1 } %a>0 et delta=0 - {% - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,0) ({0.375*#3},{-0.5*#4}) ; - \filldraw[#2] (0,0) circle[radius=2pt] node[above=3pt,inner sep=0pt,font=\scriptsize] {$#6$}; - \draw[#2] (0,0) node[below=3pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - } - {} - \xintifboolexpr{ #1 > 0 'and' #5 == 0 } %a>0 et delta<0 - {% - \draw[thick,#2] ({-0.375*#3},{0.5*#4}) parabola bend (0,{0.075*#4}) ({0.375*#3},{0.5*#4}) ; - \draw[#2] (0,{0.075*#4}) node[above=2pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut+$}}; - } - {} - \xintifboolexpr{ #1 < 0 'and' #5 == 0 } %a>0 et delta<0 - {% - \draw[thick,#2] ({-0.375*#3},{-0.5*#4}) parabola bend (0,{-0.075*#4}) ({0.375*#3},{-0.5*#4}) ; - \draw[#2] (0,{-0.075*#4}) node[below=2pt,inner sep=0pt,font=\scriptsize] {\textcircled{$\strut-$}}; - } - {} -} - -\NewDocumentCommand\MiniSchemaSignes{ s O{} D<>{} }{% - \useKVdefault[aidetds] - \setKV[aidetds]{#2} - %simplification des codes - \IfEq{\tdsparam}{da+}{\def\xcode{1}}{} - \IfEq{\tdsparam}{da-}{\def\xcode{-1}}{} - \IfEq{\tdsparam}{pa+d+}{\def\xcode{12}}{} - \IfEq{\tdsparam}{pa-d+}{\def\xcode{-12}}{} - \IfEq{\tdsparam}{pa+d0}{\def\xcode{11}}{} - \IfEq{\tdsparam}{pa-d0}{\def\xcode{-11}}{} - \IfEq{\tdsparam}{pa+d-}{\def\xcode{10}}{} - \IfEq{\tdsparam}{pa-d-}{\def\xcode{-10}}{} - %si commande étoilée := commande autonome - \IfBooleanTF{#1}% - {\begin{tikzpicture}[#3]}{}% - %cadre si booléen true - \ifboolKV[aidetds]{Cadre} - {\draw[lightgray] ({-0.5*\tdslarg},{-0.5*\tdshaut}) rectangle ({0.55*\tdslarg},{0.5*\tdshaut}) ;} - {} - %restriction de la petite fenêtre - \clip ({-0.5*\tdslarg},{-0.5*\tdshaut}) rectangle ({0.55*\tdslarg},{0.5*\tdshaut}) ; - %axe (Ox) - \draw[thick,->] ({-0.5*\tdslarg},0)--({0.55*\tdslarg},0); - %1er degré a+ code = 1 - \ifnum\xcode=1 - \schematdsaff{\tdscouleur}{\tdslarg}{\tdshaut}{\tdsracine} - \fi - %1er degré a- code = -1 - \ifnum\xcode=-1 - \schematdsaff*{\tdscouleur}{\tdslarg}{\tdshaut}{\tdsracine} - \fi - %2d degré a+delta+ code = 12 - \ifnum\xcode=12 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{2}[\tdsracine] - \fi - %2d degré a-delta+ code = -12 - \ifnum\xcode=-12 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{2}[\tdsracine] - \fi - %2d degré a+delta0 code = 11 - \ifnum\xcode=11 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{1}[\tdsracine] - \fi - %2d degré a-delta0 code = -11 - \ifnum\xcode=-11 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{1}[\tdsracine] - \fi - %2d degré a+delta- code = 10 - \ifnum\xcode=10 - \schematdsparab{1}{\tdscouleur}{\tdslarg}{\tdshaut}{0} - \fi - %2d degré a-delta- code = -10 - \ifnum\xcode=-10 - \schematdsparab{-1}{\tdscouleur}{\tdslarg}{\tdshaut}{0} - \fi - \IfBooleanTF{#1}% - {\end{tikzpicture}}{}% -} - -%pour l'interaction avec tkz-tab -\defKV[aidetdstkz]{% - Echelle=\def\tdstkzscale{#1},% - Decal=\def\tdstkzoffset{#1} -} - -\setKVdefault[aidetdstkz]{% - Echelle=1,% - Decal=1.25 -} - -\NewDocumentCommand\MiniSchemaSignesTkzTab{ o m O{0.85} O{1.5} }{% - %#1 = codeaidetikz - %#2 = numligne - %#3 = échelle - %#4 = décalage - %\shorthandoff{:}\shorthandoff{!} %bizzzzzzzzare - %\NoAutoSpacing - \coordinate (ZZZ) at ($(T2#2)!.5!(T2\the\numexpr#2+1\relax)$) ; - %\shorthandon{:}\shorthandon{!} - \path (ZZZ.east) + (#4,0) pic[right,scale=#3,every node/.style={scale=#3}] {code={\MiniSchemaSignes[#1]}} ; -} - -%%------RegressionLinéaire -%calcul des paramètres -\defKV[coeffreglin]{% - NomCoeffa=\def\RegLinCoeffa{#1},% - NomCoeffb=\def\RegLinCoeffb{#1},% - NomCoeffr=\def\RegLinCoeffr{#1},% - NomCoeffrd=\def\RegLinCoeffrd{#1},% - NomXmin=\def\RegLinCoeffXmin{#1},% - NomXmax=\def\RegLinCoeffXmax{#1} -} - -\setKVdefault[coeffreglin]{% - NomCoeffa=COEFFa,% - NomCoeffb=COEFFb,% - NomCoeffr=COEFFr,% - NomCoeffrd=COEFFrd,% - NomXmin=LXmin,% - NomXmax=LXmax -} - -\newcommand\CalculsRegLin[3][]{% - \useKVdefault[coeffreglin]% - \setKV[coeffreglin]{#1}% on paramètres les nouvelles clés et on les simplifie - %xmin et xmax - \expandafter\def\csname\RegLinCoeffXmin\endcsname{\fpeval{min(#2)}} - \expandafter\def\csname\RegLinCoeffXmax\endcsname{\fpeval{max(#2)}} - %listes des données - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - %somme des LX et des LY OK - \xdef\LXSomme{0} - \xdef\LYSomme{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXSomme{\fpeval{\LXSomme+\LX[\i]}} - } - \foreach \i in {1,2,...,\LNB}{ - \xdef\LYSomme{\fpeval{\LYSomme+\LY[\i]}} - } - %moyenne des LX et des LY OK - \xdef\LXmoy{\fpeval{\LXSomme/\LNB}} - \xdef\LYmoy{\fpeval{\LYSomme/\LNB}} - %variance des LX et des LY OK - \xdef\LXvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXvar{\fpeval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}} - } - \xdef\LXvar{\fpeval{\LXvar/\LNB}} - \xdef\LYvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LYvar{\fpeval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}} - } - \xdef\LYvar{\fpeval{\LYvar/\LNB}} - %covariance des XY OK - \xdef\LXYvar{0} - \foreach \i in {1,2,...,\LNB}{ - \xdef\LXYvar{\fpeval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}} - } - \xdef\LXYvar{\fpeval{\LXYvar/\LNB}} - %COEFFS OK - \expandafter\def\csname\RegLinCoeffa\endcsname{\fpeval{\LXYvar/\LXvar}} - \expandafter\def\csname\RegLinCoeffb\endcsname{\fpeval{\LYmoy-\csname\RegLinCoeffa\endcsname*\LXmoy}} - \expandafter\def\csname\RegLinCoeffr\endcsname{\fpeval{\LXYvar/sqrt(\LXvar*\LYvar)}} - \expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}} -} - -%pour un nuage en TiKz -\defKV[nuagereglin]{% - Couleur=\def\RegLinNuageCouleur{#1},% - Taille=\def\RegLinNuageTaille{#1}, - Ox=\def\RegLinNuageOx{#1},% - Oy=\def\RegLinNuageOy{#1},% -} - -\setKVdefault[nuagereglin]{% - Couleur=teal,% - Taille=2pt,% - Ox=0,% - Oy=0 -} - -\newcommand\PointsRegLin[3][]{% - \useKVdefault[nuagereglin] - \setKV[nuagereglin]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - \foreach \i in {1,2,...,\LNB} {\filldraw[\RegLinNuageCouleur] ({\LX[\i]-\RegLinNuageOx},{\LY[\i]-\RegLinNuageOy}) circle[radius=\RegLinNuageTaille] ;} -} - -%%------ConversionsBases -%dec->bin avec blocs de 4 chiffres -\setKVdefault[CONVDECBIN]{% - AffBase=true -} -\NewDocumentCommand\ConversionDecBin{ s O{} m }{% - \useKVdefault[CONVDECBIN] - \setKV[CONVDECBIN]{#2}% on paramètres les nouvelles clés et on les simplifie - \def\resbrut{\xintDecToBin{#3}} - \StrLen{\resbrut}[\nbchiffres] - \def\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} - \IfBooleanTF{#1} - {\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}} - {\num{#3}\ifboolKV[CONVDECBIN]{AffBase}{_{10}}{}=\num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resbrut}\ifboolKV[CONVDECBIN]{AffBase}{_{2}}{}} -} - -\setKVdefault[CONVBINHEX]{% - %trait=0.5pt,% - AffBase=true,% - Details=true -} -%bourrage de 0 avant -\ExplSyntaxOn -\NewExpandableDocumentCommand{\PLstrzeros}{m} -{ - \int_compare:nT { #1 > 0 } - { - 0 \prg_replicate:nn { #1 - 1 } { 0 } - } -} -\ExplSyntaxOff - - -%la conversion complète -\newcommand\ConversionBinHex[2][]{% - \useKVdefault[CONVBINHEX] - \setKV[CONVBINHEX]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\chbrut{#2} - \StrLen{\chbrut}[\nbchiffres] %nb de chiffres du binaire - \xdef\nbgrp{\fpeval{4*ceil(\nbchiffres/4,0)}} %nb de chiffres avec blocs de 4 - \xdef\nbblocs{\fpeval{\nbgrp/4}} %nb de blocs - %on rajoute des zeros si besoin := OK - \xdef\resinter{\chbrut} - \num[digit-group-size=4]{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{2}}{}= - \ifboolKV[CONVBINHEX]{Details}{% - \ifnum\nbchiffres<\nbgrp - \xdef\nbz{\inteval{\nbgrp-\nbchiffres}} - \xdef\resinter{\PLstrzeros{\nbz}\chbrut} - \num[digit-group-size=4,minimum-integer-digits=\nbgrp]{\resinter}= - \fi - %découpage par blocs et conversion en hexa := OK - \newcount\cpt - \cpt0 - \loop\ifnum \cpt<\nbblocs - \def\iinit{\fpeval{4*\cpt+1}}% - \def\ifinal{\fpeval{4*(\cpt+1)}}% - \StrMid{\resinter}{\iinit}{\ifinal}[\blocinter]% - {\underbracket{\blocinter}_{\xintBinToHex{\blocinter}}\,} - \advance\cpt by 1 - \repeat - \!= - }% - {} - \xintBinToHex{\chbrut}\ifboolKV[CONVBINHEX]{AffBase}{_{16}}{} -} - -%hexa/bin->dec avec écriture polynomiale -\defKV[CONVTODEC]{% - BaseDep=\def\basedepart{#1} -} -\setKVdefault[CONVTODEC]{% - BaseDep=2,% - AffBase=true,% - Details=true,% - Zeros=true -} - -\ExplSyntaxOn -\newcommand\convertbasetobasedix[2]{% - \int_from_base:nn {#1}{#2} -} -\ExplSyntaxOff - -\newcommand\ConversionVersDec[2][]{% - \useKVdefault[CONVTODEC] - \setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\nbdepart{#2} - \StrLen{\nbdepart}[\nbchiffres] - \StrChar{\nbdepart}{1}[\chiffre] - %si on est en base 16 - \xintifboolexpr{\basedepart == 16}% - {% - \nbdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{Details}{% - \xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\nbdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{Zeros}% - {% - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - } - { - \ifnum\xintHexToDec{\chiffre} > 0 - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - } - {} - \num{\xintHexToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{} - }% - {} - \xintifboolexpr{\basedepart == 2}% - {% - \num[digit-group-size=4]{\nbdepart}\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{Details}{% - \chiffre\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\nbdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{Zeros}% - {% - +\chiffre\times\basedepart^{\puiss}% - } - { - \ifnum\chiffre > 0 - +\chiffre\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - } - {} - \num{\xintBinToDec{\nbdepart}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{} - }% - {}% -} - -\newcommand\ConversionBaseDix[3][]{%1=options,%2=nb,%3=basedep ?? - \useKVdefault[CONVTODEC] - \setKV[CONVTODEC]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\NBdepart{#2} - \def\basedepart{#3} - \StrLen{\NBdepart}[\nbchiffres] - \StrChar{\NBdepart}{1}[\chiffre] - \NBdepart\ifboolKV[CONVTODEC]{AffBase}{_{\basedepart}}{} = - \ifboolKV[CONVTODEC]{Details}{% - \xintHexToDec{\chiffre}\times\basedepart^{\inteval{\nbchiffres-1}}% - \newcount\cpt - \cpt2 - \loop\ifnum \cpt<\inteval{\nbchiffres+1} - \def\puiss{\inteval{\nbchiffres-\cpt}} - \StrChar{\NBdepart}{\cpt}[\chiffre] - \ifboolKV[CONVTODEC]{Zeros}% - {% - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - } - { - \ifnum\xintHexToDec{\chiffre} > 0 - +\xintHexToDec{\chiffre}\times\basedepart^{\puiss}% - \fi - } - \advance\cpt by 1 - \repeat - = - }% - {}% - \num{\convertbasetobasedix{#2}{#3}}\ifboolKV[CONVTODEC]{AffBase}{_{10}}{}% -} - -%%------MainLevée TikZ -\tikzset{% - mainlevee/.style args={#1et#2}{decorate,decoration={random steps,segment length=#1,amplitude=#2}}, - mainlevee/.default={5mm et 0.6pt} -} - -%%------STATS2VAR -%variables directement dans tikzpicture -\tikzset{% - Ox/.store in=\axexOx,Ox/.default=0,Ox=0,%essai - Oy/.store in=\axeyOy,Oy/.default=0,Oy=0,%essai - xmin/.store in=\xmin,xmin/.default=-5,xmin=-5, - xmax/.store in=\xmax,xmax/.default=5,xmax=5, - ymin/.store in=\ymin,ymin/.default=-5,ymin=-5, - ymax/.store in=\ymax,ymax/.default=5,ymax=5, - xgrille/.store in=\xgrille,xgrille/.default=1,xgrille=1, - xgrilles/.store in=\xgrilles,xgrilles/.default=0.5,xgrilles=0.5, - ygrille/.store in=\ygrille,ygrille/.default=1,ygrille=1, - ygrilles/.store in=\ygrilles,ygrilles/.default=0.5,ygrilles=0.5, - xunit/.store in=\xunit,xunit/.default=1,xunit=1, - yunit/.store in=\yunit,yunit/.default=1,yunit=1 -} - -%style point croix -\tikzset{pics/PLdotcross/.style args={#1/#2}{ - code={ - \draw[line width={0.5*#1},rotate=#2] (-#1,0) -- (#1,0); - \draw[line width={0.5*#1},rotate=#2] (0,-#1) -- (0, #1); - } - }, - pics/PLdotcross/.default={4pt/0} -} - -%affichage d'un label en radians -\NewDocumentCommand\AffAngleRadian{ s m }{%étoilée en dfrac - \IfStrEq{#2}{0}%cas où l'argument vaut 0 - {\def\restmp{0}}% - {% - \StrDel{#2}{*}[\restmpsansmoins]% - \StrSubstitute{\restmpsansmoins}{pi}{\pi}[\restmppi]% - \IfSubStr{#2}{/}% - {% - \StrCut{\restmppi}{/}\tmpnum\tmpdenom% - \IfSubStr{\tmpnum}{-} - {% - \StrDel{\tmpnum}{-}[\restmppinum]% - \IfBooleanTF{#1} - {\def\restmp{-\dfrac{\restmppinum}{\tmpdenom}}} - {\def\restmp{-\frac{\restmppinum}{\tmpdenom}}} - }% - {% - \IfBooleanTF{#1} - {\def\restmp{\dfrac{\tmpnum}{\tmpdenom}}} - {\def\restmp{\frac{\tmpnum}{\tmpdenom}}} - }% - }% - {% - \def\restmp{\restmppi}% - }% - }% - \restmp% -} - -%axeOx -\defKV[PLaxextkz]{% - Epaisseur=\def\axexwidth{#1},% - Police=\def\axexfont{#1},% - HautGrad=\def\axextickwidth{#1},% - PosGrad=\def\axexposlabel{#1} -} - -\setKVdefault[PLaxextkz]{% - Epaisseur=1pt,% - Police=\normalsize\normalfont,% - PosGrad=below,% - HautGrad=4pt,% - AffGrad=true,% - AffOrigine=true,% - Annee=false,% - Dfrac=false,% - Trigo=false -} - -\DeclareDocumentCommand\AxexTikz{ O{} m }{% - \useKVdefault[PLaxextkz] - \setKV[PLaxextkz]{#1}% on paramètres les nouvelles clés et on les simplifie - %récupération des tickwidth H/B - \IfSubStr{\axextickwidth}{/} - {\StrCut{\axextickwidth}{/}{\axextickwidthA}{\axextickwidthB}} - {\def\axextickwidthA{\axextickwidth}\def\axextickwidthB{\axextickwidth}} - %en fonction de Trigo ou non - \ifboolKV[PLaxextkz]{Trigo} - { - \foreach \x in {#2}{% - \draw[line width=\axexwidth] ({\x-\axexOx},{\axextickwidthA}) -- ({\x-\axexOx},{-\axextickwidthB})% - \ifboolKV[PLaxextkz]{AffGrad}%on affiche les graduations - {% - node[\axexposlabel,font=\axexfont] {\ifboolKV[PLaxextkz]{Dfrac}{$\AffAngleRadian*{\x}$}{$\AffAngleRadian{\x}$}} - }% - {}% - ;} - } - { - \foreach \x in {#2}{% - \draw[line width=\axexwidth] ({\x-\axexOx},{\axextickwidthA}) -- ({\x-\axexOx},{-\axextickwidthB})% - \ifboolKV[PLaxextkz]{AffGrad}%on affiche les graduations - {% - \ifboolKV[PLaxextkz]{AffOrigine}%si on demande d'afficher l'origine - {node[\axexposlabel,font=\axexfont] - {\ifboolKV[PLaxextkz]{Annee}% - {\num[group-digits=none]{\x}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\x}}% - } - } - {\xintifboolexpr{\x==\axexOx}{}{node[\axexposlabel,font=\axexfont] {\ifboolKV[PLaxextkz]{Annee}% - {\num[group-digits=none]{\x}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\x}}% - } - } - } - } - {} - ;} - } - -} - -%axeOy -\defKV[PLaxeytkz]{% - Epaisseur=\def\axeywidth{#1},% - Police=\def\axeyfont{#1},% - HautGrad=\def\axeytickwidth{#1},% - PosGrad=\def\axeyposlabel{#1} -} - -\setKVdefault[PLaxeytkz]{% - Epaisseur=1pt,% - Police=\normalsize\normalfont,% - PosGrad=left,% - HautGrad=4pt,% - AffGrad=true,% - AffOrigine=true,% - Annee=false -} - -\DeclareDocumentCommand\AxeyTikz{ O{} m }{% - \useKVdefault[PLaxeytkz] - \setKV[PLaxeytkz]{#1}% on paramètres les nouvelles clés et on les simplifie - \IfSubStr{\axeytickwidth}{/} - {\StrCut{\axeytickwidth}{/}{\axeytickwidthA}{\axeytickwidthB}} - {\def\axeytickwidthA{\axeytickwidth}\def\axeytickwidthB{\axeytickwidth}} - \foreach \y in {#2}{% - \draw[line width=\axeywidth] ({\axeytickwidthA},{\y-\axeyOy}) -- ({-\axeytickwidthB},{\y-\axeyOy})% - \ifboolKV[PLaxeytkz]{AffGrad}%on affiche les graduations - {% - \ifboolKV[PLaxeytkz]{AffOrigine}%si on demande d'afficher l'origine - {node[\axeyposlabel,font=\axeyfont] - {\ifboolKV[PLaxeytkz]{Annee}% - {\num[group-digits=none]{\y}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\y}}% - } - } - {\xintifboolexpr{\y==\axeyOy}{}{node[\axeyposlabel,font=\axeyfont] {\ifboolKV[PLaxeytkz]{Annee}% - {\num[group-digits=none]{\y}}% - {\num[text-family-to-math=true,text-series-to-math=true]{\y}}% - } - } - } - } - {} - ;} -} - -%axes -\defKV[PLaxestkz]{% - Epaisseur=\def\axeswidth{#1},% - Police=\def\axesfont{#1},% - Labelx=\def\axeslabelx{#1},% - Labely=\def\axeslabely{#1},% - PosLabelx=\def\axesposlabelx{#1},% - PosLabely=\def\axesposlabely{#1},% - EchelleFleche=\def\axesechellefleche{#1},% - TypeFleche=\def\axestypefleche{#1},% - AffLabel=\def\axesafflabel{#1},% - ElargirOx=\def\axeselargx{#1},% - ElargirOy=\def\axeselargy{#1} -} - -\setKVdefault[PLaxestkz]{% - Epaisseur=1pt,% - Police=\normalsize\normalfont,% - Labelx=$x$,% - Labely=$y$,% - AffLabel=z,% - PosLabelx=right,% - PosLabely=above,% - EchelleFleche=1,% - TypeFleche=latex,% - ElargirOx=0/0.05,% - ElargirOy=0/0.05 -} - -\DeclareDocumentCommand\AxesTikz{ O{} }{% - \useKVdefault[PLaxestkz] - \setKV[PLaxestkz]{#1}% - %les petits élargissements - \IfSubStr{\axeselargx}{/} - {\StrCut{\axeselargx}{/}{\axeselargxG}{\axeselargxD}} - {\def\axeselargxG{\axeselargx}\def\axeselargxD{\axeselargx}} - \def\axesenlargxG{\fpeval{\axeselargxG*(\xmax-\xmin)}} - \def\axesenlargxD{\fpeval{\axeselargxD*(\xmax-\xmin)}} - \IfSubStr{\axeselargy}{/} - {\StrCut{\axeselargy}{/}{\axeselargyG}{\axeselargyD}} - {\def\axeselargyG{\axeselargy}\def\axeselargyD{\axeselargy}} - \def\axesenlargyG{\fpeval{\axeselargyG*(\ymax-\ymin)}} - \def\axesenlargyD{\fpeval{\axeselargyD*(\ymax-\ymin)}} - %on affiche les deux axes - \draw[line width=\axeswidth,-{\axestypefleche[scale=\axesechellefleche]}] ({\xmin-\axexOx-\axesenlargxG},0) -- ({\xmax-\axexOx+\axesenlargxD},0) ; - \draw[line width=\axeswidth,-{\axestypefleche[scale=\axesechellefleche]}] (0,{\ymin-\axeyOy-\axesenlargyG}) -- (0,{\ymax-\axeyOy++\axesenlargyD}) ; - %les labels éventuels - \IfSubStr{\axesafflabel}{x}% - {\draw ({\xmax-\axexOx},0) node[\axesposlabelx,font=\axesfont] {\axeslabelx} ;} - {} - \IfSubStr{\axesafflabel}{y}% - {\draw (0,{\ymax-\axeyOy}) node[\axesposlabely,font=\axesfont] {\axeslabely} ;} - {} -} - -%fenêtre clippée -\newcommand\FenetreTikz{% - \clip ({\xmin-\axexOx},{\ymin-\axeyOy}) rectangle ({\xmax-\axexOx},{\ymax-\axeyOy}) ; -} - -%origine -\defKV[PLaxesorig]{% - Police=\def\axesorfont{#1},% - Pos=\def\axesorpos{#1},% - Decal=\def\axesordecal{#1},% - Valeur=\def\axesorval{#1} -} - -\setKVdefault[PLaxesorig]{% - Police=\normalsize\normalfont,% - Pos={below left},% - Decal=2pt,% - Valeur=0 -} - -\DeclareDocumentCommand\OrigineTikz{ O{} }{% - \useKVdefault[PLaxesorig]% - \setKV[PLaxesorig]{#1}% - \draw (0,0) node[\axesorpos=\axesordecal,font=\axesorfont] {\axesorval} ; -} - -%grilles -\setKVdefault[PLgrillestkz]{% - Affp=true,% - Affs=true -} - -\DeclareDocumentCommand\GrilleTikz{ O{} O{thin,lightgray} O{ultra thin,lightgray} }{% - \useKVdefault[PLgrillestkz] - \setKV[PLgrillestkz]{#1}% - \ifboolKV[PLgrillestkz]{Affs} - {\draw[xstep=\xgrilles,ystep=\ygrilles,#3] ({\xmin-\axexOx},{\ymin-\axeyOy}) grid ({\xmax-\axexOx},{\ymax-\axeyOy});} - {} - \ifboolKV[PLgrillestkz]{Affp} - {\draw[xstep=\xgrille,ystep=\ygrille,#2] ({\xmin-\axexOx},{\ymin-\axeyOy}) grid ({\xmax-\axexOx},{\ymax-\axeyOy});} - {} -} - -%point(s) avec changement origines -\defKV[PLpts]{% - Taille=\def\ptstaille{#1},% - Couleur=\def\ptscouleur{#1},% - Style=\def\ptsstyle{#1} -} - -\setKVdefault[PLpts]{% - Taille=2pt,% - Couleur=blue,% - Style=o -} - -\newcommand\PLnuagepoints[2][]{% - \useKVdefault[PLpts] - \setKV[PLpts]{#1}% - \setsepchar{§}% - \readlist\listepointsaffiches{#2} - \foreachitem\point\in\listepointsaffiches{% - \StrBetween{\point}{(}{,}[\XPT] - \StrBetween{\point}{,}{)}[\YPT] - \IfStrEq{\ptsstyle}{o}% - {\filldraw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) circle[radius=\ptstaille] ;} - {} - \IfStrEq{\ptsstyle}{x}% - {\draw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) pic {PLdotcross=\ptstaille/45} ;} - {} - \IfStrEq{\ptsstyle}{+}% - {\draw[\ptscouleur] ({\XPT-\axexOx},{\YPT-\axeyOy}) pic {PLdotcross=\ptstaille/0} ;} - {} - } -} - -\newcommand\NuagePointsTikz[3][]{% - \useKVdefault[PLpts] - \setKV[PLpts]{#1}% on paramètres les nouvelles clés et on les simplifie - \def\xliste{#2} - \def\yliste{#3} - \readlist*\LX{\xliste} - \readlist*\LY{\yliste} - %taille des listes - \def\LNB{\inteval{\LXlen}} - \foreach \i in {1,2,...,\LNB} { - \IfStrEq{\ptsstyle}{o}% - { - \IfSubStr{\ptscouleur}{/} - {\StrCut{\ptscouleur}{/}{\ptscouleurA}{\ptscouleurB}\draw[thick,\ptscouleurA,fill=\ptscouleurB] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) circle[radius=\ptstaille] ;} - {\draw[\ptscouleur,fill=\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) circle[radius=\ptstaille] ;} - } - {} - \IfStrEq{\ptsstyle}{x}% - {\draw[\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) pic {PLdotcross=\ptstaille/45} ;} - {} - \IfStrEq{\ptsstyle}{+}% - {\draw[\ptscouleur] ({\LX[\i]-\axexOx},{\LY[\i]-\axeyOy}) pic {PLdotcross=\ptstaille/0} ;} - {} - } -} - -\defKV[PLptmoy]{% - Police=\def\ptmoyfont{#1},% - Taille=\def\ptmoytaille{#1},% - Couleur=\def\ptmoycouleur{#1},% - Style=\def\ptmoystyle{#1},% - xg=\def\ptmoyx{#1},% - yg=\def\ptmoyy{#1},% - Nom=\def\ptmoynom{#1},% - Pos=\def\ptmoypos{#1},% - Decal=\def\ptmoydecal{#1}% -} - -\setKVdefault[PLptmoy]{% - Police=\normalsize\normalfont,% - Taille=4pt,% - Couleur=red,% - Style=x,% - xg=\LXmoy,% - yg=\LYmoy,% - Nom=G,% - Pos=above,% - Decal=0pt,% - AffNom=true -} - -\newcommand\PointMoyenTikz[1][]{% - \useKVdefault[PLptmoy] - \setKV[PLptmoy]{#1}% on paramètres les nouvelles clés et on les simplifie - \IfStrEq{\ptmoystyle}{o}% - { - \IfSubStr{\ptmoycouleur}{/} - {\StrCut{\ptmoycouleur}{/}{\ptmoycouleurA}{\ptmoycouleurB}\draw[thick,\ptmoycouleurA,fill=\ptmoycouleurB] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) circle[radius=\ptmoytaille] ;} - {\draw[\ptmoycouleur,fill=\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) circle[radius=\ptmoytaille] ;} - } - {} - \IfStrEq{\ptmoystyle}{x}% - {\draw[\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) pic {PLdotcross=\ptmoytaille/45} ;} - {} - \IfStrEq{\ptmoystyle}{+}% - {\draw[\ptmoycouleur] ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) pic {PLdotcross=\ptmoytaille/0} ;} - {} - \ifboolKV[PLptmoy]{AffNom} - {\draw ({\ptmoyx-\axexOx},{\ptmoyy-\axeyOy}) node[\ptmoypos={\ptmoytaille+\ptmoydecal},font=\ptmoyfont] {\ptmoynom} ;} - {} - -} - -%courbe ? -\newcommand\CourbeTikz[3][]{% - \setsepchar{:}% - \readlist\PLdomaine{#3} - \itemtomacro\PLdomaine[1]\PLDm - \itemtomacro\PLdomaine[2]\PLDM - \saveexpandmode\noexpandarg - \StrSubstitute{#2}{\x}{(\x+\axexOx)}[\fctdecx] - \restoreexpandmode % restore the previous mode - \draw[#1] plot[domain={\PLDm-\axexOx}:{\PLDM-\axexOx}] (\x,{\fctdecx-\axeyOy}) ; -} - -\setKVdefault[PLsimplewindow]{% - Axes=true,% - Grille=true,% -} - -\DeclareDocumentCommand\FenetreSimpleTikz{ O{} D(){} D<>{} m D<>{} m }{% - \useKVdefault[PLsimplewindow]% - \setKV[PLsimplewindow]{#1}% on paramètres les nouvelles clés et on les simplifie - \ifboolKV[PLsimplewindow]{Grille}% - {\GrilleTikz}% - {}% - \ifboolKV[PLsimplewindow]{Axes}% - {\AxesTikz[#2]% - \AxexTikz[#3]{#4} - \AxeyTikz[#5]{#6}}% - {}% -} - -\NewDocumentEnvironment{StatsTikz}{ O{} } -{% - \begin{tikzpicture}[#1] - }% - {% - \end{tikzpicture}% -} - -%%------BOITES MOUSTACHES -\defKV[boiteamoustaches]{% - Couleur=\def\BaMCouleur{#1},% - Elevation=\def\BaMElevation{#1},% - Hauteur=\def\BaMHauteur{#1},% - Moyenne=\def\BaMMoyenne{#1},% - Epaisseur=\def\BaMEpaisseur{#1},% - Remplir=\def\BaMRemplissage{#1} -} - -\setKVdefault[boiteamoustaches]{% - Couleur=black,% - Elevation=1,% - Hauteur=1,% - AffMoyenne=false,% - Epaisseur=thick,% - Pointilles=false,% - Valeurs=false,% - Remplir=white -} - -\defKV[boiteamoustachesaxe]{% - Min=\def\BaMAxeMin{#1},% - Max=\def\BaMAxeMax{#1},% - Elargir=\def\BaMAxeElarg{#1},% - Epaisseur=\def\BaMAxeEpaisseur{#1},% - Valeurs=\def\BaMAxeValeurs{#1} -} - -\setKVdefault[boiteamoustachesaxe]{% - Elargir=0.05,% - Epaisseur=thick,% - AffValeurs=false -} - -\newcommand\BoiteMoustachesAxe[1][]{ - \useKVdefault[boiteamoustachesaxe] - \setKV[boiteamoustachesaxe]{#1} - \def\BaMaxelargeur{\fpeval{\BaMAxeMax-\BaMAxeMin}} - \def\BaMaxexmin{\fpeval{\BaMAxeMin-\BaMAxeElarg*\BaMaxelargeur}} - \def\BaMaxexmax{\fpeval{\BaMAxeMax+\BaMAxeElarg*\BaMaxelargeur}} - \draw[\BaMAxeEpaisseur,->,>=latex] (\BaMaxexmin,0) -- (\BaMaxexmax,0) ; - \ifboolKV[boiteamoustachesaxe]{AffValeurs} - {\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\num{\x}} ;} - {} -} - -\newcommand\BoiteMoustaches[2][]{ - \useKVdefault[boiteamoustaches] - \setKV[boiteamoustaches]{#1} - \setsepchar[.]{/}% - \readlist*\BaMListeparams{#2}% - \itemtomacro\BaMListeparams[1]\BaMmin% - \itemtomacro\BaMListeparams[2]\BaMqu% - \itemtomacro\BaMListeparams[3]\BaMmed% - \itemtomacro\BaMListeparams[4]\BaMqt% - \itemtomacro\BaMListeparams[5]\BaMmax% - \draw[draw,\BaMEpaisseur,\BaMCouleur,fill=\BaMRemplissage] ({\BaMqu},{\BaMElevation-0.5*\BaMHauteur}) rectangle ({\BaMqt},{\BaMElevation+0.5*\BaMHauteur}) ; - \draw[\BaMEpaisseur,\BaMCouleur] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmin,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmax,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmax,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmed,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmed,{\BaMElevation+0.5*\BaMHauteur}); - \draw[\BaMEpaisseur,\BaMCouleur] ({\BaMmin},{\BaMElevation})--({\BaMqu},{\BaMElevation}) ({\BaMqt},{\BaMElevation})--({\BaMmax},{\BaMElevation}) ; - \ifboolKV[boiteamoustaches]{AffMoyenne} - {\filldraw[\BaMCouleur] ({\BaMMoyenne},{\BaMElevation}) circle[radius=2.5pt] ;} - {} - \ifboolKV[boiteamoustaches]{Pointilles} - { - \draw[\BaMEpaisseur,densely dashed] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmin,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMqu,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqu,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMmed,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmed,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMqt,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqt,0) ; - \draw[\BaMEpaisseur,densely dashed] (\BaMmax,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmax,0) ; - } - {} - \ifboolKV[boiteamoustaches]{Valeurs} - { - \filldraw (\BaMmin,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmin}} ; - \filldraw (\BaMqu,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqu}} ; - \filldraw (\BaMmed,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmed}} ; - \filldraw (\BaMqt,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqt}} ; - \filldraw (\BaMmax,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmax}} ; - } - {} -} - -%%------SUDOMATHS -\defKV[PLTIKZSUDOM]{% - CouleurTexte=\def\PLSMcoultexte{#1},% - Epaisseur=\def\PLSMepf{#1},% - Epaisseurg=\def\PLSMepg{#1},% - Unite=\def\PLSMunite{#1},% - CouleurCase=\def\PLSMcoulcase{#1},% - NbCol=\def\PLSMnbcol{#1},% - NbSubCol=\def\PLSMnbsubcol{#1},% - NbLig=\def\PLSMnblig{#1},% - NbSubLig=\def\PLSMnbsublig{#1},% - Police=\def\PLSMfonte{#1},% - PoliceLeg=\def\PLSMfonteleg{#1},% - ListeLegV=\def\PLSMlistelegv{#1},% - ListeLegH=\def\PLSMlistelegh{#1},% - DecalLegende=\def\PLSMdecalleg{#1} -} - -\setKVdefault[PLTIKZSUDOM]{% - Epaisseurg=1.5pt,% - Epaisseur=0.5pt,% - Unite=1cm,% - CouleurCase=LightBlue!50,% - CouleurTexte=blue,% - NbCol=9,% - NbSubCol=3,% - NbLig=9,% - NbSubLig=3, - Police=\normalfont\normalsize,% - PoliceLeg=\normalfont\sffamily,% - Legendes=true,% - ListeLegV=ABCDEFGHIJKLMNOPQRSTUVWXYZ,% - ListeLegH=abcdefghijklmnopqrstuvwxyz,% - DecalLegende=0.45 -} - -\NewDocumentEnvironment{EnvSudoMaths}{ O{} m } - { - \useKVdefault[PLTIKZSUDOM] - \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie - %calculs intermédiaires - \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}} - \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}} - %lecture liste - \IfEq{#2}{}{}% - {% - \setsepchar[.]{§./}% - \readlist*\SPGrilleSudoMaths{#2}% - } - %débt envtik - \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter] - %cases - \IfEq{#2}{}{}% - {% - \foreach \i in {1,2,...,\PLSMnblig}{% - \foreach \j in {1,2,...,\PLSMnbcol}{% - \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase - \IfSubStr{\SMcase}{*}%si on veut colorier via * - {% - \StrDel{\SMcase}{*}[\SMcaseb]% - \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;% - } - {% - \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;% - } - } - }% - } - %grilles - \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - %légendes - \ifboolKV[PLTIKZSUDOM]{Legendes} - {% - \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;} - \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;} - }{} - } - { - \end{tikzpicture} - } - -\NewDocumentCommand\SudoMaths{ O{} m }{% - \useKVdefault[PLTIKZSUDOM] - \setKV[PLTIKZSUDOM]{#1}% on paramètres les nouvelles clés et on les simplifie - %calculs intermédiaires - \def\larcolinter{\inteval{\PLSMnbcol/\PLSMnbsubcol}} - \def\larliginter{\inteval{\PLSMnblig/\PLSMnbsublig}} - %lecture liste - \IfEq{#2}{}{}% - {% - \setsepchar[.]{§./}% - \readlist*\SPGrilleSudoMaths{#2}% - } - %débt envtik - \begin{tikzpicture}[x=\PLSMunite,y=\PLSMunite,line join=miter] - %cases - \IfEq{#2}{}{}% - {% - \foreach \i in {1,2,...,\PLSMnblig}{% - \foreach \j in {1,2,...,\PLSMnbcol}{% - \itemtomacro\SPGrilleSudoMaths[\i,\j]\SMcase - \IfSubStr{\SMcase}{*}%si on veut colorier via * - {% - \StrDel{\SMcase}{*}[\SMcaseb]% - \draw[draw=none,fill=\PLSMcoulcase] ({\j-1},{1-\i}) rectangle++ (1,-1) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte,midway] {\SMcaseb} ;% - } - {% - \draw ({\j-0.5},{0.5-\i}) node[inner sep=0pt,outer sep=0pt,\PLSMcoultexte,font=\PLSMfonte] {\SMcase} ;% - } - } - }% - } - %grilles - \draw[line width=\PLSMepg] (0,0) rectangle ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepf,xstep=1,ystep=1] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - \draw[line width=\PLSMepg,xstep=\larcolinter,ystep=\larliginter] (0,0) grid ({\PLSMnbcol},{-\PLSMnblig}) ; - %légendes - \ifboolKV[PLTIKZSUDOM]{Legendes} - {% - \foreach \i in {1,2,...,\PLSMnbcol}{\draw ({\i-0.5},{\PLSMdecalleg}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\strut\StrChar{\PLSMlistelegh}{\i}} ;} - \foreach \j in {1,2,...,\PLSMnblig}{\draw ({-\PLSMdecalleg},{0.5-\j}) node[inner sep=0pt,outer sep=0pt,font=\PLSMfonteleg] {\StrChar{\PLSMlistelegv}{\j}} ;} - }{} - \end{tikzpicture} -} - -%%------LOISPROBAS -%calculs "simples" -\newcommand\CalcBinomP[3]{%npk - \xintFloatToDecimal{\xintfloateval{binomial(#1,#3)*#2^#3*(1-#2)^(#1-#3)}} -} -\newcommand\CalcBinomC[4]{%npab - \def\BorneInf{#3}\def\BorneSup{#4} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneSup{#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(binomial(#1,i)*#2^i*(1-#2)^(#1-i), i=\BorneInf..\BorneSup)}} -} -\newcommand\CalcGeomP[2]{%pk - \xintFloatToDecimal{\xintfloateval{(1-#1)^(#2-1)*(#1)}} -} -\newcommand\CalcGeomC[3]{%pab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{1}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{\fpeval{trunc(1/#1*10,0)}}} - {} - \xintFloatToDecimal{\xintfloateval{add((1-#1)^(i-1)*(#1), i=\BorneInf..\BorneSup)}} -} -\newcommand\CalcHypergeomP[4]{%Nnmk - \xintFloatToDecimal{\xintfloateval{binomial(#3,#4)*binomial(#1-#3,#2-#4)/binomial(#1,#2)}} -} -\newcommand\CalcHypergeomC[5]{%Nnmab - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(binomial(#3,i)*binomial(#1-#3,#2-i)/binomial(#1,#2), i=\BorneInf..\BorneSup)}} -} -\newcommand\CalcPoissP[2]{%lk - \xintFloatToDecimal{\xintfloateval{exp(-#1)*#1^#2/factorial(#2)}} -} -\newcommand\CalcPoissC[3]{%lab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{10*#1}} - {} - \xintFloatToDecimal{\xintfloateval{add(exp(-#1)*#1^i/factorial(i), i=\BorneInf..\BorneSup)}} -} -%utiles idée de https://tex.stackexchange.com/questions/355574/im-searching-for-a-table-with-cdf-of-standard-normal-distribution -\xintdeffloatvar a_1,a_2,a_3,a_4,a_5,a_6 := -0.0705230784,0.0422820123,0.0092705272,0.0001520143,0.0002765672,0.0000430638; -\xintdeffloatvar rac2inv := sqrt(2)/2 ; -\xintdeffloatfunc erfc(x) := % uniquement pour x positif -((((((a_6*x+a_5)*x+a_4)*x+a_3)*x+a_2)*x+a_1)*x+1)**-16 ; % fin de définition de erfc(x) -\xintdeffloatfunc Phi(z) := (z>=0)?{1 - 0.5 * erfc(rac2inv * z)}{0.5 * erfc(-rac2inv * z)}; - -\newcommand\CalcNormC[4]{%msab - %def des bornes de l'intervalle suivant l'absence de a ou de b... - \def\BorneInf{#3}\def\BorneSup{#4} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneInf{#4-10*#2}} - {} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneSup{#3+10*#2}} - {} - \xintFloatToDecimal{\xintfloateval{Phi((\BorneSup-#1)/#2)-Phi((\BorneInf-#1)/#2)}} -} -%calculs "simples" fiabilite -\newcommand\CalcExpoC[3]{%lab - \def\BorneInf{#2}\def\BorneSup{#3} - \ifthenelse{\equal{#2}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#3}{*}}% - {\def\BorneSup{100/#1}} - {} - \xintFloatToDecimal{\xintfloateval{exp(-#1*\BorneInf)-exp(-#1*\BorneSup)}} -} - -%calculs formatés -\NewDocumentCommand{\BinomP}{ s O{3} m m m }{%*=sci,2=prec,3=n,4=p,5=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#3,#5)*#4^#5*(1-#4)^(#3-#5),#2)}}} - } -} - -\NewDocumentCommand{\BinomC}{ s O{3} m m m m }{%*=sci,2=prec,3=n,4=p,5=a,6=b - \def\BorneInf{#5}\def\BorneSup{#6} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneSup{#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#3,i)*#4^i*(1-#4)^(#3-i), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\GeomP}{ s O{3} m m }{%*=sci,2=prec,3=p,4=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round((1-#3)^(#4-1)*(#3),#2)}}} - } -} - -\NewDocumentCommand{\GeomC}{ s O{3} m m m }{%*=sci,2=prec,3=p,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{1}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{\fpeval{trunc(1/#3*10,0)}}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add((1-#3)^(i-1)*(#3), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\HypergeomP}{ s O{3} m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(binomial(#5,#6)*binomial(#3-#5,#4-#6)/binomial(#3,#4),#2)}}} - } -} - -\NewDocumentCommand{\HypergeomC}{ s O{3} m m m m m }{%*=sci,2=prec,3=N,4=n,5=m,6=a,7=b - \def\BorneInf{#6}\def\BorneSup{#7} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#7}{*}}% - {\def\BorneSup{#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(binomial(#5,i)*binomial(#3-#5,#4-i)/binomial(#3,#4), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\PoissonP}{ s O{3} m m }{%*=sci,2=prec,3=lbda,4=k - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3)*#3^#4/factorial(#4),#2)}}} - } -} - -\NewDocumentCommand{\PoissonC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{10*#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(add(exp(-#3)*#3^i/factorial(i), i=\BorneInf..\BorneSup),#2)}}} - } -} - -\NewDocumentCommand{\NormaleC}{ s O{3} m m m m }{% - %*=ing,2=prec,3=mu,4=sigma,5=a,6=b - %def des bornes de l'intervalle suivant l'absence de a ou de b... - \def\BorneInf{#5}\def\BorneSup{#6} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneInf{#6-10*#4}} - {} - \ifthenelse{\equal{#6}{*}}% - {\def\BorneSup{#5+10*#4}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintfloateval{round(Phi((\BorneSup-#3)/#4)-Phi((\BorneInf-#3)/#4),#2)}}} - } -} - -\NewDocumentCommand{\ExpoC}{ s O{3} m m m }{%*=ing,2=prec,3=lbda,4=a,5=b - \def\BorneInf{#4}\def\BorneSup{#5} - \ifthenelse{\equal{#4}{*}}% - {\def\BorneInf{0}} - {} - \ifthenelse{\equal{#5}{*}}% - {\def\BorneSup{100/#3}} - {} - \IfBooleanTF{#1}% - {% - \num[exponent-mode=scientific]{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}} - }% - {% - \num[minimum-decimal-digits=#2]{\xintFloatToDecimal{\xintFloatToDecimal{\xintfloateval{round(exp(-#3*\BorneInf)-exp(-#3*\BorneSup),#2)}}}} - } -} - -%%------CONVFROMDEC -\newcommand\PLnoeud[2]{\tikz[remember picture,baseline=(#1.base)]\node[shape=rectangle,inner sep=0pt](#1){#2};} -\ExplSyntaxOn -\newcommand\convertbasedixtobase[2]{% - \int_to_Base:nn {#1}{#2} -} -\ExplSyntaxOff - -\defKV[convfromten]{% - Couleur=\def\PLConvCouleur{#1},% - DecalH=\def\PLConvDecalH{#1},% - DecalV=\def\PLConvDecalV{#1},% - Noeud=\def\PLConvNoeud{#1} -} - -\setKVdefault[convfromten]{% - Couleur=red,% - DecalH=2pt,% - DecalV=3pt,% - Rect=true,% - Noeud=EEE,% - CouleurRes=false -} - -\newcommand\ConversionDepuisBaseDix[3][]{% - \useKVdefault[convfromten]% - \setKV[convfromten]{#1}% - \xdef\ValRes{\xintDecToHex{#2}}% - \xdef\ValA{#2}\xdef\ValB{#3}% - \xdef\ValTMP{#2}% - \xdef\ValMU{\inteval{#3-1}}% - \ensuremath{% - \left\lbrace\begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r} - %1ere division - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}} - \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud1}{\num{\ValR}}% - \xdef\ValTMP{\ValQ}% - \whiledo {\ValTMP > \ValMU}% - {% - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}}% - \\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\num{\ValR} - \xdef\ValTMP{\ValQ}% - } - %dernière - \xdef\ValQ{\fpeval{trunc(\ValTMP/#3,0)}}\xdef\ValR{\fpeval{\ValTMP-#3*\ValQ}}% - \\ \num{\ValTMP}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}\PLnoeud{\PLConvNoeud2}{\num{\ValR}} - \end{array} \right| \Rightarrow \num{#2}_{10}=\ifboolKV[convfromten]{CouleurRes}{\mathcolor{\PLConvCouleur}{\convertbasedixtobase{#2}{#3}_{#3}}}{\convertbasedixtobase{#2}{#3}_{#3}}}% - \ifboolKV[convfromten]{Rect}% - {% - \IfSubStr{\PLConvDecalH}{/}% - {\StrCut{\PLConvDecalH}{/}{\PLConvDecalHg}{\PLConvDecalHd}}% - {\def\PLConvDecalHg{\PLConvDecalH}\def\PLConvDecalHd{\PLConvDecalH}}% - \begin{tikzpicture} - \draw[overlay,rounded corners=4pt,\PLConvCouleur,thick] ($(\PLConvNoeud1.north west)+(-\PLConvDecalHg,\PLConvDecalV)$) rectangle ($(\PLConvNoeud2.south east)+(\PLConvDecalHd,-\PLConvDecalV)$) ; - \draw[overlay,rounded corners=4pt,\PLConvCouleur,thick,->,>=latex] ($(\PLConvNoeud2.east)+(\PLConvDecalHd,0)$)--++(0,{0.75\baselineskip}) ; - \end{tikzpicture}% - }{}% -} - -%%------ARBRESPROBAS -\defKV[PLTIKZARBRE]{% - Unite=\def\PLAPunite{#1},% - EspaceNiveau=\def\PLAPespniv{#1},% - EspaceFeuille=\def\PLAPespfeuille{#1},% - Type=\def\PLAPtype{#1},% - Police=\def\PLAPfont{#1},% - PoliceProbas=\def\PLAPfontproba{#1},% - StyleTrait=\def\PLAPtypetrait{#1},% - EpaisseurTrait=\def\PLAPeptrait{#1} -} - -\setKVdefault[PLTIKZARBRE]{% - Unite=1cm,% - EspaceNiveau=3.25,% - EspaceFeuille=1,% - Type=2x2,% - Police=\normalfont\normalsize,% - PoliceProbas=\normalfont\small,% - InclineProbas=true,% - Fleche=false,% - StyleTrait={},% - EpaisseurTrait=semithick -} - -\NewDocumentCommand\ArbreProbasTikz{ O{} m }{%1=options,2=libellés - \useKVdefault[PLTIKZARBRE]% - \setKV[PLTIKZARBRE]{#1}% - \setsepchar[.]{,./}% - \readlist*\PLARBREDONNES{#2}% - \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite] - %styles - \tikzstyle{noeud} = [font=\PLAPfont] - \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{InclineProbas} - {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} - {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{Fleche} - {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} - {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} - %arbre2x2 - \IfEq{\PLAPtype}{2x2} - {% - \coordinate (R) at ({0*\PLAPespniv},{-1.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - }{} - %arbre3x2 - \IfEq{\PLAPtype}{3x2} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-4.5*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A13)--(A25) ;} - {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \ifstrempty{\PLARBREDONNES[9,2]} - {\draw[PLfleche] (A13)--(A26) ;} - {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{2x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{3x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-4*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A27) at ({2*\PLAPespniv},{-6*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]}; - \node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[9,2]} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - %N2 - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \ifstrempty{\PLARBREDONNES[10,2]} - {\draw[PLfleche] (A13)--(A27) ;} - {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;} - \ifstrempty{\PLARBREDONNES[11,2]} - {\draw[PLfleche] (A13)--(A28) ;} - {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;} - \ifstrempty{\PLARBREDONNES[12,2]} - {\draw[PLfleche] (A13)--(A29) ;} - {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;} - }{} - \end{tikzpicture} -} - -\NewDocumentEnvironment{EnvArbreProbasTikz}{ O{} m }%1=options,2=libellés -{ - \useKVdefault[PLTIKZARBRE] - \setKV[PLTIKZARBRE]{#1} - \setsepchar[.]{,./}% - \readlist*\PLARBREDONNES{#2} - \begin{tikzpicture}[x=\PLAPunite,y=\PLAPunite] - %styles - \tikzstyle{noeud} = [font=\PLAPfont] - \tikzstyle{probas}= [font=\PLAPfontproba] - \ifboolKV[PLTIKZARBRE]{InclineProbas} - {\tikzstyle{PLetiquette}=[pos=0.525,sloped,fill=white]} - {\tikzstyle{PLetiquette}=[pos=0.525,fill=white]} - \ifboolKV[PLTIKZARBRE]{Fleche} - {\tikzstyle{PLfleche}=[->,>=latex,\PLAPtypetrait,\PLAPeptrait]} - {\tikzstyle{PLfleche}=[\PLAPtypetrait,\PLAPeptrait]} - %arbre2x2 - \IfEq{\PLAPtype}{2x2} - {% - \coordinate (R) at ({0*\PLAPespniv},{-1.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - }{} - %arbre3x2 - \IfEq{\PLAPtype}{3x2} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-0.5*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-2.5*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-4.5*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (A12)--(A23) ;} - {\draw[PLfleche] (A12)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A13)--(A25) ;} - {\draw[PLfleche] (A13)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \ifstrempty{\PLARBREDONNES[9,2]} - {\draw[PLfleche] (A13)--(A26) ;} - {\draw[PLfleche] (A13)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{2x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-2.5*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - }{} - %arbre2x3 - \IfEq{\PLAPtype}{3x3} - {% - %sommets - \coordinate (R) at ({0*\PLAPespniv},{-4*\PLAPespfeuille}) ; - \node[noeud] (A11) at ({1*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[1,1]}; - \node[noeud] (A12) at ({1*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[5,1]}; - \node[noeud] (A13) at ({1*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[9,1]}; - \node[noeud] (A21) at ({2*\PLAPespniv},{-0*\PLAPespfeuille}) {\PLARBREDONNES[2,1]}; - \node[noeud] (A22) at ({2*\PLAPespniv},{-1*\PLAPespfeuille}) {\PLARBREDONNES[3,1]}; - \node[noeud] (A23) at ({2*\PLAPespniv},{-2*\PLAPespfeuille}) {\PLARBREDONNES[4,1]}; - \node[noeud] (A24) at ({2*\PLAPespniv},{-3*\PLAPespfeuille}) {\PLARBREDONNES[6,1]}; - \node[noeud] (A25) at ({2*\PLAPespniv},{-4*\PLAPespfeuille}) {\PLARBREDONNES[7,1]}; - \node[noeud] (A26) at ({2*\PLAPespniv},{-5*\PLAPespfeuille}) {\PLARBREDONNES[8,1]}; - \node[noeud] (A27) at ({2*\PLAPespniv},{-6*\PLAPespfeuille}) {\PLARBREDONNES[10,1]}; - \node[noeud] (A28) at ({2*\PLAPespniv},{-7*\PLAPespfeuille}) {\PLARBREDONNES[11,1]}; - \node[noeud] (A29) at ({2*\PLAPespniv},{-8*\PLAPespfeuille}) {\PLARBREDONNES[12,1]}; - %branches - \ifstrempty{\PLARBREDONNES[1,2]}{} - {\draw[PLfleche] (R)--(A11) ;} - {\draw[PLfleche] (R)--(A11) node[probas,PLetiquette,{\PLARBREDONNES[1,3]}] {{\PLARBREDONNES[1,2]}} ;} - \ifstrempty{\PLARBREDONNES[5,2]}{} - {\draw[PLfleche] (R)--(A12) ;} - {\draw[PLfleche] (R)--(A12) node[probas,PLetiquette,{\PLARBREDONNES[5,3]}] {{\PLARBREDONNES[5,2]}} ;} - \ifstrempty{\PLARBREDONNES[9,2]}{} - {\draw[PLfleche] (R)--(A13) ;} - {\draw[PLfleche] (R)--(A13) node[probas,PLetiquette,{\PLARBREDONNES[9,3]}] {{\PLARBREDONNES[9,2]}} ;} - %N2 - \ifstrempty{\PLARBREDONNES[2,2]} - {\draw[PLfleche] (A11)--(A21) ;} - {\draw[PLfleche] (A11)--(A21) node[probas,PLetiquette,{\PLARBREDONNES[2,3]}] {{\PLARBREDONNES[2,2]}} ;} - \ifstrempty{\PLARBREDONNES[3,2]} - {\draw[PLfleche] (A11)--(A22) ;} - {\draw[PLfleche] (A11)--(A22) node[probas,PLetiquette,{\PLARBREDONNES[3,3]}] {{\PLARBREDONNES[3,2]}} ;} - \ifstrempty{\PLARBREDONNES[4,2]} - {\draw[PLfleche] (A11)--(A23) ;} - {\draw[PLfleche] (A11)--(A23) node[probas,PLetiquette,{\PLARBREDONNES[4,3]}] {{\PLARBREDONNES[4,2]}} ;} - \ifstrempty{\PLARBREDONNES[6,2]} - {\draw[PLfleche] (A12)--(A24) ;} - {\draw[PLfleche] (A12)--(A24) node[probas,PLetiquette,{\PLARBREDONNES[6,3]}] {{\PLARBREDONNES[6,2]}} ;} - \ifstrempty{\PLARBREDONNES[7,2]} - {\draw[PLfleche] (A12)--(A25) ;} - {\draw[PLfleche] (A12)--(A25) node[probas,PLetiquette,{\PLARBREDONNES[7,3]}] {{\PLARBREDONNES[7,2]}} ;} - \ifstrempty{\PLARBREDONNES[8,2]} - {\draw[PLfleche] (A12)--(A26) ;} - {\draw[PLfleche] (A12)--(A26) node[probas,PLetiquette,{\PLARBREDONNES[8,3]}] {{\PLARBREDONNES[8,2]}} ;} - \ifstrempty{\PLARBREDONNES[10,2]} - {\draw[PLfleche] (A13)--(A27) ;} - {\draw[PLfleche] (A13)--(A27) node[probas,PLetiquette,{\PLARBREDONNES[10,3]}] {{\PLARBREDONNES[10,2]}} ;} - \ifstrempty{\PLARBREDONNES[11,2]} - {\draw[PLfleche] (A13)--(A28) ;} - {\draw[PLfleche] (A13)--(A28) node[probas,PLetiquette,{\PLARBREDONNES[11,3]}] {{\PLARBREDONNES[11,2]}} ;} - \ifstrempty{\PLARBREDONNES[12,2]} - {\draw[PLfleche] (A13)--(A29) ;} - {\draw[PLfleche] (A13)--(A29) node[probas,PLetiquette,{\PLARBREDONNES[12,3]}] {{\PLARBREDONNES[12,2]}} ;} - }{} - } - { - \end{tikzpicture} -} - -%%------SCHEMASPROBAS -%densites utiles -\def\densnorm#1{1/(sqrt(2*pi))*exp(-0.5*(#1*#1))} -\def\densexpo#1{exp(-#1)} - -\defKV[GRPHPROBCONTINUES]{% - CouleurAire=\def\GRPHPROBcoulsurf{#1},% - CouleurCourbe=\def\GRPHPROBcoulcbe{#1},% - Largeur=\def\GRPHPROBlarg{#1},% - Hauteur=\def\GRPHPROBhauteur{#1} -} - -\setKVdefault[GRPHPROBCONTINUES]{% - CouleurAire=LightGray,% - CouleurCourbe=red,% - Largeur=2,% - Hauteur=1,% - AfficheM=true,% - AfficheCadre=true -} - -\NewDocumentCommand\LoiNormaleGraphe{ O{} D<>{} m m m m }{%1=options,2=optionstikz,3=m,4=s,5=a,6=b - %simplekv - \useKVdefault[GRPHPROBCONTINUES]% - \setKV[GRPHPROBCONTINUES]{#1}% - %unites - \def\UNITEX{\fpeval{\GRPHPROBlarg/8}}\def\UNITEY{\fpeval{\GRPHPROBhauteur/0.5}}% - %bornes - \def\BorneInf{\fpeval{(#5-#3)/#4}}\def\BorneSup{\fpeval{(#6-#3)/#4}}% - \ifthenelse{\equal{#5}{*}}{\def\BorneInf{-4}}{}% - \ifthenelse{\equal{#6}{*}}{\def\BorneSup{4}}{}% - %tikzpicture - \begin{tikzpicture}[x=\UNITEX cm,y=\UNITEY cm,#2] - \ifboolKV[GRPHPROBCONTINUES]{AfficheM}% - {\draw (0,-0.0375) node[font=\tiny,scale={2*\UNITEX}] {#3} ;} - {} - \ifboolKV[GRPHPROBCONTINUES]{AfficheCadre}% - {\draw[Gray] (-4,-0.075) rectangle (4,0.425) ;} - {} - \clip (-4,-0.075) rectangle (4,0.425) ; - \draw[black,semithick,fill=\GRPHPROBcoulsurf] ({\BorneInf},0) -- plot [domain={\BorneInf}:{\BorneSup},samples=100] (\x,{\densnorm{\x}}) -- ({\BorneSup},0) -- cycle; - \draw[thick,->,>=latex] (-4,0)--(4,0) ; - \draw[thick,densely dotted] (0,0)--(0,0.39894) ; - \draw[thick,domain=-4:4,samples=100,\GRPHPROBcoulcbe] plot (\x,{\densnorm{\x}}) ; - \end{tikzpicture} -} - -\NewDocumentCommand\LoiExpoGraphe{ O{} D<>{} m m m }{%1=options,2=optionstikz,3=l,4=a,5=b - %simplekv - \useKVdefault[GRPHPROBCONTINUES]% - \setKV[GRPHPROBCONTINUES]{#1}% - %unites - \def\UNITEX{\fpeval{\GRPHPROBlarg/4}}\def\UNITEY{\fpeval{\GRPHPROBhauteur/1}}% - \def\MOYENNE{\fpeval{trunc(1/#3,0)}}% - %bornes - \def\BorneInf{\fpeval{#3*#4}}\def\BorneSup{\fpeval{#3*#5}}% - \ifthenelse{\equal{#4}{*}}{\def\BorneInf{0}}{}% - \ifthenelse{\equal{#5}{*}}{\def\BorneSup{4}}{}% - %tikzpicture - \begin{tikzpicture}[x=\UNITEX cm,y=\UNITEY cm,#2] - \ifboolKV[GRPHPROBCONTINUES]{AfficheCadre}% - {\draw[Gray] (-0.2,-0.15) rectangle (3.8,0.85) ;} - {} - \clip (-0.2,-0.15) rectangle (3.8,0.85) ; - \draw[black,semithick,fill=\GRPHPROBcoulsurf] ({\BorneInf},0) -- plot [domain={\BorneInf}:{\BorneSup},samples=100] (\x,{0.7*\densexpo{\x}}) -- ({\BorneSup},0) -- cycle; - \ifboolKV[GRPHPROBCONTINUES]{AfficheM}% - {\draw (1,-0.075) node[font=\tiny,scale={\UNITEX}] {\MOYENNE} ; - \draw[thick,densely dotted] (1,0)--(1,{0.7*\densexpo{1}}) ;} - {} - \draw[thick,->,>=latex] (-0.2,0)--(3.8,0) ; - \draw[thick,->,>=latex] (0,-0.15)--(0,0.85) ; - \draw[thick,domain=0:3.8,samples=100,\GRPHPROBcoulcbe] plot (\x,{0.7*\densexpo{\x}}) ; - \end{tikzpicture} -} - -%%------TRINOMEALEA -\setKVdefault[trinomealea]{% - Alea=false,% - Anegatif=true -} - -\NewDocumentCommand\EcritureTrinome{ O{} m m m }{% - \useKVdefault[trinomealea]% - \setKV[trinomealea]{#1}% - \ifboolKV[trinomealea]{Alea}% - {% - \xdef\Coeffa{\fpeval{randint(#2)}}\xdef\Coeffb{\fpeval{randint(#3)}}\xdef\Coeffc{\fpeval{randint(#4)}}% - \xdef\AleaSigneA{\fpeval{randint(1,2)}}% - \ifboolKV[trinomealea]{Anegatif}% - {\xintifboolexpr{\AleaSigneA == 1}{\def\TriSigneA{}}{\def\TriSigneA{-}}}% - {\def\TriSigneA{}}%forcément a>0 - }% - {% - \xdef\Coeffa{#2}\xdef\Coeffb{#3}\xdef\Coeffc{#4}% - \def\TriSigneA{}% - }% - \def\TriPartieA{\num{\TriSigneA\Coeffa} x^2}% - \xintifboolexpr{\Coeffa == 1}% - {\def\TriPartieA{x^2}}{}% - \xintifboolexpr{\Coeffa == -1}% - {\def\TriPartieA{-x^2}}{}% - \def\TriPartieB{\num[print-implicit-plus]{\Coeffb}x}% - \xintifboolexpr{\Coeffb == 0}% - {\def\TriPartieB{}}{}% - \xintifboolexpr{\Coeffb == 1}% - {\def\TriPartieB{+x}}{}% - \xintifboolexpr{\Coeffb == -1}% - {\def\TriPartieB{-x}}{}% - \xintifboolexpr{\Coeffc == 0}% - {\def\TriPartieC{}}{\def\TriPartieC{\num[print-implicit-plus]{\Coeffc}}}% - %formatage - \ensuremath{\TriPartieA\TriPartieB\TriPartieC}% -} - - -%%------PRESPGCD -\DeclareMathOperator{\PLpgcd}{PGCD} -\defKV[prespgcd]{% - Couleur=\def\PLPGCDCouleur{#1},% - DecalRect=\def\PLPGCDDecal{#1},% - Noeud=\def\PLPGCDNoeud{#1} -} - -\setKVdefault[prespgcd]{% - Couleur=red,% - DecalRect=2pt,% - Rectangle=true,% - Noeud=FFF,% - CouleurResultat=false,% - AfficheConclusion=true,% - AfficheDelimiteurs=true -} - -\newcommand\PresentationPGCD[3][]{% - \useKVdefault[prespgcd]% - \setKV[prespgcd]{#1}% - \xdef\respgcd{\xinteval{gcd(#2,#3)}} - \xdef\ValA{#2}\xdef\ValB{#3}%on stocke les valeurs du départ - \ensuremath{% - \ifboolKV[prespgcd]{AfficheDelimiteurs}% - {\left\lbrace}% - {}% - \begin{array}{@{\,}r@{\;=\;}l@{\;+\;}r} - %1ère division - \xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}} - \num{\ValA}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}% - \xintifboolexpr{\ValR == \respgcd}% - {\PLnoeud{\PLPGCDNoeud1}{\num{\ValR}}}%noeud si c'est le pgcd - {\num{\ValR}}% - \xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs - \whiledo {\ValR > 0}% - {% - \xdef\ValQ{\fpeval{trunc(\ValA/\ValB,0)}}\xdef\ValR{\fpeval{\ValA-\ValB*\ValQ}}% - \\% - \num{\ValA}\uppercase{&}\num{\ValB}\times\num{\ValQ}\uppercase{&}% - \xintifboolexpr{\ValR == \respgcd}% - {\PLnoeud{\PLPGCDNoeud1}{\num{\ValR}}}%noeud si c'est le pgcd - {\num{\ValR}}% - \xdef\ValA{\ValB}\xdef\ValB{\ValR}%nouvelles valeurs - }% - \end{array}% - \ifboolKV[prespgcd]{AfficheDelimiteurs}% - {\right|}% - {}% - \ifboolKV[prespgcd]{AfficheConclusion}% - {% - \Rightarrow \PLpgcd\left(\num{#2};\num{#3}\right)=\ifboolKV[prespgcd]{CouleurResultat}{\mathcolor{\PLPGCDCouleur}{\num{\respgcd}}}{\num{\respgcd}}% - }% - {}% - }% - \ifboolKV[prespgcd]{Rectangle}% - {% - \begin{tikzpicture} - \draw[overlay,rounded corners=4pt,\PLPGCDCouleur,thick] ($(\PLPGCDNoeud1.north west)+(-\PLPGCDDecal,\PLPGCDDecal)$) rectangle ($(\PLPGCDNoeud1.south east)+(\PLPGCDDecal,-\PLPGCDDecal)$) ; - \end{tikzpicture}% - }{}% -} - -%%------TVISOLUTION -\defKV[dichoto]{% - NomFct=\def\DHTnomfct{#1},% - va=\def\DHTva{#1},% - vb=\def\DHTvb{#1},% - Precision=\def\DHTprec{#1},% - NomSol=\def\DHTnomsol{#1},% - Stretch=\def\DHTstretch{#1} -} - -\setKVdefault[dichoto]{% - NomFct=f,% - Precision=2,% - NomSol=\alpha,% - Stretch=1.15,% - Balayage=false,% - Calculatrice=false,% - Majuscule=true -} - -\newcommand\SolutionTVI[3][]{% - \useKVdefault[dichoto]% - \setKV[dichoto]{#1}% - \xintdeffloatfunc varfct(x) := #2 ;% - \ifboolKV[dichoto]{Balayage}{\ifboolKV[dichoto]{Majuscule}{P}{p}ar balayage, on obtient }{}% - \ifboolKV[dichoto]{Calculatrice}{\ifboolKV[dichoto]{Majuscule}{P}{p}ar calculatrice, on obtient }{}% - \ensuremath{% - \left\lbrace \begin{tblr}{stretch=\DHTstretch,colsep=1pt,rll}% - {\DHTnomfct}{\left( \num{\DHTva} \right)} &\approx \num[minimum-decimal-digits=\DHTprec]{\xintFloatToDecimal{\xintfloateval{round(varfct(\DHTva),\DHTprec)}}} & \xintifGt{\xintfloateval{varfct(\DHTva)-#3}}{0}{> \num{#3}}{< \num{#3}} \: \\ % - {\DHTnomfct}{\left( \num{\DHTvb} \right)} &\approx \num[minimum-decimal-digits=\DHTprec]{\xintFloatToDecimal{\xintfloateval{round(varfct(\DHTvb),\DHTprec)}}} & \xintifGt{\xintfloateval{varfct(\DHTvb)-#3}}{0}{> \num{#3}}{< \num{#3}} \:% - \end{tblr}% - \right|% - \Rightarrow% - \num{\DHTva} < \DHTnomsol < \num{\DHTvb}% - }% -} - -%%------CALCSRECUR -\NewDocumentCommand\CalculInterneTermeRecurrence{ m m m m }{%pas forcément utile - \xintdeffloatfunc varfctrecur(x) := #1 ;% - \xdef\vartmp{#3}% - \IfEq{#4}{\inteval{#2+1}}% - {\xdef\vartmp{\xintfloateval{varfctrecur(\vartmp)}}}% - {% - \foreach \i in {1,2,...,\inteval{#4-#2}}% - {\xdef\vartmp{\xintfloateval{varfctrecur(\vartmp)}}}% - }% - \xintFloatToDecimal{\vartmp}% -} - -\newcount\CompteurSeuil% -\NewDocumentCommand\CalculSeuil{ m m m m m }{%N0 / UN0 / fct / sgn / seuil := en interne - \xintdeffloatfunc varfct(x) := #3 ;% - \xdef\vartmp{\fpeval{#2}}% - \CompteurSeuil=#1% - %symbole de comparaison inversé et boucle - \IfEq{#4}{>}% - {% - \whiledo{\xintLtorEq{\vartmp}{#5} = 1}% - {% - \xdef\vartmp{\xintfloateval{varfct(\vartmp)}}% - \CompteurSeuil=\numexpr\CompteurSeuil+1% - }% - }{}% - \IfEq{#4}{<}% - {% - \whiledo{\xintGtorEq{\vartmp}{#5} = 1}% - {% - \xdef\vartmp{\xintfloateval{varfct(\vartmp)}}% - \CompteurSeuil=\numexpr\CompteurSeuil+1% - }% - }{}% - \IfEq{#4}{>=}% - {% - \whiledo{\xintLt{\vartmp}{#5} = 1}% - {% - \xdef\vartmp{\xintfloateval{varfct(\vartmp)}}% - \CompteurSeuil=\numexpr\CompteurSeuil+1% - }% - }{}% - \IfEq{#4}{<=}% - {% - \whiledo{\xintGt{\vartmp}{#5} = 1}% - {% - \xdef\vartmp{\xintfloateval{varfct(\vartmp)}}% - \CompteurSeuil=\numexpr\CompteurSeuil+1% - }% - }{}% -} - -\defKV[calculsuiterecur]{% - No=\def\SRninit{#1},% - UNo=\def\SRuninit{#1},% - Precision=\def\SRprec{#1},% - N=\def\SRnfinal{#1} - %Format=\def\SRformat{#1},% - %OptionFrac=\def\SRoptfrac{#1} -} - -\setKVdefault[calculsuiterecur]{% - Precision=3 - %Format=Arrondi,% - %OptionFrac={} -} - -\NewDocumentCommand\CalculTermeRecurrence{ O{} m }{%attention avec les calculs en exact :-( - \useKVdefault[calculsuiterecur]% - \setKV[calculsuiterecur]{#1}% - \xintdeffloatfunc varfct(x) := #2 ;% - \xdef\vartmp{\fpeval{\SRuninit}}% - \IfEq{\SRnfinal}{\inteval{\SRninit+1}}% - {\xdef\vartmp{\xintfloateval{varfct(\vartmp)}}}% - {% - \foreach \i in {1,2,...,\inteval{\SRnfinal-\SRninit}}% - {\xdef\vartmp{\xintfloateval{varfct(\vartmp)}}}% - }% - %\num[minimum-decimal-digits=\SRprec]{\xintfloateval{round(\vartmp,\SRprec)}}% - \num{\xintfloateval{round(\vartmp,\SRprec)}}% - %\IfStrEq{\SRformat}{Fraction}{\ConversionFraction[\SRoptfrac]{\xinteval{\vartmp}}}{}% - %\IfStrEq{\SRformat}{Brut}{\xinteval{\vartmp}}{}% - %\IfStrEq{\SRformat}{Decimal}{\num{\xintfloateval{\vartmp}}}{}% - %\IfStrEq{\SRformat}{BrutDecimal}{\xintFloatToDecimal{\vartmp}}{}% -} - -\defKV[suiteseuil]{% - No=\def\SEUILindiceinit{#1},% - UNo=\def\SEUILtermeinit{#1},% - NomSuite=\def\SEUILnomsuite{#1},% - %SolN=\def\SEUILn{#1},% - Precision=\def\SEUILprec{#1},% - Stretch=\def\SEUILstretch{#1},% - Sens=\def\SEUILsens{#1} -} - -\setKVdefault[suiteseuil]{% - NomSuite=u,% - Precision=3,% - Stretch=1.15,% - Balayage=false,% - Calculatrice=false,% - Majuscule=true,% - Sens={>},% - Exact=false,% - Conclusion=true,% - Simple=false -} - -\newcommand\SolutionSeuil[3][]{%1=options + %2 = fonction + %3 = seuil - \useKVdefault[suiteseuil]% - \setKV[suiteseuil]{#1}% - %on détermine le seuil, directement et on stocke les bascules !!! - \CalculSeuil{\SEUILindiceinit}{\SEUILtermeinit}{#2}{\SEUILsens}{#3}% - \def\SEUILn{\inteval{\the\CompteurSeuil}}% - \def\SEUILnmu{\inteval{\the\CompteurSeuil-1}}% - %formatage de la sortie des signes - \IfEq{\SEUILsens}{>}% - {\def\SensDeb{\leqslant}\def\SensFin{>}}% - {}% - \IfEq{\SEUILsens}{<}% - {\def\SensDeb{\geqslant}\def\SensFin{<}}% - {}% - \IfEq{\SEUILsens}{>=}% - {\def\SensDeb{<}\def\SensFin{\geqslant}}% - {}% - \IfEq{\SEUILsens}{<=}% - {\def\SensDeb{>}\def\SensFin{\leqslant}}% - {}% - %formatage - \ifboolKV[suiteseuil]{Balayage}{\ifboolKV[suiteseuil]{Majuscule}{P}{p}ar balayage, on obtient }{}% - \ifboolKV[suiteseuil]{Calculatrice}{\ifboolKV[suiteseuil]{Majuscule}{P}{p}ar calculatrice, on obtient }{}% - \ifboolKV[suiteseuil]{Simple}% - {% - \ensuremath{\SEUILnomsuite_{\SEUILnmu} \ifboolKV[suiteseuil]{Exact}{=}{\approx} \CalculTermeRecurrence[Precision=\SEUILprec,No=\SEUILindiceinit,UNo=\SEUILtermeinit,N=\SEUILnmu]{#2} \SensDeb\num{#3}}% - \text{~et~}% - \ensuremath{\SEUILnomsuite_{\SEUILn} \ifboolKV[suiteseuil]{Exact}{=}{\approx} \CalculTermeRecurrence[Precision=\SEUILprec,No=\SEUILindiceinit,UNo=\SEUILtermeinit,N=\SEUILn]{#2} \SensFin\num{#3}}% - }% - {% - \ensuremath{% - \left\lbrace \begin{tblr}{stretch=\SEUILstretch,colsep=1pt,rll}% - \SEUILnomsuite_{\SEUILnmu} &\ifboolKV[suiteseuil]{Exact}{=}{\approx} \CalculTermeRecurrence[Precision=\SEUILprec,No=\SEUILindiceinit,UNo=\SEUILtermeinit,N=\SEUILnmu]{#2} & \SensDeb\num{#3} \: \\ % - \SEUILnomsuite_{\SEUILn} &\ifboolKV[suiteseuil]{Exact}{=}{\approx} \CalculTermeRecurrence[Precision=\SEUILprec,No=\SEUILindiceinit,UNo=\SEUILtermeinit,N=\SEUILn]{#2} & \SensFin\num{#3} \: % - \end{tblr}% - \ifboolKV[suiteseuil]{Conclusion}% - {\right| \Rightarrow n \geqslant \SEUILn}% - {\right.}% - }% - }% -} - -%%------ALEATOIRES -\ExplSyntaxOn -\NewDocumentCommand\TriListeCroiss{m} -{ - \clist_sort:Nn #1 - { - \fp_compare:nNnTF {##1} > {##2} - { \sort_return_swapped: } - { \sort_return_same: } - } -} -\NewDocumentCommand\TriListeDecroiss{m} -{ - \clist_sort:Nn #1 - { - \fp_compare:nNnTF {##1} < {##2} - { \sort_return_swapped: } - { \sort_return_same: } - } -} -\ExplSyntaxOff - -\newcommand\NbAlea[4][0]{%entier ou décimal - \xintifboolexpr{#1 == 0}% - {\xdef#4{\fpeval{randint(#2,#3)}}}% - {\xdef#4{\fpeval{round(randint(#2,#3)+rand(),#1)}}}% -} -\newcommand\VarNbAlea[2]{% - \xdef#1{\fpeval{#2}}% -} - -\defKV[TirageAleatoireEntiersEntre]{% - ValMin=\def\TAEEmin{#1},% - ValMax=\def\TAEEmax{#1},% - NbVal=\def\TAEEnb{#1},% - Sep=\def\TAEEsep{#1},% - Tri=\def\TAEEtri{#1} -} - -\setKVdefault[TirageAleatoireEntiersEntre]{% - ValMin=1,% - ValMax=50,% - NbVal=6,% - Sep={,},% - Tri=non,% - Repetition=false -} - -\NewList{TirageEntiersAleatoires} -\NewDocumentCommand\TirageAleatoireEntiers{ O{} m }{%1=options,2=nomliste triée ou non - \useKVdefault[TirageAleatoireEntiersEntre]% - \setKV[TirageAleatoireEntiersEntre]{#1}% - \ifboolKV[TirageAleatoireEntiersEntre]{Repetition}%suivant la possibilité de répéter - {%répétitions autorisées - %création de la liste (le 1er puis les autres) - \xdef#2{\fpeval{randint(\TAEEmin,\TAEEmax)}}% - \foreach \i in {2,3,...,\TAEEnb}% - {\xdef#2{#2,\fpeval{randint(\TAEEmin,\TAEEmax)}}}% - }% - {%pas de répétitions - %melange des nombres - \ClearList{TirageEntiersAleatoires}%on vide la liste aléatoire - \xintFor* ##1 in {\xintSeq{\TAEEmin}{\TAEEmax}}% - \do{\InsertRandomItem{TirageEntiersAleatoires}{##1}}% - %création de la liste (le 1er puis les autres) - \xdef#2{\TirageEntiersAleatoires[0]}% - \foreach \i in {1,2,...,{\inteval{\TAEEnb-1}}}% - {\xdef#2{#2,\TirageEntiersAleatoires[\i]}}% - }% - %on trie si besoin - \IfStrEq{\TAEEtri}{croissant}%si tri croissant - {\TriListeCroiss{#2}}% - {}% - \IfStrEq{\TAEEtri}{decroissant}%si tri décroissant - {\TriListeDecroiss{#2}}% - {}% - \StrSubstitute{#2}{,}{\TAEEsep}[#2]%on change le séparateur si besoin -} - -%%------SIMPLIFRACINES -\DeclareDocumentCommand\SimplificationRacine{ m }{% argument mandataire {calcul ou fraction} - \xdef\calculargument{\xintIrr{\xinteval{#1}}}% - \IfEndWith{\calculargument}{/1}% - {%si c'est un entier ! - \xdef\calculargument{\xintiieval{#1}}% - \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\calculargument)}}}% - \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{% - \xintifboolexpr{ \xintiiRem{\calculargument}{\xintiieval{##1*##1}} == 0}%si le carré divise - {\xdef\ExtractRacID{##1}}% - {}% - }% - \xdef\ExtracReste{\xintiieval{\calculargument/(\ExtractRacID*\ExtractRacID)}}% - \ensuremath{\xintifboolexpr{\ExtractRacID == 1 && \ExtracReste == 1}% - {1}% - { \xintifboolexpr{\ExtractRacID == 1}{}{\num{\xintiieval{\ExtractRacID}}}% - \xintifboolexpr{\ExtracReste == 1}{}{\sqrt{\num{\ExtracReste}}} }}% -% }% - }% - {%on va mettre sous forme a\sqrt(d)/b := buggue avec des millièmes... - \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur - \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur - \xdef\ExtractRacNNum{\xintiieval{\numerateur*\denominateur}}% - \xdef\ExtractRacStop{\xintiFloor{\xintfloateval{sqrt(\ExtractRacNNum)}}}% - \xintFor* ##1 in {\xintSeq{1}{\ExtractRacStop}}\do{% - \xintifboolexpr{ \xintiiRem{\ExtractRacNNum}{\xintiieval{##1*##1}} == 0}%si le carré divise - {\xdef\ExtractRacID{##1}}% - {} - }% - \xdef\ExtractRacGCD{\xintiiGCD{\ExtractRacID}{\denominateur}}% - \xdef\RacNumSimpl{\xintiieval{\ExtractRacID/\ExtractRacGCD}}%simpl num - \xdef\RacDenomSimpl{\xintiieval{\denominateur/\ExtractRacGCD}}% - \xdef\RacRacSimpl{\xintiieval{\ExtractRacNNum/(\ExtractRacID*\ExtractRacID)}}% - \ensuremath{\frac{% - \xintifboolexpr{\RacNumSimpl == 1 && \RacRacSimpl == 1}% - {1}% - { \xintifboolexpr{\RacNumSimpl == 1}{}{\RacNumSimpl} \xintifboolexpr{\RacRacSimpl == 1}{}{\sqrt{\RacRacSimpl}} }% - }% - { \RacDenomSimpl }}% - }% -} - -%%------MESUREPPALE -\setKVdefault[MesurePpale]{% - Crochets=false, - d=false -} - -\newcommand{\MesurePrincipale}[2][]{%fraction sous la forme a/b ou entier :-) - \useKVdefault[MesurePpale]% - \setKV[MesurePpale]{#1}% - \StrDel{#2}{pi}[\MPargument]% - %on conserve les données initiales - \IfSubStr{\MPargument}{/}%on coupe numérateur/dénominateur - { \StrCut{\MPargument}{/}\MPnumerateurinit\MPdenominateurinit }% - { \xdef\MPnumerateurinit{\MPargument}\xdef\MPdenominateurinit{1} }% - %on affiche le début, avant simplification - \ifboolKV[MesurePpale]{d}% - {\displaystyle}% - {}% - \xintifboolexpr{\MPdenominateurinit == 1}% - { \num{\MPnumerateurinit}\pi = }% - { \frac{\num{\MPnumerateurinit}\pi}{\num{\MPdenominateurinit}}= }% - %on simplifie puis on réduit - \xdef\MPsimpl{\xintPRaw{\xintIrr{\MPargument}}}% - %test si l'argument est une fraction ou un entier - \IfSubStr{\MPsimpl}{/}% - { \StrCut{\MPsimpl}{/}\MPnumerateur\MPdenominateur }% - { \xdef\MPnumerateur{\MPsimpl}\xdef\MPdenominateur{1} }% - %calculs - \xdef\MPtour{\inteval{2*\MPdenominateur}}% - \xdef\MPreste{\xintiiRem{\MPnumerateur}{\MPtour}}%reste - \xintifboolexpr{\MPreste>\MPdenominateur}% - {\xdef\MPreste{\inteval{\MPreste-\MPtour}}}{}% - \xintifboolexpr{\MPreste<-\MPdenominateur}% - {\xdef\MPreste{\inteval{\MPreste+\MPtour}}}{}% - %sortie suivant fraction ou non... - \xintifboolexpr{\MPdenominateur == 1}% - {%entier - \xintifboolexpr{\MPreste == 1}{\pi \: \ifboolKV[MesurePpale]{Crochets}{[2\pi]}{(2\pi)} }{}% - \xintifboolexpr{\MPreste == 0}{0 \: \ifboolKV[MesurePpale]{Crochets}{[2\pi]}{(2\pi)} }{}% - \xintifboolexpr{\MPreste != 0 && \MPreste != 1}{\MPreste\pi \: \ifboolKV[MesurePpale]{Crochets}{[2\pi]}{(2\pi)} }{}% - }% - {%fraction - \frac{% - \xintifboolexpr{\xinteval{\MPreste == 1}}{}{}% - \xintifboolexpr{\xinteval{\MPreste == -1}}{-}{}% - \xintifboolexpr{\xinteval{abs(\MPreste) != 1}}{\num{\MPreste}}{}% - \pi}{\num{\MPdenominateur}} \: \ifboolKV[MesurePpale]{Crochets}{[2\pi]}{(2\pi)}% - }% -} - -%%------DICHOTOMIE -\defKV[SolDichoto]{% - Precision=\xdef\DICHOTOstep{#1},% - Intervalle=\xdef\DICHOTOinterv{#1},% - Variable=\xdef\DICHOTOvar{#1} -} - -\setKVdefault[SolDichoto]{% - Precision=2,% - Variable=x,% - Intervalle={0:10} -} - -\NewDocumentCommand\ResolutionApprochee{ O{} m O{masolution} }{%1=options,2=equation,3=macro - \useKVdefault[SolDichoto]% - %extraction fonction + valeur - \setKV[SolDichoto]{#1}% - \IfSubStr{#2}{=}%on coupe mmb gauche / mmb droit - {\StrCut{#2}{=}{\SolDiFCT}{\SolDiVal}}% - {\xdef\SolDiFCT{#2}\xdef\SolDiVal{0}}% - %création des variables temporaires - \xintdeffloatfunc dichotovarfct(\DICHOTOvar) := \SolDiFCT ;% - \StrCut{\DICHOTOinterv}{:}{\varvala}{\varvalb}% - \xdef\varstep{\fpeval{10**(-\DICHOTOstep-1)}}%un chiffre en plus :-) - %boucles - \whiledo{\xintGt{\xintfloateval{\varvalb-\varvala-\varstep}}{0} = 1}% - {% - \xdef\varvalm{\xintfloateval{(\varvala+\varvalb)*0.5}}% - \xintifboolexpr{\xintGt{\xintfloateval{(dichotovarfct(\varvala)-\SolDiVal)*(dichotovarfct(\varvalm)-\SolDiVal)}}{0}==1}% - {\xdef\varvala{\fpeval{\varvalm}}}% - {\xdef\varvalb{\fpeval{\varvalm}}}% - }% - \xdef\varvalm{\xintfloateval{(\varvala+\varvalb)*0.5}}% - \xdef\vartmpmd{\fpeval{floor(\varvalm,\DICHOTOstep)}}% - \xdef\vartmpme{\fpeval{\vartmpmd+10**(-\DICHOTOstep)}}% - %les variables créées - \expandafter\def\csname#3d\endcsname{\fpeval{\vartmpmd}}% - \expandafter\def\csname#3e\endcsname{\fpeval{\vartmpme}}% - %valeur approchée - \expandafter\def\csname#3a\endcsname{\fpeval{round(\varvalm,\DICHOTOstep)}}% -} - -%%------aNp/Cnp -\NewDocumentCommand\CalculAnp{ m m }{%avec et pour xint, p/n - pfactorial(#2-#1,#2) -} - -\NewDocumentCommand\CalculCnp{ m m }{%avec et pour xint, p/n - binomial(#2,#1) -} - -\setKVdefault[anpCnp]{% - Formule=false,% - Notation=false,% - NotationAncien=false -} -\NewDocumentCommand\Arrangement{ s O{} m m }{%p/n - \useKVdefault[anpCnp]% - \setKV[anpCnp]{#2}% - \ifboolKV[anpCnp]{Notation}{A_{#4}^{#3}=}{}% - \ifboolKV[anpCnp]{Formule}{\frac{#4!}{\inteval{#4-#3}!}=}{}% - \IfBooleanTF{#1}% - {\xinteval{\CalculAnp{#3}{#4}}}%non formaté - {\num{\xinteval{\CalculAnp{#3}{#4}}}}%formaté -} -\NewDocumentCommand\Combinaison{ s O{} m m }{%p/n - \useKVdefault[anpCnp]% - \setKV[anpCnp]{#2}% - \ifboolKV[anpCnp]{Notation}{\binom{#4}{#3} =}{}% - \ifboolKV[anpCnp]{NotationAncien}{C_{#4}^{#3}=}{}% - \ifboolKV[anpCnp]{Formule}{\frac{#4!}{#3! \times \inteval{#4-#3}!}=}{}% - \IfBooleanTF{#1}% - {\xinteval{\CalculCnp{#3}{#4}}}%non formaté - {\num{\xinteval{\CalculCnp{#3}{#4}}}}%formaté -} +%%------Trigo +\input{proflycee-tools-trigo.tex} +%%------Probas +\input{proflycee-tools-probas.tex} +%%------Stats +\input{proflycee-tools-stats.tex} +%%------Arithm +\input{proflycee-tools-arithm.tex} +%%------Graphiques +\input{proflycee-tools-graphiques.tex} +%%------Analyse +\input{proflycee-tools-analyse.tex} +%%------Aléatoire +\input{proflycee-tools-aleatoire.tex} +%%------Suites +\input{proflycee-tools-suites.tex} +%%------Géométrie +\input{proflycee-tools-geom.tex} +%%------Récréations diverses +\input{proflycee-tools-recreat.tex} \endinput
\ No newline at end of file |