我正在使用apacite
和hyperref
包以及apacite
书目样式,使用 BibTex 在 TexWorks 上以 APA 样式为我的文档创建格式化的书目条目。我希望书目中的 DOI 链接到其 DOI URL。
使用该包doi
将它们转换为链接,但现在我的参考书目中的每个链接都显示为,例如
作者。(年份)。标题。杂志。卷(期).页数。doi: doi:10.2214/ajr.12.9928
我的 .bib 文件中的条目包含
doi = {10.2214/ajr.12.9928},
我如何删除多余的“doi:”?
答案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}
告诉
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}
构建您自己的
\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}
答案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