Biblatex, Nullnummerierung, wenn ein unbekannter Schlüssel mit nocite und defernumbers aufgerufen wird

Biblatex, Nullnummerierung, wenn ein unbekannter Schlüssel mit nocite und defernumbers aufgerufen wird

In meinem „echten“ Beispiel muss ich sortierte Bibliografien mit einem Zähler-Reset drucken, also muss ich verwenden defernumbers=trueund 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 defernumbersFunktion funktioniert, indem die Etikettennummern in die .auxDatei geschrieben werden. biblatexDies 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 .auxDatei 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, .auxselbst 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}

Undefiniertes Zitat, aber die Referenzen sind trotzdem wie erwartet nummeriert.

verwandte Informationen