Soit les entrées suivantes :
@bookinbook{BreveHippone,
Crossref = {ConciliaAfricae},
Entrysubtype = {concile},
Pages = {30-46},
Title = {Breviarum Hipponense}}
@bookinbook{Ferrand,
Author = {{Ferrand de Carthage}},
Crossref = {ConciliaAfricae},
Entrysubtype = {concile},
Pages = {287-306},
Title = {Breviatio Canonum}}
@book{ConciliaAfricae,
Editor = {Charles Munier},
Number = {149},
Series = {CCSL},
Title = {Concilia Africae}}
Si j’appelle ma bibliographie finale avec :
\printbibliography[subtype=concile]
J’obtiens le tri suivant :
Ferrand de Carthage, Breviatio Canonum, dans Concilia Africae, dir. Charles Munier, CCSL 149, p. 287–306.
Breviarum Hipponense, dans Concilia Africae, dir. Charles Munier, CCSL 149, p. 30–46.
Or j’aimerais que les sources anonymes soient positionnée en tout début. Comment faire ?
La mauvaise méthode
La mauvaise méthode consiste à utiliser le champ sortname, en modifiant ainsi les entrées anonymes :
@bookinbook{BreveHippone,
Crossref = {ConciliaAfricae},
Entrysubtype = {concile},
Pages = {30-46},
Title = {Breviarum Hipponense}}
Cette méthode est mauvaise pour (au moins) deux raisons :
- Elle suppose de ne pas oublier de renseigner le champ
sortname
et demande une vérification finale manuelle (ou l’utilisation de tests) - Elle implique qu’on insère dans la base de donnée le tri final. Or il peut arriver de vouloir avoir un autre tri, par exemple en gardant le tri standard.
La bonne méthode
Elle suppose de passer par Biber. Il s’agit de créer un ordre de tri personalisé (le manuel de BibLaTeX explique plus en détails).
Si je fouille le fichier biblatex.def
, je trouve la définition du tri nyt
, qui est le tri standard, triant par nom, puis par titre, puis par année.
Je commente rapidement le code :
- La première ligne indique que nous déclarons un schéma de tri (
\DeclareSortingScheme
) intitulénty
. Ce schéma est décrit dans les lignes qui suivent. - Chaque commande
\sort
indique un ordre de tri, les champs déclarés par\field
à l’intérieur de ces commandes étant les champs servant au tri. Le système de tri teste chaque champ :- Si un champ existe, biber note sa valeur dans sa mémoire pour le tri, sinon, il teste l’existence du champ suivant.
- Une fois que tous les champs d’un
\sort
ont été analysés et leurs valeurs mises dans la mémoire pour tri, biber procéde au tri.- Ainsi, on voit que le tri se fait d’abord suivant le champ
presort
, puis suivant le champsortkey
. - Si le champ
sortkey
est défini, on arrête là le tri (comme le montre l’option[final]
). - Dans le cas contraire, on continue le tri on prenant pour clef de tri : le champ
sortname
, sinonauthor
, sinoneditor
, sinontranslator
, sinonsortitle
, sinontitle
. - Après avoir fait ce tri, on sous-trie chaque auteur par
sorttitle
ou partitle
.
- Ainsi, on voit que le tri se fait d’abord suivant le champ
-
\field[padside=left,padwidth=4,padchar=0]{volume}
signifie que pour le tri, le champvolume
reçoit des zéros sur sa gauche, de manière à former au plus 4 caractères. Ainsi1
devient0001
,10
devient0010
et 100 devient100
. Ceci permet de procéder à un tri par ordre numérique, et non par ordre alphabétique [1]. - La commande
\literal
signifie que Biber fait « comme si » un champ ayant la valeur passé en argument est pris en compte. Cette commande va nous être très utile.
Nous allons en effet déclarer un nouveau schéma de tri, anonyme
.
Nous allons d’abord remplacer :
\field{author}
\field{editor}
\field{translator}
Par :
\field{labelname}
Ceci permettra de trier suivant le pseudo-champ labelname
. Par défaut ce pseudo champ vaut la valeur du premier champ existant dans l’ordre suivant : shortauthor,author,shorteditor,editor,translator. Cependant, pour les entrées de type @book
, @bookinbook
et @inbook
nous allons le modifier, en faisant qu’il ne puisse être qu’égal à author
, via :
\DeclareLabelname[book, inbook,bookinbook]{author}
ou pour les versions plus récentes de BibLaTeX
\DeclareLabelname[book, inbook,bookinbook]{
\field{author}
}
Nous allons remplacer le premier :
\field{sorttitle}
\field{title}
par
\literal{0000}
Ainsi en l’absence de champ labelname
, donc pour les œuvres anonymes, notre entrée sera située en tête de tri.
Au final, cela donne ceci :
\DeclareLabelname[book, inbook,bookinbook]{author}
\DeclareSortingScheme{anonyme}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{labelname}
\literal{0000}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}
Lors du chargement de biblatex, nous passons l’option sorting=anonyme
pour dire de prendre ce tri.
\usepackage[mincrossrefs=0,bibstyle=verbose,citestyle=verbose-trad2,backend=biber,sorting=anonyme]
Ce qui nous donne correctement au final :
Breviarum Hipponense, dans Concilia Africae, dir. Charles Munier, CCSL 149, p. 30–46.
Ferrand de Carthage, Breviatio Canonum, dans Concilia Africae, dir. Charles Munier, CCSL 149, p. 287–306.
Vos commentaires
# Le 18 décembre 2013 à 20:55, par Olivier En réponse à : Tri des œuvres anonymes
Comment faire pour mettre les sources anonymes à la fin de ma bibliographie ? Merci d’avance et d’ores et déjà pour toutes ces explications !
# Le 18 décembre 2013 à 22:15, par Maïeul En réponse à : Tri des œuvres anonymes
Dans l’exemple précédent,
signifie "trier selon le champ
sortname
, ou à défautlabelname
, ou à défaut selon un champ qui aurait une valeur égale à0000
, c’est à dire un champ avec une valeur située tout en début de tri.« Il suffit donc de dire à la place »sortname
, ou à défautlabelname
, ou à défaut selon un champ qui aurait une valeur égale àZZZZ
, c’est à dire un champ avec une valeur située tout en fin de tri". (En supposant que vous n’ayez pas de nom d’auteur dans un autre alphabet que l’alphabet. Sinon il faut trouver la valeur la plus ultime dans le classement alphabétique unicode).Soit donc :
# Le 19 décembre 2013 à 22:18, par Olivier En réponse à : Tri des œuvres anonymes
Merci beaucoup ! Vous m’avez été d’une aide précieuse !