]> AND Private Git Repository - 16dcc.git/blob - ws-ijbc.bst
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout de fichiers
[16dcc.git] / ws-ijbc.bst
1 %%\r
2 %% This is file `pattern1.bst',\r
3 %% generated with the docstrip utility.\r
4 %%\r
5 %% The original source files were:\r
6 %%\r
7 %% merlin.mbs  (with options: `ay,nat,nm-rev,jnrlst,keyxyr,dt-beg,yr-par,yrpp-xsp,note-yr,tit-qq,vol-bf,volp-com,jwdpg,pp-last,num-xser,numser,ser-vol,ser-ed,pub-par,pre-edn,isbn,doi,edpar,blk-com,pp,ed,abr,ednx,ord,jabr,and-xcom,etal-it,url,url-nt,nfss,')\r
8 %% ----------------------------------------\r
9 %% *** ws books n journals ***\r
10 %% \r
11 %% Copyright 1994-2003 Patrick W Daly\r
12  % ===============================================================\r
13  % IMPORTANT NOTICE:\r
14  % This bibliographic style (bst) file has been generated from one or\r
15  % more master bibliographic style (mbs) files, listed above.\r
16  %\r
17  % This generated file can be redistributed and/or modified under the terms\r
18  % of the LaTeX Project Public License Distributed from CTAN\r
19  % archives in directory macros/latex/base/lppl.txt; either\r
20  % version 1 of the License, or any later version.\r
21  % ===============================================================\r
22  % Name and version information of the main mbs file:\r
23  % \ProvidesFile{merlin.mbs}[2003/09/8 4.12 (PWD, AO, DPC)]\r
24  %   For use with BibTeX version 0.99a or later\r
25  %-------------------------------------------------------------------\r
26  % This bibliography style file is intended for texts in ENGLISH\r
27  % This is an author-year citation style bibliography. As such, it is\r
28  % non-standard LaTeX, and requires a special package file to function properly.\r
29  % Such a package is wsnatbib.sty\r
30  % The form of the \bibitem entries is\r
31  %   \bibitem[Jones et al.(1990)]{key}...\r
32  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...\r
33  % The essential feature is that the label (the part in brackets) consists\r
34  % of the author names, as they should appear in the citation, with the year\r
35  % in parentheses following. There must be no space before the opening\r
36  % parenthesis!\r
37  % With natbib v5.3, a full list of authors may also follow the year.\r
38  % In natbib.sty, it is possible to define the type of enclosures that is\r
39  % really wanted (brackets or parentheses), but in either case, there must\r
40  % be parentheses in the label.\r
41  % The \cite command functions as follows:\r
42  %   \citet{key} ==>>                Jones et al. (1990)\r
43  %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)\r
44  %   \citep{key} ==>>                (Jones et al., 1990)\r
45  %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)\r
46  %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)\r
47  %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)\r
48  %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)\r
49  %   \citeauthor{key} ==>>           Jones et al.\r
50  %   \citeauthor*{key} ==>>          Jones, Baker, and Smith\r
51  %   \citeyear{key} ==>>             1990\r
52  %---------------------------------------------------------------------\r
53 \r
54 ENTRY\r
55   { address\r
56     author\r
57     booktitle\r
58     chapter\r
59     doi\r
60     edition\r
61     editor\r
62     eid\r
63     howpublished\r
64     institution\r
65     isbn\r
66     journal\r
67     key\r
68     month\r
69     note\r
70     number\r
71     organization\r
72     pages\r
73     publisher\r
74     school\r
75     series\r
76     title\r
77     type\r
78     url\r
79     volume\r
80     year\r
81   }\r
82   {}\r
83   { label extra.label sort.label short.list }\r
84 INTEGERS { output.state before.all mid.sentence after.sentence after.block }\r
85 FUNCTION {init.state.consts}\r
86 { #0 'before.all :=\r
87   #1 'mid.sentence :=\r
88   #2 'after.sentence :=\r
89   #3 'after.block :=\r
90 }\r
91 FUNCTION {disp.msg.screen} { #1 }\r
92 FUNCTION {type.msg}\r
93 { disp.msg.screen\r
94      { "<ws-ijbc.bst>"\r
95        top$\r
96        "World Scientific's Bibliography Style File for IJBC"\r
97        top$\r
98        "version 1.0 (2005/03/26), Sorted"\r
99        top$\r
100        "for support: Rajesh, rajesh@wspc.com.sg"\r
101        top$\r
102      }\r
103      { skip$ }\r
104    if$\r
105 }\r
106 STRINGS { s t}\r
107 FUNCTION {output.nonnull}\r
108 { 's :=\r
109   output.state mid.sentence =\r
110     { ", " * write$ }\r
111     { output.state after.block =\r
112         { add.period$ write$\r
113           newline$\r
114           "\newblock " write$\r
115         }\r
116         { output.state before.all =\r
117             'write$\r
118             { add.period$ " " * write$ }\r
119           if$\r
120         }\r
121       if$\r
122       mid.sentence 'output.state :=\r
123     }\r
124   if$\r
125   s\r
126 }\r
127 FUNCTION {output}\r
128 { duplicate$ empty$\r
129     'pop$\r
130     'output.nonnull\r
131   if$\r
132 }\r
133 FUNCTION {output.check}\r
134 { 't :=\r
135   duplicate$ empty$\r
136     { pop$ "empty " t * " in " * cite$ * warning$ }\r
137     'output.nonnull\r
138   if$\r
139 }\r
140 FUNCTION {fin.entry}\r
141 { add.period$\r
142   write$\r
143   newline$\r
144 }\r
145 FUNCTION {new.block}\r
146 { output.state before.all =\r
147     'skip$\r
148     { after.block 'output.state := }\r
149   if$\r
150 }\r
151 FUNCTION {new.sentence}\r
152 { output.state after.block =\r
153     'skip$\r
154     { output.state before.all =\r
155         'skip$\r
156         { after.sentence 'output.state := }\r
157       if$\r
158     }\r
159   if$\r
160 }\r
161 FUNCTION {add.blank}\r
162 {  " " * before.all 'output.state :=\r
163 }\r
164 FUNCTION {no.blank.or.punct}\r
165 {  "\hspace{0pt}" * before.all 'output.state :=\r
166 }\r
167 FUNCTION {date.block}\r
168 {\r
169   skip$\r
170 }\r
171 FUNCTION {not}\r
172 {   { #0 }\r
173     { #1 }\r
174   if$\r
175 }\r
176 FUNCTION {and}\r
177 {   'skip$\r
178     { pop$ #0 }\r
179   if$\r
180 }\r
181 FUNCTION {or}\r
182 {   { pop$ #1 }\r
183     'skip$\r
184   if$\r
185 }\r
186 FUNCTION {non.stop}\r
187 { duplicate$\r
188    "}" * add.period$\r
189    #-1 #1 substring$ "." =\r
190 }\r
191 FUNCTION {new.block.checkb}\r
192 { empty$\r
193   swap$ empty$\r
194   and\r
195     'skip$\r
196     'new.block\r
197   if$\r
198 }\r
199 FUNCTION {field.or.null}\r
200 { duplicate$ empty$\r
201     { pop$ "" }\r
202     'skip$\r
203   if$\r
204 }\r
205 FUNCTION {emphasize}\r
206 { duplicate$ empty$\r
207     { pop$ "" }\r
208     { "\emph{" swap$ * "}" * }\r
209   if$\r
210 }\r
211 FUNCTION {bolden}\r
212 { duplicate$ empty$\r
213     { pop$ "" }\r
214     { "\textbf{" swap$ * "}" * }\r
215   if$\r
216 }\r
217 FUNCTION {tie.or.space.prefix}\r
218 { duplicate$ text.length$ #3 <\r
219     { " " }\r
220     { " " }\r
221   if$\r
222   swap$\r
223 }\r
224 FUNCTION {tie.r.space.prefix}\r
225 { duplicate$ text.length$ #3 <\r
226     { "" }\r
227     { "" }\r
228   if$\r
229   swap$\r
230 }\r
231 FUNCTION {capitalize}\r
232 { "u" change.case$ "t" change.case$ }\r
233 \r
234 FUNCTION {space.word}\r
235 { " " swap$ * " " * }\r
236  % Here are the language-specific definitions for explicit words.\r
237  % Each function has a name bbl.xxx where xxx is the English word.\r
238  % The language selected here is ENGLISH\r
239 FUNCTION {bbl.and}\r
240 { "\&"}\r
241 \r
242 FUNCTION {bbl.etal}\r
243 { "et~al." }\r
244 \r
245 FUNCTION {bbl.editors}\r
246 { "eds." }\r
247 \r
248 FUNCTION {bbl.editor}\r
249 { "ed." }\r
250 \r
251 FUNCTION {bbl.edby}\r
252 { "edited by" }\r
253 \r
254 FUNCTION {bbl.edition}\r
255 { "ed." }\r
256 \r
257 FUNCTION {bbl.volume}\r
258 { "" }\r
259 \r
260 FUNCTION {bbl.of}\r
261 { "of" }\r
262 \r
263 FUNCTION {bbl.number}\r
264 { "no." }\r
265 \r
266 FUNCTION {bbl.nr}\r
267 { "no." }\r
268 \r
269 FUNCTION {bbl.in}\r
270 { "" }\r
271 \r
272 FUNCTION {bbl.pages}\r
273 { "pp." }\r
274 \r
275 FUNCTION {bbl.page}\r
276 { "p." }\r
277 \r
278 FUNCTION {bbl.jpages}\r
279 {""}\r
280 \r
281 FUNCTION {bbl.jpage}\r
282 {""}\r
283 \r
284 FUNCTION {bbl.chapter}\r
285 { "" }\r
286 \r
287 FUNCTION {bbl.techrep}\r
288 { "Tech. Rep." }\r
289 \r
290 FUNCTION {bbl.mthesis}\r
291 { "Master's thesis" }\r
292 \r
293 FUNCTION {bbl.phdthesis}\r
294 { "PhD thesis" }\r
295 \r
296 FUNCTION {bbl.first}\r
297 { "1st" }\r
298 \r
299 FUNCTION {bbl.second}\r
300 { "2nd" }\r
301 \r
302 FUNCTION {bbl.third}\r
303 { "3rd" }\r
304 \r
305 FUNCTION {bbl.fourth}\r
306 { "4th" }\r
307 \r
308 FUNCTION {bbl.fifth}\r
309 { "5th" }\r
310 \r
311 FUNCTION {bbl.st}\r
312 { "st" }\r
313 \r
314 FUNCTION {bbl.nd}\r
315 { "nd" }\r
316 \r
317 FUNCTION {bbl.rd}\r
318 { "rd" }\r
319 \r
320 FUNCTION {bbl.th}\r
321 { "th" }\r
322 \r
323 MACRO {jan} {"Jan."}\r
324 \r
325 MACRO {feb} {"Feb."}\r
326 \r
327 MACRO {mar} {"Mar."}\r
328 \r
329 MACRO {apr} {"Apr."}\r
330 \r
331 MACRO {may} {"May"}\r
332 \r
333 MACRO {jun} {"Jun."}\r
334 \r
335 MACRO {jul} {"Jul."}\r
336 \r
337 MACRO {aug} {"Aug."}\r
338 \r
339 MACRO {sep} {"Sep."}\r
340 \r
341 MACRO {oct} {"Oct."}\r
342 \r
343 MACRO {nov} {"Nov."}\r
344 \r
345 MACRO {dec} {"Dec."}\r
346 \r
347 FUNCTION {eng.ord}\r
348 { duplicate$ "1" swap$ *\r
349   #-2 #1 substring$ "1" =\r
350      { bbl.th * }\r
351      { duplicate$ #-1 #1 substring$\r
352        duplicate$ "1" =\r
353          { pop$ bbl.st * }\r
354          { duplicate$ "2" =\r
355              { pop$ bbl.nd * }\r
356              { "3" =\r
357                  { bbl.rd * }\r
358                  { bbl.th * }\r
359                if$\r
360              }\r
361            if$\r
362           }\r
363        if$\r
364      }\r
365    if$\r
366 }\r
367 \r
368 MACRO {acmcs} {"ACM Comput. Surv."}\r
369 \r
370 MACRO {acta} {"Acta Inf."}\r
371 \r
372 MACRO {cacm} {"Commun. ACM"}\r
373 \r
374 MACRO {ibmjrd} {"IBM J. Res. Dev."}\r
375 \r
376 MACRO {ibmsj} {"IBM Syst.~J."}\r
377 \r
378 MACRO {ieeese} {"IEEE Trans. Software Eng."}\r
379 \r
380 MACRO {ieeetc} {"IEEE Trans. Comput."}\r
381 \r
382 MACRO {ieeetcad}\r
383  {"IEEE Trans. Comput. Aid. Des."}\r
384 \r
385 MACRO {ipl} {"Inf. Process. Lett."}\r
386 \r
387 MACRO {jacm} {"J.~ACM"}\r
388 \r
389 MACRO {jcss} {"J.~Comput. Syst. Sci."}\r
390 \r
391 MACRO {scp} {"Sci. Comput. Program."}\r
392 \r
393 MACRO {sicomp} {"SIAM J. Comput."}\r
394 \r
395 MACRO {tocs} {"ACM Trans. Comput. Syst."}\r
396 \r
397 MACRO {tods} {"ACM Trans. Database Syst."}\r
398 \r
399 MACRO {tog} {"ACM Trans. Graphic."}\r
400 \r
401 MACRO {toms} {"ACM Trans. Math. Software"}\r
402 \r
403 MACRO {toois} {"ACM Trans. Office Inf. Syst."}\r
404 \r
405 MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}\r
406 \r
407 MACRO {tcs} {"Theor. Comput. Sci."}\r
408 \r
409 FUNCTION {bibinfo.check}\r
410 { swap$\r
411   duplicate$ missing$\r
412     {\r
413       pop$ pop$\r
414       ""\r
415     }\r
416     { duplicate$ empty$\r
417         {\r
418           swap$ pop$\r
419         }\r
420         { swap$\r
421           pop$\r
422         }\r
423       if$\r
424     }\r
425   if$\r
426 }\r
427 FUNCTION {bibinfo.warn}\r
428 { swap$\r
429   duplicate$ missing$\r
430     {\r
431       swap$ "missing " swap$ * " in " * cite$ * warning$ pop$\r
432       ""\r
433     }\r
434     { duplicate$ empty$\r
435         {\r
436           swap$ "empty " swap$ * " in " * cite$ * warning$\r
437         }\r
438         { swap$\r
439           pop$\r
440         }\r
441       if$\r
442     }\r
443   if$\r
444 }\r
445 STRINGS  { bibinfo}\r
446 INTEGERS { nameptr namesleft numnames }\r
447 \r
448 FUNCTION {format.names}\r
449 { 'bibinfo :=\r
450   duplicate$ empty$ 'skip$ {\r
451   's :=\r
452   "" 't :=\r
453   #1 'nameptr :=\r
454   s num.names$ 'numnames :=\r
455   numnames 'namesleft :=\r
456     { namesleft #0 > }\r
457     { s nameptr\r
458       "{vv~}{ll}{, f.}{, jj}"\r
459       format.name$\r
460       bibinfo bibinfo.check\r
461       't :=\r
462       nameptr #1 >\r
463         {\r
464           namesleft #1 >\r
465             { ", " * t * }\r
466             {\r
467               s nameptr "{ll}" format.name$ duplicate$ "others" =\r
468                 { 't := }\r
469                 { pop$ }\r
470               if$\r
471               t "others" =\r
472                 {\r
473                   " " * bbl.etal emphasize *\r
474                 }\r
475                 {\r
476                   "\&"\r
477                   space.word * t *\r
478                 }\r
479               if$\r
480             }\r
481           if$\r
482         }\r
483         't\r
484       if$\r
485       nameptr #1 + 'nameptr :=\r
486       namesleft #1 - 'namesleft :=\r
487     }\r
488   while$\r
489   } if$\r
490 }\r
491 FUNCTION {format.names.ed}\r
492 { 'bibinfo :=\r
493   duplicate$ empty$ 'skip$ {\r
494   's :=\r
495   "" 't :=\r
496   #1 'nameptr :=\r
497   s num.names$ 'numnames :=\r
498   numnames 'namesleft :=\r
499     { namesleft #0 > }\r
500     { s nameptr\r
501       "{vv~}{ll}{, f.}{, jj}"\r
502       format.name$\r
503       bibinfo bibinfo.check\r
504       't :=\r
505       nameptr #1 >\r
506         {\r
507           namesleft #1 >\r
508             { ", " * t * }\r
509             {\r
510               s nameptr "{ll}" format.name$ duplicate$ "others" =\r
511                 { 't := }\r
512                 { pop$ }\r
513               if$\r
514               t "others" =\r
515                 {\r
516                   " " * bbl.etal emphasize *\r
517                 }\r
518                 {\r
519                   "\&"\r
520                   space.word * t *\r
521                 }\r
522               if$\r
523             }\r
524           if$\r
525         }\r
526         't\r
527       if$\r
528       nameptr #1 + 'nameptr :=\r
529       namesleft #1 - 'namesleft :=\r
530     }\r
531   while$\r
532   } if$\r
533 }\r
534 FUNCTION {format.key}\r
535 { empty$\r
536     { key field.or.null }\r
537     { "" }\r
538   if$\r
539 }\r
540 \r
541 FUNCTION {format.authors}\r
542 { author "author" format.names\r
543 }\r
544 FUNCTION {get.bbl.editor}\r
545 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }\r
546 \r
547 FUNCTION {format.editors}\r
548 { editor "editor" format.names duplicate$ empty$ 'skip$\r
549     {\r
550       " " *\r
551       get.bbl.editor\r
552    "(" swap$ * ")" *\r
553       *\r
554     }\r
555   if$\r
556 }\r
557 FUNCTION {format.isbn}\r
558 { isbn "isbn" bibinfo.check\r
559   duplicate$ empty$ 'skip$\r
560     {\r
561       "ISBN " swap$ *\r
562     }\r
563   if$\r
564 }\r
565 \r
566 FUNCTION {format.doi}\r
567 { doi "doi" bibinfo.check\r
568   duplicate$ empty$ 'skip$\r
569     {\r
570       "\doi{" swap$ * "}" *\r
571     }\r
572   if$\r
573 }\r
574 FUNCTION {format.note}\r
575 {\r
576   url empty$\r
577     'skip$\r
578     { "\urlprefix\url{" url * "}" * output }\r
579   if$\r
580  note empty$\r
581     { "" }\r
582     { note #1 #1 substring$\r
583       duplicate$ "{" =\r
584         'skip$\r
585         { output.state mid.sentence =\r
586           { "l" }\r
587           { "u" }\r
588         if$\r
589         change.case$\r
590         }\r
591       if$\r
592       note #2 global.max$ substring$ * "note" bibinfo.check\r
593     }\r
594   if$\r
595 }\r
596 \r
597 FUNCTION {format.title}\r
598 { title\r
599   duplicate$ empty$ 'skip$\r
600     { "t" change.case$ }\r
601   if$\r
602   "title" bibinfo.check\r
603   duplicate$ empty$ 'skip$\r
604     {\r
605       "\enquote{" swap$ *\r
606       non.stop\r
607         { ",} " * }\r
608         { "} " * }\r
609       if$\r
610     }\r
611   if$\r
612 }\r
613 FUNCTION {end.quote.title}\r
614 { title empty$\r
615     'skip$\r
616     { before.all 'output.state := }\r
617   if$\r
618 }\r
619 FUNCTION {format.full.names}\r
620 {'s :=\r
621  "" 't :=\r
622   #1 'nameptr :=\r
623   s num.names$ 'numnames :=\r
624   numnames 'namesleft :=\r
625     { namesleft #0 > }\r
626     { s nameptr\r
627       "{vv~}{ll}" format.name$\r
628       't :=\r
629       nameptr #1 >\r
630         {\r
631           namesleft #1 >\r
632             { ", " * t * }\r
633             {\r
634               s nameptr "{ll}" format.name$ duplicate$ "others" =\r
635                 { 't := }\r
636                 { pop$ }\r
637               if$\r
638               t "others" =\r
639                 {\r
640                   " " * bbl.etal emphasize *\r
641                 }\r
642                 {\r
643                   bbl.and\r
644                   space.word * t *\r
645                 }\r
646               if$\r
647             }\r
648           if$\r
649         }\r
650         't\r
651       if$\r
652       nameptr #1 + 'nameptr :=\r
653       namesleft #1 - 'namesleft :=\r
654     }\r
655   while$\r
656 }\r
657 \r
658 FUNCTION {author.editor.key.full}\r
659 { author empty$\r
660     { editor empty$\r
661         { key empty$\r
662             { cite$ #1 #3 substring$ }\r
663             'key\r
664           if$\r
665         }\r
666         { editor format.full.names }\r
667       if$\r
668     }\r
669     { author format.full.names }\r
670   if$\r
671 }\r
672 \r
673 FUNCTION {author.key.full}\r
674 { author empty$\r
675     { key empty$\r
676          { cite$ #1 #3 substring$ }\r
677           'key\r
678       if$\r
679     }\r
680     { author format.full.names }\r
681   if$\r
682 }\r
683 \r
684 FUNCTION {editor.key.full}\r
685 { editor empty$\r
686     { key empty$\r
687          { cite$ #1 #3 substring$ }\r
688           'key\r
689       if$\r
690     }\r
691     { editor format.full.names }\r
692   if$\r
693 }\r
694 \r
695 FUNCTION {make.full.names}\r
696 { type$ "book" =\r
697   type$ "inbook" =\r
698   or\r
699     'author.editor.key.full\r
700     { type$ "proceedings" =\r
701         'editor.key.full\r
702         'author.key.full\r
703       if$\r
704     }\r
705   if$\r
706 }\r
707 \r
708 FUNCTION {output.bibitem}\r
709 { newline$\r
710   "\bibitem[{" write$\r
711   label write$\r
712   ")" make.full.names duplicate$ short.list =\r
713      { pop$ }\r
714      { * }\r
715    if$\r
716   "}]{" * write$\r
717   cite$ write$\r
718   "}" write$\r
719   newline$\r
720   ""\r
721   before.all 'output.state :=\r
722 }\r
723 \r
724 FUNCTION {n.dashify}\r
725 {\r
726   't :=\r
727   ""\r
728     { t empty$ not }\r
729     { t #1 #1 substring$ "-" =\r
730         { t #1 #2 substring$ "--" = not\r
731             { "--" *\r
732               t #2 global.max$ substring$ 't :=\r
733             }\r
734             {   { t #1 #1 substring$ "-" = }\r
735                 { "-" *\r
736                   t #2 global.max$ substring$ 't :=\r
737                 }\r
738               while$\r
739             }\r
740           if$\r
741         }\r
742         { t #1 #1 substring$ *\r
743           t #2 global.max$ substring$ 't :=\r
744         }\r
745       if$\r
746     }\r
747   while$\r
748 }\r
749 \r
750 FUNCTION {word.in}\r
751 { bbl.in\r
752   " " * }\r
753 \r
754 FUNCTION {format.date}\r
755 { year "year" bibinfo.check duplicate$ empty$\r
756     {\r
757       "empty year in " cite$ * "; set to ????" * warning$\r
758        pop$ "????"\r
759     }\r
760     'skip$\r
761   if$\r
762   extra.label *\r
763   before.all 'output.state :=\r
764   " [" swap$ * "]" *\r
765 }\r
766 FUNCTION {format.btitle}\r
767 { title "title" bibinfo.check\r
768   duplicate$ empty$ 'skip$\r
769     {\r
770       emphasize\r
771     }\r
772   if$\r
773 }\r
774 FUNCTION {either.or.check}\r
775 { empty$\r
776     'pop$\r
777     { "can't use both " swap$ * " fields in " * cite$ * warning$ }\r
778   if$\r
779 }\r
780 FUNCTION {format.bvolume}\r
781 { volume empty$\r
782    { "" }\r
783     { series empty$\r
784        {"Vol.~" volume *}\r
785        {", " * series * "Vol.~" volume *}\r
786       if$\r
787     }\r
788   if$\r
789 }\r
790 FUNCTION {format.number.series}\r
791 { volume empty$\r
792     { number empty$\r
793         { series field.or.null }\r
794         { series empty$\r
795             { number "number" bibinfo.check }\r
796             { output.state mid.sentence =\r
797                 { bbl.number }\r
798                 { bbl.number capitalize }\r
799               if$\r
800               number tie.or.space.prefix "number" bibinfo.check * *\r
801               bbl.in space.word *\r
802               series "series" bibinfo.check *\r
803             }\r
804           if$\r
805         }\r
806       if$\r
807     }\r
808     { "" }\r
809   if$\r
810 }\r
811 FUNCTION {is.num}\r
812 { chr.to.int$\r
813   duplicate$ "0" chr.to.int$ < not\r
814   swap$ "9" chr.to.int$ > not and\r
815 }\r
816 \r
817 FUNCTION {extract.num}\r
818 { duplicate$ 't :=\r
819   "" 's :=\r
820   { t empty$ not }\r
821   { t #1 #1 substring$\r
822     t #2 global.max$ substring$ 't :=\r
823     duplicate$ is.num\r
824       { s swap$ * 's := }\r
825       { pop$ "" 't := }\r
826     if$\r
827   }\r
828   while$\r
829   s empty$\r
830     'skip$\r
831     { pop$ s }\r
832   if$\r
833 }\r
834 \r
835 FUNCTION {convert.edition}\r
836 { extract.num "l" change.case$ 's :=\r
837   s "first" = s "1" = or\r
838     { bbl.first 't := }\r
839     { s "second" = s "2" = or\r
840         { bbl.second 't := }\r
841         { s "third" = s "3" = or\r
842             { bbl.third 't := }\r
843             { s "fourth" = s "4" = or\r
844                 { bbl.fourth 't := }\r
845                 { s "fifth" = s "5" = or\r
846                     { bbl.fifth 't := }\r
847                     { s #1 #1 substring$ is.num\r
848                         { s eng.ord 't := }\r
849                         { edition 't := }\r
850                       if$\r
851                     }\r
852                   if$\r
853                 }\r
854               if$\r
855             }\r
856           if$\r
857         }\r
858       if$\r
859     }\r
860   if$\r
861   t\r
862 }\r
863 \r
864 FUNCTION {format.edition}\r
865 { edition duplicate$ empty$ 'skip$\r
866     {\r
867       convert.edition\r
868       output.state mid.sentence =\r
869         { "l" }\r
870         { "t" }\r
871       if$ change.case$\r
872       "edition" bibinfo.check\r
873       " " * bbl.edition *\r
874     }\r
875   if$\r
876 }\r
877 INTEGERS { multiresult }\r
878 FUNCTION {multi.page.check}\r
879 { 't :=\r
880   #0 'multiresult :=\r
881     { multiresult not\r
882       t empty$ not\r
883       and\r
884     }\r
885     { t #1 #1 substring$\r
886       duplicate$ "-" =\r
887       swap$ duplicate$ "," =\r
888       swap$ "+" =\r
889       or or\r
890         { #1 'multiresult := }\r
891         { t #2 global.max$ substring$ 't := }\r
892       if$\r
893     }\r
894   while$\r
895   multiresult\r
896 }\r
897 FUNCTION {format.pages}\r
898 { pages duplicate$ empty$ 'skip$\r
899     { duplicate$ multi.page.check\r
900         {\r
901           bbl.pages swap$\r
902           n.dashify\r
903         }\r
904         {\r
905           bbl.page swap$\r
906         }\r
907       if$\r
908       tie.or.space.prefix\r
909       "pages" bibinfo.check\r
910       * *\r
911     }\r
912   if$\r
913 }\r
914 FUNCTION {format.journal.pages}\r
915 { pages duplicate$ empty$ 'pop$\r
916     { swap$ duplicate$ empty$\r
917         { pop$ pop$ format.pages }\r
918         {\r
919           ", " *\r
920           swap$\r
921           n.dashify\r
922           pages multi.page.check\r
923             'bbl.jpages\r
924             'bbl.jpage\r
925           if$\r
926           swap$ tie.or.space.prefix\r
927           "pages" bibinfo.check\r
928           * *\r
929           *\r
930         }\r
931       if$\r
932     }\r
933   if$\r
934 }\r
935 FUNCTION {format.journal.eid}\r
936 { eid "eid" bibinfo.check\r
937   duplicate$ empty$ 'pop$\r
938     { swap$ duplicate$ empty$ 'skip$\r
939       {\r
940           ", " *\r
941       }\r
942       if$\r
943       swap$ *\r
944     }\r
945   if$\r
946 }\r
947 FUNCTION {format.vol.num.pages}\r
948 { volume field.or.null\r
949   duplicate$ empty$ 'skip$\r
950     {\r
951       "volume" bibinfo.check\r
952     }\r
953   if$\r
954   bolden\r
955 }\r
956 \r
957 FUNCTION {format.chapter.pages}\r
958 { chapter empty$\r
959     { "" }\r
960     { type empty$\r
961         { bbl.chapter }\r
962         { type "l" change.case$\r
963           "type" bibinfo.check\r
964         }\r
965       if$\r
966       "``" chapter tie.r.space.prefix * ",''" *\r
967       "chapter" bibinfo.check\r
968       * *\r
969     }\r
970   if$\r
971 }\r
972 \r
973 FUNCTION {format.booktitle}\r
974 {\r
975   booktitle "booktitle" bibinfo.check\r
976   emphasize\r
977 }\r
978 FUNCTION {format.in.ed.booktitle}\r
979 { format.booktitle duplicate$ empty$ 'skip$\r
980     {\r
981       editor "editor" format.names.ed duplicate$ empty$ 'pop$\r
982         {\r
983           get.bbl.editor\r
984           " " * swap$ *\r
985           swap$\r
986           "," *\r
987           " " * swap$\r
988           * }\r
989       if$\r
990       word.in swap$ *\r
991     }\r
992   if$\r
993 }\r
994 FUNCTION {format.thesis.type}\r
995 { type duplicate$ empty$\r
996     'pop$\r
997     { swap$ pop$\r
998       "t" change.case$ "type" bibinfo.check\r
999     }\r
1000   if$\r
1001 }\r
1002 FUNCTION {format.tr.number}\r
1003 { number "number" bibinfo.check\r
1004   type duplicate$ empty$\r
1005     { pop$ bbl.techrep }\r
1006     'skip$\r
1007   if$\r
1008   "type" bibinfo.check\r
1009   swap$ duplicate$ empty$\r
1010     { pop$ "t" change.case$ }\r
1011     { tie.or.space.prefix * * }\r
1012   if$\r
1013 }\r
1014 FUNCTION {format.article.crossref}\r
1015 {\r
1016   word.in\r
1017   " \cite{" * crossref * "}" *\r
1018 }\r
1019 FUNCTION {format.book.crossref}\r
1020 { volume duplicate$ empty$\r
1021     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$\r
1022       pop$ word.in\r
1023     }\r
1024     { bbl.volume\r
1025       swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *\r
1026     }\r
1027   if$\r
1028   " \cite{" * crossref * "}" *\r
1029 }\r
1030 FUNCTION {format.incoll.inproc.crossref}\r
1031 {\r
1032   word.in\r
1033   " \cite{" * crossref * "}" *\r
1034 }\r
1035 FUNCTION {format.org.or.pub}\r
1036 { 't :=\r
1037   ""\r
1038   address empty$ t empty$ and\r
1039     'skip$\r
1040     {\r
1041       add.blank "(" *\r
1042       t empty$\r
1043         { address "address" bibinfo.check *\r
1044         }\r
1045         { t *\r
1046           address empty$\r
1047             'skip$\r
1048             { ", " * address "address" bibinfo.check * }\r
1049           if$\r
1050         }\r
1051       if$\r
1052       ")" *\r
1053     }\r
1054   if$\r
1055 }\r
1056 FUNCTION {format.publisher.address}\r
1057 { publisher "publisher" bibinfo.warn format.org.or.pub\r
1058 }\r
1059 \r
1060 FUNCTION {format.organization.address}\r
1061 { organization "organization" bibinfo.check format.org.or.pub\r
1062 }\r
1063 \r
1064 FUNCTION {article}\r
1065 { output.bibitem\r
1066   format.authors "author" output.check\r
1067   author format.key output\r
1068   format.date "year" output.check\r
1069   new.sentence\r
1070   date.block\r
1071   add.blank\r
1072   format.title "title" output.check\r
1073   end.quote.title\r
1074   crossref missing$\r
1075     {\r
1076       journal\r
1077       "journal" bibinfo.check\r
1078       emphasize\r
1079       "journal" output.check\r
1080       add.blank\r
1081       format.vol.num.pages output\r
1082     }\r
1083     { format.article.crossref output.nonnull\r
1084     }\r
1085   if$\r
1086   eid empty$\r
1087     { format.journal.pages }\r
1088     { format.journal.eid }\r
1089   if$\r
1090   format.doi output\r
1091   format.note output\r
1092   fin.entry\r
1093 }\r
1094 FUNCTION {book}\r
1095 { output.bibitem\r
1096   author empty$\r
1097     { format.editors "author and editor" output.check\r
1098       editor format.key output\r
1099     }\r
1100     { format.authors output.nonnull\r
1101       crossref missing$\r
1102         { "author and editor" editor either.or.check }\r
1103         'skip$\r
1104       if$\r
1105     }\r
1106   if$\r
1107   format.date "year" output.check\r
1108   new.sentence\r
1109   date.block\r
1110   add.blank\r
1111   format.btitle "title" output.check\r
1112   crossref missing$\r
1113     { format.bvolume output\r
1114       format.edition output\r
1115       format.number.series output\r
1116       format.publisher.address output\r
1117     }\r
1118     {\r
1119       format.book.crossref output.nonnull\r
1120     }\r
1121   if$\r
1122   format.isbn output\r
1123   format.doi output\r
1124   format.note output\r
1125   fin.entry\r
1126 }\r
1127 FUNCTION {booklet}\r
1128 { output.bibitem\r
1129   format.authors output\r
1130   author format.key output\r
1131   format.date "year" output.check\r
1132   new.sentence\r
1133   date.block\r
1134   add.blank  \r
1135   format.title "title" output.check\r
1136   end.quote.title\r
1137   howpublished "howpublished" bibinfo.check output\r
1138   address "address" bibinfo.check output\r
1139   format.isbn output\r
1140   format.doi output\r
1141   format.note output\r
1142   fin.entry\r
1143 }\r
1144 FUNCTION {inbook}\r
1145 { output.bibitem\r
1146   author empty$\r
1147     { format.editors "author and editor" output.check\r
1148       editor format.key output\r
1149     }\r
1150     { format.authors output.nonnull\r
1151     }\r
1152   if$\r
1153   format.date "year" output.check\r
1154   new.sentence\r
1155   date.block\r
1156   add.blank  \r
1157   format.chapter.pages "chapter and pages" output.check\r
1158   add.blank\r
1159   format.btitle "title" output.check\r
1160   crossref missing$\r
1161     {\r
1162       format.edition output\r
1163       format.number.series output\r
1164       format.bvolume output\r
1165       format.publisher.address output\r
1166     }\r
1167     {\r
1168       format.chapter.pages "chapter and pages" output.check\r
1169       add.blank\r
1170       format.book.crossref output.nonnull\r
1171     }\r
1172   if$\r
1173   crossref missing$\r
1174     { format.isbn output }\r
1175     'skip$\r
1176   if$\r
1177   format.pages "pages" output.check\r
1178   format.doi output\r
1179   format.note output\r
1180   fin.entry\r
1181 }\r
1182 \r
1183 FUNCTION {incollection}\r
1184 { output.bibitem\r
1185   format.authors "author" output.check\r
1186   author format.key output\r
1187   format.date "year" output.check\r
1188   new.sentence\r
1189   date.block\r
1190   add.blank  \r
1191   format.title "title" output.check\r
1192   end.quote.title\r
1193   crossref missing$\r
1194     { format.in.ed.booktitle "booktitle" output.check\r
1195       format.edition output\r
1196       format.chapter.pages output\r
1197       format.number.series output\r
1198       format.publisher.address output\r
1199       format.isbn output\r
1200     }\r
1201     { format.incoll.inproc.crossref output.nonnull\r
1202       format.chapter.pages output\r
1203     }\r
1204   if$\r
1205   format.pages "pages" output.check\r
1206   format.doi output\r
1207   format.note output\r
1208   fin.entry\r
1209 }\r
1210 FUNCTION {inproceedings}\r
1211 { output.bibitem\r
1212   format.authors "author" output.check\r
1213   author format.key output\r
1214   format.date "year" output.check\r
1215   new.sentence\r
1216   date.block\r
1217   add.blank  \r
1218   format.title "title" output.check\r
1219   end.quote.title\r
1220   crossref missing$\r
1221     { format.in.ed.booktitle "booktitle" output.check\r
1222       format.number.series output\r
1223       publisher empty$\r
1224         { format.organization.address output }\r
1225         { organization "organization" bibinfo.check output\r
1226           format.publisher.address output\r
1227         }\r
1228       if$\r
1229       format.isbn output\r
1230     }\r
1231     { format.incoll.inproc.crossref output.nonnull\r
1232     }\r
1233   if$\r
1234   format.pages "pages" output.check\r
1235   format.doi output\r
1236   format.note output\r
1237   fin.entry\r
1238 }\r
1239 FUNCTION {conference} { inproceedings }\r
1240 FUNCTION {manual}\r
1241 { output.bibitem\r
1242   format.authors output\r
1243   author format.key output\r
1244   format.date "year" output.check\r
1245   new.sentence\r
1246   date.block\r
1247   add.blank  \r
1248   format.btitle "title" output.check\r
1249   organization "organization" bibinfo.check output\r
1250   address "address" bibinfo.check output\r
1251   format.edition output\r
1252   format.doi output\r
1253   format.note output\r
1254   fin.entry\r
1255 }\r
1256 \r
1257 FUNCTION {mastersthesis}\r
1258 { output.bibitem\r
1259   format.authors "author" output.check\r
1260   author format.key output\r
1261   format.date "year" output.check\r
1262   new.sentence\r
1263   date.block\r
1264   add.blank\r
1265   format.title "title" output.check\r
1266   add.blank\r
1267   bbl.mthesis format.thesis.type output.nonnull\r
1268   school "school" bibinfo.warn output\r
1269   address "address" bibinfo.check output\r
1270   format.doi output\r
1271   format.note output\r
1272   fin.entry\r
1273 }\r
1274 \r
1275 FUNCTION {misc}\r
1276 { output.bibitem\r
1277   format.authors output\r
1278   author format.key output\r
1279   format.date "year" output.check\r
1280   new.sentence\r
1281   date.block\r
1282   add.blank  \r
1283   format.title output\r
1284   end.quote.title\r
1285   howpublished "howpublished" bibinfo.check output\r
1286   format.doi output\r
1287   format.note output\r
1288   fin.entry\r
1289 }\r
1290 FUNCTION {phdthesis}\r
1291 { output.bibitem\r
1292   format.authors "author" output.check\r
1293   author format.key output\r
1294   format.date "year" output.check\r
1295   new.sentence\r
1296   date.block\r
1297   add.blank  \r
1298   format.title "title" output.check\r
1299   add.blank\r
1300   bbl.phdthesis format.thesis.type output.nonnull\r
1301   school "school" bibinfo.warn output\r
1302   address "address" bibinfo.check output\r
1303   format.doi output\r
1304   format.note output\r
1305   fin.entry\r
1306 }\r
1307 \r
1308 FUNCTION {proceedings}\r
1309 { output.bibitem\r
1310   format.editors output\r
1311   editor format.key output\r
1312   format.date "year" output.check\r
1313   new.sentence\r
1314   date.block\r
1315   add.blank  \r
1316   format.btitle "title" output.check\r
1317   format.bvolume output\r
1318   format.number.series output\r
1319   publisher empty$\r
1320     { format.organization.address output }\r
1321     { organization "organization" bibinfo.check output\r
1322       format.publisher.address output\r
1323     }\r
1324   if$\r
1325   format.isbn output\r
1326   format.doi output\r
1327   format.note output\r
1328   fin.entry\r
1329 }\r
1330 \r
1331 FUNCTION {techreport}\r
1332 { output.bibitem\r
1333   format.authors "author" output.check\r
1334   author format.key output\r
1335   format.date "year" output.check\r
1336   new.sentence\r
1337   date.block\r
1338   add.blank\r
1339   format.title\r
1340   "title" output.check\r
1341   end.quote.title\r
1342   format.tr.number output.nonnull\r
1343   institution "institution" bibinfo.warn output\r
1344   address "address" bibinfo.check output\r
1345   format.doi output\r
1346   format.note output\r
1347   fin.entry\r
1348 }\r
1349 \r
1350 FUNCTION {unpublished}\r
1351 { output.bibitem\r
1352   format.authors "author" output.check\r
1353   author format.key output\r
1354   format.date "year" output.check\r
1355   new.sentence\r
1356   date.block\r
1357   add.blank  \r
1358   format.title "title" output.check\r
1359   end.quote.title\r
1360   format.doi output\r
1361   format.note "note" output.check\r
1362   fin.entry\r
1363 }\r
1364 \r
1365 FUNCTION {default.type} { misc }\r
1366 READ\r
1367 EXECUTE {type.msg}\r
1368 FUNCTION {sortify}\r
1369 { purify$\r
1370   "l" change.case$\r
1371 }\r
1372 INTEGERS { len }\r
1373 FUNCTION {chop.word}\r
1374 { 's :=\r
1375   'len :=\r
1376   s #1 len substring$ =\r
1377     { s len #1 + global.max$ substring$ }\r
1378     's\r
1379   if$\r
1380 }\r
1381 FUNCTION {format.lab.names}\r
1382 { 's :=\r
1383   "" 't :=\r
1384   s #1 "{vv~}{ll}" format.name$\r
1385   s num.names$ duplicate$\r
1386   #2 >\r
1387     { pop$\r
1388       " " * bbl.etal emphasize *\r
1389     }\r
1390     { #2 <\r
1391         'skip$\r
1392         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =\r
1393             {\r
1394               " " * bbl.etal emphasize *\r
1395             }\r
1396             { bbl.and space.word * s #2 "{vv~}{ll}" format.name$\r
1397               * }\r
1398           if$\r
1399         }\r
1400       if$\r
1401     }\r
1402   if$\r
1403 }\r
1404 \r
1405 FUNCTION {author.key.label}\r
1406 { author empty$\r
1407     { key empty$\r
1408         { cite$ #1 #3 substring$ }\r
1409         'key\r
1410       if$\r
1411     }\r
1412     { author format.lab.names }\r
1413   if$\r
1414 }\r
1415 \r
1416 FUNCTION {author.editor.key.label}\r
1417 { author empty$\r
1418     { editor empty$\r
1419         { key empty$\r
1420             { cite$ #1 #3 substring$ }\r
1421             'key\r
1422           if$\r
1423         }\r
1424         { editor format.lab.names }\r
1425       if$\r
1426     }\r
1427     { author format.lab.names }\r
1428   if$\r
1429 }\r
1430 \r
1431 FUNCTION {editor.key.label}\r
1432 { editor empty$\r
1433     { key empty$\r
1434         { cite$ #1 #3 substring$ }\r
1435         'key\r
1436       if$\r
1437     }\r
1438     { editor format.lab.names }\r
1439   if$\r
1440 }\r
1441 \r
1442 FUNCTION {calc.short.authors}\r
1443 { type$ "book" =\r
1444   type$ "inbook" =\r
1445   or\r
1446     'author.editor.key.label\r
1447     { type$ "proceedings" =\r
1448         'editor.key.label\r
1449         'author.key.label\r
1450       if$\r
1451     }\r
1452   if$\r
1453   'short.list :=\r
1454 }\r
1455 \r
1456 FUNCTION {calc.label}\r
1457 { calc.short.authors\r
1458   short.list\r
1459   "("\r
1460   *\r
1461   year duplicate$ empty$\r
1462   short.list key field.or.null = or\r
1463      { pop$ "" }\r
1464      'skip$\r
1465   if$\r
1466   *\r
1467   'label :=\r
1468 }\r
1469 \r
1470 FUNCTION {sort.format.names}\r
1471 { 's :=\r
1472   #1 'nameptr :=\r
1473   ""\r
1474   s num.names$ 'numnames :=\r
1475   numnames 'namesleft :=\r
1476     { namesleft #0 > }\r
1477     { s nameptr\r
1478       "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"\r
1479       format.name$ 't :=\r
1480       nameptr #1 >\r
1481         {\r
1482           "   "  *\r
1483           namesleft #1 = t "others" = and\r
1484             { "zzzzz" * }\r
1485             { t sortify * }\r
1486           if$\r
1487         }\r
1488         { t sortify * }\r
1489       if$\r
1490       nameptr #1 + 'nameptr :=\r
1491       namesleft #1 - 'namesleft :=\r
1492     }\r
1493   while$\r
1494 }\r
1495 \r
1496 FUNCTION {sort.format.title}\r
1497 { 't :=\r
1498   "A " #2\r
1499     "An " #3\r
1500       "The " #4 t chop.word\r
1501     chop.word\r
1502   chop.word\r
1503   sortify\r
1504   #1 global.max$ substring$\r
1505 }\r
1506 FUNCTION {author.sort}\r
1507 { author empty$\r
1508     { key empty$\r
1509         { "to sort, need author or key in " cite$ * warning$\r
1510           ""\r
1511         }\r
1512         { key sortify }\r
1513       if$\r
1514     }\r
1515     { author sort.format.names }\r
1516   if$\r
1517 }\r
1518 FUNCTION {author.editor.sort}\r
1519 { author empty$\r
1520     { editor empty$\r
1521         { key empty$\r
1522             { "to sort, need author, editor, or key in " cite$ * warning$\r
1523               ""\r
1524             }\r
1525             { key sortify }\r
1526           if$\r
1527         }\r
1528         { editor sort.format.names }\r
1529       if$\r
1530     }\r
1531     { author sort.format.names }\r
1532   if$\r
1533 }\r
1534 FUNCTION {editor.sort}\r
1535 { editor empty$\r
1536     { key empty$\r
1537         { "to sort, need editor or key in " cite$ * warning$\r
1538           ""\r
1539         }\r
1540         { key sortify }\r
1541       if$\r
1542     }\r
1543     { editor sort.format.names }\r
1544   if$\r
1545 }\r
1546 FUNCTION {presort}\r
1547 { calc.label\r
1548   label sortify\r
1549   "    "\r
1550   *\r
1551   type$ "book" =\r
1552   type$ "inbook" =\r
1553   or\r
1554     'author.editor.sort\r
1555     { type$ "proceedings" =\r
1556         'editor.sort\r
1557         'author.sort\r
1558       if$\r
1559     }\r
1560   if$\r
1561   #1 entry.max$ substring$\r
1562   'sort.label :=\r
1563   sort.label\r
1564   *\r
1565   "    "\r
1566   *\r
1567   title field.or.null\r
1568   sort.format.title\r
1569   *\r
1570   #1 entry.max$ substring$\r
1571   'sort.key$ :=\r
1572 }\r
1573 \r
1574 ITERATE {presort}\r
1575 SORT\r
1576 STRINGS { last.label next.extra }\r
1577 INTEGERS { last.extra.num number.label }\r
1578 FUNCTION {initialize.extra.label.stuff}\r
1579 { #0 int.to.chr$ 'last.label :=\r
1580   "" 'next.extra :=\r
1581   #0 'last.extra.num :=\r
1582   #0 'number.label :=\r
1583 }\r
1584 FUNCTION {forward.pass}\r
1585 { last.label label =\r
1586     { last.extra.num #1 + 'last.extra.num :=\r
1587       last.extra.num int.to.chr$ 'extra.label :=\r
1588     }\r
1589     { "a" chr.to.int$ 'last.extra.num :=\r
1590       "" 'extra.label :=\r
1591       label 'last.label :=\r
1592     }\r
1593   if$\r
1594   number.label #1 + 'number.label :=\r
1595 }\r
1596 FUNCTION {reverse.pass}\r
1597 { next.extra "b" =\r
1598     { "a" 'extra.label := }\r
1599     'skip$\r
1600   if$\r
1601   extra.label 'next.extra :=\r
1602   extra.label\r
1603   duplicate$ empty$\r
1604     'skip$\r
1605     { "{\natexlab{" swap$ * "}}" * }\r
1606   if$\r
1607   'extra.label :=\r
1608   label extra.label * 'label :=\r
1609 }\r
1610 EXECUTE {initialize.extra.label.stuff}\r
1611 ITERATE {forward.pass}\r
1612 REVERSE {reverse.pass}\r
1613 FUNCTION {bib.sort.order}\r
1614 { sort.label\r
1615   "    "\r
1616   *\r
1617   year field.or.null sortify\r
1618   *\r
1619   "    "\r
1620   *\r
1621   title field.or.null\r
1622   sort.format.title\r
1623   *\r
1624   #1 entry.max$ substring$\r
1625   'sort.key$ :=\r
1626 }\r
1627 ITERATE {bib.sort.order}\r
1628 SORT\r
1629 FUNCTION {begin.bib}\r
1630 { preamble$ empty$\r
1631     'skip$\r
1632     { preamble$ write$ newline$ }\r
1633   if$\r
1634   "\begin{thebibliography}{" number.label int.to.str$ * "}" *\r
1635   write$ newline$\r
1636   "\newcommand{\enquote}[1]{``#1''}"\r
1637   write$ newline$\r
1638   "\providecommand{\natexlab}[1]{#1}"\r
1639   write$ newline$\r
1640   "\providecommand{\url}[1]{\texttt{#1}}"\r
1641   write$ newline$\r
1642   "\providecommand{\urlprefix}{URL }"\r
1643   write$ newline$\r
1644   "\expandafter\ifx\csname urlstyle\endcsname\relax"\r
1645   write$ newline$\r
1646   "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"\r
1647   write$ newline$\r
1648   "  \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"\r
1649   write$ newline$\r
1650 }\r
1651 EXECUTE {begin.bib}\r
1652 EXECUTE {init.state.consts}\r
1653 ITERATE {call.type$}\r
1654 FUNCTION {end.bib}\r
1655 { newline$\r
1656   "\end{thebibliography}" write$ newline$\r
1657 }\r
1658 EXECUTE {end.bib}\r
1659 %% End of customized bst file\r
1660 %%\r
1661 %% End of file `ws-ijbc.bst'.\r