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 }
71 FUNCTION {init.doi.variables}
73 "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
74 "doi:" 'doiprefix := % text prefix printed before DOI ref
76 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
77 FUNCTION {init.state.consts}
84 FUNCTION {output.nonnull}
86 output.state mid.sentence =
88 { output.state after.block =
93 { output.state before.all =
95 { add.period$ " " * write$ }
99 mid.sentence 'output.state :=
110 FUNCTION {output.check}
113 { pop$ "empty " t * " in " * cite$ * warning$ }
124 { output.state before.all =
126 { after.block 'output.state := }
129 FUNCTION {new.sentence}
130 { output.state after.block =
132 { output.state before.all =
134 { after.sentence 'output.state := }
140 { " " * before.all 'output.state :=
143 FUNCTION {date.block}
165 FUNCTION {remove.dots}
171 { z #3 global.max$ substring$ 'z := * }
174 z #2 global.max$ substring$ 'z :=
175 duplicate$ "." = 'pop$
183 FUNCTION {new.block.checka}
189 FUNCTION {new.block.checkb}
197 FUNCTION {new.sentence.checka}
203 FUNCTION {new.sentence.checkb}
211 FUNCTION {field.or.null}
220 { "\emph{" swap$ * "}" * }
223 FUNCTION {tie.or.space.prefix}
224 { duplicate$ text.length$ #3 <
231 FUNCTION {capitalize}
232 { "u" change.case$ "t" change.case$ }
234 FUNCTION {space.word}
235 { " " swap$ * " " * }
236 % Here are the language-specific definitions for explicit words.
237 % Each function has a name bbl.xxx where xxx is the English word.
238 % The language selected here is ENGLISH
245 FUNCTION {bbl.editors}
248 FUNCTION {bbl.editor}
254 FUNCTION {bbl.edition}
257 FUNCTION {bbl.volume}
263 FUNCTION {bbl.number}
278 FUNCTION {bbl.chapter}
281 FUNCTION {bbl.techrep}
284 FUNCTION {bbl.mthesis}
285 { "Master's thesis" }
287 FUNCTION {bbl.phdthesis}
314 MACRO {acmcs} {"ACM Computing Surveys"}
316 MACRO {acta} {"Acta Informatica"}
318 MACRO {cacm} {"Communications of the ACM"}
320 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
322 MACRO {ibmsj} {"IBM Systems Journal"}
324 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
326 MACRO {ieeetc} {"IEEE Transactions on Computers"}
329 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
331 MACRO {ipl} {"Information Processing Letters"}
333 MACRO {jacm} {"Journal of the ACM"}
335 MACRO {jcss} {"Journal of Computer and System Sciences"}
337 MACRO {scp} {"Science of Computer Programming"}
339 MACRO {sicomp} {"SIAM Journal on Computing"}
341 MACRO {tocs} {"ACM Transactions on Computer Systems"}
343 MACRO {tods} {"ACM Transactions on Database Systems"}
345 MACRO {tog} {"ACM Transactions on Graphics"}
347 MACRO {toms} {"ACM Transactions on Mathematical Software"}
349 MACRO {toois} {"ACM Transactions on Office Information Systems"}
351 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
353 MACRO {tcs} {"Theoretical Computer Science"}
354 FUNCTION {bibinfo.check}
372 FUNCTION {bibinfo.warn}
376 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
381 swap$ "empty " swap$ * " in " * cite$ * warning$
390 FUNCTION {format.url}
395 { "\urlprefix\url{" swap$ * "}" * }
399 INTEGERS { nameptr namesleft numnames }
404 FUNCTION {format.names}
406 duplicate$ empty$ 'skip$ {
410 s num.names$ 'numnames :=
411 numnames 'namesleft :=
414 "{ff~}{vv~}{ll}{, jj}"
416 bibinfo bibinfo.check
423 s nameptr "{ll}" format.name$ duplicate$ "others" =
446 nameptr #1 + 'nameptr :=
447 namesleft #1 - 'namesleft :=
452 FUNCTION {format.names.ed}
456 FUNCTION {format.authors}
457 { author "author" format.names
459 FUNCTION {get.bbl.editor}
460 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
462 FUNCTION {format.editors}
463 { editor "editor" format.names duplicate$ empty$ 'skip$
472 FUNCTION {format.isbn}
473 { isbn "isbn" bibinfo.check
474 duplicate$ empty$ 'skip$
482 FUNCTION {format.issn}
483 { issn "issn" bibinfo.check
484 duplicate$ empty$ 'skip$
493 { "\href {" swap$ * "} {\path{" * swap$ * "}}" * }
495 FUNCTION {format.doi}
498 { doiprefix doi * doiurl doi * make.href }
501 FUNCTION {format.note}
505 { note #1 #1 substring$
508 { output.state mid.sentence =
515 note #2 global.max$ substring$ * "note" bibinfo.check
520 FUNCTION {format.title}
522 duplicate$ empty$ 'skip$
525 "title" bibinfo.check
526 duplicate$ empty$ 'skip$
532 FUNCTION {output.bibitem}
539 before.all 'output.state :=
547 { t #1 #1 substring$ "-" =
548 { t #1 #2 substring$ "--" = not
550 t #2 global.max$ substring$ 't :=
552 { { t #1 #1 substring$ "-" = }
554 t #2 global.max$ substring$ 't :=
560 { t #1 #1 substring$ *
561 t #2 global.max$ substring$ 't :=
572 FUNCTION {format.date}
574 month "month" bibinfo.check
576 year "year" bibinfo.check duplicate$ empty$
578 { "there's a month but no year in " cite$ * warning$ }
593 FUNCTION {format.btitle}
594 { title "title" bibinfo.check
595 duplicate$ empty$ 'skip$
601 FUNCTION {either.or.check}
604 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
607 FUNCTION {format.bvolume}
610 { bbl.volume volume tie.or.space.prefix
611 "volume" bibinfo.check * *
612 series "series" bibinfo.check
613 duplicate$ empty$ 'pop$
614 { swap$ bbl.of space.word * swap$
617 "volume and number" number either.or.check
621 FUNCTION {format.number.series}
624 { series field.or.null }
626 { number "number" bibinfo.check }
627 { output.state mid.sentence =
629 { bbl.number capitalize }
631 number tie.or.space.prefix "number" bibinfo.check * *
633 series "series" bibinfo.check *
643 FUNCTION {format.edition}
644 { edition duplicate$ empty$ 'skip$
646 output.state mid.sentence =
650 "edition" bibinfo.check
655 INTEGERS { multiresult }
656 FUNCTION {multi.page.check}
665 swap$ duplicate$ "," =
668 { #1 'multiresult := }
669 { t #2 global.max$ substring$ 't := }
675 FUNCTION {format.pages}
676 { pages duplicate$ empty$ 'skip$
677 { duplicate$ multi.page.check
684 "pages" bibinfo.check
688 FUNCTION {format.journal.pages}
689 { pages duplicate$ empty$ 'pop$
690 { swap$ duplicate$ empty$
691 { pop$ pop$ format.pages }
696 "pages" bibinfo.check
703 FUNCTION {format.journal.eid}
704 { eid "eid" bibinfo.check
705 duplicate$ empty$ 'pop$
706 { swap$ duplicate$ empty$ 'skip$
715 FUNCTION {format.vol.num.pages}
716 { volume field.or.null
717 duplicate$ empty$ 'skip$
719 bbl.volume swap$ tie.or.space.prefix
720 "volume" bibinfo.check
724 number "number" bibinfo.check duplicate$ empty$ 'skip$
726 swap$ duplicate$ empty$
727 { "there's a number but no volume in " cite$ * warning$ }
735 { format.journal.pages }
736 { format.journal.eid }
740 FUNCTION {format.chapter.pages}
745 { type "l" change.case$
749 chapter tie.or.space.prefix
750 "chapter" bibinfo.check
754 { ", " * format.pages * }
760 FUNCTION {format.booktitle}
762 booktitle "booktitle" bibinfo.check
765 FUNCTION {format.in.ed.booktitle}
766 { format.booktitle duplicate$ empty$ 'skip$
768 editor "editor" format.names.ed duplicate$ empty$ 'pop$
780 FUNCTION {empty.misc.check}
781 { author empty$ title empty$ howpublished empty$
782 month empty$ year empty$ note empty$
785 { "all relevant fields are empty in " cite$ * warning$ }
789 FUNCTION {format.thesis.type}
790 { type duplicate$ empty$
793 "t" change.case$ "type" bibinfo.check
797 FUNCTION {format.tr.number}
798 { number "number" bibinfo.check
799 type duplicate$ empty$
804 swap$ duplicate$ empty$
805 { pop$ "t" change.case$ }
806 { tie.or.space.prefix * * }
809 FUNCTION {format.article.crossref}
811 key duplicate$ empty$
813 journal duplicate$ empty$
814 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
815 { "journal" bibinfo.check emphasize word.in swap$ * }
818 { word.in swap$ * " " *}
820 " \cite{" * crossref * "}" *
822 FUNCTION {format.crossref.editor}
823 { editor #1 "{vv~}{ll}" format.name$
824 "editor" bibinfo.check
825 editor num.names$ duplicate$
828 "editor" bibinfo.check
834 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
836 "editor" bibinfo.check
842 * editor #2 "{vv~}{ll}" format.name$
843 "editor" bibinfo.check
852 FUNCTION {format.book.crossref}
853 { volume duplicate$ empty$
854 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
859 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
863 editor field.or.null author field.or.null =
867 { "need editor, key, or series for " cite$ * " to crossref " *
871 { series emphasize * }
877 { format.crossref.editor * }
879 " \cite{" * crossref * "}" *
881 FUNCTION {format.incoll.inproc.crossref}
884 editor field.or.null author field.or.null =
887 { format.booktitle duplicate$ empty$
888 { "need editor, key, or booktitle for " cite$ * " to crossref " *
894 { word.in key * " " *}
897 { word.in format.crossref.editor * " " *}
899 " \cite{" * crossref * "}" *
901 FUNCTION {format.org.or.pub}
904 address empty$ t empty$ and
908 { address "address" bibinfo.check *
913 { ", " * address "address" bibinfo.check * }
920 FUNCTION {format.publisher.address}
921 { publisher "publisher" bibinfo.warn format.org.or.pub
924 FUNCTION {format.organization.address}
925 { organization "organization" bibinfo.check format.org.or.pub
930 format.authors "author" output.check
932 format.title "title" output.check
937 "journal" bibinfo.check
938 "journal" output.check
939 format.vol.num.pages output
940 format.date "year" output.check
942 { format.article.crossref output.nonnull
957 { format.editors "author and editor" output.check
959 { format.authors output.nonnull
961 { "author and editor" editor either.or.check }
967 format.btitle "title" output.check
969 { format.bvolume output
971 format.number.series output
973 format.publisher.address output
977 format.book.crossref output.nonnull
980 format.edition output
981 format.date "year" output.check
992 format.authors output
994 format.title "title" output.check
996 howpublished "howpublished" bibinfo.check output
997 address "address" bibinfo.check output
1011 { format.editors "author and editor" output.check
1013 { format.authors output.nonnull
1015 { "author and editor" editor either.or.check }
1021 format.btitle "title" output.check
1024 format.bvolume output
1025 format.chapter.pages "chapter and pages" output.check
1027 format.number.series output
1029 format.publisher.address output
1032 format.chapter.pages "chapter and pages" output.check
1034 format.book.crossref output.nonnull
1037 format.edition output
1038 format.date "year" output.check
1040 { format.isbn output }
1051 FUNCTION {incollection}
1053 format.authors "author" output.check
1055 format.title "title" output.check
1058 { format.in.ed.booktitle "booktitle" output.check
1059 format.bvolume output
1060 format.number.series output
1061 format.chapter.pages output
1063 format.publisher.address output
1064 format.edition output
1065 format.date "year" output.check
1068 { format.incoll.inproc.crossref output.nonnull
1069 format.chapter.pages output
1079 FUNCTION {inproceedings}
1081 format.authors "author" output.check
1083 format.title "title" output.check
1086 { format.in.ed.booktitle "booktitle" output.check
1087 format.bvolume output
1088 format.number.series output
1092 { format.organization.address output }
1093 { organization "organization" bibinfo.check output
1094 format.publisher.address output
1097 format.date "year" output.check
1101 { format.incoll.inproc.crossref output.nonnull
1112 FUNCTION {conference} { inproceedings }
1116 { organization "organization" bibinfo.check
1117 duplicate$ empty$ 'pop$
1119 address "address" bibinfo.check output
1123 { format.authors output.nonnull }
1126 format.btitle "title" output.check
1128 { organization empty$
1130 address new.block.checka
1131 address "address" bibinfo.check output
1137 organization address new.block.checkb
1138 organization "organization" bibinfo.check output
1139 address "address" bibinfo.check output
1142 format.edition output
1152 FUNCTION {mastersthesis}
1154 format.authors "author" output.check
1157 "title" output.check
1159 bbl.mthesis format.thesis.type output.nonnull
1160 school "school" bibinfo.warn output
1161 address "address" bibinfo.check output
1162 format.date "year" output.check
1173 format.authors output
1174 title howpublished new.block.checkb
1176 howpublished new.block.checka
1177 howpublished "howpublished" bibinfo.check output
1187 FUNCTION {phdthesis}
1189 format.authors "author" output.check
1192 "title" output.check
1194 bbl.phdthesis format.thesis.type output.nonnull
1195 school "school" bibinfo.warn output
1196 address "address" bibinfo.check output
1197 format.date "year" output.check
1206 FUNCTION {proceedings}
1209 { organization "organization" bibinfo.check output
1211 { format.editors output.nonnull }
1214 format.btitle "title" output.check
1215 format.bvolume output
1216 format.number.series output
1222 format.publisher.address output
1229 format.organization.address output }
1232 organization "organization" bibinfo.check output
1233 format.publisher.address output
1238 format.date "year" output.check
1249 FUNCTION {techreport}
1251 format.authors "author" output.check
1254 "title" output.check
1256 format.tr.number output.nonnull
1257 institution "institution" bibinfo.warn output
1258 address "address" bibinfo.check output
1259 format.date "year" output.check
1268 FUNCTION {unpublished}
1270 format.authors "author" output.check
1272 format.title "title" output.check
1278 format.note "note" output.check
1282 FUNCTION {default.type} { misc }
1289 FUNCTION {chop.word}
1292 s #1 len substring$ =
1293 { s len #1 + global.max$ substring$ }
1297 FUNCTION {sort.format.names}
1301 s num.names$ 'numnames :=
1302 numnames 'namesleft :=
1305 "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
1310 namesleft #1 = t "others" = and
1318 nameptr #1 + 'nameptr :=
1319 namesleft #1 - 'namesleft :=
1324 FUNCTION {sort.format.title}
1328 "The " #4 t chop.word
1332 #1 global.max$ substring$
1334 FUNCTION {author.sort}
1337 { "to sort, need author or key in " cite$ * warning$
1343 { author sort.format.names }
1346 FUNCTION {author.editor.sort}
1350 { "to sort, need author, editor, or key in " cite$ * warning$
1356 { editor sort.format.names }
1359 { author sort.format.names }
1362 FUNCTION {author.organization.sort}
1364 { organization empty$
1366 { "to sort, need author, organization, or key in " cite$ * warning$
1372 { "The " #4 organization chop.word sortify }
1375 { author sort.format.names }
1378 FUNCTION {editor.organization.sort}
1380 { organization empty$
1382 { "to sort, need editor, organization, or key in " cite$ * warning$
1388 { "The " #4 organization chop.word sortify }
1391 { editor sort.format.names }
1399 { type$ "proceedings" =
1400 'editor.organization.sort
1402 'author.organization.sort
1411 year field.or.null sortify
1418 #1 entry.max$ substring$
1423 STRINGS { longest.label }
1424 INTEGERS { number.label longest.label.width }
1425 FUNCTION {initialize.longest.label}
1426 { "" 'longest.label :=
1428 #0 'longest.label.width :=
1430 FUNCTION {longest.label.pass}
1431 { number.label int.to.str$ 'label :=
1432 number.label #1 + 'number.label :=
1433 label width$ longest.label.width >
1434 { label 'longest.label :=
1435 label width$ 'longest.label.width :=
1440 EXECUTE {initialize.longest.label}
1441 ITERATE {longest.label.pass}
1442 FUNCTION {begin.bib}
1445 { preamble$ write$ newline$ }
1447 "\begin{thebibliography}{" longest.label * "}" *
1449 "\providecommand{\url}[1]{\texttt{#1}}"
1451 "\providecommand{\urlprefix}{URL }"
1453 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1455 " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
1457 " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1459 "\expandafter\ifx\csname href\endcsname\relax"
1461 " \def\href#1#2{#2} \def\path#1{#1}\fi"
1465 EXECUTE {init.doi.variables}
1466 EXECUTE {init.state.consts}
1467 ITERATE {call.type$}
1470 "\end{thebibliography}" write$ newline$
1473 %% End of customized bst file
1475 %% End of file `mjo.bst'.