Préambule : à quoi répond cet article
Cet article est une documentation technique du package biblatex-anonymous. Il permet de montrer comment il fonctionne. Il peut vous être utile pour créer vos propre personnalisation. Cependant si vous souhaitez simplement gérer les œuvres anonymes, utilisez plutôt le package, directement.
Nos besoins
Nous voulons que pour certains types d’entrées seul le champ author soit utilisé :
- Comme référent pour le classement bibliographique.
- Comment auteur dans la version longue de la référence bibliographique.
- Comme label pour les versions courtes de la référence bibliographique.
Autrement dit, nous ne voulons pas que dans les trois cas sus-mentionné, l’éditeur ou le traducteur soit utilisé si l’auteur est absent.
Des options bien utiles
Mes précédents contributions consistaient à modifier chacun de ces points. Or il se trouve que BibLaTeX, que je ne connaît décidément pas assez, propose nativement un outil pour gérer ces cas.
Il s’agit des options :
-
useeditor -
usetranslator
Ces options peuvent être définie :
- Au niveau du chargement de biblatex, comme options de package.
- Au niveau de chaque entrée, via le champ spécifique
options. - Par type d’entrée, via
\ExecuteBibliographyOptions.
Les types d’entrées susceptibles de nous intéressées sont celles qui se référent à des
œuvres anciennes, autrement où l’editor est un éditeur et pas un directeur de publication.
Il s’agit donc des entrées de type :
- book
- bookinbook
- bookinarticle
- bookinincollection
- mvbook
- inbook
On va donc régler ces options à false pour ces deux entrées :
\ExecuteBibliographyOptions[book, bookinbook, bookinarticle, bookinincollection, mvbook,inbook]{useeditor=false,usetranslator=false}Un tri simplifié
Cette contribution ne rend pas obsolète la nécessité de définir un schéma de tri spécifique pour classer les sources anonymes avant les sources non anonymes. Cependant cela simplifie le problème, en évitant de s’éloigner trop du modèle classique nty.
Rappelons que ce schéma de tri est ainsi défini dans le fichier biblatex.def :
\DeclareSortingScheme{nty}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}Cela indique qu’on trie d’abord le champ presort, puis le champ sortkey. Si ce dernier champ est défini, on arrête là le tri.
Puis on tri le champ suivant : sortname, ou à défaut author, ou à défaut editor, ou à défaut translator, ou à défaut sorttitle, ou à défaut title.
Ensuite on tri le champ sorttitle, ou à défaut, title. Vient après le tri de sortyear ou à défaut de year. Finalement on tri le champ volume, completé à gauche par des 0, ou à défaut de ce champ, on prend la valeur 0000. Ce qui signifie qu’un ouvrage avec un volume sera classé après un ouvrage sans volume, toutes choses égales par ailleurs [1]
Dans le cas qui nous intéresse le fait d’avoir désactiver, pour certain types d’entrées, les champs editor et translator amène à ce que pour ces entrées on trie sortname ou à défaut par author ou à défaut sorttitle, ou à défaut title. Autrement dit, pour ces types d’entrées, nous n’avons pas :
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}mais
\sort{
\field{sortname}
\field{author}
\field{sorttitle}
\field{title}
}Pour notre schéma de tri anonymous, nous souhaitons qu’en l’absence de sortname ou de author ou de editor ou de translator, ce ne soit ni la valeur de sorttitle ni celle de title, mais une valeur égale à 0000, ce qui nous assure d’avoir les œuvres anonymes avant celles ayant un auteur.
Il nous faut donc remplacer
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}par
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\literal{0000}
}Ainsi notre tri anonyme se définit ainsi :
\DeclareSortingScheme{anonymous}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\literal{0000}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}Il nous reste plus qu’à passer l’option sorting=anonyme lors du chargement de biblatex ou à notre commande \printbibliography, la première option étant recommandée si on ne désire pas avoir des bibliographies triées selon des schémas différents.
Éditeur ou directeur
Bien que cela ne directement lié à notre problème, on peut modifier les chaînes pour indiquer éditeur ou directeur selon le cas. Mais plutôt que d’utiliser des test booléens compliqués, il suffit de faire :
\DefineBibliographyStrings{french}{%
byeditor = %
{\ifuseeditor{dir\adddotspace}{éd\adddot}},
}Ces deux morceaux de codes se retrouvent tels quels dans la version 2.0.0 du package biblatex-anonymous.
Des vrais op. cit.
En revanche si j’utilise la contribution pour avoir des vrais op. cit., j’ai un problème : puisqu’il n’y a pas de LabelName aux œuvres anonymes, toutes les œuvres anonymes sont considérées comme du même auteur, et donc la commande \ifsingletitle renvoie invariablement true, ce qui fait que l’on ne peut distinguer les œuvres anonymes, puisqu’elles sont toutes résumées en op. cit. sans que le titre soit affichés.
C’est pourquoi, on lieu de redéfinir la macro cite:title
On va pour cela utiliser le package xpatch
\xpatchbibmacro%
{cite:title}%
{\printfield[citetitle]{labeltitle}}%
{\ifboolexpr{test{\ifsingletitle} and not test {\ifnameundef{labelname}}}{}{\printfield[citetitle]{labeltitle}}}%
{}%
{}%