Biblatex 使用 loadfiles 时删除没有注释字段的条目

Biblatex 使用 loadfiles 时删除没有注释字段的条目

我正在使用 Biblatex,并想删除注释字段为空的条目。此处描述的解决方案有效:biblatex 阅读风格 - 如何删除没有注释的条目?。但是当使用“loadfiles”作为注释的外部存储时,它不起作用。有人能告诉我如何在使用“loadfiles”选项时让它工作吗?

答案1

如果您想检查选项annotation加载的文件loadfiles,您不能使用 Biber 源映射,因为 Biber 没有界面来检查这些文件是否存在。

不过,您可以定义 bibcheck 来查找文件。下面的 bibcheck 会显示条目,看它是否有字段annotation,或者是否找到了注释文件loadfiles

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=reading]{biblatex}

\defbibcheck{hasannotation}{%
  \iffieldundef{annotation}
    {\IfFileExists{\bibannotationprefix\thefield{entrykey}.tex}
       {}
       {\skipentry}}
    {}%
}

\begin{filecontents}{\jobname.bib}
@book{elk,
  author     = {Anne Elk},
  title      = {A Theory on Brontosauruses},
  year       = {1972},
  publisher  = {Monthy \& Co.},
  location   = {London},
  annotation = {This is an inline annotation},
}
@book{belk,
  author     = {Anne Belk},
  title      = {A Theory on Triceratops},
  year       = {1973},
  publisher  = {Monthy \& Co.},
  location   = {London},
}
@book{celk,
  author     = {Anne Clk},
  title      = {A Theory on Pterodactylus},
  year       = {1974},
  publisher  = {Monthy \& Co.},
  location   = {London},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{filecontents}{bibannotation-belk.tex}
This is a file annotation.
\end{filecontents}

\begin{document}
Lorem \autocite{elk,belk,celk}

\printbibliography[check=hasannotation]
\end{document}

贝尔克:关于三角龙的理论 麋鹿:关于雷龙的理论

请注意,bibcheck 比 Biber sourcemap 弱,因为 Biber sourcemap 会从所有 Biber 处理中丢弃条目。bibcheck 只会隐藏相关参考书目中的条目。标签唯一性和其他功能仍将适用于隐藏的条目。

相关内容