Division de sources et abréviations

lundi 5 mars 2012, mise à jour mercredi 8 août 2012, 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).

Cet article annule et remplace mon article de novembre sur les divisions de sources et les op. cit. J’ai en effet trouvé une méthode beaucoup plus simple et généraliste pour résoudre les problèmes qui y étaient soulevés.

Rappelons le problème : j’utilise un système se basant sur le mécanisme des références croisées et du champ titleaddon pour gérer la division des sources.

Ce système fonctionne bien, mais la gestion des abréviations de type op. cit. et ibid. pose problème. Il nous faut donc modifier les macros standard de biblatex.

Je tiens à remercier Ratatouille pour m’avoir relancer sur le sujet ce qui m’a permis de trouver une solution satisfaisante.

Les exemples

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

@bookinbook{ActaPetriPauli,
	Address = {Hildesheim and New York},
	Booktitle = {Acta apostolorum apocrypha},
	Editor = {Richard Aldebert Lipsius},
	Entrysubtype = {apocryphes},
	Pages = {178-222},
	Publisher = {Georg Olms Verlag},
	Title = {Acta Petri et Pauli},
	Usera = {1},
	Volume = {I},
	Year = {1972 (rééd. de 1891)}}

@bookinbook{ActaPetriPauli80,
	Crossref = {ActaPetriPauli},
	Pages = {213-214},
	Title = {Acta Petri et Pauli},
	Titleaddon = {80},
	Usera = {1}}

@bookinbook{ActaPetriPauli81,
	Crossref = {ActaPetriPauli},
	Pages = {214-215},
	Title = {Acta Petri et Pauli},
	Titleaddon = {81},
	Usera = {1}}

Premier problème : perte de la division de source

Soit le code suivant :

\cite{ActaPetriPauli81}

…

\cite{ActaPetriPauli81}

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 :

\newbibmacro*{cite:title}{%
  \printtext[bibhyperlink]{%
    \printfield[citetitle]{labeltitle}%
    \setunit{\nametitledelim}%
    \bibstring[\mkibid]{opcit}}}

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

\renewbibmacro*{cite:title}{%
  \printtext[bibhyperlink]{%
    \printfield[citetitle]{labeltitle}%
    \setunit{\nametitledelim}%
    \bibstring[\mkibid]{opcit}%
    \setunit{\bibpagespunct}%
    \printfield{titleaddon}%
    \setunit{\bibpagespunct}%
    \printfield{pages}%
    }}

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

De même, pour gérer le cas où nos deux références se suivent immédiatement, et donc où la deuxième est remplacée par idem, il me faut modifier la macro cite:idem, qui par défaut est ainsi définie :

\newbibmacro*{cite:ibid}{%
  \printtext{%
    \bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{%
      \bibstring[\mkibid]{ibidem}}}%
  \ifloccit
    {\global\toggletrue{cbx:loccit}}
    {}}

Il suffit de la redéfinir ainsi :

\renewbibmacro*{cite:ibid}{%
  \printtext{%
    \bibhyperlink{cite\csuse{cbx@lastcite@\thefield{entrykey}}}{%
      \bibstring[\mkibid]{ibidem}}}%
      \setunit{\bibpagespunct}%
  	\printfield{titleaddon}%
	\iffieldundef{titleaddon}{}{\setunit{\bibpagespunct}%
  	\printfield{pages}}%
  \ifloccit
    {\global\toggletrue{cbx:loccit}}
    {}}

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

J’essaie maintenant :

\cite{ActaPetriPauli80}

…

\cite{ActaPetriPauli81}

J’obtiens alors

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

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.

Dans mon précédent article, c’est ici que les j’avais en effet opté pour une solution peut satisfaisante, qui consistait à tester si l’élément parent avait été cité. Cette solution était peu satisfaisante pour deux raisons :

  1. Elle ne permettait pas d’obtenir un résultat correct si l’élement parent n’avait pas été cité [1].
  2. Elle ne permettait pas d’utiliser des ibid de manière correcte [2].

La solution que j’ai désormais adoptée est plus efficace. Elle se comprend à partir de la manière dont biblatex gère les abréviations de type op. cit. : en stockant dans des tableaux et variables (au sens des langages de programmations) les valeurs du champ entrykey du l’entrée courante. Comme son nom l’indique, ce champ a pour valeur par défaut la clef de citation de l’entrée courante : par exemple ActaPetriPauli81. Toutefois, il est possible, comme pour tout les champs, de modifier temporairement cette valeur au sein d’une macro bibliographique. Nous allons nous servir de cette possibilité pour lui affecter la valeur du champ crossref. Par conséquent, lorsque je citerais une sous-entrée de ActaPetriPauli, j’indiquerais à biblatex de retenir l’entrée ActaPetriPauli dans sa liste des entrées à abréger.

Pour mettre la valeur du champ crossref dans le champ entrykey, il faut procéder en deux temps [3] :

  1. Copier sa valeur dans une commande \crossref, à l’aide de la commande \savefield.
  2. Copier la commande \crossref, à l’aide de la commande \restorefield. Ce qui donne :
    \savefield{crossref}{\crossref}\restorefield{entrykey}{\crossref}

Bien sûr, il faut également conditionner cette copie :

  • À la présence d’un champ crossref, sinon on risque d’avoir des problèmes.
  • À la présence d’un champ titleaddon, car les crossrefs ne sont pas systématiquement pour des divisions de sources. On utilise pour cela la commande bien connue \iffieldundef :
    \iffieldundef{crossref}{}{\iffieldundef{titleaddon}{}{\savefield{crossref}{\crossref}\restorefield{entrykey}{\crossref}}}

Reste à choisir où mettre ces commandes ! Il faut savoir que la gestion des versions abrégées des références se fait au niveau d’une macro cite qui est la première macro appelée par les commandes \XXXcite. Dans le style verbose-trad-2 cette macro est définie ainsi :

\newbibmacro*{cite}{%
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:fullcite}%
  \global\togglefalse{cbx:loccit}%
  \bibhypertarget{cite\the\value{instcount}}{%
    \ifciteseen
      {\iffieldundef{shorthand}
         {\ifciteibid
            {\usebibmacro{cite:ibid}}
            {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
               {\usebibmacro{cite:idem}}
               {\usebibmacro{cite:name}}%
             \usebibmacro{cite:title}}%
	  \usebibmacro{cite:save}}
         {\usebibmacro{cite:shorthand}}}
      {\usebibmacro{cite:full}%
       \usebibmacro{cite:save}}}}

Il suffit donc d’insérer notre code de « recopie » en début de macro :

\renewbibmacro*{cite}{%
\iffieldundef{crossref}{}{\iffieldundef{crossref}{}{\iffieldundef{titleaddon}{}{\savefield{crossref}{\crossref}\restorefield{entrykey}{\crossref}}}}%
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:fullcite}%
  \global\togglefalse{cbx:loccit}%
  \bibhypertarget{cite\the\value{instcount}}{%
    \ifciteseen
      {\iffieldundef{shorthand}
         {\ifciteibid
            {\usebibmacro{cite:ibid}}
            {\ifthenelse{\ifciteidem\AND\NOT\boolean{cbx:noidem}}
               {\usebibmacro{cite:idem}}
               {\usebibmacro{cite:name}}%
             \usebibmacro{cite:title}}%
	  \usebibmacro{cite:save}}
         {\usebibmacro{cite:shorthand}}}
      {\usebibmacro{cite:full}%
       \usebibmacro{cite:save}}}}

J’obtiens correctement :

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

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

P.-S.

La précédente version de cet article contenait une astuce concernant les pages référencées avec la commande \cite. Cette astuce n’avait à vrai dire rien à voir avec le problème qui nous occupe : je l’ai reproduite dans un article dédié.

Notes

[1C’était là mon troisième problème, que je n’arrivais pas à résoudre.

[2Je ne m’étais pas aperçu de ce problème

[3Je renvoie au manuel de biblatex pour plus de détails.

Vos commentaires

  • Le 13 novembre 2014 à 14:45, par Grégoire En réponse à : Division de sources et abréviations

    Bonjour,

    j’ai presque exactement la même question, mais je n’utilise pas le champ titleaddon ; dans l’exemple suivant, les chapitres sont des inbook, avec des titres, des auteurs et des numéros de chapitres spécifiques, tout le reste est pris dans la référence-mère. J’ai essayé de remplacer titleaddon par title dans la macro, mais sans succès, j’ai un op cit qui écrase l’auteur du chapitre et le titre du chapitre...

    5. Gérard Bailloud. « Avant l’histoire ». Dans : Histoire de la France rurale. des origines à 1340. T. 1. Sous la dir. de Georges Duby et Armand Wallon. Seuil, 1975. Chap. 1, p. 402. 6. Guy Fourquin. « Le temps de la croissance ». Dans : Histoire de la France rurale. des origines à 1340. T. 1. Sous la dir. de Georges Duby et Armand Wallon. Seuil, 1975. Chap. 4, p. 530.

  • Le 13 novembre 2014 à 15:06, par Maïeul En réponse à : Division de sources et abréviations

    dans le cas d’une entrée de type @inbook, cette contribution (qui du reste est obsolète n’a pas lieu d’être, puisqu’il s’agit bien d’entrée distincte avec, au final, une entrée par biblio.

    Je vous suggère d’oublier cette contribution et de gérer « normalement » vos entrées. S’il y a un problème, ne pas hésiter à me le reporter, mais avec plus de détails (citer les entrées .bib, et les exemples de citation qui posent souci)

  • Le 13 novembre 2014 à 16:24, par Grégoire En réponse à : Division de sources et abréviations

    Merci pour votre réponse ! Quand j’utilise biblatex "sans plus", cela me donne aussi ce que j’ai indiqué dans l’exemple précédent, alors que le champ est le même dans les deux cas. Il me semble qu’il faudrait arriver, dans la n.6, à quelque chose comme Guy Fourquin. « Le temps de la croissance ». Dans : ibid., ou quelque chose d’approchant... En fait c’est en cherchant "opcit crossref" dans Google que je suis tombé sur cette page, et en cherchant aussi un peu sur "inbook opcit", je n’ai rien trouvé, ou alors je suis passé à côté...

  • Le 13 novembre 2014 à 16:52, par Maïeul En réponse à : Division de sources et abréviations

    a ok, je comprend mieux. oui c’est un problème que je n’ai pas encore résolu, parce cela pose un certains nombre de question liés aux exceptions. Et, avouons le, à ma grande honte, j’ai triché un peu dans le cas qui m’intéressait, en faisant comme ci je ne voyais pas le problème.

    Cela étant, une piste de solution (et vu le problème, ce n’est qu’une piste) est disponible dans http://tex.stackexchange.com/a/172777/7712

  • Le 13 novembre 2014 à 16:52, par Maïeul En réponse à : Division de sources et abréviations

    a terme il faudrait que j’en fasse une contribution clair.

  • Le 13 novembre 2014 à 17:06, par Grégoire En réponse à : Division de sources et abréviations

    Oui effectivement chez moi ça provoque un certain nombre de bugs, et je ne connais pas assez le fond du fonctionnement de TeX pour comprendre ce qui se passe (ça concerne \unhbox et \endcsname...)

    Si jamais vous mettez un jour la main sur une solution définitive pour les op cit dans les inbooks, je serai toujours intéressé ! Merci pour votre aide !

  • Le 13 novembre 2014 à 17:13, par Maïeul En réponse à : Division de sources et abréviations

    abonnez vous au flux rss du blog. Si j’ai une solution elle sera publiée dessus.

  • Le 13 novembre 2014 à 17:54, par Grégoire En réponse à : Division de sources et abréviations

    En fait j’ai trouvé la réponse à ma question grâce à votre article ici Entrées @inbook, crossref et formes abrégées ! Merci beaucoup !

  • Le 13 novembre 2014 à 18:04, par Maïeul En réponse à : Division de sources et abréviations

    comme quoi, je publie tellement que j’oublie que j’avais fait...

    bon, reste plus qu’a encapsuler cela sous forme de package et on met sur le ctan :p

  • Le 13 novembre 2014 à 22:22, par Grégoire En réponse à : Division de sources et abréviations

    Est-ce qu’il est possible que l’utilisation de ce module affecte le fonctionnement de ?\DeclareDataInheritance{book}{inbook}{\noinherit{subtitle}} ?

    J’ai le résultat suivant : (le subtitle du livre principal est repris dans les titres de chapitre)

    5. Gérard Bailloud. « Avant l’histoire. La formation des campagnes française, des origines à 1340 ». Dans : Georges Duby. Histoire de la France rurale. La formation des campagnes française, des origines à 1340. Sous la dir. de Georges Duby et Armand Wal- lon. T. 1. Seuil, 1975. Chap. 1, p. 402.

    6. Guy Fourquin. « Le temps de la croissance. La formation des campagnes française, des origines à 1340 ». Dans : Duby, Histoire de la France rurale, op. cit. Chap. 4, p. 530.

  • Le 13 novembre 2014 à 23:40, par Maïeul En réponse à : Division de sources et abréviations

    non, car l’héritage est un problème de biber, tandis que la gestion des op. cit est un problème de biblatex.

    De toute façon avec biber, le subtitle est normalement transformé en booksubtitle. Est-ce que vous ne compileriez pas par hasard avec bibtex plutôt que biber ?

  • Le 14 novembre 2014 à 14:41, par Grégoire En réponse à : Division de sources et abréviations

    Je n’ai jamais réussi à installer Biber... (sous ubuntu 12.04 LTS) ; quand j’essaie, j’ai les infos suivantes dans le terminal

    Aucune version du paquet biber n’est disponible, mais il existe dans la base de données. Cela signifie en général que le paquet est manquant, qu’il est devenu obsolète ou qu’il n’est disponible que sur une autre source

    E : Le paquet « biber » n’a pas de version susceptible d’être installée

  • Le 14 novembre 2014 à 14:50, par Maïeul En réponse à : Division de sources et abréviations

    hum, toutes mes connaissances sous linux ont du mal à installer biber. Tu as quelle version de texlive ? je te conseiller de poster un message sur les listes francophones de LaTeX. Les mécanisme d’héritage de biber et de bibtex sont différents, ceux de biber beaucoup plus intelligents.

  • Le 14 novembre 2014 à 15:07, par Grégoire En réponse à : Division de sources et abréviations

    Ok, je vais faire ça ! Merci beaucoup !!

  • Le 15 novembre 2014 à 23:44, par Grégoire En réponse à : Division de sources et abréviations

    Bonsoir ! Pour info, j’ai upgradé Ubuntu (version 14.04), ce qui permet d’installer Biber, et à partir de là tout fonctionne très bien ! Encore merci !

  • Le 16 novembre 2014 à 19:53, par Maïeul En réponse à : Division de sources et abréviations

    tant mieux, c’est un peu le souci je crois de LaTeX sous Linux : comme il est svt installé via la distrib, il est + difficle d’avoir la dernière version (mais on peut installer aussi texlive indépendament de la distrib, maintenant que j’y songes. Voir en annexe de mon bouquin)

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 champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Acheter XeLaTeX appliqué aux sciences humaines

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

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

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