BibLaTeX:引用上的 DOI 链接和删除页面前的逗号

BibLaTeX:引用上的 DOI 链接和删除页面前的逗号

使用 BibLaTeX(不是 BibTeX),我想在整个参考文献上放置一个链接,而不是单独放置各个部分。此外,我想删除日期和页面之间的句号。

一个最小的例子如下:

\documentclass{article}

\usepackage[backend=biber, doi=false, hyperref=true]{biblatex}
    \bibliography{references}

\usepackage{hyperref}

\usepackage{filecontents}
\begin{filecontents}{references.bib}
@article{ref,
  author = {Surname, Initials},
  title = {Title},
  doi = {11.1111/111111},
  journal = {Journal Name},
  pages = {11},
  volume = {1},
  year = {2018}
}
\end{filecontents}

\begin{document}
Reference~\cite{ref}.
\printbibliography
\end{document}

这应该给出相当于

Initials Surname. "Title". In: \href{http://dx.doi.org/11.1111/111111}{Journal Name \textbf{1} (2018) 11}.

我目前能够使用以下方式分别将链接放在期刊、卷、年份和日期上

\newbibmacro{string+doi}[1]{\iffieldundef{doi}{#1}{\href{http://dx.doi.org/\thefield{doi}}{#1}}}
\DeclareFieldFormat[article]{volume}{\usebibmacro{string+doi}{\textbf{#1}}\space}
\DeclareFieldFormat[article]{journaltitle}{\usebibmacro{string+doi}{#1}}
\DeclareFieldFormat[article]{date}{\usebibmacro{string+doi}{#1}}
\DeclareFieldFormat[article]{pages}{\usebibmacro{string+doi}{#1}}

正如我所说,我希望它出现在整个参考资料中,如上所示。此外,我无法成功删除日期和页面之间的逗号,就像其他此类情况一样(此处进行了广泛讨论)——可能我只是缺少适当的 bibmacro?

答案1

这里使用字段格式是不够的,因为这些格式仅限于一个字段的输出。如果您想要一个长超链接,则必须在链接宏中包装多个 bibmacros。不幸的是,这必须在书目驱动程序级别上完成,因为宏journal+issuetitle不包括页码。在下面的 MWE 中,我们用来xpatch修改驱动程序。

\documentclass{article}

\usepackage[backend=biber, doi=false, hyperref=true]{biblatex}
\addbibresource{biblatex-examples.bib}

\usepackage{hyperref}

\DeclareFieldFormat{doilink}{\iffieldundef{doi}{#1}{\href{https://doi.org/\thefield{doi}}{#1}}}
\DeclareFieldFormat[article,periodical]{volume}{\mkbibbold{#1}}
\DeclareFieldFormat[article,periodical]{journaltitle}{#1}
\DeclareFieldFormat[article,periodical]{pages}{#1}

\usepackage{xpatch}
\xpatchbibdriver{article}
  {\usebibmacro{journal+issuetitle}%
   \newunit
   \usebibmacro{byeditor+others}%
   \newunit
   \usebibmacro{note+pages}}
  {\printtext[doilink]{%
     \usebibmacro{journal+issuetitle}%
     \newunit
     \usebibmacro{byeditor+others}%
     \newunit
     \usebibmacro{note+pages}}}
  {}{}

\begin{document}
Reference~\cite{sigfridsson}.
\printbibliography
\end{document}

已编纂书目的预览

相关内容