Comment écrire dans un fichier pendant une compilation ?#

1.  Avec des commandes de base#

Les commandes \newwrite, \openout, \write et \closeout, utilisées dans cet ordre, permettent d’écrire dans un fichier pendant une compilation. En voici un exemple :

\newwrite\fichier
\openout\fichier=exemple.tex
\write\fichier{Ceci est un fichier compilable par \noexpand\LaTeX.}
\closeout\fichier

Normalement, développe les commandes écrites dans le fichier généré (ici, exemple.tex). C’est la raison pour laquelle une commande \noexpand a été placée dans cet exemple : de cette façon, la commande \LaTeX n’est pas développée, elle est écrite telle quelle dans exemple.tex et ne sera interprétée qu’à la compilation de ce fichier.

2.  Avec l’environnement filecontents#

La question « Comment créer un fichier à la volée ? » détaille cette méthode plutôt récente mais très simple d’utilisation (et utilisée dans des exemples de cette FAQ).

3.  Avec les extensions moreverb ou sverb#

Les extensions moreverb et sverb définissent des environnements nommés respectivement verbatimwrite et verbwrite. Ils permettent d’écrire dans un fichier du texte qui ne sera pas développé. L’exemple ci-dessous, utilisant l’extension moreverb, fait la même chose que l’exemple précédent :

\begin{verbatimwrite}{exemple.tex}
Ceci est un fichier compilable par \LaTeX.
\end{verbatimwrite}