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 |
|
---|
71 | ENTRY
|
---|
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 |
|
---|
98 | INTEGERS { output.state before.all mid.sentence after.sentence after.block }
|
---|
99 |
|
---|
100 | FUNCTION {init.state.consts}
|
---|
101 | { #0 'before.all :=
|
---|
102 | #1 'mid.sentence :=
|
---|
103 | #2 'after.sentence :=
|
---|
104 | #3 'after.block :=
|
---|
105 | }
|
---|
106 |
|
---|
107 | STRINGS { s t }
|
---|
108 |
|
---|
109 | FUNCTION {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 |
|
---|
130 | FUNCTION {output}
|
---|
131 | { duplicate$ empty$
|
---|
132 | 'pop$
|
---|
133 | 'output.nonnull
|
---|
134 | if$
|
---|
135 | }
|
---|
136 |
|
---|
137 | FUNCTION {output.check}
|
---|
138 | { 't :=
|
---|
139 | duplicate$ empty$
|
---|
140 | { pop$ "empty " t * " in " * cite$ * warning$ }
|
---|
141 | 'output.nonnull
|
---|
142 | if$
|
---|
143 | }
|
---|
144 |
|
---|
145 | FUNCTION {fin.entry}
|
---|
146 | { duplicate$ empty$
|
---|
147 | 'pop$
|
---|
148 | 'write$
|
---|
149 | if$
|
---|
150 | newline$
|
---|
151 | }
|
---|
152 |
|
---|
153 | FUNCTION {new.block}
|
---|
154 | { output.state before.all =
|
---|
155 | 'skip$
|
---|
156 | { after.block 'output.state := }
|
---|
157 | if$
|
---|
158 | }
|
---|
159 |
|
---|
160 | FUNCTION {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 |
|
---|
171 | FUNCTION {add.blank}
|
---|
172 | { " " * before.all 'output.state :=
|
---|
173 | }
|
---|
174 |
|
---|
175 | FUNCTION {date.block}
|
---|
176 | {
|
---|
177 | skip$
|
---|
178 | }
|
---|
179 |
|
---|
180 | FUNCTION {not}
|
---|
181 | { { #0 }
|
---|
182 | { #1 }
|
---|
183 | if$
|
---|
184 | }
|
---|
185 |
|
---|
186 | FUNCTION {and}
|
---|
187 | { 'skip$
|
---|
188 | { pop$ #0 }
|
---|
189 | if$
|
---|
190 | }
|
---|
191 |
|
---|
192 | FUNCTION {or}
|
---|
193 | { { pop$ #1 }
|
---|
194 | 'skip$
|
---|
195 | if$
|
---|
196 | }
|
---|
197 |
|
---|
198 | FUNCTION {new.block.checkb}
|
---|
199 | { empty$
|
---|
200 | swap$ empty$
|
---|
201 | and
|
---|
202 | 'skip$
|
---|
203 | 'new.block
|
---|
204 | if$
|
---|
205 | }
|
---|
206 |
|
---|
207 | FUNCTION {field.or.null}
|
---|
208 | { duplicate$ empty$
|
---|
209 | { pop$ "" }
|
---|
210 | 'skip$
|
---|
211 | if$
|
---|
212 | }
|
---|
213 |
|
---|
214 | FUNCTION {emphasize}
|
---|
215 | { skip$ }
|
---|
216 |
|
---|
217 | FUNCTION {capitalize}
|
---|
218 | { "u" change.case$ "t" change.case$ }
|
---|
219 |
|
---|
220 | FUNCTION {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
|
---|
226 | FUNCTION {bbl.and}
|
---|
227 | { "and"}
|
---|
228 |
|
---|
229 | FUNCTION {bbl.editors}
|
---|
230 | { "eds." }
|
---|
231 |
|
---|
232 | FUNCTION {bbl.editor}
|
---|
233 | { "ed." }
|
---|
234 |
|
---|
235 | FUNCTION {bbl.edby}
|
---|
236 | { "edited by" }
|
---|
237 |
|
---|
238 | FUNCTION {bbl.edition}
|
---|
239 | { "edn." }
|
---|
240 |
|
---|
241 | FUNCTION {bbl.volume}
|
---|
242 | { "Vol." }
|
---|
243 |
|
---|
244 | FUNCTION {bbl.of}
|
---|
245 | { "of" }
|
---|
246 |
|
---|
247 | FUNCTION {bbl.number}
|
---|
248 | { "no." }
|
---|
249 |
|
---|
250 | FUNCTION {bbl.nr}
|
---|
251 | { "no." }
|
---|
252 |
|
---|
253 | FUNCTION {bbl.in}
|
---|
254 | { "in" }
|
---|
255 |
|
---|
256 | FUNCTION {bbl.pages}
|
---|
257 | { "" }
|
---|
258 |
|
---|
259 | FUNCTION {bbl.page}
|
---|
260 | { "" }
|
---|
261 |
|
---|
262 | FUNCTION {bbl.chapter}
|
---|
263 | { "Ch." }
|
---|
264 | %{ "chap." }
|
---|
265 |
|
---|
266 | FUNCTION {bbl.techrep}
|
---|
267 | { "Tech. Rep." }
|
---|
268 |
|
---|
269 | FUNCTION {bbl.mthesis}
|
---|
270 | { "Master's thesis" }
|
---|
271 |
|
---|
272 | FUNCTION {bbl.phdthesis}
|
---|
273 | { "PhD thesis" }
|
---|
274 |
|
---|
275 | FUNCTION {bbl.first}
|
---|
276 | { "1st" }
|
---|
277 |
|
---|
278 | FUNCTION {bbl.second}
|
---|
279 | { "2nd" }
|
---|
280 |
|
---|
281 | FUNCTION {bbl.third}
|
---|
282 | { "3rd" }
|
---|
283 |
|
---|
284 | FUNCTION {bbl.fourth}
|
---|
285 | { "4th" }
|
---|
286 |
|
---|
287 | FUNCTION {bbl.fifth}
|
---|
288 | { "5th" }
|
---|
289 |
|
---|
290 | FUNCTION {bbl.st}
|
---|
291 | { "st" }
|
---|
292 |
|
---|
293 | FUNCTION {bbl.nd}
|
---|
294 | { "nd" }
|
---|
295 |
|
---|
296 | FUNCTION {bbl.rd}
|
---|
297 | { "rd" }
|
---|
298 |
|
---|
299 | FUNCTION {bbl.th}
|
---|
300 | { "th" }
|
---|
301 |
|
---|
302 | MACRO {jan} {"Jan."}
|
---|
303 |
|
---|
304 | MACRO {feb} {"Feb."}
|
---|
305 |
|
---|
306 | MACRO {mar} {"Mar."}
|
---|
307 |
|
---|
308 | MACRO {apr} {"Apr."}
|
---|
309 |
|
---|
310 | MACRO {may} {"May"}
|
---|
311 |
|
---|
312 | MACRO {jun} {"Jun."}
|
---|
313 |
|
---|
314 | MACRO {jul} {"Jul."}
|
---|
315 |
|
---|
316 | MACRO {aug} {"Aug."}
|
---|
317 |
|
---|
318 | MACRO {sep} {"Sep."}
|
---|
319 |
|
---|
320 | MACRO {oct} {"Oct."}
|
---|
321 |
|
---|
322 | MACRO {nov} {"Nov."}
|
---|
323 |
|
---|
324 | MACRO {dec} {"Dec."}
|
---|
325 |
|
---|
326 | FUNCTION {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 |
|
---|
347 | MACRO {acmcs} {"ACM Comput. Surv."}
|
---|
348 |
|
---|
349 | MACRO {acta} {"Acta Inf."}
|
---|
350 |
|
---|
351 | MACRO {cacm} {"Commun. ACM"}
|
---|
352 |
|
---|
353 | MACRO {ibmjrd} {"IBM J. Res. Dev."}
|
---|
354 |
|
---|
355 | MACRO {ibmsj} {"IBM Syst.~J."}
|
---|
356 |
|
---|
357 | MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
|
---|
358 |
|
---|
359 | MACRO {ieeetc} {"IEEE Trans. Comput."}
|
---|
360 |
|
---|
361 | MACRO {ieeetcad}
|
---|
362 | {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
|
---|
363 |
|
---|
364 | MACRO {ipl} {"Inf. Process. Lett."}
|
---|
365 |
|
---|
366 | MACRO {jacm} {"J.~ACM"}
|
---|
367 |
|
---|
368 | MACRO {jcss} {"J.~Comput. Syst. Sci."}
|
---|
369 |
|
---|
370 | MACRO {scp} {"Sci. Comput. Programming"}
|
---|
371 |
|
---|
372 | MACRO {sicomp} {"SIAM J. Comput."}
|
---|
373 |
|
---|
374 | MACRO {tocs} {"ACM Trans. Comput. Syst."}
|
---|
375 |
|
---|
376 | MACRO {tods} {"ACM Trans. Database Syst."}
|
---|
377 |
|
---|
378 | MACRO {tog} {"ACM Trans. Gr."}
|
---|
379 |
|
---|
380 | MACRO {toms} {"ACM Trans. Math. Softw."}
|
---|
381 |
|
---|
382 | MACRO {toois} {"ACM Trans. Office Inf. Syst."}
|
---|
383 |
|
---|
384 | MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
|
---|
385 |
|
---|
386 | MACRO {tcs} {"Theoretical Comput. Sci."}
|
---|
387 |
|
---|
388 | INTEGERS { nameptr namesleft numnames }
|
---|
389 |
|
---|
390 | FUNCTION {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 |
|
---|
434 | FUNCTION {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 |
|
---|
474 | FUNCTION {format.key}
|
---|
475 | { empty$
|
---|
476 | { key field.or.null }
|
---|
477 | { "" }
|
---|
478 | if$
|
---|
479 | }
|
---|
480 |
|
---|
481 | FUNCTION {format.authors}
|
---|
482 | { author empty$
|
---|
483 | { "" }
|
---|
484 | { author format.names }
|
---|
485 | if$
|
---|
486 | }
|
---|
487 |
|
---|
488 | FUNCTION {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 |
|
---|
500 | FUNCTION {format.in.editors}
|
---|
501 | { editor empty$
|
---|
502 | { "" }
|
---|
503 | { editor format.names.ed
|
---|
504 | }
|
---|
505 | if$
|
---|
506 | }
|
---|
507 |
|
---|
508 | FUNCTION {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 |
|
---|
526 | FUNCTION {format.title}
|
---|
527 | { title empty$
|
---|
528 | { "" }
|
---|
529 | { title
|
---|
530 | }
|
---|
531 | if$
|
---|
532 | }
|
---|
533 |
|
---|
534 | FUNCTION {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 |
|
---|
573 | FUNCTION {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 |
|
---|
588 | FUNCTION {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 |
|
---|
599 | FUNCTION {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 |
|
---|
610 | FUNCTION {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 |
|
---|
623 | FUNCTION {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 |
|
---|
639 | FUNCTION {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 |
|
---|
665 | FUNCTION {word.in}
|
---|
666 | { bbl.in
|
---|
667 | " " * }
|
---|
668 |
|
---|
669 | FUNCTION {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 |
|
---|
680 | FUNCTION {format.btitle}
|
---|
681 | { title
|
---|
682 | }
|
---|
683 |
|
---|
684 | FUNCTION {tie.or.space.connect}
|
---|
685 | { duplicate$ text.length$ #3 <
|
---|
686 | { "~" }
|
---|
687 | { " " }
|
---|
688 | if$
|
---|
689 | swap$ * *
|
---|
690 | }
|
---|
691 |
|
---|
692 | FUNCTION {either.or.check}
|
---|
693 | { empty$
|
---|
694 | 'pop$
|
---|
695 | { "can't use both " swap$ * " fields in " * cite$ * warning$ }
|
---|
696 | if$
|
---|
697 | }
|
---|
698 |
|
---|
699 | FUNCTION {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 |
|
---|
712 | FUNCTION {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 |
|
---|
732 | FUNCTION {is.num}
|
---|
733 | { chr.to.int$
|
---|
734 | duplicate$ "0" chr.to.int$ < not
|
---|
735 | swap$ "9" chr.to.int$ > not and
|
---|
736 | }
|
---|
737 |
|
---|
738 | FUNCTION {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 |
|
---|
756 | FUNCTION {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 |
|
---|
785 | FUNCTION {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 |
|
---|
796 | INTEGERS { multiresult }
|
---|
797 |
|
---|
798 | FUNCTION {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 |
|
---|
818 | FUNCTION {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 |
|
---|
831 | FUNCTION {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 |
|
---|
841 | FUNCTION {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 |
|
---|
855 | FUNCTION {format.vol.num.pages}
|
---|
856 | { volume field.or.null
|
---|
857 | }
|
---|
858 |
|
---|
859 | FUNCTION {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 |
|
---|
871 | FUNCTION {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 |
|
---|
890 | FUNCTION {format.thesis.type}
|
---|
891 | { type empty$
|
---|
892 | 'skip$
|
---|
893 | { pop$
|
---|
894 | type "t" change.case$
|
---|
895 | }
|
---|
896 | if$
|
---|
897 | }
|
---|
898 |
|
---|
899 | FUNCTION {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 |
|
---|
910 | FUNCTION {format.article.crossref}
|
---|
911 | {
|
---|
912 | word.in
|
---|
913 | " \cite{" * crossref * "}" *
|
---|
914 | }
|
---|
915 |
|
---|
916 | FUNCTION {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 |
|
---|
928 | FUNCTION {format.incoll.inproc.crossref}
|
---|
929 | {
|
---|
930 | word.in
|
---|
931 | " \cite{" * crossref * "}" *
|
---|
932 | }
|
---|
933 |
|
---|
934 | FUNCTION {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 |
|
---|
963 | STRINGS {oldname}
|
---|
964 |
|
---|
965 | FUNCTION {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 |
|
---|
979 | FUNCTION {format.edn.btitle} % Title should be on stack.
|
---|
980 | { duplicate$ empty$ edition empty$ or
|
---|
981 | 'skip$
|
---|
982 | { ", " * format.edition * }
|
---|
983 | if$
|
---|
984 | }
|
---|
985 |
|
---|
986 | FUNCTION {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 |
|
---|
998 | FUNCTION {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 |
|
---|
1037 | FUNCTION {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 |
|
---|
1058 | FUNCTION {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 |
|
---|
1092 | FUNCTION {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 |
|
---|
1106 | FUNCTION {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 |
|
---|
1143 | FUNCTION {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 |
|
---|
1168 | FUNCTION {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 |
|
---|
1196 | FUNCTION {conference} { inproceedings }
|
---|
1197 |
|
---|
1198 | FUNCTION {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 |
|
---|
1213 | FUNCTION {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 |
|
---|
1228 | FUNCTION {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 |
|
---|
1241 | FUNCTION {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 |
|
---|
1256 | FUNCTION {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 |
|
---|
1289 | FUNCTION {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 |
|
---|
1304 | FUNCTION {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 |
|
---|
1316 | FUNCTION {default.type} { misc }
|
---|
1317 |
|
---|
1318 | READ
|
---|
1319 |
|
---|
1320 | FUNCTION {sortify}
|
---|
1321 | { purify$
|
---|
1322 | "l" change.case$
|
---|
1323 | }
|
---|
1324 |
|
---|
1325 | INTEGERS { len }
|
---|
1326 |
|
---|
1327 | FUNCTION {chop.word}
|
---|
1328 | { 's :=
|
---|
1329 | 'len :=
|
---|
1330 | s #1 len substring$ =
|
---|
1331 | { s len #1 + global.max$ substring$ }
|
---|
1332 | 's
|
---|
1333 | if$
|
---|
1334 | }
|
---|
1335 |
|
---|
1336 | FUNCTION {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 |
|
---|
1359 | FUNCTION {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 |
|
---|
1370 | FUNCTION {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 |
|
---|
1385 | FUNCTION {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 |
|
---|
1396 | FUNCTION {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 |
|
---|
1410 | FUNCTION {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 |
|
---|
1423 | FUNCTION {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 |
|
---|
1449 | FUNCTION {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 |
|
---|
1460 | FUNCTION {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 |
|
---|
1473 | FUNCTION {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 |
|
---|
1490 | FUNCTION {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 |
|
---|
1503 | FUNCTION {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 |
|
---|
1531 | ITERATE {presort}
|
---|
1532 |
|
---|
1533 | SORT
|
---|
1534 |
|
---|
1535 | STRINGS { last.label next.extra }
|
---|
1536 |
|
---|
1537 | INTEGERS { last.extra.num number.label }
|
---|
1538 |
|
---|
1539 | FUNCTION {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 |
|
---|
1546 | FUNCTION {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 |
|
---|
1559 | FUNCTION {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 |
|
---|
1574 | EXECUTE {initialize.extra.label.stuff}
|
---|
1575 |
|
---|
1576 | ITERATE {forward.pass}
|
---|
1577 |
|
---|
1578 | REVERSE {reverse.pass}
|
---|
1579 |
|
---|
1580 | FUNCTION {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 |
|
---|
1595 | ITERATE {bib.sort.order}
|
---|
1596 |
|
---|
1597 | SORT
|
---|
1598 |
|
---|
1599 | FUNCTION {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 |
|
---|
1610 | EXECUTE {begin.bib}
|
---|
1611 |
|
---|
1612 | EXECUTE {init.state.consts}
|
---|
1613 |
|
---|
1614 | ITERATE {call.type$}
|
---|
1615 |
|
---|
1616 | FUNCTION {end.bib}
|
---|
1617 | { newline$
|
---|
1618 | "\end{thebibliography}" write$ newline$
|
---|
1619 | }
|
---|
1620 |
|
---|
1621 | EXECUTE {end.bib}
|
---|
1622 | %% End of customized bst file
|
---|
1623 | %%
|
---|
1624 | %% End of file `apj.bst'.
|
---|