biblatex:仅显示 doi 或 ISSN 或 ISBN

biblatex:仅显示 doi 或 ISSN 或 ISBN

我正在寻找一种方法来仅显示 ISBN、ISSN 或 doi 中的一个。它应该优先显示 doi 而不是 ISSN 而不是 ISBN。我目前的方法如下所列,什么都不做,这让我很困惑。有什么帮助吗?

干杯

\renewbibmacro*{issn}{% 
    \iftoggle{bbx:doi} {\iffieldundef{doi}{\usebibmacro{issn}}{}} {}
}

答案1

一个几乎普遍适用的简单解决方案是

\AtEveryBibitem{%
  \iffieldundef{doi}
    {\iffieldundef{issn}
       {}
       {\clearfield{isbn}}}
    {\clearfield{issn}%
     \clearfield{isbn}}%
}

对于标准样式,较短的

\AtEveryBibitem{%
  \iffieldundef{doi}
    {}
    {\clearfield{issn}%
     \clearfield{isbn}}%
}

应该足够了,因为没有条目同时显示 ISBN 和 ISSN - 它只是其中之一。

您可以使用 Biber 的源映射执行相同的操作,从而阻止数据到达biblatex(这通常是用于除直接打印之外的其他用途的数据的首选 - 例如可用于排序或label...字段的日期和名称)。

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=doi, final]
      \step[fieldset=isbn, null]
      \step[fieldset=issn, null]
    }
  }
}

相关内容