defernumbers를 사용하면 Skipbib에서도 biblatex의 숫자 라벨이 맞지만 \AtEndDocument 인용의 경우 잘못된 것입니다.

defernumbers를 사용하면 Skipbib에서도 biblatex의 숫자 라벨이 맞지만 \AtEndDocument 인용의 경우 잘못된 것입니다.

문맥: biblatex 2.9a그리고 biber 1.9.

덕분에 다음 MWE에서 볼 수 있듯이 참고 문헌( )에서 항목을 건너뛴 경우에도 ' 숫자 레이블이 올바릅니다 defernumbers.biblatexoptions={skipbib}

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{skipbib-aaaa,
  title={Aaaa (skipped from bibliography)},
  options={skipbib}
}
@misc{bbbb,
  title = {Bbbb}
}
@misc{cccc,
  title={Cccc (manually added at end of document)}
}
@misc{dddd,
  title={Dddd (automatically added at end of document)}
}
\end{filecontents}
%
\usepackage[backend=biber,defernumbers]{biblatex}%
\addbibresource{\jobname.bib}
%
\begin{document}
\citetitle{skipbib-aaaa} and \citetitle{bbbb}
\printbibliography
\citetitle{cccc}%
% \AtEndDocument{and \citetitle{dddd}}
\end{document}

(아스키 아트):

   Aaaa (skipped from bibliography) and Bbbb

References
[1] Bbbb.
[2] Cccc (manually added at end of document).

   Cccc (manually added at end of document)

그러나 인용이 추가되자마자 \AtEndDocument(두 번째 줄을 주석 처리하여) 숫자 레이블이 잘못됩니다(ascii art).

   Aaaa (skipped from bibliography) and Bbbb

References
[2] Bbbb.
[3] Cccc (manually added at end of document).
[4] Dddd (automatically added at end of document).

   Cccc (manually added at end of document)
   and Dddd (automatically added at end of document)

노트:

  • 백엔드로 사용하면 bibtex문제 없습니다.
  • biblatex 3.0및 을 사용하면 biber 2.0더 나쁩니다. 인용을 추가하면 \AtEndDocument모든 숫자 라벨이 입니다 0.

답변1

biblatex는 "최종 문서" 후크에서 많은 작업(정리 및 기타)을 수행합니다. cite 명령이 더 일찍 표시되는지 확인해야 합니다. 따라서 \AtEndDocumentbefore 를 이동 \usepackage{biblatex}하거나 코드를 후크 앞에 추가하세요.

\citetitle{cccc}%
\makeatletter\preto\@enddocumenthook{and \citetitle{dddd}}\makeatother

(패치 패키지 중 하나가 "\PreToAtEndDocument" 명령을 제공하는지 여부는 알 수 없습니다).

관련 정보