Chemin principal : Accueil > LaTeX > BibLaTeX > Une bibliographie commentée

Une bibliographie commentée

mardi 6 septembre 2011, mise à jour mercredi 8 août 2012, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Je publie une solution à un problème qui m’a été posé : comment imprimer une bibliographie commentée ?

Le problème

Je possède un fichier contenant un bibliographie. Je souhaite imprimer l’ensemble des éléments de la bibliographie, en indiquant le contenu du champ annotation [1].

Exemple

Voici le fichier qui sert d’exemple :

  1. @book{exemple1,
  2. Annotation = {Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis. Nam magna enim, accumsan eu, blandit sed, blandit a, eros.
  3.  
  4. Quisque facilisis erat a dui. Nam malesuada ornare dolor. Cras gravida, diam sit amet rhoncus ornare, erat elit consectetuer erat, id egestas pede nibh eget odio. Proin tincidunt, velit vel porta elementum, magna diam molestie sapien, non aliquet massa pede eu diam. Aliquam iaculis. Fusce et ipsum et nulla tristique facilisis. Donec eget sem sit amet ligula viverra gravida. Etiam vehicula urna vel turpis. Suspendisse sagittis ante a urna. Morbi a est quis orci consequat rutrum. Nullam egestas feugiat felis. Integer adipiscing semper ligula. Nunc molestie, nisl sit amet cursus convallis, sapien lectus pretium metus, vitae pretium enim wisi id lectus.
  5.  
  6. },
  7. Author = {Auteur1},
  8. Publisher = {Éditeur 1},
  9. Title = {Exemple 1},
  10. Year = {Année 1}}
  11.  
  12. @book{exemple2,
  13. Annotation = {Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis. Nam magna enim, accumsan eu, blandit sed, blandit a, eros.
  14.  
  15. Quisque facilisis erat a dui. Nam malesuada ornare dolor. Cras gravida, diam sit amet rhoncus ornare, erat elit consectetuer erat, id egestas pede nibh eget odio. Proin tincidunt, velit vel porta elementum, magna diam molestie sapien, non aliquet massa pede eu diam. Aliquam iaculis. Fusce et ipsum et nulla tristique facilisis. Donec eget sem sit amet ligula viverra gravida. Etiam vehicula urna vel turpis. Suspendisse sagittis ante a urna. Morbi a est quis orci consequat rutrum. Nullam egestas feugiat felis. Integer adipiscing semper ligula. Nunc molestie, nisl sit amet cursus convallis, sapien lectus pretium metus, vitae pretium enim wisi id lectus.
  16.  
  17. },
  18. Author = {Auteur2},
  19. Publisher = {Éditeur 2},
  20. Title = {Exemple 2},
  21. Year = {Année 2}}

Télécharger

Mise en œuvre

Pour imprimer l’ensemble des entrées bibliographiques, j’écris :

  1. \nocite{*}
  2. \printbibliography

Télécharger

Problème : comme le précise le manuel de BibLaTeX, le champ annotation n’est affiché par aucun style standard.

Si j’ouvre le fichier standard.bbx, où sont décris les divers drivers bibliographiques, c’est à dire la manière dont chaque type d’entrée est affiché, je constate que tout les drivers finissent par l’appel à la macro bibliographique finentry. Je me dis donc que modifier cette macro pour afficher le champ serait la solution.

Si dans le même fichier, je cherche la définition de la macro, je tombe sur la ligne suivante :

  1. \newbibmacro*{finentry}{\finentry}

Je constate que la macro appelle la commande \finentry. Comme je ne suis pas quelqu’un de méfiant, je pense qu’elle a une bonne raison pour le faire, et je vais donc appeler cette commande dans ma nouvelle définition de macro.

Dans mon fichier .tex, j’écris donc :

  1. \renewbibmacro*{finentry}{\printfield{annotation}\finentry}

J’obtiens le résultat contenu dans le fichier suivant :

Bibliographie commentée mais mal présentée

Problème de paragraphes

Je constate deux problèmes :

  • Je n’ai pas de changement de paragraphe avant les commentaires.
  • Ceux-ci ne contiennent plus de paragraphes.

En ce qui concerne le deuxième point, il est lié au fait que BibTeX(et Biber) supprime automatiquement les sauts de ligne, comme on peut le constater en ouvrant le fichier .bbl, issu de la compilation avec BibTeX (ou Biber).

La solution est d’indiquer autrement les paragraphes dans notre fichier .bib : il suffit de les marquer par \par. Ainsi :

  1. @book{exemple2,
  2. Annotation = {\par Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis. Nam magna enim, accumsan eu, blandit sed, blandit a, eros.
  3.  
  4. \par Quisque facilisis erat a dui. Nam malesuada ornare dolor. Cras gravida, diam sit amet rhoncus ornare, erat elit consectetuer erat, id egestas pede nibh eget odio. Proin tincidunt, velit vel porta elementum, magna diam molestie sapien, non aliquet massa pede eu diam. Aliquam iaculis. Fusce et ipsum et nulla tristique facilisis. Donec eget sem sit amet ligula viverra gravida. Etiam vehicula urna vel turpis. Suspendisse sagittis ante a urna. Morbi a est quis orci consequat rutrum. Nullam egestas feugiat felis. Integer adipiscing semper ligula. Nunc molestie, nisl sit amet cursus convallis, sapien lectus pretium metus, vitae pretium enim wisi id lectus.
  5.  
  6. },
  7. Author = {Auteur2},
  8. Publisher = {Éditeur 2},
  9. Title = {Exemple 2},
  10. Year = {Année 2}}

Télécharger

Indiquer le début de paragraphe au début du champ annotation résout aussi le premier problème.

Indenter les paragraphes

Je constate également qu’il n’y a pas d’indentation des paragrapghes.

Le problème est lié au réglages utilisés par BibLaTeX pour afficher la bibliographie. Il utilise pour cela le résultat de la commande \defbibenvironnement.

Si je cherche dans le fichier authortitle.bbx, je trouve le code suivant

  1. \defbibenvironment{bibliography}
  2. {\list
  3. {}
  4. {\setlength{\leftmargin}{\bibhang}%
  5. \setlength{\itemindent}{-\leftmargin}%
  6. \setlength{\itemsep}{\bibitemsep}%
  7. \setlength{\parsep}{\bibparsep}}}
  8. {\endlist}
  9. {\item}

Télécharger

Le premier argument (l. 1) permet de choisir l’affichage de la bibliographie avec la commande \printbibliography, grâce à l’option \env. Ainsi si j’écris \defbibenvironment{toto}{…}{…}{...}, je peux définir une nouvelle manière d’afficher la bibliographie, en utilisant \printbibliography[env=toto]. Si mon premier argument est égal à bibliography, alors je n’ai pas besoin de passer l’option env à \printbibliography.

Le deuxième argument (l. 2-7) correspond à ce qui est exécuté en début de bibliographie, le second (l. 7) à ce qui est exécuté en fin de bibliographie, le troisième (l. 8) à ce qui est exécuté pour chaque entrée de la bibliographie.

Ici le premier argument est un environnement list. Comme tout les environnements, il y a deux manière de le mettre en œuvre : soit, comme souvent :

  1. \begin{list}{}{}
  2. contenu
  3. \end{list}

Télécharger

soit, comme c’est le cas ici :

  1. \list{}{}
  2. contenu
  3. \endlist

Télécharger

L’environnement list est un environnement standard de LaTeX. Les célèbres environnements itemize, description et enumerate se basent dessus. Le premier argument correspond au texte à afficher lorsqu’une commande \item est utilisée sans argument. Ici, on n’affiche rien, puisque l’argument est vide. Le second argument contient des commandes de paramètrage de la liste.

Ici sont définies un certain nombre de longueurs, via la commande \setlength.

Ces longueurs sont :

  • La marge gauche, \leftmargin, correspondante à la longueur \bibhang, définie dans les fichier de BibLaTeX.
  • L’indentation de chaque élément de la liste, \itemindent, définie à -\leftmargin.
  • La distance entre deux éléments de la liste, \itemsep, correspondante à la longueur \bibitemsep, définie dans les fichiers standards de BibLaTeX.
  • La distance entre deux paragraphes, \parsep, correspondante à la longueur \bibparsep, définie dans les fichiers standards de BibLaTeX.

Je souhaite indiquer l’indentation de chaque paragraphe : il s’agit de la longueur \listparindent. Je la veux correspondante à l’indentation des paragraphes hors de listes : pour ce faire je vais utiliser la longueur \parindent. Il me faut donc rajouter la ligne suivante :

  1. \setlength{\listparindent}{\parindent}%

Je souhaite également avoir un espacement standard des paragraphes. Pour cela, je vais supprimer la ligne

  1. \setlength{\parsep}{\bibparsep}

Ce qui donne au final

  1. \defbibenvironment{bibliography}
  2. {\list
  3. {}
  4. {\setlength{\listparindent}{\parindent}%
  5. \setlength{\leftmargin}{\bibhang}%
  6. \setlength{\itemindent}{-\leftmargin}%
  7. \setlength{\itemsep}{\bibitemsep}}}
  8. {\endlist}
  9. {\item}

Télécharger

J’obtiens le résultat souhaité, comme vous pouvez le constatez dans ce fichier :

Bibliographie commentée et bien presentée

Raffinement

Il peut m’arriver de vouloir avoir un bibliographie commentée dans un fichier où les références bibliographiques sont aussi utilisées dans le texte. Je vais donc conditionner l’affichage du champ annotation par la commande \ifbibliography. Celle-ci retourne son premier argument si on se situe dans la commande \printbibliography, sinon elle retourne son second argument.

J’obtiens donc :

  1. \renewbibmacro*{finentry}{\ifbibliography{\printfield{annotation}}{}\finentry}

Notes

[1Ou du champ annote, qui avec BibLaTeX est alias de annote.

Vos commentaires

  • Le 28 septembre 2011 à 15:22, par Bastien En réponse à : Une bibliographie commentée

    Bonjour,

    Merci infiniment pour l’expérience partagée à travers ce blog. Concernant le point précis soulevé dans ce post, il existe déjà au sein de BibLaTeX le style reading, qui affiche les annotations.

  • Le 29 septembre 2011 à 18:35, par Maïeul En réponse à : Une bibliographie commentée

    oui, mais le probleme est que ce ce style indique aussi les clefs bibliographiques, ce qui n’est pas forcement très correct vis-à-vis du lecteur.

  • Le 14 avril à 17:40, par Quentin En réponse à : Une bibliographie commentée

    Merci pour cette astuce de plus, votre blog est une mine d’or ! Un dernier détail qui peut manquer ici : dans votre exemple il n’y a aucun caractère qui termine la référence avant le champ annotation. Mais dans ma configuration, où j’ai remplacé le caractère de séparation entre champs par une virgule (et pas un point comme par défaut), ça termine la ligne par une virgule, avant le paragraphe d’annotation, ce qui est assez disgracieux. J’aimerai le remplacer par un point. Vous avez une idée de comment on pourrait faire pour éviter ça ?

  • Le 14 avril à 17:49, par Maïeul En réponse à : Une bibliographie commentée

    Il me faudrait un exemple complet minimum :

    • fichier .bib
    • réglage biblatex

    Pour pouvoir voir d’où viens le problème…

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

À propos

Titulaire d’un master en sciences religieuses de l’Université de Strasbourg, je suis depuis août 2012 assistant-diplômé en histoire du christianisme antique et littérature apocryphe chrétienne à l’Université de Lausanne, où je prépare une thèse sous la direction de Frédéric Amsler.

Dans le cadre de la rédaction de mon mémoire de master, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul