doi 超链接在我的参考文献中显示为“doi:doi”

doi 超链接在我的参考文献中显示为“doi:doi”

我正在使用apacitehyperref包以及apacite书目样式,使用 BibTex 在 TexWorks 上以 APA 样式为我的文档创建格式化的书目条目。我希望书目中​​的 DOI 链接到其 DOI URL。

使用该包doi将它们转换为链接,但现在我的参考书目中的每个链接都显示为,例如

作者。(年份)。标题。杂志。卷(期).页数。doi: doi:10.2214/ajr.12.9928

我的 .bib 文件中的条目包含

doi = {10.2214/ajr.12.9928},

我如何删除多余的“doi:”?

答案1

有几种方法可以解决这个问题。

  1. 告诉doi包删除它的“doi:”前缀,该前缀保存在 中\doitext

    \documentclass[british]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{babel}
    \usepackage[natbibapa]{apacite}
    \usepackage{hyperref}
    
    \usepackage{doi}
    \renewcommand{\doitext}{}
    
    \usepackage{filecontents}
    \begin{filecontents}{\jobname.bib}
    @article{appleby,
      author  = {Humphrey Appleby},
      title   = {On the Importance of the Civil Service},
      year    = {1980},
      journal = {Civil Service Journal},
      doi     = {10.2214/ajr.12.9928__##},
    }
    \end{filecontents}
    
    \begin{document}
    \cite{appleby}
    \bibliographystyle{apacite}
    \bibliography{\jobname}
    \end{document}
    

    Appleby, H. (1980)。论公务员制度的重要性。《公务员制度杂志》。doi:10.2214/ajr.12.9928__##

  2. 告诉apacite删除其“doi:”前缀,该前缀保存在 中\doiprefix

    \documentclass[british]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{babel}
    \usepackage[natbibapa]{apacite}
    \usepackage{hyperref}
    
    \usepackage{doi}
    
    \renewcommand{\doiprefix}{}
    
    \usepackage{filecontents}
    \begin{filecontents}{\jobname.bib}
    @article{appleby,
      author  = {Humphrey Appleby},
      title   = {On the Importance of the Civil Service},
      year    = {1980},
      journal = {Civil Service Journal},
      doi     = {10.2214/ajr.12.9928__##},
    }
    \end{filecontents}
    
    \begin{document}
    \cite{appleby}
    \bibliographystyle{apacite}
    \bibliography{\jobname}
    \end{document}
    

    Appleby, H. (1980)。论公务员制度的重要性。《公务员制度杂志》。doi:10.2214/ajr.12.9928__##

  3. 构建您自己的\doi不带前缀的命令,并且不加载doi包。由于您正在加载,hyperref我建议遵循稍微复杂一点的方法迈克尔·厄默尔斯在脚注中获取那些 %#!^& 符号!。这样您就可以在 DOI 中使用“危险”字符,而不必担心大多数字符(与更直接的 不同\newcommand{\doi}[1]{\href{https://doi.org/#1}{#1}},如果 DOI 包含#%,则会中断)。

    \documentclass[british]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{babel}
    \usepackage[natbibapa]{apacite}
    \usepackage{hyperref}
    
    \newcommand*{\doi}{}
    \makeatletter
    \newcommand{\doi@}[1]{\href{https://doi.org/#1}{#1}}
    \DeclareRobustCommand{\doi}{\hyper@normalise\doi@}
    \makeatother
    
    \usepackage{filecontents}
    \begin{filecontents}{\jobname.bib}
    @article{appleby,
      author  = {Humphrey Appleby},
      title   = {On the Importance of the Civil Service},
      year    = {1980},
      journal = {Civil Service Journal},
      doi     = {10.2214/ajr.12.9928__##},
    }
    \end{filecontents}
    
    \begin{document}
    \cite{appleby}
    \bibliographystyle{apacite}
    \bibliography{\jobname}
    \end{document}
    

    Appleby, H. (1980)。论公务员制度的重要性。《公务员制度杂志》。doi:10.2214/ajr.12.9928__##

答案2

对于 APA 7th DOI 样式:(https://doi.org/10.2214/ajr.12.9928__##全部作为链接)@euclides您需要抑制 doi 文本。因此,结合@moewe 的答案:

\newcommand*{\doi}{}
\renewcommand{\doiprefix}{}
\makeatletter
\newcommand{\doi@}[1]{\urlstyle{same}\url{https://doi.org/#1}}
\DeclareRobustCommand{\doi}{\hyper@normalise\doi@}
\makeatother

相关内容