Profitez des offres Memoirevive.ch!
BibLaTeX, Biber et latexmk : le tiercé gagnant de la bibliographie avec LaTeX

Me voici de retour avec un article sur LaTeX, pour changer (on ne rit pas dans le fond) ! Ou plutôt, un article sur la composition de bibliographies, un des grands points forts de ce programme. Bien sûr, cet article s'adresse d'abord à ceux qui savent plus ou moins de quoi LaTeX retourne, mais les autres peuvent quand même le lire, ne serait-ce que par simple curiosité, pour voir le genre de bibliographies qu'il permet de construire…

En fait, il y a quelque temps déjà, je vous avais présenté dans cet article, me basant sur un article précédent de Fabien Conus, l'outil de base de la famille LaTeX pour composer des bibliographies fonctionnelles et élégantes : BibTeX. Par la suite, je supposerai que vous connaissez plus ou moins son principe de fonctionnement. Si ce n'est pas le cas, il serait peut-être bon de parcourir l'article que je viens de citer.

Pour rappel, BibTeX est un programme indépendant de LaTeX, mais qui lui est intimement associé, et prend en charge d'un côté le tri des données de la bibliographie (dont les entrées sont stockées dans un fichier .bib selon un code particulier) et également la mise en forme de cette bibliographie, en se servant de fichiers dits « de style », à extension .bst.

Mais BibTeX a un énorme inconvénient pour nous autres non-Anglophones : il ne fonctionne bien qu'avec des fichiers .bib encodés en ASCII. Autrement dit, pour entrer un caractère accentué dans un fichier .bib, par exemple le « `e », il faut le faire sous la forme \ `e, bref façon LaTeX préhistorique…

Mais récemment est arrivé dans le petit monde de LaTeX un programme Perl appelé Biber (non, rien à voir avec Justin Bieber !)… Pour faire simple, il s'agit d'un remplaçant de BibTeX compatible avec le codage Unicode, ce qui règle une fois pour toutes le problème des accents.

Voici un exemple de base de données bibliographiques destiné à Biber, que j'ai appelé sur mon ordinateur biblio-latex.bib :

% !TEX encoding = UTF-8 Unicode

@article{ConusPastor-2012,
  title = {Introduction à \LaTeX{} sous Mac~OS~X (mise à jour)},
  author = {Conus, Fabien and Pastor, Franck},
  journaltitle = {\texttt{cuk.ch}},
  date = {2012-10-10},
  url = {http://redac.cuk.ch/franck/article-cuk-latex-pdf/intro-latex-rev-bis.pdf},
  langid = {french}}

@article{Oetiker-2011,
  title = {The Not So Short Introduction to \LaTeXe},
  journaltitle={Public Domain},
  subtitle = {Or \LaTeXe{} in 157~minutes},
  author = {Oetiker, Tobias},
  year = {2011},
  url = {http://tobi.oetiker.ch/lshort/lshort.pdf},
  langid = {english}}

@book{Mittelbach-2004,
  title = {The \LaTeX{} Companion, Second Edition},
  author = {Goossens, Michel and Mittelbach, Frank},
  subtitle = {Tools and Techniques for Computer Typesetting},
  publisher = {Addison-Wesley},
  year = {2004},
  langid = {english}}

@book{Desgraupes-2003,
  title = {\LaTeX, apprentissage, guide et référence},
  author = {Desgraupes, Bernard},
  publisher = {Vuibert},
  year = {2003},
  langid = {french}}

Comme vous pouvez le constater, tous les caractères accentués sont là !

Il se trouve que Biber a été créé conjointement avec un nouveau paquet LaTeX de gestion de bibliographie : BibLaTeX, de Philipp Lehman.

En effet, un autre inconvénient du vénérable BibTeX est lié à ses fichiers de style : ceux-ci ne sont pas facilement personnalisables, et souvent pour y parvenir il faut passer par le chargement d'un « paquet » externe, (comme natbib par exemple, très populaire encore), voir de plusieurs paquets, ce qui induit un risque de conflit entre les différentes extensions et complique la tâche du rédacteur, lequel doit se familiariser avec des outils supplémentaires.

BibLaTeX a justement été conçu pour lever complètement cet inconvénient. On le charge comme un paquet classique en préambule de document :

\usepackage{biblatex}

S'il fonctionne par défaut avec Biber, il peut tout aussi bien tourner avec BibTeX. Dans ce cas il faut le charger ainsi :

\usepackage[backend=bibtex]{biblatex}

Mais bien sûr, on devra faire alors avec le codage ASCII des fichiers de base de données… Et utilisé avec BibLaTeX, BibTeX ne prendra plus en charge que le tri des données : c'est BibLaTeX qui donne les indications de style à suivre (pour Biber également). Plus de fichier monstyle.bst, plus de commande \bibliographystyle{monstyle} : BibLaTeX prendra en charge à lui tout seul tous les détails de la présentation de la bibliographie.

Essayons de tester le couple BibLaTeX-Biber sur l'exemple (fantaisiste) suivant, destiné pour plus d'universalité à fonctionner avec PDFLaTeX, la version de LaTeX utilisée par défaut sous TeXShop :

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatexmk
\documentclass[12pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern, textcomp, microtype}
\usepackage[utf8]{inputenc}
\usepackage[english, french]{babel}

\usepackage[babel]{csquotes}
\usepackage{biblatex}
\bibliography{biblio-latex}

\usepackage[colorlinks, citecolor=blue]{hyperref}

\begin{document}

Pour débuter en \LaTeX{} par des articles courts et simples,
voyez par exemple~\cite{ConusPastor-2012} en français,
ou bien~\cite{Oetiker-2011} en anglais.

Si vous préférez des références complètes,
vous pouvez faire l'acquisition de~\cite{Mittelbach-2004},
la référence absolue en la matière en anglais
(une traduction française existe également),
ou de~\cite{Desgraupes-2003},
une autre bible \LaTeX{} rédigée directement en français.

\printbibliography

\end{document}

Si outre l'article sur BibTeX déjà cité plus haut, vous avez suivi cet excellent cours d'introduction à LaTeX, vous aurez reconnu la plupart des paquets et instructions rencontrées dans ce fichier. Un paquet peut cependant vous être inconnu : csquotes, du même auteur que BibLaTeX, Philipp Lehman. Chargé avec l'option babel, csquotes permet à BibLaTeX d'adapter les guillemets en fonction de la langue ou des langues utilisées dans le document.

Si vous vous rappelez bien, avec BibTeX, pour que la bibliographie soit composée, insérée à la bonne place dans le document et que les références à ses entrées soient correctes, il faut a priori lancer quatre compilations : sous TeXShop, d'abord par LaTeX, puis par BibTeX (qui compile en fait le fichier .aux), puis par LaTeX deux fois encore.

Mais maintenant il y a le script latexmk qui est disponible dans nos distributions LaTeX : il permet d'automatiser la construction de la bibliographie, de l'index, des références croisées, etc, en une seule « passe ». Ainsi, il exécutera si besoin les quatre compilations d'affilée pour sortir la bibliographie avec ses références. Pour PDFLaTeX, un script adapté est disponible avec TeXShop, pdflatexmk. C'est celui auquel je fais appel en début de document, en deuxième ligne. D'autres scripts adaptés à LuaLaTeX, XeLaTeX, etc, sont également disponibles, mais doivent être activés par l'utilisateur, simplement en les sortant du sous-dossier TeXShop/Engines/Inactive de votre bibliothèque maison et en les plaçant dans le dossier parent TeXShop/Engines.

Donc, lançons une seule compilation de ce fichier, avec le raccourci commande-t de préférence. Voici le résultat (cliquez dessus pour le voir de plus près) :

raw_biblatex

Comme vous le voyez, la bibliographie est là, toute belle toute propre, composée aux petits oignons, ainsi que les références dans le texte, les hyperliens… et respectant les conventions typographiques de la langue par défaut du document, en l'occurrence le français (voyez les guillemets et les espaces avant ponctuation entre autres).

Donnons quelques exemples de personnalisation de cette bibliographie permis par BibLaTeX :

  • Gestion du multilinguisme
  • Dans les entrées du fichier biblio-latex.bib, vous aurez peut-être remarqué la présence du champ langid, qui renseigne sur la langue de l'ouvrage concerné. Or on peut vouloir (et c'est toujours mon cas) adapter la présentation de cet ouvrage dans la bibliographie aux conventions typographiques de la langue qu'il utilise : césures, guillemets, ponctuation… BibLaTeX permet cela grâce à l'option autolang=other :

    \usepackage[autolang=other]{biblatex}

    Ce qui donnera, après recompilation, ceci :

    babel_biblatex

    Notez l'usage de and au lieu de « et », des guillemets anglo-saxons, l'absence de petites capitales, etc, dans les références des ouvrages anglophones.

  • Tri des références bibliographiques

      Par défaut, les entrées bibliographiques sont classées par BibLaTeX par ordre alphabétique des noms d'auteur, puis par ordre alphabétique des titres d'ouvrages et enfin par année de publication : en abrégé, nty, pour name-title-year. Mais on peut vouloir un autre type de tir. Par exemple :

    • Tri par année, puis par nom d'auteur et enfin par titre (ynt) :
    • \usepackage[autolang=other, sorting=ynt]{biblatex}

      sorting_ynt_biblatex

    • Pas de tri : références classées suivant l'ordre de citation dans le texte
    • \usepackage[autolang=other, sorting=none]{biblatex}

      sorting_none_biblatex

      Il y a beaucoup, beaucoup d'autres possibilités de tris, mais restons-en là pour cette présentation.

  • les styles

    Montrons maintenant quelques-un des innombrables différents styles permis par BibLaTeX. Par exemple, le style

    • alphabétique
    • \usepackage[autolang=other, style=alphabetic]{biblatex}

      style_alpha_biblatex

    • indiquant l'auteur et l'année
    • \usepackage[autolang=other, style=authoryear]{biblatex}

      style_authoryear_biblatex

    • l'auteur et le titre
    • \usepackage[autolang=other, style=authortitle]{biblatex}

      style_authortitle_biblatex

    • voire tout simplement la clé de citation utilisée dans le fichier LaTeX en argument de la commande \cite ; c'est le style draft (brouillon), bien pratique pendant la phase d'élaboration du document :
    • \usepackage[autolang=other, style=draft]{biblatex}

      style_draft_biblatex

  • Catégories
  • On peut vouloir séparer sa bibliographie en plusieurs sections. BibLaTeX le permet bien sûr, de beaucoup de façons différentes. Voici un exemple, basée sur la nature des références (ici, livres ou articles). Dans ce cas, il suffit d'adapter comme suit la commande \printbibliography.

    \printbibliography[type=article, title={Articles}]
    \printbibliography[type=book, title={Livres}]

    categories_biblatex

  • Catégories avec numérotation disjointe
  • Vous avez pu constater dans l'exemple précédent que le tri numérique des références ne tient pas compte de leur séparation en différentes sections. Mais il y a moyen de contraindre BibLaTeX à respecter cette séparation.

    \usepackage[autolang=other, defernumbers=true]{biblatex}

    categories_defernumbers_biblatex

Et ainsi de suite… Mais je ne connais moi-même qu'une infime partie des possibilités de personnalisation de BibLaTeX. Si cet article, très succinct et très limité, vous a donné envie d'en savoir plus sur BibLaTeX, il vous faut impérativement consulter son manuel, très bien fait et très clair (mais malheureusement seulement disponible en anglais).

17 commentaires
1)
Caplan
, le 19.03.2014 à 10:37
[modifier]

Tous ces TeX, c’est bien, Franck…

Mais celui que je préfère, c’est TeXaVerY:

3)
Caplan
, le 19.03.2014 à 10:42
[modifier]

Tu ne me l’avais pas déjà faite, celle-là ? :-)

Peut-être… Mais celle de LaTeX, tu nous l’as déjà faite aussi! … ;-)

4)
Franck Pastor
, le 19.03.2014 à 10:48
[modifier]

Hé bien j’espère que ça t’a fait sourire et que ça te le fait encore. Déjà toi tu n’as pas fui en courant rien qu’à voir le titre !

5)
fxc
, le 19.03.2014 à 12:44
[modifier]

Déjà toi tu n’as pas fui en courant rien qu’à voir le titre

je ne fui jamais une chronique sur cuk, mais désolé,
latex , je n’y comprends rien.

6)
Franck Pastor
, le 19.03.2014 à 13:13
[modifier]

@fxc : Je suppose que c’est comme pour moi qui ne comprend rien à tous les articles de ce site sur la photographie. Parce que je n’ai jamais trouvé la motivation suffisante pour m’y mettre.

Mais si un jour ça m’arrive, je saurai par quoi commencer, avec les nombreux livres pour débutants que François mentionne régulièrement dans ses articles. Et si ça t’arrive pour LaTeX, tu pourras toujours regarder parmi les références pour débutants que je cite, dans cet article par exemple. ;-)

Je me demande d’ailleurs s’il ne serait pas temps de faire une piqûre de rappel LaTeX sur ce site : ressortir, non plus seulement en PDF mais sur le web, la série d’articles d’introduction à LaTeX que Fabien Conus avait publiée en 2004 sur ce site. Série que j’avais mis à jour cinq ans plus tard, en 2009, toujours sur ce site. Ça fait à nouveau cinq ans d’écoulés, donc, et comme précédemment il s’en est passé des choses dans le Landernau LaTeXien depuis !

Ça aurait pour avantage qu’un article plus avancé comme celui d’aujourd’hui serait plus clair pour les fidèles Cukiens arrivés ici depuis pas très longtemps, et qui ont loupé les séries de 2004 et 2009.

7)
WhyNot
, le 19.03.2014 à 14:05
[modifier]

J’ai récemment sauté le pas et commence à utiliser LateX pour rédiger un document, grâce aux articles de Franck et Fabien.
C’est clair que ça demande un peu de temps, mais ça vient assez rapidement avec un peu d’effort.

Une des frustrations que j’ai avec Latex est justement la gestion de la bibliographie. Pour être précis, les styles de bibliographie avec Bibtex. J’ai cherché mais je n’ai pas trouvé le style (utilisé en biologie) que je voudrais. Et les styles disponibles ne sont jamais exactement ce que je cherche. Pourtant il existe une base de données de fichiers xml pour 6570 styles de citation disponibles Citationstyles.org. Que je sache on ne peut pas les utiliser/importer dans Latex, même avec BibLateX. Ce serait bien!

En tout cas, un grand merci pour cette série d’articles ;-)

8)
Franck Pastor
, le 19.03.2014 à 14:19
[modifier]

@WhyNot : merci à toi pour utiliser notre cours et nos séries d’articles ! C’est toujours agréable de se savoir utile.

Il n’y a pas de fichier de style façon BibTeX avec BibLaTeX, juste des options de configuration reproduisant des styles prédéfinis. Ou plutôt si : les styles prédéfinis le sont en fait dans des fichiers à extension .bbx, mais on ne doit pas les charger soi-même. Dans cet article, j’ai montré quelques-uns de ces styles. Voir en particulier la documentation de BibLaTeX pages 61 à 66.

Sinon, il y a également des extensions qu’on peut charger en complément à BibLaTeX et qui étendent sa collection de styles prédéfinis. Voir cette page pour ceux qui se trouvent sur CTAN. Certains sont adaptés aux desiderata de magazines scientifiques comme « Nature ». Peut-être y a-t-il le style que tu cherches (je ne comprends pas tout dans cette liste).

Et si les styles prédéfinis ne correspondent pas à ce qu’on cherche, il y a moyen de configurer BibLaTeX pour obtenir exactement ce qu’on cherche, mais en utilisant des commandes de plus bas niveau. Voir encore sa doc pour cela, à partir de la page 116 (Author guide). Mais c’est clair qu’il faudra alors y consacrer pas mal de temps au début.

9)
Franck Pastor
, le 19.03.2014 à 15:01
[modifier]

@WhyNot : Je viens juste de tomber sur cette page, en anglais, qui traite justement de l’emploi BibTeX en biologie. Il y a toute une flopée de styles (BibTeX ici) ad hoc mentionnés. Si ça peut aider !

10)
WhyNot
, le 19.03.2014 à 17:14
[modifier]

@Franck : Merci pour les infos. Je vais regarder ça attentivement.
Quand à configurer mon style, je suis loin d’en être capable…

11)
Guillôme
, le 19.03.2014 à 21:01
[modifier]

Merci Franck pour tes articles et encore plus pour ton aide sur le forum Cuk quand j’étais en plein dans la rédaction de mon mémoire.

Ce que j’adore avec LaTeX, c’est la fiabilité. Mon document garde sa pagination quelque soit sa taille et le nombre d’édition/sauvegarde ou changement de version de LaTeX. Pas de surprise non plus sur les numérotation des titres, les liens…

Par contre, la contrepartie c’est le manque de souplesse. Pour peu que le commanditaire de ton mémoire/thèse/livre t’impose une pagination spécifique, tu es foutu.

Dans mon cas, j’avais galéré avec le manque de souplesse de BibTex et j’avais réussi à avoir une présentation acceptable grâce à ton aide et en bidouillant. Je suis content de voir que de ce côté là, ça s’améliore aussi!

12)
Franck Pastor
, le 20.03.2014 à 16:03
[modifier]

@WhyNot : ça viendra assez vite, tu verras !

@Guillôme : je me souvenais justement de tes plaintes sur BibTeX et me suis dit qu’ à toi en particulier, l’ensemble BibLaTeX-Biber devrait plaire ;-)

13)
Phil7
, le 20.03.2014 à 20:59
[modifier]

Bonjour,

J’ai une question qui est un peu hors sujet, mais pas totalement. Je suis un TeXman d’un niveau mille fois inférieur au tien. J’aimerais bien travailler parfois mes documents sur iPhone. J’ai installé TeXpad mais je n’arrive pas à lui faire reconnaître les caractères accentués directement. Il n’accepte pas babel et compagnie. Et c’est trop casse pieds de taper les commandes pour les caractères accentués. Quelqu’un fait du LaTeX sur iPhone?

14)
Franck Pastor
, le 20.03.2014 à 21:28
[modifier]

Pas moi, désolé. Pas encore du moins, car bientôt je pense que j’en ferai sur iPad, et les apps sont souvent communes avec l’iPhone semble-t-il (j’y connais encore quasiment rien). J’ai vaguement entendu dire du bien de TeX Writer. Comme c’est fait par un Chinois, j’imagine que les caractères exotiques ne lui posent pas de problèmes, a fortiori les caractères accentués. Sans garantie de ma part !

15)
Phil7
, le 20.03.2014 à 21:59
[modifier]

Merci. Je viens de l’acheter pour l’essayer. Mes documents ne compilent pas non plus, toujours en raison des caractères accentués. Peut-être que je ne sais pas m’y prendre…

16)
Franck Pastor
, le 20.03.2014 à 22:06
[modifier]

Pourrais-tu poster sur le forum de cuk.ch (section programmation de préférence) un exemple complet minimal de fichier qui ne compile pas (avec préambule et tout ce qui est indispensable, mais rien de superflu), ainsi que les messages d’erreur que tu reçois ? Je pourrai alors peut-être me faire une idée plus précise.

17)
FX
, le 10.01.2015 à 11:13
[modifier]

Bonjour,

J’utilise la version 3.48.1 de TeXShop. En copiant vos exemples (biblio-latex.bib et le LaTeX enregistré comme Test.te), j’obtiens bien les références citées entre crochets, mais pas la bibliographie elle-même.
La console me dit :
Latexmk: This is Latexmk, John Collins, 5 December 2014, version: 4.40h.
Rule ‘biber Test’: File changes, etc:
Non-existent destination files:
‘Test.bbl’
————
Run number 1 of rule ‘biber Test’
————
————
Running ‘biber « Test »‘
————
Latexmk: applying rule ‘biber Test’…
data source /var/folders/3_/0rnzzsy16bv1616blx1nj7xr0000gp/T/par-6d617267/cache-1ea1c894d061cba85b64a1b380f6c297de02c7c4/inc/lib/Biber/LaTeX/recode_data.xml not found in .
INFO – This is Biber 1.8
INFO – Logfile is ‘Test.blg’
Latexmk: Failed to find one or more biber source files:
NONE
Collected error summary (may duplicate other messages):
biber Test: Could not find all biber source files for ‘Test’
Latexmk: Use the -f option to force complete processing,
unless error was exceeding maximum runs of latex/pdflatex.
Latexmk: Errors, so I did not complete making targets

Des idées sur l’origine du problème ? Le format de bibliographie demandé pour mon mémoire est précis, je préfèrerais utiliser biblatex.

Merci