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

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