u/erica/FinalBEpaper: apj.bst

File apj.bst, 30.1 KB (added by Erica Kaminski, 11 years ago)
Line 
1
2%% $Log: apj.bst,v $
3%% Revision 1.4 2002/06/18 16:37:48 alberto
4%% Add comma after first author in two-author reference
5%% Fix courtesy of Tim Robishaw <robishaw@astron.berkeley.edu>
6%%
7%% Revision 1.3 2000/04/20 22:17:50 jbaker
8%% Fixed INBOOK bug, now works essentially like BOOK.
9%%
10%% Revision 1.2 1998/08/30 22:35:45 jbaker
11%% Added RCS keywords.
12%%
13%% 1998/08/12 J Baker
14%% Tweaked by hand to get correct results for ApJ. Added functions from
15%% astrobib.
16
17
18%%
19%% This is file `apj.bst',
20%% generated with the docstrip utility.
21%%
22%% The original source files were:
23%%
24%% merlin.mbs (with options: `,ay,nat,nm-rev,nmdash,dt-beg,yr-per,note-yr,atit-u,jtit-x,jttl-rm,thtit-a,vnum-x,volp-com,jpg-1,pp-last,btit-rm,add-pub,pub-par,pre-edn,edby,edbyx,blk-com,fin-bare,ppx,ed,abr,ord,jabr,amper,em-x')
25%% ----------------------------------------
26%% *** Bibliographic Style for ApJ ***
27%%
28 %-------------------------------------------------------------------
29 % The original source file contains the following version information:
30 % \ProvidesFile{merlin.mbs}[1998/02/25 3.85a (PWD)]
31 %
32 % NOTICE:
33 % This file may be used for non-profit purposes.
34 % It may not be distributed in exchange for money,
35 % other than distribution costs.
36 %
37 % The author provides it `as is' and does not guarantee it in any way.
38 %
39 % Copyright (C) 1994-98 Patrick W. Daly
40 %-------------------------------------------------------------------
41 % For use with BibTeX version 0.99a or later
42 %-------------------------------------------------------------------
43 % This bibliography style file is intended for texts in ENGLISH
44 % This is an author-year citation style bibliography. As such, it is
45 % non-standard LaTeX, and requires a special package file to function properly.
46 % Such a package is natbib.sty by Patrick W. Daly
47 % The form of the \bibitem entries is
48 % \bibitem[Jones et al.(1990)]{key}...
49 % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
50 % The essential feature is that the label (the part in brackets) consists
51 % of the author names, as they should appear in the citation, with the year
52 % in parentheses following. There must be no space before the opening
53 % parenthesis!
54 % With natbib v5.3, a full list of authors may also follow the year.
55 % In natbib.sty, it is possible to define the type of enclosures that is
56 % really wanted (brackets or parentheses), but in either case, there must
57 % be parentheses in the label.
58 % The \cite command functions as follows:
59 % \citet{key} ==>> Jones et al. (1990)
60 % \citet*{key} ==>> Jones, Baker, and Smith (1990)
61 % \citep{key} ==>> (Jones et al., 1990)
62 % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
63 % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
64 % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
65 % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
66 % \citeauthor{key} ==>> Jones et al.
67 % \citeauthor*{key} ==>> Jones, Baker, and Smith
68 % \citeyear{key} ==>> 1990
69 %---------------------------------------------------------------------
70
71ENTRY
72 { address
73 author
74 booktitle
75 chapter
76 edition
77 editor
78 howpublished
79 institution
80 journal
81 key
82 month
83 note
84 number
85 organization
86 pages
87 publisher
88 school
89 series
90 title
91 type
92 volume
93 year
94 }
95 {}
96 { label extra.label sort.label short.list }
97
98INTEGERS { output.state before.all mid.sentence after.sentence after.block }
99
100FUNCTION {init.state.consts}
101{ #0 'before.all :=
102 #1 'mid.sentence :=
103 #2 'after.sentence :=
104 #3 'after.block :=
105}
106
107STRINGS { s t }
108
109FUNCTION {output.nonnull}
110{ 's :=
111 output.state mid.sentence =
112 { ", " * write$ }
113 { output.state after.block =
114 { add.period$ write$
115 newline$
116 "\newblock " write$
117 }
118 { output.state before.all =
119 'write$
120 { add.period$ " " * write$ }
121 if$
122 }
123 if$
124 mid.sentence 'output.state :=
125 }
126 if$
127 s
128}
129
130FUNCTION {output}
131{ duplicate$ empty$
132 'pop$
133 'output.nonnull
134 if$
135}
136
137FUNCTION {output.check}
138{ 't :=
139 duplicate$ empty$
140 { pop$ "empty " t * " in " * cite$ * warning$ }
141 'output.nonnull
142 if$
143}
144
145FUNCTION {fin.entry}
146{ duplicate$ empty$
147 'pop$
148 'write$
149 if$
150 newline$
151}
152
153FUNCTION {new.block}
154{ output.state before.all =
155 'skip$
156 { after.block 'output.state := }
157 if$
158}
159
160FUNCTION {new.sentence}
161{ output.state after.block =
162 'skip$
163 { output.state before.all =
164 'skip$
165 { after.sentence 'output.state := }
166 if$
167 }
168 if$
169}
170
171FUNCTION {add.blank}
172{ " " * before.all 'output.state :=
173}
174
175FUNCTION {date.block}
176{
177 skip$
178}
179
180FUNCTION {not}
181{ { #0 }
182 { #1 }
183 if$
184}
185
186FUNCTION {and}
187{ 'skip$
188 { pop$ #0 }
189 if$
190}
191
192FUNCTION {or}
193{ { pop$ #1 }
194 'skip$
195 if$
196}
197
198FUNCTION {new.block.checkb}
199{ empty$
200 swap$ empty$
201 and
202 'skip$
203 'new.block
204 if$
205}
206
207FUNCTION {field.or.null}
208{ duplicate$ empty$
209 { pop$ "" }
210 'skip$
211 if$
212}
213
214FUNCTION {emphasize}
215{ skip$ }
216
217FUNCTION {capitalize}
218{ "u" change.case$ "t" change.case$ }
219
220FUNCTION {space.word}
221{ " " swap$ * " " * }
222
223 % Here are the language-specific definitions for explicit words.
224 % Each function has a name bbl.xxx where xxx is the English word.
225 % The language selected here is ENGLISH
226FUNCTION {bbl.and}
227{ "and"}
228
229FUNCTION {bbl.editors}
230{ "eds." }
231
232FUNCTION {bbl.editor}
233{ "ed." }
234
235FUNCTION {bbl.edby}
236{ "edited by" }
237
238FUNCTION {bbl.edition}
239{ "edn." }
240
241FUNCTION {bbl.volume}
242{ "Vol." }
243
244FUNCTION {bbl.of}
245{ "of" }
246
247FUNCTION {bbl.number}
248{ "no." }
249
250FUNCTION {bbl.nr}
251{ "no." }
252
253FUNCTION {bbl.in}
254{ "in" }
255
256FUNCTION {bbl.pages}
257{ "" }
258
259FUNCTION {bbl.page}
260{ "" }
261
262FUNCTION {bbl.chapter}
263{ "Ch." }
264%{ "chap." }
265
266FUNCTION {bbl.techrep}
267{ "Tech. Rep." }
268
269FUNCTION {bbl.mthesis}
270{ "Master's thesis" }
271
272FUNCTION {bbl.phdthesis}
273{ "PhD thesis" }
274
275FUNCTION {bbl.first}
276{ "1st" }
277
278FUNCTION {bbl.second}
279{ "2nd" }
280
281FUNCTION {bbl.third}
282{ "3rd" }
283
284FUNCTION {bbl.fourth}
285{ "4th" }
286
287FUNCTION {bbl.fifth}
288{ "5th" }
289
290FUNCTION {bbl.st}
291{ "st" }
292
293FUNCTION {bbl.nd}
294{ "nd" }
295
296FUNCTION {bbl.rd}
297{ "rd" }
298
299FUNCTION {bbl.th}
300{ "th" }
301
302MACRO {jan} {"Jan."}
303
304MACRO {feb} {"Feb."}
305
306MACRO {mar} {"Mar."}
307
308MACRO {apr} {"Apr."}
309
310MACRO {may} {"May"}
311
312MACRO {jun} {"Jun."}
313
314MACRO {jul} {"Jul."}
315
316MACRO {aug} {"Aug."}
317
318MACRO {sep} {"Sep."}
319
320MACRO {oct} {"Oct."}
321
322MACRO {nov} {"Nov."}
323
324MACRO {dec} {"Dec."}
325
326FUNCTION {eng.ord}
327{ duplicate$ "1" swap$ *
328 #-2 #1 substring$ "1" =
329 { bbl.th * }
330 { duplicate$ #-1 #1 substring$
331 duplicate$ "1" =
332 { pop$ bbl.st * }
333 { duplicate$ "2" =
334 { pop$ bbl.nd * }
335 { "3" =
336 { bbl.rd * }
337 { bbl.th * }
338 if$
339 }
340 if$
341 }
342 if$
343 }
344 if$
345}
346
347MACRO {acmcs} {"ACM Comput. Surv."}
348
349MACRO {acta} {"Acta Inf."}
350
351MACRO {cacm} {"Commun. ACM"}
352
353MACRO {ibmjrd} {"IBM J. Res. Dev."}
354
355MACRO {ibmsj} {"IBM Syst.~J."}
356
357MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
358
359MACRO {ieeetc} {"IEEE Trans. Comput."}
360
361MACRO {ieeetcad}
362 {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
363
364MACRO {ipl} {"Inf. Process. Lett."}
365
366MACRO {jacm} {"J.~ACM"}
367
368MACRO {jcss} {"J.~Comput. Syst. Sci."}
369
370MACRO {scp} {"Sci. Comput. Programming"}
371
372MACRO {sicomp} {"SIAM J. Comput."}
373
374MACRO {tocs} {"ACM Trans. Comput. Syst."}
375
376MACRO {tods} {"ACM Trans. Database Syst."}
377
378MACRO {tog} {"ACM Trans. Gr."}
379
380MACRO {toms} {"ACM Trans. Math. Softw."}
381
382MACRO {toois} {"ACM Trans. Office Inf. Syst."}
383
384MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
385
386MACRO {tcs} {"Theoretical Comput. Sci."}
387
388INTEGERS { nameptr namesleft numnames }
389
390FUNCTION {format.names}
391{ 's :=
392 #1 'nameptr :=
393 s num.names$ 'numnames :=
394 numnames 'namesleft :=
395 { namesleft #0 > }
396 { s nameptr
397 "{vv~}{ll}{, jj}{, f.}" format.name$
398 't :=
399 nameptr #1 >
400 {
401 namesleft #1 >
402 { ", " * t * }
403 {
404 numnames #1 >
405%% AA 6/18/2002
406%% This fix courtesy of Tim Robishaw <robishaw@astron.berkeley.edu>:
407%% Original version left comma out after initials of first author
408%% for two-author papers!!
409%% numnames #2 >
410 { "," * }
411 'skip$
412 if$
413 s nameptr "{ll}" format.name$ duplicate$ "others" =
414 { 't := }
415 { pop$ }
416 if$
417 t "others" =
418 {
419 " {et~al.}" *
420 }
421 { " \& " * t * }
422 if$
423 }
424 if$
425 }
426 't
427 if$
428 nameptr #1 + 'nameptr :=
429 namesleft #1 - 'namesleft :=
430 }
431 while$
432}
433
434FUNCTION {format.names.ed}
435{ 's :=
436 #1 'nameptr :=
437 s num.names$ 'numnames :=
438 numnames 'namesleft :=
439 { namesleft #0 > }
440 { s nameptr
441 "{f.~}{vv~}{ll}{, jj}"
442 format.name$
443 't :=
444 nameptr #1 >
445 {
446 namesleft #1 >
447 { ", " * t * }
448 {
449 numnames #2 >
450 { "," * }
451 'skip$
452 if$
453 s nameptr "{ll}" format.name$ duplicate$ "others" =
454 { 't := }
455 { pop$ }
456 if$
457 t "others" =
458 {
459 " {et~al.}" *
460 }
461 { " \& " * t * }
462 if$
463 }
464 if$
465 }
466 't
467 if$
468 nameptr #1 + 'nameptr :=
469 namesleft #1 - 'namesleft :=
470 }
471 while$
472}
473
474FUNCTION {format.key}
475{ empty$
476 { key field.or.null }
477 { "" }
478 if$
479}
480
481FUNCTION {format.authors}
482{ author empty$
483 { "" }
484 { author format.names }
485 if$
486}
487
488FUNCTION {format.editors}
489{ editor empty$
490 { "" }
491 { editor format.names
492 editor num.names$ #1 >
493 { ", " * bbl.editors * }
494 { ", " * bbl.editor * }
495 if$
496 }
497 if$
498}
499
500FUNCTION {format.in.editors}
501{ editor empty$
502 { "" }
503 { editor format.names.ed
504 }
505 if$
506}
507
508FUNCTION {format.note}
509{ note empty$
510 { "" }
511 { note #1 #1 substring$
512 duplicate$ "{" =
513 'skip$
514 { output.state mid.sentence =
515 { "l" }
516 { "u" }
517 if$
518 change.case$
519 }
520 if$
521 note #2 global.max$ substring$ *
522 }
523 if$
524}
525
526FUNCTION {format.title}
527{ title empty$
528 { "" }
529 { title
530 }
531 if$
532}
533
534FUNCTION {format.full.names}
535{'s :=
536 #1 'nameptr :=
537 s num.names$ 'numnames :=
538 numnames 'namesleft :=
539 { namesleft #0 > }
540 { s nameptr
541 "{vv~}{ll}" format.name$
542 't :=
543 nameptr #1 >
544 {
545 namesleft #1 >
546 { ", " * t * }
547 {
548 numnames #2 >
549 { "," * }
550 'skip$
551 if$
552 s nameptr "{ll}" format.name$ duplicate$ "others" =
553 { 't := }
554 { pop$ }
555 if$
556 t "others" =
557 {
558 " {et~al.}" *
559 }
560 { " \& " * t * }
561 if$
562 }
563 if$
564 }
565 't
566 if$
567 nameptr #1 + 'nameptr :=
568 namesleft #1 - 'namesleft :=
569 }
570 while$
571}
572
573FUNCTION {author.editor.key.full}
574{ author empty$
575 { editor empty$
576 { key empty$
577 { cite$ #1 #3 substring$ }
578 'key
579 if$
580 }
581 { editor format.full.names }
582 if$
583 }
584 { author format.full.names }
585 if$
586}
587
588FUNCTION {author.key.full}
589{ author empty$
590 { key empty$
591 { cite$ #1 #3 substring$ }
592 'key
593 if$
594 }
595 { author format.full.names }
596 if$
597}
598
599FUNCTION {editor.key.full}
600{ editor empty$
601 { key empty$
602 { cite$ #1 #3 substring$ }
603 'key
604 if$
605 }
606 { editor format.full.names }
607 if$
608}
609
610FUNCTION {make.full.names}
611{ type$ "book" =
612 type$ "inbook" =
613 or
614 'author.editor.key.full
615 { type$ "proceedings" =
616 'editor.key.full
617 'author.key.full
618 if$
619 }
620 if$
621}
622
623FUNCTION {output.bibitem}
624{ newline$
625 "\bibitem[{" write$
626 label write$
627 ")" make.full.names duplicate$ short.list =
628 { pop$ }
629 { * }
630 if$
631 "}]{" * write$
632 cite$ write$
633 "}" write$
634 newline$
635 ""
636 before.all 'output.state :=
637}
638
639FUNCTION {n.dashify}
640{
641 't :=
642 ""
643 { t empty$ not }
644 { t #1 #1 substring$ "-" =
645 { t #1 #2 substring$ "--" = not
646 { "--" *
647 t #2 global.max$ substring$ 't :=
648 }
649 { { t #1 #1 substring$ "-" = }
650 { "-" *
651 t #2 global.max$ substring$ 't :=
652 }
653 while$
654 }
655 if$
656 }
657 { t #1 #1 substring$ *
658 t #2 global.max$ substring$ 't :=
659 }
660 if$
661 }
662 while$
663}
664
665FUNCTION {word.in}
666{ bbl.in
667 " " * }
668
669FUNCTION {format.date}
670{ year duplicate$ empty$
671 { "empty year in " cite$ * "; set to ????" * warning$
672 pop$ "????" }
673 'skip$
674 if$
675 extra.label *
676 before.all 'output.state :=
677 after.sentence 'output.state :=
678}
679
680FUNCTION {format.btitle}
681{ title
682}
683
684FUNCTION {tie.or.space.connect}
685{ duplicate$ text.length$ #3 <
686 { "~" }
687 { " " }
688 if$
689 swap$ * *
690}
691
692FUNCTION {either.or.check}
693{ empty$
694 'pop$
695 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
696 if$
697}
698
699FUNCTION {format.bvolume}
700{ volume empty$
701 { "" }
702 { bbl.volume volume tie.or.space.connect
703 series empty$
704 'skip$
705 { bbl.of space.word * series emphasize * }
706 if$
707 "volume and number" number either.or.check
708 }
709 if$
710}
711
712FUNCTION {format.number.series}
713{ volume empty$
714 { number empty$
715 { series field.or.null }
716 { output.state mid.sentence =
717 { bbl.number }
718 { bbl.number capitalize }
719 if$
720 number tie.or.space.connect
721 series empty$
722 { "there's a number but no series in " cite$ * warning$ }
723 { bbl.in space.word * series * }
724 if$
725 }
726 if$
727 }
728 { "" }
729 if$
730}
731
732FUNCTION {is.num}
733{ chr.to.int$
734 duplicate$ "0" chr.to.int$ < not
735 swap$ "9" chr.to.int$ > not and
736}
737
738FUNCTION {extract.num}
739{ duplicate$ 't :=
740 "" 's :=
741 { t empty$ not }
742 { t #1 #1 substring$
743 t #2 global.max$ substring$ 't :=
744 duplicate$ is.num
745 { s swap$ * 's := }
746 { pop$ "" 't := }
747 if$
748 }
749 while$
750 s empty$
751 'skip$
752 { pop$ s }
753 if$
754}
755
756FUNCTION {convert.edition}
757{ edition extract.num "l" change.case$ 's :=
758 s "first" = s "1" = or
759 { bbl.first 't := }
760 { s "second" = s "2" = or
761 { bbl.second 't := }
762 { s "third" = s "3" = or
763 { bbl.third 't := }
764 { s "fourth" = s "4" = or
765 { bbl.fourth 't := }
766 { s "fifth" = s "5" = or
767 { bbl.fifth 't := }
768 { s #1 #1 substring$ is.num
769 { s eng.ord 't := }
770 { edition 't := }
771 if$
772 }
773 if$
774 }
775 if$
776 }
777 if$
778 }
779 if$
780 }
781 if$
782 t
783}
784
785FUNCTION {format.edition}
786{ edition empty$
787 { "" }
788 { output.state mid.sentence =
789 { convert.edition "l" change.case$ " " * bbl.edition * }
790 { convert.edition "t" change.case$ " " * bbl.edition * }
791 if$
792 }
793 if$
794}
795
796INTEGERS { multiresult }
797
798FUNCTION {multi.page.check}
799{ 't :=
800 #0 'multiresult :=
801 { multiresult not
802 t empty$ not
803 and
804 }
805 { t #1 #1 substring$
806 duplicate$ "-" =
807 swap$ duplicate$ "," =
808 swap$ "+" =
809 or or
810 { #1 'multiresult := }
811 { t #2 global.max$ substring$ 't := }
812 if$
813 }
814 while$
815 multiresult
816}
817
818FUNCTION {format.pages}
819{ pages empty$
820 { "" }
821 { pages multi.page.check
822% { bbl.pages pages n.dashify tie.or.space.connect }
823% { bbl.page pages tie.or.space.connect }
824 { pages n.dashify }
825 { pages }
826 if$
827 }
828 if$
829}
830
831FUNCTION {first.page}
832{ 't :=
833 ""
834 { t empty$ not t #1 #1 substring$ "-" = not and }
835 { t #1 #1 substring$ *
836 t #2 global.max$ substring$ 't :=
837 }
838 while$
839}
840
841FUNCTION {format.journal.pages}
842{ pages empty$
843 'skip$
844 { duplicate$ empty$
845 { pop$ format.pages }
846 {
847 ", " *
848 pages first.page *
849 }
850 if$
851 }
852 if$
853}
854
855FUNCTION {format.vol.num.pages}
856{ volume field.or.null
857}
858
859FUNCTION {format.chapter.pages}
860{ chapter empty$
861 { "" }
862 { type empty$
863 { bbl.chapter }
864 { type "l" change.case$ }
865 if$
866 chapter tie.or.space.connect
867 }
868 if$
869}
870
871FUNCTION {format.in.ed.booktitle}
872{ booktitle empty$
873 { "" }
874 { editor empty$
875 { word.in booktitle emphasize * }
876 { word.in booktitle emphasize *
877 ", " *
878 editor num.names$ #1 >
879 { bbl.editors }
880 { bbl.editor }
881 if$
882 * " " *
883 format.in.editors *
884 }
885 if$
886 }
887 if$
888}
889
890FUNCTION {format.thesis.type}
891{ type empty$
892 'skip$
893 { pop$
894 type "t" change.case$
895 }
896 if$
897}
898
899FUNCTION {format.tr.number}
900{ type empty$
901 { bbl.techrep }
902 'type
903 if$
904 number empty$
905 { "t" change.case$ }
906 { number tie.or.space.connect }
907 if$
908}
909
910FUNCTION {format.article.crossref}
911{
912 word.in
913 " \cite{" * crossref * "}" *
914}
915
916FUNCTION {format.book.crossref}
917{ volume empty$
918 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
919 word.in
920 }
921 { bbl.volume volume tie.or.space.connect
922 bbl.of space.word *
923 }
924 if$
925 " \cite{" * crossref * "}" *
926}
927
928FUNCTION {format.incoll.inproc.crossref}
929{
930 word.in
931 " \cite{" * crossref * "}" *
932}
933
934FUNCTION {format.publisher}
935{ publisher empty$
936 { "empty publisher in " cite$ * warning$ }
937 'skip$
938 if$
939 ""
940 address empty$ publisher empty$ and
941 'skip$
942 {
943 add.blank "(" *
944 address empty$
945 'skip$
946 { address * }
947 if$
948 publisher empty$
949 'skip$
950 { address empty$
951 'skip$
952 { ": " * }
953 if$
954 publisher *
955 }
956 if$
957 ")" *
958 }
959 if$
960 output
961}
962
963STRINGS {oldname}
964
965FUNCTION {name.or.dash}
966{ 's :=
967 oldname empty$
968 { s 'oldname := s }
969 { s oldname =
970 { "---" }
971 { s 'oldname := s }
972 if$
973 }
974 if$
975}
976
977%%%%%%%% Functions added from astrobib
978
979FUNCTION {format.edn.btitle} % Title should be on stack.
980{ duplicate$ empty$ edition empty$ or
981 'skip$
982 { ", " * format.edition * }
983 if$
984}
985
986FUNCTION {format.ed.booktitle} % The title should be on the stack.
987{ duplicate$ empty$
988 { "no book title in " cite$ * warning$ "" pop$ }
989 { editor empty$
990 author empty$ or % Empty author means editor already given.
991 'format.edn.btitle
992 { format.edn.btitle ", " * bbl.editor * " " * format.in.editors * }
993 if$
994 }
995 if$
996}
997
998FUNCTION {format.full.book.spec} % The title should be on the stack.
999{ series empty$
1000 { format.ed.booktitle
1001 volume empty$
1002 { number empty$
1003 'skip$
1004 { " there's a number but no series in " cite$ * warning$
1005 " No." number tie.or.space.connect * }
1006 if$
1007 }
1008 { ", Vol." volume tie.or.space.connect *
1009 number empty$
1010 'skip$
1011 {"Both volume and number fields in " * cite$ * warning$ }
1012 if$
1013 }
1014 if$
1015 }
1016 { volume empty$
1017 { format.ed.booktitle ", " * series *
1018 number empty$
1019 'skip$
1020 { " No." number tie.or.space.connect * }
1021 if$
1022 }
1023 { series ", Vol." volume tie.or.space.connect *
1024 ", " * swap$ format.ed.booktitle *
1025 number empty$
1026 'skip$
1027 {"Both volume and number fields in " * cite$ * warning$ }
1028 if$
1029 }
1030 if$
1031 }
1032 if$
1033}
1034
1035%%%%%%% End of functions from astrobib
1036
1037FUNCTION {article}
1038{ output.bibitem
1039 format.authors "author" output.check
1040 author format.key output
1041 name.or.dash
1042 format.date "year" output.check
1043 date.block
1044 crossref missing$
1045 { journal
1046 "journal" output.check
1047 format.vol.num.pages output
1048 }
1049 { format.article.crossref output.nonnull
1050 format.pages output
1051 }
1052 if$
1053 format.journal.pages
1054 format.note output
1055 fin.entry
1056}
1057
1058FUNCTION {book}
1059{ output.bibitem
1060 author empty$
1061 { format.editors "author and editor" output.check
1062 editor format.key output
1063 name.or.dash
1064 }
1065 { format.authors output.nonnull
1066 name.or.dash
1067 crossref missing$
1068 { "author and editor" editor either.or.check }
1069 'skip$
1070 if$
1071 }
1072 if$
1073 format.date "year" output.check
1074 date.block
1075 title format.full.book.spec output
1076% format.btitle "title" output.check
1077% crossref missing$
1078% { format.bvolume output
1079% format.number.series output
1080% format.edition output
1081 format.publisher
1082% }
1083% {
1084% format.book.crossref output.nonnull
1085% }
1086% if$
1087 format.pages output
1088 format.note output
1089 fin.entry
1090}
1091
1092FUNCTION {booklet}
1093{ output.bibitem
1094 format.authors output
1095 author format.key output
1096 name.or.dash
1097 format.date "year" output.check
1098 date.block
1099 format.title "title" output.check
1100 howpublished output
1101 address output
1102 format.note output
1103 fin.entry
1104}
1105
1106FUNCTION {inbook}
1107{ output.bibitem
1108 author empty$
1109 { format.editors "author and editor" output.check
1110 editor format.key output
1111 name.or.dash
1112 }
1113 { format.authors output.nonnull
1114 name.or.dash
1115 crossref missing$
1116 { "author and editor" editor either.or.check }
1117 'skip$
1118 if$
1119 }
1120 if$
1121 format.date "year" output.check
1122 date.block
1123 title format.full.book.spec output
1124% format.btitle "title" output.check
1125% crossref missing$
1126% {
1127% format.bvolume output
1128% format.chapter.pages "chapter and pages" output.check
1129% format.number.series output
1130% format.edition output
1131 format.publisher
1132% }
1133% {
1134% format.chapter.pages "chapter and pages" output.check
1135% format.book.crossref output.nonnull
1136% }
1137% if$
1138 format.pages "pages" output.check
1139 format.note output
1140 fin.entry
1141}
1142
1143FUNCTION {incollection}
1144{ output.bibitem
1145 format.authors "author" output.check
1146 author format.key output
1147 name.or.dash
1148 format.date "year" output.check
1149 date.block
1150 bbl.in " " * booktitle format.full.book.spec * output
1151% crossref missing$
1152% { format.in.ed.booktitle "booktitle" output.check
1153% format.bvolume output
1154% format.number.series output
1155% format.edition output
1156% format.chapter.pages output
1157 format.publisher
1158% }
1159% { format.incoll.inproc.crossref output.nonnull
1160% format.chapter.pages output
1161% }
1162% if$
1163 format.pages "pages" output.check
1164 format.note output
1165 fin.entry
1166}
1167
1168FUNCTION {inproceedings}
1169{ output.bibitem
1170 format.authors "author" output.check
1171 author format.key output % added
1172 format.date "year" output.check
1173 date.block
1174 bbl.in " " * booktitle format.full.book.spec * output
1175% crossref missing$
1176% { format.in.ed.booktitle "booktitle" output.check
1177% format.bvolume output
1178% format.number.series output
1179 publisher empty$
1180 { organization output
1181 address output
1182 }
1183 { organization output
1184 format.publisher
1185 }
1186 if$
1187% }
1188% { format.incoll.inproc.crossref output.nonnull
1189% }
1190% if$
1191 format.pages output
1192 format.note output
1193 fin.entry
1194}
1195
1196FUNCTION {conference} { inproceedings }
1197
1198FUNCTION {manual}
1199{ output.bibitem
1200 format.authors output
1201 author format.key output
1202 name.or.dash
1203 format.date "year" output.check
1204 date.block
1205 format.btitle "title" output.check
1206 format.edition output
1207 organization output
1208 address output
1209 format.note output
1210 fin.entry
1211}
1212
1213FUNCTION {mastersthesis}
1214{ output.bibitem
1215 format.authors "author" output.check
1216 author format.key output
1217 name.or.dash
1218 format.date "year" output.check
1219 date.block
1220% format.title "title" output.check
1221 bbl.mthesis format.thesis.type output.nonnull
1222 school "school" output.check
1223 address output
1224 format.note output
1225 fin.entry
1226}
1227
1228FUNCTION {misc}
1229{ output.bibitem
1230 format.authors output
1231 author format.key output
1232 name.or.dash
1233 format.date "year" output.check
1234 date.block
1235 format.title output
1236 howpublished output
1237 format.note output
1238 fin.entry
1239}
1240
1241FUNCTION {phdthesis}
1242{ output.bibitem
1243 format.authors "author" output.check
1244 author format.key output
1245 name.or.dash
1246 format.date "year" output.check
1247 date.block
1248% format.title "title" output.check
1249 bbl.phdthesis format.thesis.type output.nonnull
1250 school "school" output.check
1251 address output
1252 format.note output
1253 fin.entry
1254}
1255
1256FUNCTION {proceedings}
1257{ output.bibitem
1258 editor empty$
1259 { organization output
1260 organization format.key output }
1261 { format.editors output }
1262 if$
1263% format.editors output
1264% editor format.key output
1265 name.or.dash
1266 format.date "year" output.check
1267 date.block
1268 title format.full.book.spec output
1269% format.btitle "title" output.check
1270% format.bvolume output
1271% format.number.series output
1272 publisher empty$ not % No need for warning if no pub.
1273 { format.publisher }
1274 { editor empty$ % For empty editor, organization was already given.
1275 'skip$
1276 { organization output }
1277 if$
1278 address output
1279 }
1280 if$
1281% address output
1282% organization output
1283% publisher output
1284 format.pages output
1285 format.note output
1286 fin.entry
1287}
1288
1289FUNCTION {techreport}
1290{ output.bibitem
1291 format.authors "author" output.check
1292 author format.key output
1293 name.or.dash
1294 format.date "year" output.check
1295 date.block
1296 format.title "title" output.check
1297 format.tr.number output.nonnull
1298 institution "institution" output.check
1299 address output
1300 format.note output
1301 fin.entry
1302}
1303
1304FUNCTION {unpublished}
1305{ output.bibitem
1306 format.authors "author" output.check
1307 author format.key output
1308 name.or.dash
1309 format.date "year" output.check
1310 date.block
1311% format.title "title" output.check
1312 format.note "note" output.check
1313 fin.entry
1314}
1315
1316FUNCTION {default.type} { misc }
1317
1318READ
1319
1320FUNCTION {sortify}
1321{ purify$
1322 "l" change.case$
1323}
1324
1325INTEGERS { len }
1326
1327FUNCTION {chop.word}
1328{ 's :=
1329 'len :=
1330 s #1 len substring$ =
1331 { s len #1 + global.max$ substring$ }
1332 's
1333 if$
1334}
1335
1336FUNCTION {format.lab.names}
1337{ 's :=
1338 s #1 "{vv~}{ll}" format.name$
1339 s num.names$ duplicate$
1340 #2 >
1341 { pop$
1342 " {et~al.}" *
1343 }
1344 { #2 <
1345 'skip$
1346 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1347 {
1348 " {et~al.}" *
1349 }
1350 { " \& " * s #2 "{vv~}{ll}" format.name$
1351 * }
1352 if$
1353 }
1354 if$
1355 }
1356 if$
1357}
1358
1359FUNCTION {author.key.label}
1360{ author empty$
1361 { key empty$
1362 { cite$ #1 #3 substring$ }
1363 'key
1364 if$
1365 }
1366 { author format.lab.names }
1367 if$
1368}
1369
1370FUNCTION {author.editor.key.label}
1371{ author empty$
1372 { editor empty$
1373 { key empty$
1374 { cite$ #1 #3 substring$ }
1375 'key
1376 if$
1377 }
1378 { editor format.lab.names }
1379 if$
1380 }
1381 { author format.lab.names }
1382 if$
1383}
1384
1385FUNCTION {editor.key.label}
1386{ editor empty$
1387 { key empty$
1388 { cite$ #1 #3 substring$ }
1389 'key
1390 if$
1391 }
1392 { editor format.lab.names }
1393 if$
1394}
1395
1396FUNCTION {calc.short.authors}
1397{ type$ "book" =
1398 type$ "inbook" =
1399 or
1400 'author.editor.key.label
1401 { type$ "proceedings" =
1402 'editor.key.label
1403 'author.key.label
1404 if$
1405 }
1406 if$
1407 'short.list :=
1408}
1409
1410FUNCTION {calc.label}
1411{ calc.short.authors
1412 short.list
1413 "("
1414 *
1415 year duplicate$ empty$
1416 { pop$ "????" }
1417 'skip$
1418 if$
1419 *
1420 'label :=
1421}
1422
1423FUNCTION {sort.format.names}
1424{ 's :=
1425 #1 'nameptr :=
1426 ""
1427 s num.names$ 'numnames :=
1428 numnames 'namesleft :=
1429 { namesleft #0 > }
1430 { s nameptr
1431 "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
1432 format.name$ 't :=
1433 nameptr #1 >
1434 {
1435 " " *
1436 namesleft #1 = t "others" = and
1437 { "zzzzz" * }
1438 { t sortify * }
1439 if$
1440 }
1441 { t sortify * }
1442 if$
1443 nameptr #1 + 'nameptr :=
1444 namesleft #1 - 'namesleft :=
1445 }
1446 while$
1447}
1448
1449FUNCTION {sort.format.title}
1450{ 't :=
1451 "A " #2
1452 "An " #3
1453 "The " #4 t chop.word
1454 chop.word
1455 chop.word
1456 sortify
1457 #1 global.max$ substring$
1458}
1459
1460FUNCTION {author.sort}
1461{ author empty$
1462 { key empty$
1463 { "to sort, need author or key in " cite$ * warning$
1464 ""
1465 }
1466 { key sortify }
1467 if$
1468 }
1469 { author sort.format.names }
1470 if$
1471}
1472
1473FUNCTION {author.editor.sort}
1474{ author empty$
1475 { editor empty$
1476 { key empty$
1477 { "to sort, need author, editor, or key in " cite$ * warning$
1478 ""
1479 }
1480 { key sortify }
1481 if$
1482 }
1483 { editor sort.format.names }
1484 if$
1485 }
1486 { author sort.format.names }
1487 if$
1488}
1489
1490FUNCTION {editor.sort}
1491{ editor empty$
1492 { key empty$
1493 { "to sort, need editor or key in " cite$ * warning$
1494 ""
1495 }
1496 { key sortify }
1497 if$
1498 }
1499 { editor sort.format.names }
1500 if$
1501}
1502
1503FUNCTION {presort}
1504{ calc.label
1505 label sortify
1506 " "
1507 *
1508 type$ "book" =
1509 type$ "inbook" =
1510 or
1511 'author.editor.sort
1512 { type$ "proceedings" =
1513 'editor.sort
1514 'author.sort
1515 if$
1516 }
1517 if$
1518 #1 entry.max$ substring$
1519 'sort.label :=
1520 sort.label
1521 *
1522 " "
1523 *
1524 title field.or.null
1525 sort.format.title
1526 *
1527 #1 entry.max$ substring$
1528 'sort.key$ :=
1529}
1530
1531ITERATE {presort}
1532
1533SORT
1534
1535STRINGS { last.label next.extra }
1536
1537INTEGERS { last.extra.num number.label }
1538
1539FUNCTION {initialize.extra.label.stuff}
1540{ #0 int.to.chr$ 'last.label :=
1541 "" 'next.extra :=
1542 #0 'last.extra.num :=
1543 #0 'number.label :=
1544}
1545
1546FUNCTION {forward.pass}
1547{ last.label label =
1548 { last.extra.num #1 + 'last.extra.num :=
1549 last.extra.num int.to.chr$ 'extra.label :=
1550 }
1551 { "a" chr.to.int$ 'last.extra.num :=
1552 "" 'extra.label :=
1553 label 'last.label :=
1554 }
1555 if$
1556 number.label #1 + 'number.label :=
1557}
1558
1559FUNCTION {reverse.pass}
1560{ next.extra "b" =
1561 { "a" 'extra.label := }
1562 'skip$
1563 if$
1564 extra.label 'next.extra :=
1565 extra.label
1566 duplicate$ empty$
1567 'skip$
1568 { "{\natexlab{" swap$ * "}}" * }
1569 if$
1570 'extra.label :=
1571 label extra.label * 'label :=
1572}
1573
1574EXECUTE {initialize.extra.label.stuff}
1575
1576ITERATE {forward.pass}
1577
1578REVERSE {reverse.pass}
1579
1580FUNCTION {bib.sort.order}
1581{ sort.label
1582 " "
1583 *
1584 year field.or.null sortify
1585 *
1586 " "
1587 *
1588 title field.or.null
1589 sort.format.title
1590 *
1591 #1 entry.max$ substring$
1592 'sort.key$ :=
1593}
1594
1595ITERATE {bib.sort.order}
1596
1597SORT
1598
1599FUNCTION {begin.bib}
1600{ preamble$ empty$
1601 'skip$
1602 { preamble$ write$ newline$ }
1603 if$
1604 "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1605 write$ newline$
1606 "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1607 write$ newline$
1608}
1609
1610EXECUTE {begin.bib}
1611
1612EXECUTE {init.state.consts}
1613
1614ITERATE {call.type$}
1615
1616FUNCTION {end.bib}
1617{ newline$
1618 "\end{thebibliography}" write$ newline$
1619}
1620
1621EXECUTE {end.bib}
1622%% End of customized bst file
1623%%
1624%% End of file `apj.bst'.