Accueil > LaTeX > BibLaTeX > Vérification des filiations avec biblatex (1) : vérifier avec les messages (…)
Vérification des filiations avec {biblatex} (1) : vérifier avec les messages de compilations
lundi 19 décembre 2011, par
Je viens de rendre mon demi-mémoire. Deux jours après, je me suis apercu que j’avais mal rentrée certaines sous-entrées pour les divisions de sources.
Conséquence : un affichage pas totalement uniforme. C’est un peu triste et dommage. Pour éviter ce genre de problème, on peut avoir des outils de contrôles. En voici un premier. Le suivant nécessite la prochaine version de Biber, je l’exposerai donc plus tard.
Le problème
Si on utilise ma méthode de gestion des divisions de sources primaires, une sous-entrée de gestion de division bibliographique doit être du même type que l’entrée mère.
Par exemple cette relation est correcte :
@bookinbook{AcPierretrad,
Address = {Paris},
Annotator = {Gérard Poupon},
Booktitle = {Écrits apocryphes chrétiens},
Date-Added = {2011-03-14 16:28:40 +0100},
Date-Modified = {2011-04-26 11:50:27 +0200},
Entrysubtype = {apocryphes},
Pages = {1054-1105},
Publisher = {Gallimard},
Series = {Bibliothèque de la Pléiade},
Sortname = {AAA},
Title = {Actes de l'apôtre Pierre et de Simon},
Translator = {Gérard Poupon},
Usera = {1},
Volume = {1},
Year = {1997}}
@bookinbook{AcPierretrad1-3,
Crossref = {AcPierretrad},
Date-Added = {2011-11-05 22:09:02 +0100},
Date-Modified = {2011-11-06 02:53:05 +0100},
Pages = {1054-1059},
Titleaddon = {1-3}}
En revanche cette relation n’est pas correcte et posera des problèmes d’affichage
@bookinbook{AcPierretrad,
Address = {Paris},
Annotator = {Gérard Poupon},
Booktitle = {Écrits apocryphes chrétiens},
Date-Added = {2011-03-14 16:28:40 +0100},
Date-Modified = {2011-04-26 11:50:27 +0200},
Entrysubtype = {apocryphes},
Pages = {1054-1105},
Publisher = {Gallimard},
Series = {Bibliothèque de la Pléiade},
Sortname = {AAA},
Title = {Actes de l'apôtre Pierre et de Simon},
Translator = {Gérard Poupon},
Usera = {1},
Volume = {1},
Year = {1997}}
@book{AcPierretrad1-3,
Crossref = {AcPierretrad},
Date-Added = {2011-11-05 22:09:02 +0100},
Date-Modified = {2011-11-06 02:53:05 +0100},
Pages = {1054-1059},
Titleaddon = {1-3}}
L’entrée mère est en effet de type @bookinbook
et l’entrée fille de type @book
.
Pour résoudre ce problème, il faudrait qu’un message s’affiche dans les logs à chaque fois qu’un tel type de relation existe.
La solution est assez simple : il faut redéfinir la macro begentry
qui est utilisée à chaque entrée bibliographique.
Dans cette macro, il faudra :
– tester si le champ titleaddon
est utilisé. Pour cela, on utilise la commande \iffieldundef
.
– Si tel est le cas, alors tester si le pseudo-champ entrytype
est hérité de l’entrée mère. On utilise pour cela la commande \iffieldxref
, qui vérifie si un champ est égal au champ de l’entrée mère.
– Si le le champ entrytype
n’est pas égal au champ de l’entrée mère, alors on affiche un petit mot dans les messages de compilations, avec la commande \BibliographyWarning
.
Ce qui donne au final :
\renewbibmacro{begentry}{\iffieldundef{titleaddon}{}{% Vérifier la présence de titleaddon
\iffieldxref{entrytype}{}% Tester l'égalité de type entrée l'entrée fille et l'entrée mère
{\BibliographyWarning{Sous-entrée n'étant pas du même type que l'entrée mère}}% Afficher le cas échéant un message, si l'entrée mère n'est pas de même type que l'entrée fille.
%
}%
}
Et voilà, à chaque fois qu’une sous-entrée pour gestion de division de sources n’est pas du bon type, j’obtiendrais dans les messages de compilation quelquechose du genre :
Sous-entrée n’étant pas du même type que l’entrée
mère (biblatex) at entry ’Andreconversante8’ on input line 44.