source: Backup NB/Talks/MEMPHYSetal/MEMPHYS EOI/DetectorPart/JHEP.bst@ 689

Last change on this file since 689 was 387, checked in by campagne, 17 years ago
File size: 19.3 KB
Line 
1% UT Physics bibliographic style, ver. 1.2. Based on:
2%
3%X IEEE Transactions bibliography style (29-Jan-88 version)
4%X numeric labels, order-of-reference, IEEE abbreviations,
5%X quotes around article titles, commas separate all fields
6%X except after book titles and before "notes". Otherwise,
7%X much like the "plain" family, from which this is adapted.
8%X
9%X History
10%X 9/30/85 (HWT) Original version, by Howard Trickey.
11%X 1/29/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
12%X THIS `ieeetr' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
13%
14% Modifications: 1) added hypertex support and "archive" and "eprint" fields.
15% 2) parentheses around dates, and no "pp." for article entries
16% 3) "publisher, address" instead of "address: publisher"
17% 4) added "report" field for article entries.
18% 5) particle physics-oriented abbreviations, rather than ieee.
19% 6) added "collaboration" field, as per
20% Jonathan Flynn' suggestion. SPIRES now supports this field.
21%
22% Modified by Jacques Distler, 7/97
23% History: ver 1.0 9/96
24% ver 1.1 10/96 - added "collaboration" field
25% ver 1.2 7/97 - added a "\providecommand{\href}[2]{#2}"
26% to handle case where \href is not defined
27%
28% HyperTeX Wizardry:
29%
30% The following are equivalent:
31% archive = "hep-th"
32% eprint = "9605023"
33% and
34% eprint = "hep-th/9605023"
35% both produce
36% \href{http://xxx.lanl.gov/abs/hep-th/9605023}{{\tt hep-th/9605023}}
37% in the bibliographic output at the appropriate point. If you are using a
38% hypertex macropackage, like hyperref.sty, this will create a link to Los
39% Alamos.
40%
41% The bibtex output produced by SPIRES, while far from perfect, is pretty
42% suitable for use with this style. Indeed, this style was designed with
43% SPIRES in mind.
44
45ENTRY
46 { address
47 author
48 booktitle
49 chapter
50 edition
51 editor
52 howpublished
53 institution
54 journal
55 key
56 month
57 note
58 number
59 organization
60 pages
61 publisher
62 school
63 series
64 title
65 type
66 volume
67 year
68 archive
69 eprint
70 report
71 collaboration
72 }
73 {}
74 { label }
75
76INTEGERS { output.state before.all mid.sentence after.quote after.sentence
77 after.quoted.block after.block }
78
79FUNCTION {init.state.consts}
80{ #0 'before.all :=
81 #1 'mid.sentence :=
82 #2 'after.quote :=
83 #3 'after.sentence :=
84 #4 'after.quoted.block :=
85 #5 'after.block :=
86}
87
88STRINGS { s t }
89
90FUNCTION {output.nonnull}
91{ 's :=
92 output.state mid.sentence =
93 { ", " * write$ }
94 { output.state after.quote =
95 { " " * write$ }
96 { output.state after.block =
97 { add.period$ write$
98 newline$
99 "\newblock " write$
100 }
101 { output.state before.all =
102 'write$
103 { output.state after.quoted.block =
104 { write$
105 newline$
106 "\newblock " write$
107 }
108 { add.period$ " " * write$ }
109 if$
110 }
111 if$
112 }
113 if$
114 }
115 if$
116 mid.sentence 'output.state :=
117 }
118 if$
119 s
120}
121
122FUNCTION {output}
123{ duplicate$ empty$
124 'pop$
125 'output.nonnull
126 if$
127}
128
129FUNCTION {output.check}
130{ 't :=
131 duplicate$ empty$
132 { pop$ "empty " t * " in " * cite$ * warning$ }
133 'output.nonnull
134 if$
135}
136
137FUNCTION {output.bibitem}
138{ newline$
139 "\bibitem{" write$
140 cite$ write$
141 "}" write$
142 newline$
143 ""
144 before.all 'output.state :=
145}
146
147FUNCTION {blank.sep}
148{ after.quote 'output.state :=
149}
150
151FUNCTION {fin.entry}
152{ output.state after.quoted.block =
153 'skip$
154 'add.period$
155 if$
156 write$
157 newline$
158}
159
160FUNCTION {new.block}
161{ output.state before.all =
162 'skip$
163 { output.state after.quote =
164 { after.quoted.block 'output.state := }
165 { after.block 'output.state := }
166 if$
167 }
168 if$
169}
170
171FUNCTION {new.sentence}
172{ output.state after.block =
173 'skip$
174 { output.state before.all =
175 'skip$
176 { after.sentence 'output.state := }
177 if$
178 }
179 if$
180}
181
182FUNCTION {not}
183{ { #0 }
184 { #1 }
185 if$
186}
187
188FUNCTION {and}
189{ 'skip$
190 { pop$ #0 }
191 if$
192}
193
194FUNCTION {or}
195{ { pop$ #1 }
196 'skip$
197 if$
198}
199
200FUNCTION {new.block.checka}
201{ empty$
202 'skip$
203 'new.block
204 if$
205}
206
207FUNCTION {new.block.checkb}
208{ empty$
209 swap$ empty$
210 and
211 'skip$
212 'new.block
213 if$
214}
215
216FUNCTION {new.sentence.checka}
217{ empty$
218 'skip$
219 'new.sentence
220 if$
221}
222
223FUNCTION {field.or.null}
224{ duplicate$ empty$
225 { pop$ "" }
226 'skip$
227 if$
228}
229
230FUNCTION {emphasize}
231{ duplicate$ empty$
232 { pop$ "" }
233 { "{\em " swap$ * "}" * }
234 if$
235}
236
237INTEGERS { nameptr namesleft numnames }
238
239FUNCTION {format.names}
240{ 's :=
241 #1 'nameptr :=
242 s num.names$ 'numnames :=
243 numnames 'namesleft :=
244 { namesleft #0 > }
245 { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
246 nameptr #1 >
247 { namesleft #1 >
248 { ", " * t * }
249 { numnames #2 >
250 { "," * }
251 'skip$
252 if$
253 t "others" =
254 { " {\em et.~al.}" * }
255 { " and " * t * }
256 if$
257 }
258 if$
259 }
260 't
261 if$
262 nameptr #1 + 'nameptr :=
263 namesleft #1 - 'namesleft :=
264 }
265 while$
266}
267
268FUNCTION {format.authors}
269{ author empty$
270 { "" }
271 { author format.names }
272 if$
273}
274
275FUNCTION {format.eprint}
276{ eprint empty$
277 { ""}
278 { archive empty$
279 {"\href{http://xxx.lanl.gov/abs/" eprint * "}" *
280 "{{\tt " * eprint * "}}" *}
281 {"\href{http://xxx.lanl.gov/abs/" archive * "/" * eprint * "}" *
282 "{{\tt " * archive * "/" * eprint * "}}" *}
283 if$
284 }
285 if$
286}
287
288FUNCTION {format.eprint.paren}
289{ eprint missing$ { "" } { eprint empty$ { "" }
290 {"[" format.eprint * "]" *}
291 if$
292 }
293 if$
294}
295
296
297
298FUNCTION {format.report}
299{ report empty$
300 { ""}
301 { report}
302 if$
303}
304
305
306
307FUNCTION {format.editors}
308{ editor empty$
309 { "" }
310 { editor format.names
311 editor num.names$ #1 >
312 { ", eds." * }
313 { ", ed." * }
314 if$
315 }
316 if$
317}
318
319FUNCTION {format.title}
320{ title empty$
321 { "" }
322 { "{\it " title "t" change.case$ * "}, " * }
323 if$
324}
325
326FUNCTION {format.title.p}
327{ title empty$
328 { "" }
329 { "``" title "t" change.case$ * ".''" * }
330 if$
331}
332
333FUNCTION {n.dashify}
334{ 't :=
335 ""
336 { t empty$ not }
337 { t #1 #1 substring$ "-" =
338 { t #1 #2 substring$ "--" = not
339 { "--" *
340 t #2 global.max$ substring$ 't :=
341 }
342 { { t #1 #1 substring$ "-" = }
343 { "-" *
344 t #2 global.max$ substring$ 't :=
345 }
346 while$
347 }
348 if$
349 }
350 { t #1 #1 substring$ *
351 t #2 global.max$ substring$ 't :=
352 }
353 if$
354 }
355 while$
356}
357
358FUNCTION {format.date}
359{ year empty$
360 { month empty$
361 { "" }
362 { "there's a month but no year in " cite$ * warning$
363 month
364 }
365 if$
366 }
367 { month empty$
368 'year
369 { month ", " * year * }
370 if$
371 }
372 if$
373}
374
375FUNCTION {format.date.paren}
376{ year empty$
377 { month empty$
378 { "" }
379 { "there's a month but no year in " cite$ * warning$
380 month
381 }
382 if$
383 }
384 { month empty$
385 {"(" year * ")" *}
386 {"(" month * ", " * year * ")" *}
387 if$
388 }
389 if$
390}
391
392FUNCTION {format.collaboration}
393{ collaboration empty$
394 { "" }
395 { "{\bf " collaboration * "} " * "Collaboration" * }
396 if$
397}
398
399
400FUNCTION {format.btitle}
401{ title emphasize
402}
403
404FUNCTION {tie.or.space.connect}
405{ duplicate$ text.length$ #3 <
406 { "~" }
407 { " " }
408 if$
409 swap$ * *
410}
411
412FUNCTION {either.or.check}
413{ empty$
414 'pop$
415 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
416 if$
417}
418
419FUNCTION {format.bvolume}
420{ volume empty$
421 { "" }
422 { "vol.~" volume *
423 series empty$
424 'skip$
425 { " of " * series emphasize * }
426 if$
427 "volume and number" number either.or.check
428 }
429 if$
430}
431
432FUNCTION {format.number.series}
433{ volume empty$
434 { number empty$
435 { series field.or.null }
436 { output.state mid.sentence =
437 { "no.~" }
438 { "No.~" }
439 if$
440 number *
441 series empty$
442 { "there's a number but no series in " cite$ * warning$ }
443 { " in " * series * }
444 if$
445 }
446 if$
447 }
448 { "" }
449 if$
450}
451
452FUNCTION {format.edition}
453{ edition empty$
454 { "" }
455 { edition "l" change.case$ "~ed." * }
456 if$
457}
458
459INTEGERS { multiresult }
460
461FUNCTION {multi.page.check}
462{ 't :=
463 #0 'multiresult :=
464 { multiresult not
465 t empty$ not
466 and
467 }
468 { t #1 #1 substring$
469 duplicate$ "-" =
470 swap$ duplicate$ "," =
471 swap$ "+" =
472 or or
473 { #1 'multiresult := }
474 { t #2 global.max$ substring$ 't := }
475 if$
476 }
477 while$
478 multiresult
479}
480
481FUNCTION {format.pages}
482{ pages empty$
483 { "" }
484 { pages multi.page.check
485 { "pp.~" pages n.dashify * }
486 { "p.~" pages * }
487 if$
488 }
489 if$
490}
491
492FUNCTION {format.pages.nopp}
493{ pages empty$
494 { "" }
495 { pages multi.page.check
496 { pages n.dashify }
497 { pages }
498 if$
499 }
500 if$
501}
502
503
504FUNCTION {format.volume}
505{ volume empty$
506 { "" }
507 { "{\bf " volume * "}" * }
508 if$
509}
510
511FUNCTION {format.number}
512{ number empty$
513 { "" }
514 { "no.~" number * }
515 if$
516}
517
518FUNCTION {format.chapter.pages}
519{ chapter empty$
520 'format.pages
521 { type empty$
522 { "ch.~" chapter * }
523 { type "l" change.case$ chapter tie.or.space.connect }
524 if$
525 pages empty$
526 'skip$
527 { ", " * format.pages * }
528 if$
529 }
530 if$
531}
532
533FUNCTION {format.in.ed.booktitle}
534{ booktitle empty$
535 { "" }
536 { "in " booktitle emphasize *
537 editor empty$
538 'skip$
539 { " (" * format.editors * ")" * }
540 if$
541 }
542 if$
543}
544
545FUNCTION {format.thesis.type}
546{ type empty$
547 'skip$
548 { pop$
549 output.state after.block =
550 { type "t" change.case$ }
551 { type "l" change.case$ }
552 if$
553 }
554 if$
555}
556
557FUNCTION {empty.misc.check}
558{ author empty$ title empty$ howpublished empty$
559 month empty$ year empty$ note empty$
560 and and and and and
561 { "all relevant fields are empty in " cite$ * warning$ }
562 'skip$
563 if$
564}
565
566FUNCTION {format.tr.number}
567{ type empty$
568 { "Tech. Rep." }
569 'type
570 if$
571 number empty$
572 { "l" change.case$ }
573 { number tie.or.space.connect }
574 if$
575}
576
577FUNCTION {format.paddress}
578{ address empty$
579 { "" }
580 { "(" address * ")" * }
581 if$
582}
583
584FUNCTION {format.article.crossref}
585{ key empty$
586 { journal empty$
587 { "need key or journal for " cite$ * " to crossref " * crossref *
588 warning$
589 ""
590 }
591 { "in {\em " journal * "\/}" * }
592 if$
593 }
594 { "in " key * }
595 if$
596 " \cite{" * crossref * "}" *
597}
598
599FUNCTION {format.crossref.editor}
600{ editor #1 "{vv~}{ll}" format.name$
601 editor num.names$ duplicate$
602 #2 >
603 { pop$ " {\em et.~al.}" * }
604 { #2 <
605 'skip$
606 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
607 { " {\em et.~al.}" * }
608 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
609 if$
610 }
611 if$
612 }
613 if$
614}
615
616FUNCTION {format.book.crossref}
617{ volume empty$
618 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
619 "In "
620 }
621 { "Vol.~" volume *
622 " of " *
623 }
624 if$
625 editor empty$
626 editor field.or.null author field.or.null =
627 or
628 { key empty$
629 { series empty$
630 { "need editor, key, or series for " cite$ * " to crossref " *
631 crossref * warning$
632 "" *
633 }
634 { "{\em " * series * "\/}" * }
635 if$
636 }
637 { key * }
638 if$
639 }
640 { format.crossref.editor * }
641 if$
642 " \cite{" * crossref * "}" *
643}
644
645FUNCTION {format.incoll.inproc.crossref}
646{ editor empty$
647 editor field.or.null author field.or.null =
648 or
649 { key empty$
650 { booktitle empty$
651 { "need editor, key, or booktitle for " cite$ * " to crossref " *
652 crossref * warning$
653 ""
654 }
655 { "in {\em " booktitle * "\/}" * }
656 if$
657 }
658 { "in " key * }
659 if$
660 }
661 { "in " format.crossref.editor * }
662 if$
663 " \cite{" * crossref * "}" *
664}
665
666FUNCTION {article}
667{ output.bibitem
668 format.collaboration output
669 format.authors "author" output.check
670 format.title "title" output.check
671 blank.sep
672 crossref missing$
673 { journal missing$
674 { format.eprint output }
675 { journal empty$ { format.eprint output } {
676 journal emphasize "journal" output.check
677 blank.sep
678 format.volume output
679 blank.sep
680 format.date.paren "year" output.check
681 month empty$ { format.number output }
682 'skip$ if$
683 blank.sep
684 format.pages.nopp output }
685 if$
686 }
687 if$
688 report missing$
689 { journal empty$ {} { format.eprint.paren output} if$ }
690 {blank.sep format.report output format.eprint.paren output}
691 if$
692 }
693 { format.article.crossref output.nonnull
694 format.pages output
695 format.eprint.paren output
696 }
697 if$
698 new.sentence
699 note output
700 fin.entry
701}
702
703FUNCTION {book}
704{ output.bibitem
705 format.collaboration output
706 author empty$
707 { format.editors "author and editor" output.check }
708 { format.authors output.nonnull
709 crossref missing$
710 { "author and editor" editor either.or.check }
711 'skip$
712 if$
713 }
714 if$
715 format.btitle "title" output.check
716 crossref missing$
717 { format.bvolume output
718 new.block
719 format.number.series output
720 new.sentence
721 publisher "publisher" output.check
722 address output
723 }
724 { new.block
725 format.book.crossref output.nonnull
726 }
727 if$
728 format.edition output
729 format.date "year" output.check
730 new.block
731 note output
732 fin.entry
733}
734
735FUNCTION {booklet}
736{ output.bibitem
737 format.collaboration output
738 format.authors output
739 title empty$
740 { "empty title in " cite$ * warning$
741 howpublished new.sentence.checka
742 }
743 { howpublished empty$ not
744 address empty$ month empty$ year empty$ and and
745 or
746 { format.title.p output.nonnull }
747 { format.title output.nonnull }
748 if$
749 blank.sep
750 }
751 if$
752 howpublished output
753 address output
754 format.date output
755 new.block
756 note output
757 fin.entry
758}
759
760FUNCTION {inbook}
761{ output.bibitem
762 format.collaboration output
763 author empty$
764 { format.editors "author and editor" output.check }
765 { format.authors output.nonnull
766 crossref missing$
767 { "author and editor" editor either.or.check }
768 'skip$
769 if$
770 }
771 if$
772 format.btitle "title" output.check
773 crossref missing$
774 { format.bvolume output
775 format.chapter.pages "chapter and pages" output.check
776 new.block
777 format.number.series output
778 new.block
779 publisher "publisher" output.check
780 address output
781 }
782 { format.chapter.pages "chapter and pages" output.check
783 new.block
784 format.book.crossref output.nonnull
785 }
786 if$
787 format.edition output
788 format.date "year" output.check
789 new.block
790 format.eprint output
791 new.block
792 note output
793 fin.entry
794}
795
796FUNCTION {incollection}
797{ output.bibitem
798 format.collaboration output
799 format.authors "author" output.check
800 format.title "title" output.check
801 blank.sep
802 crossref missing$
803 { format.in.ed.booktitle "booktitle" output.check
804 format.bvolume output
805 format.number.series output
806 format.chapter.pages output
807 new.block
808 publisher "publisher" output.check
809 address output
810 format.edition output
811 format.date "year" output.check
812 }
813 { format.incoll.inproc.crossref output.nonnull
814 format.chapter.pages output
815 }
816 if$
817 new.block
818 format.eprint output
819 new.block
820 note output
821 fin.entry
822}
823
824FUNCTION {inproceedings}
825{ output.bibitem
826 format.collaboration output
827 format.authors "author" output.check
828 format.title "title" output.check
829 blank.sep
830 crossref missing$
831 { format.in.ed.booktitle "booktitle" output.check
832 format.bvolume output
833 format.number.series output
834 format.paddress output
835 format.pages output
836 organization output
837 publisher output
838 format.date "year" output.check
839 }
840 { format.incoll.inproc.crossref output.nonnull
841 format.pages output
842 }
843 if$
844 new.block
845 format.eprint output
846 new.block
847 note output
848 fin.entry
849}
850
851FUNCTION {conference} { inproceedings }
852
853FUNCTION {manual}
854{ output.bibitem
855 format.collaboration output
856 author empty$
857 { organization empty$
858 'skip$
859 { organization output.nonnull
860 address output
861 }
862 if$
863 }
864 { format.authors output.nonnull }
865 if$
866 format.btitle "title" output.check
867 author empty$
868 { organization empty$
869 { address new.block.checka
870 address output
871 }
872 'skip$
873 if$
874 }
875 { organization address new.block.checkb
876 organization output
877 address output
878 }
879 if$
880 format.edition output
881 format.date output
882 new.block
883 note output
884 fin.entry
885}
886
887FUNCTION {mastersthesis}
888{ output.bibitem
889 format.authors "author" output.check
890 format.title "title" output.check
891 blank.sep
892 "Master's thesis" format.thesis.type output.nonnull
893 school "school" output.check
894 address output
895 format.date "year" output.check
896 new.block
897 note output
898 fin.entry
899}
900
901FUNCTION {misc}
902{ output.bibitem
903 format.collaboration output
904 format.authors output
905 title empty$
906 { howpublished new.sentence.checka }
907 { howpublished empty$ not
908 month empty$ year empty$ and
909 or
910 { format.title.p output.nonnull }
911 { format.title output.nonnull }
912 if$
913 blank.sep
914 }
915 if$
916 howpublished output
917 format.date output
918 new.block
919 note output
920 fin.entry
921 empty.misc.check
922}
923
924FUNCTION {phdthesis}
925{ output.bibitem
926 format.authors "author" output.check
927 format.btitle "title" output.check
928 new.block
929 "PhD thesis" format.thesis.type output.nonnull
930 school "school" output.check
931 address output
932 format.date "year" output.check
933 new.block
934 format.eprint output
935 new.block
936 note output
937 fin.entry
938}
939
940FUNCTION {proceedings}
941{ output.bibitem
942 editor empty$
943 { organization output }
944 { format.editors output.nonnull }
945 if$
946 format.btitle "title" output.check
947 format.bvolume output
948 format.number.series output
949 format.paddress output
950 editor empty$
951 'skip$
952 { organization output }
953 if$
954 publisher output
955 format.date "year" output.check
956 new.block
957 note output
958 fin.entry
959}
960
961FUNCTION {techreport}
962{ output.bibitem
963 format.collaboration output
964 format.authors "author" output.check
965 format.title "title" output.check
966 blank.sep
967 format.tr.number output.nonnull
968 institution "institution" output.check
969 address output
970 format.date "year" output.check
971 new.block
972 note output
973 fin.entry
974}
975
976FUNCTION {unpublished}
977{ output.bibitem
978 format.collaboration output
979 format.authors "author" output.check
980 format.title.p "title" output.check
981 blank.sep
982 note "note" output.check
983 format.date output
984 fin.entry
985}
986
987FUNCTION {default.type} { misc }
988
989MACRO {jan} {"Jan."}
990
991MACRO {feb} {"Feb."}
992
993MACRO {mar} {"Mar."}
994
995MACRO {apr} {"Apr."}
996
997MACRO {may} {"May"}
998
999MACRO {jun} {"June"}
1000
1001MACRO {jul} {"July"}
1002
1003MACRO {aug} {"Aug."}
1004
1005MACRO {sep} {"Sept."}
1006
1007MACRO {oct} {"Oct."}
1008
1009MACRO {nov} {"Nov."}
1010
1011MACRO {dec} {"Dec."}
1012
1013MACRO {nup} {"Nucl. Phys."}
1014
1015MACRO {cmp} {"Comm. Math. Phys."}
1016
1017MACRO {prl} {"Phys. Rev. Lett."}
1018
1019MACRO {pl} {"Phys. Lett."}
1020
1021MACRO {rmp} {"Rev. Mod. Phys."}
1022
1023MACRO {ijmp} {"Int. Jour. Mod. Phys."}
1024
1025MACRO {mpl} {"Mod. Phys. Lett."}
1026
1027MACRO {pr} {"Phys. Rev."}
1028
1029READ
1030
1031STRINGS { longest.label }
1032
1033INTEGERS { number.label longest.label.width }
1034
1035FUNCTION {initialize.longest.label}
1036{ "" 'longest.label :=
1037 #1 'number.label :=
1038 #0 'longest.label.width :=
1039}
1040
1041FUNCTION {longest.label.pass}
1042{ number.label int.to.str$ 'label :=
1043 number.label #1 + 'number.label :=
1044 label width$ longest.label.width >
1045 { label 'longest.label :=
1046 label width$ 'longest.label.width :=
1047 }
1048 'skip$
1049 if$
1050}
1051
1052EXECUTE {initialize.longest.label}
1053
1054ITERATE {longest.label.pass}
1055
1056FUNCTION {begin.bib}
1057{ preamble$ empty$
1058 'skip$
1059 { preamble$ write$ newline$ }
1060 if$
1061 "\providecommand{\href}[2]{#2}"
1062 "\begingroup\raggedright\begin{thebibliography}{" * longest.label *
1063 "}" * write$ newline$ }
1064
1065EXECUTE {begin.bib}
1066
1067EXECUTE {init.state.consts}
1068
1069ITERATE {call.type$}
1070
1071FUNCTION {end.bib}
1072{ newline$
1073 "\end{thebibliography}\endgroup" write$ newline$
1074}
1075
1076EXECUTE {end.bib}
Note: See TracBrowser for help on using the repository browser.