寻求有关使用 创建自定义 bibstyle 的一些帮助natbib
。
刚开始攻读硕士学位,计划使用 TeX 进行写作,就像我攻读本科学位时一样。然而,我攻读硕士学位的学院使用的是哈佛系统的某个定制版本。我通过修改文件副本成功重现了他们要求的大部分内容agsm.bst
。
我只是在努力理解最后一部分。
这是现在的样子,但为了符合研究所的要求,我需要在作者重复的地方添加破折号。(只有第一个条目是真实的,我只是重复它作为例子。)
这是他们在指南中呈现的方式,但他们似乎没有使用 TeX,而是建议在 Word 中书写并使用第三方工具进行参考管理(我不喜欢这个想法)。
编辑。MWE。这是该包的初始调用:
\usepackage[authoryear,round,sort]{natbib}
\setcitestyle{round,aysep={},notesep={: }}
这是一个引用和列表构建的示例
\citep[35-37]{tedre2015science2}
\bibliographystyle{agsmuhi}
\bibliography{sources}
这本书的样子如下:
FUNCTION {book}
{ output.bibitem
list.label.output
" \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
author empty$
{ editor "author and editor" item.check }
{ crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
title.field field.used =
{ skip$ }
{ format.btitle "title" output.check }
if$
crossref missing$
{ format.bvolume output
format.number.series output
format.edition output
format.publisher.address output
}
{ format.book.crossref output.nonnull
format.edition output
}
if$
new.block
note output
fin.entry
write.url
}
这是输出函数:
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t f }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ " " * write$ }
{ output.state after.block =
{
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{"" * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
还有这个 dashify 函数,我不知道它是否与它有任何关系,但我看到它被调用的唯一地方是在格式化页码的函数中。
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}