我在 Overleaf 中有一个 Zotero 书目。我使用biblatex
。
\usepackage[backend=biber,citestyle=authoryear]{biblatex}
\addbibresource{zoteroALH.bib}
书目条目如下:
@book{de_saint-gervais_uniformization_2016,
title = {Uniformization of {Riemann} {Surfaces}},
isbn = {978-3-03719-145-3},
url = {https://www.ems-ph.org/books/book.php?proj_nr=198&srch=series%7Chem},
urldate = {2019-02-03},
author = {de Saint-Gervais, Paul Henri},
year = {2016},
doi = {10.4171/145}
}
在论文下面的参考书目中,参考文献显示如下: 有 DOI,很棒,但是也有 URL,但有 DOI 时 URL 就没有必要了。
当 DOI 存在时,如何删除 URL?
答案1
我确实认为会有重复的,但我找不到好的。(Biblatex:仅当没有 URL 时才使用 doi要求相反,并有一个 sourcemap 解决方案。bib 文件中存在冗余:如果与 doi 相同则有条件地抑制 url?要求的东西略有不同,并且不是针对特定的biblatex
,但有一些biblatex
答案,尽管它们都没有使用源图。仅当 doi 不存在时才打印 url非常接近,问题另外询问eprint
,但这可能被忽略。)
我的首选解决方案是使用 Biber 源图来完全删除url
和urldate
字段(如果doi
存在)。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage[colorlinks]{hyperref}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=doi,final]
\step[fieldset=url,null]
\step[fieldset=urldate,null]
}
}
}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{de_saint-gervais_uniformization_2016,
title = {Uniformization of {Riemann} {Surfaces}},
isbn = {978-3-03719-145-3},
url = {https://www.ems-ph.org/books/book.php?proj_nr=198&srch=series%7Chem},
urldate = {2019-02-03},
author = {de Saint-Gervais, Paul Henri},
year = {2016},
doi = {10.4171/145}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\cite{de_saint-gervais_uniformization_2016}
\printbibliography
\end{document}