texlive[44298] Master/texmf-dist: repere (11may17)

commits+karl at tug.org commits+karl at tug.org
Fri May 12 00:45:29 CEST 2017


Revision: 44298
          http://tug.org/svn/texlive?view=revision&revision=44298
Author:   karl
Date:     2017-05-12 00:45:29 +0200 (Fri, 12 May 2017)
Log Message:
-----------
repere (11may17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/metapost/repere/README.md
    trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf
    trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex
    trunk/Master/texmf-dist/metapost/repere/repere.mp

Modified: trunk/Master/texmf-dist/doc/metapost/repere/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/repere/README.md	2017-05-11 22:45:06 UTC (rev 44297)
+++ trunk/Master/texmf-dist/doc/metapost/repere/README.md	2017-05-11 22:45:29 UTC (rev 44298)
@@ -1,3 +1,5 @@
+Package repere - Version 17.05 - May 10, 2017
+
 This package provides MetaPost macros for drawing sec­ondary school math­e­mat­ics figures in a coordinate system :
 - axis, grids
 - points, vectors
@@ -7,5 +9,5 @@
 
 The doc is in french...
 
-License LPPL
+License LPPL 1.3
 

Modified: trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex	2017-05-11 22:45:06 UTC (rev 44297)
+++ trunk/Master/texmf-dist/doc/metapost/repere/repere-doc.tex	2017-05-11 22:45:29 UTC (rev 44298)
@@ -226,7 +226,7 @@
 \title{Documentation de \texttt{repere.mp}}
 \date{\today}
 \author{Olivier \textsc{Péault}%
-\footnote{E-mail : \href{mailto:o.peault at openmailbox.org}{\texttt{o.peault at openmailbox.org}}}}
+\footnote{E-mail : \href{mailto:o.peault at posteo.net}{\texttt{o.peault at posteo.net}}}}
 \maketitle
 
 \setcounter{tocdepth}{2}
@@ -608,8 +608,8 @@
 pointe(D,E,F);
 marque_p:="creux";drawoptions(withcolor orange);
 nomme.bot(pol(sqrt(2),-pi/4),
-          LaTeX("$\sqrt{2}e^{-i\frac{\pi}{4}}$"));
-nomme.bot((-1.5,1),LaTeX("$(-1,5;1)$"));
+          "$\sqrt{2}e^{-i\frac{\pi}{4}}$");
+nomme.bot((-1.5,1),"$(-1,5;1)$");
 marque_p:="plein";drawoptions(withcolor violet);
 for i=2 upto 4:
   C[i]=(-3+i/2,i);nomme.lft(C[i]);
@@ -774,6 +774,46 @@
 fin;
 \end{exemple}
 
+
+\subsection{Nommage automatique des courbes}
+\begin{description}
+\item[nomme(p,nom)] affiche \verb|nom| au niveau d'un point d'intersection de \verb|p| et du contour de la figure. Ce point est choisi en fonction de la chaine \verb|prefnomme| qui peut prendre les valeurs \verb|"right"| (valeur par défaut), \verb|"left"|, \verb|"top"| ou \verb|"bottom"|.
+\end{description}
+
+\begin{exemple}
+prefnomme:="left";
+
+repere(-5,5,0.7cm,-5,5,0.7cm);
+path d,C_f;
+d=droite(-1,3);
+vardef f(expr x)=0.5(x**2)-x -4 enddef;
+C_f=courbefonc(f)();
+draw axes(1,1);
+draw d epaisseur 1 couleur bleu;
+draw C_f epaisseur 1 couleur bleu;
+nomme(d,"$d_2$") couleur bleu;
+nomme(C_f) couleur bleu;
+draw cadre;
+fin;
+\end{exemple}
+
+\begin{exemple}
+prefnomme:="bottom";
+
+repere(-5,5,0.7cm,-5,5,0.7cm);
+path d,C_f;
+d=droite(-1,3);
+vardef f(expr x)=0.5(x**2)-x -4 enddef;
+C_f=courbefonc(f)();
+draw axes(1,1);
+draw d epaisseur 1 couleur bleu;
+draw C_f epaisseur 1 couleur bleu;
+nomme(d,"$d_2$") couleur bleu;
+nomme(C_f) couleur bleu;
+draw cadre;
+fin;
+\end{exemple}
+
 \subsection{Dérivée et tangentes}
 \begin{description}
 \item[der.p(x)] image de \verb+x+ par la dérivée de la fonction dont la courbe représentative est \verb+p+.
@@ -799,9 +839,9 @@
 draw axes(1,1);
 drawoptions(withpen pencircle scaled 1);
 draw p withcolor  bleu;
-nomme.rt(p,0.7,LaTeX("$y=f(x)$"));
+nomme.rt(p,0.7,"$y=f(x)$");
 draw q withcolor  rouge;
-nomme.lft(q,3.7,LaTeX("$y=f'(x)$"));
+nomme.lft(q,3.7,"$y=f'(x)$");
 drawoptions(withpen pencircle scaled 1
             withcolor violet);
 draw tangente.double(p,0);
@@ -995,10 +1035,9 @@
 draw axes(1,1);
 draw Cf withpen pencircle scaled 1 withcolor bleu;
 drawoptions(dashed evenly withcolor rouge);
-draw projectionaxes((1.3,f(1.3)),
-         LaTeX("$x$"),LaTeX("$f(x)$"));
-draw projectionx.urt(A1,LaTeX("$x_1$"));
-draw projectionx.llft(A2,LaTeX("$x_2$"),-6);
+draw projectionaxes((1.3,f(1.3)),"$x$","$f(x)$");
+draw projectionx.urt(A1,"$x_1$");
+draw projectionx.llft(A2,"$x_2$",-6);
 draw A1--A2;
 fin;
 \end{exemple}
@@ -1024,7 +1063,7 @@
 drawoptions(withcolor violet);
 draw intervallex.OF(1,4);
 draw intervalley.FF(0.75,3);
-label(LaTeX("$f(]1;4])=[0,75;3]$"),(2.5,4));
+label("$f(]1;4])=[0,75;3]$",(2.5,4));
 draw cadre;
 fin;
 \end{exemple}
@@ -1082,7 +1121,7 @@
 
 
 \begin{description}
-\item[diagrammebarres((a1,h1),(a2,h2),...(an,hn))] Figure formée de \verb|n| barres rectangulaires de hauteurs \verb|h1| \dots \verb|hn| aux abscisses \verb|a1| \dots \verb|an|. La largeur de ces barres est le nombre \verb|largbarres| qui vaut 20 par défaut.
+\item[diagrammebarres((a1,h1),(a2,h2),...(an,hn))] Figure formée de \verb|n| barres rectangulaires de hauteurs \verb|h1| \dots \verb|hn| aux abscisses \verb|a1| \dots \verb|an|. La largeur de ces barres est le nombre \verb|largbarres| qui vaut \verb|20bp| par défaut.
 \end{description}
 
 \begin{exemple}[0.6]
@@ -1101,7 +1140,7 @@
 
 \subsection{Probabilités}
 
-Quelques fonctions mathématiques sont proposées. Pour les grandes valeurs, on dépasse rapidement les capacités de \MP. Il est dans ce cas conseillé de compiler en utilisant la ligne de commande \verb|mpost -numbersystem="double" <fichier>.mp|.
+Quelques fonctions mathématiques sont proposées. Pour les grandes valeurs, on dépasse rapidement les capacités de \MP. Il est dans ce cas conseillé de compiler en utilisant la ligne de commande \verb|mpost -numbersystem="decimal" <fichier>.mp|.
 
 
 \begin{description}
@@ -1109,6 +1148,9 @@
 \item[binom(n,k)] Entier égal à $\binom{n}{k}$.
 \item[binomiale(n,p,k)] $P(X=k)$ pour $X$ suivant la loi binomiale de paramètres $n$ et $p$.
 \item[diagrammebinomiale(n,p)] Diagramme en bâtons de la loi binomiale de paramètres $n$ et $p$.
+\item[diagrammeuniforme(n,m)] Diagramme en bâtons de la loi uniforme discrète sur les entiers consécutifs de \verb|n| à \verb|m|.
+\item[diagrammegeometrique(p)] Diagramme en bâtons de la loi géométrique de paramètre \verb|p|.
+\item[diagrammepoisson(lambda)] Diagramme en bâtons de la loi de Poisson de moyenne \verb|lambda|.
 \end{description}
 
 
@@ -1120,11 +1162,76 @@
 picture diag;
 diampointsbatons:=0;
 diag:=diagrammebinomiale(15,0.6);
-draw diag withcolor blue epaisseur 4;
+draw diag withcolor vertfonce epaisseur 4;
 fin;
 \end{exemple}
 
+\begin{codecache}
+diampointsbatons:=5;
+\end{codecache}
 
+\begin{exemple}
+repere.larg(-2,10,8cm,-0.1,0.5,6cm);
+ setall(0,10,0,0.5);
+ draw axex(1,1);
+ draw axey(0.05,0.05);
+ draw diagrammegeometrique(0.4)
+                   epaisseur 2 couleur bleu;
+fin;
+\end{exemple}
+
+\begin{exemple}
+repere(-2,16,0.45cm,-0.1,0.25,15cm);
+setall(0,16,0,0.25);
+draw axex(1,1);
+draw axey(0.1,0.1);
+picture diag;
+diampointsbatons:=0;
+diag:=diagrammepoisson(6);
+draw diag withcolor orange epaisseur 4;
+fin;
+\end{exemple}
+
+\begin{description}
+\item[densitenormale(mu,sigma,a,b)] Courbe représentant la densité de la loi normale de moyenne \verb|mu| et d'écart type \verb|sigma| entre \verb|a| et \verb|b|. Si \verb|a| et \verb|b| sont omis, le tracé est fait sur l'intervalle définissant le repère.
+\item[densiteexponentielle(lambda)] Courbe représentant la densité de la loi normale de paramètre \verb|lambda|.
+\end{description}
+
+\begin{codecache}
+prefnomme:="top";
+\end{codecache}
+
+\begin{exemple}[0.45]
+repere(-4,32,0.23cm,-0.01,0.12,46cm);
+  draw axex(2,2);
+  draw axey(0.02,0.02);
+  path C,d;
+  C=densitenormale(16,4);
+  fill souscourbe(C,0,14) couleur gris;
+  draw souscourbe(C,0,14);
+  draw C epaisseur 2 couleur rouge;
+  d=droite(16);
+  draw d dashed evenly;
+  drawarrow (5,0.06)--(11,0.02);
+  label.top("$P(X\leq 14)$",(5,0.06));
+  nomme(d,"$\mu$");
+fin;
+\end{exemple}
+
+\begin{exemple}
+repere.larg(-1,9,8cm,-0.05,0.6,6cm);
+  setall(0,9,0,0.6);
+  draw axex(1,1);
+  draw axey(0.1,0.1);
+  path C,D;
+  C=densiteexponentielle(0.5);
+  D=densiteexponentielle(0.3);
+  draw C epaisseur 2 couleur rouge;
+  draw D epaisseur 2 couleur violet;
+fin;
+\end{exemple}
+
+
 \section{Géométrie}
 Certaines des macros suivantes sont largement inspirées des macros de \verb|geometriesyr16.mp| de Christophe \bsc{Poulain}.
 
@@ -1236,7 +1343,7 @@
 drawarrow marqueangle(A,C,B);
 fill marqueangle(B,A,C,1) withcolor vert;
 draw marqueangle(B,A,C,1);
-nomme.rt(B,A,C,LaTeX("\ang{45}"));
+nomme.rt(B,A,C,"\ang{45}");
 fin;
 \end{exemple}
 
@@ -1250,8 +1357,7 @@
 pair A,B,C,A',B',C',u;
 A=(3,1);B=(5,2);C=(1,5);u=(3,3);
 A'-A=B'-B=C'-C=u;
-draw projectionaxes(A,LaTeX("$x_A$"),
-                 LaTeX("$y_A$")) dashed evenly;
+draw projectionaxes(A,"$x_A$","$y_A$") dashed evenly;
 draw axes(0,0);
 drawoptions(withcolor pourpre);
 draw triangle(A,B,C);draw triangle(A',B',C');
@@ -1289,12 +1395,28 @@
 \begin{exemple}[0.55]
 repere(-1,5,1cm,-1,4,1cm);
 draw axes(1,1);
-label.ulft(LaTeX("Abscisses"),(5,0.1));
-label.lrt(LaTeX("Ordonnées"),(0.1,4));
-label(LaTeX("$f(x)=\pi^2\sqrt{x}$"),(2,2));
+label.ulft("Abscisses",(5,0.1));
+label.lrt("Ordonnées",(0.1,4));
+label("$f(x)=\pi^2\sqrt{x}$",(2,2));
 fin;
 \end{exemple}
 
+\begin{description}
+\item[legende.pos(fig,p)] Figure formée du chemin \verb|p| dessiné avec une flèche et de la figure ou de la chaine \verb|fig| située à la position \verb|pos| par rapport au premier point du chemin.
+\end{description}
+
+\begin{exemple}[0.6]
+repere(-0.5,5,1cm,-0.5,4,1cm);
+  draw axes(1,1);
+  pair A,B;
+  A=(2,1);B=(2,2);
+  nomme.rt(A) couleur rouge;
+  nomme.top(B) couleur rouge;
+  legende.top("Le point $A$",(1,3){down}..{down}A);
+  legende.bot("Le point $B$",(4,1)--B);
+fin;
+\end{exemple}
+
 \subsection{Couleurs}
 Certaines couleurs sont définies par leur nom et peuvent être utilisées directement : 
 
@@ -1499,7 +1621,7 @@
 Il est aussi possible d'utiliser Lua\LaTeX{} avex le package \verb|luamplib|. Il faut alors charger les packages \verb|siunitx| et \verb|esvect| utilisés par \verb|repere|.
 
 \begin{center}
-\begin{minipage}[t]{0.45\linewidth}
+\begin{minipage}[t]{0.5\linewidth}
 {\centering \textbf{Utilisation de Lua\LaTeX}\par}
 
 
@@ -1511,6 +1633,7 @@
 \usepackage{siunitx}
 \usepackage{esvect}
 \usepackage{luamplib}
+\mplibnumbersystem{double} % Si nécessaire
 \begin{document}
 \everymplib{input repere;}
 \begin{mplibcode}
@@ -1529,7 +1652,6 @@
 
 \begin{exemple}
 repere(-0.5,5,1cm,-0.5,5,1cm);
-coulpoint:=blue;coullabel:=blue;
 pair A,B,C,D;
 A=(0.5,0.5);B=(4,1);C=(3,4);
 typetrace:="mainlevee";

Modified: trunk/Master/texmf-dist/metapost/repere/repere.mp
===================================================================
--- trunk/Master/texmf-dist/metapost/repere/repere.mp	2017-05-11 22:45:06 UTC (rev 44297)
+++ trunk/Master/texmf-dist/metapost/repere/repere.mp	2017-05-11 22:45:29 UTC (rev 44298)
@@ -1,8 +1,8 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%                        repere.mp                           %%
 %%   Macros pour la construction de figures dans un repère    %%
-%%                 o.peault at openmailbox.org                   %%
-%%               Version 16.10 (Octobre 2016)                 %%
+%%                    o.peault at posteo.net                     %%
+%%                  Version 17.05 (Mai 2017)                  %%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 % This work may be distributed and/or modified under the conditions of
@@ -102,6 +102,7 @@
   save i,_def;
   if not rep_groupe: oldbeginfig(_nfig);bf:=true fi;
   numeric _def[],i,unitex,unitey,unite;
+  numeric Xmin,Xmax,Ymin,Ymax,XmiN,XmaX,YmiN,YmaX;
   _def[7]:=90;i:=1;
   for _i=t: _def[i]:=_i; i:=i+1; endfor;
   Xmin:=_def1; Xmax:=_def2; Ymin:=_def4; Ymax:=_def5; theta:=_def7;
@@ -150,7 +151,8 @@
   vardef thelabel@#(expr s,z) =  % Position s near z
     save p; picture p;
     if picture s:  p=s
-    else:    p = s infont defaultfont scaled defaultscale
+%    else:    p = s infont defaultfont scaled defaultscale
+    else:    p = LaTeX(s)
     fi;
     p shifted (_cart(z) + labeloffset*laboff@# -
        (labxf@#*lrcorner p + labyf@#*ulcorner p
@@ -205,6 +207,12 @@
   filldraw arrowhead _apth  t
 enddef;
 
+def _findarr text t =
+  olddraw _apth t;
+  filldraw arrowhead _apth withpen currentpen  t;
+  filldraw arrowhead  reverse _apth  withpen currentpen  t
+enddef;
+
 vardef arrowhead expr p = %redéfinition flèches
   save q,e; path q; pair e;
   e = point length p of p;
@@ -247,6 +255,8 @@
 
 def _defcadre=
    cadre:=(Xmin,Ymin)--(Xmin,Ymax)--(Xmax,Ymax)--(Xmax,Ymin)--cycle;
+   XmiN:=Xmin-0.05(Xmax-Xmin);XmaX:=Xmax+0.05(Xmax-Xmin);
+   YmiN:=Ymin-0.05(Ymax-Ymin);YmaX:=Ymax+0.05(Ymax-Ymin);
    _diag:=abs(llcorner cadre - urcorner cadre);
    _diag_:=abs(llcorner _cart(cadre) - urcorner _cart(cadre));
    _largcadre:=abs(llcorner cadre - lrcorner cadre);
@@ -881,8 +891,7 @@
         draw axes(0,0);
         draw axexpart(1);
         draw axeypart(1);
-        label.llft(LaTeX("$0$"),_cart(0,0));
- %       label.llft("0",_cart(0,0));
+        label.llft("$0$",_cart(0,0));
           );
   $
 enddef;
@@ -965,7 +974,7 @@
    if long_texte(t)=1:
       dess:=image(draw MarquePointFig(t);
                   ch:=_chaine(t);
-                  label@#(LaTeX("$" & ch & "$"),t) withcolor coullabel)
+                  label@#("$" & ch & "$",t) withcolor coullabel)
    else:
       dess:=image(%
       for PP=t:
@@ -977,6 +986,7 @@
    dess
 enddef;
 
+
 vardef nommecourbe@#(suffix p)(text t)=
    save A,ch,dess;
    pair A;
@@ -985,7 +995,7 @@
    if long_texte(t)=1: 
       dess:=image(ch:=_chaine(p);
                   A:=(t,fonccourbe.p(t));
-                  label@#(LaTeX("$" & ch & "$"),A) withcolor coullabelfonc)
+                  label@#("$" & ch & "$",A) withcolor coullabelfonc)
    else:
       dess:=image(%
         for _a=t:
@@ -999,6 +1009,9 @@
 
 
 
+
+
+
 vardef nommeobj@#(text t)=
  save $;
  picture $;
@@ -1006,6 +1019,7 @@
  else:
    for i=t:
      if pair i: $:=nommepoint@#(t)
+     elseif str @#="": $:=nommeautoobj(t)
      else: $:=nommecourbe@#(t)
      fi;
      exitif true;
@@ -1017,6 +1031,102 @@
 def nomme = draw nommeobj enddef;
 
 
+%
+% Notation automatique des chemins 02/17
+%
+string prefnomme;
+prefnomme:="right";
+
+% Permet de savoir si un point est mieux placé relativement à prefnomme
+tertiarydef A estmieuxplace B =
+   if prefnomme="right": xpart A > xpart B
+   elseif prefnomme="left": xpart A < xpart B
+   elseif prefnomme="top": ypart A > ypart B
+   elseif prefnomme="bottom": ypart A < ypart B
+   elseif hide(errmessage "string 'prefnomme' should be set to left, right, top or bottom")
+   fi
+enddef;
+
+% Cherche le "time" du meilleur point
+vardef pointnommetime(expr p)=
+  save Pt, nbint, P, T,pp;
+  pair Pt,P[];
+  numeric nbint,pp,T[];
+  intercourbestimes(T)(cadre,p);
+  Pt:=_O;pp:=0;
+  if known T[1]:
+    Pt:= point T[1] of p;
+    pp:=T[1];
+    nbint:=1;
+    forever:
+      exitif not known T[nbint+1];
+      nbint:=nbint+1;
+      if (point T[nbint] of p) estmieuxplace Pt:
+         Pt:=point T[nbint] of p;
+         pp:=T[nbint];
+      fi;
+    endfor
+  fi;
+  pp
+enddef;
+
+% Cherche la "meilleure" position du label du point pp de time tt du chemin courbe
+vardef position(expr pp,tt,courbe)=
+  save pos,tmpdir;
+  string pos;
+  numeric tmpdir;
+  tmpdir := angle(direction tt of courbe);
+  if arrondimil((Ymax-ypart pp)/(Ymax-Ymin))=0:
+     if tmpdir <0: pos:="llft"
+     else: pos:="lrt"
+     fi
+  elseif arrondimil((Ymin-ypart pp)/(Ymax-Ymin))=0:
+     if tmpdir <0: pos:="urt"
+     else: pos:="ulft"
+     fi
+  elseif arrondimil((Xmax-xpart pp)/(Xmax-Xmin))=0:
+     if tmpdir <0: pos:="llft"
+     else: pos:="ulft"
+     fi
+  elseif arrondimil((Xmin-xpart pp)/(Xmax-Xmin))=0:
+     if tmpdir <0: pos:="urt"
+     else: pos:="lrt"
+     fi
+  fi;
+  pos
+enddef;
+
+% Notation automatique des chemins
+
+% Avec label automatique
+vardef nommeautoobjsuf(suffix p)=
+  nommeautoobjtex(p,"$" & _chaine(p) & "$")
+enddef;
+
+% Avec label donné
+vardef nommeautoobjtex(expr p,leg)=
+  save ptA,pos,ttmp;
+  pair ptA;
+  numeric ttmp;
+  string pos;
+  ttmp:=pointnommetime(p);
+  ptA:= point ttmp of p;
+  pos:=position(ptA,ttmp,p);
+  if string leg:
+     scantokens("thelabel." & pos)(leg,ptA)
+  else:
+    scantokens("thelabel." & pos)(leg scaled defaultscale,ptA)
+  fi
+enddef;
+
+vardef nommeautoobj(text t)=
+  if long_texte(t)=1: nommeautoobjsuf(t)
+  else: nommeautoobjtex(t)
+  fi
+enddef;
+
+
+
 vardef vecteur@#(expr A)(text t)=
    save $,ch,m;
    picture $;
@@ -1023,11 +1133,11 @@
    pair m;
    string ch;
    $=image(%
-   if long_texte(t)=1: drawarrow A--A+t;ch:=_chaine(t);label@#(LaTeX("$\vv{" & ijmath(ch) & "}$"),A+t/2)
+   if long_texte(t)=1: drawarrow A--A+t;ch:=_chaine(t);label@#("$\vv{" & ijmath(ch) & "}$",A+t/2)
    else:
       for u=t:
         if pair u: drawarrow A--A+u; m:=A+u/2
-        else: if string u: if u<>"": label@#(LaTeX("$\vv{" & u & "}$"),m) fi else: label@#(u,m) fi
+        else: if string u: if u<>"": label@#("$\vv{" & u & "}$",m) fi else: label@#(u,m) fi
         fi;
       endfor
    fi);
@@ -1103,7 +1213,7 @@
  $:=image(%
  draw vecteur.bot(_O_,(1,0),ijmath(I)) withpen pencircle scaled 0.8 withcolor coulbase;
  draw vecteur.lft(_O_,(0,1),ijmath(J)) withpen pencircle scaled 0.8 withcolor coulbase;
- nomme.llft(_O_,LaTeX("$" & O & "$")) withcolor coulbase
+ nomme.llft(_O_,"$" & O & "$") withcolor coulbase
  );
  $
 enddef;
@@ -1115,9 +1225,9 @@
  picture $;
  O:=_chaine(a); I:=_chaine(b); J:=_chaine(c);
  $:=image(%
- nomme.llft(_O_,LaTeX("$" & O & "$")) withcolor coulbase;
- draw axexpart(1,LaTeX("$" & I & "$")) withcolor coulbase;
- draw axeypart(1,LaTeX("$" & J & "$")) withcolor coulbase;
+ nomme.llft(_O_,"$" & O & "$") withcolor coulbase;
+ draw axexpart(1,"$" & I & "$") withcolor coulbase;
+ draw axeypart(1,"$" & J & "$") withcolor coulbase;
  );
  $
 enddef;
@@ -1269,11 +1379,26 @@
    exitif xpart(pp intersectiontimes q)=-1;
    P[i]:=point xpart(pp intersectiontimes q) of pp;
    pp:=subpath(xpart(pp intersectiontimes q)+0.01,length pp) of pp;
-					%0.01(?!) pour que le point trouvé ne soit pas dans le sous-chemin...
+                   %0.01(?!) pour que le point trouvé ne soit pas dans le sous-chemin...
    i:=i+1;
   endfor;
 enddef;
 
+vardef intercourbestimes(suffix T)(expr p,q)= %renvoie le "time" de q des points d'intersections de p et q dans T[]
+  save i,pp;
+  numeric i;
+  path pp;
+  pp:=p;
+  i:=1;
+  forever:
+   exitif xpart(pp intersectiontimes q)=-1;
+   T[i]:=ypart(pp intersectiontimes q);
+   pp:=subpath(xpart(pp intersectiontimes q)+0.01,length pp) of pp;
+                   %0.01(?!) pour que le point trouvé ne soit pas dans le sous-chemin...
+   i:=i+1;
+  endfor;
+enddef;
+
 vardef ptantecedents(suffix P)(expr y,p)=
   intercourbes(P,(Xmin,y)--(Xmax,y),p)
 enddef;
@@ -1377,9 +1502,11 @@
  save $;
  path $;
  if (-(Ymax-Ymin)/(Xmax-Xmin)<a) and ((Ymax-Ymin)/(Xmax-Xmin)>a):
-  $:=(Xmin,a*Xmin+b)--(Xmax,a*Xmax+b);
+  $:=(XmiN,a*XmiN+b)--(XmaX,a*XmaX+b);
+ elseif a>0:
+  $:=(YmiN/a-b/a,YmiN)--(YmaX/a-b/a,YmaX);
  else:
-  $:=(Ymin/a-b/a,Ymin)--(Ymax/a-b/a,Ymax);
+  $:=(YmaX/a-b/a,YmaX)--(YmiN/a-b/a,YmiN);
  fi;
  $
 enddef;
@@ -1548,9 +1675,9 @@
 enddef;
 
 vardef suiterecprojx@#(text t)=   	%projections et étiquettes sur axe x, utilise les valeurs de suiterec
-  save $,deb,fin,nom,_qw_,un;
-  picture $,lab;
-  string nom;
+  save $,deb,fin,nom,_qw_,un,lab;
+  picture $;
+  string nom,lab;
   numeric deb,fin,_qw_,un,_prec;
   deb:=_suiterecdeb_;fin:=_suiterecfin_;un:=_suiterecinit_;
   _qw_:=1;
@@ -1580,17 +1707,17 @@
       deb:=deb+1;un:=_suiterecfonc_(un)
     fi;
     for i=deb upto fin:
-      lab:=LaTeX("$\num{" &  decimal(arrondi(10**_prec,un)) & "}$");
+      lab:="$\num{" &  decimal(arrondi(10**_prec,un)) & "}$";
       draw projectionx.@#((un,un),lab,-taillegrad);
       un:=_suiterecfonc_(un);
     endfor
   else:
     if deb=_suiterecdeb_:
-      label.@#(LaTeX("$" & nom & "_{" & decimal(deb) & "}" & "$"),(un,yO));
+      label.@#("$" & nom & "_{" & decimal(deb) & "}" & "$",(un,yO));
       deb:=deb+1;un:=_suiterecfonc_(un)
     fi;
     for i=deb upto fin:
-      lab:=LaTeX("$" & nom & "_{" & decimal(i) & "}" & "$");
+      lab:="$" & nom & "_{" & decimal(i) & "}" & "$";
       draw projectionx.@#((un,un),lab);
       un:=_suiterecfonc_(un);
     endfor
@@ -1599,9 +1726,9 @@
 enddef;
 
 vardef suiterecprojy@#(text t)=   	%projections et étiquettes sur axe y, utilise les valeurs de suiterec
-  save $,deb,fin,nom,_qw_,un;
-  picture $,lab;
-  string nom;
+  save $,deb,fin,nom,_qw_,un,lab;
+  picture $;
+  string nom,lab;
   numeric deb,fin,_qw_,un,_prec;
   deb:=_suiterecdeb_;fin:=_suiterecfin_;un:=_suiterecinit_;
   _qw_:=1;
@@ -1630,7 +1757,7 @@
       deb:=deb+1;
     fi;
     for i=deb-1 upto fin-1:
-      lab:=LaTeX("$\num{" &  decimal(arrondi(10**_prec,un)) & "}$");
+      lab:="$\num{" &  decimal(arrondi(10**_prec,un)) & "}$";
       draw projectiony.@#((un,_suiterecfonc_(un)),lab,-taillegrad);
       un:=_suiterecfonc_(un);
     endfor
@@ -1639,7 +1766,7 @@
       deb:=deb+1;
     fi;
     for i=deb-1 upto fin-1:
-      lab:=LaTeX("$" & nom & "_{" & decimal(i+1) & "}" & "$");
+      lab:="$" & nom & "_{" & decimal(i+1) & "}" & "$";
       draw projectiony.@#((un,_suiterecfonc_(un)),lab);
       un:=_suiterecfonc_(un);
     endfor
@@ -1726,26 +1853,27 @@
 vardef projboitemoustache@#(text t)=
    save $,n,_lab_,_comp_,A,tmp;
    pair A;
-   picture $,_lab_[];
+   picture $;
+   string _lab_[];
    numeric n_comp_,tmp;
    n:=long_texte(t);
    if n=0:
-     _lab_[1]:=LaTeX("$X_{min}$");
-     _lab_[2]:=LaTeX("$Q_1$");
-     _lab_[3]:=LaTeX("$M_e$");
-     _lab_[4]:=LaTeX("$Q_3$");
-     _lab_[5]:=LaTeX("$X_{max}$");
+     _lab_[1]:="$X_{min}$";
+     _lab_[2]:="$Q_1$";
+     _lab_[3]:="$M_e$";
+     _lab_[4]:="$Q_3$";
+     _lab_[5]:="$X_{max}$";
    elseif n=1:
      if t=0: for i=1 upto 5: _lab_[i]:=nullpicture; endfor
      else: 
        tmp:=floor(t);
        for i=1 upto 5:
-          _lab_[i]:=LaTeX("\num{" & decimal(arrondi(10**tmp,_valeursboitemoustache_[i])) & "}");
+          _lab_[i]:="\num{" & decimal(arrondi(10**tmp,_valeursboitemoustache_[i])) & "}";
        endfor
      fi
    else: _comp_:=1; for i=t:
-                       if numeric i: _lab_[_comp_]:=LaTeX("\num{" & decimal(i) & "}")
-                         elseif string i: _lab_[_comp_]:=LaTeX(i)
+                       if numeric i: _lab_[_comp_]:="\num{" & decimal(i) & "}"
+                         elseif string i: _lab_[_comp_]:=i
                          else: _lab_[_comp_]:=i
                        fi;
                        _comp_:=_comp_+1;
@@ -1796,25 +1924,93 @@
 enddef;
 
 vardef diagrammebarres(text t)=
-   save $;
-   path $;
-   $:= for i=t: barrei(i)-- endfor cycle;
-   $
+   save tmp;
+   path tmp;
+   tmp:= for i=t: barrei(i)-- endfor cycle;
+   tmp
 enddef;
 
-
+%octobre 2016
+%diagramme en batons de la loi binomiale
 vardef diagrammebinomiale(expr n,p)=
-   save $,Abin;
-   picture $;
-   pair Abin[];
-   $:=scantokens("diagrammebatons("&
+   save tmp;
+   picture tmp;
+   tmp:=scantokens("diagrammebatons("&
            "(0," & decimal(binomiale(n,p,0)) & ")" &
-           for i=0 upto n: ",(" & decimal(i) & "," & decimal(binomiale(n,p,i)) & ")" &
+           for i=1 upto n: ",(" & decimal(i) & "," & decimal(binomiale(n,p,i)) & ")" &
            endfor
            ")");
-   $
+   tmp
 enddef;
 
+%mai 2017
+%diagramme en batons de la loi uniforme discrète
+vardef diagrammeuniforme(expr n,m)=
+   save tmp;
+   picture tmp;
+   tmp:=scantokens("diagrammebatons("&
+           "(" & decimal(n) & "," & decimal(1/(m-n+1)) & ")" &
+           for i=n+1 upto m: ",(" & decimal(i) & "," & decimal(1/(m-n+1)) & ")" &
+           endfor
+           ")");
+   tmp
+enddef;
+
+%mai 2017
+%diagramme en batons de la loi géométrique
+vardef diagrammegeometrique(expr p)=
+   save tmp;
+   picture tmp;
+   tmp:=scantokens("diagrammebatons("&
+           "(1," & decimal(p) & ")" &
+           for i=2 upto Xmax: ",(" & decimal(i) & "," & decimal(((1-p)**(i-1))*p) & ")" &
+           endfor
+           ")");
+   tmp
+enddef;
+
+%mai 2017
+%diagramme en batons de la loi de Poisson
+vardef diagrammepoisson(expr lambda)=
+   save tmp;
+   picture tmp;
+   tmp:=scantokens("diagrammebatons("&
+           "(0," & decimal(poisson(lambda,0)) & ")" &
+           for i=1 upto Xmax: ",(" & decimal(i) & "," & decimal(poisson(lambda,i)) & ")" &
+           endfor
+           ")");
+   tmp
+enddef;
+
+
+% mai 2017
+% courbe de la densité de la loi normale
+vardef densitenormale(text t)=
+  if long_texte(t)=2: %les bornes ne sont pas précisées donc on prend Xmin et Xmax
+    densitenormalebornes(t,Xmin,Xmax)
+  else:   % les bornes sont précisées
+    densitenormalebornes(t)
+  fi
+enddef;
+
+%courbe de la densité de la loi normale entre a et b
+vardef densitenormalebornes(expr mu,sigma,a,b)=
+  vardef tmpdens(expr x)=
+    (1/(sigma*sqrt(2*pi)))*exp(-0.5*(((x-mu)/sigma)**2))
+  enddef;
+  courbefonc(tmpdens)(a,b)
+enddef;
+
+
+% Mai 2017
+% courbe de la densité de la loi exponentielle
+vardef densiteexponentielle(expr lambda)=
+  vardef tmpdens(expr x)=
+    lambda*exp(-lambda*x)
+  enddef;
+  courbefonc(tmpdens)(0,Xmax)
+enddef;
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%   POLYGONES   %%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2150,6 +2346,18 @@
 %   LaTeXsetup; textext(sc) scaled defaultscale
 %enddef;
 
+
+% Mai 2017
+% Légende avec flèche
+vardef thelegende@#(expr lab,p) =
+  image(%
+  label@#(lab,point 0 of p);
+  drawarrow p)
+enddef;
+
+def legende = draw thelegende enddef;
+
+
 %%%%%%%%%%%%%%%Figure intermédiaire%%%%%%%%%%%%%%%%%%%
 def figureinter=
   clip currentpicture to (cadre transformed _T);
@@ -2247,6 +2455,15 @@
    $
 enddef;
 
+% Mai 2017
+% P(X=k) pour X suivant la loi de Poisson de paramètre lambda
+vardef poisson(expr lambda,k)=
+ exp(-lambda)
+ for i=1 upto k:
+   *(lambda/i)
+ endfor
+enddef;
+
 %%%%%%%%%%%%%%% COULEURS %%%%%%%%%%%%%%%%%%%
 cmykcolor Rouge,Vert,Bleu,Marron,Lime,Orange,Rose,Pourpre,Violet,Cyan,Magenta,Jaune,Olive,Noir,Grisfonce,Gris,Grisclair,Blanc,Beige,Marine,Moutarde,Vertfonce;
 



More information about the tex-live-commits mailing list