Forum Astuces.divers Recompiler automatiquement ses documents LaTeX avec inotifywait et latexmk

Posté par (page perso) .
Tags : aucun
3
22
juil.
2010
Une petite astuce qui me fait personnellement gagner un peu de temps (ne fonctionne que sous Linux, mais il doit exister d'autres outils similaires pour les autres OS libres).

Tout d'abord, le code:

$ while true; do inotifywait -e modify *.tex *.bib; latexmk -pdf; done

On appelle inotifywait pour effectuer le suivi des changements apportés à tous les fichiers .tex et .bib de notre répertoire. L'outil est basé sur inotify. Ici, à chaque modification (donc à chaque écriture), le wait est débloqué et la commande latexmk est appelé.

Latexmk est un outil très simple, qui va construire un fichier latex, en le recompilant autant de fois que nécessaire pour obtenir les références correctes. L'outil est intelligent et ne reconstruit que ce qui est nécessaire. Ici, l'appel reconstruit tous les fichiers .tex du répertoire. L'option -pdf quant à elle s'assure de construire un .pdf au lieu d'un .dvi.

En espérant que cette petite astuce vous soit utile.

Cordialement,
Tony
  • # Astuces avec xpdf

    Posté par . Évalué à 3.

    Pour ceux qui n'ont jamais eu l'idée de lire le man de xpdf vous pouvez l'utiliser en mode client/serveur. Il suffit de lancer tout d'abord ainsi :

    $ xpdf -remote latex fichier.pdf

    Ensuite en réutilisant l'astuce du dessus :

    $ while true; do inotifywait -e modify *.tex *.bib; latexmk -pdf && xpdf -remote -reload done

    Personnellement j'utilise un makefile parce que je sauvegarde très souvent. Mais je ne connaissais pas latexmk.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # il y a une race condition

    Posté par . Évalué à 2.

    Si un fichier est modifié pendant l'appel de latexmk, inotifywait va bloquer à l'itération suivante, et donc tes fichiers pdf ne seront pas mis à jour (jusqu'à la prochaine modification).
    Juste en passant.
    • [^] # Re: il y a une race condition

      Posté par (page perso) . Évalué à 1.

      Oui, tout à fait d'accord pour la race condition. Mais dans la pratique, ça ne m'est jamais arrivé (puisque mes documents compilent plus vite que je ne les sauvegarde).

      Cordialement,
      Tony
  • # Omake

    Posté par (page perso) . Évalué à 4.

    http://omake.metaprl.org/index.html
    Omake recompile tout seul quand tu modifies ton fichier…
    Un coup de killall -HUP sur ton xdvi, et hop.

    Sinon, quand je ne peux pas compiler vers dvi,
    : au BufWrite :exe "sil!!{omake %:t:r.pdf && xpdf_vim %:t:r.pdf} &>/dev/null &"|redraw!
    et
    #!/bin/sh
    RES=`ps ax | grep "xpdf -remote localhost -cont $1" | grep -v grep`
    echo "RES = $RES"
    [ -n "$RES" ] && xpdf -remote localhost -exec redraw || nohup xpdf -remote localhost -cont $1 &


    C'est bidon, ça ne marche que sur un seul fichier à la fois, mais c'est pratique !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.