Pourquoi utiliser ce champ
Je conseille d’utiliser shortseries
en combinaison avec series
, plutôt que de mettre directement la version abrégée dans series
pour trois raisons :
- C’est un champ standard, alors autant s’en servir.
- Si on décide finalement afficher la forme longue de la collection, on aura simplement une ligne de code à supprimer.
- On peut utiliser ce champ pour construire automatiquement une liste des formes abrégées, moyennant quelques lignes de code que je vais détailler dans cet article.
Les entrées de démonstration
Pour le présent article, nous utilisons les entrées suivantes :
@book{PtJc,
Address = {Bruxelles},
Title = {La forme la plus ancienne du Protévangile de Jacques},
Year = {1961}}
@book{CCSL149,
Number = {140},
Series = {Corpus Christianorum Series Latina},
Shortseries = {CCSL},
Title = {Concilia Africae}}
@book{CCSA9,
Number = {9},
Series = {Corpus Christianorum Series Apocryphorum},
Shortseries = {CCSA},
Title = {Pseudo-Matthaei Evangelium}}
@book{CCSA10,
Number = {10},
Series = {Corpus Christianorum Series Apocryphorum},
Shortseries = {CCSA},
Title = {De Nativitate Mariae}}
Nous avons donc trois entrées avec une collection, et une sans collection [1].
Par défaut, la bibliographie affiche ceci :
Concilia Africae, Corpus Christianorum Series Latina 140.
De Nativitate Mariae, Corpus Christianorum Series Apocryphorum 10.
La forme la plus ancienne du Protévangile de Jacques, Bruxelles, 1961.
Pseudo-Matthaei Evangelium, Corpus Christianorum Series Apocryphorum 9.
Afficher la version abrégée de la collection
Nous allons modifier les styles pour afficher la version abrégée de la collection, si elle existe, à la place de la version longue.
Par défaut, le macro qui affiche la collection est la suivante [2] :
\newbibmacro*{series+number}{%
\printfield{series}%
\setunit*{\addspace}%
\printfield{number}%
\newunit}
Nous allons la modifier, en la redéfinissant ainsi :
.
La seule modification est ligne 2 : nous testons le champ shortseries
. S’il n’existe pas, nous affichons le champ series
. Sinon, nous affichons le champ shortseries
.
On obtient alors :
Concilia Africae, CCSL 140.
De Nativitate Mariae, CCSA 10.
La forme la plus ancienne du Protévangile de Jacques, Bruxelles, 1961.
Pseudo-Matthaei Evangelium, CCSA 9.
Comment afficher la liste des abréviations ?
Nous allons maintenant afficher la liste des abréviations. Plutôt que de recopier nous même cette liste, avec les risques inhérents d’erreurs , nous allons demander à BibLaTeX de la produire pour nous. Malheureusement il n’existe pas de commande standard sous BibLaTeX pour afficher une telle liste.
C’est pourquoi nous allons :
- créer un nouveau type de tri, permettant de trier selon l’ordre du champ
shortseries
. - appliquer ce tri sur une commande
\printbibliography
. Attention : il vous faut avoir les versions de Biber et BibLaTeX supérieures à 2 pour pouvoir personnaliser le tri au cas par cas. - créer un « bibcheck » pour tester les entrées selon les conditions suivantes :
- avoir les champs
shortseries
etseries
définis. - ne pas avoir un champ
series
déjà affiché dans la bibliographie.
- avoir les champs
- appliquer ce
bibcheck
à la bibliographie. - créer un nouveau environnement bibliographique qui :
- affiche la version abrégée de la série.
- affiche la version longue de la série.
- appliquer cette environnement à la bibliographie.
Trier selon le champ shortseries
J’ai expliqué dans un précédent article comment déclarer un nouveau type de tri.
Pour le cas présent, la déclaration à mettre dans le préambule est simple :
\DeclareSortingScheme{shortseries}{
\sort{
\field{shortseries}
}
\sort{
\field{series}
}
}
Nous trions d’abord selon le champ shortseries
puis selon le champ series
.
Il nous faut ensuite appeller ce tri sur la bibliographie :
\printbibliography[title=Liste des abréviations, sorting=shortseries]
Cela nous produit la liste suivante :
La forme la plus ancienne du Protévangile de Jacques, Bruxelles, 1961.
Pseudo-Matthaei Evangelium, CCSA 9.
De Nativitate Mariae, CCSA 10.
Concilia Africae, CCSL 140.
Filtrer les entrées
Nous avons deux problèmes :
- Nous avons des entrées qui apparaissent alors qu’elles n’ont pas de champ
shortseries
- Nous avons plusieurs fois la même valeur pour le champ
shortseries
.
Nous allons donc utiliser defbibcheck
pour déclarer un contrôle des entrées que l’on met dans la bibliographie.
.
Nous appellons ce contrôle sur la bibliographie avec :
\printbibliography[title=Liste des abréviations, sorting=shortseries,check=shortseries]
Commentons rapidement :
- L. 2 : S’il n’y a pas de champ
shortseries
, nous excluons l’entrée de la bibliographie (\skipentry
). - L. 3 : Nous testons s’il existe un champ
series
:- L. 3 : Si ce champ n’existe pas, nous excluons l’entrée de la bibliographie.
- L. 6 : Si ce champ existe, nous procédons à un test :
- Nous testons, via
\ifcsdef
l’existence d’une commande. Le nom de cette commande est la valeur du champseries
, formaté pour pouvoir servir de nom de commande [3] :\strfield{series}
.- Si cette commande existe, nous excluons l’entrée de la bibliographie (
\skipentry
). - Si elle n’existe pas, nous la créons, en lui donnant comme contenu la valeur du champ
series
:\savefieldcs{series}{\strfield{series}}
.
- Si cette commande existe, nous excluons l’entrée de la bibliographie (
- Nous testons, via
Nous obtenons alors la bibliographie finale :
Pseudo-Matthaei Evangelium, CCSA 9.
Concilia Africae, CCSL 140.
Imprimer les équivalences
Il nous reste plus qu’à définir un nouvel environnement pour afficher correctement cette « bibliographie », c’est à dire en imprimant uniquement le champ shortseries
et le champ series
.
C’est là le code le plus complexe, car il nécessite de comprendre non seulement les fonctions de BibLaTeX, mais aussi la création de liste personnalisée.
Le voilà déjà :
Comme nous utilisons des commandes contenant le caractère @
dans leurs noms, nous devons entourer le code de \makeatletter
et de \makeatother
.
Le code est largement inspiré de l’environnement bibliographique shorthands
de BibLaTeX.
L. 2-3 nous créons une longueur, \shortserieswidth
, valant 4 em. Cette longueur sera affectée à l’espace dans lequel s’inscrira la version abrégée de la collection. Cela nous permet d’avoir des abréviations allant jusqu’à 4 caractères [4].
L. 4 Nous commençons à définir un environnement shortseries
. Les trois options qui suivent correspondent respectivement :
- au code à mettre en début de bibliographie, en excluant le titre (l. 5-13).
- au code à mettre en fin de bibliographie (l. 14) .
- au code à mettre pour chaque élément de la bibliographie (l. 15).
En début de bibliographie, nous déclarons que, pour cette bibliographie, l’impression d’une entrée se fera à partir du driver series
. Nous déclarons cela avec \renewcommand{\blx@driver}[1]{\csuse{blx@bbx@series}}
. Ce sont des commandes de bas niveau, que je vous déconseille en général de manipuler. Dans le cas présent, je n’ai pas trouvé de commande de plus haut niveau. Merci de me signaler si vous voyiez mieux.
Nous commençons alors une liste, à l’aide de la commande de bas niveau \list{\thefield{shortseries}}
[5]. Le label de chaque entrée de la liste correspondra au champ shortseries
. Les paramètres de cette liste sont définis l. 7-13.
Ce sont les paramètres suivants :
-
\labelwidth
: taille consacrée au label, ici égale à\shorthserieswidth
. -
\labelsep
distance entre le label et le contenu de l’entrée, ici égale à la longueur\biblabelsep
, qui est définie par BibLaTeX. -
\leftmargin
la marge gauche de la liste, ici égale à\bibhang
, définie par BibLaTeX, auquel on ajoute\labelsep
(c’est le code \advance\leftmargin\labelsep). -
itemsep
: espace entre les éléments de la liste, ici égale àbibitemsep
, définie par BibLaTeX. -
parsep
: espace entre les paragraphes dans la liste, ici égale àbibparsep
, définie par BibLaTeX. - quant à
\def\makelabel##1{##1\hss}
cela indique que les label (donc dans notre cas les collections abrégées) sont alignés sur la gauche [6].
À la fin de l’environnement bibliographique, nous fermons la liste : \endlist
.
Enfin pour chaque entrée de la bibliographie, nous insérons un \item
(l. 15).
Il ne nous reste plus qu’à définir un « driver » series
, qui se contente d’afficher le champ series
:
\DeclareBibliographyDriver{series}{
\printfield{series}
}
Nous appelons donc notre commande \printbibliography
ainsi :
\printbibliography[sorting=shortseries,title=Liste des abréviations,check=shortseries,env=shortseries]
Et nous obtenons alors notre liste d’abréviations :
CCSA Corpus Christianorum Series Apocryphorum
CCSL Corpus Christianorum Series Latina
Il ne nous reste plus qu’à afficher notre bibliographie, avec une bête commande : \printbibliography
.