
我正在嘗試與
\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},
}
輸出
我需要獲得輸出,因為所有具有兩個或多個作者(或編輯)的條目,第一個之後的作者(或編輯)的姓名應該倒置,即以名字(包括屬於該作者的任何首字母縮寫)的形式顯示。如果參考文獻有兩位作者(或編輯),則應刪除第一作者(或編輯)後面和連接詞(“&”)之前的逗號。已明確標明如下:
請建議,也請原諒我糟糕的語言......
答案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