source: altifloat/doc/ocean_modelling/elsarticle-harv.bst @ 187

Last change on this file since 187 was 161, checked in by jbrlod, 9 years ago

add paper latex template

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