BibTeX
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 ...
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).
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 ...
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 ...
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}
}