IEEEtran 书目中的 DOI 超链接

IEEEtran 书目中的 DOI 超链接

此前,在 TexExchange 上,人们曾讨论过在 IEEEtran 样式书目中加入 DOI 的问题,标题为IEEEtran 参考书目中的 DOI并且已经以补丁的形式提供了解决方案 [1]。但是,该解决方案没有提供 DOI 的超链接。使用 DOI 的一个特殊好处是链接到相应档案的通用且唯一的 URL:http://dx.doi.org/+ «DOI»

我怎样才能使 DOI 变得“可点击”,即提供一个无缝(超引用)超链接,当我点击 DOI 时它将打开一个网络浏览器?

[1]https://gist.github.com/ezod/3373556

答案1

该补丁提供了插入DOI的功能:

%% DOI

FUNCTION {format.doi}
{ doi empty$
    { "" }
    { this.to.prev.status
      this.status.std
      cap.yes 'status.cap :=
      name.doi.prefix " " *
      "\doi{" * doi * "}" *
      punct.no 'this.status.punct :=
      punct.period 'prev.status.punct :=
      space.normal 'this.status.space :=
      space.normal 'prev.status.space :=
      quote.no 'this.status.quote :=
    }
  if$
}

替换插入 DOI 的行

"\doi{" * doi * "}" *

经过

"\href{http://dx.doi.org/\doi{" * doi * "}}{\doi{" * doi * "}}" *

产生包含超链接的增强型 DOI。

即该函数被替换为代码 %% DOI

FUNCTION {format.doi}
{ doi empty$
    { "" }
    { this.to.prev.status
      this.status.std
      cap.yes 'status.cap :=
      name.doi.prefix " " *
      "\href{http://dx.doi.org/\doi{" * doi * "}}{\doi{" * doi * "}}" *
      punct.no 'this.status.punct :=
      punct.period 'prev.status.punct :=
      space.normal 'this.status.space :=
      space.normal 'prev.status.space :=
      quote.no 'this.status.quote :=
    }
  if$
}

答案2

最近。我通过票号 #394811 获得了有用的提示。但是,我必须修改现有声明以在参考部分附加 DOI(数字对象标识符)毛细管电泳期刊(消费电子交易)。因此,我修改了以下陈述如下。

  name.doi.prefix ", " *
  "doi: \href{http://dx.doi.org/" * doi * "}{\doi{" * doi * "}}" *
  name.doi.postfix ". " *

“ FUNCTION {format.doi}”的内容如下。

%% DOI
%% added by GQMJr
%% Modified by Geunsik Lim on Apr-05-2020 for T-CE.
FUNCTION {format.doi}
{ doi empty$
    { "" }
    { this.to.prev.status
      this.status.std
      cap.yes 'status.cap :=
      name.doi.prefix ", " *
      "doi: \href{http://dx.doi.org/" * doi * "}{\doi{" * doi * "}}" *
      name.doi.postfix ". " *
      punct.no 'this.status.punct :=
      punct.period 'prev.status.punct :=
      space.normal 'this.status.space :=
      space.normal 'prev.status.space :=
      quote.no 'this.status.quote :=
    }
  if$
}

然后,DOI 就成功生成了。:)

答案3

我必须对其进行一些修改才能使其为我工作:

%% DOI
%% added by GQMJr
%% Modified by Geunsik Lim on Apr-05-2020 for T-CE.
%% Modified again by Calvin Love on Dec-15-2021
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ this.to.prev.status
this.status.std
cap.yes 'status.cap :=
name.doi.prefix ", " *
"doi: \href{http://dx.doi.org/" * doi * "}{" * doi * "}" *
name.doi.postfix ". " *
punct.no 'this.status.punct :=
punct.period 'prev.status.punct :=
space.normal 'this.status.space :=
space.normal 'prev.status.space :=
quote.no 'this.status.quote :=
}
if$
}

...希望这对某人有帮助

相关内容