Chemin principal : Accueil > LaTeX > BibLaTeX > Gérer les sous-collections

Gérer les sous-collections

mardi 12 mai 2015, par Maïeul
Suivre la vie du site RSS 2.0 Forum

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

  1. @book{CSCO545,
  2. Number = {545},
  3. Series = {Corpus Scriptorum Christianorum Orientalium},
  4. Shortseries = {CSCO},
  5. Shortsubseries = {Copt},
  6. Subnumber = {48},
  7. Subseries = {Scriptores Coptici},
  8. Title = {Encomiastica from the Pierpont Morgan Library}
  9. }

Télécharger

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.
  1. \usepackage[tools={realauthor,manuscripts,subseries},bibstyle=verbose]{biblatex-multiple-dm}
  2. \usepackage[bibstyle=multiple-dm,…]{biblatex}

Télécharger

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

  1. \renewbibmacro*{series+number}{%
  2. \iffieldundef{shortseries}{\printfield{series}}{\printfield{shortseries}}%
  3. \setunit*{\addspace}%
  4. \printfield{number}%
  5. \newunit}

Télécharger

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 :

  1. \xpatchbibmacro{series+number}%
  2. {\printfield{series}}%
  3. {\iffieldundef{shortseries}{\printfield{series}}{\printfield{shortseries}}}%
  4. {}
  5. {}

Télécharger

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 :

  1. \newbibmacro{subseries+subnumber}{%A default subseries+subnumber style
  2. \setunit *{\subseriesseparator}%
  3. \printfield{subseries}%
  4. \setunit *{\addspace}%
  5. \printfield{subnumber}%
  6. \newunit%
  7. }

Télécharger

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

P.-S.

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

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

À propos

Titulaire d’un master en sciences religieuses de l’Université de Strasbourg, je suis depuis août 2012 assistant-diplômé en histoire du christianisme antique et littérature apocryphe chrétienne à l’Université de Lausanne, où je prépare une thèse sous la direction de Frédéric Amsler.

Dans le cadre de la rédaction de mon mémoire de master, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul