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

Last change on this file since 391 was 387, checked in by campagne, 16 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.