BibTeX et LaTeX

Alain Coulais

alain.coulais@obspm.fr

LERMA

poste 21.45

Il existe une liste latex@opserv.obspm.fr,

pensez à vous y inscrire !

BibTeX et LaTeX

Une brève histoire de LaTeX et BibTeX

Qu'est que BibTeX ?

La base bibliographique

Le style bibliographique

XEmacs et les fichiers BibTeX

Utiliser A&A, ApJ, AP et NatBib

Relation avec ADS

Relation avec du XML ou EndNote

Makeindex

Le TP

Une brève histoire de LaTeX et BibTeX

TeX, PlainTeX, LaTeX, LaTeX2e

A l'origine fut créé TeX, vers 1978 (Knuth 1984)

Puis vient LaTeX (Lamport 1985)

Macros basées sur TeX et PlainTeX de Knuth

Et enfin LaTeX2e (Lamport, Mittelbach et al. 1994)

BibTeX

BibTeX (1988) en version 0.99b

Oren Patashnik

BibTeXing (8 Feb. 1988)

Designing BibTeX Styles (8 Feb. 1988)

En 2005, on est à la version 0.99c

La bibliographie statique

Dans LaTeX, il est déjà possible de gérer une bibliographie statique. C'est basé sur les mêmes mécanismes que ceux des références croisées, du calcul du numéro de Section et Sous_section, des numéro de page ...

Mécanisme \cite{clef} dans le texte (clef ou label)

\begin{thebibliography}

\bibitem[nom du label]{clef} la référence

\end{thebibliography}

Dans LaTeX, il est déjà possible d'appliquer un style pour le label et de changer le nom des labels (ce qui va se mettre à la place de «\cite{clef}» dans le texte après compilation. Exemples: [1], (Einstein 1905), [CMA95], ...)

Les limitations d'une bibliographie statique

Limitations:

C'est statique

Si on rajoute une clef, il faut ajouter à la main la référence (mais on sait quand même qu'il manque un \bibitem !)

Si on retire une clef, il faut retirer à la main la référence (mais on sait quand même qu'il y a des \bibitem de trop !)

L'ordre dans la bibliographie est figé (si on change de style, il faut refaire à la main le tri dans la biblio !)

C'est interne au document

Ce n'est pas facilement recyclable, en particulier si le style change

Rendre dynamique la gestion de la bibliographie

Comment faire pour recycler, de publication en publication, ces références qu'on accumule et qui, typo après typo, recyclage avec changement de style, ont fâcheuse tendance à diverger ?

En fait, ces références pourraient être rangées dans une base de données, et, à la compilation du document, on ferait une requête dans la base pour extraire les références de l'article. Puis serait appliqué le style de la bibliographie du document.

Séparation du Fond (la base biblio) de la Forme (le style biblio)

La base bibliographique

Une base bibliographique est un ensemble de fiches élémentaires (articles, thèses, livres, comptes rendus de colloques, ...).

Ces fiches contiennent un certain nombre de champs (auteurs, titre, année, éditeur, code ISBN, résumé, ...), obligatoires, optionnels, superfétatoires.

Ces fiches élémentaires peuvent être stockées toutes ensembles (un seul fichier) ou bien dans plusieurs collections de fiches (différents fichiers).

Ces fiches peuvent être re-employées quel que soit le type du document, sans avoir besoin d'être modifiées. Ces fiches peuvent être mises en relation, quelque soit le type de document en cours de rédaction, avec les clefs et le style du document. (Pour un style donné, tout type de fiches doit pouvoir être traité).

La base bibliographique

Lors de la compilation du document, on doit pouvoir savoir:

S'il y a des fiches manquantes (des clefs utilisées dans le document pour lesquelles on ne trouve pas de fiches)

S'il y a des fiches éronnées (champs manquants pour le style donné, typo, champs redondants, clefs multiples, ...)

Si le style ne sait gérer pas un ou des types de fiches

Ces informations seront dans le fichier .blg (Bib Log) après exécution de BibTeX

Le Style bibliographique

Le style permet, lors de la requête sur la base bibliographique, de transformer les données brutes en données adaptées aux styles (de la biblio et du document)

Le style est disjoint du contenu de la base bibliographique

Il faut prévoir des règles de transformation pour chaque type de fiche (article, thèse, livre, ...)

Il existe des dizaines de styles, généralement associés à des revues

Makebst

Les fichiers de style BibTeX .bst sont des fichiers ASCII qui constituent un pseudo code qui est exécuté par le programme BibTeX (cf articles de O. Patashnik).

A partir d'un fichier .bst donné, il est donc aisé de modifier les effets (nombre d'auteurs cités, francisation, mois abrégés ou non, gras, italique ... ) Exemple

Il existe même un générateur de fichier de style : makebst (Quelques précisions techniques, une documentation)

Cependant:

Il existe déjà des dizaines de styles (exemple, autre exemple)

Les revues de rang A en fournissent un ...

Conventions de nommage des fichiers

Nous sommes en LaTeX2e !

Dans le monde civilisé (Unix, Linux, BSD, MaxOS-X, ...), la casse a de l'importance (TOTO.BIB ≠ Toto.bib ≠ toto.bib)

Autour de BibTeX, les conventions sont les suivantes:

Les fichier LaTeX sont de suffixe .tex

Les fichiers de style LaTeX sont de suffixe .sty

Les fichiers de style BibTeX sont d'extension .bst

Les fichiers contenants les fiches bibliographiques sont d'extension .bib

Les fichiers temporaires sont (non exhaustifs) .aux, .log, .bbl, .blg, ...

La compilation dans l'univers TeX

Fichier .sty

Fichier .tex

Fichier .aux

Fichier .bbl

FichierS .bib

Compilation LaTeX

Compilation LaTeX

Fichier .bst

Compilation BibTeX

Compilation LaTeX

Compilation LaTeX

Fichier .dvi

Configuration de l'environnement

Hypothèses

Sous Unix ou Linux

Sous shell «sh» ou «bash»

Une version OK de LaTeX/BibTeX (genre TeTeX)

Par défaut, LaTeX et BibTeX cherchent les fichiers de style et les fichiers bibliographiques:

Dans le répertoire courant

Dans l'arborescence de LaTeX (/usr/share/texmf/)

En modifiant (par exemple dans le fichier .bashrc) les variables $TEXINPUTS, $BSTINPUTS et $BIBINPUTS, on peut ajouter n'importe quel chemin de recherche pour les fichiers .tex, .bst et .bib (resp.)

XEmacs et les fichiers BibTeX

Dans XEmacs et dans Emacs, on a des modes de «syntax enlightning» aussi bien pour les fichiers LaTeX que pour les fichiers BibTeX.

Ceci existe dans d'autres environnements, et dans des outils spécifiques (Lyx, SciWord, JabRef, ...)

Dans (X)emacs, pour BibTeX, on a des «templates» et des outils de vérification de la consistance du fichier (la syntaxe est-elle correcte ? a-t-on rempli tous les champs obligatoires ?)

L'avantage à ne pas négliger de ces outils est que cela réduit les erreurs de syntaxe ('',(,}, ...)

Utiliser A&A, ApJ, AP et NatBib

La plupart des revues d'Astro de rang A fournissent:

Un style général (.sty)

Un style bibliographique (.bst)

Un certain nombre de revues de rang A fournissent en plus des extensions au \cite{} de base telles \citet{}, \citep{} Exemples: A&A, ApJ et AJ

Lorsque que l'on soumet l'article, il suffit de fournir 2 fichiers: le fichier .tex et le fichier .bbl, qui résulte de:

L'extraction par BibTeX dans sa base (collection de N fichiers .bib) des fiches citées dans l'article par des \cite

La conversion de ces fiches dans le style de la revue

Il peut y avoir 1000 fiches dans la base (fichiers .bib) mais seulement 3 \bibitem dans le fichier .bbl

Relation avec ADS

Vous connaissez tous ADS !

Mais savez-vous que vous pouvez exporter dans plusieurs formats (XML, BibTeX, EndNote, ...) toute fiche que vous sélectionneriez ? Exemples

Grâce aux scripts de G. Mamon (IAP), il est même possible de faire ces requêtes directement en mode commande, et de scripter tout cela.

Attention : Il y a des typo dans ADS, en particulier pour les noms et les prénoms des auteurs. Je vous recommande de vérifier les votres, et de leur soumettre, à l'aide de leur formulaire, vos éventuelles corrections.

Relation avec du XML ou EndNote

Il existe des outils de passage entre différents formats «classiques» comme BibTeX, EndNote, ProCite, ...

D'un point de vue base de données, ceci ne présente pas de grande difficulté

Un certain nombre de formats «modernes», souvent basés sur du XML (3 différents dans ADS)

Le CNRS propose aussi quelque chose (un format XML), mais on peut encore vivre sans ...

Ce qui est important, c'est qu'il est trivial de convertir

Toute base (BibTeX, EndNote, XML) vers une autre base

Transformer une base vers un document formaté (Tex, PS, PDF, HTLM, XML, Doc, OOo) avec des règles de transformation

Makeindex

Ceci ne concerne pas directement BibTeX

Avec LaTeX vient un programme de génération automatique d'index (liste de mots clefs et pages ou se trouvent ces mots-clefs)

Après une première compilation de LaTeX, si la commande \printindex est présente, un fichier .idx est créé

Il suffit alors de faire makeindex sur le fichier .idx pour générer un fichier .ind

Les 2 dernières compilation de LaTeX géreront alors ça

De même, le style (fichier .ist) de l'index est modifiable (simple colonne, double colonne, index multiple thématique, niveau d'indexation, ...)

Exemple d'une compilation LaTeX

Dans un fichier exécutable (G3tex), on peut écrire la succession de commandes. L'appel se ferait par G3tex nom_fichier_travail (sans extension .tex, ceci (présence du suffixe .tex) serait gérable par un basename ...)

latex $1

\rm $1.bbl

\rm $1.blg

BibTeX $1

makeindex $1.idx

latex $1

latex $1

dvips -D 300 -o $1.ps $1.dvi

ghostview -a4 -magstep -1 $1.ps &

Le TP (I)

0/ Connectez-vous; vérifiez le shell (echo $SHELL); vérifiez les chemins ($PATH ou $path); vérifiez la disponibilité d'un navigateur, du réseau (ADS), d'un éditeur (merci de privilégier Emacs ou XEmacs), des exécutables nécessaires : latex, BibTeX, xdvi, (dvips ou dvipdf), (gv ou xpdf ou acroread ou ghostview ...). Envisagez d'écrire un mini-script de compilation automatique (gain de temps)

1/ Avec XEmacs, en vous aidant des macros spécifique à BibTeX générez au moins une entrée @Article ou @InProceeding. Compilez-la dans un fichier LaTeX. Essayer quelques styles (alpha.bst, unsort.bst, ...). Affichez la sortie au format .dvi, puis au format .ps ou .pdf.

Le TP (II)

2/ Dans ADS, récupérez votre liste de publication (ou de toute personne de votre choix) au format BibTeX. (pour les débutants sur ADS, entraînez vous à filtrer sur le 1er nom (^nom), sur les articles à referee, sur une période limitée, ...)

3/ Transformez cette liste de fiches en une liste de citations, par exemple au style A&A.(Plusieurs problèmes devraient se poser !). Mais quelle est donc la commande magique qui permet d'extraire toutes les fiches d'une base?

4/ A partir du fichier BibTeX fourni (LERMA.bib), à l'aide de bibtool, extrayez toutes les fiches correspondants à une publication dans A&A pour l'année 2003. ATTENTION : la documentation de bibtool contient des typos !

4bis/ Refaire le 4 avec JAbRef.jar

Le TP (III)

5/ Récupérez les scripts de G. Mamon à l'IAP. Installez-les sur votre compte. L'un d'eux permet de faire une requête sur ADS afin de récupérer, dans un interval donne, l'ensemble des fiches BibTeX des publications pour une personne (nom; première lettre du prénom). Appliquez cela à la personne de votre choix. (Commencez sur une personne avec peu de publications, sinon, c'est long !)

6/ Taux de citation et autres fonctionnalités de ces scripts

7/ En recherchant dans les CTAN, récupérer la dernière version de MakeBST. Essayer de créer un style BST respectant les règles de typo française.

8/ Essayer de générer un petit index dans un document

2005-03-15T22:45:04