Affichage de l’éditeur au bon endroit
Soit cette œuvre-ci :
@book{MartyHier,
Address = {Bruxelles},
Editor = {Duchesne, Louis and Jean-Baptiste de Rossi},
Entrysubtype = {calendrier},
Number = {Nov. II, 2},
Publisher = {Société des Bollandistes},
Read = {1},
Series = {Acta Sanctorum},
Title = {Martyrologe Hiéronymien},
Usera = {1},
Year = {1894}}
Par défaut elle s’affiche ainsi (avec le style verbose-trad2
:
Louis Duchesne et Jean-Baptiste de Rossi, éds. Martyrologe Hiéronymien. Acta Sanctorum Nov. II, 2. Bruxelles : Société des Bollandistes, 1894
Ce n’est pas très satisfaisant, car Louis Duchesne et Jean-Baptiste de Rossi ne sont pas des directeurs. Je préférerais avoir leurs noms après le titre de l’œuvre, pour bien marquer que celle-ci est anonyme.
J’ai donc fouillé le fichier qui définit l’affichage des entrées de types @book
, c’est à dire le fichier standard.bbx
.
Et j’ai vu que l’entrée était affichée ainsi [1] :
Dans mon préambule, je copie-colle ce code et modifie la ligne 4. J’y effectue un test avec la commande \iffieldequalstr
pour appeler, si jamais l’entrée est une source primaire, la macro author
.
Ce qui donne :
\iffieldequalstr{usera}{1}{\usebibmacro{author}}{\usebibmacro{author/editor+others/translator+others}}
J’obtiens alors :
Martyrologe Hiéronymien. Sous la dir. de Louis Duchesne et Jean-Baptiste de Rossi. Acta Sanctorum Nov. II, 2. Bruxelles : Société des Bollandistes, 1894
Bonne chaîne de langues
A oui, mais Duchesne et de Rossi ne sont pas les directeurs de publications. Qu’à cela ne tienne : je modifie la chaîne de langue byeditor
en y insérant un test [2] :
\DefineBibliographyStrings{french}{%
byeditor = \iffieldequalstr{usera}{1}{{éd\adddot}}{{dir\adddotspace}}`
}
ce qui me donne ceci :
Martyrologe Hiéronymien. éd. Louis Duchesne et Jean-Baptiste de Rossi. Acta Sanctorum Nov. II, 2. Bruxelles : Société des Bollandistes, 1894
Ce qui est nettement mieux !
op. cit., encore et toujours
Par contre là deuxième fois que je cite mon œuvre, j’obtiens :
Duchesne et Rossi, Martyrologe Hiéronymien, op. cit.
Le problème se situe au niveau de la macro cite:name
dans le fichier verbose-trad2.cbx
Elle est définie ainsi :
\newbibmacro*{cite:name}{%
\printnames{labelname}%
\setunit*{\nametitledelim}}
Or labelname
s’appuie sur l’auteur et à défaut sur l’éditeur. Si pour les études secondaires cela peut être utile, ce n’est pas le cas pour les sources anciennes.
Il me suffit de redéclarer la macro, en insérant un test conditionnel sur le champ usera
:
\renewbibmacro*{cite:name}{%
\iffieldequalstr{usera}{1}{\printnames{author}}{\printnames{labelname}}%
\setunit*{\nametitledelim}}
Ce qui me donne :
Martyrologe Hiéronymien, op. cit.
Ce qui est bien !
Oui mais \ifsingletitle
Oui mais voilà, je me suis arrangé pour avoir des véritables op. cit. [3].
Ce qui fait que j’obtiens :
op. cit.
lorsque je cite le martyrologe la deuxième fois. Pourquoi ? Parce que ifsingletitle
considère les éditeurs comme des auteurs. C’est à dire que si les éditeurs n’ont édité qu’un seul ouvrage, il renvoie vrai. Par conséquent, suivant mon précédent article, le titre n’est pas affiché. Mais comme l’auteur n’est pas non plus affiché (et pour cause, il est anonyme !), j’obtiens un simple op. cit.. Or j’ai d’autres œuvres anonymes qui pourraient être dans le cas.
Il faut donc que dans ma redéfinition de la macro cite:title
je modifie à nouveau ma ligne
\ifsingletitle{}{\printfield[citetitle]{labeltitle}}%
Pour choisir de ne pas afficher le titre :
- si le couple auteur/titre est unique
- ET si je ne suis pas dans le cas où j’ai un source primaire (champ
usera
égal à1
) ET que cette source n’a pas d’auteur (champauthor
indéfini).
Je pourrais bien sûr faire des imbrications de test. Ceci dit il est plus simple de regrouper tout cela dans un test unique, via la commande \ifboolexpr
qui permet de tester la valeur d’une expression booléenne. Donc ici, combiner les tests que je viens de lister.
Ce qui donne cela [4] :
…
\ifboolexpr{test{\ifsingletitle} and not (test {\iffieldundef{author}} and test{\iffieldequalstr{usera}{1}})}{}{\printfield[citetitle]{labeltitle}}%
…
En mettant cela à la place de mon précédent test sur ifsingletitle
, j’obtiens correctement, lors de ma deuxième citation :
Martyrologe Hiéronymien, op. cit.
Et voilà … un petit tour du problème des œuvres anonymes [5].