1 |
%$Header: /cvsroot/esrg/sfesrg/esrgpubs/acm0010/paper/esub2acm.bst,v 1.1 2001/09/25 21:44:55 dtashley Exp $ |
2 |
%% |
3 |
%%-------------------------------------------------------------- |
4 |
%% This file is the ESUB2ACM.BST file, downloaded from the |
5 |
%% ACM's web site in 10/2000, to allow preparation of a |
6 |
%% rational approximation paper and other papers for ACM |
7 |
%% journals. |
8 |
%% |
9 |
%% This file is placed under a version control system |
10 |
%% (Microsoft Visual Source Safe 6.0) at Dave Ashley's home. |
11 |
%% All changes to this file will be accompanied by |
12 |
%% comments automatically inserted in the change history at the |
13 |
%% end of the file. |
14 |
%%-------------------------------------------------------------- |
15 |
%% |
16 |
%% THIS FILE IS ESUB2ACM.BST V1.1 (11/11/96) |
17 |
%% |
18 |
%% THE masterthesis AND phdthesis FUNCTIONS HAVE BEEN FIXED. |
19 |
%% |
20 |
%% This is file `esub2acm.bst', BASED ON 'ACMTRANS.BST' which |
21 |
%% was originally generated on <1995/8/22> |
22 |
%% with the docstrip utility (2.2i). |
23 |
%% |
24 |
%% esub2acm.bst (V1.1) should be used with esub2acm.sty (V1.0) |
25 |
%% |
26 |
%% Both of these files (and others) can be downloaded from |
27 |
%% ACM's FTP site at: ftp.acm.org in the directory: |
28 |
%% /pubs/submitting_accepted_articles/latex/ |
29 |
%% |
30 |
%% The original source files were: |
31 |
%% |
32 |
%% acmtrans.dtx |
33 |
%% |
34 |
%% IMPORTANT NOTICE: |
35 |
%% You are not allowed to distribute this file. |
36 |
%% For distribution of the original source see |
37 |
%% the copyright notice in the file acmtrans.dtx . |
38 |
%% |
39 |
ENTRY |
40 |
{ address |
41 |
author |
42 |
booktitle |
43 |
chapter |
44 |
edition |
45 |
editor |
46 |
howpublished |
47 |
institution |
48 |
journal |
49 |
key |
50 |
month |
51 |
note |
52 |
number |
53 |
organization |
54 |
pages |
55 |
publisher |
56 |
pub-year |
57 |
pub-month |
58 |
pub-address |
59 |
school |
60 |
series |
61 |
title |
62 |
type |
63 |
volume |
64 |
year |
65 |
} |
66 |
{} |
67 |
{ label.year extra.label sort.year sort.label } |
68 |
INTEGERS { |
69 |
output.state |
70 |
before.all |
71 |
mid.sentence |
72 |
after.sentence |
73 |
after.block |
74 |
} |
75 |
FUNCTION {init.state.consts} |
76 |
{ #0 'before.all := |
77 |
#1 'mid.sentence := |
78 |
#2 'after.sentence := |
79 |
#3 'after.block := |
80 |
} |
81 |
STRINGS { s t u } |
82 |
FUNCTION {output.nonnull} |
83 |
{ 's := |
84 |
output.state mid.sentence = |
85 |
{ ", " * write$ } |
86 |
{ output.state after.block = |
87 |
{ add.period$ write$ |
88 |
newline$ |
89 |
"\newblock " write$ |
90 |
} |
91 |
{ output.state before.all = |
92 |
'write$ |
93 |
{ add.period$ " " * write$ } |
94 |
if$ |
95 |
} |
96 |
if$ |
97 |
mid.sentence 'output.state := |
98 |
} |
99 |
if$ |
100 |
s |
101 |
} |
102 |
FUNCTION {output.nonnull.colon} |
103 |
{ 's := |
104 |
output.state mid.sentence = |
105 |
{ ": " * write$ } |
106 |
{ output.state after.block = |
107 |
{ add.period$ write$ |
108 |
newline$ |
109 |
"\newblock " write$ |
110 |
} |
111 |
{ output.state before.all = |
112 |
'write$ |
113 |
{ add.period$ " " * write$ } |
114 |
if$ |
115 |
} |
116 |
if$ |
117 |
mid.sentence 'output.state := |
118 |
} |
119 |
if$ |
120 |
s |
121 |
} |
122 |
FUNCTION {output} |
123 |
{ duplicate$ empty$ |
124 |
'pop$ |
125 |
'output.nonnull |
126 |
if$ |
127 |
} |
128 |
FUNCTION {output.colon} |
129 |
{ duplicate$ empty$ |
130 |
'pop$ |
131 |
'output.nonnull.colon |
132 |
if$ |
133 |
} |
134 |
FUNCTION {output.check} |
135 |
{ 't := |
136 |
duplicate$ empty$ |
137 |
{ pop$ "empty " t * " in " * cite$ * warning$ } |
138 |
'output.nonnull |
139 |
if$ |
140 |
} |
141 |
FUNCTION {output.check.colon} |
142 |
{ 't := |
143 |
duplicate$ empty$ |
144 |
{ pop$ "empty " t * " in " * cite$ * warning$ } |
145 |
'output.nonnull.colon |
146 |
if$ |
147 |
} |
148 |
FUNCTION {new.block} |
149 |
{ output.state before.all = |
150 |
'skip$ |
151 |
{ after.block 'output.state := } |
152 |
if$ |
153 |
} |
154 |
FUNCTION {new.sentence} |
155 |
{ |
156 |
output.state after.block = |
157 |
'skip$ |
158 |
{ output.state before.all = |
159 |
'skip$ |
160 |
{ after.sentence 'output.state := } |
161 |
if$ |
162 |
} |
163 |
if$ |
164 |
} |
165 |
FUNCTION {output.year.check} |
166 |
{ year empty$ |
167 |
{ "empty year in " cite$ * warning$ } |
168 |
{ add.period$ write$ |
169 |
" \bibyear{" year * extra.label * "}" * |
170 |
mid.sentence 'output.state := |
171 |
} |
172 |
if$ |
173 |
} |
174 |
FUNCTION {fin.entry} |
175 |
{ add.period$ |
176 |
write$ |
177 |
newline$ |
178 |
} |
179 |
FUNCTION {not} |
180 |
{ { #0 } |
181 |
{ #1 } |
182 |
if$ |
183 |
} |
184 |
FUNCTION {and} |
185 |
{ 'skip$ |
186 |
{ pop$ #0 } |
187 |
if$ |
188 |
} |
189 |
FUNCTION {or} |
190 |
{ { pop$ #1 } |
191 |
'skip$ |
192 |
if$ |
193 |
} |
194 |
FUNCTION {new.block.checka} |
195 |
{ empty$ |
196 |
'skip$ |
197 |
'new.block |
198 |
if$ |
199 |
} |
200 |
FUNCTION {new.block.checkb} |
201 |
{ empty$ |
202 |
swap$ empty$ |
203 |
and |
204 |
'skip$ |
205 |
'new.block |
206 |
if$ |
207 |
} |
208 |
FUNCTION {new.sentence.checka} |
209 |
{ empty$ |
210 |
'skip$ |
211 |
'new.sentence |
212 |
if$ |
213 |
} |
214 |
FUNCTION {new.sentence.checkb} |
215 |
{ empty$ |
216 |
swap$ empty$ |
217 |
and |
218 |
'skip$ |
219 |
'new.sentence |
220 |
if$ |
221 |
} |
222 |
FUNCTION {field.or.null} |
223 |
{ duplicate$ empty$ |
224 |
{ pop$ "" } |
225 |
'skip$ |
226 |
if$ |
227 |
} |
228 |
FUNCTION {parenthesize} |
229 |
{ duplicate$ empty$ |
230 |
{ pop$ "" } |
231 |
{ " (" swap$ * ")" * } |
232 |
if$ |
233 |
} |
234 |
FUNCTION {emphasize} |
235 |
{ duplicate$ empty$ |
236 |
{ pop$ "" } |
237 |
{ "\bibemph{" swap$ * "}" * } |
238 |
if$ |
239 |
} |
240 |
FUNCTION {emphasize.ic} |
241 |
{ duplicate$ empty$ |
242 |
{ pop$ "" } |
243 |
{ "\bibemphic{" swap$ * "}" * } |
244 |
if$ |
245 |
} |
246 |
FUNCTION {emphasize.comma} |
247 |
{ duplicate$ empty$ |
248 |
{ pop$ "" } |
249 |
{ emphasize "," * } |
250 |
if$ |
251 |
} |
252 |
FUNCTION {smallcaps} |
253 |
{ duplicate$ empty$ |
254 |
{ pop$ "" } |
255 |
{ "\bibsc{" swap$ * "}" * } |
256 |
if$ |
257 |
} |
258 |
INTEGERS { nameptr namesleft numnames } |
259 |
FUNCTION {format.names} |
260 |
{ 's := |
261 |
#1 'nameptr := % nameptr = 1; |
262 |
s num.names$ 'numnames := % numnames = num.name$(s); |
263 |
numnames 'namesleft := |
264 |
{ namesleft #0 > } |
265 |
{ |
266 |
s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := |
267 |
nameptr #1 > |
268 |
{ namesleft #1 > |
269 |
{ ", " * t * } |
270 |
{ numnames #2 > |
271 |
{ "," * } |
272 |
'skip$ |
273 |
if$ |
274 |
t "others" = |
275 |
{ " et~al." * } |
276 |
{ " and " * t * } % from Chicago Manual of Style |
277 |
if$ |
278 |
} |
279 |
if$ |
280 |
} |
281 |
't |
282 |
if$ |
283 |
nameptr #1 + 'nameptr := % nameptr += 1; |
284 |
namesleft #1 - 'namesleft := % namesleft =- 1; |
285 |
} |
286 |
while$ |
287 |
smallcaps |
288 |
} |
289 |
FUNCTION {my.full.label} |
290 |
{ 's := |
291 |
#1 'nameptr := % nameptr = 1; |
292 |
s num.names$ 'numnames := % numnames = num.name$(s); |
293 |
numnames 'namesleft := |
294 |
{ namesleft #0 > } |
295 |
{ s nameptr "{vv~}{ll}" format.name$ 't := % get the next name |
296 |
nameptr #1 > |
297 |
{ namesleft #1 > |
298 |
{ ", " * t * } |
299 |
{ numnames #2 > |
300 |
{ "," * } |
301 |
'skip$ |
302 |
if$ |
303 |
t "others" = |
304 |
{ " et~al." * } |
305 |
{ " and " * t * } % from Chicago Manual of Style |
306 |
if$ |
307 |
} |
308 |
if$ |
309 |
} |
310 |
't |
311 |
if$ |
312 |
nameptr #1 + 'nameptr := % nameptr += 1; |
313 |
namesleft #1 - 'namesleft := % namesleft =- 1; |
314 |
} |
315 |
while$ |
316 |
} |
317 |
FUNCTION {format.names.fml} |
318 |
{ 's := |
319 |
#1 'nameptr := % nameptr = 1; |
320 |
s num.names$ 'numnames := % numnames = num.name$(s); |
321 |
numnames 'namesleft := |
322 |
{ namesleft #0 > } |
323 |
{ s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := |
324 |
nameptr #1 > |
325 |
{ namesleft #1 > |
326 |
{ ", " * t * } |
327 |
{ numnames #2 > |
328 |
{ "," * } |
329 |
'skip$ |
330 |
if$ |
331 |
t "others" = |
332 |
{ " et~al." * } |
333 |
{ " and " * t * } |
334 |
if$ |
335 |
} |
336 |
if$ |
337 |
} |
338 |
't |
339 |
if$ |
340 |
nameptr #1 + 'nameptr := % nameptr += 1; |
341 |
namesleft #1 - 'namesleft := % namesleft =- 1; |
342 |
} |
343 |
while$ |
344 |
smallcaps |
345 |
} |
346 |
FUNCTION {format.authors} |
347 |
{ author empty$ |
348 |
{ "" } |
349 |
{ author format.names } |
350 |
if$ |
351 |
} |
352 |
FUNCTION {format.key} |
353 |
{ empty$ |
354 |
{ key field.or.null } |
355 |
{ "" } |
356 |
if$ |
357 |
} |
358 |
FUNCTION {format.editors.fml} |
359 |
{ editor empty$ |
360 |
{ "" } |
361 |
{ editor format.names.fml |
362 |
editor num.names$ #1 > |
363 |
{ " Eds." * } |
364 |
{ " Ed." * } |
365 |
if$ |
366 |
} |
367 |
if$ |
368 |
} |
369 |
FUNCTION {format.editors} |
370 |
{ editor empty$ |
371 |
{ "" } |
372 |
{ editor format.names |
373 |
editor num.names$ #1 > |
374 |
{ " Eds." * } |
375 |
{ " Ed." * } |
376 |
if$ |
377 |
} |
378 |
if$ |
379 |
} |
380 |
FUNCTION {format.title} |
381 |
{ title empty$ |
382 |
{ "" } |
383 |
{ title "t" change.case$ } |
384 |
if$ |
385 |
} |
386 |
FUNCTION {n.dashify} |
387 |
{ 't := |
388 |
"" |
389 |
{ t empty$ not } |
390 |
{ t #1 #1 substring$ "-" = |
391 |
{ t #1 #2 substring$ "--" = not |
392 |
{ "--" * |
393 |
t #2 global.max$ substring$ 't := |
394 |
} |
395 |
{ { t #1 #1 substring$ "-" = } |
396 |
{ "-" * |
397 |
t #2 global.max$ substring$ 't := |
398 |
} |
399 |
while$ |
400 |
} |
401 |
if$ |
402 |
} |
403 |
{ t #1 #1 substring$ * |
404 |
t #2 global.max$ substring$ 't := |
405 |
} |
406 |
if$ |
407 |
} |
408 |
while$ |
409 |
} |
410 |
FUNCTION {format.btitle} |
411 |
{ edition empty$ |
412 |
{ title emphasize } |
413 |
{ title empty$ |
414 |
{ title emphasize } |
415 |
{ volume empty$ % gnp - check for volume, then don't need period |
416 |
{ title emphasize.ic edition " ed." * parenthesize * "." * } |
417 |
{ title emphasize.ic edition " ed." * parenthesize * } |
418 |
if$ |
419 |
} |
420 |
if$ |
421 |
} |
422 |
if$ |
423 |
} |
424 |
FUNCTION {format.emphasize.booktitle} |
425 |
{ edition empty$ |
426 |
{ booktitle emphasize.ic } |
427 |
{ booktitle empty$ |
428 |
{ booktitle emphasize } |
429 |
{ volume empty$ % gnp - extra period an error if book has a volume |
430 |
{ booktitle emphasize.ic edition " ed." * parenthesize * "." *} |
431 |
{ booktitle emphasize.ic edition " ed." * parenthesize * } |
432 |
if$ |
433 |
} |
434 |
if$ |
435 |
} |
436 |
if$ |
437 |
} |
438 |
FUNCTION {tie.or.space.connect} |
439 |
{ duplicate$ text.length$ #3 < |
440 |
{ "~" } |
441 |
{ " " } |
442 |
if$ |
443 |
swap$ * * |
444 |
} |
445 |
FUNCTION {either.or.check} |
446 |
{ empty$ |
447 |
'pop$ |
448 |
{ "can't use both " swap$ * " fields in " * cite$ * warning$ } |
449 |
if$ |
450 |
} |
451 |
FUNCTION {format.bvolume} |
452 |
{ volume empty$ |
453 |
{ "" } |
454 |
{ "Volume" volume tie.or.space.connect % gnp - changed to mixed case |
455 |
series empty$ |
456 |
'skip$ |
457 |
{ " of " * series emphasize * } |
458 |
if$ |
459 |
"volume and number" number either.or.check |
460 |
} |
461 |
if$ |
462 |
} |
463 |
FUNCTION {format.number.series} |
464 |
{ volume empty$ |
465 |
{ number empty$ |
466 |
{ series field.or.null } |
467 |
{ "Number" number tie.or.space.connect |
468 |
series empty$ |
469 |
{ "there's a number but no series in " cite$ * warning$ } |
470 |
{ " in " * series * } |
471 |
if$ |
472 |
} |
473 |
if$ |
474 |
} |
475 |
{ "" } |
476 |
if$ |
477 |
} |
478 |
INTEGERS { multiresult } |
479 |
FUNCTION {multi.page.check} |
480 |
{ 't := |
481 |
#0 'multiresult := |
482 |
{ multiresult not |
483 |
t empty$ not |
484 |
and |
485 |
} |
486 |
{ t #1 #1 substring$ |
487 |
duplicate$ "-" = |
488 |
swap$ duplicate$ "," = |
489 |
swap$ "+" = |
490 |
or or |
491 |
{ #1 'multiresult := } |
492 |
{ t #2 global.max$ substring$ 't := } |
493 |
if$ |
494 |
} |
495 |
while$ |
496 |
multiresult |
497 |
} |
498 |
FUNCTION {format.pages} |
499 |
{ pages empty$ |
500 |
{ "" } |
501 |
{ |
502 |
"pp.\ " pages n.dashify tie.or.space.connect |
503 |
} |
504 |
if$ |
505 |
} |
506 |
FUNCTION {format.jour.vol} |
507 |
{ journal empty$ |
508 |
{ "no journal in " cite$ * warning$ |
509 |
"" } |
510 |
{ journal emphasize.ic } |
511 |
if$ |
512 |
number empty$ |
513 |
{ volume empty$ |
514 |
{ "no number and no volume in " cite$ * warning$ |
515 |
"" * } |
516 |
{ "~" * volume emphasize * } |
517 |
if$ |
518 |
} |
519 |
{ volume empty$ |
520 |
{"no volume for " cite$ * warning$ |
521 |
"~" * number * } |
522 |
{ "~" * |
523 |
volume emphasize.comma |
524 |
"~" * number * * } |
525 |
if$ |
526 |
month empty$ |
527 |
'skip$ |
528 |
{month parenthesize *} |
529 |
if$ |
530 |
} |
531 |
if$ |
532 |
pages empty$ |
533 |
{"page numbers missing in " cite$ * warning$ |
534 |
"" * } % gnp - place a null string on the stack for output |
535 |
{ duplicate$ empty$ |
536 |
{ pop$ format.pages } |
537 |
{ ", " * pages n.dashify * } % gnp - removed pp. for articles |
538 |
if$ |
539 |
} |
540 |
if$ |
541 |
} |
542 |
FUNCTION {format.chapter.pages} |
543 |
{ chapter empty$ |
544 |
'format.pages |
545 |
{ type empty$ |
546 |
{ "Chapter" } % gnp - changed to mixed case |
547 |
{ type "t" change.case$ } |
548 |
if$ |
549 |
chapter tie.or.space.connect |
550 |
pages empty$ |
551 |
{"page numbers missing in " cite$ * warning$}%gnp - added check |
552 |
{ ", " * format.pages * } |
553 |
if$ |
554 |
} |
555 |
if$ |
556 |
} |
557 |
FUNCTION {format.in.ed.booktitle} |
558 |
{ booktitle empty$ |
559 |
{ "" } |
560 |
{ editor empty$ |
561 |
{ "In " format.emphasize.booktitle * } |
562 |
{ "In " format.editors.fml * ", " * format.emphasize.booktitle * } |
563 |
if$ |
564 |
} |
565 |
if$ |
566 |
} |
567 |
FUNCTION {format.thesis.title} |
568 |
{ title empty$ |
569 |
'skip$ |
570 |
{ { "" } |
571 |
title "t" change.case$ |
572 |
} |
573 |
if$ |
574 |
} |
575 |
FUNCTION {format.tr.number} |
576 |
{ type empty$ |
577 |
{ "Technical Report" } |
578 |
'type |
579 |
if$ |
580 |
number empty$ |
581 |
{ "t" change.case$ } |
582 |
{ number tie.or.space.connect } |
583 |
if$ |
584 |
} |
585 |
FUNCTION {format.lab.names} |
586 |
{ 's := |
587 |
s num.names$ 'numnames := |
588 |
numnames #2 > % change number to number of others allowed before |
589 |
% forcing "et al". |
590 |
{ s #1 "{vv~}{ll}" format.name$ " et~al." * } |
591 |
{ |
592 |
numnames #1 - 'namesleft := |
593 |
#2 'nameptr := |
594 |
s #1 "{vv~}{ll}" format.name$ |
595 |
{ namesleft #0 > } |
596 |
{ nameptr numnames = |
597 |
{ s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = |
598 |
{ " et~al." * } |
599 |
{ " and " * s nameptr "{vv~}{ll}" format.name$ * } |
600 |
if$ |
601 |
} |
602 |
{ ", " * s nameptr "{vv~}{ll}" format.name$ * } |
603 |
if$ |
604 |
nameptr #1 + 'nameptr := |
605 |
namesleft #1 - 'namesleft := |
606 |
} |
607 |
while$ |
608 |
} |
609 |
if$ |
610 |
} |
611 |
FUNCTION {author.key.label} |
612 |
{ author empty$ |
613 |
{ key empty$ |
614 |
{ "no key, author in " cite$ * warning$ |
615 |
cite$ #1 #3 substring$ } |
616 |
'key |
617 |
if$ |
618 |
} |
619 |
{ author format.lab.names } |
620 |
if$ |
621 |
} |
622 |
FUNCTION {editor.key.label} |
623 |
{ editor empty$ |
624 |
{ key empty$ |
625 |
{ "no key, editor in " cite$ * warning$ |
626 |
cite$ #1 #3 substring$ } |
627 |
'key |
628 |
if$ |
629 |
} |
630 |
{ editor format.lab.names } |
631 |
if$ |
632 |
} |
633 |
FUNCTION {author.key.org.label} |
634 |
{ author empty$ |
635 |
{ organization empty$ |
636 |
{ key empty$ |
637 |
{ "no key, author or organization in " cite$ * warning$ |
638 |
cite$ #1 #3 substring$ } |
639 |
'key |
640 |
if$ |
641 |
} |
642 |
'organization |
643 |
if$ |
644 |
} |
645 |
{ author format.lab.names } |
646 |
if$ |
647 |
} |
648 |
FUNCTION {editor.key.org.label} |
649 |
{ editor empty$ |
650 |
{ organization empty$ |
651 |
{ key empty$ |
652 |
{ "no key, editor or organization in " cite$ * warning$ |
653 |
cite$ #1 #3 substring$ } |
654 |
'key |
655 |
if$ |
656 |
} |
657 |
'organization |
658 |
if$ |
659 |
} |
660 |
{ editor format.lab.names } |
661 |
if$ |
662 |
} |
663 |
FUNCTION {author.editor.key.label} |
664 |
{ author empty$ |
665 |
{ editor empty$ |
666 |
{ key empty$ |
667 |
{ "no key, author, or editor in " cite$ * warning$ |
668 |
cite$ #1 #3 substring$ } |
669 |
'key |
670 |
if$ |
671 |
} |
672 |
{ editor format.lab.names } |
673 |
if$ |
674 |
} |
675 |
{ author format.lab.names } |
676 |
if$ |
677 |
} |
678 |
FUNCTION {calc.label} |
679 |
{ type$ "book" = |
680 |
type$ "inbook" = |
681 |
or |
682 |
'author.editor.key.label |
683 |
{ type$ "proceedings" = |
684 |
'editor.key.org.label |
685 |
{ type$ "manual" = |
686 |
'author.key.org.label |
687 |
'author.key.label |
688 |
if$ |
689 |
} |
690 |
if$ |
691 |
} |
692 |
if$ |
693 |
author empty$ % generate the full label citation information. |
694 |
{ editor empty$ |
695 |
{ organization empty$ |
696 |
{ "no author, editor, or organization in " cite$ * warning$ |
697 |
"??" } |
698 |
'organization |
699 |
if$ |
700 |
} |
701 |
{ editor my.full.label } |
702 |
if$ |
703 |
} |
704 |
{ author my.full.label } |
705 |
if$ |
706 |
"}{" * swap$ * "}{" * |
707 |
year field.or.null purify$ #-1 #4 substring$ |
708 |
'label.year := |
709 |
} |
710 |
FUNCTION {output.bibitem} |
711 |
{ newline$ |
712 |
"\bibitem[\protect\citeauthoryear{" write$ |
713 |
calc.label write$ |
714 |
sort.year write$ |
715 |
"}]{" write$ |
716 |
cite$ write$ |
717 |
"}" write$ |
718 |
newline$ |
719 |
"" |
720 |
before.all 'output.state := |
721 |
} |
722 |
FUNCTION {article} |
723 |
{ |
724 |
output.bibitem |
725 |
format.authors "author" output.check |
726 |
author format.key output % added |
727 |
output.year.check % added |
728 |
new.block |
729 |
format.title "title" output.check |
730 |
new.block |
731 |
format.jour.vol output |
732 |
new.block |
733 |
note output |
734 |
fin.entry |
735 |
} |
736 |
FUNCTION {book} |
737 |
{ output.bibitem |
738 |
author empty$ |
739 |
{ format.editors "author and editor" output.check } |
740 |
{ format.authors |
741 |
output.nonnull |
742 |
crossref missing$ |
743 |
{ "author and editor" editor either.or.check } |
744 |
'skip$ |
745 |
if$ |
746 |
} |
747 |
if$ |
748 |
output.year.check % added |
749 |
new.block |
750 |
format.btitle "title" output.check |
751 |
format.bvolume output |
752 |
new.block |
753 |
format.number.series output |
754 |
new.sentence |
755 |
publisher "publisher" output.check |
756 |
address output |
757 |
new.block |
758 |
note output |
759 |
fin.entry |
760 |
} |
761 |
FUNCTION {booklet} |
762 |
{ output.bibitem |
763 |
format.authors output |
764 |
author format.key output % added |
765 |
output.year.check % added |
766 |
new.block |
767 |
format.title "title" output.check |
768 |
new.block |
769 |
howpublished output |
770 |
address output |
771 |
new.block |
772 |
note output |
773 |
fin.entry |
774 |
} |
775 |
FUNCTION {inbook} |
776 |
{ output.bibitem |
777 |
author empty$ |
778 |
{ format.editors "author and editor" output.check |
779 |
} |
780 |
{ format.authors output.nonnull |
781 |
crossref missing$ |
782 |
{ "author and editor" editor either.or.check } |
783 |
'skip$ |
784 |
if$ |
785 |
} |
786 |
if$ |
787 |
output.year.check % added |
788 |
new.block |
789 |
format.btitle "title" output.check |
790 |
format.bvolume output |
791 |
format.chapter.pages "chapter and pages" output.check |
792 |
new.block |
793 |
format.number.series output |
794 |
new.sentence |
795 |
publisher "publisher" output.check.colon |
796 |
address output |
797 |
new.block |
798 |
note output |
799 |
fin.entry |
800 |
} |
801 |
FUNCTION {incollection} |
802 |
{ output.bibitem |
803 |
format.authors "author" output.check |
804 |
author format.key output % added |
805 |
output.year.check % added |
806 |
new.block |
807 |
format.title "title" output.check |
808 |
new.block |
809 |
format.in.ed.booktitle "booktitle" output.check |
810 |
format.bvolume output |
811 |
format.number.series output |
812 |
format.chapter.pages output % gnp - was special.output.nonnull |
813 |
new.sentence |
814 |
address output |
815 |
publisher "publisher" output.check.colon |
816 |
new.block |
817 |
note output |
818 |
fin.entry |
819 |
} |
820 |
FUNCTION {format.date} |
821 |
{ year empty$ |
822 |
{ month empty$ |
823 |
{ "" } |
824 |
{ "there's a month but no year in " cite$ * warning$ |
825 |
month |
826 |
} |
827 |
if$ |
828 |
} |
829 |
{ month empty$ |
830 |
'year |
831 |
{ month " " * year * } |
832 |
if$ |
833 |
} |
834 |
if$ |
835 |
} |
836 |
FUNCTION {format.proc.loc.date} |
837 |
{ |
838 |
address field.or.null |
839 |
format.date |
840 |
duplicate$ empty$ |
841 |
'pop$ |
842 |
{ swap$ |
843 |
duplicate$ empty$ |
844 |
'pop$ |
845 |
{ ", " * swap$ * } |
846 |
if$ |
847 |
} |
848 |
if$ |
849 |
parenthesize |
850 |
* |
851 |
} |
852 |
FUNCTION {inproceedings} |
853 |
{ |
854 |
output.bibitem |
855 |
format.authors "author" output.check |
856 |
author format.key output % added |
857 |
output.year.check % added |
858 |
new.block |
859 |
format.title "title" output.check |
860 |
new.block |
861 |
format.in.ed.booktitle "booktitle" output.check |
862 |
format.bvolume output |
863 |
format.number.series output |
864 |
format.proc.loc.date %output |
865 |
format.pages output |
866 |
new.sentence |
867 |
organization output |
868 |
publisher output.colon |
869 |
new.block |
870 |
note output |
871 |
fin.entry |
872 |
} |
873 |
FUNCTION {conference} { inproceedings } |
874 |
FUNCTION {manual} |
875 |
{ output.bibitem |
876 |
author empty$ |
877 |
{ editor empty$ |
878 |
{ organization "organization" output.check |
879 |
organization format.key output } % if all else fails, use key |
880 |
{ format.editors "author and editor" output.check } |
881 |
if$ |
882 |
} |
883 |
{ format.authors output.nonnull } |
884 |
if$ |
885 |
output.year.check % added |
886 |
new.block |
887 |
format.btitle "title" output.check |
888 |
organization address new.block.checkb |
889 |
address output |
890 |
organization "organization" output.check.colon |
891 |
new.block |
892 |
note output |
893 |
fin.entry |
894 |
} |
895 |
FUNCTION {mastersthesis} |
896 |
{ output.bibitem |
897 |
format.authors "author" output.check |
898 |
author format.key output % added |
899 |
output.year.check % added |
900 |
new.block |
901 |
format.title "title" output.check |
902 |
new.block |
903 |
% |
904 |
% original which caused problems: "Master's thesis" format.thesis.title output.nonnull |
905 |
% The following is its replacement (Gerry Murray 10/29/96) |
906 |
% |
907 |
"Master's thesis" format.title output.check % added by GM 10/29/96 |
908 |
school "school" output.check |
909 |
address output |
910 |
new.block |
911 |
note output |
912 |
fin.entry |
913 |
} |
914 |
FUNCTION {misc} |
915 |
{ output.bibitem |
916 |
format.authors output |
917 |
author format.key output % added |
918 |
output.year.check % added |
919 |
title howpublished new.block.checkb |
920 |
format.title output |
921 |
new.block |
922 |
howpublished output |
923 |
new.block |
924 |
note output |
925 |
fin.entry |
926 |
} |
927 |
FUNCTION {phdthesis} |
928 |
{ output.bibitem |
929 |
format.authors "author" output.check |
930 |
author format.key output % added |
931 |
output.year.check % added |
932 |
new.block |
933 |
format.btitle "title" output.check |
934 |
new.block |
935 |
% original which caused problems: format.thesis.title "Ph.\ D. thesis" output.nonnull |
936 |
% |
937 |
% Below is its replacment (Gerry Murray 10/29/96) |
938 |
% |
939 |
"Ph.\ D. thesis" format.title output.check % added by GM 10/29/96 |
940 |
school "school" output.check |
941 |
address output |
942 |
new.block |
943 |
note output |
944 |
fin.entry |
945 |
} |
946 |
FUNCTION {proceedings} |
947 |
{ output.bibitem |
948 |
editor empty$ |
949 |
{ organization output |
950 |
organization format.key output } % gnp - changed from |
951 |
{ format.editors output.nonnull } % author format.key |
952 |
if$ |
953 |
output.year.check % added (newapa) |
954 |
new.block |
955 |
format.btitle "title" output.check |
956 |
format.bvolume output |
957 |
format.number.series output |
958 |
format.proc.loc.date % output |
959 |
new.sentence |
960 |
organization output |
961 |
publisher output.colon |
962 |
new.block |
963 |
note output |
964 |
fin.entry |
965 |
} |
966 |
FUNCTION {techreport} |
967 |
{ output.bibitem |
968 |
format.authors "author" output.check |
969 |
author format.key output % added |
970 |
output.year.check % added |
971 |
new.block |
972 |
format.title "title" output.check |
973 |
new.block |
974 |
format.tr.number |
975 |
month empty$ |
976 |
'skip$ |
977 |
{ month parenthesize * } |
978 |
if$ |
979 |
output.nonnull |
980 |
institution "institution" output.check |
981 |
address output |
982 |
new.block |
983 |
note output |
984 |
fin.entry |
985 |
} |
986 |
FUNCTION {unpublished} |
987 |
{ output.bibitem |
988 |
format.authors "author" output.check |
989 |
author format.key output % added |
990 |
output.year.check % added |
991 |
new.block |
992 |
format.title "title" output.check |
993 |
new.block |
994 |
note "note" output.check |
995 |
fin.entry |
996 |
} |
997 |
FUNCTION {default.type} { misc } |
998 |
MACRO {jan} {"Jan."} |
999 |
MACRO {feb} {"Feb."} |
1000 |
MACRO {mar} {"March"} |
1001 |
MACRO {apr} {"April"} |
1002 |
MACRO {may} {"May"} |
1003 |
MACRO {jun} {"June"} |
1004 |
MACRO {jul} {"July"} |
1005 |
MACRO {aug} {"Aug."} |
1006 |
MACRO {sep} {"Sept."} |
1007 |
MACRO {oct} {"Oct."} |
1008 |
MACRO {nov} {"Nov."} |
1009 |
MACRO {dec} {"Dec."} |
1010 |
MACRO {acmcs} {"ACM Computing Surveys"} |
1011 |
MACRO {acta} {"Acta Informatica"} |
1012 |
MACRO {ai} {"Artificial Intelligence"} |
1013 |
MACRO {cacm} {"Commun. ACM"} |
1014 |
MACRO {ibmjrd} {"IBM Journal of Research and Development"} |
1015 |
MACRO {ibmsj} {"IBM Systems Journal"} |
1016 |
MACRO {ieeese} {"IEEE Trans. Softw. Eng."} |
1017 |
MACRO {ieeetc} {"IEEE Transactions on Computers"} |
1018 |
MACRO {ieeetcad} |
1019 |
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} |
1020 |
MACRO {ipl} {"Inf. Process. Lett."} |
1021 |
MACRO {ic} {"Inf. Comput."} |
1022 |
MACRO {jacm} {"Journal of the ACM"} |
1023 |
MACRO {jcss} {"J. Comput. Syst. Sci."} |
1024 |
MACRO {scp} {"Science of Computer Programming"} |
1025 |
MACRO {sicomp} {"SIAM Journal on Computing"} |
1026 |
MACRO {tocs} {"ACM Transactions on Computer Systems"} |
1027 |
MACRO {tods} {"ACM Transactions on Database Systems"} |
1028 |
MACRO {tog} {"ACM Transactions on Graphics"} |
1029 |
MACRO {toms} {"ACM Transactions on Mathematical Software"} |
1030 |
MACRO {toois} {"ACM Transactions on Office Information Systems"} |
1031 |
MACRO {toplas} {"ACM Trans. on Programm. Lang. Syst."} |
1032 |
MACRO {tcs} {"Theor. Comp. Sci."} |
1033 |
READ |
1034 |
FUNCTION {sortify} |
1035 |
{ purify$ |
1036 |
"l" change.case$ |
1037 |
} |
1038 |
INTEGERS { len } |
1039 |
FUNCTION {chop.word} |
1040 |
{ 's := |
1041 |
'len := |
1042 |
s #1 len substring$ = |
1043 |
{ s len #1 + global.max$ substring$ } |
1044 |
's |
1045 |
if$ |
1046 |
} |
1047 |
FUNCTION {sort.format.names} |
1048 |
{ 's := |
1049 |
#1 'nameptr := |
1050 |
"" |
1051 |
s num.names$ 'numnames := |
1052 |
numnames 'namesleft := |
1053 |
{ namesleft #0 > } |
1054 |
{ nameptr #1 > |
1055 |
{ " " * } |
1056 |
'skip$ |
1057 |
if$ |
1058 |
s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := |
1059 |
nameptr numnames = t "others" = and |
1060 |
{ " et~al" * } |
1061 |
{ t sortify * } |
1062 |
if$ |
1063 |
nameptr #1 + 'nameptr := |
1064 |
namesleft #1 - 'namesleft := |
1065 |
} |
1066 |
while$ |
1067 |
} |
1068 |
FUNCTION {sort.format.title} |
1069 |
{ 't := |
1070 |
"A " #2 |
1071 |
"An " #3 |
1072 |
"The " #4 t chop.word |
1073 |
chop.word |
1074 |
chop.word |
1075 |
sortify |
1076 |
#1 global.max$ substring$ |
1077 |
} |
1078 |
FUNCTION {author.sort} |
1079 |
{ author empty$ |
1080 |
{ key empty$ |
1081 |
{ "to sort, need author or key in " cite$ * warning$ |
1082 |
"" } |
1083 |
{ key sortify } |
1084 |
if$ |
1085 |
} |
1086 |
{ author sort.format.names } |
1087 |
if$ |
1088 |
} |
1089 |
FUNCTION {editor.sort} |
1090 |
{ editor empty$ |
1091 |
{ key empty$ |
1092 |
{ "to sort, need editor or key in " cite$ * warning$ |
1093 |
"" |
1094 |
} |
1095 |
{ key sortify } |
1096 |
if$ |
1097 |
} |
1098 |
{ editor sort.format.names } |
1099 |
if$ |
1100 |
} |
1101 |
FUNCTION {author.editor.sort} |
1102 |
{ |
1103 |
author empty$ |
1104 |
{ "missing author in " cite$ * warning$ |
1105 |
editor empty$ |
1106 |
{ key empty$ |
1107 |
{ "to sort, need author, editor, or key in " |
1108 |
cite$ * warning$ |
1109 |
"" |
1110 |
} |
1111 |
{ |
1112 |
key sortify |
1113 |
} |
1114 |
if$ |
1115 |
} |
1116 |
{ |
1117 |
editor sort.format.names |
1118 |
} |
1119 |
if$ |
1120 |
} |
1121 |
{ |
1122 |
author sort.format.names |
1123 |
} |
1124 |
if$ |
1125 |
} |
1126 |
FUNCTION {author.organization.sort} |
1127 |
{ author empty$ |
1128 |
{ organization empty$ |
1129 |
{ key empty$ |
1130 |
{ "to sort, need author, organization, or key in " |
1131 |
cite$ * warning$ |
1132 |
"" |
1133 |
} |
1134 |
{ key sortify } |
1135 |
if$ |
1136 |
} |
1137 |
{ organization sortify } |
1138 |
if$ |
1139 |
} |
1140 |
{ author sort.format.names } |
1141 |
if$ |
1142 |
} |
1143 |
FUNCTION {editor.organization.sort} |
1144 |
{ editor empty$ |
1145 |
{ organization empty$ |
1146 |
{ key empty$ |
1147 |
{ "to sort, need editor, organization, or key in " |
1148 |
cite$ * warning$ |
1149 |
"" |
1150 |
} |
1151 |
{ key sortify } |
1152 |
if$ |
1153 |
} |
1154 |
{ organization sortify } |
1155 |
if$ |
1156 |
} |
1157 |
{ editor sort.format.names } |
1158 |
if$ |
1159 |
} |
1160 |
FUNCTION {presort} |
1161 |
{ calc.label sortify % recalculate bibitem label |
1162 |
year field.or.null purify$ #-1 #4 substring$ * % add year |
1163 |
" " |
1164 |
* |
1165 |
type$ "book" = |
1166 |
type$ "inbook" = |
1167 |
or |
1168 |
'author.editor.sort |
1169 |
{ type$ "proceedings" = |
1170 |
'editor.organization.sort |
1171 |
{ type$ "manual" = |
1172 |
'author.organization.sort |
1173 |
'author.sort |
1174 |
if$ |
1175 |
} |
1176 |
if$ |
1177 |
} |
1178 |
if$ |
1179 |
#1 entry.max$ substring$ % added for newapa |
1180 |
'sort.label := % added for newapa |
1181 |
sort.label % added for newapa |
1182 |
* |
1183 |
" " |
1184 |
* |
1185 |
title field.or.null |
1186 |
sort.format.title |
1187 |
* |
1188 |
#1 entry.max$ substring$ |
1189 |
'sort.key$ := |
1190 |
} |
1191 |
ITERATE {presort} |
1192 |
SORT % by label, year, author/editor, title |
1193 |
STRINGS { last.label next.extra } |
1194 |
INTEGERS { last.extra.num } |
1195 |
FUNCTION {init.extra.label.stuff} |
1196 |
{ #0 int.to.chr$ 'last.label := |
1197 |
"" 'next.extra := |
1198 |
#0 'last.extra.num := |
1199 |
} |
1200 |
FUNCTION {forward.pass} |
1201 |
{ last.label |
1202 |
calc.label year field.or.null purify$ #-1 #4 substring$ * % add year |
1203 |
#1 entry.max$ substring$ = % are they equal? |
1204 |
{ last.extra.num #1 + 'last.extra.num := |
1205 |
last.extra.num int.to.chr$ 'extra.label := |
1206 |
} |
1207 |
{ "a" chr.to.int$ 'last.extra.num := |
1208 |
"" 'extra.label := |
1209 |
calc.label |
1210 |
year field.or.null purify$ #-1 #4 substring$ * % add year |
1211 |
#1 entry.max$ substring$ 'last.label := % assign to last.label |
1212 |
} |
1213 |
if$ |
1214 |
} |
1215 |
FUNCTION {reverse.pass} |
1216 |
{ next.extra "b" = |
1217 |
{ "a" 'extra.label := } |
1218 |
'skip$ |
1219 |
if$ |
1220 |
label.year extra.label * 'sort.year := |
1221 |
extra.label 'next.extra := |
1222 |
} |
1223 |
EXECUTE {init.extra.label.stuff} |
1224 |
ITERATE {forward.pass} |
1225 |
REVERSE {reverse.pass} |
1226 |
FUNCTION {bib.sort.order} |
1227 |
{ sort.label |
1228 |
" " |
1229 |
* |
1230 |
year field.or.null sortify |
1231 |
* |
1232 |
" " |
1233 |
* |
1234 |
title field.or.null |
1235 |
sort.format.title |
1236 |
* |
1237 |
#1 entry.max$ substring$ |
1238 |
'sort.key$ := |
1239 |
} |
1240 |
ITERATE {bib.sort.order} |
1241 |
SORT % by sort.label, year, title --- giving final bib. order. |
1242 |
FUNCTION {begin.bib} |
1243 |
{ preamble$ empty$ |
1244 |
'skip$ |
1245 |
{ preamble$ write$ newline$ } |
1246 |
if$ |
1247 |
"\begin{thebibliography}{}" write$ newline$ |
1248 |
} |
1249 |
EXECUTE {begin.bib} |
1250 |
EXECUTE {init.state.consts} |
1251 |
ITERATE {call.type$} |
1252 |
FUNCTION {end.bib} |
1253 |
{ newline$ |
1254 |
"\end{thebibliography}" write$ newline$ |
1255 |
} |
1256 |
EXECUTE {end.bib} |
1257 |
%% |
1258 |
%% End of file `esub2acm.bst'. |
1259 |
%% Mods and additional header information by Gerry Murray Dec. 27 1996 |
1260 |
|
1261 |
%$History: esub2acm.bst $ |
1262 |
% |
1263 |
% ***************** Version 3 ***************** |
1264 |
% User: Dashley1 Date: 10/17/00 Time: 8:43p |
1265 |
% Updated in $/ACM Rational Approximation Paper And Algorithms/LaTeX Paper And Graphics |
1266 |
% Comments added to explain that file under VC and that a change history |
1267 |
% is at the end of file. |
1268 |
% |
1269 |
% ***************** Version 2 ***************** |
1270 |
% User: Dashley1 Date: 10/17/00 Time: 8:37p |
1271 |
% Updated in $/ACM Rational Approximation Paper And Algorithms/LaTeX Paper And Graphics |
1272 |
% VC info added. |
1273 |
% |
1274 |
%End of file ESUB2ACM.BST |
1275 |
|
1276 |
|