]> AND Private Git Repository - kahina_paper1.git/blob - model5-names.bst
Logo AND Algorithmique Numérique Distribuée

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