summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex360
1 files changed, 360 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
new file mode 100644
index 0000000000..3c29cfcae3
--- /dev/null
+++ b/macros/latex/contrib/profcollege/latex/PfCFonctionAffine.tex
@@ -0,0 +1,360 @@
+%%%
+% Fonction Affine
+%%%
+\setKVdefault[ClesAffine]{Nom=f,Variable=x,Ligne=false,Image=false,Antecedent=false,Graphique=false,Retrouve=false,ProgCalcul=false,Unitex=1,Unitey=1,VoirCoef=false,ACoef=0,Redaction=false,Ecriture=false,Definition=false}%ACoefficient=false%: inutile ?
+
+\newcommand\FonctionAffine[5][]{%
+ % #1 nombre ou abscisse premier point
+ % #2 a ou ordonn\'ee premier point
+ % #3 b ou abscisse deuxi\`eme point
+ % #4 {} ou ordonn\'ee deuxi\`eme point
+ \useKVdefault[ClesAffine]%A supprimer car appel r\'ecursif avec Redaction
+ \setKV[ClesAffine]{#1}%
+ \ifboolKV[ClesAffine]{Image}{%
+ \ifboolKV[ClesAffine]{Ligne}{%
+ \ensuremath{\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}=\num{\fpeval{#2*#3}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}\xintifboolexpr{#4==0}{}{=\num{\fpeval{#2*#3+#4}}}}%
+ }{%
+ \ifboolKV[ClesAffine]{ProgCalcul}{%
+ \begin{align*}
+ \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}}\\
+ \useKV[ClesAffine]{Nom}&:\num{#2}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{\fpeval{#3*#2}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{\fpeval{#3*#2+#4}}}
+ \end{align*}
+ }{%
+ \begin{align*}
+ \useKV[ClesAffine]{Nom}(\num{#2})&=\num{#3}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}\\
+ \useKV[ClesAffine]{Nom}(\num{#2})&=\num{\fpeval{#3*#2}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}%\\
+ \xintifboolexpr{#4==0}{}{\\
+ \useKV[ClesAffine]{Nom}(\num{#2})&=\num{\fpeval{#3*#2+#4}}%\\
+ }
+ \end{align*}
+ }%
+ }%
+ }{\ifboolKV[ClesAffine]{Antecedent}{%
+ \ifboolKV[ClesAffine]{ProgCalcul}{%
+ La fonction affine $\useKV[ClesAffine]{Nom}$ est d\'efinie par :
+ \begin{align*}
+ \useKV[ClesAffine]{Nom}&:\useKV[ClesAffine]{Variable}\stackrel{\times\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longrightarrow}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{+\num{#4}}{\longrightarrow}}{\stackrel{\num{#4}}{\longrightarrow}}\num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{\num{#4}}}}
+ \end{align*}
+ Nous cherchons le nombre $\useKV[ClesAffine]{Variable}$ tel que son image par la fonction $\useKV[ClesAffine]{Nom}$ soit $\num{#2}$. Donc on obtient :
+ \begin{align*}
+ \useKV[ClesAffine]{Nom}&:\frac{\num{\fpeval{#2-#4}}}{\num{#3}}\stackrel{\div\xintifboolexpr{#3<0}{(\num{#3})}{\num{#3}}}{\longleftarrow}\num{\fpeval{#2-#4}}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\stackrel{-\num{#4}}{\longleftarrow}}{\stackrel{+\num{\fpeval{0-#4}}}{\longleftarrow}}\num{#2}}
+ \end{align*}
+ }{%
+ On cherche l'ant\'ec\'edent de $\num{#2}$ par la fonction
+ $\useKV[ClesAffine]{Nom}$, c'est-\`a-dire le nombre
+ $\useKV[ClesAffine]{Variable}$ tel que
+ $\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\num{#2}$. Or,
+ la fonction $\useKV[ClesAffine]{Nom}$ est d\'efinie par : \[%
+ \useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#3==0}{}{\num{#3}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#3==0}{\num{#4}}{\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}}
+ \]
+ Par cons\'equent, on a :
+ \begin{align*}
+ \num{#3}\useKV[ClesAffine]{Variable}\xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{+\num{#4}}{-\num{\fpeval{0-#4}}}}&=\num{#2}\\
+ \xintifboolexpr{#4==0}{\useKV[ClesAffine]{Variable}\uppercase{&}=\frac{\num{#2}}{\num{#3}}%\\
+ }{\num{#3}\useKV[ClesAffine]{Variable}&=\num{\fpeval{#2-#4}}\\
+ \useKV[ClesAffine]{Variable}&=\frac{\num{\fpeval{#2-#4}}}{\num{#3}}%\\
+ }
+ \end{align*}
+ }%
+ }{%
+ \ifboolKV[ClesAffine]{Retrouve}{%
+ On sait que $\useKV[ClesAffine]{Nom}$ est une fonction affine. Donc elle s'\'ecrit sous la forme : \[\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=a\useKV[ClesAffine]{Variable}+b\]
+ Or, $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$ et $\useKV[ClesAffine]{Nom}(\num{#4})=\num{#5}$. Par cons\'equent, d'apr\`es la propri\'et\'e des accroissements :
+ \begin{align*}
+ a&=\frac{\useKV[ClesAffine]{Nom}(\num{#2})-\useKV[ClesAffine]{Nom}(\num{#4})}{\num{#2}-\xintifboolexpr{#4<0}{(\num{#4})}{\num{#4}}}\\
+ a&=\frac{\num{#3}-\xintifboolexpr{#5<0}{(\num{#5})}{\num{#5}}}{\num{\fpeval{#2-#4}}}\\
+ a&=\frac{\num{\fpeval{#3-#5}}}{\num{\fpeval{#2-#4}}}%\\
+ \SSimpliTest{\fpeval{#3-#5}}{\fpeval{#2-#4}}\ifthenelse{\boolean{Simplification}}{\\a&=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}}{}%
+ \end{align*}
+ La fonction $\useKV[ClesAffine]{Nom}$ s'\'ecrit alors sous la forme $\displaystyle\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}+b$.
+ \\De plus, comme $\useKV[ClesAffine]{Nom}(\num{#2})=\num{#3}$, alors :
+ \begin{align*}
+ \SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\times\xintifboolexpr{#2<0}{(\num{#2})}{\num{#2}}+b&=\num{#3}\\
+ \SSimplifie{\fpeval{(#3-#5)*#2}}{\fpeval{#2-#4}}+b&=\num{#3}\\
+ b&=\num{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
+ \end{align*}
+ \xdef\OrdOrigine{\fpeval{#3-(#3-#5)*#2/(#2-#4)}}
+ La fonction affine $\useKV[ClesAffine]{Nom}$ cherch\'ee est :
+ \[\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\SSimplifie{\fpeval{#3-#5}}{\fpeval{#2-#4}}\useKV[ClesAffine]{Variable}\xintifboolexpr{\OrdOrigine==0}{}{\xintifboolexpr{\OrdOrigine>0}{+\num{\OrdOrigine}}{-\num{\fpeval{0-\OrdOrigine}}}}\]
+ }{%
+ %
+ }%
+ }%
+ }%
+ \ifboolKV[ClesAffine]{Graphique}{%
+ \ifboolKV[ClesAffine]{VoirCoef}{%
+ \MPFonctionAffine{\useKV[ClesAffine]{Unitex}}{\useKV[ClesAffine]{Unitey}}{#2}{#3}{#4}{#5}{\useKV[ClesAffine]{ACoef}}%
+ }{%
+ \MPFonctionAffine{\useKV[ClesAffine]{Unitex}}{\useKV[ClesAffine]{Unitey}}{#2}{#3}{#4}{#5}{""}}{}%
+ }{}%
+ \ifboolKV[ClesAffine]{Redaction}{%
+ \xintifboolexpr{#2==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$
+ est une fonction constante, alors sa repr\'esentation graphique est une droite parall\`ele \`a l'axe des abscisses passant par le point de coordonn\'ees $(0;\num{#3})$.}%
+ {\xintifboolexpr{#3==0}{Comme la fonction $\useKV[ClesAffine]{Nom}$ est une fonction lin\'eaire, alors sa repr\'esentation graphique est une droite passant par l'origine du rep\`ere.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomFonctionA{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonctionA,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$.
+ }{%
+ Comme $\useKV[ClesAffine]{Nom}$ est une fonction affine, alors sa repr\'esentation graphique est une droite.\\Je choisis $\useKV[ClesAffine]{Variable}=\num{#4}$. Son image est \xdef\NomVariable{\useKV[ClesAffine]{Variable}}\xdef\NomFonction{\useKV[ClesAffine]{Nom}}\FonctionAffine[Nom=\NomFonction,Image,Ligne]{#4}{#2}{#3}{#5}. On place le point de coordonn\'ees $(\num{#4};\num{\fpeval{#2*#4+#3}})$.\\Je choisis \setKV[ClesAffine]{Variable=\NomVariable}$\useKV[ClesAffine]{Variable}=\num{#5}$. Son image est \FonctionAffine[Nom=\NomFonction,Image,Ligne]{#5}{#2}{#3}{#4}. On place le point de coordonn\'ees $(\num{#5};\num{\fpeval{#2*#5+#3}})$.%
+ }%
+ }%
+ }%
+ {}%
+ \ifboolKV[ClesAffine]{Ecriture}{\ensuremath{\useKV[ClesAffine]{Nom}(\useKV[ClesAffine]{Variable})=\xintifboolexpr{#2==0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2==0}{\num{#3}}{\xintifboolexpr{#3==0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}}}}}{}%
+ \ifboolKV[ClesAffine]{Definition}{\ensuremath{\useKV[ClesAffine]{Nom}:\useKV[ClesAffine]{Variable}\mapsto\xintifboolexpr{#2==0}{}{\num{#2}\useKV[ClesAffine]{Variable}}\xintifboolexpr{#2==0}{\num{#3}}{\xintifboolexpr{#3==0}{}{\xintifboolexpr{#3>0}{+\num{#3}}{-\num{\fpeval{0-#3}}}}}}}{}%
+}%
+
+\def\MPFonctionAffine#1#2#3#4#5#6#7{%
+ % #1 Unitex #2 Unitey
+ % #2 a pour f1 - #4 b pour f1
+ % #5 abscisse du premier point
+ % #6 abscisse du deuxi\`eme point
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ XMin=-2;
+ XMax=2;
+ if #5<XMin:
+ XMin:=#5;
+ fi;
+ if #6<XMin:
+ XMin:=#6;
+ fi;
+ if #5>XMax:
+ XMax:=#5;
+ fi;
+ if #6>XMax:
+ XMax:=#6;
+ fi;
+ YMax=2;
+ YMin=-2;
+ if (#5*#3+(#4))>YMax:
+ YMax:=(#5*#3+(#4));
+ fi;
+ if (#6*#3+(#4))>YMax:
+ YMax:=(#6*#3+(#4));
+ fi;
+ if (#5*#3+(#4))<YMin:
+ YMin:=(#5*#3+(#4));
+ fi;
+ if (#6*#3+(#4))<YMin:
+ YMin:=(#6*#3+(#4));
+ fi;
+ unitex:=#1*cm;
+ unitey:=#2*cm;
+ XMax:=XMax+2;
+ XMin:=XMin-2;
+ YMax:=YMax+2;
+ YMin:=YMin-2;
+ %On trace la grille
+ drawoptions(withcolor 0.95white);
+ for k=0 upto (XMax-XMin):
+ draw ((XMin+k)*unitex,YMin*unitey)--((XMin+k)*unitex,YMax*unitey);
+ endfor;
+ for k=0 upto (YMax-YMin):
+ draw (XMin*unitex,(YMin+k)*unitey)--(XMax*unitex,(YMin+k)*unitey);
+ endfor;
+ drawoptions();
+ %On trace les axes
+ drawarrow (XMin*unitex,0)--(XMax*unitex,0);
+ drawarrow (0,YMin*unitey)--(0,YMax*unitey);
+ label.llft(btex O etex,(0,0));
+ dotlabel.bot(btex 1 etex,(unitex,0));
+ dotlabel.lft(btex 1 etex,(0,unitey));
+ % On trace la droite
+ pair A[];
+ A1=(#5*unitex,(#5*#3+(#4))*unitey);
+ A2=(#6*unitex,(#6*#3+(#4))*unitey);
+ draw 2[A1,A2]--2[A2,A1];
+ clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle);
+ %On labellise les points
+ fill (fullcircle scaled 1mm) shifted A1;
+ fill (fullcircle scaled 1mm) shifted A2;
+ draw (xpart(A1),0)--A1--(0,ypart(A1)) dashed evenly;
+ draw (xpart(A2),0)--A2--(0,ypart(A2)) dashed evenly;
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.top(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
+ else:
+ label.bot(TEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.top(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
+ else:
+ label.bot(TEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
+ fi;
+ fi;
+ if #3=0:
+ label.urt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ if #3>0:
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.rt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ label.lft(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.rt(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ else:
+ label.lft(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ fi;
+ fi;
+ else:
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.lft(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ label.rt(TEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.lft(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ else:
+ label.rt(TEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ fi;
+ fi;
+ fi;
+ fi;
+ % On affiche ou pas "la marche" du coef directeur
+ for p_=#7:
+ if numeric p_:
+ draw ((#7*unitex,(#7*#3+(#4))*unitey)--((#7+1)*unitex,(#7*#3+(#4))*unitey)--((#7+1)*unitex,((#7+1)*#3+(#4))*unitey)) withcolor red;
+ fi;
+ endfor;
+ \end{mplibcode}
+ \else
+ \begin{mpost}
+ % On d\'efinit les constantes
+ XMin=-2;
+ XMax=2;
+ if #5<XMin:
+ XMin:=#5;
+ fi;
+ if #6<XMin:
+ XMin:=#6;
+ fi;
+ if #5>XMax:
+ XMax:=#5;
+ fi;
+ if #6>XMax:
+ XMax:=#6;
+ fi;
+ YMax=2;
+ YMin=-2;
+ if (#5*#3+(#4))>YMax:
+ YMax:=(#5*#3+(#4));
+ fi;
+ if (#6*#3+(#4))>YMax:
+ YMax:=(#6*#3+(#4));
+ fi;
+ if (#5*#3+(#4))<YMin:
+ YMin:=(#5*#3+(#4));
+ fi;
+ if (#6*#3+(#4))<YMin:
+ YMin:=(#6*#3+(#4));
+ fi;
+ unitex:=#1*cm;
+ unitey:=#2*cm;
+ XMax:=XMax+2;
+ XMin:=XMin-2;
+ YMax:=YMax+2;
+ YMin:=YMin-2;
+ %On trace la grille
+ drawoptions(withcolor 0.95white);
+ for k=0 upto (XMax-XMin):
+ draw ((XMin+k)*unitex,YMin*unitey)--((XMin+k)*unitex,YMax*unitey);
+ endfor;
+ for k=0 upto (YMax-YMin):
+ draw (XMin*unitex,(YMin+k)*unitey)--(XMax*unitex,(YMin+k)*unitey);
+ endfor;
+ drawoptions();
+ %On trace les axes
+ drawarrow (XMin*unitex,0)--(XMax*unitex,0);
+ drawarrow (0,YMin*unitey)--(0,YMax*unitey);
+ label.llft(btex O etex,(0,0));
+ dotlabel.bot(btex 1 etex,(unitex,0));
+ dotlabel.lft(btex 1 etex,(0,unitey));
+ % On trace la droite
+ pair A[];
+ A1=(#5*unitex,(#5*#3+(#4))*unitey);
+ A2=(#6*unitex,(#6*#3+(#4))*unitey);
+ draw 2[A1,A2]--2[A2,A1];
+ clip currentpicture to ((XMin*unitex,YMin*unitey)--(XMax*unitex,YMin*unitey)--(XMax*unitex,YMax*unitey)--(XMin*unitex,YMax*unitey)--cycle);
+ %On labellise les points
+ fill (fullcircle scaled 1mm) shifted A1;
+ fill (fullcircle scaled 1mm) shifted A2;
+ draw (xpart(A1),0)--A1--(0,ypart(A1)) dashed evenly;
+ draw (xpart(A2),0)--A2--(0,ypart(A2)) dashed evenly;
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.top(LATEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
+ else:
+ label.bot(LATEX("\num{"&decimal(#5)&"}"),(xpart(A1),0));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.top(LATEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
+ else:
+ label.bot(LATEX("\num{"&decimal(#6)&"}"),(xpart(A2),0));
+ fi;
+ fi;
+ if #3=0:
+ label.urt(LATEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ if #3>0:
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.rt(LATEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ label.lft(LATEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.rt(LATEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ else:
+ label.lft(LATEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ fi;
+ fi;
+ else:
+ if (#5*#3+(#4))=0:
+ else:
+ if (#5*#3+(#4))<0:
+ label.lft(LATEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ else:
+ label.rt(LATEX("\num{"&decimal(#5*#3+(#4))&"}"),(0,ypart(A1)));
+ fi;
+ fi;
+ if (#6*#3+(#4))=0:
+ else:
+ if (#6*#3+(#4))<0:
+ label.lft(LATEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ else:
+ label.rt(LATEX("\num{"&decimal(#6*#3+(#4))&"}"),(0,ypart(A2)));
+ fi;
+ fi;
+ fi;
+ fi;
+ % On affiche ou pas "la marche" du coef directeur
+ for p_=#7:
+ if numeric p_:
+ draw ((#7*unitex,(#7*#3+(#4))*unitey)--((#7+1)*unitex,(#7*#3+(#4))*unitey)--((#7+1)*unitex,((#7+1)*#3+(#4))*unitey)) withcolor red;
+ fi;
+ endfor;
+ \end{mpost}
+ \fi
+}% \ No newline at end of file