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
pdf
en 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.txt
Le logiciel PDF Comparator 3 convertit vos
.pdf
en 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 !