正如评论中提到的Biblatex,引用尾注,ibid 跟踪器被丢弃,接下来 biblatex 就会发出“狼来了”的警报,警告说有些引用没有定义。
\documentclass{scrartcl}
\usepackage{enotez}
\usepackage[style=authoryear-icomp,autocite=footnote,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\let\footnote\endnote%
\begin{document}
Lorem\footcite{malinowski}
\printendnotes
\printbibliography
\end{document}
我如何辨别真正的警告?
我考虑过不运行\let\footnote\endnote
,检查没有 biblatex 警告,然后再改回来。我担心改回来后可能会pdflatex
多次运行不充分。
一个合理的解决方案是重新定义行为,biblatex
以便将未定义的引用打印为??
(或其他一些独特的词),我可以在pdf中搜索。
答案1
此问题已在 3.11 版中得到解决biblatex
。请参阅https://github.com/plk/biblatex/issues/707
这里的问题是enotez
将尾注的内容写入外部文件。通常,biblatex
引用命令会将条目键去标记化,但这发生在早期步骤中,当尾注写入文件时,其结果已经扩展。从文件中读取时,引用键不会再次去标记化。这会导致重新运行警告检查给出不正确的结果,因为标记具有错误的类别代码。解决方案是更积极地对键去标记化,以便从文件中读回时它们也会被去标记化enotez
。
如果你正在使用旧版本,biblatex
并且希望能够在文档中搜索真正未定义的引用键,你可以尝试
\makeatletter
\def\blx@citeadd#1{%
\ifcsdef{blx@keyalias@\the\c@refsection @#1}
{\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}}
{\def\blx@realkey{#1}}%
\expandafter\blx@getrefcontext\expandafter{\blx@realkey}% needed for \ifdata
\expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon
\expandafter\blx@ifdata\expandafter{\blx@realkey}
{\advance\blx@tempcnta\@ne
\listeadd\blx@tempa{\blx@realkey}}
{\ifnum\blx@tempcntb>\z@\multicitedelim\fi
\expandafter\abx@missing\expandafter{\blx@realkey{} ???}%
\advance\blx@tempcntb\@ne}}
\makeatother
这将添加“???” 到未定义的引用标签,使它们更容易搜索。