我正在尝试
\documentclass{book}
\usepackage[round]{natbib}
\usepackage{bibentry}
\usepackage{url}
\usepackage{verbatim}
\usepackage{inputenc}
\usepackage{hyperref}
\begin{document}
\nocite{*}
\bibliographystyle{authordate1}
\bibliography{test}
\end{document}
内容。围兜文件
@Article{year_2000,
author = {Acemoglu, Daron and Robinson, James A.},
title = {Why did the West Extend the Franchise? Democracy, Inequality, and Growth in Historical Perspective},
journal = {Quarterly Journal of Economics},
year = {2000},
volume = {5},
number = {2},
pages = {1-9},
}
@Article{year_2005,
author = {Acemoglu, Daron and Johnson, Simon and Robinson, James},
title = {The Rise of Europe: Atlantic Economic Growth.},
journal = {American Judicial Review},
year = {2005},
volume = {9},
number = {1},
pages = {546-89},
comment = {This paper argues that the Atlantic trade was the key to driving European
economic growth
Atlantic traders: Britain, France, Spain, Portugal, Netherlands
Interaction between medieval political institutions and trade access
was crucial
- Key was nonabsolutist political institutions (Britain, Netherlands)
Evidence:
- Urbanization rates grew faster in the Atlantic trading nations
- GDP per capita estimates from Madison showing faster growth in Atlantic
trading nations
- Use either dummy for Atlantic trader or ratio of Atlantic coast
to area as key independent variables
Argue against other theories of "why europe" such as culture, religion,
geography, etc.
Consistent with theories emphasizing the empirtance of atlantic trade,
colonializm and slavery profits
- But profits of trade were not large enough to directly explain European
capital accumulation
- Instead, they argue that trade aided the development of political
institutions that aided growth, such as constraints on the monarch
- Channel was that commercial interests became powerful enough through
trade to get these reforms
But these rich traders only emerged in countries with less absolutist
regimes
Hypothesis seems cyclical: Countries with regimes that had less control
led to commercial growth which generated rules that limited regime's
control
Provides case studies of Britain and The Netherlands to support the
hypothesis that less absolutist regimes in these countries meant
that merchants could grow wealthier
See evidencein Acemoglu etal 2002.
Data contribution: They create a measure of institutional quality
from 1300-1850 based on "constraint on the executive"},
file = {acemoglu_johnson_.pdf:acemoglu_johnson_.pdf:PDF},
groups = {Institutions and Culture, European Econ History},
keywords = {Economic Growth of Open Economies F030, Economic History: Macroeconomics; Growth and Fluctuations: Europe: Pre-2013 N139, Measurement of Economic Growth; Aggregate Productivity; Cross-Country Output Convergence G470},
}
输出
我需要得到这样的输出,即所有有两个或更多作者(或编辑)的条目,第一个作者(或编辑)的名字后面的作者(或编辑)的名字应该倒置,即,先显示名字(包括名字的任何首字母),后跟姓氏(包括名字和姓氏之间的中间首字母),如参考书目第一页所标记(第 648 页)。对于有两位作者(或编辑)的参考文献,应删除第一个作者(或编辑)后面和连词(“&”)前面的逗号。已清楚标记如下:
请多多指教,也请原谅我的语言表达能力不佳...
答案1
将以下代码复制到文件中my_authordate1.bst
,并将命令更改\bibliographystyle
为
\bibliographystyle{my_authordate1}
内容my_authordate1.bst
:
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label extra.label sort.label }
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
}
STRINGS { s t u }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.year.month.check}
{ year empty$
{ "empty year in " cite$ * warning$ }
{ add.period$ write$
month empty$
{ " " year * extra.label * "." *
after.sentence 'output.state :=
}
{ " " year * extra.label * " (" * month * ")." *
after.sentence 'output.state :=
}
if$
}
if$
}
FUNCTION {output.year.check}
{ year empty$
{ "empty year in " cite$ * warning$ }
{ add.period$ write$
" " year * extra.label * "." *
after.sentence 'output.state :=
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
label write$
"]{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ add.period$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {boldface}
{ duplicate$ empty$
{ pop$ "" }
{ "{\bf " swap$ * "}" * }
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
s nameptr "{jj }{ff }{vv~}{ll}" format.name$ 'u :=
nameptr #1 >
{ namesleft #1 >
{ ", " * u * }
{ t "others" =
{ ", {\em et~al.}" * }
{ " \& " * u * } % Butcher, pages
if$ % 186-189.
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.key}
{ empty$
{ key field.or.null }
{ "" }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 > % Use ODWE abbrevs.
{ " (eds)" * } % to avoid
{ " (ed)" * } % ambiguity between
if$ % "editor" and
} % "edition".
if$
}
FUNCTION {format.title} % Nothing needs
{ title empty$ % doing here in
{ "" } % authordate1.bst
{ title } % or
if$ % authordate3.bst.
}
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$
}
FUNCTION {format.btitle}
{ title empty$
{ "" } % Don't change case
{ title emphasize } % in
if$ % authordate1.bst
} % or
% authordate3.bst.
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.numberinseries}
{ number empty$
{ "" }
{ number multi.page.check
{ ", nos. " number n.dashify tie.or.space.connect }
{ ", no. " number tie.or.space.connect }
if$
}
if$
}
FUNCTION {booklike.series.volume.number} % Chicago, pages
{ series empty$ % 450-451.
{ volume empty$
{ " " }
{ " Vol. " volume * }
if$
}
{
volume empty$
{ number empty$
{ series }
{ series format.numberinseries * }
if$
}
{ number empty$
{ series ", vol. " volume * * }
{ series ", vol. " * volume * format.numberinseries * }
if$
}
if$
}
if$
}
FUNCTION {incollectionlike.series.volume.number}
{ series empty$
{ volume empty$
{ " " }
{ " vol. " volume * }
if$
}
{ new.block
volume empty$
{ number empty$
{ series }
{ series format.numberinseries * }
if$
}
{ number empty$
{ series ", vol. " volume * * }
{ series ", vol. " * volume * format.numberinseries * }
if$
}
if$
}
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ edition "l" change.case$ " edn." * }
{ edition "t" change.case$ " edn." * }
if$
}
if$
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "" pages n.dashify tie.or.space.connect }
{ "" pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.pagesinbook} % By the time the
{ pages empty$ % reader has read
{ "" } % address, pub'r,
{ pages multi.page.check % note (where the
{ "Pages " pages n.dashify tie.or.space.connect } % note may end with
{ "Page " pages tie.or.space.connect } % numbers), s/he
if$ % may not recognise
} % a number-range as
if$ % meaning pages.
} % Avoid ambiguity
% (Butcher, p.181).
FUNCTION {format.vol.num.date.pages}
{ volume empty$
{ month empty$
{ "" }
{ month }
if$
}
{ volume boldface field.or.null
number empty$
{ month empty$
'skip$
{ "(" month * ")" * * }
if$
}
{ "(" number * ")" * *
volume empty$
{ "there's a number but no volume in " cite$ * warning$ }
'skip$
if$
}
if$
}
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ ", " * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.chapter.pages.inbook}
{ chapter empty$
'format.pagesinbook
{ type empty$
{ "Chap." }
{ type }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pagesinbook "l" change.case$ * }
if$
}
if$
}
FUNCTION {format.chapter.pages.incoll}
{ chapter empty$
{ pages empty$
{ "{\em In:} " }
{ "{\em " format.pagesinbook " of:} " * * }
if$
}
{ type empty$
{ "{\em Chap. " chapter * }
{ "{\em " type * " " * chapter * }
if$
pages empty$
{ " of:} " * }
{ ", " * format.pagesinbook "l" change.case$ " of:} " * * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle} % Achieves effect
{ booktitle empty$ % shown in 16.51
{ "" } % of Chicago, at
{ editor empty$ % expense of not
{ format.chapter.pages.incoll % achieving effects
booktitle emphasize * } % shown in 16.50
{ format.chapter.pages.incoll % of Chicago, on
format.editors * ", " * % page 189 of
booktitle emphasize * } % Butcher and in
if$ % 4.4 of BS 1629.
}
if$ % Don't change
} % case.
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type % Don't change
} % case.
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Tech. rept." } % ODWE abbrevs.
'type
if$
number empty$
{ } % Whatever was
{ number tie.or.space.connect } % having its case
if$ % changed, leave
} % it alone.
FUNCTION {format.addr.pub}
{ publisher empty$
{ "" }
{ address empty$
{ "" }
{ address ": " * }
if$
publisher *
}
if$
}
FUNCTION {format.addr.pub.org} % If there's an
{ address empty$ % an organization
{ publisher * ", for " * organization * } % and a publisher
{ address ": " * publisher * ", for " * organization * } % too.
if$
}
FUNCTION {format.addr.inst}
{ address empty$
{ institution empty$
{ "" }
{ institution }
if$
}
{ institution empty$
{ "" }
{ institution ", " * }
if$
address *
}
if$
}
FUNCTION {format.addr.org}
{ address empty$
{ organization empty$
{ "" }
{ organization }
if$
}
{ organization empty$
{ "" }
{ organization ", " * }
if$
address *
}
if$
}
FUNCTION {format.article.crossref}
{ "{\em In:}"
" \cite{" * crossref * "}" *
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"{\em In:}"
}
{ " Vol." volume tie.or.space.connect
" of " *
}
if$
"\cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ "{\em In:}"
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.check
new.block
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize % Don't change
"journal" output.check % case.
format.vol.num.date.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
new.block
note output
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
output.year.check
new.block
format.btitle "title" output.check
crossref missing$
{ new.sentence
format.edition output
new.block
booklike.series.volume.number output
new.block
format.addr.pub "publisher" output.check
}
{ new.block
format.book.crossref output.nonnull
}
if$
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
howpublished output
address output
new.block
note output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
editor format.key output
}
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
output.year.check
new.block
format.btitle "title" output.check
crossref missing$
{ new.sentence
format.edition output
new.block
booklike.series.volume.number output
new.block
format.addr.pub "publisher" output.check
}
{ new.block
format.book.crossref output.nonnull
}
if$
new.block
note output
new.block % BS 1629 (rather
format.chapter.pages.inbook "chapter and pages" output.check
fin.entry % than Chicago,
} % p. 451)
FUNCTION {incollection}
{ output.bibitem
author empty$
{ format.editors "editor" output.check
editor format.key output }
{ format.authors "author" output.check
author format.key output }
if$
output.year.check
new.block
format.title "title" output.check
new.block
crossref missing$ % Chapter and/or
{ format.in.ed.booktitle output % page numbers can
format.edition output % come out via this
incollectionlike.series.volume.number output % route, too.
new.block
format.addr.pub "publisher" output.check
}
{ format.incoll.inproc.crossref output.nonnull
new.block
}
if$
new.block
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
author format.key output
publisher empty$
{ output.year.month.check }
{ output.year.check }
if$
new.block
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
incollectionlike.series.volume.number output
new.block
publisher empty$
{
organization empty$
'skip$
{ format.addr.org output }
if$
}
{
organization empty$
{ format.addr.pub output }
{ format.addr.pub.org output }
if$
}
if$
}
{ format.incoll.inproc.crossref output.nonnull
}
if$
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
format.authors output
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.sentence
format.edition output
new.block
organization address new.block.checkb
format.addr.org output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
"M.Phil. thesis" format.thesis.type output.nonnull % ODWE abbrev.
school "school" output.check
address output
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
author format.key output
output.year.month.check
new.block
format.btitle output
new.block
howpublished output
new.block
note output
fin.entry
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
"Ph.D. thesis" format.thesis.type output.nonnull % Butcher,
school "school" output.check % page 174.
address output
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
format.editors "author and editor" output.check
editor format.key output
publisher empty$
{ output.year.month.check }
{ output.year.check }
if$
new.block
format.btitle "title" output.check
new.block
booklike.series.volume.number output
new.block
publisher empty$
{
organization empty$
'skip$
{ format.addr.org output }
if$
}
{
organization empty$
{ format.addr.pub output }
{ format.addr.pub.org output }
if$
}
if$
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
format.tr.number output.nonnull
new.sentence
format.addr.inst "institution" output.check
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
author format.key output
output.year.month.check
new.block
format.btitle "title" output.check
new.block
note "note" output.check
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"Jan."} % ODWE, "months", &
% Chicago, p. 383.
MACRO {feb} {"Feb."}
MACRO {mar} {"Mar."}
MACRO {apr} {"Apr."}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"Aug."}
MACRO {sep} {"Sept."}
MACRO {oct} {"Oct."}
MACRO {nov} {"Nov."}
MACRO {dec} {"Dec."}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
FUNCTION {sortify}
{ purify$
"l" change.case$
}
INTEGERS { len }
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ " {\em et~al.}" * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {\em et~al.}" * }
{ " \& " * s #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ author format.lab.names }
if$
}
FUNCTION {author.editor.key.label}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.lab.names }
if$
}
{ author format.lab.names }
if$
}
FUNCTION {editor.key.label}
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.lab.names }
if$
}
FUNCTION {calc.label}
{ type$ "book" =
type$ "inbook" =
type$ "incollection" = % For sensible
or or % treatment of
'author.editor.key.label % Singer in
{ type$ "proceedings" = % BS 1629.
'editor.key.label
'author.key.label
if$
}
if$
duplicate$
year empty$
{
"\protect\citename{" swap$ * ", }" *
"n.d." * 'label := % Chicago,
} % page 457.
{
"\protect\citename{" swap$ * ", }" *
year
*
'label :=
}
if$
year field.or.null purify$ *
sortify 'sort.label :=
}
FUNCTION {sort.format.names} % To produce the
{ 's := % order of entries
#1 'nameptr := % specified in item
"" % (3) on page 187
s num.names$ 'numnames := % of Butcher.
numnames 'namesleft :=
{ namesleft #0 > nameptr #3 < and } % Only 1st 2 names
{ nameptr #1 > % matter for
{ " " * } % sorting.
'skip$
if$ % Anything that's
nameptr #2 = numnames #2 > and % "et al" goes
{ "zzzzz" * } % after works by 2
{ % authors.
s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
nameptr numnames = t "others" = and
{ "zzzzz" * }
{ t sortify * }
if$
}
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {sort.format.title}
{ 't :=
"A " #2
"An " #3
"The " #4 t chop.word
chop.word
chop.word
sortify
#1 global.max$ substring$
}
FUNCTION {author.sort}
{ author empty$
{ key empty$
{ "to sort, need author or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {author.editor.sort}
{ author empty$
{ editor empty$
{ key empty$
{ "to sort, need author, editor, or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
{ author sort.format.names }
if$
}
FUNCTION {editor.sort}
{ editor empty$
{ key empty$
{ "to sort, need editor or key in " cite$ * warning$
""
}
{ key sortify }
if$
}
{ editor sort.format.names }
if$
}
FUNCTION {presort} % Two sorting
{ calc.label % passes, from
label sortify % apalike.bst.
" "
*
type$ "book" =
type$ "inbook" =
type$ "incollection" = % For Singer
or or % in BS 1629.
'author.editor.sort
{ type$ "proceedings" =
'editor.sort
'author.sort
if$
}
if$
#1 entry.max$ substring$
'sort.label :=
sort.label
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {presort}
SORT
STRINGS { last.label next.extra }
INTEGERS { last.extra.num }
FUNCTION {initialize.extra.label.stuff}
{ #0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'last.extra.num :=
}
FUNCTION {forward.pass}
{ last.label label =
{ last.extra.num #1 + 'last.extra.num :=
last.extra.num int.to.chr$ 'extra.label :=
}
{ "a" chr.to.int$ 'last.extra.num :=
"" 'extra.label :=
label 'last.label :=
}
if$
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$ % Code needed here
% if \citeauthor
% and \citeyear
label extra.label * 'label := % were supported.
extra.label 'next.extra :=
}
EXECUTE {initialize.extra.label.stuff}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {bib.sort.order}
{ sort.label
" "
*
year field.or.null sortify
*
" "
*
title field.or.null
sort.format.title
*
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {bib.sort.order}
SORT
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{}" write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
作为记录,Unix/Linux 命令列出的修改
diff my_authordate1.bst `kpsewhich authordate1.bst`
37c107
< STRINGS { s t u }
---
> STRINGS { s t }
194d263
< s nameptr "{jj }{ff }{vv~}{ll}" format.name$ 'u :=
197c266
< { ", " * u * }
---
> { ", " * t * }
200c269
< { " \& " * u * } % Butcher, pages
---
> { ", \& " * t * } % Butcher, pages