LaTeX pour une thèse...
Il a été dit que tout personne qui rédige en LaTeX devient un gourou quelques mois avant d'avoir fini. Je ne sais pas si je suis devenu gourou mais j'ai très certainement acquis quelques connaissances LaTeX assez low-level mais aussi des habitudes qui continuent de me simplifier la vie dans l'écriture de documents LaTeX. Après ma soutenance, j'ai accumulé également des connaissances plus profondes sur le fonctionnement de Beamer. Voici donc sur cette pages des mémos, destinés à moi-même pour mieux rédiger en LaTeX.
- Compile / Error / Correct : le cycle classique. Une possibilité est
de configurer l'éditeur de texte. Dans vim j'y arrive bien mais parfois il se
goure et m'édite un .aux à cause d'un warning ou une connerie comme ça. En
plus, j'aime bien pouvoir continuer à modifier mon texte pendant que ça compile
ce qui n'est pas possible avec :make.
Donc je compile depuis le terminal. Et pour pas retaper !l
à chaque fois (quelle fainéantise), j'utilise le script ./run.sh suivant: #!/bin/sh source envir.rc while ((1)) ; gvim --servername these --remote-send '
Comme ça je n'ai besoin que de taper Entrée dans mon terminal. La première commande de la boucle envoie au serveur vim les touches 'Echap',':' et 'w' suivies de 'Entrée', ce qui sauve le buffer. Le source de envir.rc définit la variable $TEXEDIT ainsi::w ' make $* ; echo -n ' ' ; do read ; done export TEXEDIT='gvim --servername these --remote +%d %s'
et comme j'édite mon fichier avec gvim --servername these mon_fichier.tex, ça me permet de sauter directement à l'erreur s'il y en a une en choisissant 'e' quand LaTeX (TeX en fait) me pose la question suivante :! Undefined control sequence. l.380 \error ?
Note: j'ai appris récemment (TeXbook) qu'on pouvait répondre aussi:- <return> pour passer le message
- 's' pour passer tous les messages
- 'r' pour passer tous les messages super rapidement (pas compris la différence)
- 'q' pour dire 'quiet' et terminer le plus vite possible
- 'x' pour quitter
- 'e' pour quitter et éditer le fichier responsable au niveau de l'erreur (avec $TEXEDIT ou vi si c'est pas défini)
- Compile / View / Correct : quand y a plus d'erreur à la compilation, on
regarde le résultat et on corrige les erreurs du texte. J'utilise xdvi
qui a nombre d'avantages par rapport à gv ou evince:
il est vraiment rapide, a l'option watchfile pour recharger
le fichier dès qu'il est modifié, il garde l'historique des pages visitées (`[' pour revenir à la
page initiale après avoir cliqué sur un lien) et enfin parce il peut communiquer
avec vim.
Pour ça il faut:
- Compiler avec et mettre des informations supplémentaires dans le fichier .dvi: un lien vers le fichier .tex pour cela, utiliser l'option -src-specials en ligne de commande, ou inclure le package \usepackage{srcltx} dans le préambule du document.
- Démarrer vim en lui donnant un nom de serveur:
gvim --servername THESE mon_fichier.tex
- Démarrer xdvi en lui indiquant comment parler à vim:
xdvi -watchfile 2 -editor 'gvim --servername THESE --remote' mon_fichier.dvi
On peut même faire l'inverse, depuis vim demander à xdvi de se placer où on se trouve. J'ai ajouté dans mon ~/.vimrc la ligne suivante:map
Il suffit alors d'appuyer sur <leader> puis 'g' pour que xdvi se mette à la bonne page (et indique par une bordure rouge la zone où se trouve l'endroit pointé par le curseur vim). (Le problème est que thesis.dvi est hard-codé dans la commande, mais comme j'utilise plusieurs fichier .tex (un par chapitre), je ne peux pas me baser sur le nom du fichier courant. Sinon remplacer par %:r.dvi marcherait (% est le fichier édité, et :r lui enlève son extension).g :execute "!xdvi -name xdvi -sourceposition " . line(".") . "%" . " thesis.dvi"