我正在使用经过修改的 harvard.bst 文件来满足我所在大学的具体(且奇怪的)要求。我必须参考articles
以下结构:
- 如果没有 doi,则引用在页码后以点结尾。
- 如果有 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 示例: