Un petit document pour bien commencer.
La page qui suit s'inspire en partie du document pst-usr.
Je veux tracer ...
Dans ce texte, les arguments obligatoires sont signalés en gras.
Les macros PSTricks permettent d'accèder à une partie de la puissance du langage Postscript directement à partir d'un fichier LaTeX (ou TeX). Elles permettent de faire des choses impossibles à faire avec du LaTeX "pur" et allègent souvent considérablement la syntaxe. Par exemple, comparez la version LaTeX + package curves :
\unitlength 1mm
\begin{picture}(50,50)
\put(0,5){\vector(1,0){50}}
\put(25,5){\vector(0,1){45}}
\multiput(5,4)(10,0){5}{\line(0,1){2}}
\multiput(24,15)(0,10){4}{\line(1,0){2}}
\put(1,0){$-2$}
\put(11,0){$-1$}
\put(24,0){$0$}
\put(34,0){$1$}
\put(44,0){$2$}
\put(21,14){$1$}
\put(21,24){$2$}
\put(21,34){$3$}
\put(21,44){$4$}
\curve(5,45,15,15,25,5,35,15,45,45)
\end{picture}
à la version PSTricks :
\psset{unit=1cm}
\begin{pspicture}(-2.5,-0.5)(2.5,4.5)
\psaxes{->}(0,0)(-2.5,-0.5)(2.5,4.5)
\parabola(-2,4)(0,0)
\end{pspicture}
étonnant, non ?
Normalement, les packages PSTricks devraient déjà être installés sur votre ordinateur après installation d'une distribution de LaTeX.
Tapez \usepackage{pstricks}
dans le préambule de votre document (avant \begin{document}).
Des macros spécialisées sont fournies dans des fichiers séparés. Par exemple, si vous avez besoin de pst-plot, tapez dans le préambule \usepackage{pst-plot} qui se chargera au passage de charger pstricks (on pourra donc juste taper \usepackage{pst-plot} au lieu de \usepackage{pstricks,pst-plot}).
Pour créer une figure PSTricks, vous allez commencer par définir les dimensions de celles-ci et utiliser l'environnement \pspicture
ou sa variante \pspicture*
qui n'affiche que ce qui devrait être contenu dans le cadre. Par exemple :
\begin{pspicture*}(4,3)
\psaxes{->}(4,3)
\psplot{0.1}{4}{1 x div}
\end{pspicture*}
ne trace que la partie de la courbe de la fonction inverse contenue dans le cadre (0,0)(4,3).
Notes :
\pspicture....\endpspicture
Les paramètres indiqués entre crochets sont facultatifs.
Les valeurs numériques (coordonnées, etc.) sont écrites à l'anglo-saxone c'est-à-dire avec un point : on écrira 1.5 au lieu de 1,5 (la virgule servant le plus souvent à séparer deux coordonnées).
\psset{paramètre=valeur}
permet de modifier la valeur d'un paramètre graphique.
Elle peut être utilisé localement (avec des accolades).
Exemple :
{\psset{linecolor=yellow}\psline(0,0)(4,2)}
trace un segment de couleur jaune.
On peut aussi utiliser les paramètres optionnels des commandes, exemple :
\psline[linewidth=0.5,linecolor=blue]{->}(2,-1)(3,2)
équivaut à
{\psset{linewidth=0.5,linecolor=blue}\psline{->}(2,-1)(3,2)}
Les valeurs des paramètres sont stockées dans des macros (voir tableau ...) ce qui permet des constructions telles que :
\psset{linecolor=\psfillcolor}
Consultez le tableau des paramètres pour en savoir plus (valeurs par défaut, valeurs possibles).
L'unité n'a pas toujours à être précisée.
Si on pose \psset{unit=2cm}
alors \psset{linewidth=1cm}
et \psset{linewidth=0.5}
sont équivalents.
Si on veut utiliser ce principe avec des commandes non-Postscript, on utilisera les
commandes \pssetlength{cmd}{dim}
et \psaddtolength{cmd}{dim}.
Exemple : \pssetlength{malongueur}{0.5}
(sous-entendu 0,5 PS-unité).
\psset{xunit=1pt}
règle \psxunit
à 1pt
idem pour \psunit
(=\psrunit
), \psyunit
.
Exemple :
Remarque :
Avec \psset{yunit=1pt}
,
\psline(0cm,20pt)(5cm,80pt)
est équivalent à \psline(0,20)(5,80)
.
Exemple :
\psaxes{->}[tickstyle=bottom,Dx=2](0,0)(xmin,ymin)(xmax,ymax)
.
ticksize indique la longueur des traits.
La commande \SpecialCoor
permet d'utiliser les coordonnées polaires.
Vous pouvez alors choisir des coordonnées cartésiennes sous la forme (x , y) ou des coordonnées polaires sous la forme (r ; a). Par exemple :
\SpecialCoor
permet aussi de remplacer un angle par les coordonnées d'un point. Par exemple :
\SpecialCoor
\psarc(0,0){1cm}{0}{(-1,1)}
équivaut à
\psarc(0,0){1cm}{0}{135}
Enfin, on peut insérer des coordonnées définies par du code Postscript avec (!code). Par exemple :
(!2 sqrt 45 cos mul 2 sqrt 45 sin mul) équivaut à (1,1) ou (à peu près) à (1.414;45).
Pour revenir au mode de coordonnées normales, utilisez \NormalCoor
.
\renewcommand{\pshlabel}[1]{{\scriptsize $#1$}}
écrit les graduations de l'axe horizontal dans une taille plus petite (de même avec\psvlabel
).
origin={coordonnées}
C'est le seul cas où les coordonnées sont entre accolades.
swapaxes=true
inverse le rôle des axes (utile si vous changez d'avis sur l'orientation d'un graphique).
\degrees[num] permet le changement d'unité d'angles
Exemple :
\degrees[100]
Remarque : \radians
équivaut à \degrees[6.28319]
.
\psdots*[param](x1,y1)...(x n ,yn)
place des points aux coordonnées précisées. La forme des points dépend du paramètre dotstyle (par défaut *). Ce paramètre peut aussi être utile lors de l'utilisation du paramètre showpoints.
Les valeurs possibles sont :
* o + triangle triangle* square square* pentagon pentagon* |
Il est possible de les agrandir ou de les faire tourner aves les paramètres dotscale et dotangle (voir tableau des paramètres).
La taille du point dotsize dépend du paramètre linewidth (lors de l'utilisation de showpoints=true). Pour éviter cela, utilisez quelque chose du genre :
\psset{dotsize=3pt 0}
pour fixer la taille d'un point à 3pt.
\qline(x0,y0)(x1,y1)
trace un segment. Pour changer un paramètre du segment
(exemple : linewidth), utiliser \psset. Vous pouvez aussi utiliser \psline
.
\psline*[param]{flèches}(x0,y0) (x 1,y1)(x2,y2)...(x n ,y n)
Exemple :
\psline[linewidth=1.5,linearc=.25]{->}(4,2)(0,1)(2,0)
\pspolygon*[param]{flèches}(x0,y0)(x1,y1)(x2,y2)...(xn,yn)
Idem que \psline
mais trace un chemin fermé. S'il manque un point (deux couples
de coordonnées) alors l'origine (0,0) est rajoutée automatiquement.
Exemple :
\pspolygon[linearc=.2,linecolor=darkgray](1,0)(1,2)(4,0)(4,2)
\psframe*[param](x0,y0)(x1 ,y 1)
dessine un rectangle dont les coordonnées des extremités d'une diagonale sont précisées.
Si un couple de coordonnées est omis, il est remplacé par (0,0).
Voyez le tableau de paramètres pour plus d'information.
Exemple :
\psframe[linewidth=2pt,framearc=.3,fillstyle=solid,fillcolor=lightgray](4,2)
\psframe*[linecolor=white](1,.5)(2,1.5)
\pscircle*[param](x0,y0){rayon}
dessine un cercle - un disque avec la version étoilée \pscircle*
- dont le centre a pour coordonnées (x0,y0) (ou (0,0) s'il est omis).
\qdisk(x0,y0){rayon}
version allégée de \pscircle*
. Pour changer un paramètre du disque (exemple : couleur), utiliser \psset
.
\psellipse*[param](x0,y0)(x1 ,y 1)
trace une ellipse de centre (x0,y0) et dont x 1 , y1 sont respectivement les rayons horizontaux et verticaux.
Exemple :
\psellipse[fillcolor=lightgray](.5,0)(1.5,1)
\psarc*[param]{flèches}(x0,y0) {rayon}{angleA}{angleB}
trace un arc de cercle centré en (x0,y0) allant de angleA à angleB dans le sens trigonométrique.
Vous devez inclure soit le paramètre flèche soit les coordonnées du centre (?).
Exemple :
\psarc*[showpoints=true](1.5,1.5){1.5}{215}{0}
(le paramètre showpoints permet ici de localiser le "centre de l'arc").
La commande \psarc
admet trois paramètres spécifiques (valeurs par défaut : 0pt) :
arcsepA = dim : l'angle A est ajusté pour que l'arc puisse toucher une ligne d'épaisseur dim qui part du centre de l'arc dans la direction de l'angle A
arcsepB : idem pour l'angle B
arcsep : règle les deux à la fois.
Ces paramètres aident à tracer deux lignes sécantes et l'angle formé par celles-ci.
Exemple :
\SpecialCoor
\psline[linewidth=2pt](4,50)(0,0)(4,10)
\psarc[arcsepB=2pt]{->}{3}{10}{50}
(\SpecialCoor
permet de passer en coordonnées polaires).
\psarcn*[param]{flèches}(x0,y0) {rayon}{angleA}{angleB}
même chose que \psarc
mais dans le sens dans le sens des aiguilles d'une montre.
\pswedge*[param](x0,y0){rayon}{angleA}{angleB}
trace un secteur de centre (x0,y0), de rayon rayon et allant de l'angle angleA à l'angle angleB (dans le sens trigonométrique). Les angles doivent être en degrés.
Exemple :
\pswedge[linecolor=gray,linewidth=2pt,fillstyle=solid]{2}{0}{70}
\psgrid(x0,y0)(x1,y1)(x2,y2)
dessine une grille dont les sommets opposés sont (x1,y1) et (x2,y2).
Le point (x0,y0) indique l'origine des valeurs pour la graduation.
Exemple :
\psgrid(0,0)(-1,-1)(3,2)
Les divisions principales de la grille correspondent à des multiples de xunit et de yunit. Les subdivisions sont aussi autorisées. Les coordonnées devraient être en général données sous forme entière, sans unité.
Si (x0,y0) est omis alors (x1,y1) est pris à sa place.
Si vous ne donnez qu'un couple de coordonnées alors (x1,y1) est considéré comme étant (0,0).
Si vous ne donnez aucune coordonnée alors celle de l'environnement \pspicture
sont utilisées ou une grille 10 x 10 est tracée.
Remarque : les commandes \psgrid(0,0)(4,2)
et \psgrid(4,2)(0,0)
donneront la même grille mais les valeurs correspondant aux graduations principales ne seront pas placées de la même manière. Certains paramètres sont spécifiques à l'utilisation de \psgrid
, consulter le tableau des paramètres.
Exemple :
\psgrid[subgriddiv=1,griddots=10,gridlabels=7pt,subgridcolor=gray!40](-1,-1)(3,1)
Remarque :
Notez que les valeurs de xunit et de yunit sont importantes. Par exemple, si ces valeurs sont de 1pt et si vous tapez \psgrid(0,0)(10in,10in)
alors ceci donnera une grille avec 723 divisions et 3615 sous-divisions ! (en fait \psgrid
est limité à 500 divisions ou sous-divisions pour éviter ce genre d'erreurs)
Tapez plutôt alors \psgrid[unit=.5in](0,0)(20,20)
par exemple.
\psline*[param]{->}(x0,y0)(x1,y1)
Vous devez connaître les coordonnées du point d'origine et du point extremité du vecteur.
Exemple :
\psline{->}(0,1)(3,5)
trace le vecteur de coordonnées (3 ; 4) en partant du point (0 ; 1).
\psbezier*[param]{flèches}(x0,y0)(x1,y1)(x2,y2)(x3,y3)
trace une courbe de Bezier : celle-ci passe par le premier et par le dernier point et elle est tangente aux segments [M0 M1] et [M2M3]. Les points M1 et M2 "attirent" la courbe.
Exemple :
\psbezier[showpoints=true]{->}(1,4)(2,1)(4,3.5)
\parabola*[param]{flèches}(x0,y0 )(x 1,y1)
trace une parabole démarrant à (x0,y 0 ) et dont le sommet est (x1,y1).
Exemple :
\parabola*(1,1)(2,3)
\psset{xunit=.01}
\parabola{}(400,3)(200,0)
Les macros suivantes permettent de tracer une courbe passant par des points de coordonnées données.
En chaque point B de la courbe, celle-ci est perpendiculaire à la bissectrice de l'angle ABC où A et C sont les deux points voisins de B.
L'allure des courbes est controlée par le paramètre suivant :
curvature = nb1 nb2 nb3
(par défaut : 1 0.1 0)
REVOIR P 14 PSTUSR
\pscurve*[param]{flèches}(x1,y1 )...(xn,yn)
trace une courbe passant par les points donnés.
Exemple :
\pscurve[showpoints=true]{}(0,1.3)(0.7,1.8)(3.3,0.5)(4,1.6)(0.4,0.4)
\psecurve*[param]{flèches}(x1,y1 )...(xn,yn)
même chose que \pscurve
mais la courbe ne rejoint pas forcément les points extrèmes (utile si l'on ne veut pas chercher le moment où la courbe sort du repère). Le "e" correspondrait à "endpoints".
Exemple :
\psecurve[showpoints=true](.125,8)(.25,4)(.5,2)(1,1)(2,.5)(4,.25)(8,.125)
\psccurve*[param]{flèches}(x1,y1 )...(xn,yn)
même chose que \pscurve
mais la courbe est "refermée" ( "c" pour "closed).
Exemple :
\psccurve[showpoints=true](.5,0)(3.5,1)(3.5,0)(0.5,1)
Pour utiliser les macros de tracé de courbes, tapez \usepackage{pst-plot}
dans le préambule de votre document (avant \begin{document}
).
Les techniques de tracé de courbes vues précédemment recquierent la connaissance préalables des coordonnées de points de la courbe. Ce paragraphe présente des méthodes alternatives.
Le style du tracé est déterminé par le paramètre plotstyle. Le style curve demandera bien sûr plus de temps de calcul que ls style line. On pourra alternativement augmenter la valeur de plotpoints .
Si vous voulez ajouter une flèche à une courbe ouverte, utilisez le paramètre arrows (avec \psset
).
Les valeurs des paramètres ne doivent pas comporter d'unités (celles ci sont données par \psxunit
et \psyunit
).
\fileplot*[param]{fichier}
où fichier est le nom d'un fichier de coordonnées générées par un quelconque programme (exemple : Mathematica, script, etc.).
Les valeurs peuvent être délimitées par des accolades, des parenthèses, des virgules et / ou des espaces. Encadrer toutes les valeurs par des crochets peut augmenter la vitesse de traitement mais cela dépend aussi du sysytème utilisé (le crochet ouvrant [ doit être au début d'une ligne);
Le fichier ne doit contenir que des valeurs ou des commentaires après le symbole %.
\fileplot
ne reconnait que les styles de tracés dots, line, polygon et ignore les paramètres arrows, linearc et showpoints mais risque moins de provoquer des dépassements de mémoires Postscript que la commande \listplot
(qui est plus rapide et accepte ces paramètres).
Si vous trouvez que TeX prend trop de temps pour traiter cette commande, allez voir du côté de la commande \PSTtoEPS
.
\dataplot*[param]{commandes}
sert aussi à tracer à partir d'une liste de coordonnées mais vous devrez d'abord récupérer ces données avec une des deux commandes suivantes :
\readdata{commande}{fichier}
\savedata{commande}[données]
Les données ou celles présentes dans le fichier doivent se conformer aux règles vues précédemment (voir \fileplot
).
Vous pouvez concaténer ou réutiliser des listes de valeurs.
Exemple :
\readdata{\toto}{toto.data}
\readdata{\totodeux}{totobis.data}
\dataplot{\toto\totodeux}
\dataplot[origin=(0,1)]{\totodeux}
L'utilisation de \readdata
et de \savedata
est plus rapide que celle de \fileplot
si vous réutilisez les données.
Par contre, \fileplot
utilise moins de mémoire TeX que \readdata
et \savedata
si vous utilisez \PSTtoEPS
.
VOIR PSTUSR2 POUR EXEMPLE
\listplot[param]{liste}
IDEM
\psplot*[param]{xmin}{xmax}{fonction}
A la base, il faut écrire les expressions des fonctions en notation polonaise inversée : les fonctions s'appliquent au résultat -exemple : cos- ou aux deux résultats précédents -exemple : exp pour la puissance-, voir les exemples suivants.
x doit être la variable.
Cependant, en chargeant l'extension pstricks-add (\usepackage{pstricks-add}), on peut utiliser l'option algebraic=true pour taper les expressions dans un langage usuel.
Ainsi, on pourra taper :
\psplot{-2}{1}{
x 2 exp 2 sub}
ou
\psplot[algebraic=true]{-2}{1}{x^2-2}
On peut aussi intégrer cette option dans \psset :
\psset{algebraic=true,unit=9mm,...}
\psplot{-2}{1}{x^2-2}
La fin de ce paragraphe est relativement obsolète, sauf si vous voulez continuer d'utiliser la notation polonaise inversée.
ou x 3 add x mul 5 sub |
Exemple :
\psplot[plotpoints=200]{0}{720}{x sin}
trace la courbe de la fonction sinus de 0 à 720 degrés avec un pas de 3,6 degrés (les points sont reliés par\psline
).
Exemple :
\psset{xunit=1.2pt}
\psplot[linecolor=gray,linewidth=1.5pt,plotstyle=curve]{0}{90}{x sin dup mul}
\psplot[plotpoints=100]{0}{90}{x sin x 2 div 2 exp cos mul}
\psline{}(0,-1)(0,1)
\psline{->}(100,0)
trace les courbes des fonctions définies sur [0 ; 90] par sin 2(x) et de sin(x)cos((x / 2)2)
\parametricplot*[param]{tmin}{tmax}{fonctions}
où fonctions est le code Postscript permettant le calcul de x(t) et y(t).
Exemple :
\parametricplot[plotstyle=dots,plotpoints=13]{-6}{6}{1.2 t exp 1.2 t neg exp}
trace 13 points de l'hyperbole d'équation x y = 1 ( x = 1,2t et y = 1,2-t ), en commençant à (1,2-6;1,26 ) et en finissant à (1,2 6;1,2-6).
Exemple :
\psset{xunit=1.7cm}
\parametricplot[linewidth=1.2pt,plotstyle=curve]{0}{360}{t sin t 2 mul sin}
\parametricplot[plotpoints=100]{0}{90}{x sin x 2 div 2 exp cos mul}
\psline{}(0,-1.2)(0,1.2)
\psline{}(-1.2,0)(1.2,0)
est une représentation paramétrique de (sin(t);sin(2t))
Il suffit d'utiliser la commande \pscustom
qui permet de relier entre elles deux courbes. Ainsi le fichier profmath.sty contient la macro suivante :
\newcommand{\psintegrale}[3]{%
\pscustom[linestyle=none,fillstyle=solid,fillcolor=lightgray]{#3%
\psline(#2,0)(#1,0)}}
dont l'utilisation est de la forme
\psintegrale{-1}3{\pscurve(-1,2)(0,3)(2,1)(3,2)}
ou
\psintegrale{-2}{2}{\psplot{-2}{2}{x dup mul}.
Certaines macros ont une version étoilée qui crée une figure renfermant un motif coloré avec la couleur \pslinecolor
.
Par exemple, \psellipse*(1,.5)(1,.5)
crée une ellipse noire (par défaut).
Ajoutez linestyle=dotted dans les paramètres optionnels de votre commande pour faire des tracés en pointillés.
Utilisez alors dotsep=dim pour changer l'espace entre les points.
Ajoutez linestyle=dashed dans les paramètres optionnels de votre commande pour faire des tracés en tirets.
Pour changer la longueur du trait et les espaces entre ceux-ci, utilisez : dash=dim1 dim2.
Ajoutez doubleline=true dans les paramètres optionnels de votre commande pour obtenir des lignes doublées.
Peut poser problème avec linestyle=dashed et avec certaines flèches.
Les paramètres intervenant sont doublewidth=dim et doublecolor=couleur.
Ajoutez shadow=true dans les paramètres optionnels de votre commande pour ajouter une ombre au tracé.
Les paramètres intervenant sont shadowsize=dim, shadowangle=angle et shadowcolor=couleur.
border=dim
Utile pour donner l'impression qu'une courbe passe au dessus d'une autre. La couleur est donnée par bordercolor=couleur.
On peut ajouter une flèche aux courbes et aux lignes polygonales (segments, etc.) en utilisant le paramètre arrows.
Exemple :
\psline[linewidth=2pt]{<-}(2,1)
crée une flèche dirigée vers la gauche et le bas.
Les couleurs prédéfinies sont :
darkgray, gray, lightgray, white
red, green, blue, cyan, magenta, yellow
On utilise la syntaxe : {\red toto}
.
Pour créer de nouvelles couleurs :
\newgray{couleur}{num}
si num = 0 : noir ; si num = 1 : blanc
\newrgbcolor{couleur}{num1 num2 num3}
\newcmykcolor{couleur}{num1 num2 num3 num4}
(intéressant pour l'impression).
dimen=outer/inner/middle
s'applique aux objets graphiques fermés \psframe
, \pscircle
, \psellipse
, \pswedge
.
Utile quand linewidth est important.
Pour placer du texte (des légendes), on peut utiliser \rput
ou \uput
.
\uput
a une syntaxe plus ou moins complète :
\uput[angle direction](x,y){texte}
\uput{distance}[angle direction](x,y){texte}
\uput{distance}[angle direction]{angle rotation}(x,y){texte}
Par exemple, \uput[-90](5,0){\(x\)}
place le texte "x" en dessous du point de coordonnées (5,0).\uput{0.2}[180](0,5){\(y\)}
place le texte "y" à gauche du point de coordonnées (5,0), à une distance 0.2 de ce point.