Biblatex, nocite 및 defernumbers를 사용하여 알 수 없는 키가 호출될 때 0 번호 매기기

Biblatex, nocite 및 defernumbers를 사용하여 알 수 없는 키가 호출될 때 0 번호 매기기

내 "실제" 예에서는 카운터 재설정을 사용하여 정렬된 참고문헌을 인쇄해야 하므로 실제 인용과 함께 defernumbers=true사용해야 합니다 . \nocite{*}키가 누락되면 번호 매기기가 모든 곳에서 0으로 설정된다는 것을 발견했습니다. 분명히 모든 키가 존재하는 최종 문서에서는 문제가 되지 않지만 문서를 작성하는 과정에서는 문제가 발생합니다. 이 문제를 해결할 수 있는 방법이 있나요?

\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}

답변1

defernumbers기능은 레이블 번호를 파일에 기록하여 작동합니다 .aux. biblatexBiber 호출이 잠재적으로 정렬을 변경하여 레이블 번호도 변경될 수 있기 때문에 더 이상 Biber 호출이 필요하지 않은 경우에만 그렇게 합니다.

입력 키가 누락되거나 잘못된 경우 항상 Biber 재실행 요청을 받게 되며, 이는 라벨 번호가 파일에 기록되지 않음을 의미합니다 .aux.

초안 단계에서 정의되지 않은 입력 키를 인용해야 한다면 을 비활성화하면 됩니다 defernumbers.

고집하신다면 비버 재방송 요청이 있어도 defernumbers라벨번호를 에 적어주시는 방법이 있습니다 ..aux

\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}

정의되지 않은 인용이지만 참조에는 여전히 예상대로 번호가 매겨져 있습니다.

관련 정보