2 %% This is file `mjo.bst',
3 %% generated with the docstrip utility.
5 %% The original source files were:
7 %% merlin.mbs (with options: `ed-au,tit-it,jttl-rm,jwdvol,num-xser,isbn,issn,doi,edpar,ppx,ed,abr,ednx,mth-bare,xedn,etal-xc,url,url-blk,nfss,')
8 %% ----------------------------------------
11 %% Copyright 1994-2011 Patrick W Daly
12 % ===============================================================
14 % This bibliographic style (bst) file has been generated from one or
15 % more master bibliographic style (mbs) files, listed above.
17 % This generated file can be redistributed and/or modified under the terms
18 % of the LaTeX Project Public License Distributed from CTAN
19 % archives in directory macros/latex/base/lppl.txt; either
20 % version 1 of the License, or any later version.
21 % ===============================================================
22 % Name and version information of the main mbs file:
23 % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)]
24 % For use with BibTeX version 0.99a or later
25 %-------------------------------------------------------------------
26 % This bibliography style file is intended for texts in ENGLISH
27 % This is a numerical citation style, and as such is standard LaTeX.
28 % It requires no extra package to interface to the main text.
29 % The form of the \bibitem entries is
31 % Usage of \cite is as follows:
33 % \cite[chap. 2]{key} ==>> [#, chap. 2]
34 % where # is a number determined by the ordering in the reference list.
35 % The order in the reference list is alphabetical by authors.
36 %---------------------------------------------------------------------
69 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
70 FUNCTION {init.state.consts}
77 FUNCTION {output.nonnull}
79 output.state mid.sentence =
81 { output.state after.block =
86 { output.state before.all =
88 { add.period$ " " * write$ }
92 mid.sentence 'output.state :=
103 FUNCTION {output.check}
106 { pop$ "empty " t * " in " * cite$ * warning$ }
117 { output.state before.all =
119 { after.block 'output.state := }
122 FUNCTION {new.sentence}
123 { output.state after.block =
125 { output.state before.all =
127 { after.sentence 'output.state := }
133 { " " * before.all 'output.state :=
136 FUNCTION {date.block}
158 FUNCTION {remove.dots}
164 { z #3 global.max$ substring$ 'z := * }
167 z #2 global.max$ substring$ 'z :=
168 duplicate$ "." = 'pop$
176 FUNCTION {new.block.checka}
182 FUNCTION {new.block.checkb}
190 FUNCTION {new.sentence.checka}
196 FUNCTION {new.sentence.checkb}
204 FUNCTION {field.or.null}
213 { "\emph{" swap$ * "}" * }
216 FUNCTION {tie.or.space.prefix}
217 { duplicate$ text.length$ #3 <
224 FUNCTION {capitalize}
225 { "u" change.case$ "t" change.case$ }
227 FUNCTION {space.word}
228 { " " swap$ * " " * }
229 % Here are the language-specific definitions for explicit words.
230 % Each function has a name bbl.xxx where xxx is the English word.
231 % The language selected here is ENGLISH
238 FUNCTION {bbl.editors}
241 FUNCTION {bbl.editor}
247 FUNCTION {bbl.edition}
250 FUNCTION {bbl.volume}
256 FUNCTION {bbl.number}
271 FUNCTION {bbl.chapter}
274 FUNCTION {bbl.techrep}
277 FUNCTION {bbl.mthesis}
278 { "Master's thesis" }
280 FUNCTION {bbl.phdthesis}
307 MACRO {acmcs} {"ACM Computing Surveys"}
309 MACRO {acta} {"Acta Informatica"}
311 MACRO {cacm} {"Communications of the ACM"}
313 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
315 MACRO {ibmsj} {"IBM Systems Journal"}
317 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
319 MACRO {ieeetc} {"IEEE Transactions on Computers"}
322 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
324 MACRO {ipl} {"Information Processing Letters"}
326 MACRO {jacm} {"Journal of the ACM"}
328 MACRO {jcss} {"Journal of Computer and System Sciences"}
330 MACRO {scp} {"Science of Computer Programming"}
332 MACRO {sicomp} {"SIAM Journal on Computing"}
334 MACRO {tocs} {"ACM Transactions on Computer Systems"}
336 MACRO {tods} {"ACM Transactions on Database Systems"}
338 MACRO {tog} {"ACM Transactions on Graphics"}
340 MACRO {toms} {"ACM Transactions on Mathematical Software"}
342 MACRO {toois} {"ACM Transactions on Office Information Systems"}
344 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
346 MACRO {tcs} {"Theoretical Computer Science"}
347 FUNCTION {bibinfo.check}
365 FUNCTION {bibinfo.warn}
369 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
374 swap$ "empty " swap$ * " in " * cite$ * warning$
383 FUNCTION {format.url}
388 { "\urlprefix\url{" swap$ * "}" * }
392 INTEGERS { nameptr namesleft numnames }
397 FUNCTION {format.names}
399 duplicate$ empty$ 'skip$ {
403 s num.names$ 'numnames :=
404 numnames 'namesleft :=
407 "{ff~}{vv~}{ll}{, jj}"
409 bibinfo bibinfo.check
416 s nameptr "{ll}" format.name$ duplicate$ "others" =
439 nameptr #1 + 'nameptr :=
440 namesleft #1 - 'namesleft :=
445 FUNCTION {format.names.ed}
449 FUNCTION {format.authors}
450 { author "author" format.names
452 FUNCTION {get.bbl.editor}
453 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
455 FUNCTION {format.editors}
456 { editor "editor" format.names duplicate$ empty$ 'skip$
465 FUNCTION {format.isbn}
466 { isbn "isbn" bibinfo.check
467 duplicate$ empty$ 'skip$
475 FUNCTION {format.issn}
476 { issn "issn" bibinfo.check
477 duplicate$ empty$ 'skip$
485 FUNCTION {format.doi}
494 FUNCTION {format.note}
498 { note #1 #1 substring$
501 { output.state mid.sentence =
508 note #2 global.max$ substring$ * "note" bibinfo.check
513 FUNCTION {format.title}
515 duplicate$ empty$ 'skip$
518 "title" bibinfo.check
519 duplicate$ empty$ 'skip$
525 FUNCTION {output.bibitem}
532 before.all 'output.state :=
540 { t #1 #1 substring$ "-" =
541 { t #1 #2 substring$ "--" = not
543 t #2 global.max$ substring$ 't :=
545 { { t #1 #1 substring$ "-" = }
547 t #2 global.max$ substring$ 't :=
553 { t #1 #1 substring$ *
554 t #2 global.max$ substring$ 't :=
565 FUNCTION {format.date}
567 month "month" bibinfo.check
569 year "year" bibinfo.check duplicate$ empty$
571 { "there's a month but no year in " cite$ * warning$ }
586 FUNCTION {format.btitle}
587 { title "title" bibinfo.check
588 duplicate$ empty$ 'skip$
594 FUNCTION {either.or.check}
597 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
600 FUNCTION {format.bvolume}
603 { bbl.volume volume tie.or.space.prefix
604 "volume" bibinfo.check * *
605 series "series" bibinfo.check
606 duplicate$ empty$ 'pop$
607 { swap$ bbl.of space.word * swap$
610 "volume and number" number either.or.check
614 FUNCTION {format.number.series}
617 { series field.or.null }
619 { number "number" bibinfo.check }
620 { output.state mid.sentence =
622 { bbl.number capitalize }
624 number tie.or.space.prefix "number" bibinfo.check * *
626 series "series" bibinfo.check *
636 FUNCTION {format.edition}
637 { edition duplicate$ empty$ 'skip$
639 output.state mid.sentence =
643 "edition" bibinfo.check
648 INTEGERS { multiresult }
649 FUNCTION {multi.page.check}
658 swap$ duplicate$ "," =
661 { #1 'multiresult := }
662 { t #2 global.max$ substring$ 't := }
668 FUNCTION {format.pages}
669 { pages duplicate$ empty$ 'skip$
670 { duplicate$ multi.page.check
677 "pages" bibinfo.check
681 FUNCTION {format.journal.pages}
682 { pages duplicate$ empty$ 'pop$
683 { swap$ duplicate$ empty$
684 { pop$ pop$ format.pages }
689 "pages" bibinfo.check
696 FUNCTION {format.journal.eid}
697 { eid "eid" bibinfo.check
698 duplicate$ empty$ 'pop$
699 { swap$ duplicate$ empty$ 'skip$
708 FUNCTION {format.vol.num.pages}
709 { volume field.or.null
710 duplicate$ empty$ 'skip$
712 bbl.volume swap$ tie.or.space.prefix
713 "volume" bibinfo.check
717 number "number" bibinfo.check duplicate$ empty$ 'skip$
719 swap$ duplicate$ empty$
720 { "there's a number but no volume in " cite$ * warning$ }
728 { format.journal.pages }
729 { format.journal.eid }
733 FUNCTION {format.chapter.pages}
738 { type "l" change.case$
742 chapter tie.or.space.prefix
743 "chapter" bibinfo.check
747 { ", " * format.pages * }
753 FUNCTION {format.booktitle}
755 booktitle "booktitle" bibinfo.check
758 FUNCTION {format.in.ed.booktitle}
759 { format.booktitle duplicate$ empty$ 'skip$
761 editor "editor" format.names.ed duplicate$ empty$ 'pop$
773 FUNCTION {empty.misc.check}
774 { author empty$ title empty$ howpublished empty$
775 month empty$ year empty$ note empty$
778 { "all relevant fields are empty in " cite$ * warning$ }
782 FUNCTION {format.thesis.type}
783 { type duplicate$ empty$
786 "t" change.case$ "type" bibinfo.check
790 FUNCTION {format.tr.number}
791 { number "number" bibinfo.check
792 type duplicate$ empty$
797 swap$ duplicate$ empty$
798 { pop$ "t" change.case$ }
799 { tie.or.space.prefix * * }
802 FUNCTION {format.article.crossref}
804 key duplicate$ empty$
806 journal duplicate$ empty$
807 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
808 { "journal" bibinfo.check emphasize word.in swap$ * }
811 { word.in swap$ * " " *}
813 " \cite{" * crossref * "}" *
815 FUNCTION {format.crossref.editor}
816 { editor #1 "{vv~}{ll}" format.name$
817 "editor" bibinfo.check
818 editor num.names$ duplicate$
821 "editor" bibinfo.check
827 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
829 "editor" bibinfo.check
835 * editor #2 "{vv~}{ll}" format.name$
836 "editor" bibinfo.check
845 FUNCTION {format.book.crossref}
846 { volume duplicate$ empty$
847 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
852 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
856 editor field.or.null author field.or.null =
860 { "need editor, key, or series for " cite$ * " to crossref " *
864 { series emphasize * }
870 { format.crossref.editor * }
872 " \cite{" * crossref * "}" *
874 FUNCTION {format.incoll.inproc.crossref}
877 editor field.or.null author field.or.null =
880 { format.booktitle duplicate$ empty$
881 { "need editor, key, or booktitle for " cite$ * " to crossref " *
887 { word.in key * " " *}
890 { word.in format.crossref.editor * " " *}
892 " \cite{" * crossref * "}" *
894 FUNCTION {format.org.or.pub}
897 address empty$ t empty$ and
901 { address "address" bibinfo.check *
906 { ", " * address "address" bibinfo.check * }
913 FUNCTION {format.publisher.address}
914 { publisher "publisher" bibinfo.warn format.org.or.pub
917 FUNCTION {format.organization.address}
918 { organization "organization" bibinfo.check format.org.or.pub
923 format.authors "author" output.check
925 format.title "title" output.check
930 "journal" bibinfo.check
931 "journal" output.check
932 format.vol.num.pages output
933 format.date "year" output.check
935 { format.article.crossref output.nonnull
950 { format.editors "author and editor" output.check
952 { format.authors output.nonnull
954 { "author and editor" editor either.or.check }
960 format.btitle "title" output.check
962 { format.bvolume output
964 format.number.series output
966 format.publisher.address output
970 format.book.crossref output.nonnull
973 format.edition output
974 format.date "year" output.check
985 format.authors output
987 format.title "title" output.check
989 howpublished "howpublished" bibinfo.check output
990 address "address" bibinfo.check output
1004 { format.editors "author and editor" output.check
1006 { format.authors output.nonnull
1008 { "author and editor" editor either.or.check }
1014 format.btitle "title" output.check
1017 format.bvolume output
1018 format.chapter.pages "chapter and pages" output.check
1020 format.number.series output
1022 format.publisher.address output
1025 format.chapter.pages "chapter and pages" output.check
1027 format.book.crossref output.nonnull
1030 format.edition output
1031 format.date "year" output.check
1033 { format.isbn output }
1044 FUNCTION {incollection}
1046 format.authors "author" output.check
1048 format.title "title" output.check
1051 { format.in.ed.booktitle "booktitle" output.check
1052 format.bvolume output
1053 format.number.series output
1054 format.chapter.pages output
1056 format.publisher.address output
1057 format.edition output
1058 format.date "year" output.check
1061 { format.incoll.inproc.crossref output.nonnull
1062 format.chapter.pages output
1072 FUNCTION {inproceedings}
1074 format.authors "author" output.check
1076 format.title "title" output.check
1079 { format.in.ed.booktitle "booktitle" output.check
1080 format.bvolume output
1081 format.number.series output
1085 { format.organization.address output }
1086 { organization "organization" bibinfo.check output
1087 format.publisher.address output
1090 format.date "year" output.check
1094 { format.incoll.inproc.crossref output.nonnull
1105 FUNCTION {conference} { inproceedings }
1109 { organization "organization" bibinfo.check
1110 duplicate$ empty$ 'pop$
1112 address "address" bibinfo.check output
1116 { format.authors output.nonnull }
1119 format.btitle "title" output.check
1121 { organization empty$
1123 address new.block.checka
1124 address "address" bibinfo.check output
1130 organization address new.block.checkb
1131 organization "organization" bibinfo.check output
1132 address "address" bibinfo.check output
1135 format.edition output
1145 FUNCTION {mastersthesis}
1147 format.authors "author" output.check
1150 "title" output.check
1152 bbl.mthesis format.thesis.type output.nonnull
1153 school "school" bibinfo.warn output
1154 address "address" bibinfo.check output
1155 format.date "year" output.check
1166 format.authors output
1167 title howpublished new.block.checkb
1169 howpublished new.block.checka
1170 howpublished "howpublished" bibinfo.check output
1180 FUNCTION {phdthesis}
1182 format.authors "author" output.check
1185 "title" output.check
1187 bbl.phdthesis format.thesis.type output.nonnull
1188 school "school" bibinfo.warn output
1189 address "address" bibinfo.check output
1190 format.date "year" output.check
1199 FUNCTION {proceedings}
1202 { organization "organization" bibinfo.check output
1204 { format.editors output.nonnull }
1207 format.btitle "title" output.check
1208 format.bvolume output
1209 format.number.series output
1215 format.publisher.address output
1222 format.organization.address output }
1225 organization "organization" bibinfo.check output
1226 format.publisher.address output
1231 format.date "year" output.check
1242 FUNCTION {techreport}
1244 format.authors "author" output.check
1247 "title" output.check
1249 format.tr.number output.nonnull
1250 institution "institution" bibinfo.warn output
1251 address "address" bibinfo.check output
1252 format.date "year" output.check
1261 FUNCTION {unpublished}
1263 format.authors "author" output.check
1265 format.title "title" output.check
1271 format.note "note" output.check
1275 FUNCTION {default.type} { misc }
1282 FUNCTION {chop.word}
1285 s #1 len substring$ =
1286 { s len #1 + global.max$ substring$ }
1290 FUNCTION {sort.format.names}
1294 s num.names$ 'numnames :=
1295 numnames 'namesleft :=
1298 "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
1303 namesleft #1 = t "others" = and
1311 nameptr #1 + 'nameptr :=
1312 namesleft #1 - 'namesleft :=
1317 FUNCTION {sort.format.title}
1321 "The " #4 t chop.word
1325 #1 global.max$ substring$
1327 FUNCTION {author.sort}
1330 { "to sort, need author or key in " cite$ * warning$
1336 { author sort.format.names }
1339 FUNCTION {author.editor.sort}
1343 { "to sort, need author, editor, or key in " cite$ * warning$
1349 { editor sort.format.names }
1352 { author sort.format.names }
1355 FUNCTION {author.organization.sort}
1357 { organization empty$
1359 { "to sort, need author, organization, or key in " cite$ * warning$
1365 { "The " #4 organization chop.word sortify }
1368 { author sort.format.names }
1371 FUNCTION {editor.organization.sort}
1373 { organization empty$
1375 { "to sort, need editor, organization, or key in " cite$ * warning$
1381 { "The " #4 organization chop.word sortify }
1384 { editor sort.format.names }
1392 { type$ "proceedings" =
1393 'editor.organization.sort
1395 'author.organization.sort
1404 year field.or.null sortify
1411 #1 entry.max$ substring$
1416 STRINGS { longest.label }
1417 INTEGERS { number.label longest.label.width }
1418 FUNCTION {initialize.longest.label}
1419 { "" 'longest.label :=
1421 #0 'longest.label.width :=
1423 FUNCTION {longest.label.pass}
1424 { number.label int.to.str$ 'label :=
1425 number.label #1 + 'number.label :=
1426 label width$ longest.label.width >
1427 { label 'longest.label :=
1428 label width$ 'longest.label.width :=
1433 EXECUTE {initialize.longest.label}
1434 ITERATE {longest.label.pass}
1435 FUNCTION {begin.bib}
1438 { preamble$ write$ newline$ }
1440 "\begin{thebibliography}{" longest.label * "}" *
1442 "\providecommand{\url}[1]{\texttt{#1}}"
1444 "\providecommand{\urlprefix}{URL }"
1446 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1448 " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
1450 " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1454 EXECUTE {init.state.consts}
1455 ITERATE {call.type$}
1458 "\end{thebibliography}" write$ newline$
1461 %% End of customized bst file
1463 %% End of file `mjo.bst'.