Avec PSTricks, on peut avoir des tâches répétitives à faire; dans ce cas, le module multido est utile. Nous l'avons vu à la page précédente, mais sur un cas trop simple.
Notre probléme ici, va consister à tracer 21 segments joignant les points
(0.05k-1; 0) et (1; exp(0.05k)*(2-0.05k)) avec
k prenant les valeurs entières de 0 à 20.
Accessoirement, on fera un petit dégradé de couleurs entre le gris bleu de code rgb(0, 0.5,0.5) et le rouge pâle
de code rgb (1, 0.5, 0.5)
Le problème est que dans
\multido{\i=0+1}{21}{psplot(1,…)(…0)}
, on ne pourra remplacer chaque … que par une variable et non par une fonction de \i.
Le paquetage fp va permettre ceci.
On va définir deux variables
\FPeval{absc}{\i*0.05-1}
\FPeval{ordo}{exp(\i*0.05)*(2-\i*0.05)} La documentation de fp n'est pas très «user friendly » et est réduite à ce fichier
\documentclass[a4paper,10pt]{report}
\usepackage[latin1]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{pstricks,pst-plot}
\usepackage{fp}
\usepackage{multido}
\begin{document}
\psset{xunit=6cm,yunit=3cm}
\begin{pspicture}(-1.1,-0.1)(1.1,3)
\psaxes(0,0)(-1,0)(1,3)
\multido{\i=0+1}{21}{%
\FPeval{absc}{\i*0.05-1}
\FPeval{ordo}{exp(\i*0.05)*(2-\i*0.05)}
\FPeval{coul}{\i*0.05}
\definecolor{couleur}{rgb}{\coul,0.5,0.5}
\psline[linewidth=0.2pt,linecolor=couleur](1,\ordo)(\absc,0)
}
\end{pspicture}
\end{document}
On a placé % pour qu'il n'y ait pas d'espace après l'accolade ouvrante. Il semble que ce soit une bonne habitude à prendre quand on fait de la programmation avec LaTeX. De même une ligne vide à l'intérieur des accolades déclenchera une erreur.
Une variante sans fp mais avec pstricks-add que m'a proposé
l'immense Jean-Éric Visca …
Au lieu d'utiliser \psline qui trace un segment, il utilise \psplot qui dessine une fonction.
\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{multido}
\usepackage{pstricks-add}
\begin{document}
\psset{xunit=8,yunit=4}
\begin{pspicture}(-1,0)(1.5,2)
\psaxes{->}(0,0)(-1,0)(1,2)
\multido{\n=-1+0.05}{21}{%
\definecolor{couleur}{rgb}{-\n,0.5,0.5}
\psplot[algebraic,linecolor=couleur]{\n }{1}
{2.718^(\n +1)*(1-\n)/(1-\n)*x+2.718^(\n +1)*(1-\n)-2.718^(\n +1)*(1-\n)/(1-\n)}}
\end{pspicture}
\end{document}