| %% | |
| %% 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'. |