Le module psfrag permet de placer du code latex dans une figure en postscript encapsulé (extension .eps). Ceci permet notamment d’insérer des formules mathématiques difficiles à réaliser directement à l’aide des logiciels de dessin et ce, dans la même fonte (taille, police,...) que celle utilisée dans le reste du document.
Il suffit pour cela de placer dans la figure des balises qui seront remplacées lors de la compilation du fichier tex par le code souhaité.
⇒ |
Pdflatex (comme pdftex) génère un fichier pdf à partir du fichier tex, malheureusement, cette commande ne supporte pas l’inclusion de figures eps et donc l’utilisation de psfrag.
Cet article propose une méthode de génération automatique et transparente de figures pdf incluant le code psfrag.
Le script perl s’occupant de la conversion est pdffrag, il utilise les commandes dvips, gs et epstopdf. Il faut y personnaliser les variables :
- $epsfigdir : répertoire de stockage des fichiers eps et psfrag ;
- $pdffigdir : répertoire de stockage des fichiers pdf crées ;
- $texheader : entête des fichiers temporaires tex utilisés pour générer la figure pdf.
Pour obliger pdflatex à générer les figures nécessaires lors de compilation, il suffit de l’utiliser avec l’option —shell-escape et d’inclure dans les fichiers tex (par une feuille de style a priori) un paragraphe de la forme :
\RequirePackage{ifpdf}
\ifpdf%
\let\igcommande=\includegraphics%
\renewcommand\includegraphics[2][]{%
\IfFileExists{#2.psfrag}{
\immediate\write18{pdffrag -l "\the\linewidth" -t "\the\textheight" -w "\the\textwidth" -p "#1" -f "#2"}%
\igcommande{#2}% les paramètres doivent être éliminés
}{\igcommande[#1]{#2}}}% pas de modification
\fi
Je n’utilise que la commande includegraphics pour l’insertion d’images. Mais cette partie de code peut être adaptée à toute autre commande.