% !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.7.6} \def\PLdate{27 septembre 2023} \usepackage{amsfonts} \usepackage{ProfLycee} \useproflyclib{piton,minted,pythontex,ecritures} \usepackage[math-style=french]{fourier-otf} \usepackage{mathrsfs}%pour mathscr \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} \DeclareMathSymbol{;}\mathbin{operators}{'73} %espacement avec ; %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} \definecolor{BleuCadet}{HTML}{5E9EA0} \definecolor{Chair}{HTML}{FDDBB8} \definecolor{BleuAcier}{HTML}{4483B8} \newverbcommand{\pverb}{\color{purple}}{} \newverbcommand{\rverb}{\color{red}}{} \newverbcommand{\vverb}{\color{CouleurVertForet}}{} \newverbcommand{\averb}{\color{BleuCadet}}{} \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=teal,colback=white,bicolor, colbacklower=teal!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=BleuCadet,coltitle=white,colback=BleuCadet!5,% overlay={\begin{tcbclipinterior}% \fill[fill=lightgray!50]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{BleuCadet}{\scalebox{0.6}[0.75]{\textbf{\LaTeX}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \tcbset{vignettelib/.style={% fontupper={\vphantom{pf}\footnotesize\ttfamily}, vignettes,% colframe=CouleurVertForet,coltitle=white,colback=white,% overlay={\begin{tcbclipinterior}% \fill[fill=green!25]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{CouleurVertForet}{\scalebox{0.85}[0.75]{\textbf{LIB}}}}} ($(interior.north west)+(5pt,0pt)$);% \end{tcbclipinterior}} } } \tcbset{vignetteMaJ/.style={% fontupper={\vphantom{pf}\footnotesize\ttfamily}, vignettes,% colframe=CouleurVertForet!50!black,coltitle=white,colback=CouleurVertForet!25,% overlay={\begin{tcbclipinterior}% \fill[fill=CouleurVertForet!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={dfrac,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,\FonctionRepartTikz,\IntervalleFF,\IntervalleFO,\IntervalleOF,\IntervalleOO,\RepereOij,\RepereOuv,\RepereOijk,\ReperePlan,\RepereEspace,\jfalg,\jfexp,\LoiNormale,\LoiBinomiale,\LoiPoisson,\LoiExpo,\LoiUnif,\Courbe,\Suite,\CoordPtPl,\CoordPtEsp,\CoordVecPl,\CoordVecEsp,\MatDeux,\Vecteur,\Esper,\Varianc,\EcType,\dx,\Integrale,\Modulo,\Arrondi,\CodePythonLstFichier,\CodePythonLstFichierAlt,\colorlet },% keywordstyle={\color{CouleurVertForet}},% 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,Grille,ExtraGrilleY,PosLegende,Pointilles,Extremite,Frac,PremLigne},% keywordstyle={\color{orange!75!black}} } } } \NewTCBListing{PresCodeTexPL}{ O{BleuCadet} 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{BleuCadet} 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{BleuCadet} 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=Chair!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=BleuAcier,title={\small \faPuzzlePiece} Information(s),fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1} \newtcolorbox{codecles}[1][]{% colback=white,colframe=CouleurVertForet!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={BleuCadet!50!black,circle,draw=BleuCadet,thick,fill=BleuCadet!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,BleuCadet,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} composer des mathématiques} ~ \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{cautionblock} \cmaj{2.7.2} Pour des soucis de compatibilités, \ctex{xcolor} n'est plus chargé, par défaut, avec les options \textsf{[table,svgnames]}, les couleurs de base de \ctex{xcolor} sont toutefois accessibles (une seule couleur, \textsf{CouleurVertForet} a été définie) ! Il est cependant possible, grâce à l'option \Cle{[xcolor]} à passer au chargement du package, de charger \ctex{xcolor} avec l' option \textsf{[table,svgnames]}. \end{cautionblock} \begin{importantblock} Le {package} \ctex{ProfLycee} charge et utilise les {packages} : \begin{itemize} \item \ctex{mathtools}, \ctex{amssymb}, \ctex{xspace}, \ctex{esvect}, \ctex{interval} ; % \item \ctex{xcolor} avec l' option \textsf{[table,svgnames]} ; \item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor}, \ctex{nicefrac}, \ctex{nicematrix} ; \item \ctex{tcolorbox} avec les librairies \ctex{breakable,fitting,skins,listings,listingsutf8,hooks} ; \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} % ou \usepackage[xcolor]{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} % ou \usepackage[xcolor]{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}) ; \item \clib{ecritures} (page \pageref{ecrituresmath}). \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}(*)[clés]{commandes tcbox}...\end{CodePythonLst} \begin{CodePythonLstAlt}(*)[clés]{commandes tcbox}...\end{CodePythonLstAlt} %:=librairie piton \begin{CodePiton}[options piton]{commandes tcbox}<1ère ligne>...\end{CodePiton} \begin{PitonConsole}{commandes tcbox}...\end{PitonConsole} %:=librairie pythontex \begin{CodePythontex}[clés]{commandes tcbox}...\end{CodePythontex} \begin{CodePythontexAlt}[clés]{commandes tcbox}...\end{CodePythontexAlt} \begin{ConsolePythontex}[options]{}...\end{ConsolePythontex} %:=librairie minted \begin{CodePythonMinted}(*)[clés]{commandes tcbox}...\end{CodePythonMinted} \begin{CodePythonMintedAlt}(*)[largeur][clés]{commandes tcbox}...\end{CodePythonMintedAlt} %présentation de pseudocode \begin{PseudoCode}(*)[clés]{commandes tcbox}...\end{PseudoCode} \begin{PseudoCodeAlt}(*)[largeur][clés]{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} %fonction de répartition discrète, dans une environnement tikz \FonctionRepartTikz[clés]{probas,borneinf,bornesup / probas,borneinf,bornesup / ...} \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{Écritures mathématiques} \end{center} \end{PART} \par\vfill\par\phantom{t} \newpage \part{Écritures d'objets mathématiques}\label{ecrituresmath} \section{Introduction} \begin{tipblock} Les commandes de cette section sont disponibles en chargeant la librairie \clib{ecritures}, car elles peuvent redéfinir des commandes personnelles déjà existantes ! \end{tipblock} \section{Commandes} \subsection{Arrondi} \begin{tipblock} Il est possible de calculer/arrondir/formater un calcul mathématique, grâce aux package \ctex{siunitx} et \ctex{xinteval}. \begin{itemize} \item la version étoilée force l'affichage du \og + \fg{} pour les nombres positifs ; \item l'argument optionnel est la précision demandée (3 par défaut) \item l'argument obligatoire est le calcul, au langage \ctex{xinteval}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{} $1+\dfrac{7}{11} \approx \Arrondi{1+7/11} \approx \Arrondi[5]{1+7/11} \approx \Arrondi*[2]{1+7/11}$ $\ln\big(1+\e^{4}\big) \approx \Arrondi[6]{log(1+exp(4))}$ \end{PresCodeTexPL} \subsection{Ensembles et intervalles} \begin{tipblock} Les commandes suivantes permettent de composer les ensembles traditionnels, en mode \textit{tableau noir}. Elles sont dans un bloc \textsf{ensuremath}, donc les \textsf{\$...\$} ne sont pas nécessaires. \smallskip À noter la macro particulière pour l'ensemble des quaternions, pour éviter des erreurs éventuelles de \textit{re}définition. \end{tipblock} \begin{PresCodeTexPL}{} \N, \Z, \D, \Q, \R, \C, \ensH, \N*, \Z*, \D*, \Q*, \R*, \C*, \ensH* \end{PresCodeTexPL} \begin{tipblock} Des intervalles peuvent être composés, grâce à la commande \ctex{\textbackslash IntervalleXX}, dont la base est le package \ctex{interval} : \begin{itemize} \item la commande est insérée dans un bloc \textsf{ensuremath} ; \item le séparateur est le point-virgule ; \item l'espacement autour du point-virgule est laissé aux réglages du document (\ctex{babel}, \ctex{frenchmath}, etc). \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{} \IntervalleFO{0}{+\infty} ou \IntervalleOO{0}{+\infty} ou \IntervalleOO{-\infty}{0} ou \IntervalleOF{-\infty}{0} \end{PresCodeTexPL} \begin{PresCodeTexPL}{} \IntervalleFF{\frac12}{\sqrt{26}} ou \IntervalleOO{\frac12}{\sqrt{26}} ou \IntervalleFO{\dfrac12}{\sqrt{26}} ou \IntervalleFO{\dfrac12}{\sqrt{26}} \end{PresCodeTexPL} \subsection{Repères et coordonnées} \begin{tipblock} Des vecteurs/repères/coordonnées peuvent être composées : \begin{itemize} \item les vecteurs sont mis en forme par le package \ctex{esvect} (y compris en version étoilée pour les indices) ; \item des coordonnées de point/vecteur dans le plan ou l'espace ; \item des repères génériques, avec choix du séparateur entre le point et les vecteurs ; \item les versions étoilées des repères n'alignent pas les flèches. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{PresCodeTexPL}{} %vecteurs \Vecteur{\imath} et \Vecteur{u} et \Vecteur{AB} $\Vecteur{AB}+\Vecteur{BC} = \Vecteur{AC}$ $\Vecteur*{u}[1]+\Vecteur*{v}[2] = \Vecteur*{w}[3]$ \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %coordonnées points \CoordPtPl{4}{-2} ou \CoordPtPl{\frac12}{\frac47} \CoordPtEsp{4}{-2}{7} ou \CoordPtEsp{-2}{\frac12}{\frac47} \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %coordonnées vecteurs \CoordVecPl{4}{-2} ou \CoordVecPl{\frac12}{\frac47} \CoordVecEsp{4}{-2}{7} ou \CoordVecEsp{-2}{\frac12}{\frac47} \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %matrices 2x2 \MatDeux{4}{-2}{1}{-5} \MatDeux{\frac47}{-1}{0}{-\frac17} \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %repères classiques \RepereOij ou \RepereOij* ou \RepereOij[Sep={,}] ou \RepereOij*[Sep={,}] \RepereOijk ou \RepereOijk* ou \RepereOijk[Sep={,}] ou \RepereOijk*[Sep={,}] \RepereOuv ou \RepereOuv* ou \RepereOuv[Sep={,}] ou \RepereOuv*[Sep={,}] \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %repères personnalisés \ReperePlan{A}{AB}{AC} ou \ReperePlan*{A}{AB}{AC} ou \ReperePlan*{O}{OI}{OJ} ou \ReperePlan[Sep={,}]{O}{OI}{OK} \RepereEspace{A}{AB}{AC}{AD} ou \RepereEspace*{A}{AB}{AC}{k} ou \RepereEspace{D}{i}{j}{k} \end{PresCodeTexPL} \subsection{Divers} \begin{tipblock} La librairie \clib{ecritures} permet également de définir des commandes pour : \begin{itemize} \item composer le nom d'une courbe ; \item composer le \og i \fg{} et le \og e \fg{} en romain ; \item composer le complexe $\j$ en mode algébrique ou exponentielle ; \item composer un modulo avec choix de la congruence ; \item composer une suite numérique ; \item composer une intégrale (mode \textsf{displaystyle}). \end{itemize} À noter que les commandes sont dans un bloc \textsf{ensuremath}. \end{tipblock} \begin{PresCodeTexPL}{} %version normale := mathcal %version étoilée := mathscr (si chargé) \Courbe et \Courbe[f] et \Courbe[g^{-1}] \Courbe* et \Courbe*[f] et \Courbe*[g^{-1}] \end{PresCodeTexPL} \begin{PresCodeTexPL}{} $\e^{\i \pi} = -1$ \end{PresCodeTexPL} \begin{PresCodeTexPL}{} On a $\j = \jfalg = \jfexp$ \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %La version étoilée augmente l'espacement, l'argument optionnel change la présentation $21 \equiv 1 \Modulo{5} \equiv 1 \Modulo[Par]{5} \equiv 1 \Modulo[Txt]{5}$ $21 \equiv 1 \Modulo*{5} \equiv 1 \Modulo*[Par]{5} \equiv 1 \Modulo*[Txt]{5}$ \end{PresCodeTexPL} \begin{PresCodeTexPL}{} Soient les suites \Suite{u} et \Suite[p]{v} et \Suite[q]{\Omega}. \end{PresCodeTexPL} \begin{PresCodeTexPL}{} $I = \Integrale f(x) \dx = \Integrale f(t) \dx[t]$ \end{PresCodeTexPL} \subsection{Probabilités} \begin{tipblock} La librairie \clib{ecritures} permet également de définir des commandes pour : \begin{itemize} \item composer une loi classique (binomiale, exponentielle, etc) avec \textsf{mathcal} ou \textsf{mathscr} ; \item composer espérance, variance et écart-type. \end{itemize} À noter que les commandes sont dans un bloc \textsf{ensuremath}. \end{tipblock} \begin{PresCodeTexPL}{} %version normale := mathcal %version étoilée := mathscr (si chargé) \LoiNormale{150}{25} ou \LoiNormale*{150}{25} \LoiBinomiale{150}{\num{0.45}} ou \LoiBinomiale*{150}{\num{0.45}} \LoiPoisson{5} ou \LoiPoisson*{5} \LoiExpo{\num{0.001}} ou \LoiExpo*{\num{0.001}} \LoiUnif{\IntervalleFF{5}{60}} ou \LoiUnif*{\IntervalleFF{5}{60}} \end{PresCodeTexPL} \begin{PresCodeTexPL}{} %par défaut E et V en \mathbb \Esper{X} ou \Esper[E]{X} \\ \Varianc{X^2} ou \Varianc[V]{X^2} \\ \EcType{X^2} \end{PresCodeTexPL} \pagebreak \section{Collection d'objets}\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 \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,CouleurVertForet,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} \item \cmaj{2.7.0} le booléen \Cle{Frac} (uniquement pour l'axe $(Oy)$) pour forcer les graduations en fraction (taille normale). \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,CouleurVertForet,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,CouleurVertForet,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{CouleurVertForet}{\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{BleuCadet}{\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=CouleurVertForet,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=CouleurVertForet,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=CouleurVertForet,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=CouleurVertForet,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=CouleurVertForet] ~~~~ \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=CouleurVertForet] ~~~~ \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=pink] \end{tikzpicture} \MiniSchemaSignes*[Code=da-,Racines=\tfrac{-b}{a},Couleur=pink] \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,CouleurVertForet,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,CouleurVertForet,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,CouleurVertForet,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{Précautions}\label{codenumlignes} \begin{tipblock} L'idée est de proposer des environnements pour présenter du code : \begin{itemize} \item \textsf{Python} ; \item \textsf{PseudoCode}. \end{itemize} Dans la mesure du possible (mis à part pour certains points avec l'utilisation des packages \ctex{piton} et \ctex{pythontex}), les environnements seront composés : \begin{itemize} \item dans une boîte \ctex{tcolorbox} ; \item de deux styles :\ctex{CodeXXXX} ou \ctex{CodeXXXXAlt} ; \item de clés pour paramétrer la \Cle{Largeur} et le début de la numérotation \Cle{PremLigne} ; \item d'une version étoilée pour ne pas numérotée les lignes ; \item d'options éventuelles à donner en langage \ctex{tcolorbox}. \end{itemize} \vspace*{-\baselineskip}\leavevmode \end{tipblock} \begin{warningblock} Avec la mise à jour \cmaj{2.7.5} et la possibilité de modifier la numérotation des lignes, certains environnements ont vu leur fonctionnement légèrement modifié, donc il est conseillé d'être prudent avec les nouvelles spécificités. \smallskip Il est prévu, à plus ou moyen terme, d'uniformiser le fonctionnement de tous les environnements, mais cela demande de reprendre une bonne partie du code. \end{warningblock} \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}(*)[clés]{commandes tcbox} ... \end{CodePythonLst} \end{PresCodeTexPL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLstAlt}(*)[clés]{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}), comprend la clé \Cle{Largeur} de la \ctex{tcbox} (\Cle{\textbackslash linewidth} par défaut) et la clé \Cle{PremLigne} (\Cle{1} par défaut) ; \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 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}, et être attentif à la syntaxe. \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, peuvent être 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{CodePythonLst}[PremLigne=10]{} nb = int(input("Saisir un entier positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif \end{CodePythonLst} \end{PresCodeTexPL} \begin{PresCodeSortiePL}{text only} \begin{CodePythonLst}[PremLigne=10]{} nb = int(input("Saisir un entier positif")) if (nb %7 == 0) : print(f"{nb} est bien divisible par 7") #endif \end{CodePythonLst} \end{PresCodeSortiePL} \begin{PresCodeTexPL}{listing only} \begin{CodePythonLstAlt}*[Largeur=0.75\linewidth]{flush right} #largeur de 75%, 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}*[Largeur=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}. Depuis la version \ctex{2.2a} de \ctex{piton}, des options pour \Cle{line-numbers} sont disponibles. \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}