BibDesk 的一个很好的功能是能够单击输入字段末尾的链接,这将在浏览器中Doi
打开该链接。http://dx.doi.org/DOI-HERE
我刚刚遇到的一个问题是,参考文献部分显示 DOI 的参考书目样式(例如,unified
) 是指Doi
包含下划线的条目将在“参考文献”部分中打印为下标。
例如,以下代码:
\documentclass{article}
\usepackage{natbib}
\begin{document}
\citet{chomsky1977b}
\citet{chomsky1977b-test}
\bibliographystyle{unified}
\bibliography{master}
\end{document}
产生此输出
哪里chomsky1977b
@article{chomsky1977b,
Author = {Chomsky, Noam and Lasnik, Howard},
Doi = {10.1007/978-94-015-6859-3_4},
Journal = {Linguistic Inquiry},
Keywords = {control theory, syntax},
Number = {3},
Pages = {425-504},
Title = {Filters and Control},
Volume = {8},
Year = {1977}}
并且chomsky1997b-test
是
@article{chomsky1977b-test,
Author = {Chomsky, Noam and Lasnik, Howard},
Doi = {10.1007/978-94-015-6859-3{\_}4},
Journal = {Linguistic Inquiry},
Keywords = {control theory, syntax},
Number = {3},
Pages = {425-504},
Title = {Filters and Control},
Volume = {8},
Year = {1977}}
当然,Doi
中的条目chomsky1997b-test
破坏了 BibDesk 在浏览器中打开链接的功能,因为它打开了http://dx.doi.org/10.1007/978-94-015-6859-3{\_}4
而不是http://dx.doi.org/10.1007/978-94-015-6859-3_4
。
有没有办法保留此功能,但仍能确保在使用打印 DOI 的样式时在参考文献部分正确打印 DOI?
答案1
对于您的特定示例(unified.bst
)样式,只需将以下行添加到您的序言中(并加载包hyperref
)即可
\newcommand{\doi}[1]{\textsc{doi}: \href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
数学家协会
\documentclass{article}
\usepackage{natbib}
\usepackage{hyperref}
\begin{filecontents}{\jobname.bib}
@article{chomsky1977b,
Author = {Chomsky, Noam and Lasnik, Howard},
Doi = {10.1007/978-94-015-6859-3_4},
Journal = {Linguistic Inquiry},
Keywords = {control theory, syntax},
Number = {3},
Pages = {425-504},
Title = {Filters and Control},
Volume = {8},
Year = {1977}}
\end{filecontents}
\newcommand{\doi}[1]{\textsc{doi}: \href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
\begin{document}
\citet{chomsky1977b}
\bibliographystyle{unified}
\bibliography{\jobname}
\end{document}
然后产生
答案2
答案3
如果你看看你的.bst
,即 BibTeX 样式文件,应该有一个格式化 DOI 输出的函数。
您可以使用包装\href
中的功能hyperref
,\detokenize
如前所述这里或者这里,你可以这样做
FUNCTION {format.doilink}
{ duplicate$ empty$
{ pop$ "" }
{ doi empty$
{ skip$ }
{ "{,\ doi:~\href{http://dx.doi.org/" * doi * "}{\detokenize{" * doi * "}}}" * }
if$
}
if$
}
它基于 elsevier BibTeX 文件的样式文件中使用的命名,因此文件中的函数.bst
可能在命名上有所不同。如您的示例所示,上面的函数在前面加了一个“doi:”。因此,您只需在样式文件中搜索它,然后更改输出即可。
答案4
我遇到了完全相同的问题。我的解决方案是使用\textunderscore
代替_
。