Citations et bibliographie en LaTeX

De La Mouche VII
Aller à la navigationAller à la recherche


Comment citer et bibilographier des références exactement selon le format que l'on veut (ou que l'on se trouve imposé par des conventions bibliographiques dont la simplicité se trouve comprise entre celle de la politique à Byzance et la mise au point d'une fusée spatiale).

Outils de base

Voir aussi l'Aide-mémoire LaTeX.

\cite (citations, références bibliographiques)

Pour épargner une lecture inutile aux plus paresseux, je vous le dis en vérité, mes frères, le seul véritable salut est en l'utilisation de jurabib. Au sujet d'icelle, voir infra.

En sciences humaines, on cite (presque) toujours la page précise du livre ou article à laquelle on se réfère. Pour cela, il suffit d'utiliser l'argument [numéro de page ou autre précision] de la commande \cite. Il est donc inutile, contrairement à ce qu'on peut lire dans certains manuels, de définir une entrée bibliographique séparée (de type @inBook) pour chaque page que l'on veut citer (et heureusement...).

Exemples :

Les mouches sont des insectes fort énervants\cite[p.~123]{Albert99}.
Elles volent\cite[chapitre~5]{delaRenaudière04} partout.

(NB. Le tilde est là pour faire une espace insécable, ce qui est mieux mais pas tout à fait obligatoire)

Ce qui permet d'obtenir (si on utilise, par exemple, un style de type dit "author-date") :

Les mouches sont des insectes fort énervants[ALBERT 1999, p. 123].
Elles volent[DE LA RENAUDIÈRE 2004, chapitre 5] partout.

L'argument, en soi, ne fait qu'ajouter une virgule et une espace après la référence, après quoi il affiche le contenu qu'on lui a fourni, quel qu'il soit. On peut donc aussi faire, si on est par exemple un sale historien :

En l'an 175 avant Jésus-Christ, les mouches dévastèrent Rome\cite[IV, 23, 5]{Tite-Live}

Pour préciser que l'on cite Tite-Live, livre IV, paragraphe 23, ligne 5, comme suit :

En l'an 175 avant Jésus-Christ, les mouches dévastèrent Rome[TITE-LIVE, IV, 23, 5]

On peut pousser le vice jusqu'à faire des références dans la référence, si, si (mais alors, gare à vos [] et {}) :

Selon une théorie récente, les mouches auraient été créées par Gzénou pour asservir
l'humanité\cite[remis en cause par \cite{Anonymous-08}]{Habburd-05}.

Qui donnera :

Selon une théorie récente, les mouches auraient été créées par Gzénou pour asservir
l'humanité[HABBURD 2005, remis en cause par [ANONYMOUS 2008]].

Cependant, même maniée avec autant de dextérité, la commande \cite correspond assez mal à ce qu'on a l'habitude de voir en sciences humaines. Il vaut donc probablement mieux vous orienter vers un package ad hoc (voir infra).

À noter que certaines commandes pour faire des citations de certains packages (comme \footcite dans l'excellent Jurabib, que je ne saurais trop recommander) ont un argument préformaté (mais modifiable par des options dans le cas de Jurabib, cf. le manuel de ladite extension), de telle sorte qu'entrer

\footcite[123]{Albert99}

donnera automatiquement (et en note infrapaginale, comme il convient) :

Jean-Roger Albert, Ces sales mouches, Plon, Paris, 1999, p. 123.

(modulo le format de biblio utilisé).

jurabib

Les formats bibliographiques de base de LaTeX et les commandes associées (\cite surtout) ne conviennent guère à ce qu'on a l'habitude de voir en sciences humaines en France, à savoir des références bibliographiques précises (à la page citée près) données en notes infrapaginales (et non pas des références globales à un titre du type [DUPONT 1999] directement dans le texte, qui correspondent plutôt à un usage anglo-saxon).

Pour l'instant, ce que j'ai trouvé de mieux est le package Jurabib. Je l'utilise configuré comme suit dans le préambule (cette configuration sera probablement modifiée à l'avenir) :

\usepackage{jurabib}
\bibliographystyle{jurabib}

\jurabibsetup{%
authorformat=smallcaps,%
titleformat=italic,%
titleformat=commasep,%
commabeforerest,%
ibidem=strict,%
citefull=first,%
opcit,%
lookat,%
authorformat=and,%
pages=format,%
idem,
dotafter=bibentry,%
}
\renewcommand{\biblnfont}{\textsc}
\renewcommand{\bibfnfont}{\textnormal}
\renewcommand{\bibtfont}{\textit}
\renewcommand{\bibansep}{, }
\renewcommand{\bibatsep}{.}
\renewcommand{\bibbdsep}{,}
\renewcommand{\bibbtsep}{. In }
\AddTo\bibsenglish{%
\def\jbpagename{p.}%
\def\jbpagesname{pp.}%
}

Globalement, le document à consulter (très clair, très bon) est la documentation de Jurabib (sections 6.1, 6.2 et 9), même si certaines options n'y sont pas documentées (le pal ! le pal !). C'est de ce magnifique fichier que viennent les options ci-dessus (commentées ci-dessous), à consulter absolument si vous voulez les modifier à votre goût. Beaucoup d'options existent et beaucoup de choses sont donc possibles, quoique pas absolument tout.

Version commentée de ce qui a été indiqué ci-dessus :

\usepackage{jurabib}
\bibliographystyle{jurabib}

\jurabibsetup{%                        
authorformat=smallcaps,%               < Nom de l'auteur en petites capitales (dans les citations)
titleformat=italic,%                   < Titre en italique (dans les citations)
titleformat=commasep,%                 < Virgule après le titre (dans les citations)
commabeforerest,%                      < Virgule avant les numéros de pages (dans les citations)
ibidem=strict,%                        < Usage d'ibid. uniquement si un même ouvrage est cité dans deux notes immédiatement consécutives
citefull=first,%                       < Citation complète (éditeur, adresse, date etc.) au premier usage d'un ouvrage
opcit,%                                < Usage d'op. cit. aux usages suivants d'un ouvrage
lookat,%                               < Pour chaque op. cit., mentionne le numéro de page et de note où se trouve la citation complète
authorformat=and,%                     < Utilise « and » (« et » si \usepackage[francais]{babel} est utilisé) pour séparer deux auteurs
pages=format,%                         < Ajoute automatiquement un « p. » lorsque l'argument de \cite ou \footcite est utilisé (cf. ci-dessus)
idem,                                  < Utilise idem si le même auteur (mais pas le même ouvrage) est cité dans deux notes consécutives
dotafter=bibentry,%                    < Ajoute un point après chaque entrée dans la bibliographie
}
\renewcommand{\biblnfont}{\textsc}     < Met les noms de famille des auteurs en petites capitales (dans la bibliographie)
\renewcommand{\bibfnfont}{\textnormal} < Met les prénoms des auteurs en fonte normale (dans la bibliographie)
\renewcommand{\bibtfont}{\textit}      < Met les titres en italiques (dans la bibliographie)
\renewcommand{\bibansep}{, }           < Met une virgule+espace entre le nom d'auteur et le titre (dans la bibliographie)
\renewcommand{\bibatsep}{.}            < Met un point après le titre (dans la bibliographie)
\renewcommand{\bibbdsep}{,}            < Met une virgule avant la date (dans la bibliographie)
\renewcommand{\bibbtsep}{. In }        < Ajoute point, espace, « In », espace avant le titre de l'ouvrage pour les citations @INBOOK (cf. infra)
\AddTo\bibsenglish{%                   < pages=format (ci-dessus) est censé utiliser automatiquement « pp. » si une suite de pages est fournie en
\def\jbpagename{p.}%                   < argument (e.g. \footcite[40--43]{Duschmol} ; notez le double tiret). Chez moi, cela ne marche pas ; ceci
\def\jbpagesname{pp.}%                 < force l'usage de « pp. » si plusieurs pages sont indiquées, tout en conservant « p. » pour une page seule.
}

Cette dernière modification peut aussi se faire de manière plus permanente en modifiant le fichier /usr/share/texmf-texlive/tex/latex/jurabib/frjbbib.ldf (voir ci-dessous).

Ensuite, il suffit d'utiliser la commande \footcite[numéro de page si nécessaire]{clef de la référence} pour obtenir de belles notes bibliographiques en bas de page.


Stephen, pourquoi m'as-tu caché que tu ne savais pas faire @INBOOK ?

Il y a une chose (peut-être plus mais au moins une) que jurabib ne fait pas bien : les citations de type @INBOOK. Vous savez, quand il vous faut citer un chapitre écrit par un type précis au sein d'une œuvre collective (souvent dirigée par un autre type). Pour une raison inconnue, jurabib oublie soudain de mettre le titre de l'ouvrage en italique, ce qui est la norme, et pas moyen, non plus, de mettre le titre du chapitre ou de la contribution entre guillemets comme c'est souvent l'usage. Les options, nombreuses pour les bons vieux @BOOK, se font ici misérablement rares. Consternation.

Bon, déjà, n'oubliez pas \renewcommand{\bibbtsep}{. In } dans le préambule, qui permet de mettre un point et un « In » entre le titre du chapitre cité et le titre général de l'ouvrage. Ensuite, place à des hacks sales (si quelqu'un a une meilleure solution...).

Il suffit de formater votre citation @INBOOK comme suit :

@INBOOK{mouchesH4,
  chapter = {« Les mouches à Paris sous le règne d'Henri IV  ».},
  pages = {123--456},
  title = {\textit{Les mouches à travers l'histoire : analyse diachronique de la mémoire d'un insecte}},
  publisher = {chez Plomb},
  year = {2040},
  editor = {Rackham le Rouge},
  author = {Edward Teach},
  address = {Sealand},
}

Vous l'aurez compris, la sale astuce consiste à placer les guillemets, un point (pour précéder le « In » qui va suivre), et le \textit{} dans la citation elle-même. C'est moche et peu pratique mais au moins, ça marche... en attendant mieux.

Reste une chose ennuyeuse : un « Chap. » qui se balade devant le titre de la contribution que vous avez indiqué, ce qui est inhabituel. Pour changer cela, voir la section suivante.

Modifier les connecteurs en redéfinissant les paramètres localisés

Ce titre est clair comme les eaux du Pacifique nord après le passage de l'Exxon Valdez, mais passons.

Comme précisé ci-dessus, si vous utilisez \usepackage[francais]{babel} (ou babel avec un certain nombre d'autres langues), jurabib adaptera certains connecteurs en conséquence (par exemple « and » devient « et »). Il est possible et même aisé de modifier les paramètres utilisés pour ce faire, qui se trouve (pour le français) dans /usr/share/texmf-texlive/tex/latex/jurabib/frjbbib.ldf (pour les autres langues, c'est facile : /usr/share/texmf-texlive/tex/latex/jurabib/enjbbib.ldf pour l'anglais, /usr/share/texmf-texlive/tex/latex/jurabib/dejbbib.ldf pour l'allemand, etc.)

On peut influer sur ces variables individuellement pour chaque fichier, dans le préambule, comme suit par exemple :

\AddTo\bibsenglish{%
\def\jbpagename{p.}%
\def\jbpagesname{pp.}%
}

À adapter selon les variables que l'on veut modifier. Et ne me demandez pas pourquoi c'est \bibsenglish même quand \usepackage[francais]{babel} est utilisé. Apparemment, ça marche comme ça.

Mais je trouve qu'autant vaut modifier un peu ce fichier pour mieux coller, une fois pour toutes, à ce qu'on a l'habitude de voir dans les publications françaises (en tout cas en sciences humaines). Ci-suit l'intégralité du fichier modifié, avec commentaire des modifications, tout prêt à copier-coller (conseil : faites une sauvegarde avant, ça peut toujours servir).

\ProvidesFile{frjbbib.ldf}[jurabib French language definitions]
\def\bibsfrench{%
   \def\etalname{\unskip\nobreakspace{}\textit{et\,al.}}%
   \def\etalnamenodot{\unskip\nobreakspace{}\textit{et\,al}}%
   \def\bibandname{et}%
   \def\textandname{\bibandname}%
   \def\commaname{,}%
   \def\bibeandname{et}%
   \def\texteandname{\bibeandname}%
   \def\commaename{,}%
   \def\inname{\ifjboxford dans :\else dans\fi}%
   \def\incollinname{\ifjboxford dans :\else dans\fi}%
   \def\ofseriesname{,}%
   \def\volumeofname{de}%
   \def\inseriesname{dans}%
   \def\editorname{(dir.)}%
%% remplacement, pour indiquer la direction d'un ouvrage, de « éd. » par « dir. » (eg « Dupont, Albert (dir.), Les mouches » au lieu de « Dupont, 
%% Albert (éd.), Les mouches »)
   \def\editorsname{(dir.)}%
%% remplacement, pour indiquer la direction d'un ouvrage par plusieurs personnes, de « éd. » par « dir. » (eg « Dupont, Albert, et Doe, Jeanne, 
%% (dir.), Les mouches » au lieu de « Dupont, Albert, et Doe, Jeanne (éd.), Les mouches »)
   \def\sndeditorname{(dir.)}%
%% idem pour je ne sais quelle variable à la con
   \def\sndeditorsname{(dir.)}%
%% idem pour je ne sais quelle variable à la con
   \def\edbyname{publi\'e par}%
   \def\Edbyname{Publi\'e par}%
   \def\byname{par}%
   \def\volname{vol.}%
   \def\volumename{volume}%
   \def\Volumename{Volume}%
   \def\numbername{n$^\circ$~}%
   \def\editionname{\'edition}%
   \def\bibchaptername{}%
%% remplacement, pour les références @INBOOK, de « chap. » par rien du tout (eg Dupont, Albert ; Doe, Jeanne (dir.), « Les mouches sous Henri 
%% IV ». In Les mouches à travers l'histoire », au lieu de « Dupont, Albert ; Doe, Jeanne (dir.), chap. « Les mouches sous Henri IV ». In Les
%% mouches à travers l'histoire »
   \def\Bibchaptername{}%
%% idem
   \def\bibchapterlongname{chapitre}%
   \def\jbpagename{p.}%
   \def\jbpagesname{pp.}%
%% remplacement de « p. » par « pp. » quand plusieurs pages sont citées (eg « pp. 45--89 » au lieu de « p. 45---89 »).
   \def\bibpagename{p.}%
   \def\bibpagesname{pp.}%
%% remplacement de « p. » par « pp. » quand plusieurs pages sont citées (eg « pp. 45--89 » au lieu de « p. 45---89 »)
   \def\bibtotalpagesname{pages}% TODO
   \def\jbarchpagename{\jbpagename}%
   \def\jbarchpagesname{\jbpagesname}%
   \def\bibarchpagename{\bibpagename}%
   \def\bibarchpagesname{\bibpagesname}%
   \def\jbpagenamenodot{p}%
   \def\alsothesisname{tir\'e de :}%
   \def\mastersthesisname{DEA}%
   \def\phdthesisname{Th\`ese de doctorat}%
   \def\jurthesisname{Th\`ese de droit}%
   \def\technicalreportname{Rapport technique}%
   \def\organizationname{}%
   \def\janname{janvier}%
   \def\febname{f\'evrier}%
   \def\marname{mars}%
   \def\aprname{avril}%
   \def\mayname{mai}%
   \def\junname{juin}%
   \def\julname{juillet}%
   \def\augname{ao\^ut}%
   \def\sepname{septembre}%
   \def\octname{octobre}%
   \def\novname{novembre}%
   \def\decname{d\'ecembre}%
   \def\firstedname{1\textsuperscript{er}}%
   \def\secondedname{2\textsuperscript{e}}%
   \def\thirdedname{3\textsuperscript{e}}%
   \def\fourthedname{4\textsuperscript{e}}%
   \def\fifthedname{5\textsuperscript{e}}%
   \def\thedname{\textsuperscript{e}}%
   \def\urldatecomment{visit\'e le }%
   \def\howcitedprefix{ (cit\'e dans : }%
   \def\howcitedsuffix{)}%
   \def\lookatprefix{ (cf. n$^\circ$~}%
   \def\lookatsuffix{)}%
   \def\ibidemname{\textit{Ibid.}}%
   \def\ibidemmidname{\textit{ibid.}}%
   \def\idemname{\textit{Idem}}%
   \def\idemmidname{\textit{idem}}%
   \def\bibcontinuedname{(cont.)}%
   \def\idemSmname{\idemname}\def\idemsmname{\idemmidname}\def\idemPmname{\idemname}
   \def\idempmname{\idemmidname}\def\idemSfname{\idemname}\def\idemsfname{\idemmidname}%
   \def\idemPfname{\idemname}\def\idempfname{\idemmidname}\def\idemSnname{\idemname}%
   \def\idemsnname{\idemmidname}\def\idemPnname{\idemname}\def\idempnname{\idemmidname}%
   \def\idemSmedbyname{\idemname}\def\idemsmedbyname{\idemmidname}\def\idemPmedbyname{\idemname}%
   \def\idempmedbyname{\idemmidname}\def\idemSfedbyname{\idemname}\def\idemsfedbyname{\idemmidname}%
   \def\idemPfedbyname{\idemname}\def\idempfedbyname{\idemmidname}\def\idemSnedbyname{\idemname}%
   \def\idemsnedbyname{\idemmidname}\def\idemPnedbyname{\idemname}\def\idempnedbyname{\idemmidname}%
   \def\bibidemSmname{\idemname}\def\bibidemsmname{\idemmidname}\def\bibidemPmname{\idemname}%
   \def\bibidempmname{\idemmidname}\def\bibidemSfname{\idemname}\def\bibidemsfname{\idemmidname}%
   \def\bibidemPfname{\idemname}\def\bibidempfname{\idemmidname}\def\bibidemSnname{\idemname}%
   \def\bibidemsnname{\idemmidname}\def\bibidemPnname{\idemname}\def\bibidempnname{\idemmidname}%
   \def\trans{\ifjbweareinbib traduit\else\ifjboxford traduit\else\ifjbchicago traduit\else Traduit\fi\fi\fi}%
   \def\transfrom{\unskip\unskip\space}%
   \def\Transfrom{\unskip\unskip\space}%
   \def\transby{par}%
   \def\fromgerman{de l'allemand}%
   \def\fromenglish{de l'anglais}%
   \def\fromfrench{du français}%
   \def\fromdutch{du n\'eerlandais}%
   \def\fromspanish{de l'espagnol}%
   \def\fromitalian{de l'italien}%
   \def\fromnorsk{du norv\'egien}%
   \def\fromportuguese{TODO}%
   \def\fromfinnish{du finnois}%
   \def\Reprint{R\'e\'edition}%
   \def\reprint{r\'e\'edition}%
   \def\reviewname{TODO}%
   \def\reviewofname{TODO}%
   \def\reviewbyname{TODO}%
   \def\updatesep{,}%
   \def\updatename{derni\`ere mise \`a jour:}%
   \def\herename{TODO}%
   \def\foundername{\space\edfont{(TODO)}}% Founder of a series
   \def\afterfoundersep{\slash}%
   \addtoalllanguages%
}%