Sortir des figures TikZ dans des fichiers annexes

(Pour la rédaction d’un article scientifique, j’ai été dans l’obligation d’exporter mes belles figures TikZ en des fichiers EPS séparés. En plus de perdre un peu l’intérêt de TikZ, la manipulation est très vite pénible. Dans ce billet, je vais donc vous donner l’astuce que j’ai trouvée pour automatiser cette exportation.

[EDIT  : je propose ici une autre méthode, plus commode et qui permet de gagner en temps de compilation]

Pour ce faire, on va utiliser une option très intéressante de TikZ (pour peu qu’on on connaisse l’existence, comme souvent sous $latex \LaTeX$…) : l’environnement pgfgraphicnamed. Il permet de nommer un environnement graphique, qui pourra par la suite être compilé seul.

Voici un exemple minimal :

\documentclass{article}
\usepackage{graphics}
\usepackage{tikz}
\pgfrealjobname{minimal}
 
\begin{document}
 
Une première figure.
\beginpgfgraphicnamed{figure-1}
  \begin{tikzpicture}
    \fill (0,0) circle (10pt);
  \end{tikzpicture}
\endpgfgraphicnamed
 
Une deuxième figure.
\beginpgfgraphicnamed{figure-2}
  \begin{tikzpicture}
    \fill[red] (0,0) circle (10pt);
  \end{tikzpicture}
\endpgfgraphicnamed
 
\end{document}

Je vous conseille de donner à pgfrealjobname le même nom que le fichier .tex, ainsi vous pourrez naturellement le compiler (i.e. sans avoir à préciser le jobname) pour obtenir le document complet. Si on veut maintenant sortir par exemple la première figure, on doit passer son nom en jobname :

pdflatex --jobname=figure-1 minimal.tex

On obtient ainsi le fichier figure-1.pdf avec juste ladite figure 1, et ce aux dimensions minimales. La classe.

Et pour en revenir au problème initial (i.e. avoir les figures en EPS), voici la commande qui sauvera les linuxiens :

pdftops -eps fichier.pdf

Et comme je suis grand seigneur, voici la commande complète si vous voulez convertir tous les PDF du dossier courant en EPS :

for fichier in *.pdf; do pdftops -eps "$fichier"; done

Pour les linuxo-sceptiques, vous trouverez ici un convertisseur en ligne de PDF à EPS.

Bonus

La commande pdfcrop crée, depuis un fichier pdf, un autre pdf aux dimensions minimales, sans marge. Elle existe aussi sous Windows (fournie par MiKTeX), mais requiert un interpréteur Perl.