Accueil > LaTeX > BibLaTeX > Gérer les sous-collections

Gérer les sous-collections

mardi 12 mai 2015, par Maïeul

Certaines collections, un peu perverses, fonctionnent avec des sous-collections suivant un système de double numérotation :
 une numérotation qui indique l’ordre de publication du volume dans l’ensemble de la collection.
 une numérotation qui indique l’ordre du volume dans la sous-collection.

C’est le cas par exemple du Corpus Scriptorum Christianorum Orientalium, qui possède six sous-séries par langue, plus les subsidiae.

On souhaiterait dès lors indiquer d’abord la collection suivi du numéro au sein de la collection, puis le numéro au sein de la sous-collection.

Comment faire ?

Le problème

Par défaut, biblatex ne gère que les collections. Il faut dès lors déclarer des nouveaux champs. C’est le but du style biblatex-subseries, que je viens de déposer sur le CTAN.

L’utilisation de base

Le fichier .bib

Trois nouveaux champs sont proposés :

  • subseries, la sous-collection.
  • shorsubseries, une forme abrégée de la sous-collection.
  • subnumber, le numéro au sein de sous-collection.

Ce qui donnerait un fichier du type

@book{CSCO545,
	Number = {545},
	Series = {Corpus Scriptorum Christianorum Orientalium},
	Shortseries = {CSCO},
	Shortsubseries = {Copt},
	Subnumber = {48},
	Subseries = {Scriptores Coptici},
	Title = {Encomiastica from the Pierpont Morgan Library}
}

Le chargement du style

Deux solutions peuvent être utilisées pour charger le style biblatex-short-series :
 comme option au chargement de biblatex : \usepackage[citestyle=verbose,bibstyle=subseries]{biblatex}. Dans ce cas le style bibliographique verbose sera automatiquement chargé.
 si on ne souhaite pas utiliser le style bibliographique verbose ou si on souhaite charger d’autres styles qui définissent des nouveaux champs, on utilisera en plus le package biblatex-multipledm.

\usepackage[tools={realauthor,manuscripts,subseries},bibstyle=verbose]{biblatex-multiple-dm}
\usepackage[bibstyle=multiple-dm,…]{biblatex}

Résultat

L’exemple ci-dessus sera affiché de la manière suivante :
Encomiastica from the Pierpont Morgan Library. Corpus Scriptorum Christianorum Orientalium 545 — Scriptores Coptici 48

On peut décider de changer le "–" en redéfinissant \subseriesseparator.

Compatibilité avec les collection abrégée

Dans un précédent article, j’expliquais comment gérer facilement les formes abrégés des collections. Si vous appliquez la technique que j’expose, vous constaterez que la sous-collection n’apparaît pas.

La raison est assez simple : mon exemple redéfinissait la macro bibliographique series+number, via

\renewbibmacro*{series+number}{%
  \iffieldundef{shortseries}{\printfield{series}}{\printfield{shortseries}}%
  \setunit*{\addspace}%
  \printfield{number}%
  \newunit}

Le problème est que le style subseries intègre du code dans series+number avant que nous le redéfinissions.

La solution est assez simple. Elle consiste à non pas redéfinir la macro bibliographique, mais à la patcher.

Remplacez donc les lignes précédentes par :

Commentaire :
 l. 1 : nous utilisons la commande \xpatchbibmacro du package xpatch, lequel est chargé par le style subseries pour modifier la macro bibliographique series+number.
 l. 2 : dans le code cette macro, nous remplaçons \printfield{series} par \iffieldundef{shortseries}{\printfield{series}}{\printfield{shortseries}}
 l. 3 : \iffieldundef{shortseries}{\printfield{series}}{\printfield{shortseries}}, c’est à dire par un code qui affiche la collection abrégée si elle existe et la collection complète sinon.
 l. 4-5 : deux derniers arguments de \xpatchbibmacro qui correspondent au code exécuté en cas d’échec ou de réussite du patch. Ici on ne fait rien.

Petit défi

Sachant que l’affichage de la sous-série se fait via la macro subseries+subnumber ainsi définie :

\newbibmacro{subseries+subnumber}{%A default subseries+subnumber style
  \setunit *{\subseriesseparator}%
  \printfield{subseries}%
  \setunit *{\addspace}%
  \printfield{subnumber}%
  \newunit%
}

trouver une manière d’afficher les sous-séries sous forme abrégée et d’afficher une table des sous-série.


Ceci est le premier projet dont j’ai décidé de versionner le code non plus sur github mais sur Framagit.

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)