Une bibliographie commentée

Transcription

Une bibliographie commentée
Une bibliographie commentée
Extrait du Geekographie Maïeulesque
http://geekographie.maieul.net/Une-bibliographie-commentee
Une bibliographie commentée
- LaTeX
-
Date de mise en ligne : mardi 6 septembre 2011
Geekographie Maïeulesque
Copyright © Geekographie Maïeulesque
Page 1/7
Une bibliographie commentée
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 :
@book{exemple1,
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.
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.
},
Author = {Auteur1},
Publisher = {Éditeur 1},
Title = {Exemple 1},
Year = {Année 1}}
@book{exemple2,
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.
Copyright © Geekographie Maïeulesque
Page 2/7
Une bibliographie commentée
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.
},
Author = {Auteur2},
Publisher = {Éditeur 2},
Title = {Exemple 2},
Year = {Année 2}}
Mise en oeuvre
Pour imprimer l'ensemble des entrées bibliographiques, j'écris :
\nocite{*}
\printbibliography
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 :
\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 :
\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.
Copyright © Geekographie Maïeulesque
Page 3/7
Une bibliographie commentée
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 :
@book{exemple2,
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.
\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.
},
Author = {Auteur2},
Publisher = {Éditeur 2},
Title = {Exemple 2},
Year = {Année 2}}
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,
Copyright © Geekographie Maïeulesque
je trouve le code suivant
Page 4/7
Une bibliographie commentée
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
Copyright © Geekographie Maïeulesque
Page 5/7
Une bibliographie commentée
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
mettre en oeuvre : soit, comme souvent :
list.
Comme tout les environnements, il y a deux manière de le
\begin{list}{}{}
contenu
\end{list}
soit, comme c'est le cas ici :
\list{}{}
contenu
\endlist
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 :
\setlength{\listparindent}{\parindent}%
Je souhaite également avoir un espacement standard des paragraphes. Pour cela, je vais supprimer la ligne
\setlength{\parsep}{\bibparsep}
Ce qui donne au final
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\listparindent}{\parindent}%
Copyright © Geekographie Maïeulesque
Page 6/7
Une bibliographie commentée
\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}}}
{\endlist}
{\item}
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 :
\renewbibmacro*{finentry}{\ifbibliography{\printfield{annotation}}{}\finentry}
[1] Ou du champ annote,
qui avec BibLaTeX est alias de
Copyright © Geekographie Maïeulesque
annote.
Page 7/7