Dans mon exemple réel, j’ai besoin d’imprimer des biblios triées avec un reset du compteur, je dois donc utiliser defernumbers=true et je dois utiliser \nocite{*} couplé à des vraies citations. Je me suis aperçu que lors qu’une clé est manquante, la numérotation est mise à zéro partout. Évidemment pour le document final, où toutes les clés sont bien présentes, cela n’est pas un problème, mais dans le processus d’écriture du document si. Avez-vous un moyen de corriger ce problème ?

\documentclass{article}
\usepackage[defernumbers=true
]{biblatex}

\usepackage{filecontents}
\begin{filecontents}{mabiblio.bib}
@misc{A-01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@book{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
  location = {Location},
  publisher = {Publisher},
}
@article{C03,
  author = {Cuthor, C.},
  year = {2003},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {1},
}
@article{C04,
  author = {Cuthor 2, C.},
  year = {2004},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {2},
}
@article{B03,
  author = {Buthor 2, C.},
  year = {2004},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {1},
}
\end{filecontents}
\addbibresource{mabiblio.bib}

\begin{document}

\cite{authorA-01}% \cite{B02} \cite{C03}
\section{Biblio}

\nocite{*}

\printbibliography

\end{document}

Posée 03 Mar '23, 21:52

Maxime's gravatar image

Maxime ♦
1.3k32439
Taux d'acceptation : 55%


Réponse obtenue ici : https://tex.stackexchange.com/questions/678992/biblatex-zero-numbering-when-an-unknown-key-is-called-with-nocite-and-defernumb/679077#679077

La fonction defernumbers fonctionne en écrivant les numéros de label dans le fichier .aux. biblatex ne le fait qu'une fois qu'aucun autre appel à biber n'est nécessaire, car on s'attend à ce qu'un appel à biber puisse potentiellement changer le tri, ce qui signifierait que les numéros de label changeraient également.

Dans le cas d'une clé d'entrée manquante ou erronée, vous recevrez toujours une demande de réexécution de biber, ce qui signifie que les numéros de label ne sont jamais écrits dans le fichier .aux.

Si vous devez citer des clés d'entrée non définies pendant la phase de rédaction, vous pourriez peut-être simplement désactiver les numéros de référence.

Si vous voulez vraiment avoir les numéros corrects pendant la phase de rédaction, voici un moyen d'écrire les numéros de label dans le fichier .aux même s'il y a une demande de réexécution de biber.

\documentclass{article}
\usepackage[defernumbers=true]{biblatex}

\makeatletter
\blx@AtEndDocument{%
  \iftoggle{blx@defernumbers}
    {\iftoggle{blx@runbiber}
      {\def\do#1{\blx@auxwrite\@mainaux{}{#1}}
       \dolistloop\blx@localnumaux}
      {}}
    {}}
\makeatother

\begin{filecontents}{\jobname.bib}
@misc{A-01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@book{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
  location = {Location},
  publisher = {Publisher},
}
@article{C03,
  author = {Cuthor, C.},
  year = {2003},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {1},
}
@article{C04,
  author = {Cuthor 2, C.},
  year = {2004},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {2},
}
@article{B03,
  author = {Buthor 2, C.},
  year = {2004},
  title = {Charlie},
  journaltitle = {Journal title},
  volume = {1},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\cite{authorA-01}% \cite{B02} \cite{C03}
\section{Biblio}

\nocite{*}

\printbibliography
\end{document}
Lien permanent

Publiée 16 Mar '23, 21:58

Maxime's gravatar image

Maxime ♦
1.3k32439
Taux d'acceptation : 55%

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.