Chemin principal : Accueil > LaTeX > BibLaTeX > Division de sources et op. cit.

Division de sources et op. cit.

dimanche 6 novembre 2011, mise à jour jeudi 12 décembre 2013, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Cet article est obsolète. Soit qu’il existe une manière plus « moderne » de procéder, soit que j’ai trouvé une autre méthode plus appropriée.
Voyez plutôt la nouvelle version : Division des sources antiques (2).

J’avais expliqué dans un précédent article, la manière dont je gère les divisions de sources. Ce système pose cependant un problème : la gestion standard des op. cit. n’est pas idéale.

Les exemples

Pour cet article, je me base sur les entrées suivantes :

  1. @bookinbook{ActaPetriPauli,
  2. Address = {Hildesheim and New York},
  3. Booktitle = {Acta apostolorum apocrypha},
  4. Editor = {Richard Aldebert Lipsius},
  5. Entrysubtype = {apocryphes},
  6. Pages = {178-222},
  7. Publisher = {Georg Olms Verlag},
  8. Title = {Acta Petri et Pauli},
  9. Usera = {1},
  10. Volume = {I},
  11. Year = {1972 (rééd. de 1891)}}
  12.  
  13. @bookinbook{ActaPetriPauli80,
  14. Crossref = {ActaPetriPauli},
  15. Pages = {213-214},
  16. Title = {Acta Petri et Pauli},
  17. Titleaddon = {80},
  18. Usera = {1}}
  19.  
  20. @bookinbook{ActaPetriPauli81,
  21. Crossref = {ActaPetriPauli},
  22. Pages = {214-215},
  23. Title = {Acta Petri et Pauli},
  24. Titleaddon = {81},
  25. Usera = {1}}

Télécharger

Premier problème : perte de la division de source

Soit le code suivant :

  1. \cite{ActaPetriPauli81}
  2.  
  3.  
  4. \cite{ActaPetriPauli81}

Télécharger

J’obtiens par défaut :

Acta Petri et Pauli, 81, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert Lipsius, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 214–215

Acta Petri et Pauli, op. cit.

Pour rétablir la division de source, il me faut modifier la manière dont sont affichées les versions abrégées. Cela se passe via la macro cite:title, qui par défaut est définie ainsi, dans le style verbose-trad-2 :

  1. \newbibmacro*{cite:title}{%
  2. \printtext[bibhyperlink]{%
  3. \printfield[citetitle]{labeltitle}%
  4. \setunit{\nametitledelim}%
  5. \bibstring[\mkibid]{opcit}}}

Télécharger

Il suffit de la modifier pour lui indique d’imprimer le champ titleaddon et le champ pages :

  1. \renewbibmacro*{cite:title}{%
  2. \printtext[bibhyperlink]{%
  3. \printfield[citetitle]{labeltitle}%
  4. \setunit{\nametitledelim}%
  5. \bibstring[\mkibid]{opcit}%
  6. \setunit{\bibpagespunct}%
  7. \printfield{titleaddon}%
  8. \setunit{\bibpagespunct}%
  9. \printfield{pages}%
  10. }}

Télécharger

J’obtiens alors :

Acta Petri et Pauli, 81, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert Lipsius, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 214–215

Acta Petri et Pauli, op. cit., 81, p. 214-215

Second problème : pas de op. cit. si je ne cite pas le même passage

J’essaie maintenant :

  1. \cite{ActaPetriPauli}
  2.  
  3.  
  4. \cite{ActaPetriPauli81}

Télécharger

J’obtiens alors

Acta Petri et Pauli, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 178–222

Acta Petri et Pauli, 81, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 214–215

Pas très joli, joli ! Et puis cela prend de la place, ce n’est pas très écolo, donc pas non plus Joly.

Regardons la macro cite, toujours dans le style verbose-trad-2.

  1. \newbibmacro*{cite}{%
  2. \usebibmacro{cite:citepages}%
  3. \global\togglefalse{cbx:fullcite}%
  4. \global\togglefalse{cbx:loccit}%
  5. \bibhypertarget{cite\the\value{instcount}}{%
  6. \ifciteseen
  7. {\iffieldundef{shorthand}
  8. {\ifciteibid
  9. {\usebibmacro{cite:ibid}}
  10. {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
  11. {\usebibmacro{cite:idem}}
  12. {\usebibmacro{cite:name}}%
  13. \usebibmacro{cite:title}}%
  14. \usebibmacro{cite:save}}
  15. {\usebibmacro{cite:shorthand}}}
  16. {\usebibmacro{cite:full}%
  17. \usebibmacro{cite:save}}}}

Télécharger

La solution va consister à regarder si l’élèment parent a déjà été cité. Pour ce faire, je me sert de la commande \ifentryseen{clef}{sioui}{sinon}.

Pour tester si l’élèment parent a été cité, j’utilise \thefield{crossref}

  1. \ifentryseen{\thefield{crossref}}{sioui}{sinon}

J’intègre tout cela dans la macro. Pour éviter de répeter deux fois le code, je met la parti suivante dans une macro, que j’appelle cite:manage :

  1. \ifciteseen
  2. {\iffieldundef{shorthand}
  3. {\ifciteibid
  4. {\usebibmacro{cite:ibid}}
  5. {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
  6. {\usebibmacro{cite:idem}}
  7. {\usebibmacro{cite:name}}%
  8. \usebibmacro{cite:title}}%
  9. \usebibmacro{cite:save}}
  10. {\usebibmacro{cite:shorthand}}}
  11. {\usebibmacro{cite:full}%
  12. \usebibmacro{cite:save}}

Télécharger

Comme je ne veux appliquer le test de l’entrée parente que pour les entrées avec un champ titleaddon, je me sert aussi de la commande \iffieldundef{champ}{si champ vide}{si champ pas vide}. Je dois aussi tester si le champ crossref est défini, sinon biblatex considère que l’entrée vide a déjà été citée.

Je procède à ce test de la manière suivante :

  1. \iffieldundef{crossref}{si champ vide}{si champ non vide}

Au final, cela donne :

  1. \renewbibmacro*{cite}{%
  2. \usebibmacro{cite:citepages}%
  3. \global\togglefalse{cbx:fullcite}%
  4. \global\togglefalse{cbx:loccit}%
  5. \bibhypertarget{cite\the\value{instcount}}{%
  6. \iffieldundef{titleaddon}{\usebibmacro{cite:manage}}%
  7. {\iffieldundef{crossref}{\usebibmacro{cite:manage}}%
  8. {\ifentryseen{\thefield{crossref}}{\usebibmacro{cite:name}\usebibmacro{cite:title}}{\usebibmacro{cite:manage}}%
  9. }}}}%
  10.  
  11.  
  12. \newbibmacro{cite:manage}{%
  13. \ifciteseen
  14. {\iffieldundef{shorthand}
  15. {\ifciteibid
  16. {\usebibmacro{cite:ibid}}
  17. {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
  18. {\usebibmacro{cite:idem}}
  19. {\usebibmacro{cite:name}}%
  20. \usebibmacro{cite:title}}%
  21. \usebibmacro{cite:save}}
  22. {\usebibmacro{cite:shorthand}}}
  23. {\usebibmacro{cite:full}%
  24. \usebibmacro{cite:save}}}

Télécharger

Et j’obtiens :

Acta Petri et Pauli, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 178–222

Acta Petri et Pauli, op. cit., 81, p. 214–215

Troisième problème : si on ne cite pas l’entrée parente

Oui, mais supposons que je ne cite pas d’abord l’entrée mère :

  1. \cite{ActaPetriPauli81}
  2.  
  3.  
  4. \cite{ActaPetriPauli80}

Télécharger

Je perd à nouveau mes op. cit. :

Acta Petri et Pauli, 81, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 214–215, (Version longue du Ps. Marcellus, CANT 193.2)

Acta Petri et Pauli, 80, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 213–214, (Version longue du Ps. Marcellus, CANT 193.2)

Et oui, c’est logique, vu que l’entrée mère n’a jamais été citée, le \ifciteseen{\thefield{crossref}} passe toujours sur la partie fausse.

La solution est alors de citer l’entrée mère ! Oui mais si je la cite, je l’affiche, et cela je n’en veut pas !

Je doit créer une nouvelle commande de citation, qui se contente d’ajouter l’entrée dans la liste des entrées citées, sans l’afficher. J’appelle cette commande fauxcite et la définir ainsi [1] :

\DeclareCiteCommand{\fauxcite}[]
 {}
 {}
 {}
 {}

Il me faut alors utiliser la commande dans la macro cite :

  1. \renewbibmacro*{cite}{%
  2. \usebibmacro{cite:citepages}%
  3. \global\togglefalse{cbx:fullcite}%
  4. \global\togglefalse{cbx:loccit}%
  5. \bibhypertarget{cite\the\value{instcount}}{%
  6. \iffieldundef{usera}{\usebibmacro{cite:manage}}%
  7. {\iffieldundef{crossref}{\usebibmacro{cite:manage}}%
  8. {\ifentryseen{\thefield{crossref}}{\usebibmacro{cite:title}}{\usebibmacro{cite:manage}\fauxcite{\thefield{crossref}}}%
  9. }}}}%

Télécharger

Il faut aussi mettre l’option minicrossrefs à 0, sinon le champ crossref n’est pas retenu par biber.

  1. \usepackage[backend=biber,bibstyle=verbose,citestyle=verbose-trad2,mincrossrefs=0]

J’obtiens alors correctement :

Acta Petri et Pauli, 81, dans Acta apostolorum apocrypha, t. I, éd. Richard Aldebert LIPSIUS, Hildesheim et New York : Georg Olms Verlag, 1972 (rééd. de 1891), p. 214–215

Acta Petri et Pauli, op. cit., 80, p. 213–214

Cela a pour conséquence d’ajouter cette entrée à la bibliographie finale. Il n’est pas forcément logique de mettre les sous-entrées dans la bibliographie finale, et j’explique ailleurs comment éviter cela.

Notes

[1Sur l’usage de \DeclareCiteCommand, je renvoie au manuel de \emphbiblatex.

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 doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, 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. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

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