Vim et LaTeX

Voici un article amusant qui révèle la difficulté à se séparer de ses préjugés sur le bien fondé des interfaces graphiques.

Cela fait maintenant dix ans que j’utilise Latex et suis entièrement convaincu du bien fondé d’un traitement de texte basé sur un code source. Aucun autre traitement de texte en mode visuel, comme LibreOffice auquel je tire néanmoins ma révérence, ne m’a convaincu. LaTeX est un traitement de texte extraordinaire et le fait qu’il faille l’utiliser à avec un langage de script y est pour beaucoup.

Alors qu’aucun doute ne s’est jamais présenté dans ma tête sur LaTeX, il faut reconnaître que l’utilisation de différents éditeurs graphiques pour LaTeX, comme Texmaker, TexStudio ou Kile, m’a très longtemps empêché d’envisager l’utilisation d’éditeurs en ligne de commande comme vim ou emacs pour rédiger en LaTeX.

Je me lance donc aujourd’hui dans l’aventure avec vim. Pourquoi pas emacs ? Comme déjà dit ailleurs, la présence de vi par défaut sur toutes les distributions linux m’a fait considérer son utilisation avant toute chose. Mais emacs viendra un jour sans aucun doute, tant je considère les idées de RMS comme pertinentes.

Installation

On va ici supposer que LaTeX est installé et fonctionnel, car il s’agit dans cet article de montrer comment l’utiliser avec vim et son plugin vim-latex. Ce dernier est une solution standard et d’autres existent. Mais dans un premier temps, c’est à celle-ci que nous allons nous intéresser.

L’installation, sous Debian, se passe apparemment sans difficultés avec un petit :

apt-get vim-latesuite

Malheureusement, ce n’est pas aussi simple. Sous Debian, il faut encore passer par le README.debian du paquet pour y découvrir que :

… ce paquet fournit la composante latex-suite de vim, mais elle n’est pas activée par défaut. Si vous voulez l’activer sur le compte d’un utilisateur, exécutez :

vim-addons install latex-suite

Pareillement, pour l’activer pour tous les utilisateurs du système, exécutez (sous root) :

vim-addons -w install latex-suite

vim-addons est fourni par le paquet vim-addons-manager, jetez un coup d’œil à sa page de manuel pour plus d’informations.

En plus, vous devez mettre les lignes suivantes :

filetype plugin on
set grepprg)grep\ -nH\ $*
filetype indent on
let g:tex_flavor='latex'

dans ~/.vimrc (ou /etc/vim/vimrc sous root) pour une pleine utilisation. Pour plus d’informations sur ces lignes, type : « :help ls_1 » dans vim (après avoir activé ce plugin avec vim-addons).

Il est nécessaire d’activer le plugin, car la structure permettant de le gérer sera alors créée dans le répertoire ~/.vim/

En plus de cela, d’autres problèmes peuvent apparaître. Étonnamment, après l’activation du plugin, le caractère « é » n’était plus actif. Il était simplement impossible de le taper. Cela était dû au mappage de l’équivalent clavier utilisé par vim-latex pour mettre la commande \item de l’environnement itemize. Pour régler ce problème, il a fallu mettre la ligne suivante dans ~/.vimrc :

imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine

comme cela est très bien décrit sur la page de FAQ de vim-latex :

http://vim-latex.sourceforge.net/index.php?subject=faq&title=FAQ#faq-viewing

Signalons enfin que tout au long de mes recherches, un fichier était souvent cité pour des modifications. Il s’agit de ~/.vim/tex.vim. Sous debian ce fichier n’existe pas à cet endroit. De plus, il existe dans ~/.vim/compiler et dans ~/.vim/indent. Enfin, les commandes à modifier n’étaient pas présentes dans ces deux fichiers. Je n’ai découvert le véritable fichier de configuration dans lequel celles-ci se trouvaient qu’en allant dans :

~/vim/ftplugin/latex-suite/texrc

C’est ce fichier qui permet la configuration du plugin vim-latex, mais il faut le savoir.

Utilisation

L’utilisation de vim-latex est relativement simple. En effet, vim détecte l’extension de votre fichier .tex pour modifier son comportement. Ainsi, en créant un fichier test.tex, par exemple, et en y insérant une structure de fichier LaTeX, vous pourrez constater avec plaisir que celle-ci est reconnue. En y mettant cependant quelques section, en enregistrant et quittant le fichier et en le rouvrant, vous aurez cependant la surprise de ne plus retrouver votre code. À l’intérieur de celui-ci seront présents des caractères « + » mis en évidence. C’est le pliage du code. Celui-ci étant activé par défaut, on peut être surpris, surtout si on ne sait pas comment le déplier.

Pour cela, il suffit de mettre le curseur dans la ligne où se trouve le code plié et, en mode normal de vim, de presser \za. Pour replier tout le code, en mode normal, il suffit de presser \rf.

Beaucoup d’autres commandes vont faciliter la vie pendant l’écriture en LaTeX. Le manuel les décrivant est à l’adresse :

http://vim-latex.sourceforge.net/documentation/latex-suite-quickstart/index.html

Compilation

Pour votre première compilation, il faut naturellement être attentif à avoir placé votre fichier source (.tex) dans un répertoire pour éviter de disperser les nombreux fichier qui vont apparaître.

Après cela, la compilation se fait très simplement en utilisant en mode normal la commande :

\\ll

Vous verrez alors apparaître une fenêtre de compilation qui si celle-ci se déroule bien, se refermera rapidement. Une compilation en DVI aura été réalisée. Pour en voir le résultat, il faut utiliser \lv.

Si des erreurs apparaissent, vous verrez votre terminal se diviser en deux parties. L’une contiendra les erreurs et l’autre le code. Vous pourrez alors corriger le code et recompiler pour faire disparaître la fenêtre de compilation.

Configuration de la compilation

Par défaut la compilation produit à partir du code source un fichier DVI. La production de documents utilisant Gnuplot par exemple nécessitant d’une part Gnuplot et d’autre part une compilation en postscript, on peut préciser la chaîne de compilation utilisée par vim-latex dans le fichier ~/.vim/ftplugin/latex-suite/texrc. Il s’agit en réalité d’un lien vers /usr/share/vim/addons/ftplugin/latex-suite/texrc. Or, ce fichier est amené à être mis-à-jour. Il ne faut donc pas l’utiliser directement, mais le copier dans le répertoire personnel à la place de son lien. Pour cela, renommez le lien, puis copiez le fichier en lui donnant comme propriétaire et groupe celui de l’utilisateur.

La structure de compilation choisie est DVI → PS → PDF. Pour le faire comprendre à vim-latex, dans ce fichier, il faut trouver la section « Rules : specifications of programs for compiling and viewing ». Dans celle-ci figurent les lignes suivantes :

if has('macunix')
    TexLet g:Tex_DefaultTargetFormat = 'pdf'
else
    TexLet g:Tex_DefaultTargetFormat = 'pdf'
endif

Selon les plateformes, Mac ou (else) autre, assurez-vous d’abord que le fichier final est est en PDF. C’est ce type de fichier que la commande \lv appellera.

Ensuite, il faut définir la chaîne de compilation. Un peu plus bas, se trouvent les deux lignes suivantes :

TexLet g:Tex_MultipleCompileFormats = 'dvi'
" TexLet g:Tex_FormatDependency_ps = 'ps'

Le premier indique s’il est possible qu’il faille compiler plusieurs fois le fichier et le second comment s’il faut compiler en ps, par exemple (ici le commentaire (« ) indique que la compilation en ps n’est pas requise). Dans notre cas, ces deux fichiers doivent contenir :

TexLet g:Tex_MultipleCompileFormats = 'dvi,ps,pdf'
TexLet g:Tex_FormatDependency_ps = 'dvi,ps,pdf'

La première ligne vous permettra d’éviter de devoir valider après la compilation de chaque fichier. La seconde est la chaîne de compilation choisie.

Plus bas se trouvent les règles de compilation (Compiler Rules). Il s’agit de définir l’appel des logiciels en charge de chaque étape de compilation. Pour la compilation LaTeX, il faut la commande :

TexLet g:Tex_CompileRule_dvi = 'latex -enable-write18 -shell-escape -interaction=nonstopmode -file-line-error-style $*'

Les deux premiers arguments de la commande latex ont ici été ajoutés pour permettre l’utilisation de Gnuplot. C’est cette commande qui est utilisée par défaut pour une compilation en DVI.

Puis, il faut spécifier la commande postscript :

TexLet g:Tex_CompileRule_ps = 'dvips -Ppdf -o $*.ps $*.dvi'

où l’argument -Ppdf pourrait être retiré, car il récupère la configuration de l’imprimante pour optimiser la sortie postscript.

Enfin, il faut spécifier la commande pdf :

TexLet g:Tex_CompileRule_pdf = 'ps2pdf $*.ps'

Ainsi, la compilation se fera automatiquement vers DVI → PS → PDF.

Relevez que si celle-ci ne devait pas permettre le bon visualiseur PDF, il vous faudrait spécifier celui-ci dans la partie qui suit, nommée Viewer rules avec :

TexLet g:Tex_ViewRule_pdf = 'okular'

par exemple.

Enfin, un petit problème est survenu qui rendait désagréable la compilation. Par défaut, l’enregistrement du document ne se faisait pas avant celle-ci, au lancement de la commande \ll. On peut comprendre que certains préfèrent qu’il en soit ainsi. Mais un autre comportement devrait être possible sans qu’il nécessite une utilisation complexe de vim. Or, pour le régler, ce que j’ai pu trouver tout au long de mes recherches pour le faire est de placer les deux lignes suivantes dans mon ~/.vimrc :

autocmd FileType tex call Tex_MakeMap('<leader>ll', ':update!<CR>:call Tex_RunLaTeX()<CR>', 'n', '<buffer>')
autocmd FileType tex call Tex_MakeMap('<leader>ll', '<ESC>:update!<CR>:call Tex_RunLaTeX()<CR>', 'v', '<buffer>')

Je ne commente pas ces lignes qui sont certainement parfaitement évidentes pour tout le monde 🙂 … Reste qu’elle fonctionnent parfaitement.

Laisser un commentaire