first comp techniques
[lectures/latex.git] / physics_compact / bib.bst
1 %%h-physrev3.bst
2 %%Modified to avoid extra comma at end of citations
3 %%h-physrev2.bst
4 %%Jonathan Flynn's h-physrev.bst modified to allow citation information
5 %%for SPIRES processing by Heath O'Connell following suggestions by
6 %%Jacques Distler.
7
8 ENTRY
9 { address
10 eprint
11 author
12 booktitle
13 chapter
14 collaboration
15 SLACcitation
16 edition
17 editor
18 howpublished
19 institution
20 journal
21 key
22 month
23 note
24 number
25 organization
26 pages
27 publisher
28 school
29 series
30 title
31 type
32 volume
33 year
34 }
35 {}
36 { label }
37 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
38 FUNCTION {init.state.consts}
39 { #0 'before.all :=
40 #1 'mid.sentence :=
41 #2 'after.sentence :=
42 #3 'after.block :=
43 }
44 STRINGS { s t }
45 FUNCTION {output.nonnull}
46 { 's :=
47 output.state mid.sentence =
48 { ", " * write$ }
49 { output.state after.block =
50 { "," * write$
51 newline$
52 "\newblock " write$
53 }
54 { output.state before.all =
55 'write$
56 { add.period$ " " * write$ }
57 if$
58 }
59 if$
60 mid.sentence 'output.state :=
61 }
62 if$
63 s
64 }
65 FUNCTION {output}
66 { duplicate$ empty$
67 'pop$
68 'output.nonnull
69 if$
70 }
71 FUNCTION {output.check}
72 { 't :=
73 duplicate$ empty$
74 { pop$ "empty " t * " in " * cite$ * warning$ }
75 'output.nonnull
76 if$
77 }
78 FUNCTION {output.bibitem}
79 { newline$
80 "\bibitem{" write$
81 cite$ write$
82 "}" write$
83 newline$
84 ""
85 before.all 'output.state :=
86 }
87 FUNCTION {fin.entry}
88 { add.period$
89 write$
90 % modified to add SLACcitation field if present
91 SLACcitation empty$
92   'skip$
93   { newline$ SLACcitation write$ }
94   if$
95 % end of modification
96 newline$
97 }
98 FUNCTION {new.block}
99 { output.state before.all =
100 'skip$
101 { after.block 'output.state := }
102 if$
103 }
104 FUNCTION {new.sentence}
105 { skip$
106 }
107 FUNCTION {not}
108 {   { #0 }
109 { #1 }
110 if$
111 }
112 FUNCTION {and}
113 {   'skip$
114 { pop$ #0 }
115 if$
116 }
117 FUNCTION {or}
118 {   { pop$ #1 }
119 'skip$
120 if$
121 }
122 FUNCTION {new.block.checka}
123 { empty$
124 'skip$
125 'new.block
126 if$
127 }
128 FUNCTION {new.block.checkb}
129 { empty$
130 swap$ empty$
131 and
132 'skip$
133 'new.block
134 if$
135 }
136 FUNCTION {new.sentence.checka}
137 { empty$
138 'skip$
139 'new.sentence
140 if$
141 }
142 FUNCTION {new.sentence.checkb}
143 { empty$
144 swap$ empty$
145 and
146 'skip$
147 'new.sentence
148 if$
149 }
150 FUNCTION {field.or.null}
151 { duplicate$ empty$
152 { pop$ "" }
153 'skip$
154 if$
155 }
156 FUNCTION {emphasize}
157 { duplicate$ empty$
158 { pop$ "" }
159 { "{\em " swap$ * "}" * }
160 if$
161 }
162 FUNCTION {embolden}
163 { duplicate$ empty$
164 { pop$ "" }
165 { "{\bf " swap$ * "}" * }
166 if$
167 }
168 FUNCTION {paren}
169 { duplicate$ empty$
170 { pop$ "" }
171 { "(" swap$ * ")" * }
172 if$
173 }
174 INTEGERS { nameptr namesleft numnames }
175 INTEGERS { etal }
176 FUNCTION {format.names}
177 { 's :=
178 #1 'nameptr :=
179 s num.names$ 'numnames :=
180 numnames #15 >
181 s numnames "{ll}" format.name$ "others" = numnames #1 > and
182 or 'etal :=
183 etal
184 { #1 #1 + 'namesleft := }
185 { numnames 'namesleft := }
186 if$
187 { namesleft #0 > }
188 { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
189 nameptr #1 >
190 { namesleft #1 >
191 { ", " * t * }
192 { nameptr #2 >
193 { "," * }
194 'skip$
195 if$
196 t "others" =
197 etal or
198 { " {\em et~al.}" * }
199 { " and " * t * }
200 if$
201 }
202 if$
203 }
204 't
205 if$
206 nameptr #1 + 'nameptr :=
207 namesleft #1 - 'namesleft :=
208 }
209 while$
210 }
211 FUNCTION {format.authors}
212 { author empty$
213 { "" }
214 { author format.names }
215 if$
216 }
217 FUNCTION {format.editors}
218 { editor empty$
219 { "" }
220 { editor format.names
221 editor num.names$ #1 >
222 { ", editors" * }
223 { ", editor" * }
224 if$
225 }
226 if$
227 }
228 FUNCTION {format.edited}
229 { editor empty$
230 { "" }
231 { "edited by " editor format.names * }
232 if$
233 }
234 FUNCTION {format.title}
235 { title empty$
236 { "" }
237 { title "t" change.case$ }
238 if$
239 }
240 FUNCTION {n.dashify}
241 { 't :=
242 ""
243 { t empty$ not }
244 { t #1 #1 substring$ "-" =
245 { t #1 #2 substring$ "--" = not
246 { "--" *
247 t #2 global.max$ substring$ 't :=
248 }
249 {   { t #1 #1 substring$ "-" = }
250 { "-" *
251 t #2 global.max$ substring$ 't :=
252 }
253 while$
254 }
255 if$
256 }
257 { t #1 #1 substring$ *
258 t #2 global.max$ substring$ 't :=
259 }
260 if$
261 }
262 while$
263 }
264 FUNCTION {first.page}
265 { 't :=
266 ""
267 {  t empty$ not t #1 #1 substring$ "-" = not and }
268 { t #1 #1 substring$ *
269 t #2 global.max$ substring$ 't :=
270 }
271 while$
272 }
273 FUNCTION {format.date}
274 { year empty$
275 { "" }
276 'year
277 if$
278 }
279 %FUNCTION {format.SLACcitation}
280 %{ SLACcitation empty$
281 %  {""}
282 %  { SLACcitation }
283 %  if$
284 %}
285 FUNCTION {format.btitle}
286 { title emphasize
287 }
288 FUNCTION {tie.or.space.connect}
289 { duplicate$ text.length$ #3 <
290 { "~" }
291 { " " }
292 if$
293 swap$ * *
294 }
295 FUNCTION {either.or.check}
296 { empty$
297 'pop$
298 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
299 if$
300 }
301 FUNCTION {format.bvolume}
302 { volume empty$
303 { "" }
304 { series empty$
305 'skip$
306 { ", " series * }
307 if$
308 " Vol." volume tie.or.space.connect *
309 "volume and number" number either.or.check
310 }
311 if$
312 }
313 FUNCTION {format.zvolume}
314 { volume empty$
315 { "" }
316 { series empty$
317 'skip$
318 { "" series * }
319 if$
320 " Vol." volume tie.or.space.connect *
321 "volume and number" number either.or.check
322 }
323 if$
324 }
325 FUNCTION {format.number.series}
326 { volume empty$
327 { number empty$
328 { series field.or.null }
329 {  series empty$
330 { "there's a number but no series in " cite$ * warning$ }
331 { ", " series * }
332 if$
333 " No. " number tie.or.space.connect *
334 }
335 if$
336 }
337 { "" }
338 if$
339 }
340 FUNCTION {format.edition}
341 { edition empty$
342 { "" }
343 { output.state mid.sentence =
344 { ", " edition "l" change.case$ *  }
345 { ", " edition "t" change.case$ *  }
346 if$
347 " ed." *
348 }
349 if$
350 }
351 INTEGERS { multiresult }
352 FUNCTION {multi.page.check}
353 { 't :=
354 #0 'multiresult :=
355 { multiresult not
356 t empty$ not
357 and
358 }
359 { t #1 #1 substring$
360 duplicate$ "-" =
361 swap$ duplicate$ "," =
362 swap$ "+" =
363 or or
364 { #1 'multiresult := }
365 { t #2 global.max$ substring$ 't := }
366 if$
367 }
368 while$
369 multiresult
370 }
371 FUNCTION {format.pages}
372 { pages empty$
373 { "" }
374 { pages multi.page.check
375 { "pp." pages n.dashify tie.or.space.connect }
376 { "p." pages tie.or.space.connect }
377 if$
378 }
379 if$
380 }
381 FUNCTION {format.pages.a}
382 { pages empty$
383 { "" }
384 { "p." pages first.page tie.or.space.connect }
385 if$
386 }
387 FUNCTION {format.vol.num.pages}
388 { volume field.or.null embolden
389 " " swap$ * *
390 pages empty$
391 'skip$
392 { duplicate$ empty$
393 { pop$ format.pages.a }
394 { ", " * pages first.page * }
395 if$
396 }
397 if$
398 }
399 FUNCTION {format.chapter.pages}
400 { chapter empty$
401 'format.pages
402 { type empty$
403 { "chap." }
404 { type "l" change.case$ }
405 if$
406 chapter tie.or.space.connect
407 pages empty$
408 'skip$
409 { ", " * format.pages * }
410 if$
411 }
412 if$
413 }
414 FUNCTION {format.pub.addr.date}
415 { publisher empty$
416 { "" "empty publisher in " cite$ * warning$ }
417 { publisher
418 address empty$
419 'skip$
420 { ", " * address * }
421 if$
422 }
423 if$
424 year empty$
425 { "empty year in " cite$ * warning$ }
426 { ", " * year * }
427 if$
428 paren " " swap$ *
429 }
430 FUNCTION {format.book.entry}
431 { format.btitle
432 format.bvolume *
433 format.number.series *
434 format.edition *
435 format.pub.addr.date *
436 }
437 FUNCTION {format.inbook.entry}
438 { format.book.entry
439 ", " *
440 format.chapter.pages *
441 }
442 FUNCTION {format.in.ed.booktitle}
443 { booktitle empty$
444 { "" }
445 { editor empty$
446 { "in " booktitle emphasize * }
447 { "in " booktitle emphasize * ", " * format.edited * }
448 if$
449 }
450 if$
451 }
452 FUNCTION {empty.misc.check}
453 { author empty$ title empty$ howpublished empty$
454 month empty$ year empty$ note empty$
455 and and and and and
456 { "all relevant fields are empty in " cite$ * warning$ }
457 'skip$
458 if$
459 }
460 FUNCTION {format.thesis.type}
461 { type empty$
462 'skip$
463 { pop$
464 type "t" change.case$
465 }
466 if$
467 }
468 FUNCTION {format.inst.tr.num.date}
469 { institution empty$
470 { "" "empty institution in " cite$ * warning$ }
471 { institution }
472 if$
473 " Report No." *
474 number empty$
475 { "" }
476 { number tie.or.space.connect }
477 if$
478 year empty$
479 { "empty year in " cite$ * warning$ }
480 { ", " * year * " (unpublished)" * }
481 if$
482 }
483 FUNCTION {format.article.crossref}
484 { key empty$
485 { journal empty$
486 { "need key or journal for " cite$ * " to crossref " * crossref *
487 warning$
488 ""
489 }
490 { "In " journal * }
491 if$
492 }
493 { "In " key * }
494 if$
495 " \cite{" * crossref * "}" *
496 }
497 FUNCTION {format.crossref.editor}
498 { editor #1 "{vv~}{ll}" format.name$
499 editor num.names$ duplicate$
500 #2 >
501 { pop$ " {\em et~al.}" * }
502 { #2 <
503 'skip$
504 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
505 { " {\em et~al.}" * }
506 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
507 if$
508 }
509 if$
510 }
511 if$
512 }
513 FUNCTION {format.book.crossref}
514 { volume empty$
515 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
516 "In "
517 }
518 { "Volume" volume tie.or.space.connect
519 " of " *
520 }
521 if$
522 editor empty$
523 editor field.or.null author field.or.null =
524 or
525 { key empty$
526 { series empty$
527 { "need editor, key, or series for " cite$ * " to crossref " *
528 crossref * warning$
529 "" *
530 }
531 { "{\em " * series * "\/}" * }
532 if$
533 }
534 { key * }
535 if$
536 }
537 { format.crossref.editor * }
538 if$
539 " \cite{" * crossref * "}" *
540 }
541 FUNCTION {format.incoll.inproc.crossref}
542 { editor empty$
543 editor field.or.null author field.or.null =
544 or
545 { key empty$
546 { booktitle empty$
547 { "need editor, key, or booktitle for " cite$ * " to crossref " *
548 crossref * warning$
549 ""
550 }
551 { "In {\em " booktitle * "\/}" * }
552 if$
553 }
554 { "In " key * }
555 if$
556 }
557 { "In " format.crossref.editor * }
558 if$
559 " \cite{" * crossref * "}" *
560 }
561 FUNCTION {article}
562 { output.bibitem
563 collaboration output
564 format.authors "author" output.check
565 new.block
566 crossref missing$
567 { journal field.or.null
568 format.vol.num.pages 
569 format.date empty$
570 'skip$
571 { duplicate$ empty$
572 { pop$ format.date paren }
573 { " " * format.date paren * }
574 if$
575 }
576 if$
577 output
578 }
579 { format.article.crossref output.nonnull
580 format.pages output
581 }
582 if$
583 %eprint output
584 new.block
585 %note output
586 %format.SLACcitation output
587 fin.entry
588 }
589 FUNCTION {book}
590 { output.bibitem
591 collaboration output
592 author empty$
593 { format.editors "author and editor" output.check }
594 { format.authors output.nonnull
595 crossref missing$
596 { "author and editor" editor either.or.check }
597 'skip$
598 if$
599 }
600 if$
601 new.block
602 crossref missing$
603 { format.book.entry output }
604 { new.block
605 format.book.crossref output.nonnull
606 }
607 if$    
608 eprint output
609 new.block
610 note output
611 %format.SLACcitation output
612 fin.entry
613 }
614 FUNCTION {booklet}
615 { output.bibitem
616 collaboration output
617 format.authors output
618 new.block
619 format.title "title" output.check
620 howpublished address new.block.checkb
621 howpublished output
622 address output
623 format.date output
624 eprint output
625 new.block
626 note output
627 %format.SLACcitation output
628 fin.entry
629 }
630 FUNCTION {inbook}
631 { output.bibitem
632 collaboration output
633 author empty$
634 { format.editors "author and editor" output.check }
635 { format.authors output.nonnull
636 crossref missing$
637 { "author and editor" editor either.or.check }
638 'skip$
639 if$
640 }
641 if$
642 new.block
643 crossref missing$
644 { format.inbook.entry output }
645 { format.chapter.pages "chapter and pages" output.check
646 new.block
647 format.book.crossref output.nonnull
648 }
649 if$
650 eprint output
651 new.block
652 note output
653 %format.SLACcitation output
654 fin.entry
655 }
656 FUNCTION {incollection}
657 { output.bibitem
658 collaboration output
659 format.authors "author" output.check
660 new.block
661 format.title "title" output.check
662 new.block
663 crossref missing$
664 %{ format.in.ed.booktitle "booktitle" output.check
665 { format.zvolume output
666 format.number.series output
667 format.chapter.pages output
668 new.sentence
669 publisher "publisher" output.check
670 address output
671 format.edition output
672 format.date "year" output.check
673 }
674 { format.incoll.inproc.crossref output.nonnull
675 format.chapter.pages output
676 }
677 if$
678 eprint output
679 new.block
680 note output
681 %format.SLACcitation output
682 fin.entry
683 }
684 FUNCTION {inproceedings}
685 { output.bibitem
686 collaboration output
687 format.authors "author" output.check
688 %new.block
689 %format.title "title" output.check
690 new.block
691 crossref missing$
692 { format.in.ed.booktitle "booktitle" output.check
693 format.bvolume output
694 format.number.series output
695 format.pages output
696 address empty$
697 { organization publisher new.sentence.checkb
698 organization output
699 publisher output
700 format.date "year" output.check
701 }
702 { address output.nonnull
703 format.date "year" output.check
704 new.sentence
705 organization output
706 publisher output
707 }
708 if$
709 }
710 { format.incoll.inproc.crossref output.nonnull
711 format.pages output
712 }
713 if$
714 eprint output
715 new.block
716 note output
717 %format.SLACcitation output
718 fin.entry
719 }
720 FUNCTION {conference} { inproceedings }
721 FUNCTION {manual}
722 { output.bibitem
723 collaboration output
724 author empty$
725 { organization empty$
726 'skip$
727 { organization output.nonnull
728 address output
729 }
730 if$
731 }
732 { format.authors output.nonnull }
733 if$
734 new.block
735 format.btitle "title" output.check
736 author empty$
737 { organization empty$
738 { address new.block.checka
739 address output
740 }
741 'skip$
742 if$
743 }
744 { organization address new.block.checkb
745 organization output
746 address output
747 }
748 if$
749 format.edition output
750 format.date output
751 eprint output
752 new.block
753 note output
754 fin.entry
755 }
756 FUNCTION {mastersthesis}
757 { output.bibitem
758 format.authors "author" output.check
759 new.block
760 format.title "title" output.check
761 new.block
762 "Master's thesis" format.thesis.type output.nonnull
763 school "school" output.check
764 address output
765 format.date "year" output.check
766 eprint output
767 new.block
768 note output
769 fin.entry
770 }
771 FUNCTION {misc}
772 { output.bibitem
773 collaboration output
774 format.authors output
775 title howpublished new.block.checkb
776 format.title output
777 howpublished new.block.checka
778 howpublished output
779 format.date output
780 eprint output
781 new.block
782 note output
783 fin.entry
784 empty.misc.check
785 }
786 FUNCTION {phdthesis}
787 { output.bibitem
788 format.authors "author" output.check
789 new.block
790 format.btitle "title" output.check
791 new.block
792 "PhD thesis" format.thesis.type output.nonnull
793 school "school" output.check
794 address output
795 format.date "year" output.check
796 eprint output
797 new.block
798 note output
799 %format.SLACcitation output
800 fin.entry
801 }
802 FUNCTION {proceedings}
803 { output.bibitem
804 collaboration output
805 editor empty$
806 { organization output }
807 { format.editors output.nonnull }
808 if$
809 new.block
810 format.btitle "title" output.check
811 format.bvolume output
812 format.number.series output
813 address empty$
814 { editor empty$
815 { publisher new.sentence.checka }
816 { organization publisher new.sentence.checkb
817 organization output
818 }
819 if$
820 publisher output
821 format.date "year" output.check
822 }
823 { address output.nonnull
824 format.date "year" output.check
825 new.sentence
826 editor empty$
827 'skip$
828 { organization output }
829 if$
830 publisher output
831 }
832 if$
833 eprint output
834 new.block
835 note output
836 %format.SLACcitation output
837 fin.entry
838 }
839 FUNCTION {techreport}
840 { output.bibitem
841 collaboration output
842 format.authors "author" output.check
843 new.block
844 format.inst.tr.num.date output.nonnull
845 eprint output
846 new.block
847 note output
848 fin.entry
849 }
850 FUNCTION {unpublished}
851 { output.bibitem
852 collaboration output
853 format.authors "author" output.check
854 new.block
855 format.title "title" output.check
856 new.block
857 note "note" output.check
858 format.date output
859 %format.SLACcitation output
860 fin.entry
861 }
862 FUNCTION {default.type} { misc }
863 MACRO {jan} {"Jan."}
864 MACRO {feb} {"Feb."}
865 MACRO {mar} {"Mar."}
866 MACRO {apr} {"Apr."}
867 MACRO {may} {"May"}
868 MACRO {jun} {"June"}
869 MACRO {jul} {"July"}
870 MACRO {aug} {"Aug."}
871 MACRO {sep} {"Sept."}
872 MACRO {oct} {"Oct."}
873 MACRO {nov} {"Nov."}
874 MACRO {dec} {"Dec."}
875 MACRO {acmcs} {"ACM Comput. Surv."}
876 MACRO {acta} {"Acta Inf."}
877 MACRO {cacm} {"Commun. ACM"}
878 MACRO {ibmjrd} {"IBM J. Res. Dev."}
879 MACRO {ibmsj} {"IBM Syst.~J."}
880 MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
881 MACRO {ieeetc} {"IEEE Trans. Comput."}
882 MACRO {ieeetcad}
883 {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
884 MACRO {ipl} {"Inf. Process. Lett."}
885 MACRO {jacm} {"J.~ACM"}
886 MACRO {jcss} {"J.~Comput. Syst. Sci."}
887 MACRO {scp} {"Sci. Comput. Programming"}
888 MACRO {sicomp} {"SIAM J. Comput."}
889 MACRO {tocs} {"ACM Trans. Comput. Syst."}
890 MACRO {tods} {"ACM Trans. Database Syst."}
891 MACRO {tog} {"ACM Trans. Gr."}
892 MACRO {toms} {"ACM Trans. Math. Softw."}
893 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
894 MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
895 MACRO {tcs} {"Theoretical Comput. Sci."}
896 MACRO {advp} {"Adv. Phys."}
897 MACRO {ajp} {"Am. J. Phys."}
898 MACRO {ao} {"Appl. Opt."}
899 MACRO {apj} {"Astrophys. J."}
900 MACRO {apl} {"Appl. Phys. Lett."}
901 MACRO {arnps} {"Ann. Rev. Nucl. Sci."}
902 MACRO {arns} {"Ann. Rev. Nucl. Part. Sci."}
903 MACRO {baps} {"Bull. Am. Phys. Soc."}
904 MACRO {cpc} {"Computer Phys. Comm."}
905 MACRO {cppcf} {"Comments Plasma Phys. Controlled Fusion"}
906 MACRO {fed} {"Fusion Eng. Design"}
907 MACRO {ft} {"Fusion Tech."}
908 MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
909 MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
910 MACRO {ijimw} {"Int. J. Infrared Millimeter Waves"}
911 MACRO {ip} {"Infrared Phys."}
912 MACRO {jap} {"J. Appl. Phys."}
913 MACRO {jcp} {"J. Comput. Phys."}
914 MACRO {jetp} {"Sov. Phys.-JETP"}
915 MACRO {jfe} {"J. Fusion Energy"}
916 MACRO {jfm} {"J. Fluid Mech."}
917 MACRO {jgr} {"J. Geophys. Res."}
918 MACRO {jmp} {"J. Math. Phys."}
919 MACRO {jne} {"J. Nucl. Energy"}
920 MACRO {jnm} {"J. Nucl. Mater."}
921 MACRO {josa} {"J. Opt. Soc. Am."}
922 MACRO {jpg} {"J. Phys.~G: Nucl. and Part. Phys."}
923 MACRO {jphys} {"J. Phys"}
924 MACRO {jpp} {"J. Plasma Phys."}
925 MACRO {jpsj} {"J. Phys. Soc. Jpn"}
926 MACRO {jvst} {"J. Vac. Sci. Technol."}
927 MACRO {modphyslettA} {"Mod. Phys. Lett. A"}
928 MACRO {nedf} {"Nucl. Eng. Design/Fusion"}
929 MACRO {nf} {"Nucl. Fusion"}
930 MACRO {nim} {"Nucl. Instrum. Methods"}
931 MACRO {np} {"Nucl. Phys."}
932 MACRO {npb} {"Nucl. Phys.~B"}
933 MACRO {npbps} {"Nucl. Phys. B (Proc. Suppl.)"}
934 MACRO {nt/f} {"Nucl. Tech./Fusion"}
935 MACRO {pf} {"Phys. Fluids"}
936 MACRO {pl} {"Phys. Lett."}
937 MACRO {plb} {"Phys. Lett.~B"}
938 MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
939 MACRO {pp} {"Plasma Phys."}
940 MACRO {physrep} {"Phys. Rep."}
941 MACRO {physrev} {"Phys. Rev."}
942 MACRO {pr} {"Phys. Rev."}
943 MACRO {prd} {"Phys. Rev.~D"}
944 MACRO {prl} {"Phys. Rev. Lett."}
945 MACRO {procroysoc} {"Proc. Roy. Soc"}
946 MACRO {ps} {"Physica Scripta"}
947 MACRO {rmp} {"Rev. Mod. Phys."}
948 MACRO {rsi} {"Rev. Sci. Instrum."}
949 MACRO {sjnp} {"Sov. J. Nucl. Phys."}
950 MACRO {sjpp} {"Sov. J. Plasma Phys."}
951 MACRO {spd} {"Sov. Phys.-Dokl."}
952 MACRO {sptp} {"Sov. Phys.-Tech. Phys."}
953 MACRO {spu} {"Sov. Phys.-Usp."}
954 MACRO {zp} {"Z. Phys."}
955 MACRO {zpc} {"Z. Phys.~C"}
956 READ
957 STRINGS { longest.label }
958 INTEGERS { number.label longest.label.width }
959 FUNCTION {initialize.longest.label}
960 { "" 'longest.label :=
961 #1 'number.label :=
962 #0 'longest.label.width :=
963 }
964 FUNCTION {longest.label.pass}
965 { number.label int.to.str$ 'label :=
966 number.label #1 + 'number.label :=
967 label width$ longest.label.width >
968 { label 'longest.label :=
969 label width$ 'longest.label.width :=
970 }
971 'skip$
972 if$
973 }
974 EXECUTE {initialize.longest.label}
975 ITERATE {longest.label.pass}
976 FUNCTION {begin.bib}
977 { preamble$ empty$
978 'skip$
979 { preamble$ write$ newline$ }
980 if$
981 "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
982 }
983 EXECUTE {begin.bib}
984 EXECUTE {init.state.consts}
985 ITERATE {call.type$}
986 FUNCTION {end.bib}
987 { newline$
988 "\end{thebibliography}" write$ newline$
989 }
990 EXECUTE {end.bib}