我正在使用 Overleaf 撰写我的学士论文,我想将每个参考文献超链接到其相应的 DOI。我正在使用 natibib 包和以下命令。
\documentclass[12pt]{report}
\usepackage[sort&compress,numbers,square]{natbib}
\bibliographystyle{achemso}
.
.
.
\newpage
\bibliography{2_references.bib}
\addcontentsline{toc}{chapter}{References}
我尝试了很多方法,比如title = {\href{https://doi.org/10.1515/ntrev-2015-0031}{Improving the tribological behavior of internal combustion engines via the addition of nanoparticles to engine oils}}
在 .bib 文件中添加。它确实有效,并将我链接到相应的 DOI。我还尝试对所有必填字段重复此操作。但是,当我放置时,例如:author = {\href{https://doi.org/10.1515/ntrev-2015-0031}{Ali, Mohamed Kamal Ahmed and Xianjun, Hou}},
它在 pdf 中无法正确显示。
有没有办法可以自动将所有参考文献条目链接到 DOI,就像在许多论文中看到的那样?谢谢。
使用命令后的效果如下title = {\href{https://doi.org/10.1515/ntrev-2015-0031}{Improving the tribological behavior of internal combustion engines via the addition of nanoparticles to engine oils}}
。它运行完美,并将我链接到 DOI。
\href{}{}
这是它在每个条目中的使用方式。
这就是我要找的。如果你点击参考资料的任何部分,它都会引导你找到它的 DOI。
答案1
我找到了解决方案,但我需要换成 biblatex
\usepackage{csquotes}
\usepackage[backend=biber,sorting=none,style=numeric-comp,bibstyle=chem-acs,articletitle=true,biblabel=brackets,doi=false]{biblatex}
\bibliography{2_references}
\newbibmacro{string+doi}[1]{%
\iffieldundef{url}{%
\iffieldundef{doi}{#1}{\href{http://dx.doi.org/\thefield{doi}}{#1}}}
{\href{\thefield{url}}{#1}}}
\DeclareNameWrapperFormat[article,thesis,incollection]{author}{\usebibmacro{string+doi}{#1}}
\DeclareFieldFormat[article,thesis,incollection]{title}{\usebibmacro{string+doi}{#1}}
\DeclareFieldFormat[article,thesis,incollection]{volume}{\usebibmacro{string+doi}{\textit{#1}}}
\DeclareFieldFormat[article,thesis,incollection]{journaltitle}{\usebibmacro{string+doi}{\textit{ #1}}}
\DeclareFieldFormat[article,thesis,incollection]{date}{\usebibmacro{string+doi}{\textbf{#1}}}
\DeclareFieldFormat[article,thesis,incollection]{pages}{\usebibmacro{string+doi}{#1}}