tuteurs.ens.fr/logiciels/latex/bibtex.tml

270 lines
11 KiB
Text
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
"tuteurs://DTD/tml.dtd">
<html>
<head>
<title>Bibliographie</title>
</head>
<body>
<h1>Faire une bibliographie avec BibTeX</h1>
<h2>Pourquoi BibTeX ?</h2>
<p>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...</p>
<p>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.</p>
<p>
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.
</p>
<h2>Le principe</h2>
<p>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
<code>.bib</code>. Elle peut être commune à plusieurs documents LaTeX,
comme on le verra plus tard.</p>
<p>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
<code>.bib</code>, par la commande <code>\cite{}</code>. Lors de la
compilation du fichier par LaTeX, la liste des références demandées
s'inscrit alors dans le fichier <code>.aux</code> 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 <code>.bbl</code>,
qui sera, lui, spécifique au document LaTeX tel qu'on vient de le
compiler.</p>
<p>Enfin, une nouvelle compilation via LaTeX sera nécessaire pour
afficher correctement la bibliographie ainsi que les renvois du
texte.</p>
<h2>En pratique</h2>
<h3>Construire la base de données</h3>
<h4>Exemple</h4>
<p>Voici un extrait de base de données :</p>
<pre>
@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}
}
</pre>
<p>Toute entrée commence par un <code>@</code>, suivi par un descripteur
(imposé par le type de document <code>article</code>, <code>book</code>,
<code>inproceedings</code>, 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. <em>Les
champs sont séparés par des virgules,</em> l'oubli de celles ci étant
vraisemblablement la source d'erreurs la plus courante !</p>
<p><em>A priori</em>, 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.</p>
<p>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.</p>
<p>Sauvegardez le fichier sous un nom se terminant par
<code>.bib</code></p>
<h4>Liste des types de document et des champs disponibles</h4>
<p>
La table suivante résume les types et les champs couramment connus.
</p>
<table>
<thead>
<tr>
<td>
Types de documents
</td>
<td>
Champs
</td>
</tr>
</thead>
<tbody>
<tr><td><code>article</code></td> <td><code>address</code></td></tr>
<tr><td><code>book</code></td> <td><code>annote</code></td></tr>
<tr><td><code>booklet</code></td> <td><code>author</code></td></tr>
<tr><td><code>conference</code></td> <td><code>booktitle</code></td></tr>
<tr><td><code>inbook</code></td> <td><code>chapter</code></td></tr>
<tr><td><code>incollection</code></td> <td><code>crossref</code></td></tr>
<tr><td><code>inproceedings</code></td> <td><code>edition</code></td></tr>
<tr><td><code>manual</code></td> <td><code>editor</code></td></tr>
<tr><td><code>mastersthesis</code></td> <td><code>howpublished</code></td></tr>
<tr><td><code>misc</code></td> <td><code>institution</code></td></tr>
<tr><td><code>phdthesis</code></td> <td><code>journal</code></td></tr>
<tr><td><code>proceedings</code></td> <td><code>month</code></td></tr>
<tr><td><code>techreport</code></td> <td><code>note</code></td></tr>
<tr><td><code>unpublished</code></td> <td><code>number</code></td></tr>
<tr><td></td> <td><code>organization</code></td></tr>
<tr><td></td> <td><code>pages</code></td></tr>
<tr><td></td> <td><code>publisher</code></td></tr>
<tr><td></td> <td><code>school</code></td></tr>
<tr><td></td> <td><code>series</code></td></tr>
<tr><td></td> <td><code>title</code></td></tr>
<tr><td></td> <td><code>type</code></td></tr>
<tr><td></td> <td><code>volume</code></td></tr>
<tr><td></td> <td><code>year</code></td></tr>
</tbody>
</table>
<p>
<code>author</code> est le champ utilisé pour saisir la liste des
auteurs sous la forme <code><var>prénom</var> <var>nom</var></code> ou
<code><var>nom</var>, <var>prénom</var></code>.
</p>
<div class="attention">
Les auteurs doivent être séparés par <code>and</code> et surtout pas
une virgule.
</div>
<p>
Pour les articles (type <code>article</code>), les champs importants
sont <code>author</code>, <code>title</code>, <code>journal</code>,
<code>year</code>, <code>pages</code> (les champs <code>volume</code> et
<code>number</code> peuvent eux aussi servir). Pour les livres (type
<code>book</code>) on prendra garde à donner la maison d'édition à
l'aide du champ <code>publisher</code> et non <code>editor</code> (les
éditeurs d'un ouvrage collectif) ou <code>edition</code> (le numéro de
réédition). L'adresse de la maison d'édition est donnée par
<code>address</code>. Le type <code>misc</code> 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 <code>howpublished</code> soit une
<code>note</code> explicative. <code>inbook</code> et les autres types
dont le nom commence par <code>in</code> désignent des chapitres (le
numéro du chapitre sera précisé via le champ <code>chapter</code> et les
pages concernées par <code>pages</code>) ou des paragraphes dans un
livre (le titre pourra être précisé avec <code>booktitle</code>), etc.
Le champ <code>crossref</code> permet de faire référence audit livre
s'il est présent lui aussi dans la bibliographie. Les documents
académiques (<code>mastersthesis</code> et <code>phdthesis</code>)
pourront intégrer <code>school</code> ou <code>institution</code> pour
renseigner l'université.
</p>
<h3>Afficher la biblio dans le document LaTeX</h3>
<p>À l'emplacement prévu dans le fichier .tex, insérez les lignes :</p>
<pre>
\bibliographystyle{plain}
\bibliography{<var>mon_fichier</var>}
</pre>
<p><code>\bibliographystyle</code> permet de choisir le style de
bibliographie.</p>
<p><code>\bibliography</code> permet d'indiquer quelle base de données
doit être utilisée. On indique le nom du fichier, sans l'extension
<code>.bib</code></p>
<h3>Créer une entrée « Bibliographie » dans la table des matières</h3>
<p>
Utilisez le package <code>tocbibind</code>, 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
<code>nottoc</code>, <code>notlof</code> et <code>notlot</code>.
</p>
<pre>
\usepackage[nottoc, notlof, notlot]{tocbibind}
</pre>
<h3>Citer une référence dans le texte</h3>
<p>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</p>
<pre>\cite{<var>label</var>}</pre>
<p class="continue">où <var>label</var> est l'étiquette attribuée lors de
la construction de la base de données dans le fichier <tt>.bib</tt>. Dans le style <code>plain</code>,
cette commande apparaît alors dans le fichier <code>.dvi</code> sous la
forme <code>[<var>X</var>]</code>, où <var>X</var> est le numéro utilisé dans la bibliographie,
ou un <b>???</b> si l'étiquette est erronée, ou qu'il manque une
compilation de LaTeX ou de BibTeX.</p>
<p>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 :</p>
<pre>\nocite{<var>label</var>}</pre>
<p>
Un cas particulier est <code>\nocite{*}</code> qui dit à BibTeX
d'inclure dans la bibliographie toutes les références, citées dans le
corps du texte ou non.
</p>
<h3>Compilation(s)</h3>
<p>Il ne reste plus qu'à compiler le tout :</p>
<pre>
latex <var>mon_fichier</var>.tex
bibtex <var>mon_fichier</var>
latex <var>mon_fichier</var>.tex
</pre>
<div class="attention">Ce n'est ni le fichier <code>.bib</code> ni
le fichier <code>.tex</code> qu'on indique à BibTeX, mais le fichier
<code>.aux</code> produit dans la première compilation du fichier
<code>.tex</code>. Cependant, comme l'indique la commande ci-dessus,
cela fonctionne quand même si on ne précise pas l'extension.</div>
<div class="metainformation"> Auteur : Frédéric Meynadier (2001, 2005).
Dernière modification le <date value="$Date: 2008-02-14 15:17:08 $" />
par Bouya Ismael </div>
</body> </html>