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

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