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 :
- Elle ne permettait pas d’obtenir un résultat correct si l’élement parent n’avait pas été cité [1].
- 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] :
- Copier sa valeur dans une commande
\crossref
, à l’aide de la commande\savefield
. - 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
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)