the last commit enfin on espere!!!
[rapport_i2l.git] / myjfm.bst
blob98d0dd3222ae0b603cf2717f89e24fdfec0bb4ae
1 %% Fichier adapté de jfm.bst, la feuille de style bibliographique
2 %% du Journal of Fluid Mechanics, par E. Plaut ;
3 %% la modification faite permet de garder des majuscules dans le titre d'une
4 %% publi ; en effet avec jfm.bst
5 %% « Low Prandtl number convection »
6 %% devenait
7 %% « Low prandtl number convection »...
8 %%
9 %% 
10 %% ---------------------------------------- 
11 %% *** JFM basic style *** 
12 %% 
13  %-------------------------------------------------------------------
14  %
15  % NOTICE:
16  % This file may be used for non-profit purposes.
17  % It may not be distributed in exchange for money,
18  %   other than distribution costs.
19  %
20  % The author provides it `as is' and does not guarantee it in any way.
21  %
22  % Copyright (C) 1994-97 Patrick W. Daly
23  %           (C) 1997    Stefan G. Llewellyn Smith
24  %-------------------------------------------------------------------
25  %   For use with BibTeX version 0.99a or later
26  %-------------------------------------------------------------------
27  % This bibliography style file is intended for texts in ENGLISH
28  % This is an author-year citation style bibliography. As such, it is
29  % non-standard LaTeX, and requires a special package file to function properly.
30  % Such a package is    natbib.sty   by Patrick W. Daly
31  % The form of the \bibitem entries is
32  %   \bibitem[Jones et al.(1990)]{key}...
33  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
34  % The essential feature is that the label (the part in brackets) consists
35  % of the author names, as they should appear in the citation, with the year
36  % in parentheses following. There must be no space before the opening
37  % parenthesis!
38  % With natbib v5.3, a full list of authors may also follow the year.
39  % In natbib.sty, it is possible to define the type of enclosures that is
40  % really wanted (brackets or parentheses), but in either case, there must
41  % be parentheses in the label.
42  % The \cite command functions as follows:
43  %   \cite{key} ==>>                Jones et al. (1990)
44  %   \cite[]{key} ==>>              (Jones et al., 1990)
45  %   \cite[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
46  %   \cite[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
47  %   \cite[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
48  %   \citeauthor{key}               Jones et al.
49  %   \citefullauthor{key}           Jones, Baker, and Smith
50  %   \citeyear{key}                 1990
51  %---------------------------------------------------------------------
53 ENTRY
54   { address
55     author
56     booktitle
57     chapter
58     edition
59     editor
60     howpublished
61     institution
62     journal
63     key
64     month
65     note
66     number
67     organization
68     pages
69     publisher
70     school
71     series
72     title
73     type
74     volume
75     year
76   }
77   {}
78   { label extra.label sort.label short.list }
80 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
82 FUNCTION {init.state.consts}
83 { #0 'before.all :=
84   #1 'mid.sentence :=
85   #2 'after.sentence :=
86   #3 'after.block :=
89 STRINGS { s t }
91 FUNCTION {output.nonnull}
92 { 's :=
93   output.state mid.sentence =
94     { ", " * write$ }
95     { output.state after.block =
96         { add.period$ write$
97           newline$
98           "\newblock " write$
99         }
100         { output.state before.all =
101             'write$
102             { add.period$ " " * write$ }
103           if$
104         }
105       if$
106       mid.sentence 'output.state :=
107     }
108   if$
109   s
112 FUNCTION {output}
113 { duplicate$ empty$
114     'pop$
115     'output.nonnull
116   if$
119 FUNCTION {output.check}
120 { 't :=
121   duplicate$ empty$
122     { pop$ "empty " t * " in " * cite$ * warning$ }
123     'output.nonnull
124   if$
127 FUNCTION {fin.entry}
128 { add.period$
129   write$
130   newline$
133 FUNCTION {new.block}
134 { output.state before.all =
135     'skip$
136     { after.block 'output.state := }
137   if$
140 FUNCTION {new.sentence}
141 { output.state after.block =
142     'skip$
143     { output.state before.all =
144         'skip$
145         { after.sentence 'output.state := }
146       if$
147     }
148   if$
151 FUNCTION {add.blank}
152 {  " " * before.all 'output.state :=
155 FUNCTION {date.block}
157   add.blank
160 FUNCTION {not}
161 {   { #0 }
162     { #1 }
163   if$
166 FUNCTION {and}
167 {   'skip$
168     { pop$ #0 }
169   if$
172 FUNCTION {or}
173 {   { pop$ #1 }
174     'skip$
175   if$
178 FUNCTION {new.block.checkb}
179 { empty$
180   swap$ empty$
181   and
182     'skip$
183     'new.block
184   if$
187 FUNCTION {field.or.null}
188 { duplicate$ empty$
189     { pop$ "" }
190     'skip$
191   if$
194 FUNCTION {emphasize}
195 { duplicate$ empty$
196     { pop$ "" }
197     { "{\em " swap$ * "\/}" * }
198   if$
201 FUNCTION {bolden}
202 { duplicate$ empty$
203     { pop$ "" }
204     { "{\bf " swap$ * "}" * }
205   if$
208 FUNCTION {scaps}
209 { duplicate$ empty$
210     { pop$ "" }
211     { "{\sc " swap$ * "}" * }
212   if$
215 FUNCTION {capitalize}
216 { pop$ "" }
218 FUNCTION {space.word}
219 { " " swap$ * " " * }
221  % Here are the language-specific definitions for explicit words.
222  % Each function has a name bbl.xxx where xxx is the English word.
223  % The language selected here is ENGLISH
224 FUNCTION {bbl.and}
225 { "and"}
227 FUNCTION {bbl.editors}
228 { "ed." }
230 FUNCTION {bbl.editor}
231 { "ed." }
233 FUNCTION {bbl.edby}
234 { "edited by" }
236 FUNCTION {bbl.edition}
237 { "edn." }
239 FUNCTION {bbl.volume}
240 { "vol." }
242 FUNCTION {bbl.of}
243 { "of" }
245 FUNCTION {bbl.number}
246 { "" }
248 FUNCTION {bbl.nr}
249 { "no." }
251 FUNCTION {bbl.in}
252 { "in" }
254 FUNCTION {bbl.pages}
255 { "pp." }
257 FUNCTION {bbl.page}
258 { "p." }
260 FUNCTION {bbl.chapter}
261 { "chap." }
263 FUNCTION {bbl.techrep}
264 { "Tech. Rep." }
266 FUNCTION {bbl.mthesis}
267 { "Master's thesis" }
269 FUNCTION {bbl.phdthesis}
270 { "PhD thesis" }
272 FUNCTION {bbl.first}
273 { "1st" }
275 FUNCTION {bbl.second}
276 { "2nd" }
278 FUNCTION {bbl.third}
279 { "3rd" }
281 FUNCTION {bbl.fourth}
282 { "4th" }
284 FUNCTION {bbl.fifth}
285 { "5th" }
287 FUNCTION {bbl.st}
288 { "st" }
290 FUNCTION {bbl.nd}
291 { "nd" }
293 FUNCTION {bbl.rd}
294 { "rd" }
296 FUNCTION {bbl.th}
297 { "th" }
299 MACRO {jan} {"Jan."}
301 MACRO {feb} {"Feb."}
303 MACRO {mar} {"Mar."}
305 MACRO {apr} {"Apr."}
307 MACRO {may} {"May"}
309 MACRO {jun} {"Jun."}
311 MACRO {jul} {"Jul."}
313 MACRO {aug} {"Aug."}
315 MACRO {sep} {"Sep."}
317 MACRO {oct} {"Oct."}
319 MACRO {nov} {"Nov."}
321 MACRO {dec} {"Dec."}
323 FUNCTION {eng.ord}
324 { duplicate$ "1" swap$ *
325   #-2 #1 substring$ "1" =
326      { bbl.th * }
327      { duplicate$ #-1 #1 substring$
328        duplicate$ "1" =
329          { pop$ bbl.st * }
330          { duplicate$ "2" =
331              { pop$ bbl.nd * }
332              { "3" =
333                  { bbl.rd * }
334                  { bbl.th * }
335                if$
336              }
337            if$
338           }
339        if$
340      }
341    if$
344 MACRO {acmcs} {"ACM Computing Surveys"}
346 MACRO {acta} {"Acta Informatica"}
348 MACRO {cacm} {"Communications of the ACM"}
350 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
352 MACRO {ibmsj} {"IBM Systems Journal"}
354 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
356 MACRO {ieeetc} {"IEEE Transactions on Computers"}
358 MACRO {ieeetcad}
359  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
361 MACRO {ipl} {"Information Processing Letters"}
363 MACRO {jacm} {"Journal of the ACM"}
365 MACRO {jcss} {"Journal of Computer and System Sciences"}
367 MACRO {scp} {"Science of Computer Programming"}
369 MACRO {sicomp} {"SIAM Journal on Computing"}
371 MACRO {tocs} {"ACM Transactions on Computer Systems"}
373 MACRO {tods} {"ACM Transactions on Database Systems"}
375 MACRO {tog} {"ACM Transactions on Graphics"}
377 MACRO {toms} {"ACM Transactions on Mathematical Software"}
379 MACRO {toois} {"ACM Transactions on Office Information Systems"}
381 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
383 MACRO {tcs} {"Theoretical Computer Science"}
385 INTEGERS { nameptr namesleft numnames }
387 FUNCTION {format.names}
388 { 's :=
389   #1 'nameptr :=
390   s num.names$ 'numnames :=
391   numnames 'namesleft :=
392     { namesleft #0 > }
393     { s nameptr
394       "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
395       nameptr #1 >
396         {
397           namesleft #1 >
398             { ", " * t * }
399             {
400               t "others" =
401                 { " " * "et~al." emphasize * }
402                 { " \& " * t * }
403               if$
404             }
405           if$
406         }
407         't
408       if$
409       nameptr #1 + 'nameptr :=
410       namesleft #1 - 'namesleft :=
411     }
412   while$
415 FUNCTION {format.names.ed}
416 { 's :=
417   #1 'nameptr :=
418   s num.names$ 'numnames :=
419   numnames 'namesleft :=
420     { namesleft #0 > }
421     { s nameptr
422       "{f.~}{vv~}{ll}{, jj}"
423       format.name$ 't :=
424       nameptr #1 >
425         {
426           namesleft #1 >
427             { ", " * t * }
428             {
429               t "others" =
430                 { " " * "et~al." emphasize * }
431                 { " \& " * t * }
432               if$
433             }
434           if$
435         }
436         't
437       if$
438       nameptr #1 + 'nameptr :=
439       namesleft #1 - 'namesleft :=
440     }
441   while$
444 FUNCTION {format.key}
445 { empty$
446     { key field.or.null }
447     { "" }
448   if$
451 FUNCTION {format.authors}
452 { author empty$
453     { "" }
454     {
455       author format.names scaps
456     }
457   if$
460 FUNCTION {format.editors}
461 { editor empty$
462     { "" }
463     {
464       editor format.names scaps
465       editor num.names$ #1 >
466         { ", " * bbl.editors * }
467         { ", " * bbl.editor * }
468       if$
469     }
470   if$
473 FUNCTION {format.in.editors}
474 { editor empty$
475     { "" }
476     { editor format.names.ed
477     }
478   if$
481 FUNCTION {format.note}
482 { note empty$
483     { "" }
484     { note #1 #1 substring$
485       duplicate$ "{" =
486         'skip$
487         { output.state mid.sentence =
488           { "l" }
489           { "u" }
490         if$
491         change.case$
492         }
493       if$
494       note #2 global.max$ substring$ *
495     }
496   if$
499 FUNCTION {format.title}
500 { title}
502 FUNCTION {format.full.names}
503 {'s :=
504   #1 'nameptr :=
505   s num.names$ 'numnames :=
506   numnames 'namesleft :=
507     { namesleft #0 > }
508     { s nameptr
509       "{vv~}{ll}" format.name$ 't :=
510       nameptr #1 >
511         {
512           namesleft #1 >
513             { ", " * t * }
514             {
515               t "others" =
516                 { " " * "et~al." emphasize * }
517                 { " \& " * t * }
518               if$
519             }
520           if$
521         }
522         't
523       if$
524       nameptr #1 + 'nameptr :=
525       namesleft #1 - 'namesleft :=
526     }
527   while$
530 FUNCTION {author.editor.key.full}
531 { author empty$
532     { editor empty$
533         { key empty$
534             { cite$ #1 #3 substring$ }
535             'key
536           if$
537         }
538         { editor format.full.names }
539       if$
540     }
541     { author format.full.names }
542   if$
545 FUNCTION {author.key.full}
546 { author empty$
547     { key empty$
548          { cite$ #1 #3 substring$ }
549           'key
550       if$
551     }
552     { author format.full.names }
553   if$
556 FUNCTION {editor.key.full}
557 { editor empty$
558     { key empty$
559          { cite$ #1 #3 substring$ }
560           'key
561       if$
562     }
563     { editor format.full.names }
564   if$
567 FUNCTION {make.full.names}
568 { type$ "book" =
569   type$ "inbook" =
570   or
571     'author.editor.key.full
572     { type$ "proceedings" =
573         'editor.key.full
574         'author.key.full
575       if$
576     }
577   if$
580 FUNCTION {output.bibitem}
581 { newline$
582   "\bibitem[" write$
583   label write$
584   ")" make.full.names duplicate$ short.list =
585      { pop$ }
586      { * }
587    if$
588   "]{" * write$
589   cite$ write$
590   "}" write$
591   newline$
592   ""
593   before.all 'output.state :=
596 FUNCTION {n.dashify}
597 { 't :=
598   ""
599     { t empty$ not }
600     { t #1 #1 substring$ "-" =
601         { t #1 #2 substring$ "--" = not
602             { "--" *
603               t #2 global.max$ substring$ 't :=
604             }
605             {   { t #1 #1 substring$ "-" = }
606                 { "-" *
607                   t #2 global.max$ substring$ 't :=
608                 }
609               while$
610             }
611           if$
612         }
613         { t #1 #1 substring$ *
614           t #2 global.max$ substring$ 't :=
615         }
616       if$
617     }
618   while$
621 FUNCTION {word.in}
622 { bbl.in capitalize
623   " " * }
625 FUNCTION {format.date}
626 { year duplicate$ empty$
627     { "empty year in " cite$ * "; set to ????" * warning$
628        pop$ "????" }
629     'skip$
630   if$
631   extra.label *
632   before.all 'output.state :=
633   " " swap$ *
636 FUNCTION {format.btitle}
637 { title emphasize
640 FUNCTION {tie.or.space.connect}
641 { duplicate$ text.length$ #3 <
642     { "~" }
643     { " " }
644   if$
645   swap$ * *
648 FUNCTION {either.or.check}
649 { empty$
650     'pop$
651     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
652   if$
655 FUNCTION {format.bvolume}
656 % Changed (SGLS)
657 % Notes swap$ fudge
658 { volume empty$
659     { "" }
660     { series empty$
661        { "" }
662        { series emphasize }
663      if$
664      swap$ bbl.volume volume tie.or.space.connect output
665     } 
666   if$
668 %{ volume empty$
669 %    { "" }
670 %    { bbl.volume volume tie.or.space.connect
671 %      series empty$
672 %        'skip$
673 %        { bbl.of space.word * series emphasize * }
674 %      if$
675 %      "volume and number" number either.or.check
676 %    }
677 %  if$
680 FUNCTION {format.number.series}
681 % Changed (SGLS)
683  volume empty$
684     { series empty$
685         { "" 
686           number empty$
687             'skip$
688             { "there's a number but no series in " cite$ * warning$ }
689           if$
690         } 
691         { series emphasize " " * number *}
692       if$
693     }
694     { "" }
695   if$
697 %{ volume empty$
698 %    { number empty$
699 %        { series field.or.null }
700 %        { output.state mid.sentence =
701 %            { bbl.number }
702 %            { bbl.number capitalize }
703 %          if$
704 %          number tie.or.space.connect
705 %          series empty$
706 %            { "there's a number but no series in " cite$ * warning$ }
707 %            { bbl.in space.word * series * }
708 %          if$
709 %        }
710 %      if$
711 %    }
712 %    { "" }
713 %  if$
716 FUNCTION {is.num}
717 { chr.to.int$
718   duplicate$ "0" chr.to.int$ < not
719   swap$ "9" chr.to.int$ > not and
722 FUNCTION {extract.num}
723 { duplicate$ 't :=
724   "" 's :=
725   { t empty$ not }
726   { t #1 #1 substring$
727     t #2 global.max$ substring$ 't :=
728     duplicate$ is.num
729       { s swap$ * 's := }
730       { pop$ "" 't := }
731     if$
732   }
733   while$
734   s empty$
735     'skip$
736     { pop$ s }
737   if$
740 FUNCTION {convert.edition}
741 { edition extract.num "l" change.case$ 's :=
742   s "first" = s "1" = or
743     { bbl.first 't := }
744     { s "second" = s "2" = or
745         { bbl.second 't := }
746         { s "third" = s "3" = or
747             { bbl.third 't := }
748             { s "fourth" = s "4" = or
749                 { bbl.fourth 't := }
750                 { s "fifth" = s "5" = or
751                     { bbl.fifth 't := }
752                     { s #1 #1 substring$ is.num
753                         { s eng.ord 't := }
754                         { edition 't := }
755                       if$
756                     }
757                   if$
758                 }
759               if$
760             }
761           if$
762         }
763       if$
764     }
765   if$
766   t
769 FUNCTION {format.edition}
770 { edition empty$
771     { "" }
772     { output.state mid.sentence =
773         { convert.edition "l" change.case$ " " * bbl.edition * }
774         { convert.edition "t" change.case$ " " * bbl.edition * }
775       if$
776     }
777   if$
780 INTEGERS { multiresult }
782 FUNCTION {multi.page.check}
783 { 't :=
784   #0 'multiresult :=
785     { multiresult not
786       t empty$ not
787       and
788     }
789     { t #1 #1 substring$
790       duplicate$ "-" =
791       swap$ duplicate$ "," =
792       swap$ "+" =
793       or or
794         { #1 'multiresult := }
795         { t #2 global.max$ substring$ 't := }
796       if$
797     }
798   while$
799   multiresult
802 FUNCTION {format.pages}
803 { pages empty$
804     { "" }
805     { pages multi.page.check
806         { bbl.pages pages n.dashify tie.or.space.connect }
807         { bbl.page pages tie.or.space.connect }
808       if$
809     }
810   if$
813 FUNCTION {format.journal.pages}
815   pages empty$
816     'skip$
817     { duplicate$ empty$
818         { pop$ format.pages }
819         { ", " * pages n.dashify * }
820       if$
821     }
822   if$
825 FUNCTION {format.vol.num.pages}
826 { volume field.or.null
827   bolden
828   number empty$
829     'skip$
830     {
831       "~(" number * ")" * *
832       volume empty$
833         { "there's a number but no volume in " cite$ * warning$ }
834         'skip$
835       if$
836     }
837   if$
838   format.journal.pages
841 FUNCTION {format.chapter.pages}
842 { chapter empty$
843     'format.pages
844     { type empty$
845         { bbl.chapter }
846         { type "l" change.case$ }
847       if$
848       chapter tie.or.space.connect
849       pages empty$
850         'skip$
851         { ", " * format.pages * }
852       if$
853     }
854   if$
857 FUNCTION {format.in.ed.booktitle}
858 % Changed to get edition after booktitle (SGLS)
859 % Notes swap$ fudge
860 { booktitle empty$
861     { "" }
862     { word.in booktitle emphasize *
863       edition empty$
864         'skip$
865         { swap$ format.edition output }
866       if$
867       editor empty$
868         { "" * }
869         {" (" *
870           editor num.names$ #1 >
871             { bbl.editors }
872             { bbl.editor }
873           if$
874           *
875           " " *
876           format.in.editors *
877           ")" *
878         }
879       if$
880     }
881   if$
884 FUNCTION {format.thesis.type}
885 { type empty$
886     'skip$
887     { pop$
888       type "t" change.case$
889     }
890   if$
893 FUNCTION {format.tr.number}
894 { type empty$
895     { bbl.techrep emphasize }
896     'type
897   if$
898   number empty$
899     { "t" change.case$ }
900     { number tie.or.space.connect }
901   if$
904 FUNCTION {format.article.crossref}
906   word.in
907   " \cite{" * crossref * "}" *
910 FUNCTION {format.book.crossref}
911 { volume empty$
912     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
913       word.in
914     }
915     { bbl.volume capitalize
916       volume tie.or.space.connect
917       bbl.of space.word *
918     }
919   if$
920   " \cite{" * crossref * "}" *
923 FUNCTION {format.incoll.inproc.crossref}
925   word.in
926   " \cite{" * crossref * "}" *
929 FUNCTION {format.publisher}
930 { publisher empty$
931     { "empty publisher in " cite$ * warning$ }
932     'skip$
933   if$
934   ""
935   address empty$ publisher empty$ and
936     'skip$
937     {
938       address empty$
939         'skip$
940         { address * }
941       if$
942       publisher empty$
943         'skip$
944         { address empty$
945             'skip$
946             { ": " * }
947           if$
948           publisher *
949         }
950       if$
951     }
952   if$
953   output
956 FUNCTION {article}
957 { output.bibitem
958   format.authors "author" output.check
959   author format.key output
960   format.date "year" output.check
961   date.block
962   format.title "title" output.check
963   new.sentence
964   crossref missing$
965     { journal
966       emphasize
967       "journal" output.check
968       add.blank
969       format.vol.num.pages output
970     }
971     { format.article.crossref output.nonnull
972       format.pages output
973     }
974   if$
975   format.note output
976   fin.entry
979 FUNCTION {book}
980 { output.bibitem
981   author empty$
982     { format.editors "author and editor" output.check
983       editor format.key output
984     }
985     { format.authors output.nonnull
986       crossref missing$
987         { "author and editor" editor either.or.check }
988         'skip$
989       if$
990     }
991   if$
992   format.date "year" output.check
993   date.block
994   format.btitle "title" output.check
995 % Added edition after title (SGLS)
996   format.edition output
997   crossref missing$
998     { format.bvolume output
999   new.sentence
1000       format.number.series output
1001 %      format.edition output
1002   new.sentence
1003       format.publisher
1004     }
1005     {
1006   new.sentence
1007       format.book.crossref output.nonnull
1008     }
1009   if$
1010   format.note output
1011   fin.entry
1014 FUNCTION {booklet}
1015 { output.bibitem
1016   format.authors output
1017   author format.key output
1018   format.date "year" output.check
1019   date.block
1020   format.title "title" output.check
1021   new.sentence
1022   howpublished output
1023   address output
1024   format.note output
1025   fin.entry
1028 FUNCTION {inbook}
1029 { output.bibitem
1030   author empty$
1031     { format.editors "author and editor" output.check
1032       editor format.key output
1033     }
1034     { format.authors output.nonnull
1035       crossref missing$
1036         { "author and editor" editor either.or.check }
1037         'skip$
1038       if$
1039     }
1040   if$
1041   format.date "year" output.check
1042   date.block
1043   format.btitle "title" output.check
1044 % Added edition after title (SGLS)
1045   format.edition output
1046   crossref missing$
1047     {
1048       format.bvolume output
1049       format.chapter.pages "chapter and pages" output.check
1050   new.sentence
1051       format.number.series output
1052 %      format.edition output
1053   new.sentence
1054       format.publisher
1055     }
1056     {
1057       format.chapter.pages "chapter and pages" output.check
1058   new.sentence
1059       format.book.crossref output.nonnull
1060     }
1061   if$
1062   format.note output
1063   fin.entry
1066 FUNCTION {incollection}
1067 { output.bibitem
1068   format.authors "author" output.check
1069   author format.key output
1070   format.date "year" output.check
1071   date.block
1072   format.title "title" output.check
1073   new.sentence
1074   crossref missing$
1075     { format.in.ed.booktitle "booktitle" output.check
1076       format.bvolume output
1077       format.number.series output
1078 %      format.edition output
1079       format.chapter.pages output
1080   new.sentence
1081       format.publisher
1082     }
1083     { format.incoll.inproc.crossref output.nonnull
1084       format.chapter.pages output
1085     }
1086   if$
1087   format.note output
1088   fin.entry
1091 FUNCTION {inproceedings}
1092 { output.bibitem
1093   format.authors "author" output.check
1094   author format.key output
1095   format.date "year" output.check
1096   date.block
1097   format.title "title" output.check
1098   new.sentence
1099   crossref missing$
1100     { format.in.ed.booktitle "booktitle" output.check
1101       format.bvolume output
1102       format.number.series output
1103       format.pages output
1104    new.sentence
1105       publisher empty$
1106         { organization output
1107           address output
1108         }
1109         { organization output
1110           format.publisher
1111         }
1112       if$
1113     }
1114     { format.incoll.inproc.crossref output.nonnull
1115       format.pages output
1116     }
1117   if$
1118   format.note output
1119   fin.entry
1122 FUNCTION {conference} { inproceedings }
1124 FUNCTION {manual}
1125 { output.bibitem
1126   format.authors output
1127   author format.key output
1128   format.date "year" output.check
1129   date.block
1130   format.btitle "title" output.check
1131 % Added edition after title (SGLS)
1132   format.edition output 
1133   new.sentence
1134   organization output
1135   address output
1136 %  format.edition output
1137   format.note output
1138   fin.entry
1141 FUNCTION {mastersthesis}
1142 { output.bibitem
1143   format.authors "author" output.check
1144   author format.key output
1145   format.date "year" output.check
1146   date.block
1147   format.title "title" output.check
1148   new.sentence
1149   bbl.mthesis format.thesis.type output.nonnull
1150   school "school" output.check
1151   address output
1152   format.note output
1153   fin.entry
1156 FUNCTION {misc}
1157 { output.bibitem
1158   format.authors output
1159   author format.key output
1160   format.date "year" output.check
1161   date.block
1162   format.title output
1163   new.sentence
1164   howpublished output
1165   format.note output
1166   fin.entry
1169 FUNCTION {phdthesis}
1170 { output.bibitem
1171   format.authors "author" output.check
1172   author format.key output
1173   format.date "year" output.check
1174   date.block
1175   format.title "title" output.check
1176   new.sentence
1177   bbl.phdthesis format.thesis.type output.nonnull
1178   school "school" output.check
1179   address output
1180   format.note output
1181   fin.entry
1184 FUNCTION {proceedings}
1185 { output.bibitem
1186   format.editors output
1187   editor format.key output
1188   format.date "year" output.check
1189   date.block
1190   format.btitle "title" output.check
1191   format.bvolume output
1192   format.number.series output
1193   address output
1194   organization output
1195   new.sentence
1196   publisher output
1197   format.note output
1198   fin.entry
1201 FUNCTION {techreport}
1202 { output.bibitem
1203   format.authors "author" output.check
1204   author format.key output
1205   format.date "year" output.check
1206   date.block
1207   format.title "title" output.check
1208   new.sentence
1209   format.tr.number output.nonnull
1210   new.sentence
1211   institution "institution" output.check
1212   address output
1213   format.note output
1214   fin.entry
1217 FUNCTION {unpublished}
1218 { output.bibitem
1219   format.authors "author" output.check
1220   author format.key output
1221   format.date "year" output.check
1222   date.block
1223   format.title "title" output.check
1224   new.sentence
1225   format.note "note" output.check
1226   fin.entry
1229 FUNCTION {default.type} { misc }
1231 READ
1233 FUNCTION {sortify}
1234 { purify$
1235   "l" change.case$
1238 INTEGERS { len }
1240 FUNCTION {chop.word}
1241 { 's :=
1242   'len :=
1243   s #1 len substring$ =
1244     { s len #1 + global.max$ substring$ }
1245     's
1246   if$
1249 FUNCTION {format.lab.names}
1250 { 's :=
1251   s #1 "{vv~}{ll}" format.name$
1252   s num.names$ duplicate$
1253   #2 >
1254     { pop$ " " * "et~al." emphasize * }
1255     { #2 <
1256         'skip$
1257         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1258             { " " * "et~al." emphasize * }
1259             { " \& " * s #2 "{vv~}{ll}" format.name$ * }
1260           if$
1261         }
1262       if$
1263     }
1264   if$
1267 FUNCTION {author.key.label}
1268 { author empty$
1269     { key empty$
1270         { cite$ #1 #3 substring$ }
1271         'key
1272       if$
1273     }
1274     { author format.lab.names }
1275   if$
1278 FUNCTION {author.editor.key.label}
1279 { author empty$
1280     { editor empty$
1281         { key empty$
1282             { cite$ #1 #3 substring$ }
1283             'key
1284           if$
1285         }
1286         { editor format.lab.names }
1287       if$
1288     }
1289     { author format.lab.names }
1290   if$
1293 FUNCTION {editor.key.label}
1294 { editor empty$
1295     { key empty$
1296         { cite$ #1 #3 substring$ }
1297         'key
1298       if$
1299     }
1300     { editor format.lab.names }
1301   if$
1304 FUNCTION {calc.short.authors}
1305 { type$ "book" =
1306   type$ "inbook" =
1307   or
1308     'author.editor.key.label
1309     { type$ "proceedings" =
1310         'editor.key.label
1311         'author.key.label
1312       if$
1313     }
1314   if$
1315   'short.list :=
1318 FUNCTION {calc.label}
1319 { calc.short.authors
1320   short.list
1321   "("
1322   *
1323   year duplicate$ empty$
1324      { pop$ "????" }
1325      'skip$
1326   if$
1327   *
1328   'label :=
1331 FUNCTION {sort.format.names}
1332 { 's :=
1333   #1 'nameptr :=
1334   ""
1335   s num.names$ 'numnames :=
1336   numnames 'namesleft :=
1337     { namesleft #0 > }
1338     { s nameptr
1339       "{ll{ }}{  f{ }}{  jj{ }}"
1340       format.name$ 't :=
1341       nameptr #1 >
1342         {
1343           "   "  *
1344           namesleft #1 = t "others" = and
1345             { "zzzzz" * }
1346             { t sortify * }
1347           if$
1348         }
1349         { t sortify * }
1350       if$
1351       nameptr #1 + 'nameptr :=
1352       namesleft #1 - 'namesleft :=
1353     }
1354   while$
1357 FUNCTION {sort.format.title}
1358 { 't :=
1359   "A " #2
1360     "An " #3
1361       "The " #4 t chop.word
1362     chop.word
1363   chop.word
1364   sortify
1365   #1 global.max$ substring$
1368 FUNCTION {author.sort}
1369 { author empty$
1370     { key empty$
1371         { "to sort, need author or key in " cite$ * warning$
1372           ""
1373         }
1374         { key sortify }
1375       if$
1376     }
1377     { author sort.format.names }
1378   if$
1381 FUNCTION {author.editor.sort}
1382 { author empty$
1383     { editor empty$
1384         { key empty$
1385             { "to sort, need author, editor, or key in " cite$ * warning$
1386               ""
1387             }
1388             { key sortify }
1389           if$
1390         }
1391         { editor sort.format.names }
1392       if$
1393     }
1394     { author sort.format.names }
1395   if$
1398 FUNCTION {editor.sort}
1399 { editor empty$
1400     { key empty$
1401         { "to sort, need editor or key in " cite$ * warning$
1402           ""
1403         }
1404         { key sortify }
1405       if$
1406     }
1407     { editor sort.format.names }
1408   if$
1411 FUNCTION {presort}
1412 { calc.label
1413   label sortify
1414   "    "
1415   *
1416   type$ "book" =
1417   type$ "inbook" =
1418   or
1419     'author.editor.sort
1420     { type$ "proceedings" =
1421         'editor.sort
1422         'author.sort
1423       if$
1424     }
1425   if$
1426   #1 entry.max$ substring$
1427   'sort.label :=
1428   sort.label
1429   *
1430   "    "
1431   *
1432   title field.or.null
1433   sort.format.title
1434   *
1435   #1 entry.max$ substring$
1436   'sort.key$ :=
1439 ITERATE {presort}
1441 SORT
1443 STRINGS { last.label next.extra }
1445 INTEGERS { last.extra.num number.label }
1447 FUNCTION {initialize.extra.label.stuff}
1448 { #0 int.to.chr$ 'last.label :=
1449   "" 'next.extra :=
1450   #0 'last.extra.num :=
1451   #0 'number.label :=
1454 FUNCTION {forward.pass}
1455 { last.label label =
1456     { last.extra.num #1 + 'last.extra.num :=
1457       last.extra.num int.to.chr$ 'extra.label :=
1458     }
1459     { "a" chr.to.int$ 'last.extra.num :=
1460       "" 'extra.label :=
1461       label 'last.label :=
1462     }
1463   if$
1464   number.label #1 + 'number.label :=
1467 FUNCTION {reverse.pass}
1468 { next.extra "b" =
1469     { "a" 'extra.label := }
1470     'skip$
1471   if$
1472   extra.label 'next.extra :=
1473   extra.label
1474   emphasize
1475   duplicate$ empty$
1476     'skip$
1477     { "{\natexlab{" swap$ * "}}" * }
1478   if$
1479   'extra.label :=
1480   label extra.label * 'label :=
1483 EXECUTE {initialize.extra.label.stuff}
1485 ITERATE {forward.pass}
1487 REVERSE {reverse.pass}
1489 FUNCTION {bib.sort.order}
1490 { sort.label
1491   "    "
1492   *
1493   year field.or.null sortify
1494   *
1495   "    "
1496   *
1497   title field.or.null
1498   sort.format.title
1499   *
1500   #1 entry.max$ substring$
1501   'sort.key$ :=
1504 ITERATE {bib.sort.order}
1506 SORT
1508 FUNCTION {begin.bib}
1509 { preamble$ empty$
1510     'skip$
1511     { preamble$ write$ newline$ }
1512   if$
1513   "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1514   write$ newline$
1515   "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1516   write$ newline$
1519 EXECUTE {begin.bib}
1521 EXECUTE {init.state.consts}
1523 ITERATE {call.type$}
1525 FUNCTION {end.bib}
1526 { newline$
1527   "\end{thebibliography}" write$ newline$
1530 EXECUTE {end.bib}
1531 %% End of customized bst file 
1532 %% 
1533 %% End of file `jfmraw.bst'.