La réponse est 42

Aller au contenu | Aller au menu | Aller à la recherche

Logiciel

Fil des billets

vendredi 14 avril 2006

Le tour chauffeur!

Aller, on refait un tour en compagnie d'emacs et de LaTeX!

Au tour précédent, je vous indiquais comment utiliser Emacs/latex/bibtex pour rédiger des documents avec biblio. Aujourd'hui, c'est un petit ajout qui va vous permettre de corriger vos documents à la volée. Pour ce faire, nous allons utiliser flyspell. Il est normalement installé avec Emacs dans les distributions récentes, s'il ne l'est pas, téléchargez-le!

Au niveau utilisation, c'est très simple, il vous suffit d'insérer ces quelques lignes dans votre .emacs pour que tout soit actif~:

; correction orthographique
; aspell est un bon correcteur orthographique
(setq ispell-program-name "aspell")
; utilisation du dictionnaire français par défaut
(ispell-change-dictionary "francais")
(setq ispell-dictionary "francais")
(setq flyspell-default-dictionary "francais")
(autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)

Maintenant, quand vous éditez vos documents LaTeX, le terme "FLY" apparaît dans la barre d'état d'emacs, vous indiquant que le mode flyspell est activé et les mots incorrectement orthographiés sont surlignés dans le texte (les paramètres ajoutés dans votre .emacs permettent d'ignorer les balises LaTeX). Quelques commandes utiles~:

  1. Pour forcer la vérification de votre document~: M-x flyspell-buffer
  2. Pour corriger un mot, se placer dessus, puis~: M-TAB (Attention, si votre gestionnaire de fenêtre utilise la combinaison ALT-TAB pour changer de fenêtre, utilisez ESC-TAB pour le M-TAB)

Et voilà, rien d'autre à ajouter! Si ce n'est que vous pouvez utiliser mon .emacs qui contient tout un tas de paramètres utiles

mercredi 5 avril 2006

Du bon usage (technique) du trio emacs/LaTex/BibTex

Aujourd'hui, petit billet dédié au gens rédigeant des articles/mémoires, notamment à nos chers animaux de compagnie : les thésards!

Rédiger une thèse n'est pas simple, puisqu'il faut non seulement avoir le contenu pour la rédiger, mais aussi savoir mettre en forme ce contenu. Donc, pour éviter d'avoir en plus des difficultés techniques liées aux références bibliographiques, j'ai décidé de rédiger ce petit tutoriel traitant de l'utilisation du trio emacs/LaTeX/BibTex. Nous aborderons la marche à suivre pour avoir une bibliographie bien formée, au format bibtex, ainsi que la manière d'utiliser cette bibliographie au sein d'un document LaTeX édité à l'aide d'emacs. Le but de ceci étant de vous faire perdre du temps à prendre de bonnes habitudes au départ, afin de vous en faire gagner beaucoup par la suite.

Vous vous demandez quelle est la nouveauté que pourrait bien apporter ce tuto par rapport à la pléiade d'autres existant sur le net et dans les bouquins? Et bien, c'est très simple, nous allons utiliser reftex, qui est un mode d'emacs installé par défaut à partir de la version 20.2 d'emacs. Ce mode permet différentes petites choses très pratiques, à savoir :

  • insérer automagiquement des citations à partir de vos fichiers biblio en vous permettant de rechercher rapidement par regexp
  • insérer automagiquement des références aux divers chapitres, sections, figures et tables de votre document, en utilisant le mécanisme de label de LaTeX
  • faire tout ceci en interaction avec AucTex (un mode LaTeX pour emacs, super pratique)
  • faire tout ceci en 2 coups de raccourcis clavier, vous évitant ainsi à la fois la perte de temps et le tennis elbow dus aux déplacements répétés de votre main du clavier vers la souris

Pré-requis :

  1. Emacs doit être installé, de même que reftex (pour vérifier, ouvrir un document latex et passer en mode reftex : M-x reftex-mode). Si tel n'est pas le cas, reportez vous au mécanisme particulier d'installation de logiciels de votre distribution
  2. AucTex actif, c'est mieux (le tuto reste valable sans ce mode)
  3. installer les bibtool (aptitude install bibtool sous Debian)
  4. Connaître un brin de latex
  5. Avoir un fichier biblio au format bibtex

Mise en place de reftex :

  1. Modifier votre .emacs pour charger correctement reftex
    ;;reftex
    (setq reftex-save-parse-info t)
    (setq reftex-use-multiple-selection-buffers t)
    (setq reftex-plug-into-AUCTeX t)
    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; avec AUCTeX LaTeX mode
    (add-hook 'laTeX-mode-hook 'turn-on-reftex)   ; sans AUCTeX LaTeX mode
    
  2. Ouvrir votre document latex (dans la barre d'état , il doit y avoir marqué "LaTeX Ref" si vous utilisez AucTex + RefTex)
  3. faire un squelette minimal (documentclass, include, bibliography)

Utilisation de reftex :

  1. Pour insérer un référence bibliographique : "C-c [". Dans le minibuffer, taper un nom d'auteur (ou une regexp pour chercher ce que vous désirez) : reftex ouvre un buffer contenant les résultats de la recherche, vous permet de naviguer dans les résultats et de choisir celui que vous voulez insérer (toutes les commandes de navigation sont indiquées, pas besoin de les détailler ici). Une fois validée, la référence est correctement insérée.
  2. Pour insérer une référence à un paragraphe, une figure : "C-c )". Il vous demande de choisir que type de label (label sur une figure, une section, un paragraphe, une équation, etc...), les types étant expliqué dans un buffer juste au dessus. Dans notre cas, nous choisissons une figure (f). Un buffer s'ouvre avec la table des matières de votre document, et les différentes parties contenant une figure avec un label. Naviguez à l'aides des flèches directionnelles et validez le label choisi en appuyant sur la touche entrée. La référence correcte est crée dans votre document.

Ces deux utilisations de reftex sont les plus pratiques, selon moi, et vous pouvez retrouver quelque chose d'un poil plus complet ici Manuel de RefTex.

Astuce :Pour les manuscrits de taille conséquente (au hasard, une thèse), il est fréquent de séparer son document en plusieurs parties, que l'on inclut dans un fichier principal (que l'on appellera main.tex dans ce document) définissant les caractéristiques générales du document (classe, includes, bibliographie, table des matières, etc...). On voit se dessiner une légère difficulté : comment reftex, qui utilise la définition de la bibliographie va-t-il retrouver ses petits dans les sous-parties du document, qui n'ont pas, par définition, la balise bibliographie. Le même problème se pose pour les références internes au document, puisque chaque sous-partie, par défaut, ne connait qu'elle même. Seul le main.tex connait toutes les parties composant le document. En fait, la solution est très simple (mais il m'a fallu une longue recherche dans le manuel pour la trouver!) : créer un petit paragraphe en fin de chaque sous-partie, indiquant quelle est votre fichier maitre. Par exemple :

%%% Local Variables: ***
%%% mode:latex ***
%%% TeX-master: "/home/toto/path/to/main.tex"  ***
%%% tex-main-file: "/home/toto/path/to/main.tex" ***
%%% End: ***

Ce problème de document incluant plusieurs sous-parties étant réglé, une dernière petite astuce peux vous aider. Pour gérer notre bibliographie, nous sommes souvent amenés à séparer celle-ci en différents sous-fichiers suivant des critères personnels (domaine de travail, auteur, axe de recherche particulier, etc...). La création d'une bibliographie étant souvent séquentielle, il est rare qu'elle soit correctement classée. De plus, les moteurs de recherche bibliographique, tels que citeseer(informatique) ou HubMed (biologie, bioinformatique) fournissent les citations formatées en BibTex, mais malheureusement, les erreurs de format sont assez fréquentes. Nous pouvons remédier à celà en utilisant bibtool.

for i in $(ls *.bib); do bibtool -f '%n(author)%n(month)%2d(year)' -s -- 'sort.format={%d(year)%N(month)%N(author)}' -r iso2tex $i -o $i.bak && mv $i.bak $i; done

Cette commande permet de trier sa bibliographie par ordre d'année, puis de mois, puis d'auteur de la publication. Elle permet par ailleurs de générer une clé unique, utilisée dans le document LaTeX pour faire référence à cette publication, remédiant par là-même au "problème" des auteurs publiant beaucoup d'articles dans la même année (si, si, ça existe vraiment).

ATTENTION : Tous vos fichiers doivent être en iso-8859-1 pour que bibtool fonctionne correctement. Pour ma part, ils étaient en utf-8 et bibtool ne le prend pas en charge. Il ne plante pas, ne met pas de message d'erreur, mais fait de grosses cagades partout!

Voilà la fin de ce tutoriel! Avec ça, vous devez être fin prêt à rédiger un manuscrit en LaTeX, sans perdre trop de temps avec les mécanismes de références et citations. Bon courage!