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

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