在bst文件中自定义文章函数输出

在bst文件中自定义文章函数输出

我正在使用经过修改的 harvard.bst 文件来满足我所在大学的具体(且奇怪的)要求。我必须参考articles以下结构:

在此处输入图片描述

  1. 如果没有 doi,则引用在页码后以点结尾
  2. 如果有 doi,doi 信息紧跟在页码后面,以逗号分隔

以下是目前所拥有的:

在此处输入图片描述

为了实现这一点,我做了以下修改(以及许多其他修改)。对我来说,它工作得很好,只是我有一个“。”在页码之后,而不是“,”

有什么想法可以解决这个问题吗?

FUNCTION {format.pages}
{ pages empty$
    { "" } %change pages line 285 0r 386
    { pages multi.page.check
        { "p. " pages n.dashify * }
        {  pages " p." * }
      if$
    }
  if$
}


FUNCTION {format.vol.num.pages}
{ volume field.or.null
  number empty$
    'skip$
    { ", no. " number *"" * *
      volume empty$
    { "there's a number but no volume in " cite$ * warning$ }
    'skip$
      if$
    }
  if$
  pages empty$
    'skip$
    { duplicate$ empty$
    { pop$ format.pages }
    { ", p.~" * pages n.dashify * }
      if$
    }
  if$
}

FUNCTION {article}
{ output.bibitem
  list.label.output
  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
  author "author" item.check
    title.field field.used =
    { skip$ }
    { title "title" output.check }
  if$
  crossref missing$
    { add.colon 
    journal
      ", v. " * format.vol.num.pages * output
    }
    { format.article.crossref output.nonnull
      "p " * format.pages * output
    }
  if$
  new.block
  note output
  fin.entry
  write.url
}

这是我的参赛作品:

@article{coogan2006trace,
  title={Do the trace element compositions of detrital zircons require Hadean continental crust?},
  author={Coogan, Laurence A and Hinton, Richard W},
  journal={Geology},
  volume={34},
  number={8},
  pages={633--636},
  year={2006},
  publisher={Geological Society of America},
  url={10.1130/G22737.1.}
}

我记得我曾尝试创建一个 doi 函数(或修改它),但由于我真的不知道如何编写代码,所以我放弃了——从未让它工作过。如果有人认为这是一个更好的方法,我还是把它放在这里。

FUNCTION {doilink}
{ duplicate$ empty$
{ pop$ "" }
{ doi empty$
    { skip$ }
    { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
  if$
}
if$
}
FUNCTION {add.doi}
{ duplicate$ empty$
    { skip$ }
    { doi empty$
        {}
        {"\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" *}
      if$
    }
  if$
}
FUNCTION {format.jdoi}
{ doi missing$   
    { "" }
    {", doi: " doi * 
      }
    if$
     doilink 
}

答案1

好吧,我找到了一个对我有用的技巧。我解决了将 doi 视为注释的问题,并进行了article function如下修改:

FUNCTION {format.jdoi}
{ doi missing$   
    { "" }
    {" doi:" doi * 
      }
    if$
     doilink 
}

FUNCTION {article}
{ output.bibitem
  list.label.output
  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
  author "author" item.check
    title.field field.used =
    { skip$ }
    { title "title" output.check }
  if$
  crossref missing$
    { add.colon 
    journal
      ", v. " * format.vol.num.pages * output
    }
    { format.article.crossref output.nonnull
      "p " * format.pages * output
    }
  if$
  new,block
  format.jdoi output
  fin.entry
  write.url
}

黑客围兜入口:

@article{coogan2006trace,
  title={Do the trace element compositions of detrital zircons require Hadean continental crust?},
  author={Coogan, Laurence A and Hinton, Richard W},
  journal={Geology},
  volume={34},
  number={8},
  pages={633--636},
  year={2006},
  publisher={Geological Society of America},
  doi={10.1130/G22737.1.}
}


@article{pacca1998paleomagnetism,
  title="{Paleomagnetism of Paleoproterozoic mafic dyke swarm from the Uauá region, northeastern São Francisco Craton, Brazil: tectonic implications}",
  author={D'agrella Filho, M S and Pacca, I I G},
  journal={Journal of South American Earth Sciences},
  volume={11},
  number={1},
  pages={23--33},
  year={1998},
  publisher={Elsevier}
}

带有和不带有 doi 编号的 bibentry 示例:

在此处输入图片描述

相关内容