root/applications/doprava/texty/delka_cyklu/Styles/Skripta.bst @ 1395

Revision 1147, 25.7 kB (checked in by jabu, 14 years ago)
Line 
1% BibTeX standard bibliography style `agsm' (one of the harvard family)
2    % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
3    % Copyright (C) 1991, all rights reserved.
4    % Copying of this file is authorized only if either
5    % (1) you make absolutely no changes to your copy, including name, or
6    % (2) if you do make changes, you name it something other than
7    % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, abbrv.bst, agsm.bst,
8        % dcu.bst or kluwer.bst.
9    % This restriction helps ensure that all standard styles are identical.
10    % The file harvard.tex has the documentation for this style.
11
12 % Includes fields ISBN and ISSN by JmR.
13 %
14
15% ACKNOWLEDGEMENT:
16%   This document is a modified version of alpha.bst to which it owes much of
17%   its functionality.
18
19% AUTHOR
20%   Peter Williams, Key Centre for Design Quality, Sydney University
21%   e-mail: peterw@archsci.arch.su.oz.au
22
23ENTRY
24  { address
25    author
26    booktitle
27    chapter
28    edition
29    editor
30    howpublished
31    institution
32    journal
33    key
34    month
35    note
36    number
37    organization
38    pages
39    publisher
40    school
41    series
42    title
43    type
44    URL
45    volume
46    year
47    isbn
48  }
49  { field.used etal.allowed etal.required} %%%XXX change
50  { extra.label sort.label list.year }
51
52INTEGERS { output.state before.all mid.sentence after.sentence after.block }
53
54FUNCTION {init.state.consts}
55{ #0 'before.all :=
56  #1 'mid.sentence :=
57  #2 'after.sentence :=
58  #3 'after.block :=
59}
60
61STRINGS { s t f }
62
63FUNCTION {output.nonnull}
64{ 's :=
65  output.state mid.sentence =
66    { ", " * write$ }
67    { output.state after.block =
68    { add.period$ write$
69      newline$
70      "\newblock " write$
71    }
72    { output.state before.all =
73        'write$
74        { add.period$ " " * write$ }
75      if$
76    }
77      if$
78      mid.sentence 'output.state :=
79    }
80  if$
81  s
82}
83
84FUNCTION {output}
85{ duplicate$ empty$
86    'pop$
87    'output.nonnull
88  if$
89}
90
91FUNCTION {output.check}
92{ 't :=
93  duplicate$ empty$
94    { pop$ "empty " t * " in " * cite$ * warning$ }
95    'output.nonnull
96  if$
97}
98
99FUNCTION {item.check}
100{ 't :=
101  empty$
102    { "empty " t * " in " * cite$ * warning$ }
103    { skip$ }
104  if$
105}
106
107FUNCTION {fin.entry}
108{ add.period$
109  write$
110  newline$
111}
112
113FUNCTION {new.block}
114{ output.state before.all =
115    'skip$
116    { after.block 'output.state := }
117  if$
118}
119
120FUNCTION {not}
121{   { #0 }
122    { #1 }
123  if$
124}
125
126FUNCTION {and}
127{   'skip$
128    { pop$ #0 }
129  if$
130}
131
132FUNCTION {or}
133{   { pop$ #1 }
134    'skip$
135  if$
136}
137
138FUNCTION {field.or.null}
139{ duplicate$ empty$
140    { pop$ "" }
141    'skip$
142  if$
143}
144
145FUNCTION {emphasize}
146{ duplicate$ empty$
147    { pop$ "" }
148    { "{\em " swap$ * "}" * }
149  if$
150}
151
152FUNCTION {embolden}
153{ duplicate$ empty$
154    { pop$ "" }
155    { "{\bf " swap$ * "}" * }
156  if$
157}
158
159FUNCTION {quote}
160{ duplicate$ empty$
161    { pop$ "" }
162    { "`" swap$ * "'" * }
163  if$
164}
165
166FUNCTION {write.url}
167{ URL empty$
168    { skip$ }
169    { "\newline\harvardurl{" URL * "}" * write$ newline$ }
170  if$
171}
172
173INTEGERS { nameptr namesleft numnames }
174
175FUNCTION {format.names}
176{ 's :=
177  'f :=
178  #1 'nameptr :=
179  s num.names$ 'numnames :=
180  numnames 'namesleft :=
181    { namesleft #0 > }
182    { s nameptr f format.name$ 't :=
183      nameptr #1 >
184    { namesleft #1 >
185        { ", " * t * }
186        { t "others" =
187        { " et~al." * }
188        { " \harvardand\ " * t * }
189          if$
190        }
191      if$
192    }
193    't
194      if$
195      nameptr #1 + 'nameptr :=
196      namesleft #1 - 'namesleft :=
197    }
198  while$
199}
200
201FUNCTION {format.authors}
202{ author empty$
203    { "" }
204    { "{vv~}{ll}{, jj}{, f.}" author format.names }
205  if$
206}
207
208FUNCTION {format.editors}
209{ editor empty$
210    { "" }
211    { "{vv~}{ll}{, jj}{, f.}" editor format.names
212      editor num.names$ #1 >
213    { ", eds" * }
214    { ", ed." * }
215      if$
216    }
217  if$
218}
219
220FUNCTION {format.isbn}
221{ isbn empty$
222    { "" }
223    { new.block "ISBN~" isbn * }
224  if$
225}
226
227FUNCTION {format.editors.reverse}
228{ editor empty$
229    { "" }
230    { "{f.~}{vv~}{ll}{, jj}" editor format.names
231      editor num.names$ #1 >
232    { ", eds" * }
233    { ", ed." * }
234      if$
235    }
236  if$
237}
238
239FUNCTION {format.title}
240{ title empty$
241    { "" }
242    { title "t" change.case$ }
243  if$
244}
245
246FUNCTION {n.dashify}
247{ 't :=
248  ""
249    { t empty$ not }
250    { t #1 #1 substring$ "-" =
251    { t #1 #2 substring$ "--" = not
252        { "--" *
253          t #2 global.max$ substring$ 't :=
254        }
255        {   { t #1 #1 substring$ "-" = }
256        { "-" *
257          t #2 global.max$ substring$ 't :=
258        }
259          while$
260        }
261      if$
262    }
263    { t #1 #1 substring$ *
264      t #2 global.max$ substring$ 't :=
265    }
266      if$
267    }
268  while$
269}
270
271FUNCTION {format.btitle}
272{ title emphasize
273}
274
275FUNCTION {tie.or.space.connect}
276{ duplicate$ text.length$ #3 <
277    { "~" }
278    { " " }
279  if$
280  swap$ * *
281}
282
283FUNCTION {either.or.check}
284{ empty$
285    'pop$
286    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
287  if$
288}
289
290FUNCTION {format.bvolume}
291{ volume empty$
292    { "" }
293    { "Vol." volume tie.or.space.connect
294      series empty$
295    'skip$
296    { " of " * series emphasize * }
297      if$
298      "volume and number" number either.or.check
299    }
300  if$
301}
302
303FUNCTION {format.number.series}
304{ volume empty$
305    { number empty$
306    { series field.or.null }
307    { output.state mid.sentence =
308        { "number" }
309        { "Number" }
310      if$
311      number tie.or.space.connect
312      series empty$
313        { "there's a number but no series in " cite$ * warning$ }
314        { " {\em in} " * series quote * }
315      if$
316    }
317      if$
318    }
319    { "" }
320  if$
321}
322
323FUNCTION {format.edition}
324{ edition empty$
325    { "" }
326    { output.state mid.sentence =
327    { edition "l" change.case$ " edn" * }
328    { edition "t" change.case$ " edn" * }
329      if$
330    }
331  if$
332}
333
334INTEGERS { multiresult }
335
336FUNCTION {multi.page.check}
337{ 't :=
338  #0 'multiresult :=
339    { multiresult not
340      t empty$ not
341      and
342    }
343    { t #1 #1 substring$
344      duplicate$ "-" =
345      swap$ duplicate$ "," =
346      swap$ "+" =
347      or or
348    { #1 'multiresult := }
349    { t #2 global.max$ substring$ 't := }
350      if$
351    }
352  while$
353  multiresult
354}
355
356FUNCTION {format.pages}
357{ pages empty$
358    { "" }
359    { pages multi.page.check
360    { "pp.~" pages n.dashify * }
361    { "p.~" pages * }
362      if$
363    }
364  if$
365}
366
367FUNCTION {format.vol.num.pages}
368{ volume embolden field.or.null
369  number empty$
370    'skip$
371    { "(" number * ")" * *
372      volume empty$
373    { "there's a number but no volume in " cite$ * warning$ }
374    'skip$
375      if$
376    }
377  if$
378  pages empty$
379    'skip$
380    { duplicate$ empty$
381    { pop$ format.pages }
382    { ",~" * pages n.dashify * }
383      if$
384    }
385  if$
386}
387
388FUNCTION {format.chapter.pages}
389{ chapter empty$
390    'format.pages
391    { type empty$
392    { "chapter" }
393    { type "l" change.case$ }
394      if$
395      chapter tie.or.space.connect
396      pages empty$
397    'skip$
398    { ", " * format.pages * }
399      if$
400    }
401  if$
402}
403
404FUNCTION {format.in.ed.booktitle}
405{ booktitle empty$
406    { "" }
407    { editor empty$
408    { "{\em in} " booktitle quote * }
409    { "{\em in} " format.editors.reverse * ", " * booktitle quote * }
410      if$
411    }
412  if$
413}
414
415FUNCTION {empty.misc.check}
416{ author empty$ title empty$ howpublished empty$
417  month empty$ year empty$ note empty$
418  and and and and and
419  key empty$ not and
420    { "all relevant fields are empty in " cite$ * warning$ }
421    'skip$
422  if$
423}
424
425FUNCTION {format.thesis.type}
426{ type empty$
427    'skip$
428    { pop$
429      type "t" change.case$
430    }
431  if$
432}
433
434FUNCTION {format.tr.number}
435{ type empty$
436    { "Technical Report" }
437    'type
438  if$
439  number empty$
440    { "t" change.case$ }
441    { number tie.or.space.connect }
442  if$
443}
444
445FUNCTION {format.article.crossref}
446{ key empty$
447    { journal empty$
448    { "need key or journal for " cite$ * " to crossref " * crossref *
449      warning$
450      ""
451    }
452    { "in {\em " journal * "\/} \cite{" * crossref * "}" *}
453      if$
454    }
455    { "{\em in} \citeasnoun{" crossref * "}" * }
456  if$
457 
458}
459
460FUNCTION {format.book.crossref}
461{ volume empty$
462    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
463      "in "
464    }
465    { "Vol." volume tie.or.space.connect
466      " of " *
467    }
468  if$
469  editor empty$
470  editor field.or.null author field.or.null =
471  or
472    { key empty$
473    { series empty$
474        { "need editor, key, or series for " cite$ * " to crossref " *
475          crossref * warning$
476          "" *
477        }
478        { "{\em " * series * "\/} \cite{" * crossref * "}" *}
479      if$
480    }
481    { " \citeasnoun{" * crossref * "}" * }
482      if$
483    }
484    { " \citeasnoun{" * crossref * "}" * }
485  if$
486}
487
488FUNCTION {format.incoll.inproc.crossref}
489{ editor empty$
490  editor field.or.null author field.or.null =
491  or
492    { key empty$
493    { booktitle empty$
494        { "need editor, key, or booktitle for " cite$ * " to crossref " *
495          crossref * warning$
496          ""
497        }
498        { "in {\em " booktitle * "\/}" * " \cite{" * crossref * "}" *}
499      if$
500    }
501    { "{\em in} \citeasnoun{" crossref * "}" * }
502      if$
503    }
504    { "{\em in} \citeasnoun{" crossref * "}" * }
505  if$
506 
507}
508
509INTEGERS { len }
510
511FUNCTION {chop.word}
512{ 's :=
513  'len :=
514  s #1 len substring$ =
515    { s len #1 + global.max$ substring$ }
516    's
517  if$
518}
519
520INTEGERS { ind tsslen }
521
522STRINGS { tss ret rss istr }
523
524FUNCTION {replace.substring}{
525  'rss :=
526  'tss :=
527  'istr :=
528  "" 'ret :=
529  tss text.length$ 'tsslen :=
530  #1 'ind :=
531    { istr ind tsslen substring$ "" = not }
532    { istr ind tsslen substring$ tss =
533        { ret rss * 'ret :=
534          ind tsslen + 'ind :=
535        }
536        { ret istr ind #1 substring$ * 'ret :=
537          ind #1 + 'ind :=
538        }
539      if$
540    }
541  while$
542  ret
543}
544
545FUNCTION {format.lab.names.abbr}
546{ 's :=
547  s num.names$ 'numnames :=
548  numnames #1 >
549    { numnames #2 >
550    { s #1 "{vv~}{ll}" format.name$ " et~al." * }
551    { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
552            { s #1 "{vv~}{ll}" format.name$ " et~al." * }
553        { s #1 "{vv~}{ll}" format.name$ " \harvardand\ " *
554              s #2 "{vv~}{ll}" format.name$ *
555            }
556          if$
557        }
558      if$
559    }
560    { s #1 "{vv~}{ll}" format.name$ }
561  if$
562}
563
564FUNCTION {format.lab.names.full}
565{ 's :=
566  #1 'nameptr :=
567  s num.names$ 'numnames :=
568  numnames 'namesleft :=
569    { namesleft #0 > }
570    { s nameptr "{vv~}{ll}" format.name$ 't :=
571      nameptr #1 >
572    { namesleft #1 >
573        { ", " * t * }
574        { t "others" =
575        { " et~al." * }
576        { " \harvardand\ " * t * }
577          if$
578        }
579      if$
580    }
581    't
582      if$
583      nameptr #1 + 'nameptr :=
584      namesleft #1 - 'namesleft :=
585    }
586  while$
587}
588
589INTEGERS { author.field editor.field organization.field title.field key.field }
590
591FUNCTION {init.field.constants}
592{ #0 'author.field :=
593  #1 'editor.field :=
594  #2 'organization.field :=
595  #3 'title.field :=
596  #4 'key.field :=
597}
598
599FUNCTION {make.list.label}
600{ author.field field.used =
601    { format.authors }
602    { editor.field field.used =
603        { format.editors }
604        { organization.field field.used =
605            { "The " #4 organization chop.word #3 text.prefix$ }
606            { title.field field.used =
607                { format.btitle }
608                { key.field field.used =
609                    { key #3 text.prefix$ }
610                    { "Internal error :001 on " cite$ * " label" * warning$ }
611                  if$
612                }
613              if$
614            }
615          if$
616        }
617      if$
618    }
619  if$
620}
621
622FUNCTION {make.full.label}
623{ author.field field.used =
624    { author format.lab.names.full }
625    { editor.field field.used =
626        { editor format.lab.names.full }
627        { organization.field field.used =
628            { "The " #4 organization chop.word #3 text.prefix$ }
629            { title.field field.used =
630                { format.btitle }
631                { key.field field.used =
632                    { key #3 text.prefix$ }
633                    { "Internal error :001 on " cite$ * " label" * warning$ }
634                  if$
635                }
636              if$
637            }
638          if$
639        }
640      if$
641    }
642  if$
643}
644
645FUNCTION {make.abbr.label} %%%XXX change
646{
647  etal.allowed
648    { author.field field.used =
649        { author format.lab.names.abbr }
650        { editor.field field.used =
651            { editor format.lab.names.abbr }
652            { organization.field field.used =
653                { "The " #4 organization chop.word #3 text.prefix$ }
654                { title.field field.used =
655                    { format.btitle }
656                    { key.field field.used =
657                        { key #3 text.prefix$ }
658                        {"Internal error :001 on " cite$ * " label" * warning$ }
659                      if$
660                    }
661                  if$
662                }
663              if$
664            }
665          if$
666        }
667      if$
668    }
669    { make.full.label }
670  if$
671}
672
673FUNCTION {output.bibitem}
674{ newline$
675  etal.allowed        %%%XXX change
676  etal.required
677  and
678    {
679      "\harvarditem[" write$
680      make.abbr.label write$
681      "]{" write$
682    }
683    {
684      "\harvarditem{" write$
685    }
686  if$
687  make.full.label write$
688  "}{" write$
689  list.year write$
690  "}{" write$
691  cite$ write$
692  "}" write$
693  newline$
694  ""
695  before.all 'output.state :=
696}
697
698FUNCTION {list.label.output}
699{ make.list.label " " * write$
700}
701
702FUNCTION {article}
703{ output.bibitem
704  list.label.output
705  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
706  author "author" item.check
707  title.field field.used =
708    { skip$ }
709    { format.title quote "title" output.check }
710  if$
711  crossref missing$
712    { journal emphasize "journal" duplicate$ item.check
713      " " * format.vol.num.pages * output
714    }
715    { format.article.crossref output.nonnull
716      format.pages output
717    }
718  if$
719  new.block
720  note output
721  format.isbn output
722  fin.entry
723  write.url
724}
725
726FUNCTION {book}
727{ output.bibitem
728  list.label.output
729  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
730  author empty$
731    { editor "author and editor" item.check }
732    { crossref missing$
733    { "author and editor" editor either.or.check }
734    'skip$
735      if$
736    }
737  if$
738  title.field field.used =
739    { skip$ }
740    { format.btitle "title" output.check }
741  if$
742  crossref missing$
743    { format.bvolume output
744      format.number.series output
745      format.edition output
746      publisher "publisher" output.check
747      address output
748    }
749    { format.book.crossref output.nonnull
750      format.edition output
751    }
752  if$
753  new.block
754  note output
755  format.isbn output
756  fin.entry
757  write.url
758}
759
760FUNCTION {booklet}
761{ output.bibitem
762  list.label.output
763  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
764  title.field field.used =
765    { skip$ }
766    { format.title quote "title" output.check }
767  if$
768  howpublished output
769  address output
770  new.block
771  note output
772  fin.entry
773  write.url
774  format.isbn output
775}
776
777FUNCTION {inbook}
778{ output.bibitem
779  list.label.output
780  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
781  author empty$
782    { editor "author and editor" item.check }
783    { crossref missing$
784    { "author and editor" editor either.or.check }
785    'skip$
786      if$
787    }
788  if$
789  title.field field.used =
790    { skip$ }
791    { format.btitle "title" output.check }
792  if$
793  crossref missing$
794    { format.bvolume output
795      format.number.series output
796      format.edition output
797      publisher "publisher" output.check
798      address output
799    }
800    { format.book.crossref output.nonnull
801      format.edition output
802    }
803  if$
804  format.chapter.pages "chapter and pages" output.check
805  new.block
806  note output
807  fin.entry
808  write.url
809  format.isbn output
810}
811
812FUNCTION {incollection}
813{ output.bibitem
814  list.label.output
815  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
816  title.field field.used =
817    { skip$ }
818    { format.title "title" output.check }
819  if$
820  author "author" item.check
821  crossref missing$
822    { format.in.ed.booktitle "booktitle" output.check
823      format.edition output
824      format.bvolume output
825      format.number.series output
826      publisher "publisher" output.check
827      address output
828    }
829    { format.incoll.inproc.crossref output.nonnull
830    }
831  if$
832  format.chapter.pages output
833  new.block
834  note output
835  fin.entry
836  write.url
837}
838
839FUNCTION {inproceedings}
840{ output.bibitem
841  list.label.output
842  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
843  title.field field.used =
844    { skip$ }
845    { format.title "title" output.check }
846  if$
847  author "author" item.check
848  crossref missing$
849    { format.in.ed.booktitle "booktitle" output.check
850      format.bvolume output
851      format.number.series output
852      address empty$
853    { organization output
854      publisher output
855    }
856    { organization output
857      publisher output
858          address output.nonnull
859    }
860      if$
861    }
862    { format.incoll.inproc.crossref output.nonnull
863    }
864  if$
865  format.pages output
866  new.block
867  note output
868  fin.entry
869  write.url
870  format.isbn output
871}
872
873FUNCTION {conference} { inproceedings }
874
875FUNCTION {manual}
876{ output.bibitem
877  list.label.output
878  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
879  title.field field.used =
880    { skip$ }
881    { format.btitle "title" output.check }
882  if$
883  format.edition output
884  author empty$
885    { organization empty$
886    { address output }
887    'skip$
888      if$
889    }
890    { organization output
891      address output
892    }
893  if$
894  new.block
895  note output
896  fin.entry
897  write.url
898}
899
900FUNCTION {mastersthesis}
901{ output.bibitem
902  list.label.output
903  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
904  author "author" item.check
905  title.field field.used =
906    { skip$ }
907    { format.title "title" output.check }
908  if$
909  "Master's thesis" format.thesis.type output.nonnull
910  school "school" output.check
911  address output
912  new.block
913  note output
914  fin.entry
915  write.url
916}
917
918FUNCTION {misc}
919{ output.bibitem
920  list.label.output
921  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
922  title.field field.used =
923    { skip$ }
924    { format.title quote output }
925  if$
926  howpublished output
927  new.block
928  note output
929  fin.entry
930  write.url
931  empty.misc.check
932}
933
934FUNCTION {phdthesis}
935{ output.bibitem
936  list.label.output
937  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
938  author "author" item.check
939  title.field field.used =
940    { skip$ }
941    { title "title" output.check }
942  if$
943  "PhD thesis" format.thesis.type output.nonnull
944  school "school" output.check
945  address output
946  new.block
947  note output
948  fin.entry
949  write.url
950}
951
952FUNCTION {proceedings}
953{ output.bibitem
954  list.label.output
955  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
956  title.field field.used =
957    { skip$ }
958    { format.btitle "title" output.check }
959  if$
960  format.bvolume output
961  format.number.series output
962  address empty$
963    { editor empty$
964    { skip$ }
965    { organization output
966    }
967      if$
968      publisher output
969    }
970    { editor empty$
971    'skip$
972    { organization output }
973      if$
974      publisher output
975      address output.nonnull
976    }
977  if$
978  new.block
979  note output
980  fin.entry
981  write.url
982  format.isbn output
983}
984
985FUNCTION {techreport}
986{ output.bibitem
987  list.label.output
988  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
989  author "author" item.check
990  title.field field.used =
991    { skip$ }
992    { format.title "title" output.check }
993  if$
994  format.tr.number output.nonnull
995  institution "institution" output.check
996  address output
997  new.block
998  note output
999  fin.entry
1000  write.url
1001}
1002
1003FUNCTION {unpublished}
1004{ output.bibitem
1005  list.label.output
1006  " \harvardyearleft " list.year * "\harvardyearright " * output.nonnull
1007  author "author" item.check
1008  title.field field.used =
1009    { skip$ }
1010    { format.title "title" output.check }
1011  if$
1012  new.block
1013  note "note" output.check
1014  fin.entry
1015  write.url
1016}
1017
1018FUNCTION {default.type} { misc }
1019
1020MACRO {jan} {"January"}
1021
1022MACRO {feb} {"February"}
1023
1024MACRO {mar} {"March"}
1025
1026MACRO {apr} {"April"}
1027
1028MACRO {may} {"May"}
1029
1030MACRO {jun} {"June"}
1031
1032MACRO {jul} {"July"}
1033
1034MACRO {aug} {"August"}
1035
1036MACRO {sep} {"September"}
1037
1038MACRO {oct} {"October"}
1039
1040MACRO {nov} {"November"}
1041
1042MACRO {dec} {"December"}
1043
1044MACRO {acmcs} {"ACM Computing Surveys"}
1045
1046MACRO {acta} {"Acta Informatica"}
1047
1048MACRO {cacm} {"Communications of the ACM"}
1049
1050MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1051
1052MACRO {ibmsj} {"IBM Systems Journal"}
1053
1054MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1055
1056MACRO {ieeetc} {"IEEE Transactions on Computers"}
1057
1058MACRO {ieeetcad}
1059 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1060
1061MACRO {ipl} {"Information Processing Letters"}
1062
1063MACRO {jacm} {"Journal of the ACM"}
1064
1065MACRO {jcss} {"Journal of Computer and System Sciences"}
1066
1067MACRO {scp} {"Science of Computer Programming"}
1068
1069MACRO {sicomp} {"SIAM Journal on Computing"}
1070
1071MACRO {tocs} {"ACM Transactions on Computer Systems"}
1072
1073MACRO {tods} {"ACM Transactions on Database Systems"}
1074
1075MACRO {tog} {"ACM Transactions on Graphics"}
1076
1077MACRO {toms} {"ACM Transactions on Mathematical Software"}
1078
1079MACRO {toois} {"ACM Transactions on Office Information Systems"}
1080
1081MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1082
1083MACRO {tcs} {"Theoretical Computer Science"}
1084
1085READ
1086
1087EXECUTE {init.field.constants}
1088
1089FUNCTION {sortify}
1090{ purify$
1091  "l" change.case$
1092}
1093
1094FUNCTION {sortify.names}
1095{ " \harvardand\ " " " replace.substring
1096  " et~al." " zzz" replace.substring
1097  sortify
1098}
1099
1100FUNCTION {author.key.label}
1101{ author empty$
1102    { key empty$
1103    { title.field 'field.used := }
1104    { key.field 'field.used := }
1105      if$
1106    }
1107    { author.field 'field.used := }
1108  if$
1109}
1110
1111FUNCTION {author.editor.key.label}
1112{ author empty$
1113    { editor empty$
1114    { key empty$
1115        { title.field 'field.used := }
1116        { key.field 'field.used := }
1117      if$
1118    }
1119    { editor.field 'field.used := }
1120      if$
1121    }
1122    { author.field 'field.used := }
1123  if$
1124}
1125
1126FUNCTION {author.key.organization.label}
1127{ author empty$
1128    { key empty$
1129    { organization empty$
1130        { title.field 'field.used := }
1131        { organization.field 'field.used := }
1132      if$
1133    }
1134    { key.field 'field.used := }
1135      if$
1136    }
1137    { author.field 'field.used := }
1138  if$
1139}
1140
1141FUNCTION {editor.key.organization.label}
1142{ editor empty$
1143    { key empty$
1144    { organization empty$
1145        { title.field 'field.used := }
1146        { organization.field 'field.used := }
1147      if$
1148    }
1149    { key.field 'field.used := }
1150      if$
1151    }
1152    { editor.field 'field.used := }
1153  if$
1154}
1155
1156FUNCTION {sort.format.title}
1157{ 't :=
1158  "A " #2
1159    "An " #3
1160      "The " #4 t chop.word
1161    chop.word
1162  chop.word
1163  sortify
1164  #1 global.max$ substring$
1165}
1166
1167FUNCTION {calc.label} %%%XXX change
1168{ make.abbr.label
1169  title.field field.used =
1170    { sort.format.title }
1171    { sortify.names }
1172  if$
1173  year field.or.null purify$ #-1 #4 substring$ sortify
1174  *
1175  'sort.label :=
1176}
1177
1178FUNCTION {preliminaries} %%%XXX change
1179{ type$ "book" =
1180  type$ "inbook" =
1181  or
1182    'author.editor.key.label
1183    { type$ "proceedings" =
1184    'editor.key.organization.label
1185    { type$ "manual" =
1186        'author.key.organization.label
1187        'author.key.label
1188      if$
1189    }
1190      if$
1191    }
1192  if$
1193  author.field field.used = %%%XXX change
1194    {
1195      author num.names$ #2 >
1196        { #1 }
1197        { #0 }
1198      if$
1199      'etal.required :=
1200    }
1201    {
1202      editor.field field.used =
1203        {
1204          editor num.names$ #2 >
1205            { #1 }
1206            { #0 }
1207          if$
1208        }
1209        { #0 }
1210      if$
1211      'etal.required :=
1212    }
1213  if$
1214  #1 'etal.allowed :=
1215}
1216
1217FUNCTION {first.presort}
1218{ calc.label
1219  sort.label
1220  title.field field.used =
1221    { skip$ }
1222    { "    "
1223      *
1224      make.list.label sortify.names
1225      *
1226      "    "
1227      *
1228      title field.or.null
1229      sort.format.title
1230      *
1231    }
1232  if$
1233  #1 entry.max$ substring$
1234  'sort.key$ :=
1235}
1236
1237ITERATE {preliminaries}
1238
1239ITERATE {first.presort}
1240
1241SORT
1242
1243STRINGS { last.sort.label next.extra last.full.label}
1244
1245INTEGERS { last.extra.num last.etal.allowed}
1246
1247FUNCTION {initialize.confusion}
1248{ #0 int.to.chr$ 'last.sort.label :=
1249  #0 int.to.chr$ 'last.full.label :=
1250  #1 'last.etal.allowed :=
1251}
1252
1253FUNCTION {confusion.pass}
1254{ last.sort.label sort.label =
1255    { last.etal.allowed
1256        { last.full.label make.full.label sortify.names =
1257            { skip$ }
1258            { #0 'etal.allowed :=
1259              #0 'last.etal.allowed :=
1260            }
1261          if$
1262        }
1263        { #0 'etal.allowed := }
1264      if$
1265    }
1266    { sort.label 'last.sort.label :=
1267      make.full.label sortify.names 'last.full.label :=
1268      #1 'last.etal.allowed :=
1269    }
1270  if$
1271}
1272
1273EXECUTE {initialize.confusion}
1274
1275ITERATE {confusion.pass}
1276
1277EXECUTE {initialize.confusion}
1278
1279REVERSE {confusion.pass}
1280
1281FUNCTION {initialize.last.extra.num}
1282{ #0 int.to.chr$ 'last.sort.label :=
1283  "" 'next.extra :=
1284  #0 'last.extra.num :=
1285}
1286
1287FUNCTION {forward.pass}
1288{ last.sort.label sort.label =
1289    { last.extra.num #1 + 'last.extra.num :=
1290      last.extra.num int.to.chr$ 'extra.label :=
1291    }
1292    { "a" chr.to.int$ 'last.extra.num :=
1293      "" 'extra.label :=
1294      sort.label 'last.sort.label :=
1295    }
1296  if$
1297}
1298
1299FUNCTION {reverse.pass}
1300{ next.extra "b" =
1301    { "a" 'extra.label := }
1302    'skip$
1303  if$
1304  year empty$
1305    { "n.d." extra.label emphasize * 'list.year := }
1306    { year extra.label emphasize * 'list.year := }
1307  if$
1308  extra.label 'next.extra :=
1309}
1310
1311ITERATE {first.presort}
1312
1313SORT
1314
1315EXECUTE {initialize.last.extra.num}
1316
1317ITERATE {forward.pass}
1318
1319REVERSE {reverse.pass}
1320
1321FUNCTION {second.presort}
1322{ make.list.label
1323  title.field field.used =
1324    { sort.format.title }
1325    { sortify.names }
1326  if$
1327  "    "
1328  *
1329  list.year field.or.null sortify
1330  *
1331  "    "
1332  *
1333  title.field field.used =
1334    { skip$ }
1335    { title field.or.null
1336      sort.format.title
1337      *
1338    }
1339  if$
1340  #1 entry.max$ substring$
1341  'sort.key$ :=
1342}
1343
1344ITERATE {second.presort}
1345
1346SORT
1347
1348FUNCTION {begin.bib}
1349{ preamble$ empty$
1350    'skip$
1351    { "\harvardpreambledefs{%" write$ newline$
1352      preamble$ write$ "}" write$ newline$
1353      "\harvardpreambletext{%" write$ newline$
1354      preamble$ write$ "}" write$ newline$ }
1355  if$
1356  "\begin{thebibliography}{xx}" write$ newline$
1357}
1358
1359EXECUTE {begin.bib}
1360
1361EXECUTE {init.state.consts}
1362
1363ITERATE {call.type$}
1364
1365FUNCTION {end.bib}
1366{ newline$
1367  "\end{thebibliography}" write$ newline$
1368}
1369
1370EXECUTE {end.bib}
Note: See TracBrowser for help on using the browser.