Le problème
Soit les références bibliographiques suivantes :
@book{Rouquette2012,
Address = {Tampere},
Author = {Maïeul Rouquette},
Publisher = {Atramenta},
Title = {(Xe)LaTeX appliqué aux sciences humaines},
Year = {2012}}
@book{Leal2012,
Address = {Rome},
Author = {Jerónimo Leal and Gianluca Pignalberi},
Publisher = {Compomat},
Subtitle = {Guida alla composizione con il proprio computer},
Title = {Edizioni Critiche},
Year = {2012}}
Soit le fichier contenant le code suivant :
\documentclass{beamer}
\usepackage{fontspec,xunicode,polyglossia}
\setmainlanguage{french}
\usepackage[citestyle=verbose]{biblatex}
\bibliography{ztest}
\begin{document}
\begin{frame}
\begin{itemize}
\item<1->\cite{Rouquette2012}
\item<2->\cite{Leal2012}
\end{itemize}
\end{frame}
\end{document}
Cela signifie que je souhaite que ma première diapositive affiche d’abord la référence de l’ouvrage de Rouquette [1], et ensuite celle de Léal, en deux étapes.
À la compilation, nous disposons de la diapositive contenant les deux couches suivantes :
Comme vous pouvez constater, les références de la seconde diapositive sont abrégées, alors que nous les souhaiterions complètes.
Explication et résolution du problème
Par défaut, BibLaTeX abrège les références bibliographiques après le premier appel, et ce, même si on utilise le style « verbose ».
Or, la première couche de la diapositive a appelé toutes les références de la diapositive, même si elle n’en a affiché qu’une.
Il faut donc demander à BibLaTeX d’afficher les références bibliographiques de manière complètes, dans tout les cas.
Si on fouille le fichier verbose.cbx
, on trouve les lignes suivantes :
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
Ce qui signifie que la commande \cite
fait appel à la macro cite
.
Et cette macro est ainsi définie, dans le même fichier :
\newbibmacro*{cite}{%
\usebibmacro{cite:citepages}%
\ifciteseen
{\iffieldundef{shorthand}
{\usebibmacro{cite:short}}
{\usebibmacro{cite:shorthand}}}
{\usebibmacro{cite:full}}}
La commande \ifciteseen
vérifie si la référence courante a déjà été vue. Si oui, elle fait appel à la macro cite:shorthand
ou cite:short
, selon que le champ shorthand
existe ou non, et si non, elle fait appel à la macro cite:full
.
Il nous suffit donc de redéfinir la macro \cite
dans le préambule, pour ne plus appeler que cite:full
.
\renewbibmacro*{cite}{%
\usebibmacro{cite:citepages}%
{\usebibmacro{cite:full}}}
Et c’est ainsi que l’on obtient nos références complètes sur toutes les couches.