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

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