Comment obtenir un .tex portable ?
Cette page deviendra bientôt, espérons-le, un simple lien vers une macro que j’ai rédigée, et qui nécessite d’être nettoyée et commentée avant d’être partagée.
Le problème
Votre document contient de nombreux include,
input, des .sty et fais appel à un (ou plusieurs) .bib ? Il
nécessite un Makefile pour être compilé ?
Pour des questions d’archivage, le communication, pour le mettre sur arixv ou hal, vous avez besoin d’un document portable ?
Je liste ici différents outils qui vous permettent de faire cette
manipulation, et ainsi obtenir un simple .tex avec tout ce
qu’il faut.
Inclure les dépendances
Vous pouvez lister les dépendances de votre document avec snapshot et ainsi connaitre
la liste des paquets employés par votre document. À l’inverse, cmdtrack
vous permets de connaitre les newcommand qui ne sont pas
employés.
Vous pouvez ensuite utiliser bundledoc, arlatex, combine
ou latexpand
pour inclure toutes ces dépendances dans un unique fichier
.tex.
On supposera que vous utilisez :
latexpand --empty-comments --expand-usepackage --output input.tex --explain output.tex
Plutôt que de ne conserver que le .bbl, je préfère
conserver la partie nécessaire des fichiers .bib employé.
Vous pouvez exporter la partie utile de votre bibliographie avec bibtool.
Faîtes simplement :
bibtool -c -q -x input.aux -o output.bib
Pour ensuite ajouter cette bibliographie au début de votre
fihier .tex avec un filecontents, faîtes
echo "\end{filecontents*}" | cat - input.tex > temp && mv temp input.tex; cat output.bib | cat - input.tex > temp &&
mv temp input.tex; echo '\RequirePackage{filecontents}\n\\begin{filecontents*}{output.bib}' | cat - input.tex > temp &&
mv temp input.tex;
Il faut ensuite enlever le renvoi à vos anciens fichiers de
bibliographie, et les remplacer par un appel à output.bib.
Vous pouvez le faire avec sed :
sed -i '' 's:\bibliography{.*}:\bibliography{output}:' input.tex; sed -i '' 's:\addbibresource{.*}:\addbibresource{output.bib}:' input.tex;
Enfin, Hal et Arxiv semblent compiler avec tex plutôt qu’avec
pdflatex par défaut. Si cela vous dérange, ajouter un
\pdfoutput=1 au début de votre .tex (dans les cinq
premières lignes), comme conseillé par
arXiv.
Vérifier le résultat obtenu
Une discussion
sur stack exchange vous apprendra comment vérifier que le
pdf ainsi obtenu est identique à celui que vous aviez au
départ. Parmi les options:
Convertir les
pdfen texte et les comparer (commode et rapide, mais pas très fiable) :pdftotext output.pdf output.txt pdftotext input.pdf input.txt diff output.txt input.txtLe logiciel PDF Comparator 3 convertit vos
.pdfen images et les compare pixel par pixel. Solution convaincante et commode, mais le logiciel est payant et n’existe que pour Mac Os.Pdfpagediff est sans doute pas mal.
Optimisation et problèmes
À venir, je liste juste quelques outils pour le moment.
- Supprimer les macros : de-macro (et un mode d’emploi).
- Avoir des versions à jour des logiciels : vérifiez que vos logiciels latexpand et bibtool soient à jours !