如何将 adsurl 字段添加为参考书目的链接

如何将 adsurl 字段添加为参考书目的链接

对于 SAO/NASA 天体物理数据系统 (ADS) 中的每篇论文,都提供了一个 BibTeX 条目,其中包含类似以下字段

adsurl = {http://adsabs.harvard.edu/abs/2015EPJST.224.2217S},

我想将其作为链接添加到我的 LaTeX 文档的参考书目中。

似乎在 BibTeX 中没有简单的方法可以做到这一点,但应该可以做到biblatex。怎么做?

答案1

这是仅适用于 A&A 期刊的解决方法。我修改了aa.bst文件并使用adsurl条目和doi条目创建可点击的超链接。您可以aa_url.bst在此处下载新版本:https://github.com/yangcht/AA-bibstyle-with-hyperlink

只需替换aa.bstaa_url.bst

以下是一个例子: 在此处输入图片描述

请注意,请使用 ADS 网站生成的 bib 条目。

答案2

在 biblatex 中,可以定义新的 bibtex 字段。可以使用\DeclareDatamodelFields和创建新字段\DeclareDatamodelEntrytypes(这些命令应出现在 biblatex 配置文件中,一种简单的方法是filecontents在处理文档时使用来创建此类配置文件)

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=verbatim]{adsurl}
\DeclareDatamodelEntryfields[proceedings,inproceedings]{adsurl}
\end{filecontents}

第二步是指定如何渲染。例如,

\DeclareFieldFormat{adsurl}{#1}

然后添加

\printfield[bibhyperref]{adsurl} 

在 drivers/bibmacro 中,为应该打印字段的条目添加。下面只需adsurl在参考书目中的参考书目条目末尾添加。

\newbibmacro{finentry}{\printfield[bibhyperref]{adsurl}\finentry}

答案3

似乎我根据如何使用 biblatex 剪切、剥离、截断或重命名 bibtex 字段的部分内容。现在看起来如下:

\usepackage[natbib=true,style=authoryear,maxbibnames=5,minbibnames=5]{biblatex}

\begin{filecontents}{biblatex-dm.cfg}
\DeclareDatamodelFields[type=field,datatype=verbatim]{adsurl}
\DeclareDatamodelEntryfields{adsurl}
\end{filecontents}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldsource=adsurl, match={http://adsabs.harvard.edu/abs/},
        replace={}]
    }
  }
}

\DeclareFieldFormat{adsurl}{ADSURL: \href{http://adsabs.harvard.edu/abs/#1}{#1}}

\renewbibmacro{finentry}{\printfield{adsurl}\finentry}

\let\cite\textcite  %for compatibility of \cite/\citep with bibtex

它会产生类似如下的结果:

Kundu, M. R. (1965). Solar radio astronomy. New York: Interscience Publication,
1965. ADSURL: 1965sra..book.....K.

在哪里1965sra..book.....K是一个链接。

相关内容