Accueil > LaTeX > BibLaTeX > Afficher ou non le(s) numéro(s) de page(s), selon le cas
Afficher ou non le(s) numéro(s) de page(s), selon le cas
mardi 18 janvier 2011, par
Lorsqu’on entre une entrée de type @article
dans un fichier BibTex, on peut préciser le numéro des pages.
Le problème est que, par défaut, avec BibLatex, si on précise la page précise lors d’une citation, avec \cite{page}{clef}
, on obtient le numéro des pages rentrées en base de donnée et celui passé en argument. Comme éviter cela ?
Cet article est obsolète : biblatex propose désormais des options.
Exemple de problème
Prenons l’entrée suivante :
@article{Cross1961,
Author = {F. Cross},
Journal = {The Journal of Theological Studies},
Pages = {222-247},
Title = {History and fiction in the African Canons},
Volume = {12},
Year = {1961}}
Si je fais \cite{Cross1961}
, j’obtiens ce que je souhaite :
F. Cross, « History and fiction in the African Canons », in : The Journal of Theological Studies 12 (1961), p. 222–247
En revanche, si je fais \cite[223]{Cross1961}
pour dire que je souhaite simple la page 223 de cet article, j’obtiens ceci :
F. Cross, « History and fiction in the African Canons », in : The Journal of Theological Studies 12 (1961), p. 222–247, p. 223
Ce qui n’est pas ce que je souhaite [1].
Je souhaiterais ceci :
F. Cross, « History and fiction in the African Canons », in : The Journal of Theological Studies 12 (1961), p. 223
Comment faire ? Il faut que je redéfinisse dans mon fichier .bbx
la manière dont s’affiche le champ pages
. Pour cela, je vais utiliser la commande \DeclareFielFormat
. Cette commande va prendre comme argument le nom du champ, ici pages
. Grâce à #1
, j’obtiendrais sa valeur.
J’utilise dedans la commande \iffieldundef
pour vérifier si un champ est vide, en l’occurrence le champ postnote
[2].
J’utilise également la commande \mkpageprefix
, qui affichera la page passée en second argument en fonction du champ de type pagination
passé en premier argument.
Ce qui donne :
\DeclareFieldFormat{pages}{
\iffieldundef{postnote}{\mkpageprefix[bookpagination]{#1}}{}
}
Si le champ postenote
est défini, alors on n’affiche pas la page. Sinon on l’affiche en utilisant le préfixe défini dans le champ bookpagination
[3], par défaut page
.
Cependant pour ma part j’ai opté pour ne pas utiliser le champ bookpagination
mais uniquement pagination
. Ce qui donne donc :
\DeclareFieldFormat{pages}{
\iffieldundef{postnote}{\mkpageprefix[bookpagination]{#1}}{}
}
Et là, miracle, tout fonctionne comme je souhaite.
Et si postnote
contient aussi des commentaires ?
Cependant si je fais, j’obtiens \cite[223 des commentaires]{Cross1961}
.
F. Cross, « History and fiction in the African Canons », in : The Journal of Theological Studies 12 (1961), 223 des commentaires
Et je n’ai plus mon p.
. Cependant, même avant je ne l’avais pas.
La solution est simple, il faut utiliser la commande \pno
, en faisant \cite[\pno 223 des commentaires]{Cross1961}
.
Ce qui me permet d’obtenir :
F. Cross, « History and fiction in the African Canons », in : The Journal of Theological Studies 12 (1961), p. 223 des commentaires
Et voilà !
Je conseille vivement de lire mon article suivant, concernant la pagination des sources antiques.
Évidemment cette contribution n’est pas spécifique aux entrées de type @article
.
[1] Le seul cas où éventuellement je pourrais souhaiter ce type de résultat, c’est si j’avais un système de double pagination, avec par exemple une pagination générale pour la revue et une autre pour l’article. Ce n’est pas le cas dans la plupart des cas.
[2] Il s’agit d’un faux champ, qui est calculé par BibLaTex en fonction des arguments passés aux commandes de citation.
[3] Voir mon prochain article pour les champs de type pagination.