US

Dessiner avec LaTeX

Il est possible de réaliser de simples dessins directement avec LaTeX. Il faut savoir que les dessins réalisés de cette manière sont réalisés par LaTeX grâce aux polices de caractères, dès lors, ces dessins ne pourront pas être très compliqués. On verra plus tard comment réaliser de bien meilleurs dessins en utilisant PS.

L'environnement picture

Pour réaliser un dessins avec LaTeX, on utilise donc l'environnement picture dont voici la forme :

1 
2 
3 
\begin{picture}(Largeur,Hauteur)(OrigineX,OrigineY)
\end{picture}
listing l11.30 L'environnement picture

Les deux premiers paramètres définissent la largeur et la hauteur du dessin que l'on veut intégrer au document et les deux suivants représentent les coordonnées facultatives du coin inférieur gauche du dessin. Ce coin correspondant d'ailleurs à l'origine du repère. Voici deux exemple :

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
\setlength{\unitlength}{1cm}
 
\fbox{
\begin{picture}(4,2)
\put(1,1){Objet}
\end{picture}}
 
\fbox{
\begin{picture}(4,2)(1,1)
\put(1,1){Objet}
\end{picture}}
listing l11.31 Mon premier dessin avec LaTeX

La première chose qu'il faut dire est qu'avant de dessiner quoi que ce soit, il faut préciser l'unité de base du dessin en modifiant la longueur représentée par la commande de longueur unitlength. Dans notre exemple, on travaille en centimètre. On aurait pu mettre par exemple 100cm, ainsi les coordonnées précisées auraient été en mètres, ce qui est très intéressant pour des mises à l'échelle.

On réalise ensuite deux dessins. Sur le premier, on laisse l'origine du repère par défaut mais dans le second, on place l'origine du repère en (1,1). Ensuite, on ajoute un texte au dessin grâce à la commande put au point de coordonnée (1,1). Vous voyez tout de suite sur le résultat que dans le second cas, le texte se trouve à l'origine du repère.

Mon premier dessin avec LaTeX
fig l11.24 Mon premier dessin avec LaTeX

La commande put permet donc de positionner un objet en précisant les coordonnées de l'extrémité inférieure gauche de l'objet. On peut donc l'utiliser pour insérer du texte mais celui-ci ne pourra pas contenir de retour à la ligne.

Insérer du texte

Pour insérer du texte tout en autorisant les retours à la ligne, il faut utiliser la commande shortstack qui prend comme unique paramètre le texte à insérer. On peut préciser en option l'alignement du texte : l pour l'aligner à gauche, r pour l'aligner à droite. Par défaut, le texte est centré.

On peut bien entendu ajouter des effets sur le texte avec toutes les autres commandes que nous avons déjà découvertes et utilisées jusqu'à présent comme le montre bien l'exemple suivant.

1 
2 
3 
4 
5 
6 
7 
\fbox{
\begin{picture}(8,5)
\put(1,3){\shortstack[l]{Un texte \\ avec des \\ retours \\ la ligne}}
\put(1,1){\shortstack{Un texte \\ avec des \\ retours \\ la ligne}}
\put(4,3){\fbox{\shortstack{Et \\ ! !}}}
\put(4,1){\fcolorbox{red}{green}{\shortstack{Ou avec des \\ couleurs !}}}
\end{picture}}
listing l11.32 Dessiner du texte
Dessiner du texte
fig l11.25 Dessiner du texte

Dessiner des lignes et des vecteurs

Les lignes et les vecteurs sont décrits d'une manière vectorielle. Il faut donc deux paramètres pour les définir, tout d'abord, il faudra spécifier un vecteur directeur et ensuite une longueur. En somme, la seule différence entre une ligne et un vecteur est l'ajout d'une flèche à l'extrémité du vecteur.

1 
2 
3 
4 
5 
6 
7 
\fbox{
\begin{picture}(5,3)
\put(1,1){\line(1,0){2}}
\thicklines
\put(3,1){\line(-1,2){0.5}}
\put(2.5,2){\vector(1,0){1.5}}
\end{picture}}
listing l11.33 Dessiner des lignes et des vecteurs
Dessiner des lignes et des vecteurs
fig l11.26 Dessiner des lignes et des vecteurs

Une des extrémités des lignes est donc défini par la commande put et le second par le vecteur directeur et la longueur. Le sens du vecteur directeur n'a d'intérêt que pour dessiner la flèche des vecteurs, pour les lignes, c'est sans importance.

Comme vous le voyez dans l'exemple du listing l11.28, on peut modifier l'épaisseur des lignes en utilisant la commande thicklines. Pour remettre l'épaisseur normale, on utilise la commande thinlines. Enfin, il existe une commande plus générale qui est linethickness qui prend en paramètre l'épaisseur des lignes désirée.

1 
\linethickness{0.7mm}
listing l11.34 Modifier l'épaisseur des lignes

Les boites

Cadres

L'exemple du listing l11.27 montre que l'on peut utiliser les commandes framebox ou fbox pour créer des cadres. La commande framebox est quelque peu modifiée et voici sa forme générale :

1 
\framebox(Largeur,Hauteur)[Options]{Texte}
listing l11.35 La commande framebox

On précise les dimensions de la boite en spécifiant la largeur et la hauteur. Ensuite, on peut préciser la position que prendra le texte dans la boite en option. Par défaut, le texte est centré dans la boite, si on veut spécifier une autre position, on utilise les lettres habituelles l, r, t et b.

On peut préciser deux lettres en options, l'une concernera alors l'alignement horizontal tandis que l'autre concernera l'alignement vertical. Deux autres variantes existent : makebox fait comme framebox mais sans dessiner de cadre et dashbox dessine un cadre en pointillés dont la longueur est donné dans un paramètre supplémentaire. Voici de suite un exemple.

1 
2 
3 
4 
5 
6 
7 
\fbox{
\begin{picture}(5,3)
\put(0.5,0.5){\framebox(2,1){Par }}
\put(2.5,2){\framebox(2,1)[rb]{Droite-Bas}}
\put(3,0.5){\dashbox{0.2}(1,0.5)[r]{Droite}}
\put(0.5,2.5){\makebox(1,0.5)[t]{Haut}}
\end{picture}}
listing l11.36 Dessiner des cadres
Dessiner des cadres
fig l11.27 Dessiner des cadres

Boite aux coins arrondis

La commande oval permet d'obtenir une boite dont les coins sont arrondis. Il suffit de spécifier la largeur et la hauteur de la boite pour la dessiner. On peut en plus préciser une option qui définit quelles parties de la boite il faut dessiner, on peut ainsi dessiner uniquement la moitié gauche de la boite en spécifiant l. On peut aussi obtenir les autres parties avec r, t ou b.

Citons également les commandes circle et circle* qui permettent de dessiner un cercle. Il faut juste spécifier le rayon du cercle. La différence entre les deux commandes est que la version étoilée dessine un cercle plein.

1 
2 
3 
4 
5 
6 
7 
\fbox{
\begin{picture}(4,2)
\put(2,1){\oval(3,1.2)[l]}
\put(2,1){\circle*{.1}}
\color{red}
\put(2,1){\oval(3,1.2)[rt]}
\end{picture}}
listing l11.37 Dessiner des ovales
Dessiner des ovales
fig l11.28 Dessiner des ovales

Remarquez l'utilisation de la commande color qui fonctionne, en effet, rappelez-vous, LaTeX utilise une police de caractère pour dessiner tous ces objets graphiques et donc la commande color qui change la couleur de la police fonctionne parfaitement. Une autre conséquence est qu'il faut éviter de vouloir dessiner des cercles dont la dimension est supérieure à la plus grande disponible dans la police utilisée par LaTeX.

Courbe de Bézier

Enfin, il reste une commande à voir, il s'agit de la commande qbezier qui permet de dessiner des courbes de Bézier bien connues de infographistes. La commande s'utilise de la manière suivante :

1 
\qbezier[Nbpoints](Ax,Ay)(Bx,By)(Cx,Cy)
listing l11.38 La commande qbezier

Cette commande trace donc une courbe de Bézier spécifiée par trois points de contrôles dont il faut donner les coordonnées. Le paramètre optionnel précise le nombre de points que LaTeX va calculer pour tracer la courbe. Au plus ce nombre sera élevé, au plus la courbe sera précise mais LaTeX mettra également plus de temps pour la dessiner.

1 
2 
3 
4 
5 
\fbox{
\begin{picture}(4,2)
\qbezier[40](0.1,0.1)(1.5,1.4)(3.5,1.5)
\qbezier(0.1,1)(3,0.1)(1,1.9)
\end{picture}}
listing l11.39 Courbes de Bézier
Courbes de Bézier
fig l11.29 Courbes de Bézier

Répétition d'objets

S'il vous faut dessiner plusieurs objets graphiques identiques mais qui diffèrent juste par leur position, il n'est pas judicieux de répéter plusieurs fois la commande put pour placer l'objet. Pour réaliser de telles choses, il existe la commande multiput. Son fonctionnement est assez simple, sa forme est la suivante :

1 
\multiput(x,y)(interX,interY){nbfois}{objet}
listing l11.40 La commande multiput

On donne donc la position initiale (x,y) et on ensuite, on précise les incréments en x et en y. On ajoute le nombre de fois qu'il faudra dessiner l'objet et on précise l'objet comme pour la commande put. Voici par exemple comment dessiner une grille :

1 
2 
3 
4 
\begin{picture}(4,2)
\multiput(0.1,0.1)(0.2,0){16}{\line(0,1){1.6}}
\multiput(0.1,0.1)(0,0.2){9}{\line(1,0){3}}
\end{picture}
listing l11.41 Une grille multiput
Une grille avec multiput
fig l11.30 Une grille avec multiput

Réutilisation d'objets

On peut également définir un objet et ensuite vouloir le placer à différents endroits et pourquoi pas ajouter un cadre autour d'un de ces objets. Pour ce faire, on peut utiliser les boite de sauvegarde déjà rencontrée au chapitre 9 et y placer l'objet. Ensuite, on pourra rappeler le contenu de la boite à divers endroits.

La première étape consiste à créer une boite vide nommée grâce à la commande newsavebox. Une fois cela fait, on définit le contenu de la boite de sauvegarde avec la commande savebox. Enfin, pour l'utiliser on utilise usebox. Les trois commandes sont reprises ci-dessous :

1 
2 
3 
\newsavebox{\nomdeboite}
\savebox{\nomdeboite}(Largeur,Hauteur)[Position]{Objet}
\usebox{\nomdeboite}
listing l11.42 Utiliser les boites de sauvegardes

Voici tout de suite un exemple. On y définit d'abord une boite de sauvegarde nommée house. On passe ensuite dans l'environnement picture afin de pouvoir définir le contenu de la boite. Enfin, on peut utiliser le contenu de celle-ci à différents endroits, en appliquant différents effets si l'on désire.

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
\fbox{
\begin{picture}(5,3)
 
\savebox{\house}(0,0){
    \put(0,0){\line(1,0){1}}
    \put(0,0){\line(0,1){1}}
    \put(1,0){\line(0,1){1}}
    \put(0,1){\line(1,1){0.5}}
    \put(1,1){\line(-1,1){0.5}}
}
 
\put(1,1){\usebox{\house}}
\put(3,2){\usebox{\house}}
\put(4,0.5){\scalebox{0.5}{\usebox{\house}}}
\end{picture}}
listing l11.43 Exemple avec les boites de sauvegarde
Exemple avec les boites de sauvegarde
fig l11.31 Exemple avec les boites de sauvegarde
  • Espace membre
  • Learning Center
  • Les forums
  • Livre d'or
  • Imprimer
  • Boutique
  • Info
  • Règlement
  • Erreur
  • Newsletter