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 :
Mise en œuvre
Pour imprimer l’ensemble des entrées bibliographiques, j’écris :
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 :
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 :
J’obtiens le résultat contenu dans le fichier suivant :
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 :
@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
, je trouve le code suivant
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 :
\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 deBibLaTeX
. - 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 deBibLaTeX
. - La distance entre deux paragraphes,
\parsep
, correspondante à la longueur\bibparsep
, définie dans les fichiers standards deBibLaTeX
.
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}%
\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 :
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}
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 2017 à 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 2017 à 17:49, par Maïeul En réponse à : Une bibliographie commentée
Il me faudrait un exemple complet minimum :
Pour pouvoir voir d’où viens le problème…