Biblatex 在引用电子版时插入无效链接

Biblatex 在引用电子版时插入无效链接

我试图引用一个电子版使用biblatex。在我使用 BibTeX 的日子里,我使用@misc它,但是使用biblatex的附加条目类型似乎@online更适合此目的。

此外,我还使用该hyperref包在我的文档的各个位置插入链接,包括指向我的参考书目中的在线文档的链接,例如此电子版。

在我使用 BibTeX 的日子里,我会使用这个:

@misc{foo,
  author       = {David Pointcheval and Olivier Sanders},
  title        = {Short Randomizable Signatures},
  year         = {2015},
  month        = jun,
  howpublished = {Cryptology ePrint Archive, Report 2015/525},
  note         = {\url{http://eprint.iacr.org/2015/525}},
}

现在有了biblatex,我尝试像这样改进它:

@online{foo,
  author     = {David Pointcheval and Olivier Sanders},
  title      = {Short Randomizable Signatures},
  year       = 2015,
  month      = jun,
  eprinttype = {Cryptology ePrint Archive},
  eprint     = {2015/525},
  url        = {https://eprint.iacr.org/2015/525}
}

在此处输入图片描述

问题是现在超链接。第一个来自字段eprint2012/525),第二个来自url字段(https://eprint.iacr.org/2012/185)。第二个工作正常,看起来符合预期,但第一个似乎链接到相2012/525对于包含 PDF 本身的目录的本地文件,这当然是无稽之谈。这样的文件不存在,因此当我尝试单击链接时会收到错误消息。

我该如何删除这个无效链接?顺便问一句,将字段超链接eprint到本地​​文件的初衷是什么?我看不出这样做有什么实际用途。

最小工作示例:

\documentclass{article}

\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}

\begin{filecontents}{\jobname.bib}
@online{foo,
  author     = {David Pointcheval and Olivier Sanders},
  title      = {Short Randomizable Signatures},
  year       = 2015,
  month      = jun,
  eprinttype = {Cryptology ePrint Archive},
  eprint     = {2015/525},
  url        = {https://eprint.iacr.org/2015/525}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{foo}

\printbibliography
\end{document}

答案1

该字段的理念eprint是,它提供某些电子参考的唯一部分,类型提供“设置”。在类型未知的情况下,bibaltex假设 epint ID 包含完整的 URL,因此只需将其变成超链接即可。该hyperref包将缺少或类似的链接解释http为本地链接,因此您看到的结果。

您需要做的是说明biblatex电子印刷类型。例如,我会给它起一个单词的名字

\documentclass{article}

\usepackage[backend=biber]{biblatex}
\DeclareFieldFormat{eprint:iacr}{%
  \href{https://eprint.iacr.org/#1}{Cryptology ePrint Archive: #1}%
}
\usepackage{hyperref}

\begin{filecontents}{\jobname.bib}
@online{foo,
  author     = {David Pointcheval and Olivier Sanders},
  title      = {Short Randomizable Signatures},
  year       = 2015,
  month      = jun,
  eprinttype = {iacr},
  eprint     = {2015/525},
  url        = {https://eprint.iacr.org/2015/525}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{foo}

\printbibliography
\end{document}

我可能会删除这里的 URL 字段,因为它只是重复的电子版数据(就像我会有一个 DOI 字段而不是出版商文章的链接一样)。不过,如果 URL 与电子版数据匹配,您可以设置清除 URL。

相关内容