当 model5-names.bst(elsarticle.cls)中没有 DOI 时添加“从 URL 地址检索”

当 model5-names.bst(elsarticle.cls)中没有 DOI 时添加“从 URL 地址检索”

当 model5-names.bst (elsarticle.cls) 参考书目中缺少在线文章的 DOI 时,我想添加“从 URL 地址检索”。这符合 APA 6th 样式。

例如:

Kanizsa, G. (1976)。主观轮廓。《科学美国人》,234(4),48–52。摘自http://www.address.edu(当 doi 缺失时)

而不是:

Kanizsa, G. (1976)。主观轮廓。《科学美国人》,234(4),48–52。

谢谢。

答案1

为了获得所需的输出,您需要更改\URLprefix宏(更改 URL 字符串前的前缀)、函数(如果存在print.url非空字符串则抑制打印)和函数(抑制格式化条目末尾的)。doifin.entry.

  • 更改指令(约 1686 行)

    "\providecommand{\URLprefix}{URL: }"
    

    "\providecommand{\URLprefix}{Retrieved from }"
    
  • print.url函数(从第 995 行开始)从

    FUNCTION {print.url}
     {url duplicate$ empty$
       { pop$ "" }
       { new.sentence
         urlprefix "\url{" * swap$  * "}" *
       }
       if$
     }
    

    FUNCTION {print.url}
     {url duplicate$ empty$
       { pop$ "" }
       { doi empty$
         { new.sentence
           urlprefix "\url{" * swap$  * "}" * }
         { pop$ "" }
         if$
       }
       if$
     }
    

    新的代码块检查doi字段是否为空;只有在这种情况下,url才会打印字段的格式化内容。

  • 更改fin.entry函数,使其看起来像这样(.如果 adoi或 aurl字段非空,这将抑制打印 a,并结合您之前的查询):

    FUNCTION {fin.entry}
    { doi empty$
        { url empty$
          { add.period$ }
          { }
          if$ 
        }
        { }
      if$
      write$
      newline$
    }
    

附录:这是一个 MWE(最小工作示例),它有两个 bib 条目:一个包含urldoi字段,另一个仅包含一个url字段。如果两个字段都存在,则只打印doi;如果只url存在一个字段,则打印出来,前缀为“从 URL 地址检索”。(单独的注释:修改后的 bst 文件也包含您之前的两个请求:(i)number在括号中显示字段,以及(ii)如果打印字段,则在条目末尾没有句点doi。)

在此处输入图片描述

\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@article{abc,
   author  = "Anne Author",
   title   = "An entry with both doi and url fields",
   journal = "Thoughts",
   year    = 3001,
   volume  = 1,
   number  = 2,
   pages   = "3-4",
   url     = "http://xyz.com",
   doi     = 12345678,
}

@article{def,
   author  = "Annie Author",
   title   = "An entry with only a url field",
   journal = "Thoughts",
   year    = 3002,
   volume  = 5,
   number  = 6,
   pages   = "7-8",
   url     = "http://xyz.com",
}
\end{filecontents}

\documentclass{article}
\bibliographystyle{mymodel5}
\usepackage{url,natbib}
\begin{document}
\nocite{*}
\bibliography{mybib}
\end{document}

相关内容