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 %---------------------------------------------------------------------
70 STRINGS { doiprefix doiurl }
72 FUNCTION {init.doi.variables}
74 "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
75 "doi:" 'doiprefix := % text prefix printed before DOI ref
76 #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
78 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
79 FUNCTION {init.state.consts}
86 FUNCTION {output.nonnull}
88 output.state mid.sentence =
90 { output.state after.block =
95 { output.state before.all =
97 { add.period$ " " * write$ }
101 mid.sentence 'output.state :=
112 FUNCTION {output.check}
115 { pop$ "empty " t * " in " * cite$ * warning$ }
126 { output.state before.all =
128 { after.block 'output.state := }
131 FUNCTION {new.sentence}
132 { output.state after.block =
134 { output.state before.all =
136 { after.sentence 'output.state := }
142 { " " * before.all 'output.state :=
145 FUNCTION {date.block}
167 FUNCTION {remove.dots}
173 { z #3 global.max$ substring$ 'z := * }
176 z #2 global.max$ substring$ 'z :=
177 duplicate$ "." = 'pop$
185 FUNCTION {new.block.checka}
191 FUNCTION {new.block.checkb}
199 FUNCTION {new.sentence.checka}
205 FUNCTION {new.sentence.checkb}
213 FUNCTION {field.or.null}
222 { "\emph{" swap$ * "}" * }
225 FUNCTION {tie.or.space.prefix}
226 { duplicate$ text.length$ #3 <
233 FUNCTION {capitalize}
234 { "u" change.case$ "t" change.case$ }
236 FUNCTION {space.word}
237 { " " swap$ * " " * }
238 % Here are the language-specific definitions for explicit words.
239 % Each function has a name bbl.xxx where xxx is the English word.
240 % The language selected here is ENGLISH
247 FUNCTION {bbl.editors}
250 FUNCTION {bbl.editor}
256 FUNCTION {bbl.edition}
259 FUNCTION {bbl.volume}
265 FUNCTION {bbl.number}
280 FUNCTION {bbl.chapter}
283 FUNCTION {bbl.techrep}
286 FUNCTION {bbl.mthesis}
287 { "Master's thesis" }
289 FUNCTION {bbl.phdthesis}
316 MACRO {acmcs} {"ACM Computing Surveys"}
318 MACRO {acta} {"Acta Informatica"}
320 MACRO {cacm} {"Communications of the ACM"}
322 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
324 MACRO {ibmsj} {"IBM Systems Journal"}
326 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
328 MACRO {ieeetc} {"IEEE Transactions on Computers"}
331 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
333 MACRO {ipl} {"Information Processing Letters"}
335 MACRO {jacm} {"Journal of the ACM"}
337 MACRO {jcss} {"Journal of Computer and System Sciences"}
339 MACRO {scp} {"Science of Computer Programming"}
341 MACRO {sicomp} {"SIAM Journal on Computing"}
343 MACRO {tocs} {"ACM Transactions on Computer Systems"}
345 MACRO {tods} {"ACM Transactions on Database Systems"}
347 MACRO {tog} {"ACM Transactions on Graphics"}
349 MACRO {toms} {"ACM Transactions on Mathematical Software"}
351 MACRO {toois} {"ACM Transactions on Office Information Systems"}
353 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
355 MACRO {tcs} {"Theoretical Computer Science"}
356 FUNCTION {bibinfo.check}
374 FUNCTION {bibinfo.warn}
378 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
383 swap$ "empty " swap$ * " in " * cite$ * warning$
392 FUNCTION {format.url}
397 { "\urlprefix\url{" swap$ * "}" * }
401 INTEGERS { nameptr namesleft numnames }
406 FUNCTION {format.names}
408 duplicate$ empty$ 'skip$ {
412 s num.names$ 'numnames :=
413 numnames 'namesleft :=
416 "{ff~}{vv~}{ll}{, jj}"
418 bibinfo bibinfo.check
425 s nameptr "{ll}" format.name$ duplicate$ "others" =
448 nameptr #1 + 'nameptr :=
449 namesleft #1 - 'namesleft :=
454 FUNCTION {format.names.ed}
458 FUNCTION {format.authors}
459 { author "author" format.names
461 FUNCTION {get.bbl.editor}
462 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
464 FUNCTION {format.editors}
465 { editor "editor" format.names duplicate$ empty$ 'skip$
474 FUNCTION {format.isbn}
475 { isbn "isbn" bibinfo.check
476 duplicate$ empty$ 'skip$
484 FUNCTION {format.issn}
485 { issn "issn" bibinfo.check
486 duplicate$ empty$ 'skip$
494 FUNCTION {make.href.null}
499 FUNCTION {make.href.hypertex}
501 "\special {html:<a href=" quote$ *
502 swap$ * quote$ * "> }" * swap$ *
503 "\special {html:</a>}" *
506 FUNCTION {make.href.hyperref}
508 "\href {" swap$ * "} {\path{" * swap$ * "}}" *
513 'make.href.hyperref % hrefform = 2
515 'make.href.hypertex % hrefform = 1
516 'make.href.null % hrefform = 0 (or anything else)
522 FUNCTION {format.doi}
525 { doiprefix doi * doiurl doi * make.href }
528 FUNCTION {format.note}
532 { note #1 #1 substring$
535 { output.state mid.sentence =
542 note #2 global.max$ substring$ * "note" bibinfo.check
547 FUNCTION {format.title}
549 duplicate$ empty$ 'skip$
552 "title" bibinfo.check
553 duplicate$ empty$ 'skip$
559 FUNCTION {output.bibitem}
566 before.all 'output.state :=
574 { t #1 #1 substring$ "-" =
575 { t #1 #2 substring$ "--" = not
577 t #2 global.max$ substring$ 't :=
579 { { t #1 #1 substring$ "-" = }
581 t #2 global.max$ substring$ 't :=
587 { t #1 #1 substring$ *
588 t #2 global.max$ substring$ 't :=
599 FUNCTION {format.date}
601 month "month" bibinfo.check
603 year "year" bibinfo.check duplicate$ empty$
605 { "there's a month but no year in " cite$ * warning$ }
620 FUNCTION {format.btitle}
621 { title "title" bibinfo.check
622 duplicate$ empty$ 'skip$
628 FUNCTION {either.or.check}
631 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
634 FUNCTION {format.bvolume}
637 { bbl.volume volume tie.or.space.prefix
638 "volume" bibinfo.check * *
639 series "series" bibinfo.check
640 duplicate$ empty$ 'pop$
641 { swap$ bbl.of space.word * swap$
644 "volume and number" number either.or.check
648 FUNCTION {format.number.series}
651 { series field.or.null }
653 { number "number" bibinfo.check }
654 { output.state mid.sentence =
656 { bbl.number capitalize }
658 number tie.or.space.prefix "number" bibinfo.check * *
660 series "series" bibinfo.check *
670 FUNCTION {format.edition}
671 { edition duplicate$ empty$ 'skip$
673 output.state mid.sentence =
677 "edition" bibinfo.check
682 INTEGERS { multiresult }
683 FUNCTION {multi.page.check}
692 swap$ duplicate$ "," =
695 { #1 'multiresult := }
696 { t #2 global.max$ substring$ 't := }
702 FUNCTION {format.pages}
703 { pages duplicate$ empty$ 'skip$
704 { duplicate$ multi.page.check
711 "pages" bibinfo.check
715 FUNCTION {format.journal.pages}
716 { pages duplicate$ empty$ 'pop$
717 { swap$ duplicate$ empty$
718 { pop$ pop$ format.pages }
723 "pages" bibinfo.check
730 FUNCTION {format.journal.eid}
731 { eid "eid" bibinfo.check
732 duplicate$ empty$ 'pop$
733 { swap$ duplicate$ empty$ 'skip$
742 FUNCTION {format.vol.num.pages}
743 { volume field.or.null
744 duplicate$ empty$ 'skip$
746 bbl.volume swap$ tie.or.space.prefix
747 "volume" bibinfo.check
751 number "number" bibinfo.check duplicate$ empty$ 'skip$
753 swap$ duplicate$ empty$
754 { "there's a number but no volume in " cite$ * warning$ }
762 { format.journal.pages }
763 { format.journal.eid }
767 FUNCTION {format.chapter.pages}
772 { type "l" change.case$
776 chapter tie.or.space.prefix
777 "chapter" bibinfo.check
781 { ", " * format.pages * }
787 FUNCTION {format.booktitle}
789 booktitle "booktitle" bibinfo.check
792 FUNCTION {format.in.ed.booktitle}
793 { format.booktitle duplicate$ empty$ 'skip$
795 editor "editor" format.names.ed duplicate$ empty$ 'pop$
807 FUNCTION {empty.misc.check}
808 { author empty$ title empty$ howpublished empty$
809 month empty$ year empty$ note empty$
812 { "all relevant fields are empty in " cite$ * warning$ }
816 FUNCTION {format.thesis.type}
817 { type duplicate$ empty$
820 "t" change.case$ "type" bibinfo.check
824 FUNCTION {format.tr.number}
825 { number "number" bibinfo.check
826 type duplicate$ empty$
831 swap$ duplicate$ empty$
832 { pop$ "t" change.case$ }
833 { tie.or.space.prefix * * }
836 FUNCTION {format.article.crossref}
838 key duplicate$ empty$
840 journal duplicate$ empty$
841 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
842 { "journal" bibinfo.check emphasize word.in swap$ * }
845 { word.in swap$ * " " *}
847 " \cite{" * crossref * "}" *
849 FUNCTION {format.crossref.editor}
850 { editor #1 "{vv~}{ll}" format.name$
851 "editor" bibinfo.check
852 editor num.names$ duplicate$
855 "editor" bibinfo.check
861 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
863 "editor" bibinfo.check
869 * editor #2 "{vv~}{ll}" format.name$
870 "editor" bibinfo.check
879 FUNCTION {format.book.crossref}
880 { volume duplicate$ empty$
881 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
886 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
890 editor field.or.null author field.or.null =
894 { "need editor, key, or series for " cite$ * " to crossref " *
898 { series emphasize * }
904 { format.crossref.editor * }
906 " \cite{" * crossref * "}" *
908 FUNCTION {format.incoll.inproc.crossref}
911 editor field.or.null author field.or.null =
914 { format.booktitle duplicate$ empty$
915 { "need editor, key, or booktitle for " cite$ * " to crossref " *
921 { word.in key * " " *}
924 { word.in format.crossref.editor * " " *}
926 " \cite{" * crossref * "}" *
928 FUNCTION {format.org.or.pub}
931 address empty$ t empty$ and
935 { address "address" bibinfo.check *
940 { ", " * address "address" bibinfo.check * }
947 FUNCTION {format.publisher.address}
948 { publisher "publisher" bibinfo.warn format.org.or.pub
951 FUNCTION {format.organization.address}
952 { organization "organization" bibinfo.check format.org.or.pub
957 format.authors "author" output.check
959 format.title "title" output.check
964 "journal" bibinfo.check
965 "journal" output.check
966 format.vol.num.pages output
967 format.date "year" output.check
969 { format.article.crossref output.nonnull
984 { format.editors "author and editor" output.check
986 { format.authors output.nonnull
988 { "author and editor" editor either.or.check }
994 format.btitle "title" output.check
996 { format.bvolume output
998 format.number.series output
1000 format.publisher.address output
1004 format.book.crossref output.nonnull
1007 format.edition output
1008 format.date "year" output.check
1019 format.authors output
1021 format.title "title" output.check
1023 howpublished "howpublished" bibinfo.check output
1024 address "address" bibinfo.check output
1038 { format.editors "author and editor" output.check
1040 { format.authors output.nonnull
1042 { "author and editor" editor either.or.check }
1048 format.btitle "title" output.check
1051 format.bvolume output
1052 format.chapter.pages "chapter and pages" output.check
1054 format.number.series output
1056 format.publisher.address output
1059 format.chapter.pages "chapter and pages" output.check
1061 format.book.crossref output.nonnull
1064 format.edition output
1065 format.date "year" output.check
1067 { format.isbn output }
1078 FUNCTION {incollection}
1080 format.authors "author" output.check
1082 format.title "title" output.check
1085 { format.in.ed.booktitle "booktitle" output.check
1086 format.bvolume output
1087 format.number.series output
1088 format.chapter.pages output
1090 format.publisher.address output
1091 format.edition output
1092 format.date "year" output.check
1095 { format.incoll.inproc.crossref output.nonnull
1096 format.chapter.pages output
1106 FUNCTION {inproceedings}
1108 format.authors "author" output.check
1110 format.title "title" output.check
1113 { format.in.ed.booktitle "booktitle" output.check
1114 format.bvolume output
1115 format.number.series output
1119 { format.organization.address output }
1120 { organization "organization" bibinfo.check output
1121 format.publisher.address output
1124 format.date "year" output.check
1128 { format.incoll.inproc.crossref output.nonnull
1139 FUNCTION {conference} { inproceedings }
1143 { organization "organization" bibinfo.check
1144 duplicate$ empty$ 'pop$
1146 address "address" bibinfo.check output
1150 { format.authors output.nonnull }
1153 format.btitle "title" output.check
1155 { organization empty$
1157 address new.block.checka
1158 address "address" bibinfo.check output
1164 organization address new.block.checkb
1165 organization "organization" bibinfo.check output
1166 address "address" bibinfo.check output
1169 format.edition output
1179 FUNCTION {mastersthesis}
1181 format.authors "author" output.check
1184 "title" output.check
1186 bbl.mthesis format.thesis.type output.nonnull
1187 school "school" bibinfo.warn output
1188 address "address" bibinfo.check output
1189 format.date "year" output.check
1200 format.authors output
1201 title howpublished new.block.checkb
1203 howpublished new.block.checka
1204 howpublished "howpublished" bibinfo.check output
1214 FUNCTION {phdthesis}
1216 format.authors "author" output.check
1219 "title" output.check
1221 bbl.phdthesis format.thesis.type output.nonnull
1222 school "school" bibinfo.warn output
1223 address "address" bibinfo.check output
1224 format.date "year" output.check
1233 FUNCTION {proceedings}
1236 { organization "organization" bibinfo.check output
1238 { format.editors output.nonnull }
1241 format.btitle "title" output.check
1242 format.bvolume output
1243 format.number.series output
1249 format.publisher.address output
1256 format.organization.address output }
1259 organization "organization" bibinfo.check output
1260 format.publisher.address output
1265 format.date "year" output.check
1276 FUNCTION {techreport}
1278 format.authors "author" output.check
1281 "title" output.check
1283 format.tr.number output.nonnull
1284 institution "institution" bibinfo.warn output
1285 address "address" bibinfo.check output
1286 format.date "year" output.check
1295 FUNCTION {unpublished}
1297 format.authors "author" output.check
1299 format.title "title" output.check
1305 format.note "note" output.check
1309 FUNCTION {default.type} { misc }
1316 FUNCTION {chop.word}
1319 s #1 len substring$ =
1320 { s len #1 + global.max$ substring$ }
1324 FUNCTION {sort.format.names}
1328 s num.names$ 'numnames :=
1329 numnames 'namesleft :=
1332 "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
1337 namesleft #1 = t "others" = and
1345 nameptr #1 + 'nameptr :=
1346 namesleft #1 - 'namesleft :=
1351 FUNCTION {sort.format.title}
1355 "The " #4 t chop.word
1359 #1 global.max$ substring$
1361 FUNCTION {author.sort}
1364 { "to sort, need author or key in " cite$ * warning$
1370 { author sort.format.names }
1373 FUNCTION {author.editor.sort}
1377 { "to sort, need author, editor, or key in " cite$ * warning$
1383 { editor sort.format.names }
1386 { author sort.format.names }
1389 FUNCTION {author.organization.sort}
1391 { organization empty$
1393 { "to sort, need author, organization, or key in " cite$ * warning$
1399 { "The " #4 organization chop.word sortify }
1402 { author sort.format.names }
1405 FUNCTION {editor.organization.sort}
1407 { organization empty$
1409 { "to sort, need editor, organization, or key in " cite$ * warning$
1415 { "The " #4 organization chop.word sortify }
1418 { editor sort.format.names }
1426 { type$ "proceedings" =
1427 'editor.organization.sort
1429 'author.organization.sort
1438 year field.or.null sortify
1445 #1 entry.max$ substring$
1450 STRINGS { longest.label }
1451 INTEGERS { number.label longest.label.width }
1452 FUNCTION {initialize.longest.label}
1453 { "" 'longest.label :=
1455 #0 'longest.label.width :=
1457 FUNCTION {longest.label.pass}
1458 { number.label int.to.str$ 'label :=
1459 number.label #1 + 'number.label :=
1460 label width$ longest.label.width >
1461 { label 'longest.label :=
1462 label width$ 'longest.label.width :=
1467 EXECUTE {initialize.longest.label}
1468 ITERATE {longest.label.pass}
1469 FUNCTION {begin.bib}
1472 { preamble$ write$ newline$ }
1474 "\begin{thebibliography}{" longest.label * "}" *
1476 "\providecommand{\url}[1]{\texttt{#1}}"
1478 "\providecommand{\urlprefix}{URL }"
1480 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1482 " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
1484 " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1488 EXECUTE {init.doi.variables}
1489 EXECUTE {init.state.consts}
1490 ITERATE {call.type$}
1493 "\end{thebibliography}" write$ newline$
1496 %% End of customized bst file
1498 %% End of file `mjo.bst'.