Faire une bibliographie avec BibTeX

Pourquoi BibTeX ?

Il peut sembler bizarre de devoir recourir à un programme externe pour générer quelques lignes de texte à la fin d'un mémoire. Néanmoins l'intérêt de BibTeX apparaitra très rapidement à l'utilisateur désireux de construire sa bibliographie au fur et à mesure de la rédaction du texte, tout en respectant les conventions, par exemple dans le cas d'une thèse...

De plus, la plupart des bibliographies d'ouvrages scientifiques se doivent d'être au format BibTeX, afin de ne pas voir à taper les entrées bibliographiques, mais de pouvoir utiliser les bases de données existantes.

Enfin, BibTeX c'est la possibilité de changer l'ordre utilisé dans la bibliographie (alphabétique, chronologique, thématique, ordre de citation dans le texte) sans tout retaper. Il est également possible de changer l'apparence (le titre en italique ou entre guillements ?), l'ordre des éléments dans une référence (le prénom avant ou après le nom ?, le titre avant ou après la revue ?), là encore sans grand effort.

Le principe

BibTeX va chercher ses références dans une base de données que l'utilisateur crée, de manière très simple, en attribuant une « étiquette » à chaque référence, puis en remplissant un certain nombre de champs (auteurs, titre, revue, année, éditeur, etc.). Cette base de donnée est stockée sous forme de fichier texte, avec comme extension .bib. Elle peut être commune à plusieurs documents LaTeX, comme on le verra plus tard.

Lorsque l'utilisateur veut citer une référence dans le fichier LaTeX, il appelle l'étiquette qui identifie cette référence dans le fichier .bib, par la commande \cite{}. Lors de la compilation du fichier par LaTeX, la liste des références demandées s'inscrit alors dans le fichier .aux correspondant. On peut alors lancer BibTeX, qui fera le lien entre les requêtes du document et la base de données, en générant au passage un fichier .bbl, qui sera, lui, spécifique au document LaTeX tel qu'on vient de le compiler.

Enfin, une nouvelle compilation via LaTeX sera nécessaire pour afficher correctement la bibliographie ainsi que les renvois du texte.

En pratique

Construire la base de données

Exemple

Voici un extrait de base de données :

@article{Johnson,
        author = {Edgar G. Johnson and Alfred O. Nier},
        title = {Angular Aberrations in Sector Shaped 
        Electromagnetic Lenses for Focusing Beams of Charged Particles},
        journal = {Physical Review},
        volume = {91},
        number = {1},
        month = {jul},
        year = {1953}
}

@phdthesis{Zoran,
        author = {Zoran Racic},
        title = {\'Etude et essais du spectromètre à plasma {DYMIO}
	de la  mission {MARS 96}},
        publisher = {Université Pierre et Marie Curie},
        year = {1996}
}

Toute entrée commence par un @, suivi par un descripteur (imposé par le type de document article, book, inproceedings, etc.). Entre accolades, se trouve l'étiquette, puis les champs, composés d'un sous-descripteur et de la valeur de celui ci, entre accolades. Les champs sont séparés par des virgules, l'oubli de celles ci étant vraisemblablement la source d'erreurs la plus courante !

A priori, BibTeX s'occupe des majuscules, et n'hésite pas à en supprimer si tel est son bon plaisir. Il y a moyen de lui faire savoir qui c'est le chef, en enfermant les mots qu'on désire laisser en majuscule entre accolades. Cependant, la meilleure solution est de ne pas placer ces accolades et de modifier le style de bibliographie ou d'en changer s'il ne vous convient pas. Les commandes TeX sont autorisées.

N'hésitez pas à fournir un maximum d'informations, BibTeX s'arrangera pour tout faire rentrer (ou donnera des messages d'avertissement s'il en manque...), et les champs inconnus seront ignorés si nécessaire.

Sauvegardez le fichier sous un nom se terminant par .bib

Liste des types de document et des champs disponibles

La table suivante résume les types et les champs couramment connus.

Types de documents Champs
article address
book annote
booklet author
conference booktitle
inbook chapter
incollection crossref
inproceedings edition
manual editor
mastersthesis howpublished
misc institution
phdthesis journal
proceedings month
techreport note
unpublished number
organization
pages
publisher
school
series
title
type
volume
year

author est le champ utilisé pour saisir la liste des auteurs sous la forme prénom nom ou nom, prénom.

Les auteurs doivent être séparés par and et surtout pas une virgule.

Pour les articles (type article), les champs importants sont author, title, journal, year, pages (les champs volume et number peuvent eux aussi servir). Pour les livres (type book) on prendra garde à donner la maison d'édition à l'aide du champ publisher et non editor (les éditeurs d'un ouvrage collectif) ou edition (le numéro de réédition). L'adresse de la maison d'édition est donnée par address. Le type misc sert de fourre-tout quand aucune catégorie ne semble correspondre à un document (un manuscrit par exemple), tous les champs peuvent être utilisés, mais pensez à ajouter soit howpublished soit une note explicative. inbook et les autres types dont le nom commence par in désignent des chapitres (le numéro du chapitre sera précisé via le champ chapter et les pages concernées par pages) ou des paragraphes dans un livre (le titre pourra être précisé avec booktitle), etc. Le champ crossref permet de faire référence audit livre s'il est présent lui aussi dans la bibliographie. Les documents académiques (mastersthesis et phdthesis) pourront intégrer school ou institution pour renseigner l'université.

Afficher la biblio dans le document LaTeX

À l'emplacement prévu dans le fichier .tex, insérez les lignes :

\bibliographystyle{plain}
\bibliography{stlong}

\bibliographystyle permet de choisir le style de bibliographie.

\bibliography permet d'indiquer quelle base de données doit être utilisée. On indique le nom du fichier, sans l'extension .bib

Créer une entrée « Bibliographie » dans la table des matières

Utilisez le package tocbibind, capable de créer des entrées pour la bibliographie, l'index et aussi la table des matières (!), les listes des figures et des tables. Ces trois derniers éléments n'étant pas du meilleur effet, on lui pourra passer les options nottoc, notlof et notlot.

\usepackage[nottoc, notlof, notlot]{tocbibind}

Citer une référence dans le texte

LaTeX n'affiche pas toutes les références contenues dans la base de données, seulement celles qui sont citées dans le texte. Par conséquent, il est normal à ce stade de ne rien voir s'afficher... La commande à utiliser pour citer une référence est tout simplement

\cite{label}

label est l'étiquette attribuée lors de la construction de la base de données dans le fichier .bib. Dans le style plain, cette commande apparaît alors dans le fichier .dvi sous la forme [X], où X est le numéro utilisé dans la bibliographie, ou un ??? si l'étiquette est erronée, ou qu'il manque une compilation de LaTeX ou de BibTeX.

On peut néanmoins faire apparaître une référence dans la bibliographie sans la citer explicitement dans le texte, à l'aide de la commande :

\nocite{label}

Un cas particulier est \nocite{*} qui dit à BibTeX d'inclure dans la bibliographie toutes les références, citées dans le corps du texte ou non.

Compilation(s)

Il ne reste plus qu'à compiler le tout :

latex mon_fichier.tex
bibtex mon_fichier
latex mon_fichier.tex
Ce n'est ni le fichier .bib ni le fichier .tex qu'on indique à BibTeX, mais le fichier .aux produit dans la première compilation du fichier .tex. Cependant, comme l'indique la commande ci-dessus, cela fonctionne quand même si on ne précise pas l'extension.
Auteur : Frédéric Meynadier (2001, 2005). Dernière modification le par Josselin Noirel