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:name
, 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
Second problème : pas de op. cit. si je ne cite pas le même passage
J’essaie maintenant :
\cite{ActaPetriPauli}
…
\cite{ActaPetriPauli81}
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
.
\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}}}}
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}
\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
:
\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}}
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 :
\iffieldundef{crossref}{si champ vide}{si champ non vide}
Au final, cela donne :
\renewbibmacro*{cite}{%
\usebibmacro{cite:citepages}%
\global\togglefalse{cbx:fullcite}%
\global\togglefalse{cbx:loccit}%
\bibhypertarget{cite\the\value{instcount}}{%
\iffieldundef{titleaddon}{\usebibmacro{cite:manage}}%
{\iffieldundef{crossref}{\usebibmacro{cite:manage}}%
{\ifentryseen{\thefield{crossref}}{\usebibmacro{cite:name}\usebibmacro{cite:title}}{\usebibmacro{cite:manage}}%
}}}}%
\newbibmacro{cite:manage}{%
\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}}}
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 :
\cite{ActaPetriPauli81}
…
\cite{ActaPetriPauli80}
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.
Pour le moment je n’ai pas trouvé de manière pour éviter cela.
citepages = omit
Si j’utilise l’option citepages=omit
pour éviter la duplication des pages entre le le champ pages
et l’option postnote
, j’obtiens avec le code suivant :
\cite{ActaPetriPauli81}
...
\cite[214]{ActaPetriPauli8}
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, p. 214
Le citepages=omit
n’est pris en compte. Il faut savoir que citepages=omit définit une macro
cite:full:citepages
qui se charge de gérer la suppression du champ pages
le cas échéant.
La solution est donc d’introduire un appel à cette macro, au début de la macro cite:title
.
Ce qui donne
\renewbibmacro*{cite:title}{%
\usebibmacro{cite:full:citepages}%
\ifpunct{\addspace}{}%
\printtext[bibhyperlink]{%
\ifboolexpr{test{\ifsingletitle} and not (test {\iffieldundef{author}} and test{\iffieldequalstr{usera}{1}})}{}{\printfield[citetitle]{labeltitle}}%
\setunit{\nametitledelim}%
\bibstring[\mkibid]{opcit}}%
\iffieldequalstr{usera}{1}{%
\setunit{\bibpagespunct}%
\printfield{titleaddon}%
\iffieldundef{titleaddon}{}{\setunit{\bibpagespunct}%
\printfield{pages}}%
\newunit%
\printfield{addendum}%
}{}%
}
Et j’obtiens bien à la fin :
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
Vos commentaires
# Le 5 mars 2012 à 11:00, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Merci pour les postes sur biblatex, ils sont en train de me rendre bien des services...
Pour la résolution du troisième problème de division de source, j’ai une ébauche de solution, beaucoup trop bidouillage pour être totalement satisfaisante... C’est de procéder avec phantom. L’idée est de mettre la commande suivante juste après la première citation :
\phantom{\cite{ActaPetriPauli}\hspace{-0.4cm}}
Cela pose plusieurs problèmes : le fait de qu’il faille l’insérer pour chaque première référence croisée, et le problème des ibid, étant donné que biblatex va considérer comme dernière citation celle qui n’est pas affichée.
Je réfléchis en ce moment sur la mise en forme des citations pour une série d’ouvrages en plusieurs volumes. J’aimerais une gestion des citations sensiblement identique à \fvolcite mais en rajoutant la date du volume (voire son éditeur) à la première occurence de celui-ci. Je bloque un peu pour plusieurs raisons mais je pense qu’il faut utiliser la division de sources. Je suis preneuse de toute idée pour résoudre ce problème...
Merci pour ce site.
# Le 5 mars 2012 à 11:10, par Maïeul En réponse à : Division de sources et op. cit. (2)
Pour l’insertion automatique de la commande
\phantom{\cite{ActaPetriPauli}…
, c’est relativement aisée en utilisant la macrobegentry
(voir par ex Vérification des filiations avec biblatex (1) : vérifier avec les messages de compilations). Outre le problème des ibidems, j’ai peur d’avoir des ruptures dans la mise en page (j’avais déjà essayé une technique de ce type).Pour votre problème : vous devriez modifier le style utilisé par
\fvolcite
pour afficher la date / le volume. Pour conditionner son affichage, utiliser plutôtifciteseen
# Le 5 mars 2012 à 11:12, par Maïeul En réponse à : Division de sources et op. cit. (2)
Pour le problème, il serait plus propre d’ajouter l’entrée mère à la liste des entrées vues, mais je n’ai pas encore compris comment.
# Le 5 mars 2012 à 11:19, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Bonne idée que l’utilisation de begentry, je vais essayer. Il est clair que ce serait mieux d’ajouter l’entrée mère à la liste des entrées vues, mais, même si j’y avais bien pensé, je n’ai pas la moindre idée de comment faire. A vrai dire, je ne sais même pas où sont enregistrées les entrées vues ! Merci pour la rapidité des réponses.
# Le 5 mars 2012 à 11:24, par Maïeul En réponse à : Division de sources et op. cit. (2)
de ce que je comprend, les entrées vues sont enregistrées dans une sorte de « tableau ». Mais je n’ai pas encore compris comment y intégrer les nouvelles entrées, car il n’y a pas d’API pour cela (voir mon ticket http://sourceforge.net/tracker/index.php?func=detail&aid=3462001&group_id=244752&atid=1126005)
Par ailleurs l’insertion d’une entrée peut poser des soucis de disparition de blanc http://sourceforge.net/tracker/index.php?func=detail&aid=3462000&group_id=244752&atid=1126005
# Le 5 mars 2012 à 12:00, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Je viens d’essayer la modification de begentry, ça ne fait rien d’autre que changer la mise en page (j’utilise des footcite) et si je mets avec cite, c’est pire encore ! Je continue à y réfléchir...
# Le 5 mars 2012 à 12:02, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Pour mon problème multi-volume, la question est bien d’indiqué la date du volume concerné (6 tomes => 6 dates, et parfois 6 éditeurs) ! je ne vois pas comment entrer toutes les dates dans la seule entrée générale de mon ouvrage... C’est pour cela que je m’intéresse à la division des sources.
# Le 5 mars 2012 à 12:17, par Maïeul En réponse à : Division de sources et op. cit. (2)
pour le pb multivolume, la solution la plus simple ne serait-elle pas de faire une entrée principal de type
@mvbook
pour l’ensemble de l’ouvrage et des sous-entrée de typebook
(crossref) pour chaque volume ? Regardez le manuel de biblatex pour savoir les héritages entre ces deux types d’entrées.Qu’avez vous mis pour begentry (entourez le code avec les balises
<cadre>
et</cadre>
)# Le 5 mars 2012 à 13:19, par Ratatouille En réponse à : Division de sources et op. cit. (2)
# Le 5 mars 2012 à 16:23, par Maïeul En réponse à : Division de sources et op. cit. (2)
Peut être devriez conditionner à la présence du crossref...
ne pas mettre de footcite, mais plutôt cite.
# Le 5 mars 2012 à 17:41, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Dans les deux cas, ça me donne quelque chose de trop bizarre. Je crois que je vais gérer les premières entrées manuellement (en précisant la date des volumes) En ce qui concerne mvbook, je ne vois pas tellement ce que ça change par rapport à book, mais c’est peut-être simplement que je ne sais pas l’utiliser. Merci pour les conseils.
# Le 5 mars 2012 à 17:57, par Maïeul En réponse à : Division de sources et op. cit. (2)
Je pense avoir trouver une solution qui résoudrait tout nos problèmes à la sources. Je teste, et si cela est ok, je fais un article.
# Le 5 mars 2012 à 18:14, par Ratatouille En réponse à : Division de sources et op. cit. (2)
Ce serait génial. J’attends l’article avec impatience ! Merci.
# Le 5 mars 2012 à 18:26, par Maïeul En réponse à : Division de sources et op. cit. (2)
la solution est tellement simple que je m’étonne de ne pas l’avoir trouvée plus tôt.
# Le 5 mars 2012 à 18:35, par Ratatouille En réponse à : Division de sources et op. cit. (2)
voilà un commentaire qui me rend d’autant plus impatiente !
# Le 12 septembre 2012 à 17:44, par Plumber Palmerston North En réponse à : Division de sources et op. cit. (2)
This post is very well written, also has a lot of informations.Thank you.
# Le 4 mai 2014 à 13:11, par Loïs En réponse à : Division de sources et op. cit. (2)
Bonjour, Je rencontre un problème dont je ne trouve pas la solution, je voudrais que lorsque je cite des passages différents d’un même livre sans utiliser le champ titleaddon, le livre référé ne soit pas mentionner avec toutes ses informations des sa deuxième mention, mais qu’il utilise les mentions idem, ibid ... Quelqu’un a une idée ? Merci
# Le 4 mai 2014 à 14:02, par Maïeul En réponse à : Division de sources et op. cit. (2)
pour Loïs : normalement c’est le cas si vous utilisez un style de la famille verbose-trad. Rien à faire de votre côté.
# Le 4 mai 2014 à 20:08, par Loïs En réponse à : Division de sources et op. cit. (2)
J’utilise pourtant verbose-trad2 et après divers essais, le résultat est le même. Les termes sont utilisés correctement seulement si je cite le même extrait du livre, toutes les informations du livre sont toujours données quand je change d’extrait. J’utilise les classes @book (correspondant au livre) et @inbook (correspondant aux différents extraits, reliés au livre par crossref).
# Le 5 mai 2014 à 09:58, par Maïeul En réponse à : Division de sources et op. cit. (2)
quand tu parle d’extrait, tu veux dire que tu cite des @inbook dans un @book ?
Peux tu me donner :
# Le 5 mai 2014 à 23:13, par Loïs En réponse à : Division de sources et op. cit. (2)
Oui, je donne un exemple précis alors : Les références :
Avec un code simple :
Résultat :
Résultat escompté pour la deuxième citation :
Ce serait tellement plus simple s’il y avait un truc pour que ça marche. Merci déjà pour votre intérêt !
# Le 6 mai 2014 à 10:09, par Maïeul En réponse à : Division de sources et op. cit. (2)
ouais, en fait c’est relativement complexe, car formellement une entrée de type @inbook, lors de l’affichage, ne prend pas en compte l’entrée @book correspondante.
Il va falloir pas mal modifier les drivers. Je fais des tests demain dans le train/bus, et je pond un article à ce sujet.
# Le 8 mai 2014 à 15:19, par Maïeul En réponse à : Division de sources et op. cit. (2)
hop, pour Loïs, la solution est affichée ici Entrées
@inbook
, crossref et formes abrégées.