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