%% | |
%% This is file `eptcs.bst', | |
%% generated with the docstrip utility. | |
%% | |
%% The original source files were: | |
%% | |
%% merlin.mbs (with options: `vonx,ed-au,dt-beg,yr-par,xmth,yrp-col,tit-it,atit-u,volp-com,jwdpg,pp-last,num-xser,ser-vol,jnm-x,pre-edn,doi,blknt,pp,xedn,amper,and-xcom,etal-xc,url,url-blk,bibinfo,nfss,') | |
%% ---------------------------------------- | |
%% *** Stylefile for EPTCS *** | |
%% | |
%% Copyright 1994-2004 Patrick W Daly | |
% =============================================================== | |
% NOTICE: | |
% This bibliographic style (bst) file has been generated from one or | |
% more master bibliographic style (mbs) files, listed above. | |
% Subsequently it has been edited by hand by Rob van Glabbeek | |
% | |
% This file can be redistributed and/or modified under the terms | |
% of the LaTeX Project Public License Distributed from CTAN | |
% archives in directory macros/latex/base/lppl.txt; either | |
% version 1 of the License, or any later version. | |
% =============================================================== | |
% Name and version information of the main mbs file: | |
% \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] | |
% For use with BibTeX version 0.99a or later | |
%------------------------------------------------------------------- | |
% This bibliography style file is intended for texts in ENGLISH | |
% This is a numerical citation style, and as such is standard LaTeX. | |
% It requires no extra package to interface to the main text. | |
% The form of the \bibitem entries is | |
% \bibitem{key}... | |
% Usage of \cite is as follows: | |
% \cite{key} ==>> [#] | |
% \cite[chap. 2]{key} ==>> [#, chap. 2] | |
% where # is a number determined by the ordering in the reference list. | |
% The order in the reference list is alphabetical by authors. | |
%--------------------------------------------------------------------- | |
ENTRY | |
{ address | |
author | |
booktitle | |
chapter | |
doi | |
edition | |
editor | |
eid | |
howpublished | |
institution | |
journal | |
key | |
note | |
number | |
organization | |
pages | |
publisher | |
school | |
series | |
title | |
type | |
url | |
ee | |
volume | |
year | |
} | |
{} | |
{ 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} | |
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 {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 {add.blank} | |
{ " " * before.all 'output.state := | |
} | |
FUNCTION {date.block} | |
{ | |
":" * | |
add.blank | |
} | |
FUNCTION {not} | |
{ { #0 } | |
{ #1 } | |
if$ | |
} | |
FUNCTION {and} | |
{ 'skip$ | |
{ pop$ #0 } | |
if$ | |
} | |
FUNCTION {or} | |
{ { pop$ #1 } | |
'skip$ | |
if$ | |
} | |
FUNCTION {new.block.checka} | |
{ empty$ | |
'skip$ | |
'new.block | |
if$ | |
} | |
FUNCTION {new.block.checkb} | |
{ empty$ | |
swap$ empty$ | |
and | |
'skip$ | |
'new.block | |
if$ | |
} | |
FUNCTION {new.sentence.checka} | |
{ empty$ | |
'skip$ | |
'new.sentence | |
if$ | |
} | |
FUNCTION {new.sentence.checkb} | |
{ empty$ | |
swap$ empty$ | |
and | |
'skip$ | |
'new.sentence | |
if$ | |
} | |
FUNCTION {field.or.null} | |
{ duplicate$ empty$ | |
{ pop$ "" } | |
'skip$ | |
if$ | |
} | |
FUNCTION {emphasize} | |
{ duplicate$ empty$ | |
{ pop$ "" } | |
{ "\emph{" swap$ * "}" * } | |
if$ | |
} | |
FUNCTION {slant} | |
{ duplicate$ empty$ | |
{ pop$ "" } | |
{ "{\sl " swap$ * "}" * } | |
if$ | |
} | |
FUNCTION {tie.or.space.prefix} | |
{ duplicate$ text.length$ #3 < | |
{ "~" } | |
{ " " } | |
if$ | |
swap$ | |
} | |
FUNCTION {capitalize} | |
{ "u" change.case$ "t" change.case$ } | |
FUNCTION {space.word} | |
{ " " swap$ * " " * } | |
% Here are the language-specific definitions for explicit words. | |
% Each function has a name bbl.xxx where xxx is the English word. | |
% The language selected here is ENGLISH | |
FUNCTION {bbl.and} | |
{ "and"} | |
FUNCTION {bbl.etal} | |
{ "et~al." } | |
FUNCTION {bbl.editors} | |
{ "editors" } | |
FUNCTION {bbl.editor} | |
{ "editor" } | |
FUNCTION {bbl.edby} | |
{ "edited by" } | |
FUNCTION {bbl.edition} | |
{ "edition" } | |
FUNCTION {bbl.volume} | |
{ "" } | |
FUNCTION {bbl.of} | |
{ "of" } | |
FUNCTION {bbl.nr} | |
{ "no." } | |
FUNCTION {bbl.in} | |
{ "in" } | |
FUNCTION {bbl.pages} | |
{ "pp." } | |
FUNCTION {bbl.page} | |
{ "p." } | |
FUNCTION {bbl.chapter} | |
{ "chapter" } | |
FUNCTION {bbl.techrep} | |
{ "Technical Report" } | |
FUNCTION {bbl.mthesis} | |
{ "Master's thesis" } | |
FUNCTION {bbl.phdthesis} | |
{ "Ph.D. thesis" } | |
MACRO {jan} {"January"} | |
MACRO {feb} {"February"} | |
MACRO {mar} {"March"} | |
MACRO {apr} {"April"} | |
MACRO {may} {"May"} | |
MACRO {jun} {"June"} | |
MACRO {jul} {"July"} | |
MACRO {aug} {"August"} | |
MACRO {sep} {"September"} | |
MACRO {oct} {"October"} | |
MACRO {nov} {"November"} | |
MACRO {dec} {"December"} | |
MACRO {acmcs} {"ACM Computing Surveys"} | |
MACRO {acta} {"Acta Informatica"} | |
MACRO {cacm} {"Communications of the ACM"} | |
MACRO {eptcs} {"Electronic Proceedings in Computer Science"} | |
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"} | |
FUNCTION {bibinfo.check} | |
{ swap$ | |
duplicate$ missing$ | |
{ | |
pop$ pop$ | |
"" | |
} | |
{ duplicate$ empty$ | |
{ | |
swap$ pop$ | |
} | |
{ swap$ | |
"\bibinfo{" swap$ * "}{" * swap$ * "}" * | |
} | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {bibinfo.warn} | |
{ swap$ | |
duplicate$ missing$ | |
{ | |
swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ | |
"" | |
} | |
{ duplicate$ empty$ | |
{ | |
swap$ "empty " swap$ * " in " * cite$ * warning$ | |
} | |
{ swap$ | |
"\bibinfo{" swap$ * "}{" * swap$ * "}" * | |
} | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {either.or.check} | |
{ empty$ | |
'pop$ | |
{ "can't use both " swap$ * " fields in " * cite$ * warning$ } | |
if$ | |
} | |
FUNCTION {format.ee} | |
{ ee empty$ | |
{ "" } | |
{ "\urlprefix\url{" ee * "}" * } | |
if$ | |
} | |
FUNCTION {format.url} | |
{ url empty$ | |
{ format.ee } | |
{ "\urlprefix\url{" url * "}" * | |
"ee and url" ee either.or.check | |
} | |
if$ | |
} | |
STRINGS { bibinfo} | |
INTEGERS { nameptr namesleft numnames } | |
FUNCTION {format.names} | |
{ 'bibinfo := | |
duplicate$ empty$ 'skip$ { | |
's := | |
"" 't := | |
#1 'nameptr := | |
s num.names$ 'numnames := | |
numnames 'namesleft := | |
{ namesleft #0 > } | |
{ s nameptr | |
"{ff~}{vv~}{ll}{, jj}" | |
format.name$ | |
bibinfo bibinfo.check | |
't := | |
nameptr #1 > | |
{ | |
namesleft #1 > | |
{ ", " * t * } | |
{ | |
s nameptr "{ll}" format.name$ duplicate$ "others" = | |
{ 't := } | |
{ pop$ } | |
if$ | |
t "others" = | |
{ | |
" " * bbl.etal * | |
} | |
{ | |
"\&" | |
space.word * t * | |
} | |
if$ | |
} | |
if$ | |
} | |
't | |
if$ | |
nameptr #1 + 'nameptr := | |
namesleft #1 - 'namesleft := | |
} | |
while$ | |
} if$ | |
} | |
FUNCTION {format.names.ed} | |
{ | |
format.names | |
} | |
FUNCTION {format.authors} | |
{ author "author" format.names | |
} | |
FUNCTION {get.bbl.editor} | |
{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } | |
FUNCTION {format.editors} | |
{ editor "editor" format.names duplicate$ empty$ 'skip$ | |
{ | |
"," * | |
" " * | |
get.bbl.editor | |
* | |
} | |
if$ | |
} | |
FUNCTION {format.doi} | |
{ doi | |
duplicate$ empty$ 'skip$ | |
{ | |
"\doi{" swap$ * "}" * | |
} | |
if$ | |
} | |
FUNCTION {format.note} | |
{ | |
note empty$ | |
{ "" } | |
{ note #1 #1 substring$ | |
duplicate$ "{" = | |
'skip$ | |
{ output.state mid.sentence = | |
{ "l" } | |
{ "u" } | |
if$ | |
change.case$ | |
} | |
if$ | |
note #2 global.max$ substring$ * "note" bibinfo.check | |
} | |
if$ | |
} | |
FUNCTION {format.title} | |
{ title | |
"title" bibinfo.check | |
duplicate$ empty$ 'skip$ | |
{ | |
emphasize | |
} | |
if$ | |
} | |
FUNCTION {output.bibitem} | |
{ newline$ | |
"\bibitemdeclare{" type$ "}{" cite$ "}" * * * * write$ newline$ | |
"\bibitem{" write$ | |
cite$ write$ | |
"}" write$ | |
newline$ | |
"" | |
before.all 'output.state := | |
} | |
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 {word.in} | |
{ bbl.in capitalize | |
" " * } | |
FUNCTION {format.date} | |
{ | |
"" | |
duplicate$ empty$ | |
year "year" bibinfo.check duplicate$ empty$ | |
{ swap$ 'skip$ | |
{ "there's a month but no year in " cite$ * warning$ } | |
if$ | |
* | |
} | |
{ swap$ 'skip$ | |
{ | |
swap$ | |
" " * swap$ | |
} | |
if$ | |
* | |
} | |
if$ | |
duplicate$ empty$ | |
'skip$ | |
{ | |
before.all 'output.state := | |
" (" swap$ * ")" * | |
} | |
if$ | |
} | |
FUNCTION {format.btitle} | |
{ title "title" bibinfo.check | |
duplicate$ empty$ 'skip$ | |
{ | |
emphasize | |
} | |
if$ | |
} | |
FUNCTION {volume.or.number} | |
{ volume missing$ | |
{ number } | |
{ volume } | |
if$ | |
} | |
FUNCTION {format.volume.number.series} | |
{ volume.or.number missing$ | |
{ series "series" bibinfo.check field.or.null } | |
{ series empty$ | |
{ volume.or.number "volume" bibinfo.check } | |
{ volume.or.number tie.or.space.prefix "volume" bibinfo.check * | |
series "series" bibinfo.check | |
duplicate$ empty$ 'pop$ | |
{ slant swap$ * } | |
if$ | |
} | |
if$ | |
volume missing$ | |
'skip$ | |
{ "volume and number" number either.or.check } | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {format.edition} | |
{ edition duplicate$ empty$ 'skip$ | |
{ | |
output.state mid.sentence = | |
{ "l" } | |
{ "t" } | |
if$ change.case$ | |
"edition" bibinfo.check | |
" " * bbl.edition * | |
} | |
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.pages} | |
{ pages duplicate$ empty$ 'skip$ | |
{ duplicate$ multi.page.check | |
{ | |
bbl.pages swap$ | |
n.dashify | |
} | |
{ | |
bbl.page swap$ | |
} | |
if$ | |
tie.or.space.prefix | |
"pages" bibinfo.check | |
* * | |
} | |
if$ | |
} | |
FUNCTION {format.journal.pages} | |
{ pages duplicate$ empty$ 'pop$ | |
{ swap$ duplicate$ empty$ | |
{ pop$ pop$ format.pages } | |
{ | |
", " * | |
swap$ | |
n.dashify | |
pages multi.page.check | |
'bbl.pages | |
'bbl.page | |
if$ | |
swap$ tie.or.space.prefix | |
"pages" bibinfo.check | |
* * | |
* | |
} | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {format.journal.eid} | |
{ eid "eid" bibinfo.check | |
duplicate$ empty$ 'pop$ | |
{ swap$ duplicate$ empty$ 'skip$ | |
{ | |
":" * | |
} | |
if$ | |
swap$ * | |
"eid and pages" pages either.or.check | |
} | |
if$ | |
} | |
FUNCTION {format.vol.num.pages} | |
{ volume field.or.null | |
duplicate$ empty$ 'skip$ | |
{ | |
"volume" bibinfo.check | |
} | |
if$ | |
number "number" bibinfo.check duplicate$ empty$ 'skip$ | |
{ | |
swap$ duplicate$ empty$ | |
{ "there's a number but no volume in " cite$ * warning$ } | |
'skip$ | |
if$ | |
swap$ | |
"(" swap$ * ")" * | |
} | |
if$ * | |
} | |
FUNCTION {format.chapter} | |
{ chapter empty$ | |
{ "" } | |
{ type empty$ | |
{ bbl.chapter } | |
{ type "l" change.case$ | |
"type" bibinfo.check | |
} | |
if$ | |
chapter tie.or.space.prefix | |
"chapter" bibinfo.check | |
* * | |
} | |
if$ | |
} | |
FUNCTION {format.booktitle} | |
{ | |
booktitle "booktitle" bibinfo.check | |
slant | |
} | |
FUNCTION {format.in.ed.booktitle} | |
{ format.booktitle duplicate$ empty$ 'skip$ | |
{ bbl.in capitalize | |
editor "editor" format.names.ed duplicate$ empty$ 'pop$ | |
{ | |
" " swap$ * | |
", " * | |
get.bbl.editor * | |
* } | |
if$ | |
": " * | |
swap$ * | |
} | |
if$ | |
} | |
FUNCTION {empty.misc.check} | |
{ author empty$ title empty$ howpublished empty$ | |
year empty$ note empty$ | |
and and and and | |
key empty$ not and | |
{ "all relevant fields are empty in " cite$ * warning$ } | |
'skip$ | |
if$ | |
} | |
FUNCTION {format.thesis.type} | |
{ type duplicate$ empty$ | |
'pop$ | |
{ swap$ pop$ | |
"t" change.case$ "type" bibinfo.check | |
} | |
if$ | |
} | |
FUNCTION {format.tr.number} | |
{ number "number" bibinfo.check | |
type duplicate$ empty$ | |
{ pop$ bbl.techrep } | |
'skip$ | |
if$ | |
"type" bibinfo.check | |
swap$ duplicate$ empty$ | |
{ pop$ "t" change.case$ } | |
{ tie.or.space.prefix * * } | |
if$ | |
} | |
FUNCTION {format.article.crossref} | |
{ | |
key duplicate$ empty$ | |
{ pop$ | |
journal duplicate$ empty$ | |
{ "need key or journal for " cite$ * " to crossref " * crossref * warning$ } | |
{ "journal" bibinfo.check slant word.in swap$ * } | |
if$ | |
} | |
{ word.in swap$ * " " *} | |
if$ | |
" \cite{" * crossref * "}" * | |
} | |
FUNCTION {format.crossref.editor} | |
{ editor #1 "{vv~}{ll}" format.name$ | |
"editor" bibinfo.check | |
editor num.names$ duplicate$ | |
#2 > | |
{ pop$ | |
"editor" bibinfo.check | |
" " * bbl.etal | |
* | |
} | |
{ #2 < | |
'skip$ | |
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
{ | |
"editor" bibinfo.check | |
" " * bbl.etal | |
* | |
} | |
{ | |
" \& " | |
* editor #2 "{vv~}{ll}" format.name$ | |
"editor" bibinfo.check | |
* | |
} | |
if$ | |
} | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {format.book.crossref} | |
{ volume duplicate$ empty$ | |
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | |
pop$ word.in | |
} | |
{ bbl.volume | |
capitalize | |
swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * | |
} | |
if$ | |
editor empty$ | |
editor field.or.null author field.or.null = | |
or | |
{ key empty$ | |
{ series empty$ | |
{ "need editor, key, or series for " cite$ * " to crossref " * | |
crossref * warning$ | |
"" * | |
} | |
{ series slant * } | |
if$ | |
} | |
{ key * } | |
if$ | |
} | |
{ format.crossref.editor * } | |
if$ | |
" \cite{" * crossref * "}" * | |
} | |
FUNCTION {format.incoll.inproc.crossref} | |
{ | |
editor empty$ | |
editor field.or.null author field.or.null = | |
or | |
{ key empty$ | |
{ format.booktitle duplicate$ empty$ | |
{ "need editor, key, or booktitle for " cite$ * " to crossref " * | |
crossref * warning$ | |
} | |
{ word.in swap$ * } | |
if$ | |
} | |
{ word.in key * " " *} | |
if$ | |
} | |
{ word.in format.crossref.editor * " " *} | |
if$ | |
" \cite{" * crossref * "}" * | |
} | |
FUNCTION {format.org.or.pub} | |
{ 't := | |
"" | |
address empty$ t empty$ and | |
'skip$ | |
{ | |
t empty$ | |
{ address "address" bibinfo.check * | |
} | |
{ t * | |
address empty$ | |
'skip$ | |
{ ", " * address "address" bibinfo.check * } | |
if$ | |
} | |
if$ | |
} | |
if$ | |
} | |
FUNCTION {format.publisher.address} | |
{ publisher "publisher" bibinfo.warn format.org.or.pub | |
} | |
FUNCTION {format.organization.address} | |
{ organization "organization" bibinfo.check format.org.or.pub | |
} | |
FUNCTION {article} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.title "title" output.check | |
new.block | |
crossref missing$ | |
{ | |
journal | |
"journal" bibinfo.check | |
slant | |
"journal" output.check | |
add.blank | |
format.vol.num.pages output | |
} | |
{ format.article.crossref output.nonnull | |
} | |
if$ | |
eid empty$ | |
{ format.journal.pages } | |
{ format.journal.eid } | |
if$ | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {book} | |
{ output.bibitem | |
author empty$ | |
{ format.editors "author and editor" output.check | |
} | |
{ format.authors output.nonnull | |
crossref missing$ | |
{ "author and editor" editor either.or.check } | |
'skip$ | |
if$ | |
} | |
if$ | |
format.date "year" output.check | |
date.block | |
format.btitle "title" output.check | |
crossref missing$ | |
{ format.edition output | |
new.block | |
format.volume.number.series output | |
format.publisher.address output | |
} | |
{ | |
new.block | |
format.book.crossref output.nonnull | |
} | |
if$ | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {booklet} | |
{ output.bibitem | |
format.authors output | |
format.date output | |
date.block | |
format.title "title" output.check | |
new.block | |
howpublished "howpublished" bibinfo.check output | |
address "address" bibinfo.check output | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {inbook} | |
{ output.bibitem | |
author empty$ | |
{ format.editors "author and editor" output.check | |
} | |
{ format.authors output.nonnull | |
crossref missing$ | |
{ "author and editor" editor either.or.check } | |
'skip$ | |
if$ | |
} | |
if$ | |
format.date "year" output.check | |
date.block | |
format.btitle "title" output.check | |
crossref missing$ | |
{ | |
format.edition output | |
format.chapter output | |
format.pages output | |
new.block | |
format.volume.number.series output | |
format.publisher.address output | |
} | |
{ | |
format.chapter output | |
format.pages output | |
new.block | |
format.book.crossref output.nonnull | |
} | |
if$ | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {incollection} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.title "title" output.check | |
new.block | |
crossref missing$ | |
{ format.in.ed.booktitle "booktitle" output.check | |
format.edition output | |
format.chapter output | |
format.volume.number.series output | |
format.publisher.address output | |
} | |
{ format.incoll.inproc.crossref output.nonnull | |
format.chapter output | |
} | |
if$ | |
format.pages "pages" output.check | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {inproceedings} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.title "title" output.check | |
new.block | |
crossref missing$ | |
{ format.in.ed.booktitle "booktitle" output.check | |
format.volume.number.series output | |
publisher empty$ | |
{ format.organization.address output } | |
{ organization "organization" bibinfo.check output | |
format.publisher.address output | |
} | |
if$ | |
} | |
{ format.incoll.inproc.crossref output.nonnull | |
} | |
if$ | |
format.pages "pages" output.check | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {conference} { inproceedings } | |
FUNCTION {manual} | |
{ output.bibitem | |
author empty$ | |
{ organization "organization" bibinfo.check | |
duplicate$ empty$ 'pop$ | |
{ output | |
address "address" bibinfo.check output | |
} | |
if$ | |
} | |
{ format.authors output.nonnull } | |
if$ | |
format.date output | |
date.block | |
format.btitle "title" output.check | |
format.edition output | |
author empty$ | |
{ organization empty$ | |
{ | |
address new.block.checka | |
address "address" bibinfo.check output | |
} | |
'skip$ | |
if$ | |
} | |
{ | |
organization address new.block.checkb | |
organization "organization" bibinfo.check output | |
address "address" bibinfo.check output | |
} | |
if$ | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {mastersthesis} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.btitle | |
"title" output.check | |
new.block | |
bbl.mthesis format.thesis.type output.nonnull | |
school "school" bibinfo.warn output | |
address "address" bibinfo.check output | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {misc} | |
{ output.bibitem | |
format.authors output | |
format.date output | |
output.state before.all = | |
'skip$ | |
{date.block} | |
if$ | |
title howpublished new.block.checkb | |
format.title output | |
howpublished new.block.checka | |
howpublished "howpublished" bibinfo.check output | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
empty.misc.check | |
} | |
FUNCTION {phdthesis} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.btitle | |
"title" output.check | |
new.block | |
bbl.phdthesis format.thesis.type output.nonnull | |
school "school" bibinfo.warn output | |
address "address" bibinfo.check output | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {proceedings} | |
{ output.bibitem | |
editor empty$ | |
{ organization "organization" bibinfo.check output | |
} | |
{ format.editors output.nonnull } | |
if$ | |
format.date "year" output.check | |
date.block | |
format.btitle "title" output.check | |
editor empty$ | |
{ publisher empty$ | |
{ new.sentence format.volume.number.series output } | |
{ | |
new.sentence | |
format.volume.number.series output | |
format.publisher.address output | |
} | |
if$ | |
} | |
{ publisher empty$ | |
{ | |
new.sentence | |
format.volume.number.series output | |
format.organization.address output } | |
{ | |
new.sentence | |
format.volume.number.series output | |
organization "organization" bibinfo.check output | |
format.publisher.address output | |
} | |
if$ | |
} | |
if$ | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {techreport} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date "year" output.check | |
date.block | |
format.title | |
"title" output.check | |
new.block | |
format.tr.number output.nonnull | |
institution "institution" bibinfo.warn output | |
address "address" bibinfo.check output | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note output | |
fin.entry | |
} | |
FUNCTION {unpublished} | |
{ output.bibitem | |
format.authors "author" output.check | |
format.date output | |
date.block | |
format.title "title" output.check | |
format.doi output | |
new.block | |
format.url output | |
new.block | |
format.note "note" output.check | |
fin.entry | |
} | |
FUNCTION {default.type} { misc } | |
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 {sort.format.names} | |
{ 's := | |
#1 'nameptr := | |
"" | |
s num.names$ 'numnames := | |
numnames 'namesleft := | |
{ namesleft #0 > } | |
{ s nameptr | |
"{ll{ }}{ ff{ }}{ jj{ }}" | |
format.name$ 't := | |
nameptr #1 > | |
{ | |
" " * | |
namesleft #1 = t "others" = and | |
{ "zzzzz" * } | |
{ t sortify * } | |
if$ | |
} | |
{ t sortify * } | |
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 {author.organization.sort} | |
{ author empty$ | |
{ organization empty$ | |
{ key empty$ | |
{ "to sort, need author, organization, or key in " cite$ * warning$ | |
"" | |
} | |
{ key sortify } | |
if$ | |
} | |
{ "The " #4 organization chop.word sortify } | |
if$ | |
} | |
{ author sort.format.names } | |
if$ | |
} | |
FUNCTION {editor.organization.sort} | |
{ editor empty$ | |
{ organization empty$ | |
{ key empty$ | |
{ "to sort, need editor, organization, or key in " cite$ * warning$ | |
"" | |
} | |
{ key sortify } | |
if$ | |
} | |
{ "The " #4 organization chop.word sortify } | |
if$ | |
} | |
{ editor sort.format.names } | |
if$ | |
} | |
FUNCTION {presort} | |
{ type$ "book" = | |
type$ "inbook" = | |
or | |
'author.editor.sort | |
{ type$ "proceedings" = | |
'editor.organization.sort | |
{ type$ "manual" = | |
'author.organization.sort | |
'author.sort | |
if$ | |
} | |
if$ | |
} | |
if$ | |
" " | |
* | |
year field.or.null sortify | |
* | |
" " | |
* | |
title field.or.null | |
sort.format.title | |
* | |
#1 entry.max$ substring$ | |
'sort.key$ := | |
} | |
ITERATE {presort} | |
SORT | |
STRINGS { longest.label } | |
INTEGERS { number.label longest.label.width } | |
FUNCTION {initialize.longest.label} | |
{ "" 'longest.label := | |
#1 'number.label := | |
#0 'longest.label.width := | |
} | |
FUNCTION {longest.label.pass} | |
{ number.label int.to.str$ 'label := | |
number.label #1 + 'number.label := | |
label width$ longest.label.width > | |
{ label 'longest.label := | |
label width$ 'longest.label.width := | |
} | |
'skip$ | |
if$ | |
} | |
EXECUTE {initialize.longest.label} | |
ITERATE {longest.label.pass} | |
FUNCTION {begin.bib} | |
{ preamble$ empty$ | |
'skip$ | |
{ preamble$ write$ newline$ } | |
if$ | |
"\begin{thebibliography}{" longest.label * "}" * | |
write$ newline$ | |
"\providecommand{\bibitemdeclare}[2]{}" | |
write$ newline$ | |
"\providecommand{\urlprefix}{Available at }" | |
write$ newline$ | |
"\providecommand{\url}[1]{\texttt{#1}}" | |
write$ newline$ | |
"\providecommand{\href}[2]{\texttt{#2}}" | |
write$ newline$ | |
"\providecommand{\urlalt}[2]{\href{#1}{#2}}" | |
write$ newline$ | |
"\providecommand{\doi}[1]{doi:\urlalt{http://dx.doi.org/#1}{#1}}" | |
write$ newline$ | |
"\providecommand{\bibinfo}[2]{#2}" | |
write$ newline$ | |
} | |
EXECUTE {begin.bib} | |
EXECUTE {init.state.consts} | |
ITERATE {call.type$} | |
FUNCTION {end.bib} | |
{ newline$ | |
"\end{thebibliography}" write$ newline$ | |
} | |
EXECUTE {end.bib} | |
%% End of customized bst file | |
%% | |
%% End of file `eptcs.bst'. |