Accueil > LaTeX > BibLaTeX > Un nouveau type d’entrée : @bookinarticle

Un nouveau type d’entrée : @bookinarticle

vendredi 2 décembre 2011, par Maïeul

Biblatex permet de créer facilement des nouveaux types d’entrées. Voici un nouveau type que je viens de me créer : @bookinarticle.

Le code est encore expérimental, mais j’ai bon espoir de trouver le temps de le stabiliser et de réfléchir à une normalisation.

Le problème

Il arrive que certains textes anciens soient d’abord édités dans des articles, et ne soient publiés sous forme de livre que plus tard.

Je suis alors dans une double contrainte :
 signaler que mon texte se trouve dans une revue
 signaler que ce n’est pas l’article en soi qui m’intéresse, mais l’édition critique du texte.

Du coup il me faudrait une syntaxe du type :

Auteur ancien, titre du texte, dans Editeur Moderne, « titre de l’article », dans Revue xxx (année), p. xxx-yyy

Typiquement, voici un exemple que j’ai dans mon travail [1]

CHRYSOSTOME LATIN, De Ioseph ubi ab uxore patroni apud eum accusatur, dans François LEROY, « Les 22 inédits de la catéchèse donatiste de Vienne : Une édition provisoire », dans Recherches Augustiniennes 31 (1999), p. 161–164

L’entrée dans le fichier .bib

Si biblatex permet de créer des nouveaux types d’entrées, il ne permet pas encore de créer des nouveaux champs [2] !

Par conséquent, je suis obligé de ruser avec les champs existants. C’est pourquoi j’ai choisis de mettre l’auteur de l’article dans booktitle, même s’il ne s’agit pas du livre et le titre de l’article dans mainttitle et mainsubtitle.

Ce qui donne :

@bookinarticle{DeIoseph,
	Author = {{Chrysostome Latin}},
	Bookauthor = {François Leroy},
	Entrysubtype = {sermon},
	Journal = {Recherches Augustiniennes},
	Number = {31},
	Maintitle = {Les 22 inédits de la catéchèse donatiste de Vienne},
	Mainsubtitle = {Une édition provisoire},
	Pages = {161-164},
	Title = {De Ioseph ubi ab uxore patroni apud eum accusatur},
	Year = {1999}}

L’entrée

Un type d’entrée bibliographique se déclare avec un driver bibliographique.
J’ai donc pioché dans le fichier standard.bbx pour trouver les différents macro bibliographiques pour constituer mon texte. En l’occurence, j’ai fait une forme de mélange entre @bookinbook et @article.

De plus, comme je suis dit qu’une entrée de type @inarticle pouvait peut être servir un jour, j’ai préféré créer une entrée @inarticle et dire que @bookinarticle est un alias de @inarticle.

Je déclare donc mon entrée via \DeclareBibliographyDriver, et l’alias via \DeclareBibliographyAlias.

Ce qui donne

\DeclareBibliographyDriver{inarticle}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{bybookauthor}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{maintitle}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{journal+issuetitle}%
  \newunit
  \usebibmacro{byeditor+others}%
  \newunit
  \usebibmacro{note+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}
\DeclareBibliographyAlias{bookinarticle}{inarticle}

Peaufinage

Si je procède un test, j’obtiens :

CHRYSOSTOME LATIN, De Ioseph ubi ab uxore patroni apud eum accusatur, dans François LEROY, Les 22 inédits de la catéchèse donatiste de Vienne : Une édition provisoire, dans Recherches Augustiniennes 31 (1999), p. 161–164

Pour déclarer que, dans le cas d’une entrée de type @bookinarticle ou @inarticle, le champ maintitle soit entre guillemet, il me faut utiliser la commande \DeclareFieldFormat.

Celle-ci prend trois arguments :
 Le premier, optionnel, reçoit les types d’entrées dans lesquelles le formatage s’appliquent. Si plusieurs types, les séparer par une virgule.
 Le second, obligatoire, est le champ dont on défini le formatage.
 Le troisième, obligatoire, est le formatage. On peut y mettre des commandes LaTeX, et le symbole #1 correspond à la valeur du champ.

Pour gérer les guillemets, on utilise la commande propre à biblatex \mkbibquote, qui se charge de choisir les bons guillemets. Il est également conseiller d’utiliser la commande isdot, qui remplace un éventuel point en point d’abréviation. C’est en tout cas comme cela qu’est déclaré le formatage des titre d’articles et autres entrées :

\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibquote{#1\isdot}}

Pour mon cas, à savoir le champ maintitle des entrées @bookinarticle et @inarticle, cela donne :

\DeclareFieldFormat[inarticle,bookinarticle]{maintitle}{\mkbibquote{#1\isdot}}

Et j’ai donc bien

CHRYSOSTOME LATIN, De Ioseph ubi ab uxore patroni apud eum accusatur, dans François LEROY, Les 22 inédits de la catéchèse donatiste de Vienne : Une édition provisoire, dans Recherches Augustiniennes 31 (1999), p. 161–164

Bon, et puis tant que j’y suis, autant ne pas faire les choses à moitié, et afficher correctement le champ title des entrées @inarticle :

\DeclareFieldFormat[inarticle]{title}{\mkbibquote{#1\isdot}}

Voilà, le système d’inventer son propre type d’entrée n’est pas forcément idéal, mais faute de mieux !


[1Si quelqu’un connaît une édition plus récente, je suis preneur !

[2Ou alors j’ai mal lu le manuel.

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.)