% !TeX TXS-program:compile = txs:///arara % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} % arara: pythontex: {rerun: always} % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)') \documentclass[a4paper,french,11pt]{article} \def\PLversion{2.6.7} \def\PLdate{2 juin 2023} \usepackage{amsfonts} \usepackage{ProfLycee} \useproflyclib{piton,minted,pythontex} \usepackage[math-style=french]{fourier-otf} \usepackage{awesomebox} \usepackage[lua]{tkz-euclide} \usepackage{tkz-tab} \tikzstyle{every picture}+=[remember picture] \usetikzlibrary{hobby} \usepackage[group-minimum-digits=4]{siunitx} \sisetup{locale=FR} \usepackage{enumitem} \usepackage{fancyvrb} \usepackage{fancyhdr} \usepackage{tabularray} \usepackage{multicol} %fancy \fancyhf{} \renewcommand{\headrulewidth}{0pt} \lfoot{\sffamily \small [ProfLycee]} \cfoot{\sffamily \small - \thepage{} -} \rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}} \usepackage{graphics} \usepackage{hologo} \providecommand\tikzlogo{Ti\textit{k}Z} \providecommand\TeXLive{\TeX{}Live\xspace} \providecommand\PSTricks{\textsf{PSTricks}\xspace} \let\pstricks\PSTricks \let\TikZ\tikzlogo \newcommand\TableauDocumentation{% \begin{tblr}{width=\linewidth,colspec={X[c]X[c]X[c]X[c]X[c]X[c]},cells={font=\sffamily}} {\huge \LaTeX} & & & & &\\ & {\huge \hologo{pdfLaTeX}} & & & & \\ & & {\huge \hologo{LuaLaTeX}} & & & \\ & & & {\huge \TikZ} & & \\ & & & & {\huge \TeXLive} & \\ & & & & & {\huge \hologo{MiKTeX}} \\ \end{tblr} } \usepackage{simplekv} \usepackage{menukeys} \let\tab\relax \usepackage{tabto} \usepackage{pgf,pgfplots} \pgfplotsset{compat=newest,xlabel near ticks,ylabel near ticks} \usepackage{listofitems} \usepackage{xintexpr} \usepackage{codehigh} \usepackage{scontents} \usepackage{hyperref} \urlstyle{same} \hypersetup{pdfborder=0 0 0} \usepackage{geometry} \geometry{margin=1.5cm} \usepackage{babel} \usepackage{newverbs} \newverbcommand{\pverb}{\color{purple}}{} \newverbcommand{\rverb}{\color{red}}{} \newverbcommand{\vverb}{\color{ForestGreen}}{} \newverbcommand{\averb}{\color{CadetBlue}}{} \newverbcommand{\overb}{\color{orange}}{} \newverbcommand{\bverb}{\color{blue}}{} \setlength{\parindent}{0pt} \definecolor{LightGray}{gray}{0.9} \newtcolorbox{PART}[1][]{% enhanced,top=3mm,bottom=3mm, bottomtitle=2mm,arc=2pt,outer arc=0pt, colframe=LightSteelBlue,colback=white,bicolor, colbacklower=LightSteelBlue!15,coltitle=black, fonttitle=\large\sffamily, title=\centering Thème, #1% }% \tcbset{vignettes/.style={% nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,% boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,% } } \tcbset{vignettelatex/.style={% fontupper={\vphantom{pf}\footnotesize\ttfamily}, vignettes,% colframe=CadetBlue,coltitle=white,colback=CadetBlue!5,% overlay={\begin{tcbclipinterior}% \fill[fill=lightgray!50]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{CadetBlue}{\scalebox{0.6}[0.75]{\textbf{\LaTeX}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \tcbset{vignettelib/.style={% fontupper={\vphantom{pf}\footnotesize\ttfamily}, vignettes,% colframe=ForestGreen,coltitle=white,colback=white,% overlay={\begin{tcbclipinterior}% \fill[fill=green!25]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{ForestGreen}{\scalebox{0.85}[0.75]{\textbf{LIB}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \tcbset{vignetteMaJ/.style={% fontupper={\vphantom{pf}\footnotesize\ttfamily}, vignettes,% colframe=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,% overlay={\begin{tcbclipinterior}% \fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \tcbset{StyleCodeTex/.style={% listing engine=listings,% listing options={% breaklines=true,% breakatwhitespace=true,% style=tcblatex,basicstyle=\footnotesize\ttfamily,% tabsize=4,% commentstyle={\itshape\color{gray}}, keywordstyle={\color{blue}},% classoffset=0,% keywords={useproflyclib,includegraphics},% alsoletter={-},% keywordstyle={\color{blue}},% classoffset=1,% alsoletter={-},% morekeywords={ProfLycee,CodePythonLst,CodePythonLstAlt,CodePiton,PitonConsole,CodePythontex,CodePythontexAlt,ConsolePythontex,CodePythonMinted,CodePythonMintedAlt,PseudoCode,PseudoCodeAlt,TerminalWin,TerminalUnix,TerminalOSX,EnvArbreProbasTikz,EnvSudoMaths},% keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% morekeywords={\ResolutionApprochee,\SolutionTVI,\CalculTermeRecurrence,\ToileRecurrence,\SolutionSeuil,\IntegraleApprochee,\GrilleTikz,\AxesTikz,\AxexTikz,\AxeyTikz,\FenetreTikz,\FenetreSimpleTikz,\DeclareFonctionTikz,\CourbeTikz,\OrigineTikz,\SplineTikz,\TangenteTikz,\MiniSchemaSignes,\MiniSchemaSignesTkzTab,\IntegraleApprocheeTikz,\CartoucheCapytale,\PaveTikz,\TetraedreTikz,\CercleTrigo,\AffPoint,\AffVecteur,\TrouveEqCartPlan,\TrouveEqParamDroite,\TrouveEqCartDroite,\TrouveNorme,\TrouveDistancePtPlan,\EquationReduite,\CalculsRegLin,\PointsRegLin,\NuagePointsTikz,\PointMoyenTikz,\BoiteMoustaches,\BoiteMoustachesAxe,\Histogramme,\CalcBinomP,\CalcBinomC,\BinomP,\BinomC,\CalcPoissP,\CalcPoissC,\PoissonP,\PoissonC,\CalcGeomP,\CalcGeomC,\GeomP,\GeomC,\CalcHypergeomP,\CalcHypergeomP,\HypergeomP,\HypergeomC,\CalcNormC,\NormaleC,\CalcExpoC,\ExpoC,\ArbreProbasTikz,\LoiNormaleGraphe,\LoiExpoGraphe,\NbAlea,\VarNbAlea,\TirageAleatoireEntiers,\Arrangement,\Combinaison,\ConversionDecBin,\ConversionBinHex,\ConversionVersDec,\ConversionBaseDix,\ConversionDepuisBaseDix,\PresentationPGCD,\EquationDiophantienne,\ConversionFraction,\SimplificationRacine,\EcritureEnsemble,\EcritureTrinome,\MesurePrincipale,\LigneTrigo,\SudoMaths },% keywordstyle={\color{green!75!black}},% classoffset=3,% alsoletter={-},% morekeywords={minimum-decimal-digits,scale,nonamssymb,build,Precision,Intervalle,Variable,NomFct,NomSol,va,vb,Stretch,Balayage,Calculatrice,Majuscule,No,UNo,NomSuite,Simple,Exact,Conclusion,Sens,ResultatBrut,Methode,NbSubDiv,AffFormule,Expr,Signe,Variables,Affp,Affs,Epaisseur,Police,ElargirOx,ElargirOy,Labelx,Labely,AffLabel,PosLabelx,PosLabely,EchelleFleche,TypeFleche,PosGrad,HautGrad,AffGrad,AffOrigine,Annee,Trigo,Dfrac,Style,Coeffs,AffPoints,TaillePoints,xl,xr,Code,Racines,Largeur,Hauteur,Cadre,Fct,Nom,PosLabel,DecalLabel,TailleLabel,AffTermes,RemplirbOpacite,CouleurRemplissage,Lignes,Gobble,Alignement,Filigrane,BarreTitre,CouleurNombres,Centre,EspacementVertical,Label,Titre,Profondeur,Angle,Fuite,Sommets,Math,Aff,Plein,Cube,Alpha,Beta,Rayon,Marge,TailleValeurs,TailleAngles,CouleurFond,Decal,MoinsPi,AffAngles,AffTraits,AffValeurs,Equationcos,Equationsin,sin,cos,AffTraitsEq,CouleurSol,OptionCoeffs,SimplifCoeffs,Facteur,OptionCoeffs,Reel,Oppose,Rgras,SimplifCoeffs,VectDirecteur,NomCoeffa,NomCoeffb,NomCoeffr,NomCoeffrd,NomXmin,NomXmax,Ox,Oy,xg,yg,AffNom,Elevation,Moyenne,AffMoyenne,Pointilles,Valeurs,Elargir,Min,Max,DebutOx,FinOx,ListeCouleurs,ElargirX,ElargirY,LabelX,LabelY,GradX,GradY,AffEffectifs,PosEffectifs,Opacite,AffBornes,GrilleV,PoliceAxes,PoliceEffectifs,EpaisseurTraits,Unite,EspaceNiveau,EspaceFeuille,Type,PoliceProbas,InclineProbas,Fleche,StyleTrait,EpaisseurTrait,CouleurAire,CouleurCourbe,AfficheM,AfficheCadre,ValMin,ValMax,NbVal,Sep,Tri,Repetition,Notation,NotationAncien,Formule,AffBase,Details,BaseDep,Zeros,DecalH,DecalV,Noeud,Rect,CouleurRes,DecalRect,Rectangle,CouleurResultat,AfficheConclusion,AfficheDelimiteurs,Lettre,Inconnues,Entier,Cadres,PresPGCD,Mathpunct,Option,Alea,Anegatif,Crochets,Brut,Etapes,Epaisseurg,CouleurCase,CouleurTexte,NbSubCol,NbLig,NbCol,Legendes,PoliceLeg,ListeLegV,ListeLegH,DecalLegende,Couleur,Uno},% keywordstyle={\color{orange!75!black}} } } } \NewTCBListing{PresCodeTexPL}{ O{CadetBlue} m }{% enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!Black,% sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% before skip=\baselineskip,after skip=\baselineskip,% colback=white, fontupper=\footnotesize,fontlower=\footnotesize,% watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50,% title={{\scriptsize\faCode} Code \LaTeX}, lefttitle=0.4em, fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% StyleCodeTex, %listing engine=minted,minted style=colorful,minted language=tex, %minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, #2,% overlay={\draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faCode} ;} } \NewTCBListing{PresCodePL}{ O{CadetBlue} m }{% enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!Black,% sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% before skip=\baselineskip,after skip=\baselineskip,% colback=white, fontupper=\footnotesize,fontlower=\footnotesize,% watermark text={\faCogs},watermark opacity=0.25,watermark zoom=0.50,% title={{\scriptsize\faCogs} Code \LaTeX{} et sortie \LaTeX}, lefttitle=0.4em, fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% StyleCodeTex, %listing engine=minted,minted style=colorful,minted language=tex, %minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, #2,% overlay={% \draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faCode} ; \draw[#1!85!black] ($(segmentation.west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faFilePdf} ; } } \NewTCBListing{PresCodeSortiePL}{ O{CadetBlue} m }{% enhanced,width=0.93\linewidth,flush right,boxrule=0.75pt,colframe=#1!85!Black,% sharp corners,top=0mm,bottom=0mm,left=0.4em,right=5mm,% before skip=\baselineskip,after skip=\baselineskip,% colback=white, fontupper=\footnotesize,fontlower=\footnotesize,% watermark text={\faFilePdf},watermark opacity=0.25,watermark zoom=0.50,% title={{\scriptsize\faFilePdf} Sortie \LaTeX}, lefttitle=0.4em, fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!#1,% StyleCodeTex, % listing engine=minted,minted style=colorful,minted language=tex, % minted options={tabsize=4,fontsize=\footnotesize,autogobble,breaklines=true}, #2,% overlay={\draw[#1!85!black] ($(frame.north west)+(-0.035\linewidth,-0.025\linewidth)$) node[scale=1.66] {\faFilePdf} ;} } \newtcblisting{codetex}[1][]{% colback=white,colframe=red!75!black,title={\small \faCode} Code \LaTeX,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{codeattention}[1][]{% colback=Yellow!50,colframe=Yellow!50!Black,title={\small \faBomb} Attention,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{codesortie}[1][]{% colback=white,colframe=red!75!black,title={\small \faArrowAltCircleRight[regular]} Sortie \LaTeX,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{condeidee}[1][]{% colback=white,colframe=PeachPuff!75!black,title={\small \faLightbulb[regular]} Idée(s),fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{codeinfo}[1][]{% colback=white,colframe=SteelBlue,title={\small \faPuzzlePiece} Information(s),fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{codecles}[1][]{% colback=white,colframe=ForestGreen!75,title={\small \faPaperclip} Clés et options,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} %petite vignette tex \newcommand\ctex[1]{\tcbox[vignettelatex]{#1}} %petite vignette màj \newcommand\cmaj[1]{% {\tcbox[vignetteMaJ]{#1}\xspace}% } %petite vignette màj \newcommand\clib[1]{% {\tcbox[vignettelib]{#1}\xspace}% } %gestion de la fenêtre v2 directement dans le tikzpicture \tikzset{% 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,unit/.default=1,xunit=1, yunit/.store in=\yunit,unit/.default=1,yunit=1 } \newcommand\tgrilles[1][ultra thin,lightgray]{% \draw[xstep=\xgrilles,ystep=\ygrilles,#1] (\xmin,\ymin) grid (\xmax,\ymax);% } \newcommand\tgrillep[1][thin,gray]{% \draw[xstep=\xgrille,ystep=\ygrille,#1] (\xmin,\ymin) grid (\xmax,\ymax);% } \newcommand\genfenetre{% %styles \tikzset{noeudexpl/.style={purple,font=\sffamily\small}} \tikzset{portionexpl/.style={orange,thick,<->,>=latex}} \tikzset{expl/.style={midway,inner sep=1pt,above right=0,orange,font=\sffamily\scriptsize,rotate=45}} \tikzset{coeffs/.style={CadetBlue!50!black,circle,draw=CadetBlue,thick,fill=CadetBlue!5,font=\small\ttfamily}} \tikzset{tangente/.style={teal,line width=1pt,dashed}} %grilles & axes \tgrilles[line width=0.3pt,lightgray!50] \tgrillep[line width=0.6pt,lightgray!50] \draw[line width=1.5pt,->,gray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,gray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,1,...,6} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} } \newcommand\gennotice{% %notice \draw (0,1) node[noeudexpl,below] {point 1} ; \draw (4,3.667) node[noeudexpl,above] {point 2} ; \draw (7.5,1.75) node[noeudexpl,below] {point 3} ; \draw (9,2) node[noeudexpl,above] {point 4} ; \draw (10,0) node[noeudexpl,below] {point 5} ; \draw[portionexpl] (0,6)--(4,6) node[expl] {portion 1} ; \draw[portionexpl] (4,6)--(7.5,6) node[expl] {portion 2} ; \draw[portionexpl] (7.5,6)--(9,6) node[expl] {portion 3} ; \draw[portionexpl] (9,6)--(10,6) node[expl] {portion 4} ; \draw[orange,densely dashed,thick] (4,0)--(4,6) (7.5,0)--(7.5,6) (9,0)--(9,6) (10,0)--(10,6) ; } \newcommand\gentangentes{% %tangentes \draw[tangente] (0,1)--(1,1) ; \draw[tangente,domain=3:5] plot (\x,{-1/3*(\x-9)+2}) ; \draw[tangente] (6.5,1.75)--(8.5,1.75) ; \draw[tangente,domain=8:10] plot (\x,{-1/3*(\x-9)+2}) ; \draw[tangente,domain=9.5:10] plot (\x,{-10*(\x-10)+0}) ;% } \newcommand\listecoeffs[4]{% \draw (0,5.5) node[left,CadetBlue,font=\small\ttfamily] {Coeffs} ; \node[coeffs] at (2,5.5) {#1} ; \node[coeffs] at ({(4+7.5)/2},5.5) {#2} ; \node[coeffs] at ({(7.5+9)/2},5.5) {#3} ; \node[coeffs] at ({(9+10)/2},5.5) {#4} ;% } \title{% \begin{minipage}{0.85\linewidth} \begin{tcolorbox}[colframe=yellow,colback=yellow!15] \begin{center} \begin{tabular}{c} \lstinline!ProfLycee!\\ \\ Quelques \textit{petites} commandes pour \LaTeX{} (au lycée) \end{tabular} \end{center} \end{tcolorbox} \end{minipage} } \author{ \begin{tabular}{c} Cédric Pierquet\\ {\ttfamily c pierquet -- at -- outlook . fr} \end{tabular} } \date{Version \PLversion{} -- \PLdate} \newcommand\Cle[1]{{\bfseries\sffamily\textlangle \textcolor{orange!75!black}{#1}\textrangle}} \newcommand\deblst{{\tiny\faCode}~} \begin{document} \setlength{\aweboxleftmargin}{0.07\linewidth} \setlength{\aweboxcontentwidth}{0.93\linewidth} \setlength{\aweboxvskip}{8pt} \pagestyle{fancy} \maketitle \thispagestyle{empty} {\sffamily{\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les mathématiques, au lycée.} \medskip {\footnotesize\noindent% {\deblst} résoudre, de manière approchée, des équations\\ {\deblst} calculer (et représenter) une valeur approchée d'une intégrale\\ {\deblst} tracer \textit{facilement} des repères/grilles/courbes\\ {\deblst} tracer des courbes \textit{lisses} avec gestion des extrema et des dérivées\\ {\deblst} présenter du code \textsf{python} ou \textsf{pseudocode}, une console d'exécution \textsf{Python} \\ {\deblst} tracer rapidement un pavé, un tétraèdre \\ {\deblst} simplifier des calculs sous forme fractionnaire, simplifier des racines \\ {\deblst} effectuer des calculs avec des suites récurrentes, créer la \textit{toile} pour une suite récurrente \\ {\deblst} afficher et utiliser un cercle trigo \\ {\deblst} afficher un petit schéma pour le signe d'une fonction affine ou d'un trinôme \\ {\deblst} travailler sur les statistiques à deux variables (algébriques et graphiques) \\ {\deblst} tracer un histogramme, avec classes régulières ou non \\ {\deblst} convertir entre bin/dec/hex avec détails \\ {\deblst} présenter un calcul de PGCD \\ {\deblst} effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale) \\ {\deblst} créer des arbres de probas \og classiques \fg \\ {\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions) \\ {\deblst} déterminer la mesure principale d'un angle, calculer les lignes trigonométriques d'angles \og classiques \fg{} \\ {\deblst} résoudre une équation diophantienne \og classique \fg{} \\ {\deblst} travailler avec un peu de géométrie analytique \\ {\deblst} \ldots} ~ \hfill{}\textsl{Merci à Anne et quark67 pour leurs retours et relectures !} \hfill{}\textsl{Merci à Christophe et Denis pour leurs retours et éclairages !} \hfill{}\textsl{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !} ~ \vfill \hrule \medskip \TableauDocumentation \medskip \hrule \vfill ~ \newpage \phantomsection \hypertarget{matoc}{} \tableofcontents \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Introduction} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Introduction} \section{Le package ProfLycee} \subsection{\og Philosophie \fg{} du package} \begin{noteblock} Ce \ctex{package}, très largement inspiré (et beaucoup moins abouti) de l'excellent \ctex{ProfCollege} de C. Poulain et des excellents \ctex{tkz-*} d'A. Matthes, va définir quelques outils pour des situations particulières qui ne sont pas encore dans \ctex{ProfCollege}. On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je précise que la syntaxe est très proche (car pertinente de base) et donc pas de raison de changer une \textit{équipe qui gagne} ! \medskip Il se charge de manière classique, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge des {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement. L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels ! \end{noteblock} \begin{importantblock} Le {package} \ctex{ProfLycee} charge et utilise les {packages} : \begin{itemize} \item \ctex{mathtools}, \ctex{amssymb} ; \item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ; \item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac}, \ctex{nicematrix} ; \item \ctex{tcolorbox} avec l'option \textsf{[most]} ; \item \ctex{xparse}, \ctex{xstring}, \ctex{simplekv}, \ctex{xinttools} ; \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex}, \ctex{xintgcd} ; \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{randomlist}, \ctex{fancyvrb}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{importantblock} \begin{tipblock} J'ai utilisé les {packages} de C. Tellechea, je vous conseille d'aller jeter un œil sur ce qu'il est possible de faire en \LaTeX{} avec \ctex{listofitems}, \ctex{randomlist}, \ctex{simplekv} ou encore \ctex{xstring} ! \end{tipblock} \subsection{Chargement du package} \begin{PresCodeTexPL}{listing only} %exemple de chargement pour une compilation en (pdf)latex \documentclass{article} \usepackage{ProfLycee} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} ... \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %exemple de chargement pour une compilation en (xe/lua)latex \documentclass{article} \usepackage{ProfLycee} \usepackage{fontspec} ... \end{PresCodeTexPL} \pagebreak \subsection{Librairies}\label{librairies} \begin{warningblock} \cmaj{2.5.0} Le package fonctionne désormais avec un système de \clib{librairies}, qui utilisent et chargent des packages spécifiques, avec des compilations particulières, donc l'utilisateur utilisera un système de chargement similaire à celui de \textsf{tcolorbox} ou \textsf{tikz}, dans le préambule, et une fois le package appelé. \end{warningblock} \begin{PresCodeTexPL}{listing only} \usepackage{ProfLycee} \useproflyclib{...,...} \end{PresCodeTexPL} \begin{noteblock} Les librairies disponibles seront indiquées dans les sections spécifiques. Pour le moment, il existe : \begin{itemize} \item \clib{piton} (page \pageref{pythonpiton}) ; \item \clib{minted} (page \pageref{pytminted}) ; \item \clib{pythontex} (page \pageref{pythontex}). \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{warningblock} \cmaj{2.5.8} Pour le package \ctex{piton}, la version minimale requise est la \ctex{1.5} pour bénéficier d'un rendu optimal (au niveau des marges) de la présentation du code \textsf{Python}. \end{warningblock} \begin{noteblock} En compilant (notamment avec les librairies \clib{minted} et \clib{pythontex}) on peut spécifier des répertoires particuliers pour les (ou des) fichiers auxiliaires. Avec l'option \Cle{build}, l'utilisateur a la possibilité de placer les fichiers temporaires de \clib{minted} et \clib{pythontex} dans un répertoire \menu{build} du répertoire courant. \smallskip Dans ce cas il faut créer au préalable le répertoire \menu{build} avant de compiler un fichier, pour éviter toute erreur ! \end{noteblock} \begin{PresCodeTexPL}{listing only} ... \usepackage[build]{ProfLycee} \useproflyclib{...} ... \end{PresCodeTexPL} \begin{noteblock} L'option \Cle{build} charge certains packages (librairies \clib{minted} et \clib{pythontex}) avec les options : \begin{itemize} \item \ctex{\textbackslash setpythontexoutputdir\{./build/pythontex-files-\textbackslash jobname\}} \item \ctex{\textbackslash RequirePackage[outputdir=build]\{minted\}} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \subsection{Gestion des fontes}\label{amssymb} \begin{warningblock} \cmaj{2.6.5} Sous \hologo{XeLaTeX} \& \hologo{LuaLaTeX}, \ctex{ProfLycee} utilisant le package \ctex{mathtools}, il est nécessaire de placer l'appel à \ctex{ProfLycee} {\em avant} l'appel des fontes. \smallskip Sous \hologo{XeLaTeX} \& \hologo{LuaLaTeX}, certaines fontes (par exemple \textsf{fourier-otf}) redéfinissent les fontes générées par le package \ctex{amssymb} et peuvent provoquer un \og warning \fg{} au mieux, une erreur de compilation au pire. \smallskip Pour cela, on pourra appeler \ctex{ProfLycee} avec l'option \Cle{nonamssymb} (idée reprise de \ctex{ProfCollege}). \end{warningblock} \begin{PresCodeTexPL}{listing only} \documentclass{article} \usepackage[nonamssymb]{ProfLycee} \usepackage{fourier-otf} \end{PresCodeTexPL} \pagebreak \section{Compléments} \subsection{Le système de \og clés/options \fg} \begin{tipblock} L'idée est de conserver -- autant que faire se peut -- l'idée de \Cle{Clés} qui sont : % \begin{itemize} \item modifiables ; \item définies (en majorité) par défaut pour chaque commande. \end{itemize} Pour certaines commandes, le système de \Cle{Clés} pose quelques soucis, de ce fait le fonctionnement est plus \textit{basique} avec un système d'\textsf{arguments} \textit{optionnels} (souvent entre \textsf{[\ldots]}) ou \textit{obligatoires} (souvent entre \textsf{\{\ldots\}}). \smallskip À noter que les : % \begin{itemize} \item les \Cle{Clés} peuvent être mises dans n'importe quel ordre, elles peuvent être omises lorsque la valeur par défaut est conservée ; \item les \textsf{arguments} doivent, eux, être positionnés dans le \textit{bon ordre}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Les \textsf{commandes} et \textsf{environnements} présentés seront explicités via leur \textsf{syntaxe} avec les \textsf{options/clés} ou \textsf{arguments}. Autant que faire se peut, des exemples/illustrations/remarques seront proposés à chaque fois. \end{noteblock} \begin{noteblock} À noter que certaines commandes disponibles sont liées à un environnement \ctex{tikzpicture}, elles peuvent ne pas être autonomes mais permettent de conserver -- en parallèle -- toute commande liée à \TikZ{} ! \end{noteblock} \subsection{Compilateur(s)} \begin{noteblock} Le package \ctex{ProfLycee} est compatible avec les compilateurs classiques : \textsf{latex}, \textsf{pdflatex} ou encore \textsf{lualatex}. \smallskip En ce qui concerne les codes \textsf{librairies}, il faudra : \begin{itemize} \item \clib{pythontex} : compiler en chaîne \textsf{(xxx)latex + pythontex + (xxx)latex} ; \item \clib{minted} : compiler avec \textsf{shell-escape} (ou \textsf{write18}) ; \item \clib{piton} : compiler en \hologo{LuaLaTeX} et \textsf{shell-escape} (ou \textsf{write18}). \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \subsection{Problèmes éventuels\ldots} \begin{noteblock} Certaines \textsf{commandes} sont à intégrer dans un environnement \TikZ, afin de pouvoir rajouter des éléments, elles ont été testés dans des environnement \ctex{tikzpicture}, à vérifier que la gestion des axes par l'environnement \ctex{axis} est compatible\ldots \smallskip Certains packages ont une fâcheuse tendance à être tatillons sur leurs options (les \textit{fameux} \textsf{option clash for} \ldots) ou leur \textit{position} dans le chargement, donc attention notamment au chargement de \ctex{xcolor} et de \ctex{amssymb} ! \smallskip En dehors de cela, ce sont des tests multiples et variés qui permettront de détecter d'éventuels bugs ! \end{noteblock} \pagebreak ~ \vfill \hfill\tikz \draw (0,0) node[above right=0pt,inner sep=0pt,outer sep=0pt,rotate=25,scale=4] {$\leftrightsquigarrow$ Bonne(s) découverte(s) $\leftrightsquigarrow$} ;\hfill~ \vfill ~ \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Liste des commandes} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Liste des commandes, par thème} \begin{noteblock} \cmaj{2.0.0} Cette section contient un \textit{résumé} des différentes commandes et environnements disponibles dans \ctex{ProfLycee}. Elles sont présentées de manière \textit{succincte}, mais elles sont présentées de manière \textit{détaillée} dans la suite de la documentation. \end{noteblock} \begin{PresCodeTexPL}{listing only} %Résolution approchée d'une équation f(x)=k \ResolutionApprochee[clés]{équation}[macro] %Présentation d'une solution par balayage (TVI) \SolutionTVI[options]{fonction}{valeur} %Calculer le terme d'une suite récurrente simple, toile pour une suite récurrente simple \CalculTermeRecurrence[options]{fonction associée} \ToileRecurrence[clés][options du tracé][option supplémentaire des termes] %Mise en forme de la conclusion d'un seuil \SolutionSeuil[options]{fonction associée}{seuil} %Valeur approchée d'une intégrale \IntegraleApprochee[clés]{fonction}{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %fenêtre de repérage en tikz et courbe \GrilleTikz[options][options grille ppale][options grille second.] \AxesTikz[options] \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs} \FenetreSimpleTikz[options](opt axes){liste valx}{liste valy} \DeclareFonctionTikz[nom]{expr} \CourbeTikz[options]{fonction}{valxmin:valxmax} %courbe d'interpolation, tangente, dans un environnement tikz \SplineTikz[options]{liste} \TangenteTikz[options]{liste} %schémas pour le signe affine/trinôme, dans un environnement tikz \MiniSchemaSignes(*)[clés] \MiniSchemaSignesTkzTab[options]{numligne}[échelle][décalage horizontal] %intégrales et méthodes graphiques \IntegraleApprocheeTikz[clés]{nom_fonction}{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %présentation de code Python \begin{CodePythonLst}(*)[largeur]{commandes tcbox}...\end{CodePythonLst} \begin{CodePythonLstAlt}(*)[largeur]{commandes tcbox}...\end{CodePythonLstAlt} %:=librairie piton \begin{CodePiton}[options piton]{commandes tcbox}...\end{CodePiton} \begin{PitonConsole}{commandes tcbox}...\end{PitonConsole} %:=librairie pythontex \begin{CodePythontex}[options]{}...\end{CodePythontex} \begin{CodePythontexAlt}[options]{}...\end{CodePythontexAlt} \begin{ConsolePythontex}[options]{}...\end{ConsolePythontex} %:=librairie minted \begin{CodePythonMinted}(*)[largeur]{commandes tcbox}...\end{CodePythonMinted} \begin{CodePythonMintedAlt}(*)[largeur]{commandes tcbox}...\end{CodePythonMintedAlt} %présentation de pseudocode \begin{PseudoCode}(*)[largeur]{commandes tcbox}...\end{PseudoCode} \begin{PseudoCodeAlt}(*)[largeur]{commandes tcbox}...\end{PseudoCodeAlt} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %terminal OS \begin{TerminalWin}[largeur]{clés}[options]...\end{TerminalWin} \begin{TerminalUnix}[largeur]{clés}[options]...\end{TerminalUnix} \begin{TerminalOSX}[largeur]{clés}[options]...\end{TerminalOSX} %code Capytale \CartoucheCapytale(*)[options]{code capytale} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %pavé et tétraèdre, dans un environnement tikz \PaveTikz[options] \TetraedreTikz[options] %cercle trigo, dans un environnement tikz \CercleTrigo[clés] \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %Affichage des coordonnées d'un point (2 ou 3 coordonnées) \AffPoint[options de formatage](liste des coordonnées) %Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées) \AffVecteur[options de formatage](liste des coordonnées) %Avec un vecteur normal et un point \TrouveEqCartPlan[clés](vecteur normal)(point) %Avec deux vecteurs directeurs et un point \TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point) %Avec trois points \TrouveEqCartPlan[clés](point1)(point2)(point3) %Avec un vecteur directeur et un point \TrouveEqParamDroite[clés](vecteur directeur)(point) %Avec deux points \TrouveEqParamDroite[clés](point1)(point2) %Avec un vecteur normal (choix par défaut) et un point \TrouveEqCartDroite[clés](vecteur normal)(point) %Avec un vecteur directeur et un point \TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1) %Avec deux points \TrouveEqCartDroite[clés](point1)(point2) %Avec le point et le plan via vect normal + point \TrouveDistancePtPlan(point)(vec normal du plan)(point du plan) %Avec le point et le plan via vect normal + point \TrouveDistancePtPlan(point)(équation cartésienne) %Avec le vecteur \TrouveNorme(vecteur) %Avec deux points \TrouveNorme(point 1)(point 2) \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %Équation réduite d'une droite \EquationReduite[option]{A/xa/ya,B/xb/yb} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %paramètres d'une régression linéaire, nuage de points \CalculsRegLin[clés]{listeX}{listeY} \PointsRegLin[clés]{listeX}{listeY} %stats à 2 variables, dans un environnement tikz \GrilleTikz[options][options grille ppale][options grille second.] \AxesTikz[options] \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs} \FenetreTikz \OrigineTikz \FenetreSimpleTikz[options](opt axes){liste valx}{liste valy} \NuagePointsTikz[options]{listeX}{listeY} \PointMoyenTikz[options] \CourbeTikz[options]{formule}{domaine} %boîte à moustaches, dans un environnement tikz \BoiteMoustaches[options] \BoiteMoustachesAxe[options] %histogrammes \Histogramme(*)[options]{données} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %loi binomiale B(n,p) \CalcBinomP{n}{p}{k} \CalcBinomC{n}{p}{a}{b} \BinomP(*)[prec]{n}{p}{k} \BinomC(*)[prec]{n}{p}{a}{b} %loi de Poisson P(l) \CalcPoissP{l}{k} \CalcPoissC{l}{a}{b} \PoissonP(*)[prec]{l}{k} \PoissonC(*)[prec]{l}{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %loi géométrique G(p) \CalcGeomP{p}{k} \CalcGeomC{l}{a}{b} \GeomP{p}{k} \GeomC{l}{a}{b} %loi hypergéométrique H(N,n,m) \CalcHypergeomP{N}{n}{m}{k} \CalcHypergeomP{N}{n}{m}{a}{b} \HypergeomP{N}{n}{m}{k} \HypergeomC{N}{n}{m}{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %loi normale N(m,s) \CalcNormC{m}{s}{a}{b} \NormaleC(*)[prec]{m}{s}{a}{b} %loi exponentielle E(l) \CalcExpoC{l}{a}{b} \ExpoC(*)[prec]{l}{a}{b} %arbres de probas \ArbreProbasTikz[options]{donnees} \begin{EnvArbreProbasTikz}[options]{donnees}...\end{EnvArbreProbasTikz} %schémas lois continues \LoiNormaleGraphe[options]{m}{s}{a}{b} \LoiExpoGraphe[options]{l}{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %entier aléatoire entre a et b \NbAlea{a}{b}{macro} %nombre décimal (n chiffres après la virgule) aléatoire entre a et b+1 (exclus) \NbAlea[n]{a}{b}{macro} %création d'un nombre aléatoire sous forme d'une macro \VarNbAlea{macro}{calcul} %liste d'entiers aléatoires \TirageAleatoireEntiers[options]{macro} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %arrangement Anp \Arrangement(*)[option]{p}{n} %arrangement Cnp (p parmi n) \Combinaison(*)[option]{p}{n} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %conversions \ConversionDecBin(*)[clés]{nombre} \ConversionBinHex[clés]{nombre} \ConversionVersDec[clés]{nombre} \ConversionBaseDix[clés]{nombre}{base de départ} \ConversionDepuisBaseDix[options]{nombre en base 10}{base d'arrivée} %PGCD présenté \PresentationPGCD[options]{a}{b} %Équation diophantienne \EquationDiophantienne[clés]{equation} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %conversion en fraction, simplification de racine \ConversionFraction(*)[option]{argument} \SimplificationRacine{expression} %ensemble d'éléments \EcritureEnsemble[clés]{liste} %trinôme, trinôme aléatoire \EcritureTrinome[options]{a}{b}{c} %mesure principale, lignes trigo \MesurePrincipale[options]{angle} \LigneTrigo(*)[booléens]{cos/sin/tan}(angle) \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %sudomaths \SudoMaths[options]{liste} \begin{EnvSudoMaths}[options]{grille}...\end{EnvSudoMaths} \end{PresCodeTexPL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour l'analyse} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour l'analyse} \section{Résolution approchée d'une équation}\label{resolapprox} \subsection{Idée} \begin{tipblock} \cmaj{2.1.4} L'idée est de proposer une commande pour résoudre, de manière approchée, une équation du type $f(x)=k$ sur un intervalle (fermé) donné. \smallskip La méthode utilisée est la \textbf{dichotomie}, pour plus de rapidité que la méthode \textit{simple} par balayage. \end{tipblock} \begin{PresCodeTexPL}{listing only} \ResolutionApprochee[clés]{équation}[macro] \end{PresCodeTexPL} \begin{PresCodePL}{} \ResolutionApprochee[Intervalle=0:10]{x**3-2*x**2-x-1=2}% $x_0 \approx \num[minimum-decimal-digits=2]{\masolutiond}$ par défaut ;\\ $x_0 \approx \num[minimum-decimal-digits=2]{\masolutione}$ par excès ;\\ $x_0 \approx \num[minimum-decimal-digits=2]{\masolutiona}$ arrondi à $10^{-2}$.\\ \hfill\includegraphics[scale=0.45]{./graphics/pl-solve_a}\hfill~ \end{PresCodePL} \subsection{Clés et options} \begin{cautionblock} Quelques explications sur les \Cle{clés} et sur les arguments : \begin{itemize} \item la clé \Cle{Precision} pour le nombre de chiffres après la virgule de la solution ; \hfill{}défaut \Cle{2} \item la clé (obligatoire !) \Cle{Intervalle} qui permet de préciser l'intervalle initial de recherche ; \item la clé \Cle{Variable} qui permet de spécifier la variable de l'équation ;\hfill{}défaut \Cle{x} \item l'argument \textit{obligatoire} est l'équation, sous la forme $f(\ldots)=k$ (ou $f(\ldots)$ pour $f(\ldots)=0$) ; \item l'argument \textit{optionnel} est la base de la \textit{} qui sert à stocker les valeurs : \hfill{}défaut \Cle{masolution} \begin{itemize} \item \ctex{\textbackslashd} pour la valeur approchée par défaut ; \item \ctex{\textbackslashe} pour la valeur approchée par excès ; \item \ctex{\textbackslasha} pour la valeur approchée. \end{itemize} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} \ResolutionApprochee[Precision=4,Intervalle=0:2]{exp(0.5*x)+x**2-4=0}% Une valeur approchée, à $10^{-4}$ près, d'une solution de $\text{e}^{0,5x}+x^2-4=0$ sur $\left[0;2\right]$ est $\beta$ avec : \begin{itemize} \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiond}$ par défaut ; \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutione}$ par excès ; \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiona}$. \end{itemize} \ResolutionApprochee[Variable=t,Intervalle=-1:2]{3*t*exp(-0.5*t+1)=4}[SolA]% Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\rm{e}^{-0,5t+1}=4$ est $t_1$ avec : \begin{itemize} \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAd}$ par défaut ; \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAe}$ par excès ; \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAa}$. \end{itemize} \ResolutionApprochee[Precision=3,Variable=t,Intervalle=2:10]{3*t*exp(-0.5*t+1)=4}[SolB] Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\text{e}^{-0,5t+1}=4$ est $t_2$ avec : \begin{itemize} \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBd}$ par défaut ; \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBe}$ par excès ; \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBa}$. \end{itemize} \medskip \hfill\includegraphics[scale=0.45]{./graphics/pl-solve_b}~~ \includegraphics[scale=0.45]{./graphics/pl-solve_c}~~ \includegraphics[scale=0.45]{./graphics/pl-solve_d}\hfill~ \end{PresCodePL} \newpage \section{Présentation d'une solution d'équation par balayage}\label{solutiontvi} \subsection{Idée} \begin{tipblock} \cmaj{2.0.4} L'idée est de présenter l'obtention d'une solution approchée d'équation par balayage, dans le cadre du TVI par exemple. Les calculs et tests sont effectués grâce au package \ctex{xinttools}, et le formatage par \ctex{tabularray} et \ctex{sinuitx}. \end{tipblock} \begin{warningblock} Le code ne trouve pas la solution, il met \textit{juste} en forme mais effectue quand même les calculs d'images et les tests. \end{warningblock} \begin{PresCodeTexPL}{listing only} \SolutionTVI[options]{fonction}{valeur} \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour cette commande, relative à une équation du type $f(x)=k$ : \begin{itemize} \item la clé \Cle{NomFct} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{f} \item la clé \Cle{NomSol} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{\textbackslash{}alpha} \item les clés \Cle{va} et \Cle{vb} qui sont les bornes inférieure et supérieure de l'encadrement ; \item la clé \Cle{Precision} qui est la précision des calculs pour les images ;\hfill{}défaut \Cle{2} \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15} \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false} %\item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false} \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début.\hfill{}défaut \Cle{true} \end{itemize} \smallskip Le premier argument \textit{obligatoire} est la fonction, en syntaxe \ctex{xint} et avec comme variable $x$, et le second la valeur de $k$. \end{cautionblock} \begin{PresCodePL}{} Pour $f(x)=0$ avec $f(x)=x^2-2$. On obtient \SolutionTVI[va=1.414,vb=1.415,Precision=3]{x**2-2}{0}. \end{PresCodePL} \begin{PresCodePL}{} Avec $\varphi(t)=3t\,\rm{e}^{-0,5t+1}=5$, \SolutionTVI[Majuscule=false,Calculatrice,va=1.02,vb=1.03,NomFct=\varphi] {3*x*exp(-0.5*x+1)}{5} \end{PresCodePL} \begin{PresCodePL}{} On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$.\\ \SolutionTVI% [Balayage,Stretch=1.5,va=4.48,vb=4.49,NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}. \end{PresCodePL} \subsection{Interaction avec la commande de résolution approchée} \begin{tipblock} \cmaj{2.1.4} L'idée est de récupérer les valeurs par défaut et par excès pour le TVI grâce à la commande \ctex{\textbackslash ResolutionApprochee}. \end{tipblock} \begin{PresCodePL}{} On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$ sur l'intervalle $\left[3;5\right]$. \ResolutionApprochee[Intervalle=3:5]{log(x)=1.5}[SolLn] \SolutionTVI% [Balayage,Stretch=1.5,va={\SolLnd},vb={\SolLne}, NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}. \end{PresCodePL} \begin{noteblock} À terme, peut-être que la commande \ctex{\textbackslash ResolutionApprochee} sera intégrée dans la commande \ctex{\textbackslash SolutionTVI} afin d'automatiser encore plus le procédé. \end{noteblock} \newpage \section{Suites récurrentes simples}\label{calcrecurr} \subsection{Idées} \begin{tipblock} \cmaj{2.0.3} L'idée est de proposer des commandes pour effectuer des calculs avec des suites récurrentes du type $u_{n+1}=f\big(u_n\big)$ : \begin{itemize} \item calcul de termes avec possibilité d'arrondir ; \item présentation de la conclusion de la recherche d'un seuil du type $u_n > S$ ou $u_n < S$. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{warningblock} \cmaj{2.1.0} Le code pour le seuil \textbf{trouve} également le rang cherché, il met en forme et effectue les calculs d'images. \smallskip \cmaj{2.0.5} Le choix a été fait de faire les calculs en mode \ctex{float} pour éviter les dépassements de capacité de \ctex{xint} liés aux boucles\ldots \end{warningblock} \begin{PresCodeTexPL}{listing only} %commande pour calculer et formater \CalculTermeRecurrence[options]{fonction associée} %mise en forme de la conclusion d'un seuil \SolutionSeuil[options]{fonction associée}{seuil} \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour la commande du calcul d'un terme : \begin{itemize} \item la clé \Cle{No} qui est le rang initial de la suite ; \item la clé \Cle{UNo} qui est le terme initial de la suite ; \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{3} \item la clé \Cle{N} qui est l'indice du terme à calculer. \end{itemize} \smallskip L'argument \textit{obligatoire} est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$. \end{cautionblock} \begin{PresCodeTexPL}{listing only} Avec $\begin{dcases} u_0 = 50 \\ u_{n+1}=\dfrac{1}{u_n+2} \end{dcases}$. On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$. On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$. On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} Avec $u_0 = 50$ et $u_{n+1}=\dfrac{1}{u_n+2}$. \smallskip On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$ \hfill~sortie par défaut. \smallskip On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-4}$. \smallskip On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-6}$. \end{PresCodeSortiePL} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour la commande du seuil : \begin{itemize} \item la clé \Cle{NomSuite} qui est le nom de la suite ;\hfill~défaut \Cle{u} \item la clé \Cle{No} qui est le rang initial de la suite ; \item la clé \Cle{UNo} qui est le terme initial de la suite ; %\item la clé \Cle{SolN} qui est la valeur de l'indice cherché ; \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{2} \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15} \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false} \item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false} \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début ;\hfill{}défaut \Cle{true} \item le booléen \Cle{Exact} qui affiche \ctex{=} au lieu de \ctex{\textbackslash approx} ;\hfill{}défaut \Cle{false} \item le booléen \Cle{Conclusion} pour afficher la conclusion ou non ;\hfill{}défaut \Cle{true} \item la clé \Cle{Sens} parmi \Cle{< / > / <= / >=} pour indiquer le type de seuil.\hfill{}défaut \Cle{>} \end{itemize} \smallskip Le premier argument \textit{obligatoire} est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$, et le second est le seuil à dépasser. \end{cautionblock} \begin{PresCodePL}{} Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$, on cherche $n$ tel que $u_n > 5$.\\ \SolutionSeuil[Balayage,No=1,UNo=2]{1+(1+x**2)/(1+x)}{5}. \SolutionSeuil[Calculatrice,Precision=4,No=1,UNo=2,Conclusion=false]% {1+(1+x**2)/(1+x)}{5}. \end{PresCodePL} \subsection{Exemple d'utilisation} \begin{PresCodePL}{} Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$, on obtient le tableau de valeurs suivant : \begin{tabular}{c|c} $n$ & $u_n$ \\ \hline 1 & 2 \\ \xintFor* #1 in {\xintSeq{2}{7}} \do {#1 & \CalculTermeRecurrence[No=1,UNo=2,N=#1]{1+(1+x**2)/(1+x)} \\} \end{tabular}\\ \SolutionSeuil[Precision=4,No=1,UNo=2,Simple]{1+(1+x**2)/(1+x)}{10} (Ainsi $u_n > 10$ à partir de $n=\the\CompteurSeuil$) \end{PresCodePL} \newpage \section{Valeur approchée d'une intégrale}\label{calcintegr} \subsection{Idée} \begin{tipblock} \cmaj{2.6.1} L'idée est de proposer plusieurs approximations pour le calcul d'une intégrale, en utilisant : \begin{itemize} \item une méthode des rectangles (Gauche, Droite ou Milieu) ; \item la méthode des trapèzes ; \item la méthode de Simpson. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{warningblock} Il s'agit de valeurs approchées, mais la méthode de Simpson donne des valeurs satisfaisantes ! Les méthodes \textit{Rectangles} ou \textit{Trapèzes} seront plutôt utiles pour des résultats obtenus par algorithme par exemple. \end{warningblock} \begin{PresCodeTexPL}{listing only} \IntegraleApprochee[clés]{fonction}{a}{b} \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour la commande de calcul : \begin{itemize} \item le booléen \Cle{ResultatBrut} qui donne le résultat obtenu grâce à \ctex{xint} ; \hfill~défaut : \Cle{false} \item la clé \Cle{Methode}, parmi \Cle{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes / Simpson} pour spécifier la méthode utilisée ; \hfill~défaut : \Cle{Simpson} \item la clé \Cle{NbSubDiv} précise le nombre de subdivisions pour le calcul ; \hfill~défaut : \Cle{10} \item le booléen \Cle{AffFormule} qui affiche au préalable l'intégrale ;\hfill{}défaut \Cle{false} \item la clé \Cle{Expr} qui indique ce qui doit être affiché dans l'intégrale ; \hfill{}défaut \Cle{f(x)} \item la clé \Cle{Signe} qui indique le signe à afficher entre l'intégrale et le résultat ; \hfill{}défaut \Cle{\textbackslash approx} \item la clé \Cle{Variables} qui indique la variable à afficher dans le $\text{d}x$. \hfill{}défaut \Cle{x} \end{itemize} \smallskip Concernant les arguments obligatoires : \begin{itemize} \item le premier est la fonction à intégrer, en langage \ctex{xint}, avec comme variable $x$ ; \item les deux autres arguments sont les bornes de l'intégrale. \end{itemize} À noter que la commande, hormis dans sa version \Cle{ResultatBrut}, est à insérer de préférence dans un mode mathématique. \end{cautionblock} \begin{PresCodePL}{} On s'intéresse à $\displaystyle\int_4^{10} f(x) \,\text{d}x$ avec $f(x)=\sqrt{x}$ :\\ \begin{itemize}[itemsep=6pt,leftmargin=4cm] \item[\texttt{sortie par défaut} :] \IntegraleApprochee{sqrt(x)}{4}{10} \item[\texttt{résultat brut} :] \IntegraleApprochee[ResultatBrut]{sqrt(x)}{4}{10} \item[\texttt{résultat formaté} :] $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Precision=5,Expr={\sqrt{x}}]% {sqrt(x)}{4}{10}$ \end{itemize} \end{PresCodePL} \subsection{Exemples} \begin{PresCodeTexPL}{listing only} %tableau \IntegraleApprochee[NbSubDiv=10,ResultatBrut]{sqrt(x)}{4}{10} \IntegraleApprochee[NbSubDiv=10,Methode=RectanglesGauche,ResultatBrut]{sqrt(x)}{4}{10} \IntegraleApprochee[NbSubDiv=10,Methode=RectanglesDroite,ResultatBrut]{sqrt(x)}{4}{10} \IntegraleApprochee[NbSubDiv=10,Methode=RectanglesMilieu,ResultatBrut]{sqrt(x)}{4}{10} \IntegraleApprochee[NbSubDiv=10,Methode=Trapezes,ResultatBrut]{sqrt(x)}{4}{10} $\displaystyle\IntegraleApprochee[NbSubDiv=10,AffFormule,Expr={\sqrt{x}}]{sqrt(x)}{4}{10}$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tblr}[B]{hlines,vlines,colspec={Q[5cm,m,l]Q[5cm,m,l]},row{1}={halign=c,font=\bfseries\sffamily,bg=lightgray}} Méthode utilisée & Valeur brute obtenue \\ \SetCell[c=2]{c} $f(x)=\sqrt{x}$ et $n=10$ ; $\displaystyle\int_4^{10} f(x) \,\text{d}x$ & \\ Simpson & $\IntegraleApprochee[NbSubDiv=10,Methode=Simpson,ResultatBrut]{sqrt(x)}{4}{10}$ \\ rectangles Gauche & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesGauche,ResultatBrut]{sqrt(x)}{4}{10}$ \\ rectangles Droite & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesDroite,ResultatBrut]{sqrt(x)}{4}{10}$ \\ rectangles Milieu & $\IntegraleApprochee[NbSubDiv=10,Methode=RectanglesMilieu,ResultatBrut]{sqrt(x)}{4}{10}$ \\ trapèzes & $\IntegraleApprochee[NbSubDiv=10,Methode=Trapezes,ResultatBrut]{sqrt(x)}{4}{10}$ \\ \SetCell[c=2]{c} $\displaystyle\IntegraleApprochee[NbSubDiv=10,AffFormule,Expr={\sqrt{x}}]{sqrt(x)}{4}{10}$ & \\ \end{tblr}~~\includegraphics[height=3cm]{integr_nwks_a} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} %tableau \IntegraleApprochee[NbSubDiv=100,Methode=Simpson,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20} \IntegraleApprochee[NbSubDiv=100,Methode=RectanglesGauche,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20} \IntegraleApprochee[NbSubDiv=100,Methode=RectanglesDroite,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20} \IntegraleApprochee[NbSubDiv=100,Methode=RectanglesMilieu,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20} \IntegraleApprochee[NbSubDiv=100,Methode=Trapezes,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20} $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tblr}[B]{hlines,vlines,colspec={Q[5cm,m,l]Q[5cm,m,l]},row{1}={halign=c,font=\bfseries\sffamily,bg=lightgray}} Méthode utilisée & Valeur brute obtenue \\ \SetCell[c=2]{c} $f(x)=80x\,\text{e}^{-0,2x}$ et $n=100$ ; $\displaystyle\int_1^{20} f(x) \,\text{d}x$ & \\ Simpson & $\IntegraleApprochee[NbSubDiv=100,Methode=Simpson,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\ rectangles Gauche & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesGauche,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\ rectangles Droite & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesDroite,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\ rectangles Milieu & $\IntegraleApprochee[NbSubDiv=100,Methode=RectanglesMilieu,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\ trapèzes & $\IntegraleApprochee[NbSubDiv=100,Methode=Trapezes,ResultatBrut]{80*x*exp(-0.2*x)}{1}{20}$ \\ \SetCell[c=2]{c} $\displaystyle\IntegraleApprochee[NbSubDiv=100,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]{80*x*exp(-0.2*x)}{1}{20}$ & \\ \end{tblr}~~\includegraphics[height=3cm]{integr_nwks_b} \end{PresCodeSortiePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils graphiques} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils graphiques} \section{Repérage et tracé de courbes}\label{reperagetikz} \subsection{Idée} \begin{tipblock} \cmaj{2.1.1} L'idée est de proposer des commandes \textit{simplifiées} pour tracer un repère, en \TikZ, avec : \begin{itemize} \item axes et graduations, grille ; \item courbe. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Au niveau du code, il y aura donc plusieurs \textit{aspects} : \begin{itemize} \item le paramétrage de la fenêtre graphique directement dans la déclaration de l'environnement ; \item les commandes de tracés avec options et clés. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{PresCodeTexPL}{listing only} %version basique \begin{tikzpicture}[paramètres] %grille et axes \GrilleTikz[options][options grille ppale][options grille second.] \AxesTikz[options] \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs} %courbe \CourbeTikz[options]{fonction}{valxmin:valxmax} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %version simplifiée \begin{tikzpicture}[] %grille et axes \FenetreSimpleTikz[opt](opt axes){liste valx}{liste valy} %courbe \CourbeTikz[options]{fonction}{valxmin:valxmax} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \FenetreSimpleTikz{0,5,...,55}{0,30,...,210} %repère \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]% {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe \end{tikzpicture} \end{PresCodeSortiePL} \subsection{Commandes, clés et options} \begin{noteblock} Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici: \begin{itemize} \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3} \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3} \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0} \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1} \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5} \end{itemize} La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin};\text{ymin})$ et $(\text{xmax};\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(\text{xmin-Ox};\text{ymin-Oy})$ et $(\text{xmax-Ox};\text{ymax-Oy})$. \smallskip Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}. \end{noteblock} \begin{PresCodeTexPL}{listing only} %...code tikz \GrilleTikz[options][options grille ppale][options grille second.] \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de tracer une grille principale et/ou une grille secondaire : \begin{itemize} \item les premières \Cle{clés} sont les booléens \Cle{Affp} et \Cle{Affs} qui affichent ou non les grilles ;\hfill~défaut \Cle{true} \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \GrilleTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \GrilleTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} \pagebreak \begin{PresCodeTexPL}{listing only} %...code tikz \AxesTikz[options] \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de tracer les axes, avec des \Cle{clés} : \begin{itemize} \item \Cle{Epaisseur} qui est l'épaisseur des axes ; \hfill~défaut \Cle{1pt} \item \Cle{Police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} \item \cmaj{2.1.2} \Cle{ElargirOx} qui est le \% l'élargissement \Cle{global} ou \Cle{G/D} de l'axe $(Ox)$ ; \hfill~défaut \Cle{0/0.05} \item \cmaj{2.1.2} \Cle{ElargirOy} qui est le \% l'élargissement \Cle{global} ou \Cle{B/H} de l'axe $(Oy)$ ; \hfill~défaut \Cle{0/0.05} \item \Cle{Labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$} \item \Cle{Labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$} \item \Cle{AffLabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ; \hfill~défaut \Cle{vide} \item \Cle{PosLabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right} \item \Cle{PosLabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above} \item \Cle{EchelleFleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1} \item \Cle{TypeFleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{latex} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %code tikz \AxesTikz %code tikz \AxesTikz% [AffLabel=xy,Labelx={Nombre de jours},Labely={Nombre d'individus infectés, en centaines},% PosLabelx={above left},PosLabely={above right},% Police=\small\sffamily,ElargirOx=0,ElargirOy=0] \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \AxesTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \AxesTikz% [AffLabel=xy,Labelx={Nombre de jours}, Labely={Nombre d'individus infectés, en centaines},% PosLabelx={above left},PosLabely={above right},% ElargirOx=0,ElargirOy=0, Police=\small\sffamily] \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} \pagebreak \begin{PresCodeTexPL}{listing only} %...code tikz \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs} \end{PresCodeTexPL} \begin{cautionblock} Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions : \begin{itemize} \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt} \item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} \item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left} \item \Cle{HautGrad} qui est la hauteur des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt} \item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true} \item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true} \item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}) ; \hfill~défaut \Cle{false} \item \cmaj{2.5.6} le booléen \Cle{Trigo} (uniquement pour l'axe $(Ox)$) pour des graduations libres en radians ; \hfill~défaut \Cle{false} \item \cmaj{2.5.6} le booléen \Cle{Dfrac} (uniquement pour l'axe $(Ox)$ en \Cle{Trigo}) pour forcer les fractions en \textit{grand}. \hfill~défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %code tikz \AxexTikz[Police=\small]{0,5,...,55} \AxeyTikz[Police=\small]{0,30,...,210} %code tikz \AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55} \AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210} %des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; \AxexTikz[Police=\small]{0,5,...,55} \AxeyTikz[Police=\small]{0,30,...,210} \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; \AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55} \AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210} \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[x=2cm,y=1cm,xmin=0,xmax={2*pi},xgrille=0.5,xgrilles=0.25, ymin=-1.15,ymax=1.15,ygrille=0.5,ygrilles=0.25] \GrilleTikz \AxesTikz \AxexTikz[Trigo]{{pi/6},{pi/4},{pi/3},{pi/2},{2*pi/3},% {3*pi/4},{5*pi/6},pi,{7*pi/6},{5*pi/4}} \CourbeTikz[thick,blue,samples=250]{cos(deg(\x))}{0:2*pi} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture} [x=2cm,y=1cm,xmin=0,xmax={2*pi},xgrille=0.5,xgrilles=0.25, ymin=-1.15,ymax=1.15,ygrille=0.5,ygrilles=0.25] \GrilleTikz \AxesTikz \AxexTikz[Trigo]{{pi/6},{pi/4},{pi/3},{pi/2},{2*pi/3},% {3*pi/4},{5*pi/6},pi,{7*pi/6},{5*pi/4}} \CourbeTikz[thick,blue,samples=250]{cos(deg(\x))}{0:2*pi} \end{tikzpicture} \end{PresCodeSortiePL} \begin{noteblock} La clé \Cle{Trigo} utilise, en interne, une commande qui permet de \textit{transformer} les abscisses, données en langage \TikZ, en fraction en \LaTeX. \end{noteblock} \begin{PresCodePL}{} $\AffAngleRadian{0}$ \quad $\AffAngleRadian{pi}$ \quad $\AffAngleRadian{pi/4}$ \quad $\AffAngleRadian{2*pi/3}$ \quad $\AffAngleRadian{-2*pi/3}$ \quad $\AffAngleRadian*{-2*pi/3}$ \end{PresCodePL} \subsection{Commandes annexes} \begin{noteblock} Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont existent : \begin{itemize} \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ; \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ; \item \ctex{OrigineTikz} pour rajouter le libellé de l'origine si non affiché par les axes. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{PresCodeTexPL}{listing only} %code tikz \FenetreTikz %on restreint les tracés \FenetreSimpleTikz% [options](opt axes){valeurs Ox}{valeurs Oy} \end{PresCodeTexPL} \begin{tipblock} L'idée est de proposer, en \textit{complément}, une commande simplifiée pour tracer une courbe en \TikZ. \end{tipblock} \begin{PresCodeTexPL}{listing only} %...code tikz \CourbeTikz[options]{formule}{domaine} \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments : \begin{itemize} \item \Cle{optionnels} qui sont - en \TikZ{} - les paramètres du tracé ; \item le premier \textit{obligatoire}, est - en langage \TikZ{} - l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ; \item le second \textit{obligatoire} est le domaine du tracé, sous la forme \ctex{valxmin:valxmax}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy \FenetreSimpleTikz% {0,5,...,60}% {0,30,...,240} %repère \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]% {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture}% [x=0.1cm,y=0.0167cm, %unités xmin=0,xmax=60,xgrille=5,xgrilles=5,ymin=0,ymax=240,ygrille=30,ygrilles=30] \FenetreSimpleTikz% {0,5,...,60}{0,30,...,240} %repère \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]% {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe \end{tikzpicture} \end{PresCodeSortiePL} \subsection{Repère non centré en O} \begin{tipblock} Parfois on est amené à travailler dans des repères qui n'ont pas forcément pour origine $(0;0)$. De ce fait - pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} - il faut \textit{décaler les axes} pour se ramener à une origine en $O$. L'idée est donc d'utiliser les commandes précédentes, sans se soucier des éventuelles transformations ! \end{tipblock} \begin{PresCodePL}{} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2010,% xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1710,ygrille=10,ygrilles=5] \FenetreSimpleTikz{1992,1994,...,2008}{1640,1650,...,1700} \FenetreTikz \CourbeTikz[line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} \end{tikzpicture} \end{PresCodePL} \pagebreak \section{L'outil \og SplineTikz \fg} \subsection{Courbe d'interpolation} \begin{noteblock} On va utiliser les notions suivantes pour paramétrer le tracé \og automatique \fg{} grâce à \ctex{..controls} : % \begin{itemize} \item il faut rentrer les \textcolor{purple}{\textsf{points de contrôle}} ; \item il faut préciser les \textcolor{ForestGreen}{\textsf{pentes des tangentes}} (pour le moment on travaille avec les mêmes à gauche et à droite\ldots) ; \item on peut \og affiner \fg{} les portions de courbe en paramétrant des \textcolor{CadetBlue}{\textsf{coefficients}} (voir un peu plus loin\ldots). \end{itemize} \medskip Pour déclarer les paramètres : % \begin{itemize} \item liste des points de contrôle (minimum 2 !!) par : \verb|x1/y1/d1§x2/y2/d2§...| avec les points \pverb|(xi;yi)| et \vverb|f'(xi)=di| ; \item coefficients de contrôle par \verb|coeffs=...| : \begin{itemize} \item \averb|coeffs=x| pour mettre tous les coefficients à x ; \item \averb|coeffs=C1§C2§...| pour spécifier les coefficients par portion (donc il faut avoir autant de § que pour les points !) ; \item \averb|coeffs=C1G/C1D§...| pour spécifier les coefficients par portion et par partie gauche/droite ; \item on peut mixer avec \averb|coeffs=C1§C2G/C2D§...|. \end{itemize} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \subsection{Code, clés et options} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture} ... \SplineTikz[options]{liste} ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Certains paramètres et \Cle{clés} peuvent être gérés directement dans la commande \ctex{splinetikz} : % \begin{itemize} \item la couleur de la courbe par la {clé} \Cle{Couleur} ;\hfill{}défaut \Cle{red} \item l'épaisseur de la courbe par la {clé} \Cle{Epaisseur} ;\hfill{}défaut \Cle{1.25pt} \item du style supplémentaire pour la courbe peut être rajouté, grâce à la {clé} \Cle{Style} ;\hfill{}défaut \Cle{vide} \item les coefficients de \textit{compensation} gérés par la {clé} \Cle{Coeffs} ;\hfill{}défaut \Cle{3} \item les points de contrôle , affichés ou non par la {clé booléenne} \Cle{AffPoints} ;\hfill{}défaut \Cle{false} \item la taille des points de contrôle est géré par la {clé} \Cle{TaillePoints}.\hfill{}défaut \Cle{2pt} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \subsection{Compléments sur les coefficients de \og compensation \fg} \begin{tipblock} Le choix a été fait ici, pour \textit{simplifier} le code, le travailler sur des courbes de Bézier. Pour \textit{simplifier} la gestion des nombres dérivés, les points de contrôle sont gérés par leurs coordonnées \textit{polaires}, les \textsf{coefficients de compensation} servent donc -- grosso modo -- à gérer la position radiale. \smallskip Le coefficient \Cle{3} signifie que, pour une courbe de Bézier entre $x=a$ et $x=b$, les points de contrôles seront situés à une distance radiale de $\frac{b-a}{3}$. Pour \textit{écarter} les points de contrôle, on peut du coup \textit{réduire} le coefficient de compensation ! \medskip Pour des intervalles \textit{étroits}, la \textit{pente} peut paraître abrupte, et donc le(s) coefficient(s) peuvent être modifiés, de manière fine. \medskip Si jamais il existe (un ou) des points \textit{anguleux}, le plus simple est de créer les splines en plusieurs fois. \end{tipblock} \subsection{Exemples} \begin{PresCodePL}{tikz lower} %code tikz \def\x{0.9cm}\def\y{0.9cm} \def\xmin{-1}\def\xmax{11}\def\xgrille{1}\def\xgrilles{0.5} \def\ymin{-1}\def\ymax{5}\def\ygrille{1}\def\ygrilles{0.5} %axes et grilles \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); \draw[line width=1.5pt,->,gray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,gray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} \draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ; \draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ; %splines \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \SplineTikz[AffPoints,Coeffs=3,Couleur=red]{\LISTE} \end{PresCodePL} \begin{noteblock} Avec des explications utiles à la compréhension : \begin{center} \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5] \genfenetre \SplineTikz[AffPoints]{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \gennotice \gentangentes \listecoeffs{3}{3}{3}{3} \end{tikzpicture} \end{center} \end{noteblock} \subsection{Avec une gestion plus fine des \og coefficients \fg} \begin{noteblock} Dans la majorité des cas, le \textit{coefficient} \textcircled{3} permet d'obtenir une courbe (ou une portion) très satisfaisante ! Dans certains cas, il se peut que la portion paraisse un peu trop \og abrupte \fg{}. On peut dans ce cas \textit{jouer} sur les coefficients de cette portion pour \textit{arrondir} un peu tout cela (\textit{ie} diminuer le \textsf{coeff}\ldots)! \begin{center} \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=7,ygrille=1,ygrilles=0.5] \genfenetre \draw (1,-4pt) node[below,font=\sffamily] {1} ; \draw (-4pt,1) node[left,font=\sffamily] {1} ; \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} \gennotice \listecoeffs{3/3}{3/3}{3/3}{2/1} \end{tikzpicture} \end{center} \end{noteblock} \begin{PresCodeTexPL}{listing only} ... %splines \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} ... \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[x=0.9cm,y=0.9cm,xmin=-1,xmax=11,xgrille=1,xgrilles=0.5,ymin=-1,ymax=5,ygrille=1,ygrilles=0.5] %axes et grilles \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); \draw[line width=1.5pt,->,gray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,gray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,1,...,10} {\draw[gray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,1,...,4} {\draw[gray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} \draw[darkgray] (1,-4pt) node[below,font=\sffamily] {1} ; \draw[darkgray] (-4pt,1) node[left,font=\sffamily] {1} ; \def\LISTE{0/1/0§4/3.667/-0.333§7.5/1.75/0§9/2/-0.333§10/0/-10} \SplineTikz[AffPoints,Coeffs=3§3§3§2/1]{\LISTE} \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \subsection{Conclusion} \begin{noteblock} Le plus \og simple \fg{} est donc: % \begin{itemize} \item de déclarer la liste des points de contrôle, grâce à \ctex{\textbackslash def\textbackslash LISTE\{x1/y1/d1§x2/y2/d2§...\}} ; \item de saisir la commande \ctex{\textbackslash SplineTikz[...]\{\textbackslash LISTE\}} ; \item d'ajuster les options et coefficients en fonction du rendu ! \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \newpage \section{L'outil \og TangenteTikz \fg{}} \subsection{Définitions} \begin{tipblock} En parallèle de l'outil \ctex{SplineTikz}, il existe l'outil \ctex{TangenteTikz} qui va permettre de tracer des tangentes à l'aide de la liste de points précédemment définie pour l'outil \ctex{SplineTikz}. \smallskip NB : il peut fonctionner indépendamment de l'outil \ctex{SplineTikz} puisque la liste des points de travail est gérée de manière autonome ! \end{tipblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture} ... \TangenteTikz[options]{liste} ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Cela permet de tracer la tangente : % \begin{itemize} \item au point numéro \Cle{Point} de la liste \Cle{liste}, de coordonnées \textsf{xi/yi} avec la pente \textsf{di} ; \item avec une épaisseur de \Cle{Epaisseur}, une couleur \Cle{Couleur} et un style additionnel \Cle{Style} ; \item en la traçant à partir de \Cle{xl} avant \textsf{xi} et jusqu'à \Cle{xr} après \textsf{xi}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \subsection{Exemple et illustration} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture} ... \def\LISTE{0/1.5/0§1/2/-0.333§2/0/-5} %spline \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{\LISTE} %tangente \TangenteTikz[xl=0,xr=0.5,Couleur=ForestGreen,Style=dashed]{\LISTE} \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{\LISTE} \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{\LISTE} ... \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} On obtient le résultat suivant (avec les éléments rajoutés utiles à la compréhension) : \begin{center} \begin{tikzpicture}[x=3cm,y=2cm,xmin=0,xmax=2,xgrilles=0.25,ymin=0,ymax=2.25,ygrilles=0.25] \tikzset{noeudexpl/.style={purple,font=\sffamily\small}} \tgrilles \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ; \draw (0,1.5) node[noeudexpl,below] {point 1} ; \draw (1,2) node[noeudexpl,below] {point 2} ; \draw (2,0) node[noeudexpl,above left] {point 3} ; %spline \SplineTikz[AffPoints,Coeffs=3§2,Couleur=red]{0/1.5/0§1/2/-0.333§2/0/-5} %tangente \TangenteTikz[xl=0,xr=0.5,Couleur=ForestGreen,Style=dashed]{0/1.5/0§1/2/-0.333§2/0/-5} \TangenteTikz[xl=0.5,xr=0.75,Couleur=orange,Style=dotted,Point=2]{0/1.5/0§1/2/-0.333§2/0/-5} \TangenteTikz[xl=0.33,xr=0,Couleur=blue,Style=densely dashed,Point=3]{0/1.5/0§1/2/-0.333§2/0/-5} %explications \draw[<->,very thick,darkgray] (0.5,2.2)--(1,2.2) node[midway,above,font=\sffamily] {xl} ; \draw[<->,very thick,darkgray] (1,2.2)--(1.75,2.2) node[midway,above,font=\sffamily] {xr}; \draw[thick,darkgray] (1,4pt)--(1,-4pt) node[below,font=\sffamily] {1} ; \draw[thick,darkgray] (4pt,1)--(-4pt,1) node[left,font=\sffamily] {1} ; \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \subsection{Exemple avec les deux outils, et \og personnalisation \fg} \begin{PresCodeTexPL}{listing only} \tikzset{% 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,unit/.default=1,xunit=1, yunit/.store in=\yunit,unit/.default=1,yunit=1 } \begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1] \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ; \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} %la liste pour la courbe d'interpolation \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6} %les tangentes "stylisées" \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste} \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste} \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste} \TangenteTikz[xl=2,xr=0,Couleur=ForestGreen,Point=5]{\liste} %la courbe en elle-même \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[x=0.5cm,y=0.5cm,xmin=0,xmax=16,xgrilles=1,ymin=0,ymax=16,ygrilles=1] \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.3pt,lightgray] (\xmin,\ymin) grid (\xmax,\ymax) ; \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,2,...,14} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} \draw[darkgray] (2,-4pt) node[below,font=\sffamily] {2} ; \draw[darkgray] (-4pt,2) node[left,font=\sffamily] {2} ; %la liste pour la courbe d'interpolation \def\liste{0/6/3§3/11/0§7/3/0§10/0/0§14/14/6} %les tangentes "stylisées" \TangenteTikz[xl=0,xr=1,Couleur=blue,Style=dashed]{\liste} \TangenteTikz[xl=2,xr=2,Couleur=purple,Style=dotted,Point=2]{\liste} \TangenteTikz[xl=2,xr=2,Couleur=orange,Style=<->,Point=3]{\liste} \TangenteTikz[xl=2,xr=0,Couleur=ForestGreen,Point=5]{\liste} %la courbe en elle-même \SplineTikz[AffPoints,Coeffs=3,Couleur=cyan,Style=densely dotted]{\liste} \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \newpage \section{Petits schémas pour le signe d'une fonction affine ou d'un trinôme}\label{aidesigne} \subsection{Idée} \begin{tipblock} L'idée est d'obtenir une commande pour tracer (en \TikZ) un petit schéma pour \textit{visualiser} le signe d'une fonction affine ou d'un trinôme. Le code est largement inspiré de celui du package \ctex{tnsana} même si la philosophie est un peu différente. \smallskip Comme pour les autres commandes \TikZ, l'idée est de laisser la possibilité à l'utilisateur de définir et créer son environnement \TikZ, et d'insérer la commande \ctex{MiniSchemaSignes} pour afficher le schéma. \smallskip \cmaj{2.1.9} Il est à noter que la version \textit{étoilée} rend la commande autonome, sans besoin de créer l'environnement \TikZ. \end{tipblock} \begin{PresCodePL}{} \MiniSchemaSignes* \end{PresCodePL} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[] \MiniSchemaSignes[clés] \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} {\tikz[options] \MiniSchemaSignes[clés]} %ou \MiniSchemaSignes*[clés] \end{PresCodeTexPL} \begin{cautionblock} \cmaj{2.1.9} La version \textit{étoilée} de la commande permet de basculer en mode \textit{autonome}, c'est-à-dire sans avoir besoin de créer son environnement \TikZ. \smallskip Le premier argument, \textit{optionnel} et entre \textsf{[...]}, contient les \Cle{Clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Code} qui permet de définir le type d'expression (voir en-dessous) ;\hfill{}défaut \Cle{da+} \item la clé \Cle{Couleur} qui donne la couleur de la représentation ;\hfill{}défaut \Cle{red} \item la clé \Cle{Racines} qui définit la ou les racines ;\hfill{}défaut \Cle{2} \item la clé \Cle{Largeur} qui est la largeur du schéma ;\hfill{}défaut \Cle{2} \item la clé \Cle{Hauteur} qui est la hauteur du schéma ;\hfill{}défaut \Cle{1} \item un booléen \Cle{Cadre} qui affiche un cadre autour du schéma.\hfill{}défaut \Cle{true} \end{itemize} Le second argument, \textit{optionnel} et entre \textsf{<...>}, permet de spécifier (pour la commande \textit{étoilée}), des options à passer à l'environnement \ctex{tikzpicture}. \end{cautionblock} \begin{cautionblock} Pour la clé \Cle{code}, il est construit par le type (\textsf{a} pour affine ou \textsf{p} comme parabole) puis les éléments caractéristiques (\textsf{a+} pour $a>0$, \textsf{d0} pour $\Delta=0$, etc) : \begin{itemize} \item \Cle{Code=da+} := une droite croissante ; \item \Cle{Code=da-} := une droite décroissante ; \item \Cle{Code=pa+d+} := une parabole \textit{souriante} avec deux racines ; \item etc \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \pagebreak \begin{PresCodeTexPL}{listing only} \begin{center} \MiniSchemaSignes*[Code=da+,Racines=-4] ~~~~ \MiniSchemaSignes*[Code=da-,Racines={h},Couleur=blue,Largeur=3,Cadre=false] \end{center} % \begin{center} \MiniSchemaSignes*[Code=pa+d+,Racines={1/2},Couleur=orange] ~~~~ \MiniSchemaSignes*[Code=pa+d-,Couleur=ForestGreen] ~~~~ \MiniSchemaSignes*[Code=pa+d0,Racines={5},Couleur=purple] \end{center} % \begin{center} \MiniSchemaSignes*[Code=pa-d+,Racines={-3/0},Couleur=yellow] ~~~~ \MiniSchemaSignes*[Code=pa-d-,Couleur=cyan] ~~~~ \MiniSchemaSignes*[Code=pa-d0,Racines={-1},Couleur=magenta] \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \MiniSchemaSignes*[Code=da+,Racines=-4] ~~~~ \MiniSchemaSignes*[Code=da-,Racines={h},Couleur=blue,Largeur=3,Cadre=false] \end{center} % \begin{center} \MiniSchemaSignes*[Code=pa+d+,Racines={1/2},Couleur=orange] ~~~~ \MiniSchemaSignes*[Code=pa+d-,Couleur=ForestGreen] ~~~~ \MiniSchemaSignes*[Code=pa+d0,Racines={5},Couleur=purple] \end{center} % \begin{center} \MiniSchemaSignes*[Code=pa-d+,Racines={-3/0},Couleur=yellow] ~~~~ \MiniSchemaSignes*[Code=pa-d-,Couleur=cyan] ~~~~ \MiniSchemaSignes*[Code=pa-d0,Racines={-1},Couleur=magenta] \end{center} \end{PresCodeSortiePL} \begin{PresCodePL}{} \begin{tikzpicture} \MiniSchemaSignes[Largeur=3.5,Hauteur=1.5,Code=da-,Racines=\tfrac{-b}{a},Couleur=Plum] \end{tikzpicture} \MiniSchemaSignes*[Code=da-,Racines=\tfrac{-b}{a},Couleur=Plum] \end{PresCodePL} \pagebreak \subsection{Intégration avec tkz-tab} \begin{tipblock} Ces schémas peuvent être de plus utilisés, via la commande \ctex{MiniSchemaSignesTkzTab} pour illustrer les signes obtenus dans un tableau de signes présentés grâce au package \ctex{tkz-tab}. Pour des raisons internes, le fonctionnement de la commande \ctex{MiniSchemaSignesTkzTab} est légèrement différent et, pour des raisons que j'ignore, le code est légèrement différent en \textit{interne} (avec une \textit{déconnexion} des caractères \textsf{:} et \textsf{\textbackslash}) pour que la librairie \TikZ{} \ctex{calc} puisse fonctionner (mystère pour le moment\ldots) \end{tipblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture} %commandes tkztab \MiniSchemaSignesTkzTab[options]{numligne}[echelle][décalage horizontal] \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Les \Cle{Clés} pour le premier argument \textit{optionnel} sont les mêmes que pour la version \textit{initiale} de la commande précédente. En ce qui concerne les autres arguments : \begin{itemize} \item le deuxième argument, \textit{obligatoire}, est le numéro de la ligne à côté de laquelle placer le schéma ; \item le troisième argument, \textit{optionnel} et valant \Cle{0.85} par défaut, est l'échelle à appliquer sur l'ensemble du schéma (à ajuster en fonction de la hauteur de la ligne) ; \item le quatrième argument, \textit{optionnel} et valant \Cle{1.5} par défait, est lié à l'écart horizontal entre le bord de la ligne du tableau et le schéma. \end{itemize} À noter que si l'un des arguments optionnels (le n°3 et/ou le n°4) sont utilisés, il vaut mieux préciser les 2 ! \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture} \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$} \tkzTabLine{,+,t,+,z,-,} \tkzTabLine{,-,z,+,t,+,} \tkzTabLine{,-,z,+,z,-,} \MiniSchemaSignesTkzTab[Code=da-,Racines={\tfrac{5}{2}},Couleur=blue]{1} \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2} \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/{\tfrac{5}{2}}},Couleur=orange]% {3}[0.85][2] \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture} \tkzTabInit[]{$x$/1,$-2x+5$/1,$2x+4$/1,$p(x)$/1}{$-\infty$,$-2$,${2,5}$,$+\infty$} \tkzTabLine{,+,t,+,z,-,} \tkzTabLine{,-,z,+,t,+,} \tkzTabLine{,-,z,+,z,-,} \MiniSchemaSignesTkzTab[Code=da-,Racines={\tfrac{5}{2}},Couleur=blue]{1} \MiniSchemaSignesTkzTab[Code=da+,Racines={-2},Couleur=purple]{2} \MiniSchemaSignesTkzTab[Code=pa-d+,Racines={-2/{\tfrac{5}{2}}},Couleur=orange]{3}[0.85][2] \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \newpage \section{Suites récurrentes et \og toile \fg}\label{recurr} \subsection{Idée} \begin{tipblock} L'idée est d'obtenir une commande pour tracer (en \TikZ) la \og toile \fg{} permettant d'obtenir -- graphiquement -- les termes d'une suite récurrente définie par une relation $u_{n+1}=f(u_n)$. \smallskip Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{ToileRecurrence} pour afficher la \og toile \fg. \end{tipblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} ... \begin{tikzpicture}[options] ... \ToileRecurrence[clés][options du tracé][options supplémentaires des termes] ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{arguments} (optionnels) sont disponibles : \begin{itemize} \item le premier argument optionnel définit les \Cle{Clés} de la commande : \begin{itemize} \item la clé \Cle{Fct} qui définit la fonction $f$ ;\hfill{}défaut \Cle{vide} \item la clé \Cle{Nom} qui est le \textit{nom} de la suite ;\hfill{}défaut \Cle{u} \item la clé \Cle{No} qui est l'indice initial ;\hfill{}défaut \Cle{0} \item la clé \Cle{Uno} qui est la valeur du terme initial ;\hfill{}défaut \Cle{vide} \item la clé \Cle{Nb} qui est le nombre de termes à construire ;\hfill{}défaut \Cle{5} \item la clé \Cle{PosLabel} qui est le placement des labels par rapport à l'axe $(Ox)$ ;\hfill{}défaut \Cle{below} \item la clé \Cle{DecalLabel} qui correspond au décalage des labels par rapport aux abscisses ; \hfill{}défaut \Cle{6pt} \item la clé \Cle{TailleLabel} qui correspond à la taille des labels ;\hfill{}défaut \Cle{small} \item un booléen \Cle{AffTermes} qui permet d'afficher les termes de la suite sur l'axe $(Ox)$. \hfill{}défaut \Cle{true} \end{itemize} \item le deuxième argument optionnel concerne les \Cle{options} du tracé de l'\textit{escalier} en \textit{langage \TikZ} ; \hfill{}défaut \Cle{thick,color=magenta} ; \item le troisième argument optionnel concerne les \Cle{options} du tracé des termes en \textit{langage \TikZ}. \hfill{}défaut \Cle{dotted}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Il est à noter que le \textsf{code} n'est pas autonome, et doit être intégré dans un environnement \ctex{tikzpicture}. \smallskip L'utilisateur est donc libre de définir ses styles pour l'affichage des éléments de son graphique, et il est libre également de rajouter des éléments en plus du tracé de la \textit{toile} ! \smallskip La macro ne permet -- pour le moment -- ni de tracer la bissectrice, ni de tracer la courbe$\ldots$ En effet, il y aurait trop d'options pour ces deux éléments, et l'idée est quand même de conserver une commande \textit{simple} ! Donc l'utilisateur se chargera de tracer et de personnaliser sa courbe et sa bissectrice ! \end{noteblock} \subsection{Exemples} \begin{noteblock} On va tracer la \textit{toile} des 4 premiers termes de la suite récurrente :\\ \hfill$\begin{dcases} u_1 = 1 \\ u_{n+1} = \sqrt{5u_n}+1 \text{ pour tout entier } n \geqslant 1\end{dcases}$.\hfill~ \end{noteblock} \begin{PresCodePL}{tikz lower} %code tikz \def\x{1.5cm}\def\y{1.5cm} \def\xmin{0}\def\xmax{10}\def\xgrille{1}\def\xgrilles{0.5} \def\ymin{0}\def\ymax{8}\def\ygrille{1}\def\ygrilles{0.5} %axes et grilles \draw[xstep=\xgrilles,ystep=\ygrilles,line width=0.6pt,lightgray!50] (\xmin,\ymin) grid (\xmax,\ymax); \draw[line width=1.5pt,->,darkgray,>=latex] (\xmin,0)--(\xmax,0) ; \draw[line width=1.5pt,->,darkgray,>=latex] (0,\ymin)--(0,\ymax) ; \foreach \x in {0,1,...,9} {\draw[darkgray,line width=1.5pt] (\x,4pt) -- (\x,-4pt) ;} \foreach \y in {0,1,...,7} {\draw[darkgray,line width=1.5pt] (4pt,\y) -- (-4pt,\y) ;} %fonction définie et réutilisable \def\f{sqrt(5*\x)+1} %toile \ToileRecurrence[Fct={\f},No=1,Uno=1,Nb=4,DecalLabel=4pt] %éléments supplémentaires \draw[very thick,blue,domain=0:8,samples=250] plot (\x,{\f}) ; \draw[very thick,ForestGreen,domain=0:8,samples=2] plot (\x,\x) ; \end{PresCodePL} \begin{noteblock} Peut-être que -- ultérieurement -- des options \textit{booléennes} seront disponibles pour un tracé \textit{générique} de la courbe et de la bissectrice, mais pour le moment la \textsf{macro} ne fait \textit{que} l'escalier. \end{noteblock} \subsection{Influence des paramètres} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture}[x=4cm,y=3cm] %axes + grilles + graduations ... %fonction \def\f{-0.25*\x*\x+\x} %tracés \begin{scope} \clip (0,0) rectangle (2.5,1.25) ; \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ; \end{scope} \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt] \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[x=4cm,y=3cm] \draw[xstep=0.25,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,1.25); \draw[thick,->,>=latex] (0,0)--(2.5,0) ; \draw[thick,->,>=latex] (0,0)--(0,1.25) ; \foreach \x in {0,1,2} \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}} ; \foreach \y in {0,0.5,1.0} \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}} ; \draw[line width=1.25pt,red](0,0) -- (1.25,1.25) ; %fonction \def\f{-0.25*\x*\x+\x} %tracés \begin{scope} \clip (0,0) rectangle (2.5,1.25) ; \draw[line width=1.25pt,blue,domain=0:2.5,samples=200] plot (\x,{\f}) ; \end{scope} \ToileRecurrence[Fct={\f},No=0,Uno=2,Nb=5,PosLabel=above right,DecalLabel=0pt] \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture}[x=5cm,y=1.5cm] ... \def\f{1+1/\x} \ToileRecurrence% [Fct={\f},No=0,Uno=1,Nb=7,PosLabel=above right,DecalLabel=0pt,AffTermes=false]% [line width=1.25pt,ForestGreen,densely dashed][] \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x}); \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f}); \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[x=5cm,y=1.5cm] %axes et grille \draw[xstep=0.5,ystep=0.25,line width=0.3pt,lightgray!50] (0,0) grid (2.5,2.25); \draw[thick,->,>=latex] (0,0)--(2.5,0) ; \draw[thick,->,>=latex] (0,0)--(0,2.25) ; \foreach \x in {0,0.5,...,2} \draw[line width=1.25pt] (\x,4pt) -- (\x,-4pt) node[below] {\num{\x}}; \foreach \y in {0,0.5,...,2} \draw[line width=1.25pt] (4pt,\y) -- (-4pt,\y) node[left] {\num{\y}}; %fonction \def\f{1+1/\x} %tracés \ToileRecurrence% [Fct={\f},No=0,Uno=1,Nb=7,PosLabel=above right,DecalLabel=0pt,AffTermes=false]% [line width=1.25pt,ForestGreen,densely dashed][] \draw[line width=1.25pt,blue,domain=0:2.25,samples=2] plot(\x,{\x}); \draw[line width=1.25pt,red,domain=0.8:2.5,samples=250] plot(\x,{\f}); \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \newpage \section{Méthodes graphiques et intégrales}\label{integrtikz} \subsection{Idée} \begin{tipblock} \cmaj{2.6.1} L'idée est de proposer plusieurs méthodes graphiques pour illustrer graphiquement une intégrale, via : \begin{itemize} \item une méthode des rectangles (Gauche, Droite ou Milieu) ; \item la méthode des trapèzes. \end{itemize} La commande n'est pas autonome, elle est de ce fait à être placée dans un environnement \ctex{tikzpicture}. \end{tipblock} \begin{PresCodeTexPL}{listing only} %commande pour déclarer une fonction réutilisable \DeclareFonctionTikz[nom]{expr} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %environnement tikz \IntegraleApprocheeTikz[clés]{nom_fonction}{a}{b} \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour la commande : \begin{itemize} \item la clé \Cle{Epaisseur} pour l'épaisseur des \og figures \fg{} ; \hfill~défaut : \Cle{semithick} \item la clé \Cle{Couleur} pour la couleur des \og figures \fg{} ; \hfill~défaut : \Cle{red} \item le booléen \Cle{Remplir}, pour remplir les \og figures \fg{} ; \hfill~défaut : \Cle{true} \item la clé \Cle{Opacite} pour l'opacité du remplissage des \og figures \fg{} ; \hfill~défaut : \Cle{0.25} \item la clé \Cle{CouleurRemplissage} pour la couleur de remplissage des \og figures \fg{} ; \hfill~défaut : \Cle{Couleur!25} \item la clé \Cle{Methode}, parmi \Cle{RectanglesGauche / RectanglesDroite / RectanglesMilieu / Trapezes} pour spécifier la méthode utilisée ; \hfill~défaut : \Cle{RectanglesGauche} \item la clé \Cle{NbSubDiv} précise le nombre de \og figures \fg{}. \hfill~défaut : \Cle{10} \end{itemize} \smallskip Concernant les arguments obligatoires : \begin{itemize} \item le premier est la fonction , déclarée au préalable ; \item les deux autres arguments sont les bornes de l'intégrale. \end{itemize} Les commandes graphiques de \ctex{Proflycee} peuvent être utilisées pour configure la fenêtre ! \end{cautionblock} \begin{PresCodePL}{} \begin{tikzpicture}% [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10] \DeclareFonctionTikz{80*\x*exp(-0.2*\x)} \FenetreSimpleTikz{0,2,...,20}{0,20,...,160} \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20} \IntegraleApprocheeTikz{f}{1}{20} \draw[red] (10,160) node[below right] {$\displaystyle% \IntegraleApprochee[Methode=RectanglesGauche,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$} ; \end{tikzpicture} \end{PresCodePL} \begin{PresCodePL}{} \begin{tikzpicture}% [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10] \DeclareFonctionTikz{80*\x*exp(-0.2*\x)} \FenetreSimpleTikz{0,2,...,20}{0,20,...,160} \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20} \IntegraleApprocheeTikz[NbSubDiv=76]{f}{1}{20} \draw[red] (10,160) node[below right] {$\displaystyle\IntegraleApprochee% [NbSubDiv=76,Methode=RectanglesGauche,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$} ; \end{tikzpicture} \end{PresCodePL} \pagebreak \subsection{Exemples} \begin{PresCodePL}{} \begin{tikzpicture}% [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10] \DeclareFonctionTikz{80*\x*exp(-0.2*\x)} \FenetreSimpleTikz{0,2,...,20}{0,20,...,160} \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20} \IntegraleApprocheeTikz[Methode=RectanglesDroite,Couleur=green]{f}{1}{20} \draw[green] (10,160) node[below right] {$\displaystyle\IntegraleApprochee% [Methode=RectanglesDroite,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$} ; \end{tikzpicture} \end{PresCodePL} \begin{PresCodePL}{} \begin{tikzpicture}% [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10] \DeclareFonctionTikz{80*\x*exp(-0.2*\x)} \FenetreSimpleTikz{0,2,...,20}{0,20,...,160} \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20} \IntegraleApprocheeTikz[Methode=RectanglesMilieu,Couleur=purple]{f}{1}{20} \draw[purple] (10,160) node[below right] {$\displaystyle\IntegraleApprochee% [Methode=RectanglesMilieu,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$} ; \end{tikzpicture} \end{PresCodePL} \begin{PresCodePL}{} \begin{tikzpicture}% [x=0.66cm,y=0.033cm,xmin=0,xmax=21,xgrille=2,xgrilles=1,ymin=0,ymax=160,ygrille=20,ygrilles=10] \DeclareFonctionTikz{80*\x*exp(-0.2*\x)} \FenetreSimpleTikz{0,2,...,20}{0,20,...,160} \CourbeTikz[very thick,samples=500,blue]{f(\x)}{1:20} \IntegraleApprocheeTikz[Methode=Trapezes,Couleur=orange]{f}{1}{20} \draw[orange] (10,160) node[below right] {$\displaystyle\IntegraleApprochee% [Methode=Trapezes,AffFormule,Expr={80x\,\text{e}^{-0,2x}}]% {80*x*exp(-0.2*x)}{1}{20}$} ; \end{tikzpicture} \end{PresCodePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Présentation de codes} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Présentation de codes} \section{Code Python \og simple \fg{} via le package listings}\label{pythonsimple} \subsection{Introduction} \begin{tipblock} Le {package} \ctex{listings} permet d'insérer et de formater du code, notamment du code \textsf{Python}. En \textit{partenariat} avec \ctex{tcolorbox}, on peut donc présenter \textit{joliment} du code \textsf{Python} ! \end{tipblock} \begin{noteblock} Le package \ctex{listings} ne nécessite pas de compilation particulière, au contraire d'autres (comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}) qui seront présentés ultérieurement. \end{noteblock} \begin{noteblock} Les styles utilisés pour formater le code \textsf{Python} ne sont pas modifiables. Ils donnent un rendu proche de celui des packages comme \ctex{pythontex} ou \ctex{minted} ou \ctex{piton}. \smallskip Donc, si plusieurs \textit{méthodes} sont utilisées pour insérer du code \textsf{Python} (via les \textit{méthodes} suivantes), le rendu pourra être légèrement différent. \end{noteblock} \subsection{Commande et options} \begin{tipblock} L'environnement \ctex{CodePythonLst} permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}). \end{tipblock} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLst}(*)[largeur]{commandes tcbox} ... \end{CodePythonLst} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLstAlt}(*)[largeur]{commandes tcbox} ... \end{CodePythonLstAlt} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{arguments} sont disponibles : \begin{itemize} \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; \item le premier argument (\textit{optionnel}), concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} \item le second argument (\textit{obligatoire}), concerne des \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}, comme l'alignement. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{warningblock} Les environnements \ctex{DeclareTCBListing} créés par \ctex{tcolorbox} et \ctex{listings} ne sont pas compatibles avec les options \Cle{gobble} (pour supprimer les tabulations d'environnement), donc il faut bien penser à \og aligner \fg{} le code à gauche, pour éviter des tabulations non esthétiques ! \end{warningblock} \subsection{Insertion via un fichier \og externe \fg} \begin{tipblock} Pour des raison pratiques, il est parfois intéressant d'avoir le code \textsf{Python} dans un fichier externe au ficher \ctex{tex}, ou bien créé directement par le fichier \ctex{tex} (via \ctex{scontents}, notamment, mais non chargé par \ctex{ProfLycee}). Dans ce cas, il n'est pas nécessaire d'aligner le code \og à gauche \fg, en utilisant une commande alternative. \smallskip Si cette méthode est utilisée, il ne faut oublier de charger le package \ctex{scontents}. \end{tipblock} \begin{PresCodeTexPL}{listing only} \usepackage{scontents} %si script déclaré dans le fichier tex ... \CodePythonLstFichier(*)[largeur]{commandes tcbox}{script} \end{PresCodeTexPL} \subsection{Exemples} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLst}{} %les {}, même vides, sont nécessaires (bug avec # sinon !) #environnement par défaut nb = int(input("Saisir un entier positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif def f(x) : return x**2 \end{CodePythonLst} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythonLst}{} #environnement par défaut nb = int(input("Saisir un entier positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif def f(x) : return x**2 \end{CodePythonLst} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLstAlt}*[0.75\linewidth]{flush right} #largeur de 50%, sans numéro, et aligné à droite nb = int(input("Saisir un entier Python positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif def f(x) : return x**2 \end{CodePythonLstAlt} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythonLstAlt}*[0.75\linewidth]{flush right} #largeur de 50%, sans numéro, et aligné à droite nb = int(input("Saisir un entier Python positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif def f(x) : return x**2 \end{CodePythonLstAlt} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{scontents}[overwrite,write-out=testscript.py] # Calcul de la factorielle en langage Python def factorielle(x): if x < 2: return 1 else: return x * factorielle(x-1) # rapidité de tracé import matplotlib.pyplot as plt import time def trace_parabole_tableaux(): depart=time.clock() X = [] # Initialisation des listes Y = [] a = -2 h = 0.001 while a<2: X.append(a) # Ajout des valeurs Y.append(a*a) # au "bout" de X et Y a = a+h # Tracé de l'ensemble du tableau de valeurs plt.plot(X,Y,".b") fin=time.clock() return "Temps : " + str(fin-depart) + " s." \end{scontents} %environnement centré, avec numéros, largeur 9cm \CodePythonLstFichier[9cm]{center}{testscript.py} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{scontents}[overwrite,write-out=testscript.py] # Calcul de la factorielle en langage Python def factorielle(x): if x < 2: return 1 else: return x * factorielle(x-1) # rapidité de tracé import matplotlib.pyplot as plt import time def trace_parabole_tableaux(): depart=time.clock() X = [] # Initialisation des listes Y = [] a = -2 h = 0.001 while a<2: X.append(a) # Ajout des valeurs Y.append(a*a) # au "bout" de X et Y a = a+h # Tracé de l'ensemble du tableau de valeurs plt.plot(X,Y,".b") fin=time.clock() return "Temps : " + str(fin-depart) + " s." \end{scontents} \CodePythonLstFichier[9cm]{center}{testscript.py} \end{PresCodeSortiePL} \newpage \section{Code Python via le package piton}\label{pythonpiton} \subsection{Introduction} \begin{noteblock} \cmaj{2.5.0} Cette section nécessite de charger la \textsf{librairie} \clib{piton} dans le préambule. \cmaj{2.5.7} Une console \textsf{Python} est disponible, elle nécessite le package \ctex{pyluatex}, qui n'est pas chargé par \ctex{ProfLycee}, du fait de l'obligation de spécifier le \textit{chemin} pour l'exécutable \textsf{Python} ! \end{noteblock} \begin{PresCodeTexPL}{listing only} \usepackage[executable=...]{pyluatex} %si utilisation de la console REPL \useproflyclib{piton} \end{PresCodeTexPL} \begin{noteblock} La \textsf{librairie} \clib{piton} (qui charge \ctex{piton}, est compatible uniquement avec \hologo{LuaLaTeX} !) permet d'insérer du code \textsf{Python} avec une coloration syntaxique en utilisant la bibliothèque \textsf{Lua LPEG}. \smallskip En \textit{partenariat} avec \ctex{tcolorbox}, on peut avoir une présentation de code \textsf{Python} ! \smallskip Depuis la version \ctex{0.95} de \ctex{piton}, \Cle{left-margin=auto} est disponible et activée dans \ctex{ProfLycee}. Depuis la version \ctex{0.99} de \ctex{piton}, \Cle{break-lines} est disponible et activée dans \ctex{ProfLycee}. Depuis la version \ctex{1.0} de \ctex{piton}, \Cle{tabs-auto-gobble} est disponible et activée dans \ctex{ProfLycee}. \end{noteblock} \begin{warningblock} Le package \ctex{piton} nécessite donc obligatoirement l’emploi de \hologo{LuaLaTeX} ! Ce package n'est chargé que si la compilation détectée est en \hologo{LuaLaTeX} ! \smallskip \cmaj{2.5.7} L'utilisation de la console \textbf{REPL} nécessite une compilation en \ctex{--shell-escape} ou \ctex{-write18} ! \cmaj{2.5.7} Les packages \ctex{pyluatex} et \ctex{pythontex} utilisent des commandes de même nom, donc la présente documentation n'utilisera pas le package \ctex{pyluatex}. Une documentation annexe spécifique est disponible. \end{warningblock} \subsection{Présentation de code Python} \begin{PresCodeTexPL}{listing only} \begin{CodePiton}[options]{options tcbox} ... \end{CodePiton} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{clés} sont disponibles : \begin{itemize} \item la clé booléenne \Cle{Lignes} pour afficher ou non les numéros de lignes ; \hfill{}défaut \Cle{true} \item la clé booléenne \Cle{Gobble} pour activer les options liées au \textsf{gobble} ; \hfill{}défaut \Cle{true} \item la clé \Cle{Largeur} qui correspond à la largeur de la \ctex{tcbox} ; \hfill{}défaut \Cle{\textbackslash linewidth} \item la clé \Cle{TaillePolice} pour la taille des caractères ; \hfill{}défaut \Cle{\textbackslash footnotesize} \item la clé \Cle{Alignement} qui paramètre l'alignement de la \ctex{tcbox} ; \hfill{}défaut \Cle{center} \item \cmaj{2.5.7} la clé \Cle{Style} (parmi \Cle{Moderne / Classique}) pour changer le style ; \hfill{}défaut \Cle{Moderne} \item \cmaj{2.5.7} le boolén \Cle{Filigrane} pour afficher, le logo {\small \faPython} en filigrane ; \hfill{}défaut \Cle{false} \item \cmaj{2.5.7} le boolén \Cle{BarreTitre} (si \Cle{Style=Moderne}) pour afficher le titre ; \hfill{}défaut \Cle{true} \item \cmaj{2.5.7} le boolén \Cle{Cadre} (si \Cle{Style=Moderne}) pour afficher le cadre ; \hfill{}défaut \Cle{true} \item \cmaj{2.5.9} la clé \Cle{CouleurNombres} pour la couleur des nombres.\hfill{}défaut \Cle{orange} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Du fait du paramétrage des boîtes \ctex{tcolorbox}, il se peut que le rendu soit non conforme si elle doit être insérée dans une autre \ctex{tcolorbox}\ldots{} ! \end{noteblock} \begin{noteblock} Pour éviter des problèmes avec le code interprété par \textsf{piton}, les \ctex{\{\}} de l'argument obligatoire sont nécessaires au bon fonctionnement du code. \end{noteblock} \begin{PresCodeTexPL}{listing only} \begin{CodePiton}{} #environnement piton avec numéros de ligne, pleine largeur, style moderne def arctan(x,n=10): if x < 0: return -arctan(-x) #> (appel récursif) elif x > 1: return pi/2 - arctan(1/x) #> (autre appel récursif) else: return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) \end{CodePiton} \end{PresCodeTexPL} \begin{CodePiton}{} #environnement piton avec numéros de ligne, pleine largeur, style moderne def arctan(x,n=10): if x < 0: return -arctan(-x) #> (appel récursif) elif x > 1: return pi/2 - arctan(1/x) #> (autre appel récursif) else: return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) \end{CodePiton} \begin{PresCodeTexPL}{listing only} \begin{CodePiton}[Style=Classique,Filigrane]{} #environnement piton avec numéros, style classique, filigrane def arctan(x,n=10): if x < 0: return -arctan(-x) #> (appel récursif) elif x > 1: return pi/2 - arctan(1/x) #> (autre appel récursif) else: return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) \end{CodePiton} \end{PresCodeTexPL} \begin{CodePiton}[Style=Classique,Filigrane]{} #environnement piton avec numéros, style classique, filigrane def arctan(x,n=10): if x < 0: return -arctan(-x) #> (appel récursif) elif x > 1: return pi/2 - arctan(1/x) #> (autre appel récursif) else: return sum( (-1)**k/(2*k+1)*x**(2*k+1) for k in range(n) ) \end{CodePiton} \begin{PresCodeTexPL}{listing only} \begin{CodePiton}[Alignement=flush right,Largeur=13cm]{} def f(x) : return x**2 \end{CodePiton} \begin{CodePiton}[Alignement=flush left,Largeur=11cm]{} def f(x) : return x**2 \end{CodePiton} \begin{itemize} %Avec des indentations d'environnement : \item On essaye avec un \texttt{itemize} : % \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{} def f(x) : return x**2 \end{CodePiton} \item Et avec un autre \texttt{itemize} : % \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false,BarreTitre=false]{} #avec numéros, de largeur 12cm, centré, classique, sans cadre/titre def f(x) : return x**2 \end{CodePiton} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{PresCodeTexPL} \begin{CodePiton}[Alignement=flush right,Largeur=13cm]{} #avec numéros, de largeur 13cm, aligné à droite def f(x) : return x**2 \end{CodePiton} \begin{CodePiton}[Alignement=flush left,Largeur=11cm]{} #avec numéros, de largeur 11cm, aligné à gauche def f(x) : return x**2 \end{CodePiton} \begin{itemize} \item On essaye avec un \texttt{itemize} : % \begin{CodePiton}[Largeur=12cm,Style=Classique,Cadre=false]{} #avec numéros, de largeur 12cm, centré, classique, sans cadre def f(x) : return x**2 \end{CodePiton} \item Et avec un autre \texttt{itemize} : % \begin{CodePiton}[Largeur=12cm,Style=Classique,BarreTitre=false,Cadre=false]{} #avec numéros, de largeur 12cm, centré, classique, sans cadre/titre def f(x) : return x**2 \end{CodePiton} \end{itemize} \subsection{Console en partenariat avec Pyluatex} \begin{noteblock} \cmaj{2.5.7} Une console d'exécution (type REPL) est disponible, et la documentation associée est en marge de la présente documentation. \end{noteblock} \pagebreak \section{Code \& Console Python, via les packages Pythontex ou Minted} \subsection{Librairies} \begin{noteblock} \cmaj{2.5.0} Cette section nécessite de charger les librairies \clib{minted} et/ou \clib{pythontex} dans le préambule. \end{noteblock} \begin{PresCodeTexPL}{listing only} \useproflyclib{minted} \useproflyclib{pythontex} %ou \useproflyclib{minted,pythontex} \end{PresCodeTexPL} \subsection{Introduction} \begin{tipblock} \cmaj{2.5.0} La \textsf{librairie} \clib{pythontex} permet d'insérer et d'exécuter du code \textsf{Python}. On peut : \begin{itemize} \item \cmaj{2.5.8} présenter du code \textsf{Python} (deux styles disponibles) ; \item exécuter du code \textsf{Python} dans un environnement type \og console \fg{} ; \item charger du code \textsf{Python}, et éventuellement l'utiliser dans la console. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{warningblock} \textbf{Attention : }il faut dans ce cas une compilation en plusieurs étapes, comme par exemple \textsf{pdflatex puis pythontex puis pdflatex} ! Voir par exemple \url{http://lesmathsduyeti.fr/fr/informatique/latex/pythontex/} ! \end{warningblock} \begin{noteblock} Compte tenu de la \textit{relative complexité} pour gérer les options (par paramètres/clés\ldots) des \textit{tcbox} et des \textit{fancyvrb}, les style sont \og fixés \fg{} tels quels, et seules la taille et la position de la \textit{tcbox} sont modifiables. Si toutefois vous souhaitez personnaliser davantage, il faudra prendre le code correspondant et appliquer vos modifications ! Cela peut donner -- en tout cas -- des idées de personnalisation en ayant une base \textit{pré}existante ! \end{noteblock} \subsection{Présentation de code Python grâce au package pythontex}\label{pythontex} \begin{tipblock} L'environnement \ctex{CodePythontex} est donc lié à \ctex{pythontex} (chargé par \ctex{ProfLycee}, avec l'option \textit{autogobble}) permet de présenter du code \textsf{Python}, dans une \ctex{tcolorbox} avec deux styles particuliers (\cmaj{2.5.8}). \end{tipblock} \begin{PresCodeTexPL}{listing only} \begin{CodePythontex}[options]{} %les {} vides sont nécessaires ... \end{CodePythontex} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{CodePythontexAlt}[options]{} %les {} vides sont nécessaires ... \end{CodePythontexAlt} \end{PresCodeTexPL} \begin{cautionblock} Comme précédemment, des \Cle{Clés} qui permettent de \textit{légèrement} modifier le style : \begin{itemize} \item \Cle{Largeur} : largeur de la \textit{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} \item \Cle{Centre} : booléen pour centrer ou non la \textit{tcbox} ;\hfill{}défaut \Cle{false} \item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize} \item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1} \item \Cle{Lignes} : booléen pour afficher ou non les numéros de ligne.\hfill{}défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{CodePythontex}{} %bien mettre les {} !! #environnement Python(tex) par défaut def f(x) : return x**2 \end{CodePythontex} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythontex}{} #environnement Python(tex) par défaut def f(x) : return x**2 \end{CodePythontex} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{} #environnement Python(tex) classique, centré, sans lignes def f(x) : return x**2 \end{CodePythontexAlt} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythontexAlt}[Largeur=12cm,Centre,Lignes=false]{} #environnement Python(tex) classique, centré, sans lignes def f(x) : return x**2 \end{CodePythontexAlt} \end{PresCodeSortiePL} \subsection{Présentation de code Python via le package minted}\label{pytminted} \begin{noteblock} Pour celles et ceux qui ne sont pas à l'aise avec le {package} \ctex{pythontex} et notamment sa spécificité pour compiler, il existe le {package} \ctex{minted} qui permet de présenter du code, et notamment \textsf{Python}. \cmaj{2.5.8} Deux styles sont désormais disponibles. \cmaj{2.5.0} C'est donc la \textsf{librairie} \clib{minted} qu'il faudra charger. \end{noteblock} \begin{warningblock} Le package \ctex{minted} nécessite quand même une compilation avec l'option \ctex{--shell-escape} ou \ctex{-write18} ! \end{warningblock} \begin{PresCodeTexPL}{listing only} \begin{CodePythonMinted}(*)[largeur]{options} ... \end{CodePythonMinted} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonMintedAlt}(*)[largeur]{options} ... \end{CodePythonMintedAlt} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{arguments} sont disponibles : \begin{itemize} \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; \item le 1\up{er} argument \textit{optionnel} concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} \item le 2\up{nd} argument \textit{obligatoire} concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcbox}.\hfill{}défaut \Cle{vide} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{CodePythonMinted}[13cm]{center} #environnement Python(minted) centré avec numéros, de largeur 13cm def f(x) : return x**2 \end{CodePythonMinted} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythonMinted}[13cm]{center} #environnement Python(minted) centré avec numéros def f(x) : return x**2 \end{CodePythonMinted} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonMintedAlt}*[0.8\linewidth]{} #environnement Python(minted), style alt, sans numéro, de largeur 0.8\linewidth def f(x) : return x**2 \end{CodePythonMintedAlt} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythonMintedAlt}*[0.8\linewidth]{} #environnement Python(minted), style alt, sans numéro, 0.8\linewidth def f(x) : return x**2 \end{CodePythonMintedAlt} \end{PresCodeSortiePL} \subsection{Console d'exécution Python} \begin{tipblock} \ctex{pythontex} permet également de \textit{simuler} (en exécutant également !) du code \textsf{Python} dans une \textit{console}, avec la \textsf{librairie} \clib{pythontex} du coup ! C'est l'environnement \ctex{ConsolePythontex} qui permet de le faire. \end{tipblock} \begin{PresCodeTexPL}{listing only} \begin{ConsolePythontex}[options]{} %les {} vides sont nécessaires ... \end{ConsolePythontex} \end{PresCodeTexPL} \begin{cautionblock} Les \Cle{Clés} disponibles sont : \begin{itemize} \item \Cle{Largeur} : largeur de la \textit{console} ;\hfill{}défaut \Cle{\textbackslash linewidth} \item \Cle{Centre} : booléen pour centrer ou non la \textit{console} ;\hfill{}défaut \Cle{false} \item \Cle{TaillePolice} : taille des caractères ;\hfill{}défaut \Cle{\textbackslash footnotesize} \item \Cle{EspacementVertical} : option (\textit{stretch}) pour l'espacement entre les lignes ;\hfill{}défaut \Cle{1} \item \Cle{Label} : booléen pour afficher ou non le titre.\hfill{}défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{ConsolePythontex}{} #console Python(tex) par défaut from math import sqrt 1+1 sqrt(12) \end{ConsolePythontex} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \smallskip \begin{ConsolePythontex}{} #console Python(tex) par défaut from math import sqrt 1+1 sqrt(12) \end{ConsolePythontex} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{} #console Python(tex) centrée sans label, 14cm table = [[1,2],[3,4]] table[0][0] from random import randint tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)] tableau len(tableau), len(tableau[0]), tableau[1][4] \end{ConsolePythontex} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \smallskip \begin{ConsolePythontex}[Largeur=14cm,Label=false,Centre]{} #console Python(tex) centrée sans label, 14cm table = [[1,2],[3,4]] table[0][0] from random import randint tableau = [[randint(1,20) for j in range(0,6)] for i in range(0,3)] tableau len(tableau), len(tableau[0]), tableau[1][4] \end{ConsolePythontex} \end{PresCodeSortiePL} \begin{noteblock} Le package \ctex{pythontex} peut donc servir à présenter du code Python, comme \ctex{minted} ou \ctex{piton}, sa particularité est toutefois de pouvoir \textit{exécuter} du code \textsf{Python} pour une présentation de type \textit{console}. \end{noteblock} \newpage \section{Pseudo-Code}\label{pseudocode} \subsection{Introduction} \begin{noteblock} Le {package} \ctex{listings} permet d'insérer et de présenter du code, et avec \ctex{tcolorbox} on peut obtenir une présentation similaire à celle du code \textsf{Python}. Pour le moment la \textit{philosophie} de la commande est un peu différente de celle du code \textsf{Python}, avec son système de \Cle{Clés}. \end{noteblock} \subsection{Présentation de Pseudo-Code} \begin{tipblock} Les environnements \ctex{PseudoCode} ou \ctex{PseudoCodeAlt} permet de présenter du (pseudo-code) dans une \ctex{tcolorbox}, avec deux styles à disposition (\cmaj{2.5.8}). \end{tipblock} \begin{warningblock} De plus, le package \ctex{listings} avec \ctex{tcolorbox} ne permet pas de gérer le paramètre \textit{autogobble}, donc il faudra être vigilant quant à la position du code (pas de tabulation en fait\ldots) \end{warningblock} \begin{PresCodeTexPL}{listing only} \begin{PseudoCode}(*)[largeur]{options tcbox} %attention à l'indentation, gobble ne fonctionne pas... ... \end{PseudoCode} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{PseudoCodeAlt}(*)[largeur]{options tcbox} %attention à l'indentation, gobble ne fonctionne pas... ... \end{PseudoCodeAlt} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{arguments} (optionnels) sont disponibles : \begin{itemize} \item la version \textit{étoilée} qui permet de ne pas afficher les numéros de lignes ; \item le premier argument optionnel concerne la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{12cm} \item \cmaj{2.5.8} l'argument obligatoire entre \ctex{\{...\}} concerne les \Cle{options} de la \ctex{tcbox}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %en pas oublier les {}, même vides ! \begin{PseudoCode}{} %non centré, de largeur par défaut (12cm) avec lignes List = [...] # à déclarer au préalable n = longueur(List) Pour i allant de 0 à n-1 Faire Afficher(List[i]) FinPour \end{PseudoCode} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{PseudoCode}{} List = [...] # à déclarer au préalable n = longueur(List) Pour i allant de 0 à n-1 Faire Afficher(List[i]) FinPour \end{PseudoCode} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{PseudoCodeAlt}[15cm]{center} %centré, de largeur 15cm List = [...] # à déclarer au préalable n = longueur(List) Pour i allant de 0 à n-1 Faire Afficher(List[i]) FinPour \end{PseudoCodeAlt} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{PseudoCodeAlt}[15cm]{center} List = [...] # à déclarer au préalable n = longueur(List) Pour i allant de 0 à n-1 Faire Afficher(List[i]) FinPour \end{PseudoCodeAlt} \end{PresCodeSortiePL} \subsection{Compléments} \begin{warningblock} À l'instar de packages existants, la \textit{philosophie} ici est de laisser l'utilisateur gérer \textit{son} langage pseudo-code. J'ai fait le choix de ne pas définir des \textsf{mots clés} à mettre en valeur car cela reviendrait à \textit{imposer} des choix ! Donc ici, pas de coloration syntaxique ou de mise en évidence de mots clés, uniquement un formatage basique ! \end{warningblock} \begin{noteblock} Le style \ctex{listings} utilisé par la commande a l'option \Cle{mathescape} activée, et accessible grâce aux délimiteurs \Cle{(*...*)}. Cela permet d'insérer du code \LaTeX{} dans l'environnement \ctex{PseudoCode} (attention au fontes par contre !). \end{noteblock} \begin{PresCodeTexPL}{listing only} \begin{PseudoCode}*[12cm]{} #Utilisation du mode mathescape Afficher (*\og*) .........(*\fg*) m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) \end{PseudoCode} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{PseudoCode}*[12cm]{} #Utilisation du mode mathescape Afficher (*\og*) .........(*\fg*) m = (*$\tfrac{\texttt{1}}{\texttt{2}}$*) \end{PseudoCode} \end{PresCodeSortiePL} \newpage \section{Terminal Windows/UNiX/OSX}\label{terms} \subsection{Introduction} \begin{tipblock} L'idée des \textsf{commandes} suivantes est de permettre de simuler des fenêtres de \textsf{Terminal}, que ce soit pour Windows, Ubuntu ou OSX. \smallskip L'idée de base vient du {package} \ctex{termsim}, mais ici la gestion du \textsf{code} et des \textsf{fenêtres} est légèrement différente. \smallskip Le \textsf{contenu} est géré par le package \ctex{listings}, sans langage particulier, et donc sans coloration syntaxique particulière. \end{tipblock} \begin{warningblock} Comme pour le pseudo-code, pas d'\textsf{autogobble}, donc commandes à aligner à gauche ! \end{warningblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \begin{TerminalWin}[largeur]{titre=...}[options tcbox] ... \end{TerminalWin} \begin{TerminalUnix}[largeur]{titre=...}[options tcbox] ... \end{TerminalUnix} \begin{TerminalOSX}[largeur]{titre=...}[options tcbox] ... \end{TerminalOSX} \end{PresCodeTexPL} \begin{cautionblock} Peu d'options pour ces commandes : \begin{itemize} \item le premier, \textit{optionnel}, est la \Cle{largeur} de la \ctex{tcbox} ;\hfill{}défaut \Cle{\textbackslash linewidth} \item le deuxième, \textit{obligatoire}, permet de spécifier le titre par la clé \Cle{Titre}.\hfill{}défaut \Cle{Terminal Windows/UNiX/OSX} \item le troisième, \textit{optionnel}, concerne les \Cle{options} de la \ctex{tcbox} en \textit{langage tcolorbox}.\hfill{}défaut \Cle{vide} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Le \textsf{code} n'est pas formaté, ni mis en coloration syntaxique. De ce fait tous les caractères sont autorisés : même si l'éditeur pourra détecter le \% comme le début d'un commentaire, tout sera intégré dans le code mis en forme ! \end{noteblock} \begin{PresCodeTexPL}{listing only} \begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center] %12cm, avec titre modifié et centré test@DESKTOP:~$ ping -c 2 ctan.org PING ctan.org (5.35.249.60) 56(84) bytes of data. \end{TerminalUnix} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center] test@DESKTOP:~$ ping -c 2 ctan.org PING ctan.org (5.35.249.60) 56(84) bytes of data. \end{TerminalUnix} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{TerminalWin}[15cm]{} %largeur 15cm avec titre par défaut Microsoft Windows [version 10.0.22000.493] (c) Microsoft Corporation. Tous droits réservés. C:\Users\test>ping ctan.org Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51 Statistiques Ping pour 5.35.249.60: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms \end{TerminalWin} \begin{TerminalOSX}[0.5\linewidth]{Titre=Terminal MacOSX}[flush right] %1/2-largeur et titre modifié et droite [test@server]$ ping -c 2 ctan.org PING ctan.org (5.35.249.60) 56(84) bytes of data. \end{TerminalOSX} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{TerminalWin}[15cm]{} Microsoft Windows [version 10.0.22000.493] (c) Microsoft Corporation. Tous droits réservés. C:\Users\test>ping ctan.org Envoi d'une requête 'ping' sur ctan.org [5.35.249.60] avec 32 octets de données : Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=37 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=35 ms TTL=51 Réponse de 5.35.249.60 : octets=32 temps=39 ms TTL=51 Statistiques Ping pour 5.35.249.60: Paquets : envoyés = 4, reçus = 4, perdus = 0 (perte 0%), Durée approximative des boucles en millisecondes : Minimum = 35ms, Maximum = 39ms, Moyenne = 36ms \end{TerminalWin} \begin{TerminalUnix}[12cm]{Titre=Terminal Ubuntu}[center] test@DESKTOP:~$ ping -c 2 ctan.org PING ctan.org (5.35.249.60) 56(84) bytes of data. \end{TerminalUnix} \begin{TerminalOSX}[0.5\linewidth]{Titre=Terminal MacOSX}[flush right] [test@server]$ ping -c 2 ctan.org PING ctan.org (5.35.249.60) 56(84) bytes of data. \end{TerminalOSX} \end{PresCodeSortiePL} \newpage \section{Cartouche Capytale}\label{capytale} \subsection{Introduction} \begin{tipblock} L'idée est d'obtenir des \textsf{cartouches} tels que \textsf{Capytale} les présente, pour partager un code afin d'accéder à une activité \textsf{Python}. \end{tipblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \CartoucheCapytale(*)[options]{code capytale} \end{PresCodeTexPL} \begin{cautionblock} Peu d'options pour ces commandes : \begin{itemize} \item la version \textit{étoilée} qui permet de passer de la police \Cle{sffamily} à la police \Cle{ttfamily}, et donc dépendante des fontes du document ; \item le deuxième, \textit{optionnel}, permet de rajouter des caractères après le code (comme un \textsf{espace}) ; \hfill{}défaut \Cle{vide} \item le troisième, \textit{obligatoire}, est le \textsf{code capytale} à afficher. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \CartoucheCapytale{abcd-12345} %lien simple, en sf \CartoucheCapytale[~]{abcd-12345} %lien avec ~ à la fin, en sf \CartoucheCapytale*{abcd-12345} %lien simple, en tt \CartoucheCapytale*[~]{abcd-12345} %lien avec ~ à la fin, en tt \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \CartoucheCapytale{abcd-12345} \CartoucheCapytale[~]{abcd-12345} \CartoucheCapytale*{abcd-12345} \CartoucheCapytale*[~]{abcd-12345} \end{PresCodeSortiePL} \begin{noteblock} Le \textsf{cartouche} peut être \og cliquable \fg{} grâce à \ctex{href}. \end{noteblock} \begin{PresCodeTexPL}{listing only} \usepackage{hyperref} \urlstyle{same} ... \href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \href{https://capytale2.ac-paris.fr/web/c/abcd-12345}{\CartoucheCapytale{abcd-12345}} \end{PresCodeSortiePL} \newpage \section{Présentation de code \LaTeX}\label{prescode} \subsection{Introduction} \begin{tipblock} \cmaj{2.0.6} L'idée est de proposer un environnement pour présenter du code \LaTeX. Ce n'est pas forcément lié à l'enseignement en Lycée mais pourquoi pas ! \smallskip Il s'agir d'un environnement créé en \ctex{tcolorbox}, et utilisant la présentation \textit{basique} de code via \ctex{listings}. \end{tipblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \begin{PresentationCode}[Couleur]{options tcbox} ... \end{PresentationCode} \end{PresCodeTexPL} \begin{cautionblock} Peu de personnalisations pour ces commandes : \begin{itemize} \item le premier argument, \textit{optionnel}, permet de préciser la \textit{couleur} de la présentation ;\hfill{}défaut \Cle{ForestGreen} \item le second, \textit{obligatoire}, correspond aux éventuelles options liées à la \ctex{tcolorbox}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Il est à noter que, même dans le cas d'option vide pour la \ctex{tcolorbox}, les \ctex{\{\}} sont nécessaires. \smallskip On peut par exemple utiliser l'option \Cle{listing only} pour ne présenter \textit{que} le code source. \end{noteblock} \begin{PresCodePL}{} \begin{PresentationCode}{} \xdef\ValAleaA{\fpeval{randint(1,100)}} \xdef\ValAleaB{\fpeval{randint(1,100)}} Avec $A=\ValAleaA$ et $B=\ValAleaB$, on a $A\times B=\inteval{\ValAleaA * \ValAleaB}$. \end{PresentationCode} \begin{PresentationCode}[DarkBlue]{} On peut faire beaucoup de choses avec \LaTeX{} ! \end{PresentationCode} \end{PresCodePL} \pagebreak \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour la géométrie} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour la géométrie} \section{Pavé droit \og simple \fg}\label{pave} \subsection{Introduction} \begin{tipblock} L'idée est d'obtenir un pavé droit, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure. \end{tipblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[options tikz] \PaveTikz[options] ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item \Cle{Largeur} : largeur du pavé ;\hfill{}défaut \Cle{2} \item \Cle{Profondeur} : profondeur du pavé ;\hfill{}défaut \Cle{1} \item \Cle{Hauteur} : hauteur du pavé ;\hfill{}défaut \Cle{1.25} \item \Cle{Angle} : angle de fuite de la perspective ;\hfill{}défaut \Cle{30} \item \Cle{Fuite} : coefficient de fuite de la perspective ;\hfill{}défaut \Cle{0.5} \item \Cle{Sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D§E§F§G§H} \item \Cle{Math} : booléen pour forcer le mode math des sommets ;\hfill{}défaut \Cle{false} \item \Cle{Epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick} \item \Cle{Aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false} \item \Cle{Plein} : booléen pour ne pas afficher les arêtes \textit{invisibles} ;\hfill{}défaut \Cle{false} \item \Cle{Cube} : booléen pour préciser qu'il s'agit d'un cube (seule la valeur \Cle{Largeur} est util(isé)e). \hfill{}défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{tikz lower} %code tikz \PaveTikz \end{PresCodePL} \begin{PresCodePL}{tikz lower} %code tikz \PaveTikz[Cube,Largeur=2] \end{PresCodePL} \begin{noteblock} La ligne est de ce fait à insérer dans un environnement \TikZ, avec les options au choix pour cet environnement. Le code crée les nœuds relatifs aux sommets, et les nomme comme les sommets, ce qui permet de les réutiliser pour éventuellement compléter la figure ! \end{noteblock} \subsection{Influence des paramètres} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[line join=bevel] \PaveTikz[Aff,Largeur=4,Profondeur=3,Hauteur=2,Epaisseur={ultra thick}] \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture}[line join=bevel] \PaveTikz[Aff,Largeur=4,Profondeur=3,Hauteur=2,Epaisseur={ultra thick}] \end{tikzpicture} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture}[line join=bevel] \PaveTikz[Plein,Aff,Largeur=7,Profondeur=3.5,Hauteur=4,Sommets=Q§S§D§F§G§H§J§K] \draw[thick,red,densely dotted] (G)--(J) ; \draw[thick,blue,densely dotted] (K)--(H) ; \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[line join=bevel] \PaveTikz[Plein,Aff,Largeur=7,Profondeur=3.5,Hauteur=4,Sommets=Q§S§D§F§G§H§J§K] \draw[thick,red,densely dotted] (G)--(J) ; \draw[thick,blue,densely dotted] (K)--(H) ; \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \newpage \section{Tétraèdre \og simple \fg}\label{tetra} \subsection{Introduction} \begin{tipblock} L'idée est d'obtenir un tétraèdre, dans un environnement \TikZ, avec les nœuds créés et nommés directement pour utilisation ultérieure. \end{tipblock} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[options tikz] \TetraedreTikz[options] ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item \Cle{Largeur} : \textit{largeur} du tétraèdre ;\hfill{}défaut \Cle{4} \item \Cle{Profondeur} : \textit{profondeur} du tétraèdre ;\hfill{}défaut \Cle{1.25} \item \Cle{Hauteur} : \textit{hauteur} du tétraèdre ;\hfill{}défaut \Cle{3} \item \Cle{Alpha} : angle \textit{du sommet de devant} ;\hfill{}défaut \Cle{40} \item \Cle{Beta} : angle \textit{du sommet du haut} ;\hfill{}défaut \Cle{60} \item \Cle{Sommets} : liste des sommets (avec délimiteur § !) ;\hfill{}défaut \Cle{A§B§C§D} \item \Cle{Math} : booléen pour forcer le mode math des sommets ;\hfill{}défaut \Cle{false} \item \Cle{Epaisseur} : épaisseur des arêtes (en \textit{langage simplifié} \TikZ) ;\hfill{}défaut \Cle{thick} \item \Cle{Aff} : booléen pour afficher les noms des sommets ;\hfill{}défaut \Cle{false} \item \Cle{Plein} : booléen pour ne pas afficher l'arête \textit{invisible} .\hfill{}défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{tikz lower} %code tikz \TetraedreTikz \end{PresCodePL} \begin{PresCodePL}{tikz lower} %code tikz \TetraedreTikz[Aff,Largeur=2,Profondeur=0.625,Hauteur=1.5] \end{PresCodePL} \begin{PresCodePL}{tikz lower} %code tikz \TetraedreTikz[Plein,Aff,Largeur=5,Beta=60] \end{PresCodePL} \subsection{Influence des paramètres} \begin{noteblock} Pour \textit{illustrer} un peu les \Cle{clés}, un petit schéma, avec les différents paramètres utiles. \begin{center} \begin{tikzpicture}[x=1.25cm,y=1.25cm,line width=1pt,line join=bevel] \TetraedreTikz[Largeur=5,Profondeur=1.95,Hauteur=2.75,Alpha=45,Beta=70] \draw[draw=none] (A)--(C) node[midway,sloped,above,font=\small\sffamily,CadetBlue] {Largeur} ; \draw[draw=none] (A)--(B) node[midway,sloped,below,font=\small\sffamily,CadetBlue] {Profondeur} ; \draw[draw=none] (A)--(D) node[midway,sloped,above,font=\small\sffamily,CadetBlue] {Hauteur} ; \draw[purple] (0.5,0) arc (0:-45:0.5) ; \draw (-22.5:0.5) node[purple,right] {$\alpha$} ; \draw[orange] (0.75,0) arc (0:70:0.75) ; \draw (35:0.75) node[orange,right] {$\beta$} ; \end{tikzpicture} \end{center} \end{noteblock} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture}[line join=bevel] \TetraedreTikz[Aff,Largeur=7,Profondeur=3,Hauteur=5,Epaisseur={ultra thick},Alpha=20,Beta=30] \draw[very thick,ForestGreen,<->,>=latex] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ; \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[line join=bevel] \TetraedreTikz[Aff,Largeur=7,Profondeur=3,Hauteur=5,Epaisseur={ultra thick},Alpha=20,Beta=30] \draw[very thick,ForestGreen,<->,>=latex] ($(A)!0.5!(D)$)--($(B)!0.5!(D)$) ; \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \newpage \section{Cercle trigo}\label{cercletrigo} \subsection{Idée} \begin{tipblock} L'idée est d'obtenir une commande pour tracer (en \TikZ) un cercle trigonométrique, avec personnalisation des affichages. \smallskip Comme pour les autres commandes \TikZ, l'idée est de laisser l'utilisateur définir et créer son environnement \TikZ, et d'insérer la commande \ctex{CercleTrigo} pour afficher le cercle. \end{tipblock} \begin{PresCodePL}{tikz lower} %code tikz \CercleTrigo \end{PresCodePL} \subsection{Commandes} \begin{PresCodeTexPL}{listing only} ... \begin{tikzpicture}[options tikz] ... \CercleTrigo[clés] ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Plusieurs \Cle{Clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Rayon} qui définit le rayon du cercle ;\hfill{}défaut \Cle{3} \item la clé \Cle{Epaisseur} qui donne l'épaisseur des traits de base ;\hfill{}défaut \Cle{thick} \item la clé \Cle{Marge} qui est l'\textit{écartement} de axes ;\hfill{}défaut \Cle{0.25} \item la clé \Cle{TailleValeurs} qui est la taille des valeurs remarquables ;\hfill{}défaut \Cle{scriptsize} \item la clé \Cle{TailleAngles} qui est la taille des angles ;\hfill{}défaut \Cle{footnotesize} \item la clé \Cle{CouleurFond} qui correspond à la couleur de fond des labels ;\hfill{}défaut \Cle{white} \item la clé \Cle{Decal} qui correspond au décalage des labels par rapport au cercle ;\hfill{}défaut \Cle{10pt} \item un booléen \Cle{MoinsPi} qui bascule les angles \og -pipi \fg{} à \og zerodeuxpi \fg{} ;\hfill{}défaut \Cle{true} \item un booléen \Cle{AffAngles} qui permet d'afficher les angles ;\hfill{}défaut \Cle{true} \item un booléen \Cle{AffTraits} qui permet d'afficher les \textit{traits de construction} ;\hfill{}défaut \Cle{true} \item un booléen \Cle{AffValeurs} qui permet d'afficher les valeurs remarquables.\hfill{}défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \pagebreak \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,AffAngles=false] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15] \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,AffValeurs=false,Decal=8pt] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,AffAngles=false] \end{tikzpicture} ~~~~ \begin{tikzpicture}[line join=bevel] \CercleTrigo[Rayon=2.5,MoinsPi=false,CouleurFond=orange!15,TailleValeurs=\tiny] \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \subsection{Équations trigos} \begin{noteblock} En plus des \Cle{Clés} précédentes, il existe un complément pour \textit{visualiser} des solutions d'équations simples du type $\cos(x)=\ldots$ ou $\sin(x)=\ldots$. \end{noteblock} \begin{cautionblock} Les \Cle{Clés} pour cette possibilité sont : \begin{itemize} \item un booléen \Cle{Equationcos} pour \textit{activer} \og $\cos=$ \fg; \hfill{}défaut \Cle{false} \item un booléen \Cle{Equationsin} pour \textit{activer} \og $\sin=$ \fg;\hfill{}défaut \Cle{false} \item la clé \Cle{sin} qui est la valeur de l'angle (en degrés) du sin ;\hfill{}défaut \Cle{30} \item la clé \Cle{cos} qui est la valeur de l'angle (en degrés) cos ;\hfill{}défaut \Cle{45} \item \cmaj{2.6.2} un booléen \Cle{AffTraitsEq} qui permet d'afficher les \textit{traits de construction secondaires} pour les équations ; \hfill{}défaut \Cle{true} \item la clé \Cle{CouleurSol} qui est la couleur des \textit{solutions}.\hfill{}défaut \Cle{blue} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{center} \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,Rayon=2,Equationsin,sin=-30, CouleurSol=red] \end{tikzpicture} \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationcos,cos=135, CouleurSol=orange] \end{tikzpicture} \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,AffTraits=false,AffTraitsEq=false,Rayon=2, Equationcos,cos=126,CouleurSol=violet] \end{tikzpicture} \begin{tikzpicture} \CercleTrigo[% AffTraits=false,AffAngles=false,Rayon=2.5,Equationcos,cos=60,CouleurSol=purple, TailleValeurs=\tiny] \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationsin,sin=-30,CouleurSol=red] \end{tikzpicture} ~~~~ \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,AffTraits=false,Rayon=2,Equationcos,cos=135,CouleurSol=orange] \end{tikzpicture} ~~~~ \begin{tikzpicture} \CercleTrigo[% AffAngles=false,AffValeurs=false,AffTraits=false,AffTraitsEq=false,Rayon=2, Equationcos,cos=126,CouleurSol=violet] \end{tikzpicture} \medskip \begin{tikzpicture} \CercleTrigo[% AffTraits=false,AffAngles=false,Rayon=2.5,Equationcos,cos=60,CouleurSol=purple,TailleValeurs=\tiny] \end{tikzpicture} \end{center} \end{PresCodeSortiePL} %\newpage % %\section{Style \og main levée \fg{} en \TikZ}\label{mainlevee} % %\subsection{Idée} % %\begin{tipblock} %L'idée est de \textit{proposer} un style \textit{tout prêt} pour simuler un tracé, en \TikZ, à \og main levée \fg. % %Il s'agit d'un style \textit{basique} utilisant la librairie \ctex{decorations} avec \textsf{random steps}. %\end{tipblock} % %\begin{PresCodeTexPL}{listing only} %\tikzset{% % mainlevee/.style args={#1et#2}{decorate,decoration={random steps, segment length=#1,amplitude=#2}}, % mainlevee/.default={5mm et 0.6pt} %} %\end{PresCodeTexPL} % %\subsection{Utilisation basique} % %\begin{noteblock} %Il s'agit ni plus ni moins d'un style \TikZ{} à intégrer dans les tracés et constructions \TikZ ! %\end{noteblock} % %\begin{cautionblock} %Concernant le style en lui-même, deux paramètres peuvent être précisés via \Cle{mainlevee=\#1 et \#2} : % %\begin{itemize} % \item \Cle{\#1} correspond à l'option \textsf{segment length} (longueur des segments \textit{types}) ;\hfill{}défaut \Cle{5mm} % \item \Cle{\#2} correspond à l'option \textsf{amplitude} (amplitude maximale de la \textit{déformation}).\hfill{}défaut \Cle{0.6pt} %\end{itemize} % %Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -- satisfaisants, mais l'utilisateur pourra modifier à loisir ces paramètres ! %\end{cautionblock} % %\begin{PresCodeTexPL}{listing only} %%la grille a été rajoutée pour la sortie %\begin{tikzpicture} % \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} % %\begin{tikzpicture} % \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} % %\begin{tikzpicture} % \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} %\end{PresCodeTexPL} % %\begin{PresCodeSortiePL}{text only} %\hfill~\begin{tikzpicture} % \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); % \draw[thick,mainlevee] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} %\hspace{1cm} %\begin{tikzpicture} % \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); % \draw[thick,mainlevee=5mm et 2pt] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} %\hspace{1cm} %\begin{tikzpicture} % \draw[xstep=0.5,ystep=0.5,ultra thin,lightgray] (0,0) grid (4,4); % \draw[thick,mainlevee=10mm et 3mm] (0,0) --++ (4,0) --++ (0,4) --++ (-4,0) --cycle ; %\end{tikzpicture} %\hfill~ %\end{PresCodeSortiePL} \pagebreak \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour la géométrie analytique} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour la géométrie analytique} \section{Conseils d'utilisation} \begin{warningblock} \cmaj{2.6.5} Il est conseillé d'utiliser \hologo{LuaLaTeX} pour les commandes (vectorielles) de géométrie analytique, même s'il est toutefois possible d'utiliser \hologo{pdfLaTeX}. \smallskip Il est possible que les simplifications demandées (coefficients entiers, ou premiers entre eux) ne donnent pas entière satisfaction, donc prudence sur l'utilisation de celles-ci (ce sont des tests et retours de \textit{bugs} qui montreront les limites des commandes). \end{warningblock} \section{Affichage de coordonnées}\label{affcoord} \subsection{Idée} \begin{tipblock} \cmaj{2.6.4} L'idée est de proposer des commandes pour simplifier la saisie de coordonnées de vecteurs ou de points (plan ou espace), en saisissant les coordonnées \textit{en ligne}. \smallskip À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}. \end{tipblock} \begin{warningblock} Logiquement les commandes (à insérer dans un environnement mathématique) doivent donner des résultats satisfaisants pour tout ce qui est \textit{rationnel}, mais cela ne sera pas pertinent dans le cas de coordonnées irrationnelles\ldots \end{warningblock} \begin{PresCodeTexPL}{listing only} %Affichage des coordonnées d'un point (2 ou 3 coordonnées) \AffPoint[options de formatage](liste des coordonnées) %Affichage des coordonnées d'un vecteur (2 ou 3 coordonnées) \AffVecteur[options de formatage](liste des coordonnées) \end{PresCodeTexPL} \begin{warningblock} Dans cette partie liée à la géométrie analytique, j'ai choisi de saisir les arguments (coordonnées) via les délimiteurs \ctex{(...)} : \begin{itemize} \item avec le séparateur \ctex{,} pour les points ; \item avec le séparateur \ctex{;}. \end{itemize} De ce fait, le code \textit{sait} s'il est face à un point ou à un vecteur, et adapte sa méthode de calcul en conséquence ! \end{warningblock} \subsection{Options et arguments} \begin{cautionblock} Concernant les arguments des commandes : \begin{itemize} \item le premier argument, optionnel et entre \ctex{[...]} permet de spécifier la ou les caractéristiques de formatage des coordonnées, de manière globale ou individuelle, et de manière cohérente avec les options disponibles pour la commande de \textit{conversion en fraction} de \ctex{ProfLycee} : \begin{itemize} \item \Cle{d} : pour un formatage en \ctex{dfrac} si nécessaire ; \item \Cle{t} : pour un formatage en \ctex{tfrac} si nécessaire ; \item \Cle{n} : pour un formatage en \ctex{nicefrac} si nécessaire ; \item \Cle{dec} : pour la forme décimale (brute) ; \item \Cle{dec=k} : pour la forme décimale à $10^{-k}$. \end{itemize} Il est possible de spécifier des formatages différents en utilisant une \textit{liste} sous la forme : \begin{itemize} \item \Cle{f1,f2} ou \Cle{f1,f2,f3} pour les points ; \item \Cle{f1;f2} ou \Cle{f1;f2;f3} ; \end{itemize} \item l'argument \textit{optionnel} et entre \ctex{<...>} (uniquement pour les vecteurs !) permet de spécifier des options de type \textit{nicematrix} ; \item l'argument obligatoire, et entre \ctex{\{...\}} est quant à lui la liste des coordonnées, en ligne et au format \textit{naturel xint}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Il est donc possible de mettre des \textit{calculs} dans l'argument des coordonnées. Il suffit \textit{juste} d'utiliser une syntaxe compréhensible par les commandes du package \ctex{xint}. \end{noteblock} \begin{PresCodePL}{} %Point, avec affichage classique en dfrac $\AffPoint(1,2/3)$ \\ %Point, avec affichage en décimal + dfrac + dfrac $\AffPoint[dec,d,d](-0.5,1,2/3)$ \\ %Vecteurs, avec affichages classiques $\AffVecteur(1;2)$ et $\AffVecteur(1;2;3)$ \\ %Vecteurs, avec option nicematrix et affichage en décimal + tfrac $\AffVecteur[dec;t](0.5;2/3)$ \\ %Vecteurs, avec option nicematrix et affichage en décimal $\AffVecteur[dec](0.5;0.6;0.75)$ \\ %Vecteurs, avec cacluls et affichage classique $\AffVecteur((2-(-3));(5-6);(1-1))$ \end{PresCodePL} \newpage \section{Équation cartésienne d'un plan de l'espace}\label{eqcartplan} \subsection{Idée et commande} \begin{tipblock} \cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'un plan dans l'un des cas suivants : \begin{itemize} \item en donnant un vecteur normal et un point ; \item en donnant deux vecteurs directeurs et un point ; \item en donnant trois points. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %Avec un vecteur normal et un point \TrouveEqCartPlan[clés](vecteur normal)(point) %Avec deux vecteurs directeurs et un point \TrouveEqCartPlan[clés](vecteur dir1)(vecteur dir2)(point) %Avec trois points \TrouveEqCartPlan[clés](point1)(point2)(point3) \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Concernant les arguments des commandes : \begin{itemize} \item le premier argument, optionnel et entre \ctex{[...]} contient les clés : \begin{itemize} \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d} \item \Cle{SimplifCoeffs} pour forcer des coefficients simples (entiers et premiers entre eux) ; \hfill{}défaut : \Cle{false} \item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications. \hfill{}défaut : \Cle{1} \end{itemize} \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées (entre 2 et 3). \end{itemize} À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur. \end{cautionblock} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur(1;2;3)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1;2;3)(4,5,6)$ \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1/2;2/3;3/5)$ et passant par le point A de coordonnées $\AffPoint(4,5,6)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1/2;2/3;3/5)(4,5,6) \Leftrightarrow \TrouveEqCartPlan[SimplifCoeffs](1/2;2/3;3/5)(4,5,6)$ \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{P}$ de vecteur normal $\vec{n} \AffVecteur[n](1;2/3;0)$ et passant par le point A de coordonnées $\AffPoint[dec,dec,d](0.75,0.56,1/3)$ est $\mathcal{P}$ : $\TrouveEqCartPlan(1;2/3;0)(0.75,0.56,1/3) \Leftrightarrow \TrouveEqCartPlan[SimplifCoeffs](1;2/3;0)(0.75,0.56,1/3)$ \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{P}_3$ passant par les points $A\AffPoint(2,0,1)$, $B\AffPoint(3,1,1)$ et $C\AffPoint(1,-2,0)$ est \[ \mathcal{P}_3 \text{ : } \TrouveEqCartPlan(2,0,1)(3,1,1)(1,-2,0)\] \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{R}$ passant par le points $A\AffPoint(0,0,1)$, $B\AffPoint(4,2,3)$ et $C\AffPoint(-3,1,1)$ est \[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs](0,0,1)(4,2,3)(-3,1,1)\] \[ \mathcal{R} \text{ : } \TrouveEqCartPlan[SimplifCoeffs,Facteur=-1](0,0,1)(4,2,3)(-3,1,1)\] \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne du plan $\mathcal{P}_0$ dirigé par les vecteurs $\AffVecteur(9;7;-8)$ et $\AffVecteur(-2;2;-1)$ et passant par le point $A\AffPoint(5,1,-1)$ est : \[ \mathcal{P}_0 \text{ : } \TrouveEqCartPlan[SimplifCoeffs](9;7;-8)(-2;2;-1)(5,1,-1)\] \end{PresCodePL} \newpage \section{Équation paramétrique d'une droite de l'espace}\label{eqparamdroite} \subsection{Idée et commande} \begin{tipblock} \cmaj{2.6.4} L'idée est de proposer une commande pour déterminer un système d'équations paramétriques d'une droite de l'espace dans l'un des cas suivants : \begin{itemize} \item en donnant un vecteur directeur et un point ; \item en donnant deux points. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %Avec un vecteur directeur et un point \TrouveEqParamDroite[clés](vecteur directeur)(point) %Avec deux points \TrouveEqParamDroite[clés](point1)(point2) \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Concernant les arguments des commandes : \begin{itemize} \item le premier argument, optionnel et entre \ctex{[...]} contient les clés : \begin{itemize} \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d} \item \Cle{Reel} pour coder le paramètre réel ; \hfill{}défaut : \Cle{k} \item le booléen \Cle{Oppose} pour utiliser plutôt l'opposé du vecteur directeur ; \hfill{}défaut : \Cle{false} \item le booléen \Cle{Rgras} pour utiliser le symbole \textbf{R} ou lieu de $\mathbb{R}$ (si \ctex{amsfonts} est chargé !). \hfill{}défaut : \Cle{false} \end{itemize} \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées. \end{itemize} À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur. \end{cautionblock} \begin{PresCodePL}{} Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(2;5;-4)$ et passant par $A\AffPoint(-1,-1,-1)$ est \[ \TrouveEqParamDroite(2;5;-4)(-1,-1,-1) \] \end{PresCodePL} \begin{PresCodePL}{} Une équation paramétrique de la droite $(d)$ passant par $\AffPoint(2,5,-4)$ et $\AffPoint(-1,-1,-1)$ est \[ \TrouveEqParamDroite[Oppose](2,5,-4)(-1,-1,-1) \text{ ou } \TrouveEqParamDroite(2,5,-4)(-1,-1,-1) \] \end{PresCodePL} \begin{PresCodePL}{} Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(0;-1;3)$ et passant par $O\AffPoint(0,0,0)$ est \[ \TrouveEqParamDroite(0;-1;3)(0,0,0) \] \end{PresCodePL} \begin{PresCodePL}{} Une équation paramétrique de la droite $(d)$ dirigée par le vecteur $\vec{u}\AffVecteur(-1;2;3)$ et passant par $A\AffPoint(2,0,-3)$ est \[ \TrouveEqParamDroite[Reel=\ell,Rgras](-1;2;3)(2,0,-3) \] \end{PresCodePL} \newpage \section{Équation cartésienne d'une droite du plan}\label{eqcartdroite} \subsection{Idée et commande} \begin{tipblock} \cmaj{2.6.4} L'idée est de proposer une commande pour déterminer une équation cartésienne d'une droite du plan dans l'un des cas suivants : \begin{itemize} \item en donnant un vecteur directeur et un point ; \item en donnant un vecteur normal et un point ; \item en donnant deux points. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %Avec un vecteur normal (choix par défaut) et un point \TrouveEqCartDroite[clés](vecteur normal)(point) %Avec un vecteur directeur et un point \TrouveEqCartDroite[clés,VectDirecteur](vecteur directeur)(point1) %Avec deux points \TrouveEqCartDroite[clés](point1)(point2) \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Concernant les arguments des commandes : \begin{itemize} \item le premier argument, optionnel et entre \ctex{[...]} contient les clés : \begin{itemize} \item \Cle{OptionCoeffs} pour spécifier un formatage \textit{global} des coefficients ; \hfill{}défaut : \Cle{d} \item le booléen \Cle{SimplifCoeffs} pour forcer des coeffs simples (entiers et premiers entre eux) ; \hfill{}défaut : \Cle{false} \item \Cle{Facteur} pour spécifier un facteur personnalisé aux simplifications ; \hfill{}défaut : \Cle{1} \item le booléen \Cle{VectDirecteur} pour pour préciser que le vecteur utilisé est directeur.\hfill{}défaut : \Cle{false} \end{itemize} \item les arguments suivants, entre \ctex{(...)} correspondent aux données utilisées. \end{itemize} À noter que les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur. \end{cautionblock} \begin{PresCodePL}{} Une équation cartésienne de la droite $\mathcal{D}$ de vecteur normal $\vec{n} \AffVecteur(1;2)$ et passant par le point A de coordonnées $\AffPoint(4,5)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectNormal](1;2)(4,5)$ \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne de la droite $\mathcal{D}$ de vecteur directeur $\vec{u} \AffVecteur[n](1/2;2/3)$ et passant par le point A de coordonnées $\AffPoint(5,6)$ est $\mathcal{D}$ : $\TrouveEqCartDroite[VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur](1/2;2/3)(5,6) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs,VectDirecteur,Facteur=-1](1/2;2/3)(5,6)$ \end{PresCodePL} \begin{PresCodePL}{} Une équation cartésienne de la droite $\mathcal{D}$ passant par les points $\AffPoint(2,4)$ et $\AffPoint(-4,2)$ est \[\mathcal{D} \text{ : } \TrouveEqCartDroite(2,4)(-4,2) \Leftrightarrow \TrouveEqCartDroite[SimplifCoeffs](2,4)(-4,2)\] \end{PresCodePL} \newpage \section{Norme d'un vecteur, distance entre deux points}\label{normevect} \subsection{Idée et commande} \begin{tipblock} \cmaj{2.6.5} L'idée est de proposer une commande pour déterminer la distance entre deux points, ou la norme d'un vecteur : \begin{itemize} \item en donnant le vecteur ; \item en donnant deux points. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %Avec le vecteur \TrouveNorme(vecteur) %Avec deux points \TrouveNorme(point 1)(point 2) \end{PresCodeTexPL} \begin{noteblock} Le résultat étant souvent écrit à l'aide d'une racine carrée, le code se charge de simplifier le résultat sous la forme $\frac{a\sqrt{n}}{b}$. Dans le cas où les coordonnées ne seraient pas rationnelles, le résultat risque de ne pas être conforme à celui attendu. \end{noteblock} \subsection{Clés et arguments} \begin{cautionblock} Concernant les arguments de cette commande : \begin{itemize} \item les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur pour les arguments 1 et 2. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} La distance $AB$ avec $A\AffPoint(-5,2)$ et $B\AffPoint(4,-3)$ vaut $d =\displaystyle\TrouveNorme(-5,2)(4,-3)$ \end{PresCodePL} \begin{PresCodePL}{} La distance $AB$ avec $A\AffPoint(2,1,2)$ et $B\AffPoint(-4,1,1)$ vaut $d =\displaystyle\TrouveNorme(2,1,2)(-4,1,1)$ \end{PresCodePL} \begin{PresCodePL}{} La norme de $\AffVecteur(2;4)$ vaut $d =\displaystyle\TrouveNorme(2;4)$ \end{PresCodePL} \begin{PresCodePL}{} La norme de $\AffVecteur[d;d;n](2;4;0.5)$ vaut $d =\displaystyle\TrouveNorme(2;4;0.5)$ \end{PresCodePL} \newpage \section{Distance d'un point à un plan}\label{distptplan} \subsection{Idée et commande} \begin{tipblock} \cmaj{2.6.4} L'idée est de proposer une commande pour déterminer la distance d'un point à un plan : \begin{itemize} \item en donnant le point puis le plan défini par vecteur normal \&{} point ; \item en donnant le point puis le plan défini par une équation cartésienne. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %Avec le point et le plan via vect normal + point \TrouveDistancePtPlan(point)(vec normal du plan)(point du plan) %Avec le point et le plan via vect normal + point \TrouveDistancePtPlan(point)(équation cartésienne) \end{PresCodeTexPL} \begin{noteblock} Le résultat étant souvent écrit à l'aide d'une racine carrée, le code se charge de simplifier le résultat sous la forme $\frac{a\sqrt{n}}{b}$. Dans le cas où les coordonnées ne seraient pas rationnelles, le résultat risque de ne pas être conforme à celui attendu. \end{noteblock} \subsection{Clés et arguments} \begin{cautionblock} Concernant les arguments de cette commande : \begin{itemize} \item si on travaille avec une équation cartésienne, elle est à donner sous la forme \ctex{ax+by+cz=0} ou \ctex{ax+by+cz} \item les séparateurs \ctex{,} ou \ctex{;} permettent de spécifier point ou vecteur pour les arguments 1 et 3. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} La distance entre le point $\AffPoint(1,2,3)$ et le plan de vecteur normal $\AffVecteur(-1;-2;3)$ et passant par $\AffPoint(5,0,2)$ vaut \[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(-1;-2;3)(5,0,2) \] \end{PresCodePL} \begin{PresCodePL}{} La distance entre le point $\AffPoint(1,2,3)$ et le plan d'équation $x+2y+2z-7=0$ vaut \[ d = \displaystyle\TrouveDistancePtPlan(1,2,3)(x+2y-2z+7) \] \end{PresCodePL} \begin{PresCodePL}{} La distance entre le point $\AffPoint(-7,0,4)$ et le plan d'équation $0,5x+2y-z-1=0$ vaut \[ d = \displaystyle\TrouveDistancePtPlan(-7,0,4)(0.5x+2y-z-1=0) \] \end{PresCodePL} \begin{PresCodePL}{} La distance entre le point $H\AffPoint(0,4,8)$ et le plan d'équation $-x+y+z-4=0$ vaut \[ d = \displaystyle\TrouveDistancePtPlan(0,4,8)(-x+y+z-4=0) \] \end{PresCodePL} \begin{PresCodePL}{} La distance entre le point $H\AffPoint(0,0,5)$ et le plan d'équation $z-1=0$ vaut \[ d = \displaystyle\TrouveDistancePtPlan(0,0,5)(z-1=0) \] \end{PresCodePL} \newpage \section{Équation réduite d'une droite du plan}\label{eqreduite} \subsection{Idée} \begin{tipblock} \cmaj{2.6.3} L'idée est de proposer une commande pour déterminer l'équation réduite d'une droite passant par deux points : \begin{itemize} \item en traitant les cas particuliers \textit{horizontale}, \textit{verticale} ; \item en affichant une méthode de résolution ; \item en travaillant sous forme exacte fractionnaire (les racines carrées ou autres ne seront pas gérés). \end{itemize} À noter que les calculs et résultats sont traités par la commande de \textit{conversion de fraction} de \ctex{ProfLycee}. \end{tipblock} \begin{warningblock} La commande se charge de formater (normalement !) correctement les différentes étapes de calculs (il se peut quand même que cela puisse ne pas donner le résultat réellement escompté\ldots) : \begin{itemize} \item en travaillant en fraction ; \item en mettant les parenthèses nécessaires devant les éventuels nombres négatifs ; \item en traitant les cas particuliers $m=\pm1$ et $b=0$. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{warningblock} \begin{PresCodeTexPL}{listing only} \EquationReduite[option]{A/xa/ya,B/xb/yb} \end{PresCodeTexPL} \subsection{Clés et arguments} \begin{cautionblock} Concernant le fonctionnement de la commande : \begin{itemize} \item le premier argument, optionnel et entre \ctex{[...]} et valant \Cle{[d]} par défaut, permet de formater les fractions éventuelles en mode \ctex{\textbackslash displaystyle} ; \item le second argument, obligatoire et entre \ctex{\{...\}}, permet de donner les coordonnées des points concernés. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} \EquationReduite{C/2/0,D/-2/-8} \end{PresCodePL} \subsection{Exemples} \begin{PresCodePL}{} \EquationReduite{I/-4/5,J/-4/12} \end{PresCodePL} \begin{PresCodePL}{} \EquationReduite{U/-4/5,V/-4/5} \end{PresCodePL} \begin{PresCodePL}{} \EquationReduite{L/10/7,M/-2/7} \end{PresCodePL} \begin{PresCodePL}{} \EquationReduite{L/{1/3}/2.5,M/{-5/7}/{3/5}} \end{PresCodePL} \begin{PresCodePL}{} \EquationReduite{P/4/-4,Q/-2/2} \end{PresCodePL} \begin{PresCodePL}{} \EquationReduite{G/-4/5,H/10/4} \end{PresCodePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour les statistiques} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour les statistiques} \section{Paramètres d'une régression linéaire par la méthode des moindres carrés}\label{reglin} \subsection{Idée} \begin{tipblock} L'idée est d'utiliser une commande qui va permettre de calculer les paramètres principaux d'un régression linéaire par la méthode des moindres carrés. Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} peut poser souci avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de \textit{gagner} en précision ! \smallskip L'idée est que cette macro calcule et stocke les paramètres dans des variables (le nom peut être personnalisé !) pour exploitation ultérieure : \begin{itemize} \item en calculs \textit{purs} ; \item dans un environnement \TikZ{} via \textsf{pgfplots} ou bien en \textit{natif} ; \item dans un environnement \PSTricks{} ; \item dans un environnement \hologo{METAPOST} (à vérifier quand même) ; \item \ldots \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} ... \CalculsRegLin[clés]{listeX}{listeY} %listes avec éléments séparés par des , ... \end{PresCodeTexPL} \begin{noteblock} La commande \ctex{CalculsRegLin} va définir également des \textsf{macros} pour chaque coefficient, qui de ce fait seront réutilisables après ! \end{noteblock} \subsection{Commandes} \begin{cautionblock} Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour \textit{renommer} les paramètres : \begin{itemize} \item la clé \Cle{NomCoeffa} qui permet de définir la variable qui contiendra $a$ ;\hfill{}défaut \Cle{COEFFa} \item la clé \Cle{NomCoeffb} qui permet de définir la variable qui contiendra $b$ ;\hfill{}défaut \Cle{COEFFb} \item la clé \Cle{NomCoeffr} qui permet de définir la variable qui contiendra $r$ ;\hfill{}défaut \Cle{COEFFr} \item la clé \Cle{NomCoeffrd} qui permet de définir la variable qui contiendra $r^2$ ;\hfill{}défaut \Cle{COEFFrd} \item la clé \Cle{NomXmin} qui permet de définir la variable qui contiendra $x_{\text{min}}$ ;\hfill{}défaut \Cle{LXmin} \item la clé \Cle{NomXmax} qui permet de définir la variable qui contiendra $x_{\text{max}}$.\hfill{}défaut \Cle{LXmax} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %les espaces verticaux n'ont pas été écrits ici \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \CalculsRegLin{\LLX}{\LLY} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %vérif des calculs (noms non modifiables...) Liste des X := \showitems\LX. Liste des Y := \showitems\LY. Somme des X := \LXSomme{} et somme des Y := \LYSomme. Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy. Variance des X := \LXvar{} et variance des Y := \LYvar{} Covariance des X/Y := \LXYvar. %les coefficients, avec des noms modifiables ! Min des X := \LXmin{} et Max des X := \LXmax. Coefficient $a=\COEFFa$. Coefficient $b=\COEFFb$. Coefficient $r=\COEFFr$. Coefficient $r^2=\COEFFrd$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} Liste des X := \showitems\LX. \smallskip Liste des Y := \showitems\LY. \smallskip Somme des X := \LXSomme{} et somme des Y := \LYSomme. \smallskip Moyenne des X := \LXmoy{} et moyenne des Y := \LYmoy. \smallskip Variance des X := \LXvar{} et variance des Y := \LYvar{} \smallskip Covariance des X/Y := \LXYvar. \smallskip Min des X := \LXmin{} et Max des X := \LXmax. \smallskip Coefficient $a=\COEFFa$.\tabto{0.5\textwidth}Coefficient $b=\COEFFb$. %\smallskip % %Coefficient $b=\COEFFb$. \smallskip Coefficient $r=\COEFFr$.\tabto{0.5\textwidth}Coefficient $r^2=\COEFFrd$. %\smallskip % %Coefficient $r^2=\COEFFrd$. \end{PresCodeSortiePL} \begin{noteblock} \hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_b}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_c2}\hfill~ \end{noteblock} \begin{noteblock} Les \textsf{macros} qui contiennent les paramètres de la régression sont donc réutilisables, en tant que nombres réels, donc exploitables par \ctex{siunitx} et \ctex{xfp} pour affichage \textit{fin} ! Ci-dessous un exemple permettant de visualiser tout cela. \end{noteblock} \begin{PresCodeTexPL}{listing only} %les espaces verticaux n'ont pas été écrits ici \def\LstX{0,1,3,4,5,6} \def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6} %on lance les calculs et on change le nom des "macros-résultats" \CalculsRegLin[NomCoeffa=TESTa,NomCoeffb=TESTb,NomCoeffr=TESTr,NomCoeffrd=TESTrd,% NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY} %commandes complémentaires \DeclareDocumentCommand\arrond{ s O{3} m }{% * signe / précision / nb \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{round(#3,#2)}}} {\num{\fpeval{round(#3,#2)}}} } %paramètres Les valeurs extr. de X sont \TESTmin{} et \TESTmax. Une éq. est $y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$. Le coeff. de corrélation est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LstX{0,1,3,4,5,6}\def\LstY{-35,-37.4,-37.7,-39.9,-39,-39.6} \CalculsRegLin[NomCoeffa=TESTa,NomCoeffb=TESTb,NomCoeffr=TESTr,NomCoeffrd=TESTrd,NomXmin=TESTmin,NomXmax=TESTmax]{\LstX}{\LstY} \DeclareDocumentCommand\arrond{ s O{3} m }{ \IfBooleanTF{#1}{\num[print-implicit-plus]{\fpeval{ceil(#3,#2)}}} {\num{\fpeval{round(#3,#2)}}} } Les valeurs extrêmes de $x$ sont \TESTmin{} et \TESTmax. Une équation de la droite de régression de $y$ en $x$ est \hfill$y=\arrond[3]{\TESTa}x \arrond*[3]{\TESTb}$.\hfill~ \smallskip Le coefficient de corrélation linéaire est $r=\arrond[4]{\TESTr}$, et son carré est $r^2=\arrond[4]{\TESTrd}$. \end{PresCodeSortiePL} \begin{noteblock} \hfill~\includegraphics[height=3cm]{./graphics/pl-doc-stats_d}~~\includegraphics[height=3cm]{./graphics/pl-doc-stats_e}\hfill~ \end{noteblock} \subsection{Intégration dans un environnement \TikZ} \begin{noteblock} La commande étant \og autonome \fg{}, elle va pouvoir être intégrée dans des environnements graphiques pour permettre un tracé \textit{facile} de la droite de régression. \end{noteblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture} \begin{axis}[options des axes, non présentées ici...] \addplot[teal, only marks] table{ X Y 1994 1718 1995 1710 1996 1708 1997 1700 1998 1698 1999 1697 2000 1691 2001 1688 2002 1683 2004 1679 2005 1671 2006 1670 2007 1663 2008 1661 2009 1656 2010 1649 }; \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \CalculsRegLin{\LLX}{\LLY} \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb}; \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$}; \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$}; \end{axis} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture} \begin{axis}[ /pgf/number format/.cd, use comma, xmin = 1992, xmax = 2012, ymin = 1640, ymax = 1730, width = 0.7\textwidth, height = 0.35\textwidth, xtick distance = 2, ytick distance = 10, grid = both, minor tick num = 1, major grid style = {lightgray}, minor grid style = {lightgray!25}, xlabel = {\small Année ($x$)}, ylabel = {\small Altitude du glacier (en m) ($y$)}, x tick label style={/pgf/number format/.cd, set thousands separator={}}, y tick label style={/pgf/number format/.cd, set thousands separator={}}, legend cell align = {left}, legend pos = north east ] \addplot[teal, only marks] table{ X Y 1994 1718 1995 1710 1996 1708 1997 1700 1998 1698 1999 1697 2000 1691 2001 1688 2002 1683 2004 1679 2005 1671 2006 1670 2007 1663 2008 1661 2009 1656 2010 1649 }; \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \addplot [thick,orange,domain=\LXmin:\LXmax,samples=2]{\COEFFa*x+\COEFFb}; \addlegendentry{$y = \fpeval{round(\COEFFa,3)}\,x + \fpeval{round(\COEFFb,3)}$}; \addlegendentry{$R^2=\fpeval{round(\COEFFrd,5)}$}; \end{axis} \end{tikzpicture} \end{PresCodeSortiePL} \begin{noteblock} Il existe également une commande auxiliaire, \ctex{PointsRegLin} pour afficher le nuage de points avec quelques options, dans un environnement \TikZ{} classique (sans \textsf{pgfplot})\ldots \end{noteblock} \begin{PresCodeTexPL}{listing only} ... \begin{tikzpicture}[] ... \PointsRegLin[clés]{listeX}{listeY} ... \end{tikzpicture} \end{PresCodeTexPL} \begin{cautionblock} Quelques \Cle{Clés} sont disponibles pour cette commande, essentiellement pour la mise en forme du nuage : \begin{itemize} \item la clé \Cle{Couleur} pour la couleur des points du nuage ;\hfill{}défaut \Cle{teal} \item la clé \Cle{Taille} pour la taille des points (type \textit{cercle}) ;\hfill{}défaut \Cle{2pt} \item la clé \Cle{Ox} pour spécifier la valeur initiale Ox (si changement d'origine) ;\hfill{}défaut \Cle{0} \item la clé \Cle{Oy} pour spécifier la valeur initiale Oy (si changement d'origine).\hfill{}défaut \Cle{0} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[x=0.5cm,y=0.05cm] \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100); \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100); \draw[thick,->,>=latex] (0,0)--(20,0) ; \draw[thick,->,>=latex] (0,0)--(0,100) ; \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ; \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ; \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \def\Ox{1992}\def\Oy{1640} \CalculsRegLin{\LLX}{\LLY} \PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY} \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ; \matrix [draw,fill=white,below left] at (current bounding box.north east) { \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x+\num{\fpeval{round(\COEFFb,3)}}$} ; \\ \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\ }; \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{tikzpicture}[x=0.5cm,y=0.05cm] \draw[xstep=1,ystep=5,lightgray!50,very thin] (0,0) grid (20,100); \draw[xstep=2,ystep=10,lightgray,thin] (0,0) grid (20,100); \draw[thick,->,>=latex] (0,0)--(20,0) ; \draw[thick,->,>=latex] (0,0)--(0,100) ; \foreach \x in {1992,1994,...,2010} \draw[thick] ({\x-1992},4pt)--({\x-1992},-4pt) node[below] {$\x$} ; \foreach \y in {1640,1650,...,1730} \draw[thick] (4pt,{\y-1640})--(-4pt,{\y-1640}) node[left] {$\y$} ; \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \def\Ox{1992}\def\Oy{1640} \CalculsRegLin{\LLX}{\LLY} \PointsRegLin[Ox=1992,Oy=1640,Couleur=blue,Taille=3pt]{\LLX}{\LLY} \draw[orange,very thick,samples=2,domain=\LXmin:\LXmax] plot ({\x-\Ox},{\COEFFa*(\x)+\COEFFb-\Oy}) ; \matrix [draw,fill=white,below left] at (current bounding box.north east) { \node {$y=\num{\fpeval{round(\COEFFa,3)}}\,x + \num{\fpeval{round(\COEFFb,3)}}$} ; \\ \node {$R^2=\num{\fpeval{round(\COEFFrd,5)}}$} ; \\ }; \end{tikzpicture} \end{PresCodeSortiePL} \newpage \section{Statistiques à deux variables}\label{statsdeuxvars} \subsection{Idées} \begin{tipblock} L'idée est de \textit{prolonger} le paragraphe précédent pour proposer un environnement \TikZ{} adapté à des situations venant de statistiques à deux variables. \smallskip Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0;0)$. De ce fait -- pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} -- il faut \textit{décaler les axes} pour se ramener à une origine en $O$. \smallskip Le code, intimement lié à un environnement \ctex{tikzpicture}, va donc : \begin{itemize} \item préciser les informations utiles comme \ctex{xmin}, \ctex{xmax}, \ctex{Ox}, \ctex{xgrille}, etc \item proposer des commandes (sans se soucier des \textit{translations} !) pour : \begin{itemize} \item tracer une grille (principale et/ou secondaire) ; \item tracer les axes (avec légendes éventuelles) et éventuellement les graduer ; \end{itemize} \end{itemize} En utilisant les commandes de \textsf{régression linéaire} du paragraphe précédent, il sera de plus possible (sans calculs !) de : \begin{itemize} \item représenter le nuage de points ; \item placer le point moyen ; \item tracer la droite d'ajustement (obtenue par \ctex{ProfLycee}) ou une autre courbe. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situation, mais ne l'utilisant pas, j'ai préféré préparer des \textsf{macros} permettant de s'affranchir de ce package (est-ce pertinent, ça c'est une autre question\ldots). \end{noteblock} \begin{PresCodeTexPL}{listing only} %Listes et calculs \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \CalculsRegLin{\LLX}{\LLY} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %tracé (simple), les options seront présentées juste après \begin{tikzpicture}% [x=0.5cm,y=0.1cm, %unités Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1, %axe Ox Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] %axe Oy \GrilleTikz \AxesTikz %grilles et axes \AxexTikz[Annee]{1992,1994,...,2010} %axeOx \AxeyTikz{1640,1650,...,1720} %axeOy \NuagePointsTikz{\LLX}{\LLY} %nuage \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]% {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression \PointMoyenTikz %point moyen \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} %tracé avec options fenêtre par défaut \begin{tikzpicture}% [....] %paramètres \FenetreSimpleTikz{1992,1994,...,2010}{1640,1650,...,1720} %fenêtre "simple" \NuagePointsTikz{\LLX}{\LLY} %nuage \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]% {\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} %droite de régression \PLnuageptmoy %point moyen \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[x=0.5cm,y=0.1cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz \AxexTikz[Annee]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz{\LLX}{\LLY} \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\LXmin:\LXmax} \PointMoyenTikz \end{tikzpicture} \end{PresCodeSortiePL} \subsection{Commandes, clés et options} \begin{noteblock} Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici: \begin{itemize} \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3} \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3} \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0} \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1} \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5} \end{itemize} La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin};\text{ymin})$ et $(\text{xmax};\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(\text{xmin-Ox};\text{ymin-Oy})$ et $(\text{xmax-Ox};\text{ymax-Oy})$. \smallskip Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}. \end{noteblock} \begin{noteblock} Pour illustrer les commandes et options de ce paragraphe, la base sera le graphique présenté précédemment. \end{noteblock} \begin{PresCodeTexPL}{listing only} %...code tikz \GrilleTikz[options][options grille ppale][options grille second.] \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de tracer une grille principale et/ou une grille secondaire : \begin{itemize} \item les premières \Cle{clés} sont les booléens \Cle{Affp} et \Cle{Affs} qui affichent ou non les grilles ; \hfill~défaut \Cle{true} \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz[Affp=false][][orange,densely dotted] \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} %...code tikz \AxesTikz[options] \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de tracer les axes, avec des \Cle{clés} : \begin{itemize} \item \Cle{Epaisseur} qui est l'épaisseur des traits ; \hfill~défaut \Cle{1.25pt} \item \Cle{Police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} \item \cmaj{2.1.2} \Cle{ElargirOx} qui est le \% l'élargissement \Cle{global} ou \Cle{G/D} de l'axe $(Ox)$ ; \hfill~défaut \Cle{0/0.05} \item \cmaj{2.1.2} \Cle{ElargirOy} qui est le \% l'élargissement \Cle{global} ou \Cle{B/H} de l'axe $(Oy)$ ; \hfill~défaut \Cle{0/0.05} \item \Cle{Labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$} \item \Cle{Labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$} \item \Cle{AffLabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ; \hfill~défaut \Cle{vide} \item \Cle{PosLabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right} \item \Cle{PosLabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above} \item \Cle{EchelleFleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1} \item \Cle{TypeFleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{latex} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %code tikz \AxesTikz %code tikz \AxesTikz% [AffLabel=xy,Labelx={Année},Labely={Altitude},% PosLabelx={below right},PosLabely={above left},% Police=\small\sffamily] \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \AxesTikz \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \AxesTikz% [AffLabel=xy,Labelx={Année},Labely={Altitude},% PosLabelx={below right},PosLabely={above left},% Police=\small\sffamily] \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} %les axes \begin{PresCodeTexPL}{listing only} %...code tikz \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs} \end{PresCodeTexPL} \begin{cautionblock} Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions : \begin{itemize} \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt} \item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} \item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left} \item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt} \item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true} \item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true} \item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}). \hfill~défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %code tikz \AxexTikz[Police=\small]{1992,1994,...,2010} \AxexTikz{1640,1650,...,1720} %code tikz \AxeyTikz[Police=\small,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010} \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720} %des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; \AxexTikz[Police=\tiny]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \end{tikzpicture} ~~ \begin{tikzpicture}% [x=0.3cm,y=0.06cm,% Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,% Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \draw[gray,line width=1.25pt,->,>=latex] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ; \draw[gray,line width=1.25pt,->,>=latex] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ; \AxexTikz[Police=\tiny,Annee,HautGrad=0pt/4pt]{1992,1994,...,2010} \AxeyTikz[AffGrad=false,HautGrad=6pt]{1640,1650,...,1720} \end{tikzpicture} \hfill~ \end{PresCodeSortiePL} \subsection{Commandes annexes} \begin{noteblock} Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont présentes dans l'introduction : \begin{itemize} \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ; \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ; \item \ctex{OrigineTikz} pour rajouter le libellé de l'origine si non affiché par les axes. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{PresCodeTexPL}{listing only} %code tikz \FenetreTikz %on restreint les tracés \FenetreSimpleTikz[opt](opt axes){liste valx}{liste valy} \end{PresCodeTexPL} \subsection{Interactions avec CalculsRegLin} \begin{PresCodeTexPL}{listing only} %...code tikz \NuagePointsTikz[options]{listeX}{listeY} \end{PresCodeTexPL} \begin{cautionblock} Cette commande, liée à la commande \ctex{CalculsRegLin} permet de représenter le nuage de points associé aux deux listes, avec les \Cle{clés} suivantes : \begin{itemize} \item \Cle{Taille} qui est la taille des points du nuage ; \hfill~défaut \Cle{2pt} \item \Cle{Style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o} \item \Cle{Couleur} qui est la couleur (éventuellement \Cle{couleurA/couleurB} pour les ronds). \hfill~défaut \Cle{blue} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \end{tikzpicture} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} \end{tikzpicture} \end{PresCodeSortiePL} %point moyen \begin{PresCodeTexPL}{listing only} %...code tikz \PointMoyenTikz[options] \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de rajouter le point moyen du nuage, calculé par la commande \ctex{CalculsRegLin}, avec les \Cle{clés} : \begin{itemize} \item \Cle{Police}, comme précédemment ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont} ; \item \Cle{Taille}, taille du point moyen ; \hfill~défaut \Cle{4pt} \item \Cle{Couleur}, couleur du point moyen ; \hfill~défaut \Cle{red} \item \Cle{Style} parmi \Cle{o} (rond) ou \Cle{x} (croix) ou \Cle{+} (plus) ; \hfill~défaut \Cle{o} \item \Cle{xg}, abscisse du point moyen, récupérable via \ctex{CalculsRegLin} ; \hfill~défaut \Cle{\textbackslash{}LXmoy} \item \Cle{yg}, ordonnée du point moyen, récupérable via \ctex{CalculsRegLin} ; \hfill~défaut \Cle{\textbackslash{}LYmoy} \item \Cle{Nom}, label du point moyen ; \hfill~défaut \Cle{G} \item \Cle{Pos} qui est la position du label par rapport au point ; \hfill~défaut \Cle{above} \item \Cle{Decal} qui est l'éloignement de la position du label par rapport au point ; \hfill~défaut \Cle{0pt} \item la booléen \Cle{AffNom} qui affiche ou non le libellé.\hfill~défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz \end{tikzpicture} ~~ \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} \PointMoyenTikz[Couleur=orange,Taille=8pt,Style=+,Nom={$G_1$},Pos=below] \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz \end{tikzpicture} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=ForestGreen,Style=x,Taille=6pt]{\LLX}{\LLY} \PointMoyenTikz[Couleur=orange,Taille=8pt,Style=+,Nom={$G_1$},Pos=below] \end{tikzpicture} \end{PresCodeSortiePL} %courbe \begin{PresCodeTexPL}{listing only} %...code tikz \CourbeTikz[options]{formule}{domaine} \end{PresCodeTexPL} \begin{cautionblock} Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments : \begin{itemize} \item \Cle{optionnels} qui sont -- en \TikZ{} -- les paramètres du tracé ; \item le premier \textit{obligatoire}, est -- en langage \TikZ{} -- l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ; \item le second \textit{obligatoire} est le domaine du tracé , sous la forme \ctex{valxmin:valxmax}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} L'idée principale est de récupérer les variables de la régression linéaire pour tracer la droite d'ajustement \textit{à moindres frais} ! \end{noteblock} \begin{noteblock} Toute courbe peut être tracée sur ce principe, par contre il faudra saisir la fonction \textit{à la main}. \end{noteblock} \begin{PresCodeTexPL}{listing only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008, 2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661, 1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \CalculsRegLin{\LLX}{\LLY} \begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0] \AxexTikz[Annee,Police=\footnotesize]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz \CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax} \end{tikzpicture} \end{PresCodeSortiePL} \subsection{Exemple complémentaire, pour illustration} \begin{PresCodeTexPL}{listing only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} %la courbe n'a pas de lien avec le nuage %elle illustre l'interaction des commandes "nuage" avec les autres commandes \begin{tikzpicture}[...] \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz %on fixe la fenêtre \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\LLX{1994,1995,1996,1997,1998,1999,2000,2001,2002,2004,2005,2006,2007,2008,2009,2010} \def\LLY{1718,1710,1708,1700,1698,1697,1691,1688,1683,1679,1671,1670,1663,1661,1656,1649} \begin{tikzpicture}[x=0.7cm,y=0.14cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5] \GrilleTikz \AxesTikz[ElargirOx=0,ElargirOy=0] \AxexTikz[Annee,Police=\small]{1992,1994,...,2010} \AxeyTikz{1640,1650,...,1720} \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \FenetreTikz \CourbeTikz[line width=1.25pt,orange,samples=250]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax} \end{tikzpicture} \end{PresCodeSortiePL} \newpage \section{Boîtes à moustaches}\label{boiteamoustaches} \subsection{Introduction} \begin{tipblock} L'idée est de proposer une commande, à intégrer dans un environnement \TikZ, pour tracer une boîte à moustaches grâce aux paramètres, saisis par l'utilisateur. \smallskip Le code ne calcule pas les paramètres, il ne fait \textit{que} tracer la boîte à moustaches ! \end{tipblock} \begin{PresCodePL}{} \begin{tikzpicture} \BoiteMoustaches{10/15/17/19/20} \end{tikzpicture} \end{PresCodePL} \begin{noteblock} Étant donnée que la commande est intégrée dans un environnement \TikZ, les unités peuvent/doivent donc être précisées, \textit{comme d'habitude}, si besoin. \end{noteblock} \subsection{Clés et options} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Couleur} qui est la couleur de la boîte ; \hfill~défaut \Cle{black} \item la clé \Cle{Elevation} qui est la position verticale (ordonnée des moustaches) de la boîte ; \hfill~défaut \Cle{1.5} \item la clé \Cle{Hauteur} qui est la hauteur de la boîte ; \hfill~défaut \Cle{1} \item la clé \Cle{Moyenne} qui est la moyenne (optionnelle) de la série ; \item la clé \Cle{Epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick} \item la clé \Cle{Remplir} qui est la couleur de remplissage de la boîte ; \hfill~défaut \Cle{white} \item le booléen \Cle{AffMoyenne} qui permet d'afficher ou non la moyenne (sous forme d'un point) ; \hfill~défaut \Cle{false} \item le booléen \Cle{Pointilles} qui permet d'afficher des pointillés au niveau des paramètres ; \hfill~défaut \Cle{false} \item le booléen \Cle{Valeurs} qui permet d'afficher les valeurs des paramètres au niveau des abscisses. \hfill~défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} \begin{tikzpicture} \BoiteMoustaches[Epaisseur=very thick,Moyenne=18.5,Couleur=blue,AffMoyenne,% Pointilles,Valeurs,Hauteur=2.25,Elevation=2]{10/15/17/19/20} \end{tikzpicture} \end{PresCodePL} \begin{PresCodeTexPL}{listing only} %une grille a été rajoutée pour visualiser la "position verticale" \begin{center} \begin{tikzpicture}[x=0.1cm] \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200} \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150} \BoiteMoustaches% [Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{100/140/145/160/210} \end{tikzpicture} \end{center} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{center} \begin{tikzpicture}[x=0.1cm] \draw[xstep=10,ystep=0.5,very thin,lightgray] (80,0) grid (210,4.5) ; \foreach \x in {80,90,...,210} \draw[very thin,lightgray] (\x,3pt)--(\x,-3pt) node[below] {\num{\x}} ; \foreach \y in {0,0.5,...,4.5} \draw[very thin,lightgray] ($(210,\y)+(-3pt,0)$)--($(210,\y)+(3pt,0)$) node[right] {\num{\y}} ; \BoiteMoustaches[Epaisseur=ultra thick,Couleur=blue]{100/150/170/190/200} \BoiteMoustaches[Epaisseur=thin,Elevation=2.5,Couleur=red]{80/100/110/120/150} \BoiteMoustaches[Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{100/140/145/160/210} \end{tikzpicture} \end{center} \end{PresCodeSortiePL} \subsection{Commande pour placer un axe horizontal} \begin{tipblock} L'idée est de proposer, en parallèle de la commande précédente, une commande pour tracer un axe horizontal \og sous \fg{} les éventuelles boîtes à moustaches. \end{tipblock} \begin{PresCodePL}{} \begin{tikzpicture} \BoiteMoustachesAxe[Min=10,Max=20] \BoiteMoustaches{10/15/17/19/20} \end{tikzpicture} \end{PresCodePL} \begin{PresCodePL}{} \begin{tikzpicture} \BoiteMoustachesAxe[Min=10,Max=20] \BoiteMoustaches[Valeurs,Pointilles]{10/15/17/19/20} \end{tikzpicture} \end{PresCodePL} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Min} qui est la valeur minimale de l'axe horizontal ; \item la clé \Cle{Max} qui est la valeur minimale de l'axe horizontal ; \item la clé \Cle{Elargir} qui est le pourcentage l'élargissement de l'axe ;\hfill~défaut \Cle{0.1} \item la clé \Cle{Epaisseur} qui est l'épaisseur des traits de la boîte ; \hfill~défaut \Cle{thick} \item la clé \Cle{Valeurs} qui est la liste (compréhensible en \TikZ) des valeurs à afficher. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} \begin{tikzpicture} \BoiteMoustachesAxe[Min=8,Max=21,AffValeurs,Valeurs={8,9,...,21},Elargir=0.02] \BoiteMoustaches[Moyenne=18.5,Couleur=blue]{10/15/17/19/20} \BoiteMoustaches[Elevation=2.5,Couleur=red]{8/10/11/12/15} \BoiteMoustaches[Elevation=4,Couleur=ForestGreen,Remplir=ForestGreen!25]{10/14/14.5/16/21} \end{tikzpicture} \end{PresCodePL} \begin{noteblock} Le placement des différentes boîtes n'est pas automatique, donc il faut penser à cela avant de se lancer dans le code. Sachant que la hauteur par défaut est de 1, il est -- a priori -- intéressant de placer les boîtes à des \Cle{élévations} de \num{1} puis \num{2.5} puis \num{4} etc \end{noteblock} \newpage \section{Histogrammes}\label{histo} \subsection{Introduction} \begin{tipblock} \cmaj{2.6.7} L'idée est de proposer une commande pour tracer un histogramme à classes régulières ou non. \smallskip La commande, qui utilise \TikZ, est autonome (ceci étant dû à la gestion en interne des unités !), et ne permet pas de rajout une fois le graphique affiché. \end{tipblock} \begin{noteblock} La commande fonctionne avec des données classe/effectif, qui seront à traduire sous la forme \ctex{BorneInf/BorneSup/Effectif}. \end{noteblock} \begin{PresCodeTexPL}{listing only} \Histogramme(*)[options]{données} \end{PresCodeTexPL} \begin{PresCodePL}{} %classes régulières \Histogramme{7/9/130 9/11/175 11/13/182 13/15/95} \end{PresCodePL} \begin{PresCodePL}{} %classes non régulières \Histogramme*{0/20/15 20/50/34 50/60/8 60/85/10 90/100/13} \end{PresCodePL} \begin{cautionblock} Contrairement aux autres commandes graphiques, qui sont souvent à intégrer dans un environnement \TikZ, la commande \ctex{\textbackslash Histogramme} aura besoin de connaître les dimensions finales du graphique pour fonctionner ! \end{cautionblock} \subsection{Clés et options} \begin{cautionblock} La version \textit{étoilée} permet de préciser que les classes ne sont pas d'amplitudes régulières. \medskip Le premier argument, optionnel et entre \ctex{[...]} propose les \Cle{clés} principales suivantes : \begin{itemize} \item \Cle{DebutOx} : permet de préciser le début de l'axe horizontal (sinon c'est par défaut la borne inférieure de la première classe) ; \hfill{}défaut : \Cle{vide} \item \Cle{FinOx} : permet de préciser la fin de l'axe horizontal (sinon c'est par défaut la borne supérieure de la dernière classe) ; \hfill{}défaut : \Cle{vide} \item \Cle{Largeur} : largeur en cm du graphique créé (entre \Cle{DebutOx} et \Cle{FinOx}) ; \hfill{}défaut : \Cle{10} \item \Cle{Hauteur} : hauteur en cm du graphique créé (par rapport à l'effectif maximal) ; \hfill{}défaut : \Cle{5} \item \Cle{ListeCouleurs} : liste des couleurs des rectangles (unique ou sous la forme \ctex{\{CoulA,CoulB,...\}}) ; \hfill{}défaut : \Cle{orange} \item \Cle{ElargirX} et \Cle{ElargirY} : pour rajouter une petite longueur au bout des axes ; \hfill{}défaut : \Cle{5mm} \item \Cle{LabelX} et \Cle{LabelY} : pour les labels des axes ; \hfill{}défaut : \Cle{vide} \item \Cle{GradX} et \Cle{GradY} : pour les graduations et valeurs des axes (langage \ctex{tikz}) ; \hfill{}défaut : \Cle{vide} \item \Cle{AffEffectifs} : booléen pour afficher les effectifs ; \hfill{}défaut : \Cle{true} \item \Cle{PosEffectifs} : choix de la position des effectifs parmi \Cle{bas,milieu,haut,dessus} ; \hfill{}défaut : \Cle{milieu} \item \Cle{Remplir} : booléen pour remplir les rectangles ; \hfill{}défaut : \Cle{true} \item \Cle{Opacite} : choix de l'opacité du remplissage ; \hfill{}défaut : \Cle{0.5} \item \Cle{AffBornes} : booléen pour afficher les bornes des classes ; \hfill{}défaut : \Cle{false} \item \Cle{GrilleV} : booléen pour afficher une grille verticale (pour les classes régulières, à la manière d'un tableur) ; \hfill{}défaut : \Cle{true} \item \Cle{PoliceAxes} : police pour les axes ; \hfill{}défaut : \Cle{\textbackslash normalsize\textbackslash normalfont} \item \Cle{PoliceEffectifs} : police pour les effectifs ; \hfill{}défaut : \Cle{\textbackslash normalsize\textbackslash normalfont} \item \Cle{EpaisseurTraits} : épaisseur des traits (langage \ctex{tikz}). \hfill{}défaut : \Cle{semithick} \end{itemize} Le second argument, obligatoire et entre \ctex{\{...\}} permet de préciser les données utilisées sous la forme \ctex{BorneInf/BorneSup/Effectif BorneInf/BorneSup/Effectif ...}. \end{cautionblock} \subsection{Exemple avec des classes régulières} \begin{tipblock} Avec la série suivante : \medskip \hfill \begin{tblr}{hlines,vlines,width=10cm,colspec={Q[l,m]*{4}{X[m,c]}}} Classes & $[7\mathpunct{};9[$ & $[9\mathpunct{};11[$ & $[11\mathpunct{};13[$ & $[13\mathpunct{};15]$ \\ Effectifs & 130 & 175 & 182 & 95 \\ \end{tblr} \hfill~ \end{tipblock} \begin{PresCodePL}{} \Histogramme[% ListeCouleurs={white},Opacite=1,% GradX={7,8,...,15},LabelX={données},% GradY={0,25,...,175},LabelY={effectifs},% PoliceEffectifs=\small\sffamily,PosEffectifs=dessus]% {7/9/130 9/11/175 11/13/182 13/15/95} \end{PresCodePL} \begin{PresCodePL}{} \Histogramme[% Largeur=11,Hauteur=8,% ListeCouleurs={yellow,blue,pink,red},% DebutOx=5,FinOx=17,% GradX={5,6,...,17},% GradY={0,25,...,175},% AffEffectifs=false]% {7/9/130 9/11/175 11/13/182 13/15/95} \end{PresCodePL} \subsection{Exemple avec des classes non régulières} \begin{tipblock} Avec la série suivante : \medskip \hfill \begin{tblr}{hlines,vlines,width=14cm,colspec={Q[l,m]*{6}{X[m,c]}}} Classes & $[0\mathpunct{};20[$ & $[20\mathpunct{};50[$ & $[50\mathpunct{};60[$ & $[60\mathpunct{};85[$ & $[85\mathpunct{};100]$ \\ Effectifs & 15 & 34 & 8 & 10 & 13 \\ \end{tblr} \hfill~ \end{tipblock} \begin{PresCodePL}{} \Histogramme*[% ListeCouleurs={yellow,red,blue,green,purple},% PosEffectifs=dessus,AffBornes] {0/20/15 20/50/34 50/60/8 60/85/10 85/100/13} \end{PresCodePL} \begin{PresCodePL}{} \Histogramme*[% Largeur=14,Hauteur=7,FinOx=110,% ListeCouleurs={yellow,red,blue,green,purple},Opacite=0.25,% GradX={0,10,...,110},% PosEffectif=heut] {0/20/15 20/50/34 50/60/8 60/85/10 85/100/13} \end{PresCodePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour les probabilités} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour les probabilités} \section{Calculs de probabilités}\label{calcprobas} \subsection{Introduction} \begin{tipblock} L'idée est de proposer des commandes permettant de calculer des probabilités avec des lois classiques : \begin{itemize} \item binomiale ; \item normale ; \item exponentielle ; \item de Poisson ; \item géométrique ; \item hypergéométrique. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Les commandes sont de deux natures : \begin{itemize} \item des commandes pour calculer, grâce au package \ctex{xintexpr} ; \item des commandes pour formater le résultat de \ctex{xintexpr}, grâce à \ctex{siunitx}. \end{itemize} De ce fait, les options de \ctex{siunitx} de l'utilisateur affecterons les formatages du résultat, la commande va \og forcer \fg{} les arrondis et l'écriture scientifique. \end{noteblock} \subsection{Calculs \og simples \fg} \begin{PresCodeTexPL}{listing only} %loi binomiale B(n,p) \CalcBinomP{n}{p}{k} %P(X=k) \CalcBinomC{n}{p}{a}{b} %P(a<=X<=b) %loi de Poisson P(l) \CalcPoissP{l}{k} %P(X=k) \CalcPoissC{l}{a}{b} %P(a<=X<=b) %loi géométrique G(p) \CalcGeomP{p}{k} %P(X=k) \CalcGeomC{l}{a}{b} %P(a<=X<=b) %loi hypergéométrique H(N,n,m) \CalcHypergeomP{N}{n}{m}{k} %P(X=k) \CalcHypergeomP{N}{n}{m}{a}{b} %P(a<=X<=b) %loi normale N(m,s) \CalcNormC{m}{s}{a}{b} %P(a<=X<=b) %loi exponentielle E(l) \CalcExpoC{l}{a}{b} %P(a<=X<=b) \end{PresCodeTexPL} \begin{cautionblock} Les probabilités calculables sont donc -- comme pour beaucoup de modèles de calculatrices -- les probabilités \textbf{P}onctuelles ($P(X=k)$) et \textbf{C}umulées ($P(a\leqslant X\leqslant b)$). \smallskip Pour les probabilités cumulées, on peut utiliser le caractère \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$. \end{cautionblock} \begin{PresCodeTexPL}{listing only} % X -> B(5,0.4) $P(X=3) \approx \CalcBinomP{5}{0.4}{3}$. $P(X\leqslant1) \approx \CalcBinomC{5}{0.4}{*}{1}$. % X -> B(100,0.02) $P(X=10) \approx \CalcBinomP{100}{0.02}{10}$. $P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$. % Y -> P(5) $P(Y=3) \approx \CalcPoissP{5}{3}$. $P(Y\geqslant2) \approx \CalcPoissC{5}{2}{*}$. % T -> G(0.5) $P(T=100) \approx \CalcPoissP{0.5}{3}$. $P(T\leqslant5) \approx \CalcPoissC{0.5}{*}{5}$. % W -> H(50,10,5) $P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$. $P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\bullet~~~~X \hookrightarrow \mathcal{B}(5\,; 0,4)$ :\\ $P(X=3) \approx \CalcBinomP{5}{0.4}{3}$.\\ $P(X\leqslant1) \approx \CalcBinomC{5}{0.4}{*}{1}$. \medskip $\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :\\ $P(X=10) \approx \CalcBinomP{100}{0.02}{10}$.\\ $P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$. \medskip $\bullet~~~~Y \hookrightarrow \mathcal{P}_5$ :\\ $P(Y=3) \approx \CalcPoissP{5}{3}$.\\ $P(Y\geqslant2) \approx \CalcPoissC{5}{2}{*}$. \medskip $\bullet~~~~T \hookrightarrow \mathcal{G}_{0,5}$ :\\ $P(T=3) \approx \CalcGeomP{0.5}{3}$.\\ $P(T\leqslant5) \approx \CalcGeomC{0.5}{*}{5}$. \medskip $\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ :\\ $P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$.\\ $P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$. \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} % X -> N(0,1) $P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$. $P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{0}{1}{-1.96}{1.96}$. % X -> N(550,30) $P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$. $P(500\leqslant Y\leqslant600) \approx \CalcNormC{550}{30}{500}{600}$. % Z -> E(0.001) $P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$. $P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\bullet~~~~X \hookrightarrow \mathcal{N}(0\,; 1)$ :\\ $P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$.\\ $P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{0}{1}{-1.96}{1.96}$. \medskip $\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ :\\ $P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$.\\ $P(500\leqslant Y\leqslant600) \approx \CalcNormC{550}{30}{500}{600}$. \medskip $\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ :\\ $P(Z\geqslant400) \approx \CalcExpoC{0.001}{400}{*}$.\\ $P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$. \end{PresCodeSortiePL} \subsection{Complément avec sortie \og formatée \fg} \begin{tipblock} L'idée est ensuite de formater le résultat obtenu par \ctex{xintexpr}, pour un affichage homogène. \smallskip L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résultats obtenus par \ctex{xintexpr} ! \end{tipblock} \begin{PresCodeTexPL}{listing only} %avec un formatage manuel \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}} \end{PresCodeTexPL} \begin{PresCodePL}{} $\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ : $P(X=10) \approx \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}$. \end{PresCodePL} \begin{tipblock} Le package \ctex{ProfLycee} propose -- en complément -- des commandes pour formater, grâce à \ctex{siunitx}, le résultat. Les commandes ne sont donc, dans ce cas, pas préfixées par \ctex{calc} : \begin{itemize} \item formatage sous forme décimale \textit{pure} : $0,00\ldots$ ; \item formatage sous forme scientifique : $n,\ldots\times10^{\ldots}$. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{listing only} %loi binomiale B(n,p) \BinomP(*)[prec]{n}{p}{k} %P(X=k) \BinomC(*)[prec]{n}{p}{a}{b} %P(a<=X<=b) %loi de Poisson P (l) \PoissonP(*)[prec]{l}{k} %P(X=k) \PoissonC(*)[prec]{l}{a}{b} %P(a<=X<=b) %loi géométrique G (p) \GeomP{p}{k} %P(X=k) \GeomC{l}{a}{b} %P(a<=X<=b) %loi hypergéométrique H (N,n,m) \HypergeomP{N}{n}{m}{k} %P(X=k) \HypergeomC{N}{n}{m}{a}{b} %P(a<=X<=b) %loi normale N(m,s) \NormaleC(*)[prec]{m}{s}{a}{b} %P(a<=X<=b) %loi exponentielle E(l) \ExpoC(*)[prec]{l}{a}{b} %P(a<=X<=b) \end{PresCodeTexPL} \begin{cautionblock} Quelques précisions sur les commandes précédentes : \begin{itemize} \item la version étoilée \Cle{*} des commandes formate le résultat en mode scientifique ; \item l'argument optionnel (par défaut \Cle{3}) correspond à quant à lui à l'arrondi. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} % X -> N(550,30) $P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$. $P(500\leqslant Y\leqslant600) \approx \NormaleC[4]{550}{30}{500}{600}$. % X -> B(100,0.02) $P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$. $P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[10]{100}{0.02}{15}{25}$. % H -> H(50,10,5) $P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$. $P(1\leqslant W\leqslant3) \approx \HypergeomC[4]{50}{10}{5}{1}{3}$. % Z-> E(0,001)$ : $P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$. $P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$. % T -> P(5) $P(T=3) \approx \PoissonP{5}{3}$. $P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$. \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ : $P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$. $P(500\leqslant Y\leqslant600) \approx \NormaleC[4]{550}{30}{500}{600}$. \medskip $\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ : $P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$. $P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \BinomC*[10]{100}{0.02}{15}{25}$. \medskip $\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ : $P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$. $P(1\leqslant W\leqslant3) \approx \HypergeomC[4]{50}{10}{5}{1}{3}$. \medskip $\bullet~~~~Z \hookrightarrow \mathcal{E}_{0,001}$ : $P(Z\geqslant400) \approx \ExpoC{0.001}{400}{*}$. $P(300\leqslant Z\leqslant750) \approx \ExpoC{0.001}{300}{750}$. \medskip $\bullet~~~~T \hookrightarrow \mathcal{P}_5$ : $P(T=3) \approx \PoissonP{5}{3}$. $P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$. \end{PresCodeSortiePL} \begin{noteblock} \hfill~\includegraphics[height=3cm]{./graphics/pl-doc-probas_a}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_c}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_e}~~\includegraphics[height=3cm]{./graphics/pl-doc-probas_f}\hfill~ \end{noteblock} \newpage \section{Arbres de probabilités \og classiques \fg}\label{arbresprobas} \subsection{Introduction} \begin{tipblock} L'idée est de proposer des commandes pour créer des arbres de probabilités classiques (et homogènes), en \TikZ, de format : \begin{itemize} \item $2\times2$ ou $2\times3$ ; \item $3\times2$ ou $3\times3$. \end{itemize} Les (deux) commandes sont donc liées à un environnement \ctex{tikzpicture}, et elles créent les nœuds de l'arbre, pour exploitation ultérieure éventuelle. \end{tipblock} \begin{PresCodeTexPL}{listing only} %commande simple pour tracé de l'arbre \ArbreProbasTikz[options]{donnees} %environnement pour tracé et exploitation éventuelle \begin{EnvArbreProbasTikz}[options]{donnees} code tikz supplémentaire \end{EnvArbreProbasTikz} \end{PresCodeTexPL} \subsection{Options et arguments} \begin{noteblock} Les \Cle{donnees} seront à préciser sous forme \hfill\ctex{//,//,...}\hfill~ avec comme \og sens de lecture \fg{} de la gauche vers la droite puis du haut vers le bas (on balaye les \textit{sous-arbres}), avec comme possibilités : \begin{itemize} \item \cmaj{2.5.3} une donnée \Cle{proba} peut être laissée vide ou spécifiée avec des \textsf{macros} ; \item une donnée \Cle{position} peut valoir \Cle{above} (au-dessus), \Cle{below} (en-dessous) ou être laissée \Cle{vide} (sur). \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{cautionblock} Quelques \Cle{Clés} (communes) pour les deux commandes : \begin{itemize} \item la clé \Cle{Unite} pour préciser l'unité de l'environnement \TikZ{} ; \hfill~défaut \Cle{1cm} \item la clé \Cle{EspaceNiveau} pour l'espace (H) entre les étages ; \hfill~défaut \Cle{3.25} \item la clé \Cle{EspaceFeuille} pour l'espace (V) entre les feuilles ; \hfill~défaut \Cle{1} \item la clé \Cle{Type} pour le format, parmi \Cle{2x2} ou \Cle{2x3} ou \Cle{3x2} ou \Cle{3x3} ; \hfill~défaut \Cle{2x2} \item la clé \Cle{Police} pour la police des nœuds ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} \item la clé \Cle{PoliceProbas} pour la police des probas ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}small} \item le booléen \Cle{InclineProbas} pour incliner les probas ; \hfill~défaut \Cle{true} \item le booléen \Cle{Fleche} pour afficher une flèche sur les branches ; \hfill~défaut \Cle{false} \item la clé \Cle{StyleTrait} pour les branches, en langage \TikZ{} ; \hfill~défaut \Cle{vide} \item la clé \Cle{EpaisseurTrait} pour l'épaisseur des branches, en langage \TikZ{} ; \hfill~défaut \Cle{semithick} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} \def\ArbreDeuxDeux{ $A$/\num{0.5}/, $B$/\num{0.4}/, $\overline{B}$/.../, $\overline{A}$/.../, $B$/.../, $\overline{B}$/$\frac{1}{3}$/ } \ArbreProbasTikz{\ArbreDeuxDeux} %des éléménts, en gris, ont été rajoutés pour illustrer certaines options \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{EnvArbreProbasTikz}{$A$/\num{0.5}/,$B$/\num{0.4}/,$\overline{B}$/.../,$\overline{A}$/.../,$B$/.../,$\overline{B}$/$\frac{1}{3}$/} \draw[lightgray] (R) node[left,font=\ttfamily\small] {(R)} ; \draw[lightgray] (A11) node[below,font=\ttfamily\small] {(A11)} ; \draw[lightgray] (A12) node[below,font=\ttfamily\small] {(A12)} ; \draw[lightgray] (A21) node[below,font=\ttfamily\small] {(A21)} ; \draw[lightgray] (A22) node[below,font=\ttfamily\small] {(A22)} ; \draw[lightgray] (A23) node[below,font=\ttfamily\small] {(A23)} ; \draw[lightgray] (A24) node[below,font=\ttfamily\small] {(A24)} ; \draw[lightgray,<->,>=latex] (0,-4) -- (3.25,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ; \draw[lightgray,<->,>=latex] (3.25,-4) -- (6.5,-4) node[midway,below,font=\ttfamily\small] {EspaceNiveau} ; \draw[lightgray,<->,>=latex] (7,0) -- (7,-1) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; \draw[lightgray,<->,>=latex] (7,-1) -- (7,-2) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; \draw[lightgray,<->,>=latex] (7,-2) -- (7,-3) node[midway,right,font=\ttfamily\small] {EspaceFeuille} ; \end{EnvArbreProbasTikz} \end{PresCodeSortiePL} \begin{noteblock} Les nœuds crées par les commandes sont : \begin{itemize} \item \ctex{R} pour la racine ; \item \ctex{A1x} pour les nœuds du 1\up{er} niveau (de haut en bas) ; \item \ctex{A2x} pour les nœuds du 2\up{d} niveau (de haut en bas). \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \subsection{Exemples complémentaires} \begin{PresCodeTexPL}{listing only} \def\ArbreTroisDeux{ $A_1$/\num{0.5}/above, $B$/\num{0.4}/above, $\overline{B}$/.../below, $A_2$/.../above, $B$/.../above, $\overline{B}$/$\frac{1}{3}$/below, $A_3$/.../below, $B$/.../above, $\overline{B}$/$\frac{4}{15}$/below } \begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=1.25]% {\ArbreTroisDeux} \draw[ForestGreen,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ; \end{EnvArbreProbasTikz} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{EnvArbreProbasTikz}[Type=3x2,Fleche,EspaceNiveau=5,EspaceFeuille=1.25]{$A_1$/\num{0.5}/above,$B$/\num{0.4}/above,$\overline{B}$/.../below,$A_2$/.../above,$B$/.../above,$\overline{B}$/$\frac{1}{3}$/below,$A_3$/.../below,$B$/.../above,$\overline{B}$/$\frac{4}{15}$/below} \draw[ForestGreen,->] (A24)--($(A24)+(2.5,0)$) node[right,font=\sffamily] {code tikz rajouté} ; \end{EnvArbreProbasTikz} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \def\ArbreDeuxTrois{ $A$/\num{0.05}/above, $B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below, $\overline{A}$/.../below, $B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below } \ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{\ArbreDeuxTrois} \def\ArbreTroisTrois{ $A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/, $A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/, $A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/ } \ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=0.7,PoliceProbas=\scriptsize,Police=\small]{\ArbreTroisTrois} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \ArbreProbasTikz[Type=2x3,InclineProbas=false,EspaceFeuille=1.15]{$A$/\num{0.05}/above,$B_1$/\num{0.4}/above,$B_2$/\num{0.35}/,$B_3$//below,$\overline{A}$/.../below,$B_1$/$\frac{2}{15}$/above,$B_2$/.../,$B_3$/$\frac{1}{3}$/below} ~~ \ArbreProbasTikz[Type=3x3,StyleTrait={densely dashed},EspaceFeuille=0.7,PoliceProbas=\scriptsize,Police=\small]{$A_1$/\num{0.05}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_2$/\num{0.80}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/,$A_3$/\num{0.15}/,$B_1$/{1/3}/,$B_2$/{1/3}/,$B_3$/{1/3}/} \end{PresCodeSortiePL} \newpage \section{Petits schémas pour des probabilités continues}\label{schemasprobas} \subsection{Idée} \begin{tipblock} L'idée est de proposer des commandes pour illustrer, sous forme de schémas en \TikZ, des probabilités avec des lois continues (normales et exponentielles). \smallskip Ces \og schémas \fg{} peuvent être insérés en tant que graphique explicatif, ou bien en tant que petite illustration rapide ! \end{tipblock} \begin{PresCodeTexPL}{listing only} \LoiNormaleGraphe[options]{m}{s}{a}{b} \LoiExpoGraphe[options]{l}{a}{b} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \hfill\LoiNormaleGraphe{100}{20}{80}{120}\hspace{3cm}\LoiExpoGraphe{0.001}{250}{1500}\hfill~ \end{PresCodeSortiePL} \begin{cautionblock} Les probabilités \textit{illustrables} sont donc des probabilités \textbf{C}umulées ($P(a\leqslant X\leqslant b)$). \smallskip On peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$. \end{cautionblock} \subsection{Commandes et options} \begin{cautionblock} Quelques \Cle{Clés} sont disponibles pour ces commandes : \begin{itemize} \item la clé \Cle{CouleurAire} pour l'aire sous la courbe ; \hfill{}défaut \Cle{LightGray} \item la clé \Cle{CouleurCourbe} pour la courbe ; \hfill{}défaut \Cle{red} \item la clé \Cle{Largeur} qui sera la largeur (en cm) du graphique ; \hfill{}défaut \Cle{2} \item la clé \Cle{Hauteur} qui sera la hauteur (en cm) du graphique ; \hfill{}défaut \Cle{1} \item un booléen \Cle{AfficheM} qui affiche la moyenne ; \hfill{}défaut \Cle{true} \item un booléen \Cle{AfficheCadre} qui affiche un cadre pour délimiter le schéma. \hfill{}défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} Les commandes sont donc des environnements \TikZ, sans possibilité de \og rajouter \fg{} des éléments. Ces petis \textit{schémas} sont donc vraiment dédiés à \textit{montrer} rapidement une probabilité continue, sans fioriture. \end{noteblock} \begin{PresCodePL}{} Avec centrage vertical sur l'axe des abscisses : \LoiNormaleGraphe [AfficheM=false,CouleurCourbe=Blue,CouleurAire=LightBlue]% {1000}{100}{950}{*} \end{PresCodePL} \begin{PresCodePL}{} Avec quelques modifications : \LoiNormaleGraphe[Largeur=4,Hauteur=2]{150}{12.5}{122}{160} \medskip Avec centrage vertical : \LoiNormaleGraphe[Largeur=5,Hauteur=2.5]{200}{5}{204}{*} \medskip Avec centrage vertical sur l'axe des abscisses : \LoiExpoGraphe [AfficheM=false,CouleurCourbe=Blue,CouleurAire=LightBlue]{0.05}{*}{32} \medskip \LoiExpoGraphe[Largeur=4,Hauteur=2]{0.00025}{5000}{*} \end{PresCodePL} \subsection{Remarques et compléments} \begin{noteblock} Pour le moment, seules les lois (continues) exponentielles et normales sont disponibles, peut-être que d'autres lois seront ajoutées, mais il ne me semble pas très pertinent de proposer des schémas similaires pour des lois discrètes, qui ont des \textit{représentations} assez variables\ldots \end{noteblock} \newpage \section{Nombres aléatoires}\label{entiersaleatoires} \subsection{Idée} \begin{tipblock} \cmaj{2.0.9} L'idée est de proposer des commandes pour générer des nombres aléatoires, pour exploitation ultérieure : \begin{itemize} \item un entier ou un nombre décimal ; \item des nombres entiers, avec ou sans répétitions. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Pour chacune des commandes, le ou les résultats sont stockés dans une \textsf{macro} dont le nom est choisi par l'utilisateur. \end{noteblock} \begin{PresCodeTexPL}{listing only} %entier aléatoire entre a et b \NbAlea{a}{b}{macro} %nombre décimal (n chiffres après la virgule) aléatoire entre a et b+1 (exclus) \NbAlea[n]{a}{b}{macro} %création d'un nombre aléatoire sous forme d'une macro \VarNbAlea{macro}{calculs} %liste d'entiers aléatoires \TirageAleatoireEntiers[options]{macro} \end{PresCodeTexPL} \begin{PresCodePL}{} %nombre aléatoire entre 1 et 50, stocké dans \PremierNbAlea Entier entre 1 et 50 : \NbAlea{1}{50}{\PremierNbAlea}\PremierNbAlea \\ %nombre aléatoire créé à partir du 1er, stocké dans \DeuxiemeNbAlea Entier à partir du précédent : \VarNbAlea{\DeuxiemeNbAlea}{\PremierNbAlea+randint(0,10)}\DeuxiemeNbAlea \\ %nombre aléatoire décimal (au millième) entre 0 et 10+1 (exclus), stocké dans \PremierDecAlea Décimal entre 0 et $10,999\ldots$ : \NbAlea[3]{0}{10}{\PremierDecAlea}\PremierDecAlea \\ %liste de 6 nombres, sans répétitions, entre 1 et 50 Liste par défaut (6 entre 1 et 50) : \TirageAleatoireEntiers{\PremiereListeAlea}\PremiereListeAlea \end{PresCodePL} \begin{noteblock} Les listes créées sont exploitables, \textit{a posteriori}, par le package \ctex{listofitems} par exemple ! \end{noteblock} \begin{PresCodePL}{} Liste générée : \TirageAleatoireEntiers{\TestListeA}\TestListeA Liste traitée : \readlist*\LISTEa{\TestListeA}\showitems{\LISTEa} \end{PresCodePL} \pagebreak \subsection{Clés et options} \begin{cautionblock} Quelques clés sont disponibles pour la commande \ctex{TirageAleatoireEntiers} : \begin{itemize} \item la clé \Cle{ValMin} pour préciser borne inférieure de l'intervalle ;\hfill{}défaut \Cle{1} \item la clé \Cle{ValMax} pour préciser borne supérieure de l'intervalle ;\hfill{}défaut \Cle{50} \item la clé \Cle{NbVal} qui est le nombre d'entiers à générer ;\hfill{}défaut \Cle{6} \item la clé \Cle{Sep} pour spécifier le séparateur d'éléments ;\hfill{}défaut \Cle{,} \item la clé \Cle{Tri} parmi \Cle{non/croissant/decroissant} pour trier les valeurs ;\hfill{}défaut \Cle{non} \item le booléen \Cle{Repetition} pour autoriser la répétition d'éléments.\hfill{}défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} Une liste de 15 valeurs (différentes), entre 10 et 100, stockée dans la macro MaListeA : \\ Liste : \TirageAleatoireEntiers[ValMin=10,ValMax=100,NbVal=15]{\MaListeA}\MaListeA \\ Une liste de 12 valeurs (différentes), entre 1 et 50, ordre croissant : \\ Liste : \TirageAleatoireEntiers[ValMin=1,ValMax=50,NbVal=12,Tri=croissant]% {\MaListeB}\MaListeB \\ Une liste de 12 valeurs (différentes), entre 1 et 50, ordre décroissant : \\ Liste : \TirageAleatoireEntiers[ValMin=1,ValMax=50,NbVal=12,Tri=decroissant]% {\MaListeC}\MaListeC \\ 15 tirages de dé à 6 faces : \\ \TirageAleatoireEntiers[ValMin=1,ValMax=6,NbVal=15,Repetition]{\TestDes}\TestDes \end{PresCodePL} \begin{PresCodePL}{} Une liste (10) pour le Keno\textcopyright, ordonnée, et séparée par des \texttt{-} : \TirageAleatoireEntiers[ValMin=1,ValMax=70,NbVal=10,Tri=croissant,Sep={-}]{\ListeKeno} $\ListeKeno$ \setsepchar{-}\readlist*\KENO{\ListeKeno}\showitems{\KENO} \end{PresCodePL} \newpage \section{Combinatoire}\label{combinatoire} \subsection{Idée} \begin{tipblock} L'idée est de proposer une commande pour calculer un arrangement ou une combinaison, en utilisant les capacités de calcul du package \ctex{xint} (\cmaj{2.5.4}). \end{tipblock} \begin{PresCodeTexPL}{listing only} \Arrangement(*)[option]{p}{n} \Combinaison(*)[option]{p}{n} \CalculAnp{p}{n} ou \CalculCnp{p}{n} dans un calcul via \xinteval{...} \end{PresCodeTexPL} \subsection{Utilisation} \begin{cautionblock} Peu de paramétrage pour ces commandes qui permettent de calculer $A_n^p$ et $\binom{n}{p}$ : \begin{itemize} \item les versions étoilées ne formatent pas le résultat grâce à \ctex{\textbackslash num} de \ctex{sinuitx} ; \item le booléen \Cle{Notation} pour avoir la notation au début ; \hfill~défaut \Cle{false} \item le booléen \Cle{NotationAncien} pour avoir la notation \og ancienne \fg{} des combinaisons au début ; \hfill~défaut \Cle{false} \item le booléen \Cle{Formule} permet de présenter la formule avant le résultat ; \hfill~défaut \Cle{false} \item le premier argument, \textit{obligatoire}, est la valeur de $p$ ; \item le second argument, \textit{obligatoire}, est la valeur de $n$. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} On a $A_{20}^3=\Arrangement*{3}{20}$ en non formaté, et $\Arrangement[Notation]{3}{20}$ en formaté avec la notation au début. \end{PresCodePL} \begin{PresCodePL}{} On a $\displaystyle\binom{20}{3}=\Combinaison*{3}{20}$ en non formaté,~ et $\displaystyle\Combinaison[Notation]{3}{20}$ en formaté avec la notation au début.\\ Et $\dbinom{20}{3}+\dbinom{20}{4} = \num{\xinteval{\CalculCnp{3}{20}+\CalculCnp{4}{20}}}$. \end{PresCodePL} \begin{PresCodePL}{} On a $\displaystyle\Arrangement[Notation,Formule]{3}{20}$. \end{PresCodePL} \begin{PresCodePL}{} On a $\displaystyle\Combinaison[NotationAncien,Formule]{3}{20}$. %ancienne notation FR \end{PresCodePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Outils pour l'arithmétique} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Outils pour l'arithmétique} \section{Conversions binaire/hexadécimal/décimal}\label{conversions} \subsection{Idée} \begin{tipblock} L'idée est de \textit{compléter} les possibilités offertes par le package \ctex{xintbinhex}, en mettant en forme quelques conversions : \begin{itemize} \item décimal en binaire avec blocs de 4 chiffres en sortie ; \item conversion binaire ou hexadécimal en décimal avec écriture polynomiale. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{noteblock} Le package \ctex{xintbinhex} est la base de ces macros, puisqu'il permet de faire des conversions directes ! \smallskip Les macros présentées ici ne font que les intégrer dans un environnement adapté à une correction ou une présentation ! \end{noteblock} \begin{PresCodeTexPL}{listing only} \xintDecToHex{100} \xintDecToBin{51} \xintHexToDec{A4C} \xintBinToDec{110011} \xintBinToHex{11111111} \xintHexToBin{ACDC} \xintCHexToBin{3F} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \xintDecToHex{100} \xintDecToBin{51} \xintHexToDec{A4C} \xintBinToDec{110011} \xintBinToHex{11111111} \xintHexToBin{ACDC} \xintCHexToBin{3F} \end{PresCodeSortiePL} \subsection{Conversion décimal vers binaire} \begin{PresCodeTexPL}{listing only} \ConversionDecBin(*)[clés]{nombre} \end{PresCodeTexPL} \begin{cautionblock} Concernant la commande en elle même, peu de paramétrage : \begin{itemize} \item la version \textit{étoilée} qui permet de ne pas afficher de zéros avant pour \og compléter \fg{} ; \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} \item l'argument, \textit{obligatoire}, est le nombre entier à convertir. \end{itemize} Le formatage est géré par \ctex{sinuitx}, le mieux est donc de positionner la commande dans un environnement mathématique. \smallskip Les nombres écrits en binaire sont, par défaut, présentés en bloc(s) de 4 chiffres. \end{cautionblock} \begin{PresCodeTexPL}{listing only} % Conversion avec affichage de la base et par bloc de 4 $\ConversionDecBin{415}$ % Conversion avec affichage de la base et sans forcément des blocs de 4 $\ConversionDecBin*{415}$ % Conversion sans affichage de la base et par bloc de 4 $\ConversionDecBin[AffBase=false]{415}$ % Conversion sans affichage de la base et sans forcément des blocs de 4 $\ConversionDecBin*[AffBase=false]{415}$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\ConversionDecBin{415}$ \smallskip $\ConversionDecBin*{415}$ \smallskip $\ConversionDecBin[AffBase=false]{415}$ \smallskip $\ConversionDecBin*[AffBase=false]{415}$ \end{PresCodeSortiePL} \subsection{Conversion binaire vers hexadécimal} \begin{noteblock} L'idée est ici de présenter la conversion, grâce à la conversion \og directe \fg{} par blocs de 4 chiffres : \begin{itemize} \item la macro rajoute éventuellement les zéros pour compléter ; \item elle découpe par blocs de 4 chiffres binaires ; \item elle présente la conversion de chacun des blocs de 4 chiffres binaires ; \item elle affiche la conversion en binaire. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{PresCodeTexPL}{listing only} \ConversionBinHex[clés]{nombre} \end{PresCodeTexPL} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} \item le booléen \Cle{Details} qui permet d'afficher ou le détail par bloc de 4. \hfill{}défaut \Cle{true} %\item la clé \Cle{trait} qui permet de modifier l'épaisseur du crochet. \hfill{}défaut \Cle{0.5pt} \end{itemize} Le formatage est géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique. \end{cautionblock} \begin{PresCodeTexPL}{listing only} %conversion avec détails et affichage de la base $\ConversionBinHex{110011111}$ %conversion sans détails et affichage de la base $\ConversionBinHex[Details=false]{110011111}$ %conversion sans détails et sans affichage de la base $\ConversionBinHex[AffBase=false,Details=false]{110011111}$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\ConversionBinHex{110011111}$ $\ConversionBinHex[Details=false]{110011111}$ $\ConversionBinHex[AffBase=false,Details=false]{110011111}$ \end{PresCodeSortiePL} \pagebreak \subsection{Conversion binaire ou hexadécimal en décimal} \begin{noteblock} L'idée est ici de présenter la conversion, grâce à l'écriture polynômiale : \begin{itemize} \item écrit la somme des puissances ; \item convertir si besoin les \textit{chiffres} hexadécimal ; \item peut ne pas afficher les monômes de coefficient 0. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{noteblock} \begin{PresCodeTexPL}{listing only} \ConversionVersDec[clés]{nombre} \end{PresCodeTexPL} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{BaseDep} qui est la base de départ (2 ou 16 !) ; \hfill{}défaut \Cle{2} \item le booléen \Cle{AffBase} qui permet d'afficher ou non la base des nombres ; \hfill{}défaut \Cle{true} \item le booléen \Cle{Details} qui permet d'afficher ou le détail par bloc de 4 ; \hfill{}défaut \Cle{true} \item le booléen \Cle{Zeros} qui affiche les chiffres 0 dans la somme. \hfill{}défaut \Cle{true} \end{itemize} Le formatage est toujours géré par le package \ctex{sinuitx}, le mieux est de positionner la commande dans un environnement mathématique. \end{cautionblock} \begin{PresCodeTexPL}{listing only} %conversion 16->10 avec détails et affichage de la base et zéros $\ConversionVersDec[BaseDep=16]{19F}$ %conversion 2->10 avec détails et affichage de la base et zéros $\ConversionVersDec{110011}$ %conversion 2->10 avec détails et affichage de la base et sans zéros $\ConversionVersDec[Zeros=false]{110011}$ %conversion 16->10 sans détails et affichage de la base et avec zéros $\ConversionVersDec[BaseDep=16,Details=false]{AC0DC}$ %conversion 16->10 avec détails et sans affichage de la base et sans zéros $\ConversionVersDec[Eeros=false,Basedep=16]{AC0DC}$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\ConversionVersDec[BaseDep=16]{19F}$ $\ConversionVersDec{110011}$ $\ConversionVersDec[Zeros=false]{110011}$ $\ConversionVersDec[BaseDep=16,Details=false]{AC0DC}$ $\ConversionVersDec[Zeros=false,BaseDep=16]{AC0DC}$ \end{PresCodeSortiePL} \newpage \section{Conversion \og présentée \fg{} d'un nombre en base décimale}\label{convrestes} \subsection{Idée} \begin{tipblock} L'idée est de proposer une \og présentation \fg{} par divisions euclidiennes pour la conversion d'un entier donné en base 10 dans une base quelconque. \smallskip Les commandes de la section précédente donne \textit{juste} les résultats, dans cette section il y a en plus la présentation de la conversion. \smallskip La commande utilise -- par défaut -- du code \TikZ{} en mode \ctex{overlay}, donc on pourra déclarer -- si ce n'est pas fait -- dans le préambule, la commande qui suit. \end{tipblock} \begin{PresCodeTexPL}{listing only} ... \tikzstyle{every picture}+=[remember picture] ... \end{PresCodeTexPL} \subsection{Code et clés} \begin{PresCodePL}{} %conversion basique \ConversionDepuisBaseDix{78}{2} \end{PresCodePL} \begin{noteblock} La \og tableau \fg, qui est géré par \ctex{array} est inséré dans un \ctex{ensuremath}, donc les \ctex{\$...\$} ne sont pas utiles. \end{noteblock} \begin{PresCodeTexPL}{listing only} \ConversionDepuisBaseDix[options]{nombre en base 10}{base d'arrivée} \end{PresCodeTexPL} \begin{cautionblock} Quelques options pour cette commande : \begin{itemize} \item la clé \Cle{Couleur} pour la couleur du \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{red} \item la clé \Cle{DecalH} pour gérer le décalage H du \og rectangle \fg{}, qui peut être donné soit sous la forme \Cle{Esp} ou soit sous la forme \Cle{espgauche/espdroite}; \hfill{}défaut \Cle{2pt} \item la clé \Cle{DecalV} pour le décalage vertical du \og rectangle \fg{} ; \hfill{}défaut \Cle{3pt} \item la clé \Cle{Noeud} pour le préfixe du nœud du premier et du dernier reste (pour utilisation en \TikZ) ; \hfill{}défaut \Cle{EEE} \item le booléen \Cle{Rect} pour afficher ou non le \og rectangle \fg{} des restes ; \hfill{}défaut \Cle{true} \item le booléen \Cle{CouleurRes} pour afficher ou non la conversion en couleur (identique au rectangle). \hfill{}défaut \Cle{false} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} %conversion avec changement de couleur \ConversionDepuisBaseDix[Couleur=DarkBlue]{45}{2} %conversion sans le rectangle Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}. %conversion avec gestion du decalh pour le placement précis du rectangle \ConversionDepuisBaseDix[Couleur=Goldenrod,DecalH=6pt/2pt]{1012}{16} %conversion avec noeud personnalisé et réutilisation \ConversionDepuisBaseDix[Couleur=ForestGreen,CouleurRes,Noeud=TEST]{100}{9}. \begin{tikzpicture} \draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ; \end{tikzpicture} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \ConversionDepuisBaseDix[Couleur=DarkBlue]{45}{2} \medskip Par divisions euclidiennes successives, \ConversionDepuisBaseDix[Rect=false]{54}{3}. \medskip \ConversionDepuisBaseDix[Couleur=Goldenrod,DecalH=6pt/2pt]{1012}{16} \medskip On obtient donc \ConversionDepuisBaseDix[Couleur=ForestGreen,CouleurRes,Noeud=TEST]{100}{9}. \begin{tikzpicture} \draw[overlay,ForestGreen,thick,->] (TEST2.south east) to[bend right] ++ (3cm,-1cm) node[right] {test } ; \end{tikzpicture} \vspace{1.5cm} ~ \end{PresCodeSortiePL} \newpage \section{Algorithme d'Euclide pour le PGCD}\label{prespgcd} \subsection{Idée} \begin{tipblock} L'idée est de proposer une \og présentation \fg{} de l'algorithme d'Euclide pour le calcul du PGCD de deux entiers. Le package \ctex{xintgcd} permet déjà de le faire, il s'agit ici de travailler sur la \textit{mise en forme}. \end{tipblock} \begin{PresCodeTexPL}{listing only} \PresentationPGCD[options]{a}{b} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \tikzstyle{every picture}+=[remember picture] ... \PresentationPGCD{150}{27} \end{PresCodeTexPL} \begin{PresCodePL}{} \PresentationPGCD{150}{27} \end{PresCodePL} \begin{warningblock} La mise en valeur du dernier reste non nul est géré par du code \TikZ, en mode \ctex{overlay}, donc il faut bien penser à déclarer dans le préambule : \ctex{\textbackslash{}tikzstyle\{every picture\}+=[remember picture]} \end{warningblock} \subsection{Options et clés} \begin{cautionblock} Quelques options disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Couleur} qui correspond à la couleur pour la mise en valeur ; \hfill{}défaut \Cle{red} \item la clé \Cle{DecalRect} qui correspond à l'écartement du rectangle de mise en valeur ; \hfill{}défaut \Cle{2pt} \item le booléen \Cle{Rectangle} qui gère l'affichage ou non du rectangle de mise ne valeur ; \hfill{}défaut \Cle{true} \item la clé \Cle{Noeud} qui gère le préfixe du nom du nœud \TikZ{} du rectangle (pour exploitation ultérieure) ; \hfill{}défaut \Cle{FFF} \item le booléen \Cle{CouleurResultat} pour mettre ou non en couleur de PGCD ; \hfill{}défaut \Cle{false} \item le booléen \Cle{AfficheConclusion} pour afficher ou non la conclusion ; \hfill{}défaut \Cle{true} \item le booléen \Cle{AfficheDelimiteurs} pour afficher ou non les délimiteurs (accolade gauche et trait droit). \hfill{}défaut \Cle{true} \end{itemize} \medskip Le rectangle de mise en valeur est donc un nœud \TikZ{} qui sera nommé, par défaut \ctex{FFF1}. \medskip La présentation est dans un environnement \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas indispensables. \end{cautionblock} \begin{PresCodePL}{} \PresentationPGCD[CouleurResultat]{150}{27} \end{PresCodePL} \begin{PresCodePL}{} \PresentationPGCD[CouleurResultat,Couleur=ForestGreen]{1250}{450}. \PresentationPGCD[CouleurResultat,Couleur=DarkBlue]{13500}{2500}. \PresentationPGCD[Rectangle=false]{420}{540}. \\ D'après l'algorithme d'Euclide, on a $\left| \PresentationPGCD[Couleur=LightSkyBlue,AfficheConclusion=false, AfficheDelimiteurs=false]% {123456789}{9876} \right.$ \begin{tikzpicture} \draw[overlay,LightSkyBlue,thick,<-] (FFF1.east) to[bend right] ++ (1cm,0.75cm) node[right] {dernier reste non nul} ; \end{tikzpicture} \end{PresCodePL} \subsection{Compléments} \begin{noteblock} La présentation des divisions euclidiennes est gérée par un tableau du type \ctex{array}, avec alignement vertical de symboles \ctex{=} et \ctex{+}. Par défaut, les délimiteurs choisis sont donc l'accolade gauche et le trait droit, mais la clé booléenne \Cle{AfficheDelimiteurs=false} permet de choisir des délimiteurs différents. \end{noteblock} \begin{PresCodePL}{} $\left[ \PresentationPGCD[AfficheConclusion=false,AfficheDelimiteurs=false]{1234}{5} \right]$ \end{PresCodePL} \newpage \section{Résolution d'une équation diophantienne}\label{eqdioph} \subsection{Idée} \begin{tipblock} L'idée est de proposer une résolution d'équation diophantienne du type $ax+by=c$ avec $(a;b;c) \in \mathbb{Z}^3$. \smallskip Le \textit{code} se charge de tester les différentes conditions d'existence, et d'adapter la rédaction (fixée et non modifiable\ldots) aux différentes situations : \begin{itemize} \item cas où $\text{PGCD}(a;b)=1$ ;\hfill~existence de solutions \item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \mid c$;\hfill~existence de solutions \item cas où $\text{PGCD}(a;b) \neq 1$ et $\text{PGCD}(a;b) \not\mid c$.\hfill~pas de solution \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{warningblock} Logiquement le \textit{code} se charge de \textit{parenthéser} de manière automatique pour les nombres négatifs, mais il se peut que certains cas particuliers puissent donner des résultats \og non esthétiques \fg{}\ldots \end{warningblock} \begin{PresCodeTexPL}{listing only} \EquationDiophantienne[Clés]{equation} \end{PresCodeTexPL} \subsection{Options et clés} \begin{cautionblock} Concernant les Clés disponibles pour cette commande, à donner entre \ctex{[...]} : \begin{itemize} \item la clé \Cle{Lettre} pour spécifier le \textit{nom} de l'équation ; \hfill{}défaut \Cle{E} \item la clé \Cle{Inconnues} qui paramètre les noms des inconnues, sous la forme \Cle{x/y} ; \hfill{}défaut \Cle{x/y} \item la clé \Cle{Entier} qui gère le nom de l'entier dans la solution ; \hfill{}défaut \Cle{k} \item le booléen \Cle{Cadres} pour mettre en valeur les solutions ;\hfill{}défaut \Cle{false} \item le booléen \Cle{PresPGCD} présenter le calcul du PGCD de $|a|$ et de $|b|$.\hfill{}défaut \Cle{true} \end{itemize} L'argument obligatoire, et entre \ctex{\{...\}} est quant à lui l'équation, en langage \og naturel \fg{} du type \ctex{ax+by=c} (le \textit{code} se charge d'extraire les coefficients, donc pas besoin des signes *). \end{cautionblock} \begin{PresCodePL}{} \EquationDiophantienne{48x+18y=3} \end{PresCodePL} \begin{PresCodePL}{} \EquationDiophantienne[PresPGCD=false]{48x+18y=-5} \end{PresCodePL} \pagebreak \begin{PresCodePL}{} \EquationDiophantienne{3x+4y=1} \end{PresCodePL} \pagebreak \begin{PresCodePL}{} \EquationDiophantienne[Cadres,Inconnues=u/v,Entier=l]{48u+18v=12} \end{PresCodePL} \pagebreak \begin{PresCodePL}{} \EquationDiophantienne{47x-18y=1} \end{PresCodePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Écritures, simplifications} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Écritures, simplifications} \section{Simplification sous forme d'une fractions}\label{convfrac} \subsection{Idée} \begin{tipblock} L'idée est d'obtenir une commande pour \textit{simplifier} un calcul sous forme de fraction irréductible. \end{tipblock} \begin{PresCodeTexPL}{listing only} \ConversionFraction(*)[option de formatage]{calcul} \end{PresCodeTexPL} \subsection{Commande et options} \begin{cautionblock} Quelques explications sur cette commande : \begin{itemize} \item \cmaj{2.5.1} la version \textit{étoilée} force l'écriture du signe \og $-$ \fg{} sur le numérateur ; \item le premier argument, \textit{optionnel} et entre \textsf{[...]} permet de spécifier un formatage du résultat : \begin{itemize} \item \Cle{t} pour l'affichage de la fraction en mode \textsf{tfrac} ; \item \Cle{d} pour l'affichage de la fraction en mode \textsf{dfrac} ; \item \Cle{n} pour l'affichage de la fraction en mode \textsf{nicefrac} ; \item \Cle{dec} pour l'affichage du résultat en mode \texttt{décimal} (sans arrondi !) ; \item \Cle{dec=k} pour l'affichage du résultat en mode \texttt{décimal} arrondi à $10^{-k}$ ; \end{itemize} \item le second argument, \textit{obligatoire}, est quant à lui, le calcul en syntaxe \textsf{xint}. \end{itemize} À noter que la macro est dans un bloc \ctex{ensuremath} donc les \ctex{\$...\$} ne sont pas nécessaires. \end{cautionblock} \begin{PresCodeTexPL}{listing only} \ConversionFraction{-10+1/3*(-5/16)} %sortie par défaut \ConversionFraction*{-10+1/3*(-5/16)} %sortie fraction avec - sur numérateur \ConversionFraction[d]{-10+1/3*(-5/16)} %sortie en displaystyle \ConversionFraction[n]{-10+1/3*(-5/16)} %sortie en nicefrac \ConversionFraction[dec=4]{-10+1/3*(-5/16)} %sortie en décimal arrondi à 0,0001 \ConversionFraction{2+91/7} %entier formaté \ConversionFraction{111/2145} \ConversionFraction{111/3} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \ConversionFraction{-10+1/3*(-5/16)} \smallskip \ConversionFraction*{-10+1/3*(-5/16)} \smallskip \ConversionFraction[d]{-10+1/3*(-5/16)} \smallskip \ConversionFraction[n]{-10+1/3*(-5/16)} \smallskip \ConversionFraction[dec=4]{-10+1/3*(-5/16)} \smallskip \ConversionFraction{2+91/7} \smallskip \ConversionFraction{111/2145} \smallskip \ConversionFraction{111/3} \end{PresCodeSortiePL} \begin{PresCodePL}{} $\frac{111}{2145}=\ConversionFraction{111/2145}$ \\ $\frac{3}{15}=\ConversionFraction[]{3/15}$ \\ $\tfrac{3}{15}=\ConversionFraction[t]{3/15}$ \\ $\dfrac{3}{15}=\ConversionFraction[d]{3/15}$ \\ $\dfrac{0,42}{0,015}=\ConversionFraction[d]{0.42/0.015}$ \\ $\dfrac{0,41}{0,015}=\ConversionFraction[d]{0.41/0.015}$ \\ $\dfrac{1}{7}-\dfrac{3}{8}=\ConversionFraction[d]{1/7-3/8}$ \\ $\ConversionFraction[d]{1+1/2}$ \\ $\ConversionFraction{0.1/0.7+30/80}$ \end{PresCodePL} \begin{noteblock} A priori le package \ctex{xint} permet de s'en sortir pour des calculs \og simples \fg, je ne garantis pas que tout calcul ou toute division donne un résultat \textit{satisfaisant} ! \end{noteblock} \pagebreak \section{Ensembles}\label{ensembles} \subsection{Idée} \begin{tipblock} L'idée est d'obtenir une commande pour simplifier l'écriture d'un ensemble d'éléments, en laissant gérer les espaces. Les délimiteurs de l'ensemble créé sont toujours \textsf{\{~~\}}. \end{tipblock} \begin{PresCodeTexPL}{listing only} \EcritureEnsemble[clés]{liste} \end{PresCodeTexPL} \subsection{Commande et options} \begin{cautionblock} Peu d'options pour ces commandes : \begin{itemize} \item le premier argument, \textit{optionnel}, permet de spécifier les \Cle{Clés} : \begin{itemize} \item clé \Cle{Sep} qui correspond au délimiteur des éléments de l'ensemble ; \hfill{}défaut \Cle{;} \item clé \Cle{Option} qui est un code (par exemple \textsf{strut}\dots) inséré avant les éléments ;\hfill{}défaut \Cle{vide} \item un booléen \Cle{Mathpunct} qui permet de préciser si on utilise l'espacement mathématique \textsf{mathpunct}. \hfill{}défaut \Cle{true} \end{itemize} \item le second, \textit{obligatoire}, est la \textsf{liste} des éléments, séparés par \textsf{/}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} $\EcritureEnsemble{a/b/c/d/e}$ $\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$ $\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$ $\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$ % \strut pour "augmenter" un peu la hauteur des {} $\EcritureEnsemble{ \frac{1}{1+\frac{1}{3}} / b / c / d / \frac{1}{2} }$ \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\EcritureEnsemble{a/b/c/d/e}$ \smallskip $\EcritureEnsemble[Mathpunct=false]{a/b/c/d/e}$ \smallskip $\EcritureEnsemble[Sep={,}]{a/b/c/d/e}$ \smallskip $\EcritureEnsemble[Option={\strut}]{a/b/c/d/e}$ \smallskip $\EcritureEnsemble{ \displaystyle\frac{1}{1+\frac{1}{3}} / b / c / d / \displaystyle\frac{1}{2} }$ \end{PresCodeSortiePL} \begin{noteblock} Attention cependant au comportement de la commande avec des éléments en mode \textsf{mathématique}, ceux-ci peuvent générer une erreur si \textsf{displaystyle} n'est pas utilisé\ldots \end{noteblock} \newpage \section{Écriture d'un trinôme, trinôme aléatoire}\label{trinome} \subsection{Idée} \begin{tipblock} L'idée est de proposer une commande pour écrire, sous forme développée réduite, un trinôme en fonction de ses coefficients $a$, $b$ et $c$ (avec $a\neq0$), avec la gestion des coefficients nuls ou égaux à $\pm1$. \smallskip En combinant avec le package \ctex{xfp} et fonction de générateur d'entiers aléatoires, on peut de ce fait proposer une commande pour générer aléatoirement des trinômes à coefficients entiers (pour des fiches d'exercices par exemple). \smallskip L'affichage des monômes est géré par le package \ctex{siunitx} et le tout est dans un environnement \ctex{ensuremath}. \end{tipblock} \begin{PresCodeTexPL}{listing only} \EcritureTrinome[options]{a}{b}{c} \end{PresCodeTexPL} \begin{PresCodePL}{} \EcritureTrinome{1}{7}{0}\\ \EcritureTrinome{1.5}{7.3}{2.56}\\ \EcritureTrinome{-1}{0}{12}\\ \EcritureTrinome{-1}{-5}{0} \end{PresCodePL} \subsection{Clés et options} \begin{cautionblock} Quelques clés et options sont disponibles : \begin{itemize} \item la clé booléenne \Cle{Alea} pour autoriser les coefficients aléatoires ;\hfill{}défaut \Cle{false} \item la clé booléenne \Cle{Anegatif} pour autoriser $a$ à être négatif.\hfill{}défaut \Cle{true} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} La clé \Cle{Alea} va modifier la manière de saisir les coefficients, il suffira dans ce cas de préciser les bornes, sous la forme \ctex{valmin,valmax}, de chacun des coefficients. C'est ensuite le package \ctex{xfp} qui va se charger de générer les coefficients. \end{noteblock} \begin{PresCodePL}{} Avec $a$ entre 1 et 5 (et signe aléatoire) puis $b$ entre $-2$ et 7 puis $c$ entre $-10$ et 20 : \\ $f(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ $g(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ $h(x)=\EcritureTrinome[Alea]{1,5}{-5,5}{-10,10}$\\ Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ entre 0 et 4 : \\ \EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\ \EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4}\\ \EcritureTrinome[Alea,Anegatif=false]{1,10}{-2,2}{0,4} \end{PresCodePL} \newpage \section{Simplification de racines}\label{simplracine} \subsection{Idée} \begin{tipblock} \cmaj{2.1.0} L'idée est de proposer une commande pour simplifier \textit{automatiquement} une racine carrée, sous la forme $\frac{a\sqrt{b}}{c}$ avec $\frac{a}{c}$ irréductible et $b$ le \frquote{plus petit possible}. \end{tipblock} \begin{PresCodeTexPL}{listing only} \SimplificationRacine{expression ou calcul} \end{PresCodeTexPL} \begin{PresCodePL}{} \SimplificationRacine{48} \\ \SimplificationRacine{100/34}\\ \SimplificationRacine{99999} \\ \SimplificationRacine{1500*0.31*(1-0.31)}\\ \end{PresCodePL} \begin{noteblock} C'est -- comme souvent -- le package \ctex{xint} qui s'occupe en interne des calculs, et qui devrait donner des résultats satisfaisants dans la majorité des cas (attention aux \textit{grands nombres}\ldots) \smallskip La commande ne fait pas office de \textit{calculatrice}, elle ne permet \textit{que} de simplifier \textit{une} racine carrée (donc transformer si besoin !). \end{noteblock} \subsection{Exemples} \begin{PresCodePL}{} %Simplification d'un module de complexe $\left| 4+6\text{i}\right| = \sqrt{4^2+6^2} = \sqrt{\xinteval{4**2+6**2}}=\SimplificationRacine{4**2+6**2}$ %Simplification n°1 $\frac{1}{\sqrt{6}}=\left(\sqrt{\frac{1}{6}}\right)=\SimplificationRacine{1/6}$ %Simplification n°2 $\frac{42}{\sqrt{5}}=\left(\sqrt{\frac{42^2}{5}}\right)=\SimplificationRacine{(42*42)/5}$ %Écart-type d'une loi binomiale $\sqrt{\num{150}\times\num{0.35}\times(1-\num{0.35})} = \displaystyle\SimplificationRacine{150*0.35*(1-0.35)}$ \end{PresCodePL} \newpage \section{Mesure principale d'un angle}\label{mesureprincipale} \subsection{Idée} \begin{tipblock} \cmaj{2.1.2} L'idée est de proposer (sur une suggestion de Marylyne Vignal) une commande pour déterminer la mesure principale d'un angle en radian. \end{tipblock} \begin{PresCodeTexPL}{listing only} \MesurePrincipale[booléens]{angle} %dans un mode mathématique \end{PresCodeTexPL} \begin{noteblock} La commande est à insérer dans un environnement mathématique, via \ctex{\$...\$} ou \ctex{\textbackslash[...\textbackslash]}. L'angle est donné sous forme \textit{explicite} avec la chaîne \ctex{pi}. \end{noteblock} \subsection{Exemples} \begin{cautionblock} Pour cette commande : \begin{itemize} \item le booléen \Cle{d} permet de forcer l'affichage en \ctex{displaystyle} ; \hfill{}défaut \Cle{false} \item le booléen \Cle{Crochets} permet d'afficher le \textit{modulo} entre crochets (sinon parenthèses) ; \hfill{}défaut \Cle{false} \item \cmaj{2.6.0} le booléen \Cle{Brut} pour afficher uniquement la mesure principale ; \hfill{}défaut \Cle{false} \item l'argument \textit{obligatoire} est en écriture \textit{en ligne}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodeTexPL}{listing only} $\MesurePrincipale[d]{54pi/7}$ $\MesurePrincipale[d]{-128pi/15}$ $\MesurePrincipale{3pi/2}$ $\MesurePrincipale[Crochets]{5pi/2}$ $\MesurePrincipale{-13pi}$ $\MesurePrincipale{28pi}$ $\MesurePrincipale[d]{14pi/4}$ $\MesurePrincipale[Crochets]{14pi/7}$ $\dfrac{121\pi}{12} = \MesurePrincipale[Brut]{121pi/12}$ à $2\pi$ près \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} $\MesurePrincipale[d]{54pi/7}$ \medskip $\MesurePrincipale{-128pi/15}$ \medskip $\MesurePrincipale{3pi/2}$ \medskip $\MesurePrincipale[Crochets]{5pi/2}$ \medskip $\MesurePrincipale{-13pi}$ \medskip $\MesurePrincipale{28pi}$ \medskip $\MesurePrincipale[d]{14pi/4}$ \medskip $\MesurePrincipale[Crochets]{14pi/7}$ \medskip $\dfrac{121\pi}{12} = \MesurePrincipale[d,Brut]{121pi/12}$ à $2\pi$ près \end{PresCodeSortiePL} \pagebreak \section{Lignes trigonométriques}\label{lignestrigo} \subsection{Idée} \begin{tipblock} \cmaj{2.6.0} L'idée est de proposer pour déterminer les lignes trigonométriques (cos, sin et tan) d'angles classiques, formés des \og $\pi$ \fg{} et \og $\pi$ sur 2 ; 3 ; 4 ; 5 ; 6 ; 8 ; 10 ; 12 \fg{}. \smallskip La commande détermine -- et affiche si demandée la réduction -- et la valeur exacte de la ligne trigonométrique demandée. \end{tipblock} \begin{PresCodeTexPL}{listing only} \LigneTrigo(*)[booléens]{cos/sin/tan}(angle) \end{PresCodeTexPL} \subsection{Commande} \begin{cautionblock} Pour cette commande : \begin{itemize} \item la version \textit{étoilée} n'affiche pas l'angle initial ; \item le booléen \Cle{d} permet de forcer l'affichage en \ctex{displaystyle} ; \hfill{}défaut \Cle{false} \item le booléen \Cle{Etapes} permet d'afficher la réduction avant le résultat ; \hfill{}défaut \Cle{false} \item le premier argument \textit{obligatoire}, entre \ctex{\{...\}} est le type de calcul demandé, parmi \Cle{cos / sin / tan} ; \item le second argument \textit{obligatoire}, entre \ctex{(...)} est l'angle, donné en ligne, avec \ctex{pi}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{PresCodePL}{} $\LigneTrigo{cos}(56pi/3)$ et $\LigneTrigo{sin}(56pi/3)$ et $\LigneTrigo{tan}(56pi/3)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(56pi/3)$ et $\LigneTrigo[d,Etapes]{sin}(56pi/3)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo*[d,Etapes]{cos}(2pi/3)$ et $\LigneTrigo*[d,Etapes]{sin}(2pi/3)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(146pi)$ et $\LigneTrigo[d,Etapes]{sin}(146pi)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(-551pi/12)$ et $\LigneTrigo[d,Etapes]{sin}(-551pi/12)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(447pi/8)$ et $\LigneTrigo[d,Etapes]{sin}(447pi/8)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo*[d,Etapes]{cos}(-pi/8)$ et $\LigneTrigo*[d,Etapes]{sin}(-pi/8)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(-595pi/12)$ et $\LigneTrigo[d,Etapes]{sin}(-595pi/12)$ et $\LigneTrigo[d,Etapes]{tan}(-595pi/12)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(33pi/10)$ et $\LigneTrigo[d,Etapes]{sin}(33pi/10)$\\ $\LigneTrigo[d,Etapes]{tan}(33pi/10)$ \end{PresCodePL} \begin{PresCodePL}{} $\LigneTrigo[d,Etapes]{cos}(-14pi/5)$ et $\LigneTrigo[d,Etapes]{sin}(-14pi/5)$\\ $\LigneTrigo[d,Etapes]{tan}(-14pi/5)$ \end{PresCodePL} \subsection{Valeurs disponibles} \begin{noteblock} Les valeurs disponibles sont : \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{9}{Q[1.195cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & $0$ & $\nicefrac{\pi}{6}$ & $\nicefrac{\pi}{4}$ & $\nicefrac{\pi}{3}$ & $\nicefrac{\pi}{2}$ & $\nicefrac{2\pi}{3}$ & $\nicefrac{3\pi}{4}$ & $\nicefrac{5\pi}{6}$ & $\pi$ \\ cos & $\LigneTrigo{cos}(0)$ & $\LigneTrigo{cos}(pi/6)$ & $\LigneTrigo{cos}(pi/4)$ & $\LigneTrigo{cos}(pi/3)$ & $\LigneTrigo{cos}(pi/2)$ & $\LigneTrigo{cos}(2pi/3)$ & $\LigneTrigo{cos}(3pi/4)$ & $\LigneTrigo{cos}(5pi/6)$ & $\LigneTrigo{cos}(pi)$ \\ sin & $\LigneTrigo{sin}(0)$ & $\LigneTrigo{sin}(pi/6)$ & $\LigneTrigo{sin}(pi/4)$ & $\LigneTrigo{sin}(pi/3)$ & $\LigneTrigo{sin}(pi/2)$ & $\LigneTrigo{sin}(2pi/3)$ & $\LigneTrigo{sin}(3pi/4)$ & $\LigneTrigo{sin}(5pi/6)$ & $\LigneTrigo{sin}(pi)$ \\ tan & $\LigneTrigo{tan}(0)$ & $\LigneTrigo{tan}(pi/6)$ & $\LigneTrigo{tan}(pi/4)$ & $\LigneTrigo{tan}(pi/3)$ & $\LigneTrigo{tan}(pi/2)$ & $\LigneTrigo{tan}(2pi/3)$ & $\LigneTrigo{tan}(3pi/4)$ & $\LigneTrigo{tan}(5pi/6)$ & $\LigneTrigo{tan}(pi)$ \\ \end{tblr} \medskip \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{9}{Q[1.195cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & & $\nicefrac{-\pi}{6}$ & $\nicefrac{-\pi}{4}$ & $\nicefrac{-\pi}{3}$ & $\nicefrac{-\pi}{2}$ & $\nicefrac{-2\pi}{3}$ & $\nicefrac{-3\pi}{4}$ & $\nicefrac{-5\pi}{6}$ & \\ cos & & $\LigneTrigo{cos}(-pi/6)$ & $\LigneTrigo{cos}(-pi/4)$ & $\LigneTrigo{cos}(-pi/3)$ & $\LigneTrigo{cos}(-pi/2)$ & $\LigneTrigo{cos}(-2pi/3)$ & $\LigneTrigo{cos}(-3pi/4)$ & $\LigneTrigo{cos}(-5pi/6)$ & \\ sin & & $\LigneTrigo{sin}(-pi/6)$ & $\LigneTrigo{sin}(-pi/4)$ & $\LigneTrigo{sin}(-pi/3)$ & $\LigneTrigo{sin}(-pi/2)$ & $\LigneTrigo{sin}(-2pi/3)$ & $\LigneTrigo{sin}(-3pi/4)$ & $\LigneTrigo{sin}(-5pi/6)$ & \\ tan & & $\LigneTrigo{tan}(-pi/6)$ & $\LigneTrigo{tan}(-pi/4)$ & $\LigneTrigo{tan}(-pi/3)$ & $\LigneTrigo{tan}(-pi/2)$ & $\LigneTrigo{tan}(-2pi/3)$ & $\LigneTrigo{tan}(-3pi/4)$ & $\LigneTrigo{tan}(-5pi/6)$ & \\ \end{tblr} \medskip \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & $\nicefrac{\pi}{8}$ & $\nicefrac{3\pi}{8}$ & $\nicefrac{5\pi}{8}$ & $\nicefrac{7\pi}{8}$ & $\nicefrac{\pi}{12}$ & $\nicefrac{5\pi}{12}$ & $\nicefrac{7\pi}{12}$ & $\nicefrac{11\pi}{12}$ \\ cos & $\LigneTrigo{cos}(pi/8)$ & $\LigneTrigo{cos}(3pi/8)$ & $\LigneTrigo{cos}(5pi/8)$ & $\LigneTrigo{cos}(7pi/8)$ & $\LigneTrigo{cos}(pi/12)$ & $\LigneTrigo{cos}(5pi/12)$ & $\LigneTrigo{cos}(7pi/12)$ & $\LigneTrigo{cos}(11pi/12)$ \\ sin & $\LigneTrigo{sin}(pi/8)$ & $\LigneTrigo{sin}(3pi/8)$ & $\LigneTrigo{sin}(5pi/8)$ & $\LigneTrigo{sin}(7pi/8)$ & $\LigneTrigo{sin}(pi/12)$ & $\LigneTrigo{sin}(5pi/12)$ & $\LigneTrigo{sin}(7pi/12)$ & $\LigneTrigo{sin}(11pi/12)$ \\ tan & $\LigneTrigo{tan}(pi/8)$ & $\LigneTrigo{tan}(3pi/8)$ & $\LigneTrigo{tan}(5pi/8)$ & $\LigneTrigo{tan}(7pi/8)$ & $\LigneTrigo{tan}(pi/12)$ & $\LigneTrigo{tan}(5pi/12)$ & $\LigneTrigo{tan}(7pi/12)$ & $\LigneTrigo{tan}(11pi/12)$ \\ \end{tblr} \medskip \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & $\nicefrac{-\pi}{8}$ & $\nicefrac{-3\pi}{8}$ & $\nicefrac{-5\pi}{8}$ & $\nicefrac{-7\pi}{8}$ & $\nicefrac{-\pi}{12}$ & $\nicefrac{-5\pi}{12}$ & $\nicefrac{-7\pi}{12}$ & $\nicefrac{-11\pi}{12}$ \\ cos & $\LigneTrigo{cos}(-pi/8)$ & $\LigneTrigo{cos}(-3pi/8)$ & $\LigneTrigo{cos}(-5pi/8)$ & $\LigneTrigo{cos}(-7pi/8)$ & $\LigneTrigo{cos}(-pi/12)$ & $\LigneTrigo{cos}(-5pi/12)$ & $\LigneTrigo{cos}(-7pi/12)$ & $\LigneTrigo{cos}(-11pi/12)$ \\ sin & $\LigneTrigo{sin}(-pi/8)$ & $\LigneTrigo{sin}(-3pi/8)$ & $\LigneTrigo{sin}(-5pi/8)$ & $\LigneTrigo{sin}(-7pi/8)$ & $\LigneTrigo{sin}(-pi/12)$ & $\LigneTrigo{sin}(-5pi/12)$ & $\LigneTrigo{sin}(-7pi/12)$ & $\LigneTrigo{sin}(-11pi/12)$ \\ tan & $\LigneTrigo{tan}(-pi/8)$ & $\LigneTrigo{tan}(-3pi/8)$ & $\LigneTrigo{tan}(-5pi/8)$ & $\LigneTrigo{tan}(-7pi/8)$ & $\LigneTrigo{tan}(-pi/12)$ & $\LigneTrigo{tan}(-5pi/12)$ & $\LigneTrigo{tan}(-7pi/12)$ & $\LigneTrigo{tan}(-11pi/12)$ \\ \end{tblr} \medskip \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & $\nicefrac{-4\pi}{5}$ & $\nicefrac{-3\pi}{5}$ & $\nicefrac{-2\pi}{5}$ & $\nicefrac{-\pi}{5}$ & $\nicefrac{\pi}{5}$ & $\nicefrac{2\pi}{5}$ & $\nicefrac{3\pi}{5}$ & $\nicefrac{4\pi}{5}$ \\ cos & $\LigneTrigo{cos}(-4pi/5)$ & $\LigneTrigo{cos}(-3pi/5)$ & $\LigneTrigo{cos}(-2pi/5)$ & $\LigneTrigo{cos}(-pi/5)$ & $\LigneTrigo{cos}(pi/5)$ & $\LigneTrigo{cos}(2pi/5)$ & $\LigneTrigo{cos}(3pi/5)$ & $\LigneTrigo{cos}(4pi/5)$ \\ sin & $\LigneTrigo{sin}(-4pi/5)$ & $\LigneTrigo{sin}(-3pi/5)$ & $\LigneTrigo{sin}(-2pi/5)$ & $\LigneTrigo{sin}(-pi/5)$ & $\LigneTrigo{sin}(pi/5)$ & $\LigneTrigo{sin}(2pi/5)$ & $\LigneTrigo{sin}(3pi/5)$ & $\LigneTrigo{sin}(4pi/5)$ \\ tan & $\LigneTrigo{tan}(-4pi/5)$ & $\LigneTrigo{tan}(-3pi/5)$ & $\LigneTrigo{tan}(-2pi/5)$ & $\LigneTrigo{tan}(-pi/5)$ & $\LigneTrigo{tan}(pi/5)$ & $\LigneTrigo{tan}(2pi/5)$ & $\LigneTrigo{tan}(3pi/5)$ & $\LigneTrigo{tan}(4pi/5)$ \\ \end{tblr} \medskip \begin{tblr}{hlines,vlines,colspec={Q[1cm,m,l]*{8}{Q[1.4cm,m,c]}},cells={font=\scriptsize},row{1}={bg=lightgray!50},column{1}={bg=lightgray!50}} angle & $\nicefrac{-9\pi}{10}$ & $\nicefrac{-7\pi}{10}$ & $\nicefrac{-3\pi}{10}$ & $\nicefrac{-\pi}{10}$ & $\nicefrac{\pi}{10}$ & $\nicefrac{3\pi}{10}$ & $\nicefrac{7\pi}{10}$ & $\nicefrac{9\pi}{10}$ \\ cos & $\LigneTrigo{cos}(-9pi/10)$ & $\LigneTrigo{cos}(-7pi/10)$ & $\LigneTrigo{cos}(-3pi/10)$ & $\LigneTrigo{cos}(-pi/10)$ & $\LigneTrigo{cos}(pi/10)$ & $\LigneTrigo{cos}(3pi/10)$ & $\LigneTrigo{cos}(7pi/10)$ & $\LigneTrigo{cos}(9pi/10)$ \\ sin & $\LigneTrigo{sin}(-9pi/10)$ & $\LigneTrigo{sin}(-7pi/10)$ & $\LigneTrigo{sin}(-3pi/10)$ & $\LigneTrigo{sin}(-pi/10)$ & $\LigneTrigo{sin}(pi/10)$ & $\LigneTrigo{sin}(3pi/10)$ & $\LigneTrigo{sin}(7pi/10)$ & $\LigneTrigo{sin}(9pi/10)$ \\ tan & $\LigneTrigo{tan}(-9pi/10)$ & $\LigneTrigo{tan}(-7pi/10)$ & $\LigneTrigo{tan}(-3pi/10)$ & $\LigneTrigo{tan}(-pi/10)$ & $\LigneTrigo{tan}(pi/10)$ & $\LigneTrigo{tan}(3pi/10)$ & $\LigneTrigo{tan}(7pi/10)$ & $\LigneTrigo{tan}(9pi/10)$ \\ \end{tblr} \end{noteblock} \pagebreak \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Jeux et récréations} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Jeux et récréations} \section{SudoMaths, en \TikZ}\label{sudomaths} \subsection{Introduction} \begin{tipblock} L'idée est de \textit{proposer} un environnement \TikZ, une commande permettant de tracer des grilles de SudoMaths. L'environnement créé, lié à \TikZ, trace la grille de SudoMaths (avec les blocs démarqués), et peut la remplir avec une liste d'éléments. \end{tipblock} \begin{PresCodeTexPL}{listing only} %grille classique non remplie, avec légendes H/V, {} nécessaires pour préciser que les cases seront "vides" \SudoMaths{} \end{PresCodeTexPL} \begin{PresCodePL}{} \SudoMaths{} \end{PresCodePL} \begin{noteblock} La commande \ctex{SudoMaths} crée donc la grille (remplie ou non), dans un environnement \TikZ, c'est \textit{c'est tout} ! \smallskip On peut également utiliser l'\textit{environnement} \ctex{EnvSudoMaths} dans lequel on peut rajouter du code \TikZ{} ! \end{noteblock} \begin{PresCodeTexPL}{listing only} %grille "toute seule" \SudoMaths[clés]{liste} %grille avec ajout de code \begin{EnvSudoMaths}[clés]{grille} %commandes tikz \end{EnvSudoMaths} \end{PresCodeTexPL} \pagebreak \subsection{Clés et options} \begin{cautionblock} Quelques \Cle{clés} sont disponibles pour cette commande : \begin{itemize} \item la clé \Cle{Epaisseurg} pour gérer l'épaisseur des traits épais ; \hfill~défaut \Cle{1.5pt} \item la clé \Cle{Epaisseur} pour gérer l'épaisseur des traits fins ; \hfill~défaut \Cle{0.5pt} \item la clé \Cle{Unite} qui est l'unité graphique de la figure ; \hfill~défaut \Cle{1cm} \item la clé \Cle{CouleurCase} pour la couleur (éventuelles) des cases ; \hfill~défaut \Cle{LightBlue!50} \item la clé \Cle{CouleurTexte} pour gérer la couleur du label des cases ; \hfill~défaut \Cle{blue} \item la clé \Cle{NbCol} qui est le nombre de colonnes ; \hfill~défaut \Cle{9} \item la clé \Cle{NbSubCol} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3} \item la clé \Cle{NbLig} qui est le nombre de lignes ; \hfill~défaut \Cle{9} \item la clé \Cle{NbSubLig} qui est le nombre de sous-colonnes ; \hfill~défaut \Cle{3} \item la clé \Cle{Police} qui formatte le label des cases ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} \item le booléen \Cle{Legendes} qui affiche ou non les légendes (H et V) des cases ; \hfill~défaut \Cle{true} \item la clé \Cle{PoliceLeg} qui formatte le label des légendes ; \hfill~défaut \Cle{\textbackslash{}normalfont\textbackslash{}normalsize} \item la clé \Cle{ListeLegV} qui est la liste de la légende verticale ; \hfill~défaut \Cle{ABCD...WXYZ} \item la clé \Cle{ListeLegH} qui est la liste de la légende horizontale ; \hfill~défaut \Cle{abcd...wxyz} \item la clé \Cle{DecalLegende} qui est le décalage de la légende par rapport à la grille. \hfill~défaut \Cle{0.45} \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{cautionblock} \begin{noteblock} La liste éventuelle des éléments à rentrer dans le tableau est traitée par le package \ctex{listofitems}, et se présente sous la forme suivante : \ctex{ / / / ... / / § / / / ... / / § ... § / / / ... / / } \smallskip Il peut donc être intéressant de \textit{déclarer} la liste au préalable pour simplifier la saisie de la commande ! \end{noteblock} \begin{noteblock} La \Cle{CouleurCase} est gérée -- en interne -- par le caractère \ctex{*} qui permet de préciser qu'on veut que la case soit coloriée. \end{noteblock} \begin{PresCodeTexPL}{listing only} %grille 6x6 avec blocs 2x3, avec coloration de cases (présentée sous forme de "cases") \def\grilleSuMa{% (a)* / (b)* / / / (c)* / (d)* §% (e)* / / / (f)* / (g)* / (h)* §% / / (i)* / / / (j)* §% / / (k)* / / (l)* / (m)* §% (n)* / / (o)* / / / (p)* §% / / / (q)* / / §% } \SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,% Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,% Legendes=false]{\grilleSuMa} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\grilleSuMa{% (a)* / (b)* / / / (c)* / (d)* §% (e)* / / / (f)* / (g)* / (h)* §% / / (i)* / / / (j)* §% / / (k)* / / (l)* / (m)* §% (n)* / / (o)* / / / (p)* §% / / / (q)* / / §% } \SudoMaths[Unite=0.75cm,NbCol=6,NbSubCol=2,NbLig=6,NbSubLig=3,Police=\small\bfseries\ttfamily,CouleurTexte=red,CouleurCase=yellow!50,% Legendes=false]{\grilleSuMa} \end{PresCodeSortiePL} \pagebreak \begin{noteblock} La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0;0)$ et $(\text{nbcol};-\text{nblig})$, de sorte que les labels des cases sont situés au nœuds de coordonnées $(x,5;-y,5)$. \end{noteblock} \begin{PresCodeTexPL}{listing only} %grille classique avec coloration de cases et commande tikz %graduations rajoutées pour la lecture des coordonnées \def\grilleSuMaB{% */////4///§% /*///3////§% //*//////§% ///*/////§% ////*////§% /////*///§% //5*/////*/§% /////B///*§% *///9////Q/§% } \begin{EnvSudoMaths}[% Unite=0.66cm,Police=\footnotesize\bfseries\ttfamily,CouleurCase=ForestGreen!50,% ListeLegV=QSDFGHJKL,ListeLegH=poiuytrez]{\grilleSuMaB} \draw[red,very thick,<-,>=latex] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté...} ; \end{EnvSudoMaths} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \def\grilleSuMaB{% */////4///§% /*///3////§% //*//////§% ///*/////§% ////*////§% /////*///§% //5*/////*/§% /////B///*§% *///9////Q/§% } \begin{EnvSudoMaths}[% Unite=0.66cm,Police=\footnotesize\bfseries\ttfamily,CouleurCase=ForestGreen!50,% ListeLegV=QSDFGHJKL,ListeLegH=poiuytrez]{\grilleSuMaB} \draw[red,very thick,<-,>=latex] (7.5,-4.5) to[bend right] ++ (4,-1) node[right] {code rajouté pour montrer la case \textsf{Ge}} ; \foreach \x in {0,1,...,9} \draw[lightgray] (\x,-9) node[below,font=\scriptsize\ttfamily] {\x} ; \foreach \y in {-1,-2,...,-9} \draw[lightgray] (9,\y) node[right,font=\scriptsize\ttfamily] {\y} ; \draw[lightgray] (9,0) node[right,font=\scriptsize\ttfamily] {~0} ; \end{EnvSudoMaths} \end{PresCodeSortiePL} \newpage \phantom{t}\par\vfill\par \begin{PART} \begin{center} \Huge\MakeUppercase{Historique} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Historique} {\small \bverb|v 2.6.7|~:~~~~Histogramme à classes régulières ou non (page \pageref{histo}) + Correction de bugs mineurs {\small \bverb|v 2.6.6|~:~~~~Style \textsf{mainlevee} en \TikZ{} désormais dans le package \textsf{tikz2d-fr} {\small \bverb|v 2.6.5|~:~~~~Ajout d'une option \Cle{nonamssymb} pour éviter de charger \textsf{amssymb} (page \pageref{amssymb}) {\small \bverb| |~:~~~~Ajout d'une commande pour la distance entre deux points (page \pageref{normevect})} {\small \bverb|v 2.6.4|~:~~~~Résolution d'une équation diophantienne $ax+by=c$ (page \pageref{eqdioph}) {\small \bverb| |~:~~~~Correction de bugs mineurs {\small \bverb| |~:~~~~Ajout de commandes en géométrie analytique (pages \pageref{affcoord} et \pageref{eqcartplan} et \pageref{eqparamdroite} et \pageref{eqcartdroite} et \pageref{distptplan}) {\small \bverb|v 2.6.3|~:~~~~Ajout d'une commande pour déterminer une équation réduite (page \pageref{eqreduite}) {\small \bverb|v 2.6.2|~:~~~~Ajout d'une clé \Cle{AffTraitsEq} pour les équations trigo (page \pageref{cercletrigo}) {\small \bverb|v 2.6.1|~:~~~~Ajout de commandes pour du calcul intégral (pages \pageref{calcintegr} et \pageref{integrtikz}) {\small \bverb|v 2.6.0|~:~~~~Ajout d'une clé \Cle{Brut} pour les mesures principales + correction d'un bug} + Refonte de la doc {\small \bverb| |~:~~~~Commande calcul ligne trigo (pages \pageref{mesureprincipale} et \pageref{lignestrigo}) {\small \bverb|v 2.5.9|~:~~~~Ajout clé \Cle{CouleurNombres} pour \textsf{Piton} (v1.5 mini) (page \pageref{pythonpiton}) {\small \bverb|v 2.5.8|~:~~~~Ajout d'un style \textsf{Alt} pour les codes (pages \pageref{pythonsimple} et \pageref{pytminted}) {\small \bverb| |~:~~~~Modification de la syntaxe des commandes avec \textsf{Pythontex} et \textsf{PseudoCode} (pages \pageref{pythontex} et \pageref{pseudocode}) {\small \bverb|v 2.5.7|~:~~~~Ajout de clés pour les codes \textsf{Piton} + Console via \textsf{Pyluatex} (page \pageref{pythonpiton}) {\small \bverb|v 2.5.6|~:~~~~Ajout d'une clé \Cle{Trigo} pour l'axe $(Ox)$ (page \pageref{reperagetikz}) {\small \bverb|v 2.5.5|~:~~~~Externalisation de la fenêtre XCas (dans le package \textsf{FentreCas}) {\small \bverb|v 2.5.4|~:~~~~Modification des calculs (via \textsf{xint}) en combinatoire (page \pageref{combinatoire}) {\small \bverb|v 2.5.3|~:~~~~Modification du traitement des tests dans les arbres de probas (page \pageref{arbresprobas}) {\small \bverb|v 2.5.2|~:~~~~Correction d'un dysfonctionnement avec \textsf{tcolorbox 6.0} {\small \bverb|v 2.5.1|~:~~~~Ajout d'une version étoilée pour la conversion en fraction (page \pageref{convfrac}) {\small \bverb|v 2.5.0|~:~~~~Système de \textsf{librairies} pour certains packages/commandes (page \pageref{librairies}) {\small \bverb|v 2.2.0|~:~~~~Ajout d'une clé \Cle{Notation} pour les arrangements et combinaisons (page \pageref{combinatoire}) {\small \bverb|v 2.1.9|~:~~~~Correction d'un bug (et ajout d'une version étoilée) pour les petits schémas \og de signe \fg{} (page \pageref{aidesigne}) {\small \bverb|v 2.1.8|~:~~~~Suppression des commandes de PixelArt, désormais dans le package \textsf{PixelArtTikz} {\small \bverb|v 2.1.7|~:~~~~Ajout d'une clé \Cle{Math} pour les sommets des figures de l'espace (pages \pageref{pave} et \pageref{tetra}) {\small \bverb|v 2.1.6|~:~~~~Correction d'un bug lié au chargement de \textsf{hvlogos}, remplacé par \textsf{hologo} {\small \bverb|v 2.1.5|~:~~~~Combinatoire avec arrangements et combinaisons (page \pageref{combinatoire}) {\small \bverb|v 2.1.4|~:~~~~Résolution approchée d'équations $f(x)=k$ (page \pageref{resolapprox}) {\small \bverb|v 2.1.3|~:~~~~Améliorations dans les présentations \textsf{Piton} (page \pageref{pythonpiton}) {\small \bverb|v 2.1.2|~:~~~~Ajout d'une commande pour la mesure principale d'un angle (page \pageref{mesureprincipale}) {\small \bverb|v 2.1.1|~:~~~~Ajout d'une section pour des repères en \TikZ{} (page \pageref{reperagetikz}) {\small \bverb|v 2.1.0|~:~~~~Calcul du seuil, en interne désormais (page \pageref{calcrecurr}) {\small \bverb| |~:~~~~Commande pour simplifier une racine carrée (page \pageref{simplracine}) {\small \bverb| |~:~~~~Option \textsf{[pythontex]} pour charger le nécessaire pour \textsf{pythontex} {\small \bverb|v 2.0.9|~:~~~~Nombres aléatoires, tirages aléatoires d'entiers (page \pageref{entiersaleatoires}) {\small \bverb|v 2.0.8|~:~~~~Ajout d'un environnement pour présenter du code \LaTeX{} (page \pageref{prescode}) {\small \bverb|v 2.0.7|~:~~~~Ajout d'options pour stretch et fonte env python(s) (pas tous...) {\small \bverb|v 2.0.6|~:~~~~Changement de taille de la police des codes Python (page \pageref{pythonsimple}) {\small \bverb|v 2.0.5|~:~~~~Correction d'un bug avec les calculs de suites récurrentes (page \pageref{calcrecurr}) {\small \bverb|v 2.0.4|~:~~~~Ajout d'une commande pour une présentation de solution par TVI (page \pageref{solutiontvi}) {\small \bverb|v 2.0.3|~:~~~~Commandes pour des suites récurrentes \textit{simples} (page \pageref{calcrecurr}) {\small \bverb|v 2.0.2|~:~~~~Option \textsf{left-margin=auto} pour le package \textsf{piton} (page \pageref{pythonpiton}) {\small \bverb|v 2.0.1|~:~~~~Chargement du package \textsf{piton} uniquement si compilation en \hologo{LuaLaTeX} (page \pageref{pythonpiton}) {\small \bverb|v 2.0.0|~:~~~~Refonte du code source avec modification des commandes, et de la documentation} \hrulefill % %{\small \bverb|v 1.3.7|~:~~~~Commandes pour du code python via piton, en compilation \hologo{LuaLaTeX} (page \pageref{pythonpiton}) % %{\small \bverb| |~:~~~~Corrections et modifications mineures de la documentation % %{\small \bverb|v 1.3.6|~:~~~~Présentation de l'algorithme d'Euclide pour le PGCD (page \pageref{prespgcd}) % %{\small \bverb| |~:~~~~Affichage d'un trinôme par coefficients, aléatoires ou non (page \pageref{trinome}) % %{\small \bverb|v 1.3.5|~:~~~~Correction d'un bug avec la loi géométrique (page \pageref{calcprobas}) % %{\small \bverb|v 1.3.4|~:~~~~Ajout de petits schémas, en \TikZ{}, de lois normales et exponentielles (page \pageref{schemasprobas}) % %{\small \bverb| |~:~~~~Calculs de probas avec les lois géométriques et hypergéométriques (page \pageref{calcprobas}) % %{\small \bverb|v 1.3.3|~:~~~~Ajout d'un environnement pour des arbres de probas classiques, en \TikZ{} (page \pageref{arbresprobas}) % %{\small \bverb|v 1.3.2|~:~~~~Correction d'un bug sur les conversions bintohex avec lualatex (page \pageref{conversions}) % %{\small \bverb|v 1.3.1|~:~~~~Ajout d'une option pour ne pas afficher les bordures des corrections de pixelart % %{\small \bverb|v 1.3.0|~:~~~~Commande pour présenter une conversion depuis la base 10 (page \pageref{convrestes}) % %{\small \bverb|v 1.2.9|~:~~~~Correction des commandes avec \textsf{simplekv} % %{\small \bverb|v 1.2.7|~:~~~~Ajout de commandes pour des calculs de probabilités (page \pageref{calcprobas}) % %{\small \bverb|v 1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths}) % %{\small \bverb|v 1.2.5|~:~~~~Ajout de commandes pour des boîtes à moustaches (page \pageref{boiteamoustaches}) % %{\small \bverb|v 1.2.4|~:~~~~Correction de quelques bugs mineurs, et mise à jour de la doc % %{\small \bverb|v 1.2.3|~:~~~~Commandes pour du code python "simple", sans compilation particulière (page \pageref{pythonsimple}) % %{\small \bverb|v 1.2.2|~:~~~~Commandes pour travailler sur des stats à 2 variables (page \pageref{statsdeuxvars}) % %{\small \bverb|v 1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart % %{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{} % %{\small \bverb|v 1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee}) % %{\small \bverb|v 1.1.7|~:~~~~Conversions bin/hex/dec (basées sur \textsf{xintbinhex}) avec quelques détails (page \pageref{conversions}) % %{\small \bverb|v 1.1.6|~:~~~~Commande pour déterminer les paramètres d'une régression linéaire par moindres carrés (page \pageref{reglin}) % %{\small \bverb|v 1.1.5|~:~~~~Ajout de deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg{} (page \pageref{aidesigne}) % %{\small \bverb|v 1.1.4|~:~~~~Ajout d'une commande pour, en \TikZ, créer facilement un cercle trigo avec \textit{options} (page \pageref{cercletrigo}) % %{\small \bverb|v 1.1.3|~:~~~~Ajout des commandes pour fractions, ensembles et récurrence (pages \pageref{convfrac}, \pageref{ensembles} et \pageref{recurr}) % %{\small \bverb|v 1.1.1|~:~~~~Modification mineure de l'environnement calcul formel, avec prise de charge de la taille du texte % %{\small \bverb|v 1.1.0|~:~~~~Ajout d'une commande pour créer des tétraèdres (avec nœuds) en \TikZ{} (page \pageref{tetra}) % %{\small \bverb|v 1.0.9|~:~~~~Ajout d'une commande pour créer des pavés droits (avec nœuds) en \TikZ{} (page \pageref{pave}) % %{\small \bverb|v 1.0.8|~:~~~~Ajout d'une commande pour créer des cartouches de lien "comme capytale" (page \pageref{capytale}) % %{\small \bverb|v 1.0.7|~:~~~~Ajout d'une option \textsf{build} pour placer certains fichiers auxiliaires dans un répertoire externe % %{\small \bverb|v 1.0.6|~:~~~~Ajout d'une option \textsf{nominted} pour ne pas charger (pas besoin de compiler avec \textsf{shell-escape}) % %{\small \bverb|v 1.0.5|~:~~~~Ajout d'un environnement pour Python (\textsf{minted}) (page \pageref{pytminted}) % %{\small \bverb|v 1.0.4|~:~~~~Ajout des environnements pour Terminal (win, osx, unix) (page \pageref{terms}) % %{\small \bverb|v 1.0.3|~:~~~~Ajout des environnements pour PseudoCode (page \pageref{pseudocode}) % %{\small \bverb|v 1.0.2|~:~~~~Ajout des environnements pour Python (\textsf{pythontex}) (page \pageref{pythontex}) % %{\small \bverb|v 1.0 |~:~~~~Version initiale} \end{document}