makebst 但仅在没有 doi 时才显示 url

makebst 但仅在没有 doi 时才显示 url

我正在使用makebst创建自己的 bib 样式。我希望 DOI 出现在引文中(作为超链接),只要 DOI 存在。我已经成功做到了这一点。当 DOI 存在时,我不希望URL使用该字段,因为这通常是多余的或毫无意义的。因此,我URL在 中禁用了使用该字段makebst。但是,当没有DOI字段时(我拥有的一些期刊等没有 DOI),我希望该URL字段出现。makebst 中没有这个选项(据我所知)。

那么,我如何使用我makebst制作的bst文件并优先使用 DOI,但在没有 DOI 时使用 URL。

我正在使用的可能会产生影响的软件包:hyperref,,citeurl[我没有使用biblatex,这会给我带来一些其他问题。]

答案1

在尝试了 makebst 输出 bst 文件后,我发现以下方法有效。这相当于更改 doi 格式。确保首先告诉 makebst 不要包含 url(默认选项)。

  1. 打开 .bst 文件(makebst 输出)

  2. 在 ENTRY 部分(第一部分没有注释掉),你会看到一堆字段,包括 doi。将“url”(不带引号)添加到此列表。

  3. 转到显示 FUNCTION {format.doi} 的行。下一行应该显示 { "" }。至少,这就是我所得到的。现在,用以下代码块替换 { "" }:

        { url empty$
            { "" }
            {
              new.block
              "\url{" url * "}" *
            }
          if$
        }
    

完成第 3 步后,我的 format.doi 块如下所示(但如果您选择了不同的 makebst 选项,您的格式可能会有所不同):

FUNCTION {format.doi}
{ doi empty$
    { url empty$
        { "" }
        {
          new.block
          "\url{" url * "}" *
        }
      if$
    }
    {
      new.block
      "\doi{" doi * "}" *
    }
  if$
}

相关内容