Retrouvez cet article dans : Linux Magazine 83
Si vous avez été un jour confronté à la rédaction de références bibliographiques (pour un article, un rapport, etc.), vous le savez déjà  : il s’agit d’un travail fastidieux et répétitif. Bref, exactement le type de tâche qu’un programme adore effectuer. Et ça tombe bien, LaTeX sait le faire !
La bibliographie est une étape indispensable (et parfois peu passionnante) de tout travail scientifique. Elle se décompose classiquement en deux tâches distinctes :
- la lecture des documents. Là , désolé, on ne peut rien pour vous ;
- la saisie et la mise en forme des références bibliographiques. C’est à cette partie que nous allons nous intéresser ici.
Pour chaque publication (article, livre, site web, etc.) lue, il va en effet falloir :
- mettre en forme les coordonnées (auteur, titre, éditeur, lieu de publication, nombre de pages, URL...) ;
- les citer dans le corps du document, avec un renvoi aux références bibliographiques ;
- mettre à jour les autres renvois (dans le cas, par exemple, d’une numérotation par ordre alphabétique).
On voit bien que des mécanismes similaires à ceux utilisés pour la numérotation des figures ou des titres peuvent être mis en place pour les renvois bibliographiques. On a bien sûr intérêt à automatiser tout ce qui peut l’être !
Il existe deux méthodes pour ajouter une bibliographie à un document saisi avec LaTeX. Dans la première, la bibliographie est directement écrite, avec sa mise en forme, dans le fichier LaTeX, alors que dans la seconde (plus souple), elle est stockée dans un fichier séparé, et la mise en forme est effectuée au travers d’une feuille de style.
Dans cet article, nous allons surtout nous intéresser à la seconde méthode, qui offre de nombreux avantages, mais pour commencer, jetons un coup d’œil à la première.
Bibliographie incorporée
Rentrons directement dans le vif du sujet avec l’exemple de l’encadré 1.
Un exemple de document avec une bibliographie incorporée
1Â Â \documentclass{article}
2Â Â \usepackage[frenchle]{babel}
3Â Â \usepackage[latin1]{inputenc}
4Â Â \usepackage[T1]{fontenc}
5Â Â \begin{document}
6  \section{Essai de bibliographie incorporée}
7  l’utilisation de l’environnement \texttt{thebibliography} est décrite
8  dans \cite{livre_de_chevet}. Quand nous serons passés à la postérité,
9  le présent article devra être cité comme suit \cite{cyril_et_florent}.
10 Â
11Â \begin{thebibliography}{9}
12Â \bibitem{livre_de_chevet} Lamport, L,
13Â Â Â Â {\it \LaTeX: A Document Preparation System},
14Â Â Â Â Addison-Wesley, 1986.
15Â \bibitem{cyril_et_florent} Buttay, C. \& Morel, F.,
16    {\it Linux Pratique}, n°1457, décembre 2051.
17Â \end{thebibliography}
18Â \end{document}.
Passées les habituelles lignes de préambule (lignes 1 à 5), on arrive au corps du document. La base bibliographique est placée en fin de document, entre \begin{thebibliography} et \end{thebibliography}.
Dans l’exemple donné ci-dessus, la base contient deux enregistrements, débutant par \bibitem): livre_de_chevet et cyril_et_florent (respectivement lignes 12 à 14 et 15 à 16). Dans le texte, les appels bibliographiques se font à l’aide de la commande \cite qui reçoit comme paramètre le nom du \bibitem choisi (lignes 8 et 9).
Lorsque l’on compile ce listing à l’aide de LaTeX [1], on obtient une page, visible figure 1. Vous pouvez remarquer que la numérotation des références bibliographiques est faite automatiquement.
Le titre de la section bibliographique (" Références ") est également ajouté de manière automatique, dans la langue du document (sélectionnée à l’aide du paquetage babel, ligne 2).
Notez le premier argument de l’environnement thebibliography ({9}, ligne 11) qui correspond à la longueur de la plus longue étiquette de la bibliographie.
Cet argument est utilisé par LaTeX pour aligner verticalement les références dans la bibliographie. Lorsque l’on ne modifie pas les étiquettes des références (comme dans l’exemple), on spécifie classiquement 9 lorsque l’on a entre 1 et 9 citations, 99 entre 10 et 99, etc.
Dans cet exemple, nous n’avons pas modifié les étiquettes des appels bibliographiques. Par défaut, LaTeX utilise des étiquettes numériques, mais nous pouvons les modifier en rajoutant le texte de l’étiquette dans le \bibitem :
\bibitem[Lamport-86]{livre_de_chevet} Lamport, L, ...
De cette manière, le [1] de l’exemple sera remplacé par [Lamport-86], à la fois dans le texte et dans la bibliographie. Dans ce cas, il faut penser à déclarer la longueur des étiquettes à LaTeX par \begin{thebibliography}{Lamport-86}...
Si l’on s’intéresse au contenu de la base bibliographique, on peut remarquer que le fond (les références bibliographiques) et la forme (la typographie) sont complètement mêlés, ce qui n’est ni vraiment recommandé, ni tout à fait dans l’esprit de LaTeX. Nous allons voir que l’utilisation de BibTeX est beaucoup plus satisfaisante de ce point de vue.

Figure 1 : Insertion de références bibliographiques dans un document LaTeX.
Bibliographie externe
Fonctionnement de BibTeX
BibTeX est un programme dédié à l’écriture de références bibliographiques. Il fait appel pour cela à trois fichiers :
- le fichier LaTeX, dans lequel vous avez placé vos appels bibliographiques (
\cite{référence}) ; - la base de données bibliographique, qui ne contient que les renseignements bruts (auteur, titre, etc.), sans information de mise en forme (Cette base est enregistrée dans un fichier texte avec l’extension bib.) ;
- la feuille de style (fichier
*.bst), qui définit à la fois la mise en forme des références et celle de l’étiquette de renvoi.
En plus d’offrir une séparation entre fond et forme, cette méthode permet d’utiliser sa base bibliographique pour plusieurs documents : vous n’êtes bien sûr pas obligé de la placer dans le même répertoire que le document LaTeX courant.
Par rapport à l’exemple précédent (faisant appel à l’environnement thebibliography, seule la fin du fichier tex a été modifiée (encadré 2).
Un document utilisant BibTeX
 ...
5Â Â \begin{document}
6  \section{Essai d’utilisation de BibTeX}
7  l’utilisation de BibTeX est décrite dans \cite{lamport86}.
8  Quand nous serons passés à la postérité, le présent
9  article devra être cité comme suit \cite{cyril_et_florent}.
10Â \bibliographystyle{plain}
11Â \bibliography{ma_biblio}
13Â \end{document}
La commande \bibliographystyle (ligne 10) définit le nom de la feuille de style à utiliser. Il s’agit ici du fichier plain.bst, qui est présent dans toute distribution LaTeX.
Ce fichier peut se trouver soit dans votre répertoire courant, soit dans l’arborescence LaTeX (répertoire texmf).
Le nom de la base bibliographique à utiliser est défini par la commande \bibliography (ligne 11). Le fichier que nous utilisons se nomme ma_biblio.bib, et son contenu est donné dans l’encadré 3.
Une bibliographie au format BibTeX
1  Une chaine à l’extérieur d’un enregistrement est un commentaire
2Â Â @Book{lamport86,
3Â Â Â Â author =Â Â Â {Lamport, L},
4Â Â Â Â title = Â Â Â {\LaTeX: A Document Preparation System},
5Â Â Â Â publisher = {Addison-Wesley},
6Â Â Â Â year = Â Â Â 1986
7Â Â }
8
9Â Â @Article{cyril_et_florent,
10Â Â Â author = Â Â Â {Buttay, Cyril and Morel, Florent},
11Â Â Â title = Â Â Â {Simplifiez vous la bibliographie sous LaTeX},
12Â Â Â journal = {Linux Pratique},
13Â Â Â year = Â Â Â 2006,
14Â Â Â number =Â Â Â 34,
15Â Â Â month =Â Â Â feb
16Â }
Chaque enregistrement commence donc par un @, suivi du type de document que l’on décrit. Au passage, remarquez que toute chaîne de caractères placée à l’extérieur d’un enregistrement est considérée comme un commentaire (elle ne doit pas contenir d’@). Le premier élément de l’enregistrement est son nom (celui que l’on appelle avec \cite). L’ordre des autres champs n’a pas d’importance, ni leur indentation. Ils doivent par contre absolument être séparés par une virgule.
Lorsque les champs contiennent une chaîne de caractères (comme Linux Pratique), celle-ci doit être délimitée par des accolades ou des guillemets. Lorsqu’il s’agit d’une macro (comme feb, que nous verrons plus loin, il n’y a pas de délimiteur. Les types de documents et les champs les plus courants sont décrits dans les encadrés 4 et 5. Il en existe encore bien d’autres, que vous trouverez dans votre documentation locale de BibTeX ([..]/texmf/doc/bibtex/basebtxdoc.dvi).
Une fois définis les deux fichiers ci-dessus et choisie votre feuille de style, la procédure pour obtenir un document à jour est la suivante :
$ latex fichier.tex $ bibtex fichier $ latex fichier.tex $ latex fichier.tex
La commande latex peut bien entendu être remplacée par pdflatex. Il est important de ne pas mettre d’extension au nom de fichier lors de l’appel à bibtex, car celui-ci utilise le fichier temporaire fichier.aux et non pas le fichier source fichier.tex. À l’issue de son exécution, bibtex génère un fichier fichier.bbl qui contient les références que nous avons citées dans le fichier LaTeX, mises en forme suivant la feuille de style, et placées dans un environnement thebibliography ! BibTeX est donc un moyen automatisé de générer les bibliographies comme nous les avons vues dans la première partie de cet article. Les deux appels à latex qui suivent permettent d’intégrer la sortie de bibtex dans le document final. L’ajout d’une nouvelle référence bibliographique dans un document nécessite donc 4 étapes de compilation. Pour vous faciliter la tâche, nous ne saurions que trop vous conseiller de rédiger un makefile de manière à automatiser ce processus.
Écriture de la base bibliographique
Voyons maintenant les différents points à connaître pour l’écriture d’une base bibliographique au format BibTeX.
Les noms d’auteur
Ils doivent être écrits sous la forme suivante :
author={nom1, prénom1 and nom2, prénom2 and nom3,prenom3}
Le and est un séparateur permettant à BibTex de découper convenablement la liste, il n’apparaît pas tel quel dans votre document. Il est important de respecter l’ordre " nom, prénom " car, suivant le style bibliographique, le prénom pourra être réduit à son initiale. Cette logique se complique lorsque l’on aborde des noms plus complexes. BibTeX reconnaît quatre parties d’un patronyme : le nom de famille, le prénom, la particule et le " Jr " américain. Un nom possédant toutes ces caractéristiques devra s’écrire :


particule Nom, Jr, Prénom
Notez que la particule doit être écrite en minuscules pour que BibTeX la reconnaisse.
Les dates
Le champ month permet de définir le mois de parution d’un document. Plutôt que de l’écrire en toutes lettres, utilisez les abréviations données dans le tableau " Les types de champs " :
 month=sep
Notez qu’il n’y a ni accolades ni guillemets autour de sep, ce qui signifie qu’il s’agit d’une macro. L’intérêt de cette méthode est que BibTeX va utiliser la langue courante de votre document pour écrire le mois correspondant (" septembre " pour le français, " september " pour l’anglais, etc.). BibTeX ne possède pas de champ " jour ", pourtant ce renseignement est souvent pratique, par exemple dans le cas d’une conférence. Si vous voulez l’ajouter, il faut le placer dans le champ month à l’aide de l’opérateur de concaténation #:
 month="28~" # sep,
Les plus observateurs auront remarqué qu’en faisant de la sorte, on perd l’intérêt de la base multilingue, puisqu’un anglais aurait écrit :
month= sep # "~28",
C’est malheureusement vrai ! On retrouve le même problème lorsque l’on ajoute une note comme " disponible à l’adresse suivante " pour une page web. Il arrive ainsi assez souvent, lorsque l’on cherche à faire une base multilingue, de devoir définir plusieurs enregistrements pour un même document. Malgré tout, il est conseillé d’utiliser l’abréviation plutôt que d’écrire le mois en toutes lettres, de manière à obtenir une bibliographie cohérente (on pourra en effet obtenir septembre 2005, sept. 2005, 09/2005 suivant le style désiré).
Les URL
BibTeX n’est pas vraiment un programme récent (sa documentation date de 1988 !), et il ne possède donc pas de champ spécifique permettant de définir l’URL d’un document. Vous pouvez utiliser le champ howpublished pour cela :
 howpublished = "\url{http://www.ctan.org}"
Cette solution nécessite l’utilisation du paquetage url ou hyperref, qui définissent tous deux la commande url.
Les abréviations
Certains renseignements de la base reviennent souvent, comme par exemple des titres de journaux dont on cite plusieurs articles. Il est possible de définir des abréviations à l’aide de la commande @STRING, placée en dehors des enregistrements de la base :
 @string{ljdgt = {le journal du grand tout} }
L’abréviation doit ensuite être utilisée sans accolades ni guillemets :
journal= ljdgt,
Gestion des capitales
Suivant la feuille de style choisie, il est courant que BibTeX supprime les capitales de certains mots, notamment dans les titres. Dans ce cas, si vous voulez conserver la capitalisation pour un mot donné (par exemple un sigle), il faut la mettre entre accolades.
Les styles courants
Nous ne décrirons pas ici la syntaxe des feuilles des style qui est relativement obscure [2]. En fait, il en existe tant de disponibles sur votre machine ou sur Internet, que vous devriez y trouver votre bonheur !
Voici quelques noms de feuilles de style classiques, livrées avec toutes les distributions LaTeX. Vous pouvez les utiliser avec la commande bibliographystyle pour voir leur effet (voir tableau). Ces styles existent aussi en version francisée (avec f ou fr en plus au début du nom). Si vous ne les avez pas sur votre système (dans [..]/texmf/bibtex/bst, vous pouvez les récupérer sur http://www.ctan.org/tex-archive/biblio/bibtex/contrib/bib-fr/. N’oubliez pas d’exécuter texhash après les avoir ajoutés pour rafraîchir la base de fichiers de LaTeX.
Conclusion
BibTeX permet une réutilisation simple de vos références entre plusieurs documents, ainsi qu’un échange avec vos collaborateurs.
Certains éditeurs scientifiques proposent également de télécharger les références de leurs articles au format BibTeX, ce qui évite les erreurs de saisie. Bref, une fois que vous l’aurez pris en main, BibTeX va rapidement devenir indispensable pour toute rédaction scientifique.

Emacs, AUCTeX et les références
Tous les éditeurs de texte peuvent être utilisés pour rédiger un document LaTeX, mais certains y sont tout spécifiquement destinés. Emacs en fait tout naturellement partie, puisqu’il est à peu près spécialisé dans tout !
Parallèlement au module AUCTeX, destiné à l’édition de documents LaTeX, emacs possède une extension permettant de gérer les références, notamment bibliographiques : RefTeX. Cette dernière permet de créer simplement de nouvelles entrées dans votre fichier BibTeX et de les retrouver au moment voulu. RefTeX permet aussi de manipuler les différentes références internes de votre document LaTeX, en affichant la table des matières ou des figures.
Vous trouverez une introduction à l’utilisation d’emacs pour LaTeX sur http://www.parinux.org/ressources/mini-howtos/auctex/, ainsi que sur http://www.pallier.org/ressources/emacs_latex/emacs_latex.html qui aborde également l’utilisation de RefTeX).
Bibliographie
L’auteur de BibTeX, Oren Patashnik, a rédigé deux documents, que vous trouverez dans votre répertoire LaTeX : [..]/texmf/doc/bibtex/btxdoc et btxhak. Si vous ne les trouvez pas, ils sont également disponibles sur internet, sur www.ctan.org ou sur le site de N.Markey (voir ci-dessous)
La page web de N. Markey recèle de la documentation sur BibTeX (ainsi que LaTeX) http://www.lsv.ens-cachan.fr/~markey/bibla.php. Vous y trouverez notamment " Tame the BeaST ", qui vous permettra de devenir un véritable expert es-BibTex !
En cas de problème, et après avoir vérifié que la solution ne se trouve pas dans les Frequently Asked Questions http://www.grappa.univ-lille3.fr/FAQ-LaTeX/ (français) et http://www.tex.ac.uk/faq (anglais), vous pouvez poser votre question sur le newsgroup usenet fr.comp.text.tex (accessible également via Google Groups). Les " gourous " de ce groupe apportent des réponses rapides et fiables, avec une gentillesse qui mérite d’être soulignée.
Notes
[1] Pour obtenir un résultat convenable, il faut exécuter deux fois latex. Il faut procéder ainsi à chaque fois que l’on ajoute ou supprime un enregistrement à la bibliographie.
[2] Les courageux lecteurs qui désirent malgré tout se confronter aux fichiers bst peuvent cependant lire le chapitre 4 de " Tame the BeaST " de N. Markey, disponible sur http://www.lsv.ens-cachan.fr/~markey/bibla.php
Retrouvez cet article dans : Linux Magazine 83

