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

UCC git Repository :: git.ucc.asn.au