LaTeX/Dessiner avec LaTeX/Réalisation de graphiques mathématiques
Comme indiqué précédemment, LaTeX offre des possibilités, limitées, d'intégrer des graphiques à partir de descriptions textuelles. Par ailleurs, un certain nombre d'extensions de LaTeX ont été créées afin de combler ces faiblesses. Dans ce chapitre, vous apprendrez à utiliser ces possibilités pour réaliser des graphiques mathématiques.
Vue d'ensemble
[modifier | modifier le wikicode]L'environnement picture
, amélioré par les extensions pict2e
et graphicx
, permet de tracer des segments, des rectangles, des cercles, et des courbes de bézier quadratiques et cubiques. Les ellipses les chaînettes peuvent être approchées d'une manière satisfaisante par des courbes quadratiques de Bézier, bien que ceci puisse exiger un travail mathématique assez conséquent. Si, en outre, un langage de programmation comme Java est employé pour produire des fichiers LaTeX de blocs \qbezier
, l'environnement d'image picture devient tout à fait puissant.
Bien que la programmation d'images directement en LaTeX soit sévèrement restreinte, et souvent fatiguante, il y a tout de même des raisons de procéder ainsi. Les documents ainsi produits sont de petite taille en ce qui concerne le nombre d'octets, et il n'y a aucun fichier graphique supplémentaire à adjoindre au fichier Latex.
Des extensions comme epic
, eepic
ou pstricks
aident à effacer les limitations entravant l'environnement original picture, et renforcent considérablement la puissance graphique de Latex.
Tandis que les deux anciennes extensions agrémentent simplement l'environnement d'image, l'extension pstricks
possède son propre environnement de dessin pspicture
. La puissance de pstricks
provient du fait que cette extension profite des possibilités étendues du langage PostScript.
En outre, de nombreuses extensions ont été écrites dans des buts spécifiques. L'une de ces extensions XY-pic, sera décrite à la fin de ce chapitre.
Une grande variété d'extensions sont décrites en détail dans le livre The LaTeX Graphics Companion (qu'il ne faut pas confondre avec The LaTeX Companion).
Sans doute, l'outil graphique le plus puissant du système LaTeX est MetaPost, le jumeau de METAFONT de Donald E. Knuth. MetaPost est doté du langage de programmation très puissant et mathématiquement sophistiqué de METAFONT. Contrairement à METAFONT, qui génère des fichiers au format bitmap, MetaPost produit des fichiers PostScript encapsulés, qui peuvent être importés dans un fichier Latex. Pour une introduction à cet outil, vous pouvez consulter le manuel A User’s Manual for MetaPost. Une discussion très complète des stratégies Latex et TEX pour les graphiques (et les polices) peut être trouvée dans TEX Unbound.
L'environnement picture
[modifier | modifier le wikicode]Les commandes de base
[modifier | modifier le wikicode]Un environnement picture
est disponible dans toute distribution LaTeX, sans avoir besoin d'inclure une extension externe. La création d'une image au moyen de cet environnement s'effectue avec l'une de ces deux commandes:
\begin{picture}(x, y) ... \end{picture}
ou
\begin{picture}(x, y)(x0, y0) ... \end{picture}
Le couple (x, y) réserve dans le document un espace rectangulaire pour l'image (picture) d'une largeur x et d'une hauteur y.
Le couple (x0, y0) définit en coordonnées arbitraires l'emplacement du point se trouvant en bas à gauche du rectangle réservé.
L'unité des nombres x, y, x0, y0 se rapportent à \unitlength
, qui peut être modifiée à tout moment (mais pas dans l'environnement picture) avec une commande telle que
\setlength{\unitlength}{1.2cm}
La valeur par défaut de \unitlength
est de 1pt
. Le premier couple, , représente la taille de l'espace rectangulaire réservé à l'image dans le document. Le second couple, , correspond aux coordonnées arbitraires du coin en bas à gauche du rectangle renfermant l'image.
Beaucoup de commandes de dessin ont l'une ou l'autre de ces formes:
\put(x, y){objet}
ou
\multiput(x, y)(dx, dy){n}{objet}
La commande pour dessiner une courbe de Bézier est une exception. La commande est de la forme:
\qbezier(x1, y1)(x2, y2)(x3, y3)
Segments de droite
[modifier | modifier le wikicode]Les segments de droite peuvent être dessinés avec la commande:
\put(x, y){\line(x1, y1){longueur}}
La commande \line
possède deux paramètres:
- un vecteur de direction,
- une longueur.
De manière native, les composantes du vecteur de direction sont restreintes aux entiers de l'ensemble {−6, −5, … , 5, 6} et doivent être premières entre elles (sans diviseur commun à l'exception de 1). Cette restriction a été levée par pict2e
.
La figure suivante illustre toutes les 25 valeurs de pente possibles (sans pict2e
) dans le premier quadrant. La longueur du segment est relative à l'unité de longueur \unitlength
.
Le paramètre longueur représente l'ordonnée dans le cas d'un segment « vertical », et l'abscisse dans tous les autres cas et ne représente donc pas la norme du vecteur de direction, ni la longueur du segment.
Flèches
[modifier | modifier le wikicode]Les flèches se dessinent avec la commande:
\put(x, y){\vector(x1, y1){longueur}}
De manière native, les composantes du vecteur de direction pour les flèches subissent encore plus de restrictions que celles des vecteurs de segment de droite puisqu'elles ne peuvent prendre que des valeurs entières de l'ensemble {−4, −3, … , 3, 4}. Cette restriction est également levée par pict2e
Remarquez l'effet de la commande \thicklines
sur les deux flèches pointant le haut et la gauche.
Cercles
[modifier | modifier le wikicode]La commande
\put(x, y){\circle{diamètre}}
dessine un cercle de centre et de diamètre (pas le rayon) diamètre. L'environnement picture n'autorise que des diamètres d'au plus 14 mm environ, et même en dessous de cette limite, tous les diamètres ne sont pas possibles. La commande \circle*
réalise des disques (cercles pleins). Comme dans le cas des segments de droite, il est possible de recourir à des extensions supplémentaires, telles que pict2e
, eepic
ou pstricks
.
Il y a aussi une possibilité intéressante dans l'environnement picture. Si on n'a pas peur d'effectuer les calculs nécessaires (ou de les faire au moyen d'un programme), des cercles et des ellipses arbitrairement petits peuvent être raccordés ensemble à partir de courbes quadratiques de Bézier. Voir Graphics in LaTeX2e pour des exemples et les fichiers sources en Java.
Formules et texte
[modifier | modifier le wikicode]Comme cet exemple le montre, du texte et des formules peuvent être écrits dans l'environnement picture avec la commande \put
de façon habituelle:
\multiput
et \linethickness
[modifier | modifier le wikicode]La commande
\multiput(x, y)(dx, dy ){n}{objet}
possède quatre paramètres: le point de départ, le vecteur de translation d'un objet vers le suivant, le nombre d'objets, et l'objet à dessiner. La commande \linethickness
modifie les segments de droite horizontaux et verticaux, mais jamais les segments obliques, ni les cercles. Cependant, elle s'applique aux courbes de Bézier quadratiques!
Ovales
[modifier | modifier le wikicode]La commande
\put(x, y){\oval(w, h)}
ou
\put(x, y){\oval(l, h)[position]}
dessine un ovale centré en le point de coordonnées et ayant une largeur et une hauteur .
Les paramètres optionnels de position se rapportent respectivement au bas, au haut, à la gauche et à la droite et peuvent être combinés, comme l'exemple le montre. L'épaisseur des lignes peut être modifiée par deux type de commandes: \linethickness{longueur}
et \thinlines
d'une part et \thicklines
d'autre part. Tandis que \linethickness{longueur}
ne s'applique qu'à des lignes verticales et horizontales (et les courbes de Bézier quadratiques), \thinlines
et \thicklines
s'appliquent à des segments de droite obliques, aux cercles et aux ovales.
Usages multiples de boîtes d'image
[modifier | modifier le wikicode]Une image peut être « déclarée » grâce à la commande:
\newsavebox{nom}
puis « définie » par
\savebox{nom}(largeur, hauteur)[position]{contenu}
et finalement dessinée le plus souvent par la commande
\put(x, y){\usebox{nom}}
Le paramètre optionnel de position a pour utilité de définir le « point d'ancrage » de la boîte de sauvegarde. Dans l'exemple, il est fixé à « bl » ce qui a pour conséquence de placer le point d'ancrage dans le coin en bas et à gauche de la boîte. Les autres indicateurs de position représentent le haut et la droite.
Le paramètre nom se rapporte à une zone de stockage binaire de Latex et est donc une commande (ce qui explique la barre oblique inversée dans l'exemple).
Des images rectangulaires peuvent y être placées : Dans cet exemple, \foldera
est employé dans la définition de \folderb
. La commande \oval
a dû être employée étant donné que la commande \line
ne fonctionne pas lorsque la longueur du segment est inférieur à environ 3 millimètres.
Courbes de Bézier quadratiques
[modifier | modifier le wikicode]Comme cet exemple le montre, découper un cercle en 4 courbes de Bézier quadratiques n'est pas satisfaisant. Au moins huit découpages sont nécessaires. La figure montre aussi l'effet de la commande \linethickness
sur les lignes verticales et horizontales, et l'effet des commandes \thinlines
et \thicklines
sur les segments de droite obliques. On peut remarquer de plus que ces deux sortes de commandes affectent les courbes de Bézier, chaque commande venant annuler l'effet des précédentes.
Soient et les points terminaux et , les pentes respectives, de courbes de Bézier quadratiques. Le point de contrôle intermédiaire est donné par les relations:
Voir Graphics in LaTeX2e pour un programme en Java qui génère les commandes \qbezier
nécessaires à l'obtention de cercles.
Chaînette
[modifier | modifier le wikicode]Dans cette figure, chaque moitié symétrique de la chaînette est approchée par une courbe de Bézier quadratique. La moitié de droite de la courbe se termine au point de coordonnées , la pente en ce point ayant la valeur . En utilisant à nouveau la relation (*), nous pouvons calculer les coordonnées des points de contrôles intermédiaires. Elles s'avèrent être et . Les croix indiquent les points de la chaînette réelle. L'erreur est à peine visible, étant inférieur à un pour cent. Cet exemple illustre l'utilisation du paramètre facultatif de la commande \begin{picture}
. L'image est définie dans un système de coordonnées mathématiques adéquat, tandis que par la commande
\begin{picture}(4.3,3.6)(-2.5,-0.25)
son coin inférieur gauche (marqué par le disque noir) a pour coordonnées .
Vitesse dans la théorie de la relativité
[modifier | modifier le wikicode]Les points de contrôle des deux courbes de Bézier ont été calculés avec les formules (*). La branche positive est déterminée par , et , . À nouveau la figure est définie par rapport à un système de coordonnées adapté, et le coin inférieur gauche a pour coordonnées (disque noir).