No meu exemplo "real", preciso imprimir bibliografias ordenadas com contador zerado, então preciso usar defernumbers=true
e preciso usar \nocite{*}
juntamente com citações reais. Descobri que quando falta uma chave, a numeração é zerada em todos os lugares. Obviamente para o documento final, onde todas as chaves estão presentes, isso não é um problema, mas no processo de redação do documento é. Você tem uma maneira de corrigir esse problema?
\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}
Responder1
O defernumbers
recurso funciona gravando os números das etiquetas no .aux
arquivo. biblatex
só faz isso quando nenhuma outra chamada Biber for necessária, porque a expectativa é que uma chamada Biber possa potencialmente alterar a classificação, o que significaria que os números dos rótulos também mudariam.
No caso de uma chave de entrada ausente/errada, você sempre receberá uma solicitação de nova execução do Biber, o que significa que os números dos rótulos nunca serão gravados no .aux
arquivo.
Se você precisar citar chaves de entrada indefinidas durante a fase de rascunho, talvez você possa simplesmente desabilitar defernumbers
.
Se você insiste defernumbers
, aqui está uma maneira de escrever os números das etiquetas, .aux
mesmo que haja uma solicitação de reexecução do 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}