Biblatex:仅当未定义 DOI 时才打印 ISBN

Biblatex:仅当未定义 DOI 时才打印 ISBN

我有大量的参考资料,大多数情况下我都有

  • 国际标准书号
  • 多伊
  • DOI 和 ISBN

我想设置一个过滤器,仅当 DOI 不存在时才打印 ISBN。

我如何设置一个过滤器来执行这种条件打印(我读过线程但没有找到命令来检查条目是否存在)

如果有必要,我也可以定义空的 DOI 条目,但这会很繁琐。

答案1

您可以使用biblatex源重映射功能。代码检查doi字段是否为非空,如果是,则清除该isbn字段,以便不打印。

\documentclass{article}
\usepackage[backend=biber]{biblatex}
\addbibresource{t.bib}
\DeclareSourcemap{
  \maps[datatype=bibtex]{
     \map{
        \step[fieldsource=doi,final]
        \step[fieldset=isbn,null]
        }
      }
}

\begin{document}
\cite{test1,test2,test3}
\printbibliography
\end{document}

t.bib

@Book{test1,
  author =   {Author, First},
  title =    {Title One},
  publisher =    {Publisher},
  year =     2000,
  doi =      {doi:field},
  note =     {doi only}
}

@Book{test2,
  author =   {Author, Gareth},
  title =    {Title Two},
  publisher =    {Publisher},
  year =     2005,
  isbn =     {isbn number},
  note =     {isbn only}
}

@Book{test3,
  author =   {Author, Last},
  title =    {Title Three},
  publisher =    {Publisher},
  year =     2007,
  isbn =     {isbn number},
  doi =      {doi:field},
  note =     {isbn and doi}
}

给出

示例输出

相关内容