Graphisme

Panorama général

À l'origine, il n'y avait rien de prévu dans TeX pour faire des dessins, ou même mettre du texte en couleur. Comme le besoin s'est fait sentir, des gens ont mis au point des bidouilles pour contourner le problème. Elles consistent à mettre des commentaires dans le dvi produit. Par exemple, quand l'on inclue une image, il n'y a que le nom du fichier contenant l'image qui est stocké dans le dvi. Le viewer que l'on utilise ensuite est censé comprendre ces commentaires, et agir en fonction.

Sous unix, le viewer de dvi standard, xdvi sait afficher les images, mais ne sait pas mettre le texte en couleur. Souvent, il vaut mieux convertir en postscript avant de visualiser, car dvips (le programme permettant de convertir du dvi en postscript) comprend beaucoup plus d'indications de graphismes que xdvi. Une compilation ressemble donc à ceci :

  conscrit@drakkar ~ $ latex fichier.tex
  conscrit@drakkar ~ $ dvips fichier.dvi -o fichier.ps
  conscrit@drakkar ~ $ gv fichier.ps

la dernière étape correspondant enfin à l'affichage.

Ceci est assez fastidieux. Il existe une variante de latex, nommée pdflatex, qui produit directement du pdf (que l'on peut afficher avec xpdf ou acroread). pdflatex a été conçu dès l'origine pour permettre de faire du graphisme. Il présente l'avantage de supporter plus de formats d'image. En revanche, certains package LaTeX qui écrivent du code postscript ne peuvent plus marcher avec, par exemple PSTricks. On choisira donc entre l'un et l'autre au cas par cas, suivant ce que l'on veut faire.

Inclure une image produite par programme externe

Comment faire

De nombreux packages sont disponibles. On peut par exemple utiliser le package graphicx. Pour cela, il faut mettre un :

  \usepackage{graphicx}

dans le préambule. Ensuite, dans le corps du document, pour inclure une image stockée dans le fichier machin, on tape \includegraphics{machin}. On peut spécifier la taille avec des arguments optionnels : \includegraphics[width=3cm,height=3cm]{machin} (on peut bien sur ne préciser qu'une seule des deux tailles). On peut aussi ajouter un angle=XXX spécifiant de rotationer l'image de XXX degrés.

Formats d'image supportés

Avec latex

Si l'on compile avec latex, le seul format graphique supporté est l'« encapsulated postscript » (extension .eps).

Il s'agit d'une forme légèrement restreinte de postscript. Il s'agit d'un format graphique « vectoriel », c'est à dire où le dessin est défini par une liste d'objets géométriques, et non par une grille de points (en fait, il est aussi possible d'inclure une grille de points dans du postscript).

La plupart des programmes de dessins vectoriels savent produire de l'eps. En particulier, on dispose de xfig, qui est assez simple et prévu pour s'interfacer avec LaTeX. Le plus simple est d'utiliser l'option d'exportation « Combined PS/Latex ». Elle produit deux fichiers : un .pstex qui est un eps contenant les dessins, et un .pstex_t qui contient du code LaTeX, qui charge le .pstex_t avec \includegraphics, et superpose le texte des légendes par-dessus. Cela permet de faire évaluer par LaTeX les légendes que l'on positionne avec XFig, ce qui permet d'avoir la même police que dans le document, et, par exemple, de taper du texte en mode mathématique (il faut avoir mis le flag « special » sur l'objet texte). Cela nécéssite d'avoir chargé les packages color et graphicx.

Si l'image d'origine est au format pdf, on peut la convertir en eps avec la commande pdftoeps. Si c'est un postscript, il faut utiliser ps2eps ou ps2epsi.

Si l'image d'origine est dans un format bitmap (une grille de points, par exemple, le jpeg, le gif, le png, le tiff, ...), on peut la convertir en eps avec la commande convert fichierorigine eps2:machin.eps.

Avec pdflatex

On a le droit au pdf, au jpeg, au png et au tiff.

Si l'image est dans un autre format bitmap, on peut la convertir en jpeg, png ou tiff, par exemple à l'aide de convert.

Si c'est un eps, le mieux est d'utiliser epstopdf.

Couleurs

Il y a le package color qui permet de mettre du texte en couleur. Comme il a déjà été dit, xdvi ne les montrera pas, il faut absolument convertir en postscript pour les voir apparaître.

On dispose de la commande \textcolor, qui prend comme premier argument une couleur, comme deuxième argument du texte, et affiche ce texte dans cette couleur. Par exemple, \textcolor{red}{ploum} va mettre « ploum » en rouge.

Il y a quelques noms de couleurs prédéfinis, comme red, blue et cie. On peut en définir d'autres, avec la commande \definecolor. Elle prend en premier argument le nom que l'on veut donner, en deuxième argument, le modèle de spécification, et en troisième argument, la spécification. Les trois modèles sont :

rgb
Une spécification de couleur est une liste de trois nombres entre 0 et 1, séparés par des virgules, spécifiant les composantes rouge, vertes et bleues de la couleur. Par exemple : \definecolor{LightSlateGrey}{rgb}{.0084033613,.0073529411,.0065359477}
cmyk
Ici, on spécifie les composantes de la couleur dans le système Cyan-Magenta-Jaune-Noir
gray
On spécifie juste un niveau de gris.

Divers

Autres fonctions du packages graphicx

On peut rotationer du texte avec \rotatebox (par exemple \rotatebox{30}{ploum} pour tourner de 30 degrés), lui faire subir une affinité avec \resizebox (par exemple \resizebox{1cm}{3cm}{ploum} pour afficher « ploum » large de 1cm et haut de 3cm). La encore, le résultat de ces commandes n'apparait pas avec xdvi.

Pour aller plus loin

Il existe le package PSTricks, qui permet un nombre incroyable de grassouillitudes, par exemple, de tracer des flêches entre divers points de la page, ou de faire onduler du texte. Il est par conséquent assez technique, il faut se plonger sérieusement dans son manuel pour arriver à ses fins. Mais le résultat en vaut la chandelle.

PSTricks est malheureusement incompatible avec pdflatex (il fait beaucoup de magie noire en pondant du code postscript). Certaines des fonctionalités de PSTricks sont disponibles dans le packages pgf, documenté ici, et qui marche avec pdflatex.

Auteur : Luc Habert. Dernière modification le .