]> gitweb.michael.orlitzky.com - mjotex.git/blob - mjo.bst
Generate a new mjo.bst using makebst.
[mjotex.git] / mjo.bst
1 %%
2 %% This is file `mjo.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
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 %% ----------------------------------------
9 %% *** ***
10 %%
11 %% Copyright 1994-2011 Patrick W Daly
12 % ===============================================================
13 % IMPORTANT NOTICE:
14 % This bibliographic style (bst) file has been generated from one or
15 % more master bibliographic style (mbs) files, listed above.
16 %
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
30 % \bibitem{key}...
31 % Usage of \cite is as follows:
32 % \cite{key} ==>> [#]
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 %---------------------------------------------------------------------
37
38 ENTRY
39 { address
40 author
41 booktitle
42 chapter
43 doi
44 edition
45 editor
46 eid
47 howpublished
48 institution
49 isbn
50 issn
51 journal
52 key
53 month
54 note
55 number
56 organization
57 pages
58 publisher
59 school
60 series
61 title
62 type
63 url
64 volume
65 year
66 }
67 {}
68 { label }
69 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
70 FUNCTION {init.state.consts}
71 { #0 'before.all :=
72 #1 'mid.sentence :=
73 #2 'after.sentence :=
74 #3 'after.block :=
75 }
76 STRINGS { s t}
77 FUNCTION {output.nonnull}
78 { 's :=
79 output.state mid.sentence =
80 { ", " * write$ }
81 { output.state after.block =
82 { add.period$ write$
83 newline$
84 "\newblock " write$
85 }
86 { output.state before.all =
87 'write$
88 { add.period$ " " * write$ }
89 if$
90 }
91 if$
92 mid.sentence 'output.state :=
93 }
94 if$
95 s
96 }
97 FUNCTION {output}
98 { duplicate$ empty$
99 'pop$
100 'output.nonnull
101 if$
102 }
103 FUNCTION {output.check}
104 { 't :=
105 duplicate$ empty$
106 { pop$ "empty " t * " in " * cite$ * warning$ }
107 'output.nonnull
108 if$
109 }
110 FUNCTION {fin.entry}
111 { add.period$
112 write$
113 newline$
114 }
115
116 FUNCTION {new.block}
117 { output.state before.all =
118 'skip$
119 { after.block 'output.state := }
120 if$
121 }
122 FUNCTION {new.sentence}
123 { output.state after.block =
124 'skip$
125 { output.state before.all =
126 'skip$
127 { after.sentence 'output.state := }
128 if$
129 }
130 if$
131 }
132 FUNCTION {add.blank}
133 { " " * before.all 'output.state :=
134 }
135
136 FUNCTION {date.block}
137 {
138 new.block
139 }
140
141 FUNCTION {not}
142 { { #0 }
143 { #1 }
144 if$
145 }
146 FUNCTION {and}
147 { 'skip$
148 { pop$ #0 }
149 if$
150 }
151 FUNCTION {or}
152 { { pop$ #1 }
153 'skip$
154 if$
155 }
156 STRINGS {z}
157
158 FUNCTION {remove.dots}
159 { 'z :=
160 ""
161 { z empty$ not }
162 { z #1 #2 substring$
163 duplicate$ "\." =
164 { z #3 global.max$ substring$ 'z := * }
165 { pop$
166 z #1 #1 substring$
167 z #2 global.max$ substring$ 'z :=
168 duplicate$ "." = 'pop$
169 { * }
170 if$
171 }
172 if$
173 }
174 while$
175 }
176 FUNCTION {new.block.checka}
177 { empty$
178 'skip$
179 'new.block
180 if$
181 }
182 FUNCTION {new.block.checkb}
183 { empty$
184 swap$ empty$
185 and
186 'skip$
187 'new.block
188 if$
189 }
190 FUNCTION {new.sentence.checka}
191 { empty$
192 'skip$
193 'new.sentence
194 if$
195 }
196 FUNCTION {new.sentence.checkb}
197 { empty$
198 swap$ empty$
199 and
200 'skip$
201 'new.sentence
202 if$
203 }
204 FUNCTION {field.or.null}
205 { duplicate$ empty$
206 { pop$ "" }
207 'skip$
208 if$
209 }
210 FUNCTION {emphasize}
211 { duplicate$ empty$
212 { pop$ "" }
213 { "\emph{" swap$ * "}" * }
214 if$
215 }
216 FUNCTION {tie.or.space.prefix}
217 { duplicate$ text.length$ #3 <
218 { "~" }
219 { " " }
220 if$
221 swap$
222 }
223
224 FUNCTION {capitalize}
225 { "u" change.case$ "t" change.case$ }
226
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
232 FUNCTION {bbl.and}
233 { "and"}
234
235 FUNCTION {bbl.etal}
236 { "et~al." }
237
238 FUNCTION {bbl.editors}
239 { "eds." }
240
241 FUNCTION {bbl.editor}
242 { "ed." }
243
244 FUNCTION {bbl.edby}
245 { "edited by" }
246
247 FUNCTION {bbl.edition}
248 { "ed." }
249
250 FUNCTION {bbl.volume}
251 { "vol." }
252
253 FUNCTION {bbl.of}
254 { "of" }
255
256 FUNCTION {bbl.number}
257 { "no." }
258
259 FUNCTION {bbl.nr}
260 { "no." }
261
262 FUNCTION {bbl.in}
263 { "in" }
264
265 FUNCTION {bbl.pages}
266 { "" }
267
268 FUNCTION {bbl.page}
269 { "" }
270
271 FUNCTION {bbl.chapter}
272 { "chap." }
273
274 FUNCTION {bbl.techrep}
275 { "Tech. Rep." }
276
277 FUNCTION {bbl.mthesis}
278 { "Master's thesis" }
279
280 FUNCTION {bbl.phdthesis}
281 { "Ph.D. thesis" }
282
283 MACRO {jan} {"Jan."}
284
285 MACRO {feb} {"Feb."}
286
287 MACRO {mar} {"Mar."}
288
289 MACRO {apr} {"Apr."}
290
291 MACRO {may} {"May"}
292
293 MACRO {jun} {"Jun."}
294
295 MACRO {jul} {"Jul."}
296
297 MACRO {aug} {"Aug."}
298
299 MACRO {sep} {"Sep."}
300
301 MACRO {oct} {"Oct."}
302
303 MACRO {nov} {"Nov."}
304
305 MACRO {dec} {"Dec."}
306
307 MACRO {acmcs} {"ACM Computing Surveys"}
308
309 MACRO {acta} {"Acta Informatica"}
310
311 MACRO {cacm} {"Communications of the ACM"}
312
313 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
314
315 MACRO {ibmsj} {"IBM Systems Journal"}
316
317 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
318
319 MACRO {ieeetc} {"IEEE Transactions on Computers"}
320
321 MACRO {ieeetcad}
322 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
323
324 MACRO {ipl} {"Information Processing Letters"}
325
326 MACRO {jacm} {"Journal of the ACM"}
327
328 MACRO {jcss} {"Journal of Computer and System Sciences"}
329
330 MACRO {scp} {"Science of Computer Programming"}
331
332 MACRO {sicomp} {"SIAM Journal on Computing"}
333
334 MACRO {tocs} {"ACM Transactions on Computer Systems"}
335
336 MACRO {tods} {"ACM Transactions on Database Systems"}
337
338 MACRO {tog} {"ACM Transactions on Graphics"}
339
340 MACRO {toms} {"ACM Transactions on Mathematical Software"}
341
342 MACRO {toois} {"ACM Transactions on Office Information Systems"}
343
344 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
345
346 MACRO {tcs} {"Theoretical Computer Science"}
347 FUNCTION {bibinfo.check}
348 { swap$
349 duplicate$ missing$
350 {
351 pop$ pop$
352 ""
353 }
354 { duplicate$ empty$
355 {
356 swap$ pop$
357 }
358 { swap$
359 pop$
360 }
361 if$
362 }
363 if$
364 }
365 FUNCTION {bibinfo.warn}
366 { swap$
367 duplicate$ missing$
368 {
369 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
370 ""
371 }
372 { duplicate$ empty$
373 {
374 swap$ "empty " swap$ * " in " * cite$ * warning$
375 }
376 { swap$
377 pop$
378 }
379 if$
380 }
381 if$
382 }
383 FUNCTION {format.url}
384 {
385 url
386 duplicate$ empty$
387 { pop$ "" }
388 { "\urlprefix\url{" swap$ * "}" * }
389 if$
390 }
391
392 INTEGERS { nameptr namesleft numnames }
393
394
395 STRINGS { bibinfo}
396
397 FUNCTION {format.names}
398 { 'bibinfo :=
399 duplicate$ empty$ 'skip$ {
400 's :=
401 "" 't :=
402 #1 'nameptr :=
403 s num.names$ 'numnames :=
404 numnames 'namesleft :=
405 { namesleft #0 > }
406 { s nameptr
407 "{ff~}{vv~}{ll}{, jj}"
408 format.name$
409 bibinfo bibinfo.check
410 't :=
411 nameptr #1 >
412 {
413 namesleft #1 >
414 { ", " * t * }
415 {
416 s nameptr "{ll}" format.name$ duplicate$ "others" =
417 { 't := }
418 { pop$ }
419 if$
420 numnames #2 >
421 t "others" = not and
422 { "," * }
423 'skip$
424 if$
425 t "others" =
426 {
427 " " * bbl.etal *
428 }
429 {
430 bbl.and
431 space.word * t *
432 }
433 if$
434 }
435 if$
436 }
437 't
438 if$
439 nameptr #1 + 'nameptr :=
440 namesleft #1 - 'namesleft :=
441 }
442 while$
443 } if$
444 }
445 FUNCTION {format.names.ed}
446 {
447 format.names
448 }
449 FUNCTION {format.authors}
450 { author "author" format.names
451 }
452 FUNCTION {get.bbl.editor}
453 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
454
455 FUNCTION {format.editors}
456 { editor "editor" format.names duplicate$ empty$ 'skip$
457 {
458 " " *
459 get.bbl.editor
460 "(" swap$ * ")" *
461 *
462 }
463 if$
464 }
465 FUNCTION {format.isbn}
466 { isbn "isbn" bibinfo.check
467 duplicate$ empty$ 'skip$
468 {
469 new.block
470 "ISBN " swap$ *
471 }
472 if$
473 }
474
475 FUNCTION {format.issn}
476 { issn "issn" bibinfo.check
477 duplicate$ empty$ 'skip$
478 {
479 new.block
480 "ISSN " swap$ *
481 }
482 if$
483 }
484
485 FUNCTION {format.doi}
486 { doi empty$
487 { "" }
488 {
489 new.block
490 "\doi{" doi * "}" *
491 }
492 if$
493 }
494 FUNCTION {format.note}
495 {
496 note empty$
497 { "" }
498 { note #1 #1 substring$
499 duplicate$ "{" =
500 'skip$
501 { output.state mid.sentence =
502 { "l" }
503 { "u" }
504 if$
505 change.case$
506 }
507 if$
508 note #2 global.max$ substring$ * "note" bibinfo.check
509 }
510 if$
511 }
512
513 FUNCTION {format.title}
514 { title
515 duplicate$ empty$ 'skip$
516 { "t" change.case$ }
517 if$
518 "title" bibinfo.check
519 duplicate$ empty$ 'skip$
520 {
521 emphasize
522 }
523 if$
524 }
525 FUNCTION {output.bibitem}
526 { newline$
527 "\bibitem{" write$
528 cite$ write$
529 "}" write$
530 newline$
531 ""
532 before.all 'output.state :=
533 }
534
535 FUNCTION {n.dashify}
536 {
537 't :=
538 ""
539 { t empty$ not }
540 { t #1 #1 substring$ "-" =
541 { t #1 #2 substring$ "--" = not
542 { "--" *
543 t #2 global.max$ substring$ 't :=
544 }
545 { { t #1 #1 substring$ "-" = }
546 { "-" *
547 t #2 global.max$ substring$ 't :=
548 }
549 while$
550 }
551 if$
552 }
553 { t #1 #1 substring$ *
554 t #2 global.max$ substring$ 't :=
555 }
556 if$
557 }
558 while$
559 }
560
561 FUNCTION {word.in}
562 { bbl.in capitalize
563 " " * }
564
565 FUNCTION {format.date}
566 {
567 month "month" bibinfo.check
568 duplicate$ empty$
569 year "year" bibinfo.check duplicate$ empty$
570 { swap$ 'skip$
571 { "there's a month but no year in " cite$ * warning$ }
572 if$
573 *
574 }
575 { swap$ 'skip$
576 {
577 swap$
578 " " * swap$
579 }
580 if$
581 *
582 remove.dots
583 }
584 if$
585 }
586 FUNCTION {format.btitle}
587 { title "title" bibinfo.check
588 duplicate$ empty$ 'skip$
589 {
590 emphasize
591 }
592 if$
593 }
594 FUNCTION {either.or.check}
595 { empty$
596 'pop$
597 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
598 if$
599 }
600 FUNCTION {format.bvolume}
601 { volume empty$
602 { "" }
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$
608 emphasize * }
609 if$
610 "volume and number" number either.or.check
611 }
612 if$
613 }
614 FUNCTION {format.number.series}
615 { volume empty$
616 { number empty$
617 { series field.or.null }
618 { series empty$
619 { number "number" bibinfo.check }
620 { output.state mid.sentence =
621 { bbl.number }
622 { bbl.number capitalize }
623 if$
624 number tie.or.space.prefix "number" bibinfo.check * *
625 bbl.in space.word *
626 series "series" bibinfo.check *
627 }
628 if$
629 }
630 if$
631 }
632 { "" }
633 if$
634 }
635
636 FUNCTION {format.edition}
637 { edition duplicate$ empty$ 'skip$
638 {
639 output.state mid.sentence =
640 { "l" }
641 { "t" }
642 if$ change.case$
643 "edition" bibinfo.check
644 " " * bbl.edition *
645 }
646 if$
647 }
648 INTEGERS { multiresult }
649 FUNCTION {multi.page.check}
650 { 't :=
651 #0 'multiresult :=
652 { multiresult not
653 t empty$ not
654 and
655 }
656 { t #1 #1 substring$
657 duplicate$ "-" =
658 swap$ duplicate$ "," =
659 swap$ "+" =
660 or or
661 { #1 'multiresult := }
662 { t #2 global.max$ substring$ 't := }
663 if$
664 }
665 while$
666 multiresult
667 }
668 FUNCTION {format.pages}
669 { pages duplicate$ empty$ 'skip$
670 { duplicate$ multi.page.check
671 {
672 n.dashify
673 }
674 {
675 }
676 if$
677 "pages" bibinfo.check
678 }
679 if$
680 }
681 FUNCTION {format.journal.pages}
682 { pages duplicate$ empty$ 'pop$
683 { swap$ duplicate$ empty$
684 { pop$ pop$ format.pages }
685 {
686 ":" *
687 swap$
688 n.dashify
689 "pages" bibinfo.check
690 *
691 }
692 if$
693 }
694 if$
695 }
696 FUNCTION {format.journal.eid}
697 { eid "eid" bibinfo.check
698 duplicate$ empty$ 'pop$
699 { swap$ duplicate$ empty$ 'skip$
700 {
701 ":" *
702 }
703 if$
704 swap$ *
705 }
706 if$
707 }
708 FUNCTION {format.vol.num.pages}
709 { volume field.or.null
710 duplicate$ empty$ 'skip$
711 {
712 bbl.volume swap$ tie.or.space.prefix
713 "volume" bibinfo.check
714 * *
715 }
716 if$
717 number "number" bibinfo.check duplicate$ empty$ 'skip$
718 {
719 swap$ duplicate$ empty$
720 { "there's a number but no volume in " cite$ * warning$ }
721 'skip$
722 if$
723 swap$
724 "(" swap$ * ")" *
725 }
726 if$ *
727 eid empty$
728 { format.journal.pages }
729 { format.journal.eid }
730 if$
731 }
732
733 FUNCTION {format.chapter.pages}
734 { chapter empty$
735 'format.pages
736 { type empty$
737 { bbl.chapter }
738 { type "l" change.case$
739 "type" bibinfo.check
740 }
741 if$
742 chapter tie.or.space.prefix
743 "chapter" bibinfo.check
744 * *
745 pages empty$
746 'skip$
747 { ", " * format.pages * }
748 if$
749 }
750 if$
751 }
752
753 FUNCTION {format.booktitle}
754 {
755 booktitle "booktitle" bibinfo.check
756 emphasize
757 }
758 FUNCTION {format.in.ed.booktitle}
759 { format.booktitle duplicate$ empty$ 'skip$
760 {
761 editor "editor" format.names.ed duplicate$ empty$ 'pop$
762 {
763 " " *
764 get.bbl.editor
765 "(" swap$ * "), " *
766 * swap$
767 * }
768 if$
769 word.in swap$ *
770 }
771 if$
772 }
773 FUNCTION {empty.misc.check}
774 { author empty$ title empty$ howpublished empty$
775 month empty$ year empty$ note empty$
776 and and and and and
777 key empty$ not and
778 { "all relevant fields are empty in " cite$ * warning$ }
779 'skip$
780 if$
781 }
782 FUNCTION {format.thesis.type}
783 { type duplicate$ empty$
784 'pop$
785 { swap$ pop$
786 "t" change.case$ "type" bibinfo.check
787 }
788 if$
789 }
790 FUNCTION {format.tr.number}
791 { number "number" bibinfo.check
792 type duplicate$ empty$
793 { pop$ bbl.techrep }
794 'skip$
795 if$
796 "type" bibinfo.check
797 swap$ duplicate$ empty$
798 { pop$ "t" change.case$ }
799 { tie.or.space.prefix * * }
800 if$
801 }
802 FUNCTION {format.article.crossref}
803 {
804 key duplicate$ empty$
805 { pop$
806 journal duplicate$ empty$
807 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
808 { "journal" bibinfo.check emphasize word.in swap$ * }
809 if$
810 }
811 { word.in swap$ * " " *}
812 if$
813 " \cite{" * crossref * "}" *
814 }
815 FUNCTION {format.crossref.editor}
816 { editor #1 "{vv~}{ll}" format.name$
817 "editor" bibinfo.check
818 editor num.names$ duplicate$
819 #2 >
820 { pop$
821 "editor" bibinfo.check
822 " " * bbl.etal
823 *
824 }
825 { #2 <
826 'skip$
827 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
828 {
829 "editor" bibinfo.check
830 " " * bbl.etal
831 *
832 }
833 {
834 bbl.and space.word
835 * editor #2 "{vv~}{ll}" format.name$
836 "editor" bibinfo.check
837 *
838 }
839 if$
840 }
841 if$
842 }
843 if$
844 }
845 FUNCTION {format.book.crossref}
846 { volume duplicate$ empty$
847 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
848 pop$ word.in
849 }
850 { bbl.volume
851 capitalize
852 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
853 }
854 if$
855 editor empty$
856 editor field.or.null author field.or.null =
857 or
858 { key empty$
859 { series empty$
860 { "need editor, key, or series for " cite$ * " to crossref " *
861 crossref * warning$
862 "" *
863 }
864 { series emphasize * }
865 if$
866 }
867 { key * }
868 if$
869 }
870 { format.crossref.editor * }
871 if$
872 " \cite{" * crossref * "}" *
873 }
874 FUNCTION {format.incoll.inproc.crossref}
875 {
876 editor empty$
877 editor field.or.null author field.or.null =
878 or
879 { key empty$
880 { format.booktitle duplicate$ empty$
881 { "need editor, key, or booktitle for " cite$ * " to crossref " *
882 crossref * warning$
883 }
884 { word.in swap$ * }
885 if$
886 }
887 { word.in key * " " *}
888 if$
889 }
890 { word.in format.crossref.editor * " " *}
891 if$
892 " \cite{" * crossref * "}" *
893 }
894 FUNCTION {format.org.or.pub}
895 { 't :=
896 ""
897 address empty$ t empty$ and
898 'skip$
899 {
900 t empty$
901 { address "address" bibinfo.check *
902 }
903 { t *
904 address empty$
905 'skip$
906 { ", " * address "address" bibinfo.check * }
907 if$
908 }
909 if$
910 }
911 if$
912 }
913 FUNCTION {format.publisher.address}
914 { publisher "publisher" bibinfo.warn format.org.or.pub
915 }
916
917 FUNCTION {format.organization.address}
918 { organization "organization" bibinfo.check format.org.or.pub
919 }
920
921 FUNCTION {article}
922 { output.bibitem
923 format.authors "author" output.check
924 new.block
925 format.title "title" output.check
926 new.block
927 crossref missing$
928 {
929 journal
930 "journal" bibinfo.check
931 "journal" output.check
932 format.vol.num.pages output
933 format.date "year" output.check
934 }
935 { format.article.crossref output.nonnull
936 format.pages output
937 }
938 if$
939 format.issn output
940 format.doi output
941 new.block
942 format.url output
943 new.block
944 format.note output
945 fin.entry
946 }
947 FUNCTION {book}
948 { output.bibitem
949 author empty$
950 { format.editors "author and editor" output.check
951 }
952 { format.authors output.nonnull
953 crossref missing$
954 { "author and editor" editor either.or.check }
955 'skip$
956 if$
957 }
958 if$
959 new.block
960 format.btitle "title" output.check
961 crossref missing$
962 { format.bvolume output
963 new.block
964 format.number.series output
965 new.sentence
966 format.publisher.address output
967 }
968 {
969 new.block
970 format.book.crossref output.nonnull
971 }
972 if$
973 format.edition output
974 format.date "year" output.check
975 format.isbn output
976 format.doi output
977 new.block
978 format.url output
979 new.block
980 format.note output
981 fin.entry
982 }
983 FUNCTION {booklet}
984 { output.bibitem
985 format.authors output
986 new.block
987 format.title "title" output.check
988 new.block
989 howpublished "howpublished" bibinfo.check output
990 address "address" bibinfo.check output
991 format.date output
992 format.isbn output
993 format.doi output
994 new.block
995 format.url output
996 new.block
997 format.note output
998 fin.entry
999 }
1000
1001 FUNCTION {inbook}
1002 { output.bibitem
1003 author empty$
1004 { format.editors "author and editor" output.check
1005 }
1006 { format.authors output.nonnull
1007 crossref missing$
1008 { "author and editor" editor either.or.check }
1009 'skip$
1010 if$
1011 }
1012 if$
1013 new.block
1014 format.btitle "title" output.check
1015 crossref missing$
1016 {
1017 format.bvolume output
1018 format.chapter.pages "chapter and pages" output.check
1019 new.block
1020 format.number.series output
1021 new.sentence
1022 format.publisher.address output
1023 }
1024 {
1025 format.chapter.pages "chapter and pages" output.check
1026 new.block
1027 format.book.crossref output.nonnull
1028 }
1029 if$
1030 format.edition output
1031 format.date "year" output.check
1032 crossref missing$
1033 { format.isbn output }
1034 'skip$
1035 if$
1036 format.doi output
1037 new.block
1038 format.url output
1039 new.block
1040 format.note output
1041 fin.entry
1042 }
1043
1044 FUNCTION {incollection}
1045 { output.bibitem
1046 format.authors "author" output.check
1047 new.block
1048 format.title "title" output.check
1049 new.block
1050 crossref missing$
1051 { format.in.ed.booktitle "booktitle" output.check
1052 format.bvolume output
1053 format.number.series output
1054 format.chapter.pages output
1055 new.sentence
1056 format.publisher.address output
1057 format.edition output
1058 format.date "year" output.check
1059 format.isbn output
1060 }
1061 { format.incoll.inproc.crossref output.nonnull
1062 format.chapter.pages output
1063 }
1064 if$
1065 format.doi output
1066 new.block
1067 format.url output
1068 new.block
1069 format.note output
1070 fin.entry
1071 }
1072 FUNCTION {inproceedings}
1073 { output.bibitem
1074 format.authors "author" output.check
1075 new.block
1076 format.title "title" output.check
1077 new.block
1078 crossref missing$
1079 { format.in.ed.booktitle "booktitle" output.check
1080 format.bvolume output
1081 format.number.series output
1082 format.pages output
1083 new.sentence
1084 publisher empty$
1085 { format.organization.address output }
1086 { organization "organization" bibinfo.check output
1087 format.publisher.address output
1088 }
1089 if$
1090 format.date "year" output.check
1091 format.isbn output
1092 format.issn output
1093 }
1094 { format.incoll.inproc.crossref output.nonnull
1095 format.pages output
1096 }
1097 if$
1098 format.doi output
1099 new.block
1100 format.url output
1101 new.block
1102 format.note output
1103 fin.entry
1104 }
1105 FUNCTION {conference} { inproceedings }
1106 FUNCTION {manual}
1107 { output.bibitem
1108 author empty$
1109 { organization "organization" bibinfo.check
1110 duplicate$ empty$ 'pop$
1111 { output
1112 address "address" bibinfo.check output
1113 }
1114 if$
1115 }
1116 { format.authors output.nonnull }
1117 if$
1118 new.block
1119 format.btitle "title" output.check
1120 author empty$
1121 { organization empty$
1122 {
1123 address new.block.checka
1124 address "address" bibinfo.check output
1125 }
1126 'skip$
1127 if$
1128 }
1129 {
1130 organization address new.block.checkb
1131 organization "organization" bibinfo.check output
1132 address "address" bibinfo.check output
1133 }
1134 if$
1135 format.edition output
1136 format.date output
1137 format.doi output
1138 new.block
1139 format.url output
1140 new.block
1141 format.note output
1142 fin.entry
1143 }
1144
1145 FUNCTION {mastersthesis}
1146 { output.bibitem
1147 format.authors "author" output.check
1148 new.block
1149 format.btitle
1150 "title" output.check
1151 new.block
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
1156 format.doi output
1157 new.block
1158 format.url output
1159 new.block
1160 format.note output
1161 fin.entry
1162 }
1163
1164 FUNCTION {misc}
1165 { output.bibitem
1166 format.authors output
1167 title howpublished new.block.checkb
1168 format.title output
1169 howpublished new.block.checka
1170 howpublished "howpublished" bibinfo.check output
1171 format.date output
1172 format.doi output
1173 new.block
1174 format.url output
1175 new.block
1176 format.note output
1177 fin.entry
1178 empty.misc.check
1179 }
1180 FUNCTION {phdthesis}
1181 { output.bibitem
1182 format.authors "author" output.check
1183 new.block
1184 format.btitle
1185 "title" output.check
1186 new.block
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
1191 format.doi output
1192 new.block
1193 format.url output
1194 new.block
1195 format.note output
1196 fin.entry
1197 }
1198
1199 FUNCTION {proceedings}
1200 { output.bibitem
1201 editor empty$
1202 { organization "organization" bibinfo.check output
1203 }
1204 { format.editors output.nonnull }
1205 if$
1206 new.block
1207 format.btitle "title" output.check
1208 format.bvolume output
1209 format.number.series output
1210 editor empty$
1211 { publisher empty$
1212 'skip$
1213 {
1214 new.sentence
1215 format.publisher.address output
1216 }
1217 if$
1218 }
1219 { publisher empty$
1220 {
1221 new.sentence
1222 format.organization.address output }
1223 {
1224 new.sentence
1225 organization "organization" bibinfo.check output
1226 format.publisher.address output
1227 }
1228 if$
1229 }
1230 if$
1231 format.date "year" output.check
1232 format.isbn output
1233 format.issn output
1234 format.doi output
1235 new.block
1236 format.url output
1237 new.block
1238 format.note output
1239 fin.entry
1240 }
1241
1242 FUNCTION {techreport}
1243 { output.bibitem
1244 format.authors "author" output.check
1245 new.block
1246 format.title
1247 "title" output.check
1248 new.block
1249 format.tr.number output.nonnull
1250 institution "institution" bibinfo.warn output
1251 address "address" bibinfo.check output
1252 format.date "year" output.check
1253 format.doi output
1254 new.block
1255 format.url output
1256 new.block
1257 format.note output
1258 fin.entry
1259 }
1260
1261 FUNCTION {unpublished}
1262 { output.bibitem
1263 format.authors "author" output.check
1264 new.block
1265 format.title "title" output.check
1266 format.date output
1267 format.doi output
1268 new.block
1269 format.url output
1270 new.block
1271 format.note "note" output.check
1272 fin.entry
1273 }
1274
1275 FUNCTION {default.type} { misc }
1276 READ
1277 FUNCTION {sortify}
1278 { purify$
1279 "l" change.case$
1280 }
1281 INTEGERS { len }
1282 FUNCTION {chop.word}
1283 { 's :=
1284 'len :=
1285 s #1 len substring$ =
1286 { s len #1 + global.max$ substring$ }
1287 's
1288 if$
1289 }
1290 FUNCTION {sort.format.names}
1291 { 's :=
1292 #1 'nameptr :=
1293 ""
1294 s num.names$ 'numnames :=
1295 numnames 'namesleft :=
1296 { namesleft #0 > }
1297 { s nameptr
1298 "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
1299 format.name$ 't :=
1300 nameptr #1 >
1301 {
1302 " " *
1303 namesleft #1 = t "others" = and
1304 { "zzzzz" 't := }
1305 'skip$
1306 if$
1307 t sortify *
1308 }
1309 { t sortify * }
1310 if$
1311 nameptr #1 + 'nameptr :=
1312 namesleft #1 - 'namesleft :=
1313 }
1314 while$
1315 }
1316
1317 FUNCTION {sort.format.title}
1318 { 't :=
1319 "A " #2
1320 "An " #3
1321 "The " #4 t chop.word
1322 chop.word
1323 chop.word
1324 sortify
1325 #1 global.max$ substring$
1326 }
1327 FUNCTION {author.sort}
1328 { author empty$
1329 { key empty$
1330 { "to sort, need author or key in " cite$ * warning$
1331 ""
1332 }
1333 { key sortify }
1334 if$
1335 }
1336 { author sort.format.names }
1337 if$
1338 }
1339 FUNCTION {author.editor.sort}
1340 { author empty$
1341 { editor empty$
1342 { key empty$
1343 { "to sort, need author, editor, or key in " cite$ * warning$
1344 ""
1345 }
1346 { key sortify }
1347 if$
1348 }
1349 { editor sort.format.names }
1350 if$
1351 }
1352 { author sort.format.names }
1353 if$
1354 }
1355 FUNCTION {author.organization.sort}
1356 { author empty$
1357 { organization empty$
1358 { key empty$
1359 { "to sort, need author, organization, or key in " cite$ * warning$
1360 ""
1361 }
1362 { key sortify }
1363 if$
1364 }
1365 { "The " #4 organization chop.word sortify }
1366 if$
1367 }
1368 { author sort.format.names }
1369 if$
1370 }
1371 FUNCTION {editor.organization.sort}
1372 { editor empty$
1373 { organization empty$
1374 { key empty$
1375 { "to sort, need editor, organization, or key in " cite$ * warning$
1376 ""
1377 }
1378 { key sortify }
1379 if$
1380 }
1381 { "The " #4 organization chop.word sortify }
1382 if$
1383 }
1384 { editor sort.format.names }
1385 if$
1386 }
1387 FUNCTION {presort}
1388 { type$ "book" =
1389 type$ "inbook" =
1390 or
1391 'author.editor.sort
1392 { type$ "proceedings" =
1393 'editor.organization.sort
1394 { type$ "manual" =
1395 'author.organization.sort
1396 'author.sort
1397 if$
1398 }
1399 if$
1400 }
1401 if$
1402 " "
1403 *
1404 year field.or.null sortify
1405 *
1406 " "
1407 *
1408 title field.or.null
1409 sort.format.title
1410 *
1411 #1 entry.max$ substring$
1412 'sort.key$ :=
1413 }
1414 ITERATE {presort}
1415 SORT
1416 STRINGS { longest.label }
1417 INTEGERS { number.label longest.label.width }
1418 FUNCTION {initialize.longest.label}
1419 { "" 'longest.label :=
1420 #1 'number.label :=
1421 #0 'longest.label.width :=
1422 }
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 :=
1429 }
1430 'skip$
1431 if$
1432 }
1433 EXECUTE {initialize.longest.label}
1434 ITERATE {longest.label.pass}
1435 FUNCTION {begin.bib}
1436 { preamble$ empty$
1437 'skip$
1438 { preamble$ write$ newline$ }
1439 if$
1440 "\begin{thebibliography}{" longest.label * "}" *
1441 write$ newline$
1442 "\providecommand{\url}[1]{\texttt{#1}}"
1443 write$ newline$
1444 "\providecommand{\urlprefix}{URL }"
1445 write$ newline$
1446 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1447 write$ newline$
1448 " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
1449 write$ newline$
1450 " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1451 write$ newline$
1452 }
1453 EXECUTE {begin.bib}
1454 EXECUTE {init.state.consts}
1455 ITERATE {call.type$}
1456 FUNCTION {end.bib}
1457 { newline$
1458 "\end{thebibliography}" write$ newline$
1459 }
1460 EXECUTE {end.bib}
1461 %% End of customized bst file
1462 %%
1463 %% End of file `mjo.bst'.