这是两个问题的结合,此外我还遇到了一个参考书目风格的问题。
我想将每个 bib 条目设置为具有以下优先级的超链接:1. DOI、2. URL、3. ISBN/ISNN。之前已展示了如何对条目标题执行此操作biblatex:使标题超链接到 DOI、URL 或 ISBN。但是,我使用的参考书目样式不显示标题 (chem-angew)。我希望整个条目成为超链接。这仅在 DOI 中实现将每个 bib 条目超链接到其 DOI 页面。
我的第一个问题是,当我使用 chem-angew 样式并包含带有 DOI 的条目时,即使我在 usepackage 中包含了 DOI=false,DOI 也会显示(并且 DOI 不应该显示在 chem-angew 样式中):
\documentclass{article}
\usepackage[style=chem-angew,doi=false,url=false,isbn=false,]{biblatex}
\usepackage[colorlinks]{hyperref}
\begin{filecontents}{\jobname.bib}
@article{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
doi = {doi},
url = {url},
issn = {isbn-issn},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
我的第二个问题是,当我添加:
\AtEveryBibitem{%
\iffieldundef{url}
{}
{\href{\thefield{url}}{\usedriver{\thefield{article}}}
\csdef{blx@bbx@\thefield{entrytype}}{}}%
}
到我的本地 biblatex.cfg 文件,bib 条目将具有 biblatex 样式,而不是像我之前的 MWE 所要求的那样具有 chem-angew 样式。
最后一个问题是我想添加到条目中的超链接的优先级。
答案1
这是一个尝试链接整个条目(减去标签)的解决方案。string+doiurl
是简化版本的步调一致来自string+doiurlisbn
biblatex:使标题超链接到 DOI、URL 或 ISBN
\documentclass{article}
\usepackage[style=chem-angew,doi=false,url=false,isbn=false,]{biblatex}
\usepackage[colorlinks]{hyperref}
\newbibmacro{string+doiurl}[1]{%
\iffieldundef{doi}
{\iffieldundef{url}
{#1}
{\href{\thefield{url}}{#1}}}
{\href{https://doi.org/\thefield{doi}}{#1}}}
\makeatletter
\def\blx@driver#1{%
\ifcsdef{blx@bbx@#1}
{\usebibmacro{string+doiurl}{\csuse{blx@bbx@#1}}}
{\ifcsdef{blx@bbx@*}
{\blx@warning{%
No driver for entry type '#1'.\MessageBreak
Using fallback driver}%
\usebibmacro{string+doiurl}{\csuse{blx@bbx@*}}}
{\blx@error
{No driver found}
{I can't find a driver for the entry type
'\abx@field@entrytype'\MessageBreak
and there is no fallback driver either}}}}
\makeatother
\addbibresource{biblatex-examples.bib}
\nocite{sigfridsson,ctan,nussbaum}
\begin{document}
\printbibliography
\end{document}