In meinem „echten“ Beispiel muss ich sortierte Bibliografien mit einem Zähler-Reset drucken, also muss ich verwenden defernumbers=true
und ich muss verwenden, \nocite{*}
gekoppelt mit echten Zitaten. Ich habe festgestellt, dass, wenn ein Schlüssel fehlt, die Nummerierung überall auf Null gesetzt wird. Für das endgültige Dokument, in dem alle Schlüssel vorhanden sind, ist das offensichtlich kein Problem, aber beim Schreiben des Dokuments ist es das. Können Sie dieses Problem beheben?
\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}
Antwort1
Die defernumbers
Funktion funktioniert, indem die Etikettennummern in die .aux
Datei geschrieben werden. biblatex
Dies wird nur durchgeführt, wenn keine weiteren Biber-Aufrufe erforderlich sind, da davon auszugehen ist, dass ein Biber-Aufruf möglicherweise die Sortierung ändern könnte, was bedeuten würde, dass sich auch die Etikettennummern ändern würden.
Bei einem fehlenden/falschen Eingabeschlüssel erhalten Sie immer eine Biber-Rerun-Anforderung, d. h. die Etikettennummern werden nie in die .aux
Datei geschrieben.
Wenn Sie während der Entwurfsphase undefinierte Eintragsschlüssel zitieren müssen, können Sie diese vielleicht einfach deaktivieren defernumbers
.
Wenn Sie darauf bestehen defernumbers
, gibt es hier eine Möglichkeit, die Etikettennummern in zu schreiben, .aux
selbst wenn eine Biber-Wiederholungsanforderung vorliegt.
\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}