Table des matières (masquer)
1. Figures élémentaires avec PSTricks
PStricks est un vaste ensemble de macro-commandes utilisables depuis LaTeX.
Le module pstricks-add est préférable car il charge pstricks mais aussi des fonctionnalités supplémentaires.

\usepackage{pstricks-add}
\pspicture(2,1) \psline(0,1)(2,0) \psdots(2,0.5) \endpspicture

\usepackage{pstricks-add}
\pspicture(7,2)
\psline[linestyle=dashed](2,1)
\psline{->}(4,0)(3,2)(0,1)
\psline[linewidth=0.8mm](3,0)(6,2)
\endpspicture 
\usepackage{pstricks-add}
\pspicture(7,2) \pspolygon[linecolor=gray](0,0)(2,0)(1.5,2) \pspolygon[showpoints=true](3,0)(2,1)(3,2)(4,1) \pspolygon[fillstyle=solid, fillcolor=red] (4,0)(5,2)(6,1) \endpspicture

\usepackage{pstricks-add}
\pspicture(7,2)
\pscircle[linestyle=dotted](1,1){0.75}
\pspolygon[linearc=0.25,fillstyle=vlines]
(3,0)(2,1)(3,2)(4,1)
\pscircle[fillstyle=solid,fillcolor=black]
(5,1){1}
\pswedge[fillstyle=solid,fillcolor=white]
(5,1){0.8}{45}{180}
\endpspicture 2. Marquage des points et des dimensions
Avec la commande \uput{dist}[angle](x,y){texte}, on peut positionner texte à une distance dist de (x,y) selon un angle de angle degrés

\usepackage{pstricks-add}
\pspicture(7,2)
\pspolygon(1,0)(3,0)(3,1)(2,2)
\uput[180](1,0){$A$}
\uput[0](3,0){Sommet $B$}
\uput{20pt}[45](3,1){$C$}
\endpspicture Afin de positionner des dimensions, on dispose de trois commandes :
\lput{:U}{texte}positionnetextesur la connexion entre deux points\aput{:U}{texte}positionnetexteen dessous (above) de la connexion\bput{:U}{texte}positionnetexteau dessus (below) de la connexion

\usepackage{pstricks-add}
\pspicture(7,2)
\pcline(0,0)(2,2) \lput{:U}{lput}
\pcline(1,0)(3,2) \lput*{:U}{lput*}
\pcline(3,0)(5,2) \bput{:U}{bput}
\pcline(5,0)(7,2) \aput{:U}{aput}
\endpspicture Ces commandes existent aussi sans l’argument de l’angle : \mput, \mput*, \Aput et \Bput :

\usepackage{pstricks-add}
\pspicture(7,2)
\pcline(0,0)(2,2) \mput{mput}
\pcline(1.5,0)(3.5,2) \mput*{mput*}
\pcline(2.5,0)(4.5,2) \Bput{Bput}
\pcline(5,0)(7,2) \Aput{Aput}
\endpspicture Il est maintenant possible de placer différents renseignements sur des figures géométriques :

\usepackage{pstricks-add}
\pspicture(7,2)
\pspolygon(1,0)(2,2)(4,2)(5,0)
\pcline[linestyle=none](2,2)(4,2) \Bput{L1}
\pcline[linestyle=none](1,0)(5,0) \Aput{L2}
\pcline[offset=12pt]{<->}(1,0)(2,2)\mput*{H1}
\pcline[linestyle=none](4,2)(5,0)\lput*{:U}{H2}
\endpspicture 3. Positionnement, rotation et redimensionnement
La commande \rput(x,y){objet} positionne objet en (x,y):

\usepackage{pstricks-add}
\pspicture(7,2)
\psset{fillstyle=solid}
\psframe[fillcolor=red](2,1)
\rput(1,0.5){\psframe[fillcolor=blue](2,1)}
\endpspicture On peut ajouter à ce déplacement une rotation :
La commande \rput{angle}(x,y){objet} translate objet d’un vecteur (x,y) après lui avoir appliqué une rotation de angle degrés:

\usepackage{pstricks-add}
\pspicture(7,1.5)
\psset{fillstyle=solid}
\psframe[fillcolor=red](2,1)
\rput{20}(2,0){\psframe[fillcolor=blue](2,1)}
\endpspicture On spécifie un facteur d’échelle avec \psset{unit=facteur} :

\usepackage{pstricks-add}
\pspicture(7,1.5)
\psset{fillstyle=solid}
\psframe[fillcolor=red](2,1)
\psset{unit=.75}
\psframe[fillcolor=blue](2,1)
\endpspicture On peut spécifier un facteur d’échelle pour les abscisses ou pour les ordonnées avec
\psset{xunit=facteur} et \psset{yunit=facteur}
On remarque dans l’exemple suivant que ces facteurs sont relatifs, pour spécifier un facteur absolu, on précise l’unité; p.ex: \psset{unit=3cm}

\usepackage{pstricks-add}
\newcommand{\mondessin}{
\psline(1,0)(0,4) \psline(2,0)(0,3)
\psline(3,0)(0,2) \psline(4,0)(0,1) }
\pspicture(7,4)
\mondessin
\psset{doubleline=true}
\rput{45}(5,2){
\psset{unit=0.5} \mondessin
\psset{xunit=-1} \mondessin
\psset{yunit=-1} \mondessin
\psset{xunit=-1} \mondessin
}
\endpspicture 4. Boucles et coordonnées spéciales
La commande \multido{\i=j+k}{nb}{operation}
effectue nb fois operation en incrémentant la variable i de k depuis la valeur d’origine j; autrement dit il s’agit de la boucle for(i=j;i<nbxk;i=i+k).
Avec PsTricks, il est possible d’utilser non seulement les coordonnées cartésiennes séparées par une virgule : (x,y) mais aussi les coordonnées polaires séparées par un point-virgule : (r;a) ou même du code PostScript : (!ps) par exemple (!3 ln 30 cos) pour le point de coordonnées cartésiennes (ln(3),cos(30).

\usepackage{pstricks-add}
\pspicture(-3.5,-1)(3.5,1)
\pscircle(0,0){1}
\multido{\i=0+30}{12}{ \psline(1;\i) }
\psdots[dotstyle=o](!60 cos 60 sin)
\endpspicture 5. Exemples divers

\usepackage{pstricks-add}
\psset{unit=0.4}
\pspicture(-7,-2)(7,7)
\psellipse(0,0)(3,1)
\psline(-3,0)(0,6)(3,0)
\psline(0,0.4)(-0.4,0.25)(-0.4,-0.15)
\psline(0,6)(-2,-0.745)
\psline[linestyle=dashed](-2,-0.745)(0,0)
\psline[linestyle=dashed](0,6)(0,0)
\uput[0](0,0){$H$}
\uput[90](0,6){$S$}
\uput[225](-2,-0.745){$A$}
\endpspicture 
\usepackage{pstricks-add}
\pspicture(-2.5,-0.75)(2.5,2.5)
\psset{unit=0.5}
\psarc(0,0){5}{0}{180}
\psline(-5,0)(-5,-1.5)(5,-1.5)(5,0)
\psarc(0,0){3}{0}{180}
\psline(0.5,0)(3,0)
\psarc(0,0){0.5}{0}{180}
\psline(-3,0)(-0.5,0)
\pscircle{.05}
\multido{\i=0+2}{90}{\psline(4.5;\i)(5;\i)}
\multido{\i=0+10}{19}{\psline(4;\i)(5;\i)}
\endpspicture On pourra faire apparaître la graduation en remplaçant la dernière ligne :
\multido{\i=0+10}{19}{\psline(4;\i)(5;\i)}
par :
\multido{\i=0+10}{19}{\psline(4.5;\i)(5;\i) \uput[\i](3.3;\i){\tiny{\i}}}
Dans l’exemple suivant, la commande \pnode(x,y){L} mémorise les coordonnées (x,y) dans la variable L qui peut ensuite être réutilisée par exemple pour tracer un segment.
L’option ArrowInside place élément (ici un |) sur le segment (cf page 25) :

\usepackage{pstricks-add}
\newcommand{\marque}[2]{%
\psline[ArrowInside=-|,linestyle=none,
ArrowInsidePos=0.51](#1)(#2)
\psline[ArrowInside=-|,linestyle=none,
ArrowInsidePos=0.49](#1)(#2)
}
\begin{pspicture}(5,3)
\pnode(1,1){A}\pnode(4,1){B}
\pnode(0,0){D}\pnode(3,0){C}
\psline(A)(C)
\psline[ArrowInside=-|](B)(C)
\psline[ArrowInside=-|](A)(D)
\psline(A)(B) \marque{A}{B}
\psline(D)(C) \marque{D}{C}
\uput[135](A){$A$}\uput[0](B){$B$}
\uput[180](D){$D$}\uput[-45](C){$C$}
\end{pspicture}
Pour des exemples étonnants et instructifs :
http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/16-girou.pdf
