我有大量的参考资料,大多数情况下我都有
- 国际标准书号
- 多伊
- 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}
}
给出