BibDesk 中具有下划线中断功能的 DOI 引文

BibDesk 中具有下划线中断功能的 DOI 引文

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

有一个不错的解决方案针对 Roly 的类似问题缺少 $ 插入问题,建议使用\usepackage[strings]{underscore}

该包安排在文本中,'_' 本身表现为 \textunderscore(数学模式下 _ 的行为不受影响)。

答案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代替_

相关内容