À 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 inclut 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 graphisme 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. (On notera que VTeX, une extension commerciale de TeX produit du PDF mais est capable de comprendre les instructions PSTricks.)
On doit 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 d'insérer l'image tournée de XXX degrés.
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 xcolor 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 epstopdf.
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.
On a le droit au PDF, au JPEG, au PNG et au TIFF (et également les fichiers PostScript obtenus avec MetaPost).
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.
Il y a le package xcolor 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 :
On peut appliquer une rotation à 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'apparaît pas avec xdvi.
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. (Remarque PGF est paru dans une nouvelle version beaucoup plus agréable à utiliser grâce à l'interface TikZ.)