BibTeX

Fiche logiciel validé
  • Création ou MAJ importante : 03/05/10
  • Correction mineure : 24/06/13
Mots-clés

BibTeX : outil de préparation des citations et de gestion de la bibliographie des articles

  • Système : UNIX-like, Windows, MacOS X
  • Version évaluée : 0.99c
  • Langue(s) de l'interface : anglais
  • Licence : lgpl
Description
Fonctionnalités générales

Pour l'utilisateur final, typiquement un scientifique rédigeant un article en LaTeX - http://www.projet-plume.org/fr/fiche/latex, BibTeX est un outil logiciel transparent permettant d'oublier les détails de la gestion effective des citations et de la bibliographie du document en cours de création. Finies les bibliographies incomplètes ou contenant des entrées non citées, ou de style approximatif ou hétérogène. Lors de la compilation du document LaTeX, l'outil BibTeX cherche dans la base bibliographique (une liste de fichiers ASCII contenant des fiches bibliographiques au format BibTeX, de suffixe *bib) les références citées dans le *aux (sortie de la compilation LaTeX) et les ajoute, en les adaptant au style associé à l'article (un fichier *.bst (Bib STyle)), à la bibliographie en générant un fichier *bbl qui sera inclus de manière transparente dans le document. Le fichier d'information et d'erreurs sera de suffixe *blg (Bib LoG). De la même manière que LaTeX calcule et met à jour les valeurs des champs des références croisées, des numéros de pages, de figures, de sections et établit éventuellement la table des matières ..., BibTeX gère aussi la substitution des champs de citation bibliographique dans le corps du texte. Les citations manquantes sont évidemment indiquées. Le seul effort de l'auteur est de se souvenir des clefs des articles qu'il cite dans son document via la simple commande \cite{clef}.

BibTeX est aussi un format ouvert et extensible de fiches bibliographiques et un outil de gestion de base bibliographique (une collection de fiches dans un ou plusieurs fichiers). On peut inclure l'ensemble des entrées d'une base via la commande \nocite{*} dans un document LaTeX. Il sera ensuite aisé d'exporter en format PDF, HTML ou toute sortie LaTeX une base donnée et la rendre accessible a des tiers (exemple d'application: base de publication d'un laboratoire, sur un thème). Évidemment, des liens peuvent être prévus ...

Interopérabilité

Les fichiers BibTeX contenant les fiches bibliographiques sont en ASCII, modifiables par tout éditeur de texte (par exemple: Vim - http://www.projet-plume.org/fiche/vim (X)Emacs, Kedit, ...).

Il existe de nombreux filtres d'entrée et de sortie (conversion) entre le format BibTeX et d'autres formats bibliographiques, dont EndNote, CiteMed, DublinCore XML, ...

Il faut cependant voir que la conversion peut être sérieusement limitée par la non-bijectivité entre les formats (des champs dans certains formats n'existent pas dans d'autres, ou bien sont distribués dans plusieurs champs).

Certains outils tel JabRef peuvent modifier les fichiers *bib qu'il lit, par exemple les règles (début et fin des champs, protection des majuscules, des espaces, des formules chimiques).

Contexte d'utilisation dans mon laboratoire/service

Pour compiler complètement un document en LaTeX avec calcul de toutes les valeurs variables, il faut trois passes du compilateur LaTeX. BibTeX s'insère simplement entre la première et la seconde passe, tout comme le générateur d'index makeindex, d'ailleurs. Bien évidemment, il faut indiquer dans le document maître en LaTeX que l'on va faire générer automatiquement la bibliographie via BibTeX en donnant dans le code LaTeX la liste des fichiers bibliographiques (les *.bib, via la commande \bibliography{bib1,bib2, ...})et le nom du fichier de style bibliographique (le fichier *.bst, via la commande \bibliographystyle{MonStyle}). (il est superflu d'indiquer les suffixes).

Comme les fichiers bibliographiques (*.bib) ne sont pas nécessairement dans le répertoire de travail, si leurs chemins ne sont pas pris en compte dans la configuration par défaut, il faudra les indiquer soit dans le fichier LaTeX (\bibliography{/mon/chemin/BibTeX/mybooks} avec mybooks un fichier de suffixe .bib et au format BibTeX), soit dans les variables d'environnement (BIBINPUTS), soit, pour certaines versions de BibTeX, lors de l'invocation du programme bibtex lui-même (bibtex --include-directory="F:\my bibliography folder").

On devra procéder de même pour le fichier de style (*.bst) via BSTINPUTS ou un chemin complet dans \bibliographystyle{}.

BibTeX est un outil logiciel très largement utilisé pour la préparation automatique de la bibliographie pour des articles, des thèses, des notes scientifiques. Il permet d'extraire un sous-ensemble de références bibliographiques d'une ou de plusieurs bases (qui sont en fait de simples fichiers ASCII dans un format trivial) pour faire deux actions simultanées dans un fichier LaTeX en cours de compilation :

  • remplir toutes les occurrences "\cite{}" par la bonne référence bibliographique dans le bon format du style de l'article ou du livre [i.e. quelque chose du genre : [1], (Bose & Einstein), (Bose & Einstein 1928), ...)]
  • rassembler les références dans le bon format correspondant au style de l'article, livre, ... pour générer un fichier *bbl qui, soit sera inséré automatiquement dans la version camera ready du papier (sortie DVI, PDF ou PS ...), soit pourra être inséré à la main dans le fichier LaTeX.

La plupart des journaux scientifiques travaillant avec LaTeX, soit indiquent un style bibliographique générique (une poignée est présente dans une distribution LaTeX de base), soit proposent un style bibliographique adapté (il en existe des centaines).

BibTeX est hautement recommandé pour les étudiants de thèse qui gèrent plusieurs centaines de références, corollairement, ils pourront recycler trivialement ces références pour les articles associés à cette thèse. L'idéal est de commencer à collecter les fiches bibliographiques au fur et à mesure de la recherche bibliographique, en n'hésitant pas à ajouter des commentaires, des liens Web, ... dans les fiches. Concrètement, ceci peut se faire en créant un champ (optionnel, non traite par les styles), par exemple nomme notes-perso="", ...

Via la commande \nocite{*}, il est trivial de générer, pour l'ensemble des entrées d'une base ou de plusieurs bases, une sortie de l'ensemble formatée (dvi, ps, pdf, HTML, ...) avec un style donné. Les doublons peuvent être gérés. Ceci peut être utile dans plusieurs contextes, dont la mise en ligne de bases, la préparation de liste de publication d'un chercheur ou d'un laboratoire ...

Limitations, difficultés, fonctionnalités importantes non couvertes

La principale limitation pour les utilisateurs occasionnels de BibTeX semble être de bien comprendre le mécanisme de génération du fichier "bbl" et, dans le cadre de la rédaction d'un article à plusieurs, d'utiliser les bons moyens pour échanger avec les collègues sans forcer à l'usage de BibTeX ...
Il s'agit là non pas d'une limitation de BibTex en lui-même mais des efforts acceptables par un ensemble de personnes, le maillon le moins curieux limitant l'usage de l'ensemble.

En mode avancé, une des carences de BibTeX semble bien être le choix de la dizaine de type de fiches pré-existants (dont le traitement est connu par la plupart des styles des grands journaux scientifiques). On citera : @article, @proceeding, @book, @inproceeding ... Autant ceci convient très bien pour la plupart des utilisateurs, autant cela peut être bloquant pour certains usages. Par exemple, il sera délicat de gérer une base bibliographique d'un laboratoire avec les catégories nécessaires pour un quadriennal CNRS ou Université sans certaines précautions : BibTeX n'a aucun moyen pour séparer les articles des journaux à referee des autres articles, ni les articles en Français de ceux en Anglais. Quelques "clefs" supplémentaires et quelques filtres à l'aide d'outils connexes (bibtool ...) permettent de contourner ceci sans trop de problème.

On peut mettre en commun certains champs (plusieurs articles d'une même conférence) via un mécanisme de références croisées (cross-ref). Quoique intellectuellement judicieux, je ne recommande pas l'usage extensif de ces cross-references pour des grosses bases à fichiers multiples et qui seraient scriptées, d'autant qu'il faut respecter un ordre. Ceci résiste mal aux fusions, tris, séparations ...

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

BibTeX semble être intégré dans toutes les version LaTeX depuis de nombreuses années. Il semble être figé dans une très vieille mouture (0.99c), sans déficience connue. Dans les système Unix et BSD (dont Linux et MacOS-X), son arborescence est généralement sous: /usr/share/texmf/bibtex/ qui doit contenir les fichiers de style bibliographique ainsi que l'outil de génération de nouveaux fichiers de style (makebst). Il a été noté que certaines versions de BibTeX, souvent liées a des éditeurs de solutions sous plateformes MS-Windows et Apple-Mac incluent des possibilités de configuration non disponible dans la version de référence.

Les fichiers de style bibliographique ont un suffixe en .bst. Les plus fréquents, généralement présent dans les installations LaTeX actuelles, sont : acm.bst, apalike.bst, ieeetr.bst, alpha.bst ...

Par contre, il est fréquent que les styles des journaux "métier" (Nature, Science, A&A, Spie, ...) ne soient pas mis dans les arborescences communes. Les administrateurs système et réseau ne savent pas nécessairement que cela existe, ni les besoins concrets des utilisateurs. Le résultat est souvent que des co-auteurs d'un article, travaillant sur le même ordinateur d'équipe, ont des fichiers de style d'un journal dans des versions différentes ...

Plates-formes

À notre connaissance, BibTeX est présent dans toutes les versions LaTeX récentes (moins de 20 ans d'âge). Et LaTeX est disponible sur presque toutes les plateformes !

Logiciels connexes

Il existe des dizaines d'outils plus ou moins intéressants, récents, maintenus, pertinents, couvrant des manques de BibTeX, comme de disposer d'un mode de test simple des champs des fiches (il est fréquent d'oublier une accolade ou une virgule, et ça peut faire mal, comme toujours dans l'univers LaTeX !)

  • JabRef - http://www.framasoft.net/article3111.html , interface graphique en Java permettant de gérer des bases bibliographique au format BibTeX, pour ceux qui aiment les clickodromes. JabRef présente l'avantage de proposer plusieurs filtres vers d'autres formats, tant en entrée qu'en sortie. Attention aux limites déjà mentionnées.
  • Bibtool - http://www.gerd-neugebauer.de/software/TeX/BibTool... , outil de tri et d'extraction en mode commande. Autant son apprentissage initial peut être délicat, d'autant qu'une typo très gênante a traîné pendant des années dans son fichier PDF d'aide et que sa documentation en ligne est trop succincte en exemples élémentaires, autant son usage pour gérer de grosses bases (plusieurs milliers d'entrées, plusieurs fichiers) en mode script est très efficace (extraction par clef, année, auteur, type ...)
  • (X)Emacs - http://www.gnu.org/software/emacs/, qui vient désormais le plus souvent avec des modes pré-intégrés pour LaTeX et BibTeX (syntax enligthning), propose un mode BibTeX avec de nombreuses options, les plus utilisés étant probablement la vérification syntaxique des fiches et le template pour les différentes fiches possibles (@author ...). Ces templates indiquent les champs obligatoires et optionnels.
  • BibDesk - http://bibdesk.sourceforge.net/ est un gestionnaire graphique de bases bibliographiques écrit spécifiquement pour MacOS.
  • PyBliographer - http://www.pybliographer.org/ est un gestionnaire graphique de bases bibliographiques écrit en Python qui propose également un accès facile aux bases bibliographiques aux programmeurs Python.
  • CMFBibliographyAT - http://plone.org/products/cmfbibliographyat et ATBiblioList - http://plone.org/products/atbibliolist permettent d’intégrer des bases bibliographiques en format BibTeX dans un serveur Plone, ce qui est une bonne façon de gérer et en même temps publier la liste de publications d’une équipe ou d’un laboratoire.
Autres logiciels aux fonctionnalités équivalentes

Il existe des logiciels payants et non libres dans le monde Microsoft qui ont des usages proches et qui utilisent d'autres formats bibliographiques comparables (EndNote, CiteMed, DublinCore XML, ...).

En astronomie et les domaines connexes, toutes les revues de rang A proposent un style LaTeX et un style bibliographique (*.bst) associé. Je ne connais pas de collègues qui utilisent autre chose que BibTeX pour leurs bases bibliographiques en vue de publication.

Environnement de développement
Type de structure associée au développement

BibTeX semble être figé vers 1988, en version 0.99c, mais son code source est disponible, et il est très simple.

Venant avec BibTeX, il existe un outil (makebst) qui permet de créer un nouveau fichier de style bibliographique (*.bst) en précisant, une à une, les règles voulues (nombre d'auteurs cités avant le et al., quel champ en gras, titre ou pas, tri alphabétique ou autre, ...). Des règles de typographie associées aux langues (de, fr, ...) sont incluses. Il faut bien voir que cette véritable usine à gaz ne doit pas être utilisée pour espérer contourner les choix stylistiques ou les supposées déficiences et limitations du style du journal dans lequel vous espérer publier ! Mais ceci peut être utilisé pour créer son style bibliographique pour sa thèse.

Eléments de pérennité

BibTeX est très largement utilisé, sans déficience connue (au sens de bug, je ne parle pas ici d'erreur de conception). C'est le format proposé par plusieurs bases bibliographiques en ligne, ouvertes ou fermées, dont ADS - http://cdsads.u-strasbg.fr/abstract_service.html
La vitalité dans les extensions (packages permettant de citer l'année au lieu de l'auteur et autres subtilités) et les outils périphériques doivent rassurer par rapport au côté figé de l'outil initial. Malheureusement, la plupart des grands journaux de rang A sont frileux sur les évolutions des outils périphériques.

Une version UTF-8 serait disponible ... Actuellement, il est nécessaire de coder les accents et autres diacritiques par les commandes classiques LaTeX () et de protéger avec des " et {}.

Références d'utilisateurs institutionnels

On pourra voir avec intérêt les Institutionnels référencés ici : http://en.wikipedia.org/wiki/BibTeX#Uses

La situation est très contrastée. Alors que dans certains domaines tels l'Astronomie les journaux scientifiques ne fournissent des styles (templates pour générer le camera ready ou le PDF) qu'en LaTeX, et les styles BibTeX associés, d’autres domaines, tel la Biologie, à l’inverse, fournissent plutôt des templates en MS-Word même si les exceptions sont nombreuses - http://www.ccrnp.ncifcrf.gov/~toms/latex.html#tex-....
En Mathématique et en Physique, la situation est plus ouverte, de très nombreux journaux proposant des styles LaTeX/BibTeX.

Il n'est malheureusement pas rare que des fichiers d'alias (telles les abréviations des noms des journaux pour un style donne ou pour une règle d'écriture donnée d'un *bib) ne soient pas directement associés aux bib, au bst, ou aux sorties d'outils tels ADS. (exemple: \ao pour Applied Optics)

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Il existe de très nombreuses ressources en ligne, de qualité et pertinence variées. Un moteur de recherche invoqué avec habilité doit permettre de répondre aux problèmes classiques.

Le cœur du logiciel est fiable. Les outils connexes sont de qualités inégales. Il ne faut pas oublier qu'on parle d'un logiciel qui existe depuis plus de 5 lustres et est figé depuis 4 lustres ! Certains codes associes sortent directement de version donnée d'Unix (il y a un cas célèbre d'un outil lié a BibTeX, codé en C, ou il faut aller changer a la main une ligne dans le code source, posé sur un des premiers serveurs WEB ...) sans prévoir qu'ils seraient toujours utilisés aujourd'hui, en UTF8, avec un environnement pas nécessairement anglais (accents, option de tri, shells en obsolescence ...).

Documentation utilisateur

On se reportera aussi avec profit à l'annexe consacrée à BibTeX dans le livre de Leslie Lamport.

Divers (astuces, actualités, sécurité)

Dans de nombreux domaines scientifiques, des bases bibliographiques en ligne permettent de rechercher des articles à partir de mot-clefs. Dans certains cas, les fiches bibliographiques peuvent être exportées dans divers formats, dont BibTeX. Ceci permet un peuplement rapide d'une base locale et un ré-usage personnel rapide, sous réserve de bien s'assurer que le format généré est standard et que les fichiers connexes (par exemple contenant les alias des journaux) sont bien présents ... Dans certains cas, il existe même des scripts de requête sur des bases distantes pour extraire automatiquement les fiches bibliographiques à partir de mots clef (nom des auteurs, filtre sur les années, journaux, ...). À part le problème des homonymes, ceci peut aider à générer des bibliographies de laboratoires, à faire des statistiques, des taux de citation ...

Certaines équipes de laboratoire mutualisent des fichiers BibTeX. Des notices bibliographiques peuvent être ajoutées a chaque entrée, directement dans les fichiers *.bib.

Le format BibTeX est naturellement extensible, en ajoutant des champs non définis dans les types d'entrées classiques (articles, book, ...). Les champs non reconnus dans les entrées sont simplement ignorés a la compilation LaTeX. Des ajouts fréquemment rencontrés sont les liens (URL), le DOI, des notes. Malheureusement, la difficulté vient du fait qu'il faut gérer ces ajouts, en ajoutant pour chaque type de fiche, et pour tout style utilisé, des règles de transformation ... Ce n'est pas si difficile, mais les personnes compétentes sont plutôt rares, et la pérennité en souffre ...

Contributions

À titre personnel, je pense que le meilleur service à rendre à BibTeX est d'aider avec abnégation les collègues qui utilisent LaTeX, par exemple en posant les fichiers de style là ou il faut et en le faisant savoir, en étant disponible pour répondre aux questions, en glissant tel ou tel conseil, avec espoir du côté des étudiants et des thésitifs, sans réel espoir de convaincre les chercheurs confirmés qui ne voient pas le gain de temps global et la démarche qualité mais surtout la petite perte de temps initiale, et qui se décourageront parce que le fichier d'alias n'est pas la, ou que telle formule chimique a été cassée en sortie d'ADS ... Bien maîtriser l'inclusion du fichier bbl dans le document source (*tex) aide à encourager les plus téméraires des collègues dans leurs premiers essais, le grief fréquent étant de ne pas savoir comment transmettre le tout aux co-auteurs distants ou à l'éditeur -qui ne veut bien sûr qu'un seul fichier !-.

Il ne faut pas avoir peur de répéter qu'un bon ensemble de fichiers BibTeX pourra être recyclé pour tout article, note, mémoire, et sera ré-employable après la thèse, ou pour le rapport du stagiaire ... Les entrées "en trop" seront simplement ignorées.

Commentaires

clefs multiples pour une même entrée

Il est possible d'avoir plusieurs clefs (utilisées dans \cite{LaClef}) pour une même entrée, en utilisant crossref (http://newsgroups.derkeiler.com/Archive/Comp/comp....).

Example:

La clef mnémonique (on peut en avoir plusieurs). Comme toujours avec crossref, il faut s'assurer que sa définition précède son usage.

@ARTICLE{Einstein1906,
crossref = "1906AnP...324..371E",
}

La clef donnée par ADS selon le code bibliographique (année, journal, volume, page ...)

@ARTICLE{1906AnP...324..371E,
author = {{Einstein}, A.},
title = "{Zur Theorie der Brownschen Bewegung}",
journal = {Annalen der Physik},
year = 1906,
volume = 324,
pages = {371-381},
doi = {10.1002/andp.19063240208},
adsurl = {http://adsabs.harvard.edu/abs/1906AnP...324..371E},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}