# 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 .