|
1 %% |
|
2 %% This is file `gtart.bst', |
|
3 %% generated with the docstrip utility. |
|
4 %% |
|
5 %% |
|
6 %% The original source files were: |
|
7 %% |
|
8 %% merlin.mbs (with options: `ed-au,nmft,nmft-bf,dt-jnl,yr-par,xmth,yrp-x,tit-it,atit-u,jttl-rm,vnum-x,volp-blk,jdt-vs,pp-last,num-xser,numser,jnm-x,bkpg-x,pre-edn,edpar,edby-par,edbyy,blk-com,in-x,fin-bare,ppx,xedn,and-xcom,xand,eprint,url,url-blk,nfss') |
|
9 %% ---------------------------------------- |
|
10 %% *** For Geometry and Topology Publications *** |
|
11 %% |
|
12 %% Copyright 1994-1999 Patrick W Daly |
|
13 %% |
|
14 %% Modified by Boris Okun 12/2001 |
|
15 %% |
|
16 % =============================================================== |
|
17 % IMPORTANT NOTICE: |
|
18 % This bibliographic style (bst) file has been generated from one or |
|
19 % more master bibliographic style (mbs) files, listed above. |
|
20 % |
|
21 % This generated file can be redistributed and/or modified under the terms |
|
22 % of the LaTeX Project Public License Distributed from CTAN |
|
23 % archives in directory macros/latex/base/lppl.txt; either |
|
24 % version 1 of the License, or any later version. |
|
25 % =============================================================== |
|
26 % Name and version information of the main mbs file: |
|
27 % \ProvidesFile{merlin.mbs}[1999/03/18 3.88 (PWD)] |
|
28 % For use with BibTeX version 0.99a or later |
|
29 %------------------------------------------------------------------- |
|
30 % This bibliography style file is intended for texts in ENGLISH |
|
31 % This is a numerical citation style, and as such is standard LaTeX. |
|
32 % It requires no extra package to interface to the main text. |
|
33 % The form of the \bibitem entries is |
|
34 % \bibitem{key}... |
|
35 % Usage of \cite is as follows: |
|
36 % \cite{key} ==>> [#] |
|
37 % \cite[chap. 2]{key} ==>> [#, chap. 2] |
|
38 % where # is a number determined by the ordering in the reference list. |
|
39 % The order in the reference list is alphabetical by authors. |
|
40 %--------------------------------------------------------------------- |
|
41 |
|
42 ENTRY |
|
43 { address |
|
44 author |
|
45 booktitle |
|
46 chapter |
|
47 edition |
|
48 editor |
|
49 howpublished |
|
50 institution |
|
51 journal |
|
52 key |
|
53 month |
|
54 note |
|
55 number |
|
56 organization |
|
57 pages |
|
58 publisher |
|
59 school |
|
60 series |
|
61 title |
|
62 type |
|
63 url |
|
64 volume |
|
65 year |
|
66 } |
|
67 {} |
|
68 { label } |
|
69 |
|
70 INTEGERS { output.state before.all mid.sentence after.sentence after.block } |
|
71 |
|
72 FUNCTION {init.state.consts} |
|
73 { #0 'before.all := |
|
74 #1 'mid.sentence := |
|
75 #2 'after.sentence := |
|
76 #3 'after.block := |
|
77 } |
|
78 |
|
79 STRINGS { s t } |
|
80 |
|
81 FUNCTION {output.nonnull} |
|
82 { 's := |
|
83 output.state mid.sentence = |
|
84 { ", " * write$ } |
|
85 { output.state after.block = |
|
86 { add.period$ write$ |
|
87 newline$ |
|
88 "\newblock " write$ |
|
89 } |
|
90 { output.state before.all = |
|
91 'write$ |
|
92 { add.period$ " " * write$ } |
|
93 if$ |
|
94 } |
|
95 if$ |
|
96 mid.sentence 'output.state := |
|
97 } |
|
98 if$ |
|
99 s |
|
100 } |
|
101 |
|
102 FUNCTION {output} |
|
103 { duplicate$ empty$ |
|
104 'pop$ |
|
105 'output.nonnull |
|
106 if$ |
|
107 } |
|
108 |
|
109 FUNCTION {output.check} |
|
110 { 't := |
|
111 duplicate$ empty$ |
|
112 { pop$ "empty " t * " in " * cite$ * warning$ } |
|
113 'output.nonnull |
|
114 if$ |
|
115 } |
|
116 |
|
117 FUNCTION {fin.entry} |
|
118 { duplicate$ empty$ |
|
119 'pop$ |
|
120 'write$ |
|
121 if$ |
|
122 newline$ |
|
123 } |
|
124 |
|
125 FUNCTION {new.block} |
|
126 { output.state before.all = |
|
127 'skip$ |
|
128 { after.block 'output.state := } |
|
129 if$ |
|
130 } |
|
131 |
|
132 FUNCTION {new.sentence} |
|
133 { output.state after.block = |
|
134 'skip$ |
|
135 { output.state before.all = |
|
136 'skip$ |
|
137 { after.sentence 'output.state := } |
|
138 if$ |
|
139 } |
|
140 if$ |
|
141 } |
|
142 |
|
143 FUNCTION {add.blank} |
|
144 { " " * before.all 'output.state := |
|
145 } |
|
146 |
|
147 FUNCTION {date.block} |
|
148 { |
|
149 add.blank |
|
150 } |
|
151 |
|
152 FUNCTION {not} |
|
153 { { #0 } |
|
154 { #1 } |
|
155 if$ |
|
156 } |
|
157 |
|
158 FUNCTION {and} |
|
159 { 'skip$ |
|
160 { pop$ #0 } |
|
161 if$ |
|
162 } |
|
163 |
|
164 FUNCTION {or} |
|
165 { { pop$ #1 } |
|
166 'skip$ |
|
167 if$ |
|
168 } |
|
169 |
|
170 FUNCTION {new.block.checka} |
|
171 { empty$ |
|
172 'skip$ |
|
173 'new.block |
|
174 if$ |
|
175 } |
|
176 |
|
177 FUNCTION {new.block.checkb} |
|
178 { empty$ |
|
179 swap$ empty$ |
|
180 and |
|
181 'skip$ |
|
182 'new.block |
|
183 if$ |
|
184 } |
|
185 |
|
186 FUNCTION {new.sentence.checka} |
|
187 { empty$ |
|
188 'skip$ |
|
189 'new.sentence |
|
190 if$ |
|
191 } |
|
192 |
|
193 FUNCTION {new.sentence.checkb} |
|
194 { empty$ |
|
195 swap$ empty$ |
|
196 and |
|
197 'skip$ |
|
198 'new.sentence |
|
199 if$ |
|
200 } |
|
201 |
|
202 FUNCTION {field.or.null} |
|
203 { duplicate$ empty$ |
|
204 { pop$ "" } |
|
205 'skip$ |
|
206 if$ |
|
207 } |
|
208 |
|
209 FUNCTION {emphasize} |
|
210 { duplicate$ empty$ |
|
211 { pop$ "" } |
|
212 { "\emph{" swap$ * "}" * } |
|
213 if$ |
|
214 } |
|
215 |
|
216 FUNCTION {bolden} |
|
217 { duplicate$ empty$ |
|
218 { pop$ "" } |
|
219 { "\textbf{" swap$ * "}" * } |
|
220 if$ |
|
221 } |
|
222 |
|
223 FUNCTION {quotify} |
|
224 { duplicate$ empty$ |
|
225 { pop$ "" } |
|
226 { "``" swap$ * "''" * } |
|
227 if$ |
|
228 } |
|
229 |
|
230 |
|
231 FUNCTION {bib.name.font} |
|
232 { bolden } |
|
233 |
|
234 FUNCTION {bib.fname.font} |
|
235 { bib.name.font } |
|
236 FUNCTION {capitalize} |
|
237 { "u" change.case$ "t" change.case$ } |
|
238 |
|
239 FUNCTION {space.word} |
|
240 { " " swap$ * " " * } |
|
241 |
|
242 % Here are the language-specific definitions for explicit words. |
|
243 % Each function has a name bbl.xxx where xxx is the English word. |
|
244 % The language selected here is ENGLISH |
|
245 FUNCTION {bbl.and} |
|
246 { "and"} |
|
247 |
|
248 FUNCTION {bbl.etal} |
|
249 { "et~al." } |
|
250 |
|
251 FUNCTION {bbl.editors} |
|
252 { "editors" } |
|
253 |
|
254 FUNCTION {bbl.editor} |
|
255 { "editor" } |
|
256 |
|
257 FUNCTION {bbl.edby} |
|
258 { "edited by" } |
|
259 |
|
260 FUNCTION {bbl.edition} |
|
261 { "edition" } |
|
262 |
|
263 FUNCTION {bbl.volume} |
|
264 { "volume" } |
|
265 |
|
266 FUNCTION {bbl.of} |
|
267 { "of" } |
|
268 |
|
269 FUNCTION {bbl.number} |
|
270 { "number" } |
|
271 |
|
272 FUNCTION {bbl.nr} |
|
273 { "no." } |
|
274 |
|
275 FUNCTION {bbl.in} |
|
276 { "in" } |
|
277 |
|
278 FUNCTION {bbl.pages} |
|
279 { "" } |
|
280 |
|
281 FUNCTION {bbl.page} |
|
282 { "" } |
|
283 |
|
284 FUNCTION {bbl.chapter} |
|
285 { "chapter" } |
|
286 |
|
287 FUNCTION {bbl.techrep} |
|
288 { "Technical Report" } |
|
289 |
|
290 FUNCTION {bbl.mthesis} |
|
291 { "Master's thesis" } |
|
292 |
|
293 FUNCTION {bbl.phdthesis} |
|
294 { "Ph.D. thesis" } |
|
295 |
|
296 MACRO {jan} {"January"} |
|
297 |
|
298 MACRO {feb} {"February"} |
|
299 |
|
300 MACRO {mar} {"March"} |
|
301 |
|
302 MACRO {apr} {"April"} |
|
303 |
|
304 MACRO {may} {"May"} |
|
305 |
|
306 MACRO {jun} {"June"} |
|
307 |
|
308 MACRO {jul} {"July"} |
|
309 |
|
310 MACRO {aug} {"August"} |
|
311 |
|
312 MACRO {sep} {"September"} |
|
313 |
|
314 MACRO {oct} {"October"} |
|
315 |
|
316 MACRO {nov} {"November"} |
|
317 |
|
318 MACRO {dec} {"December"} |
|
319 |
|
320 FUNCTION {format.url} |
|
321 { url empty$ |
|
322 { "" } |
|
323 { "\urlprefix\url{" url * "}" * } |
|
324 if$ |
|
325 } |
|
326 |
|
327 INTEGERS { nameptr namesleft numnames charptr} |
|
328 |
|
329 STRINGS {i j} |
|
330 |
|
331 FUNCTION {remove.periods} |
|
332 {'i := |
|
333 "" |
|
334 #1 'charptr := |
|
335 " " 'j := |
|
336 {#1 j "" = - } |
|
337 {i charptr #1 substring$ |
|
338 'j := |
|
339 j "." = |
|
340 {charptr #1 + 'charptr := |
|
341 i charptr #1 substring$ |
|
342 'j := |
|
343 j "~" = |
|
344 {"\," *} |
|
345 {j *} |
|
346 if$} |
|
347 {j *} |
|
348 if$ |
|
349 charptr #1 + 'charptr := |
|
350 } |
|
351 while$ |
|
352 } |
|
353 |
|
354 FUNCTION {format.names} |
|
355 { 's := |
|
356 #1 'nameptr := |
|
357 s num.names$ 'numnames := |
|
358 numnames 'namesleft := |
|
359 { namesleft #0 > } |
|
360 { s nameptr |
|
361 "{ff }{vv~}{ll}{, jj}" format.name$ |
|
362 remove.periods |
|
363 't := |
|
364 nameptr #1 > |
|
365 { |
|
366 namesleft #1 > |
|
367 { ", " * t * } |
|
368 { |
|
369 "," * |
|
370 s nameptr "{ll}" format.name$ duplicate$ "others" = |
|
371 { 't := } |
|
372 { pop$ } |
|
373 if$ |
|
374 t "others" = |
|
375 { |
|
376 " " * bbl.etal * |
|
377 % bib.name.font |
|
378 } |
|
379 { " " * t * } |
|
380 if$ |
|
381 } |
|
382 if$ |
|
383 } |
|
384 't |
|
385 if$ |
|
386 nameptr #1 + 'nameptr := |
|
387 namesleft #1 - 'namesleft := |
|
388 } |
|
389 while$ |
|
390 % t "others" = |
|
391 % 'skip$ |
|
392 % { bib.name.font } |
|
393 % if$ |
|
394 } |
|
395 |
|
396 FUNCTION {bformat.names} % Formats names in bold, but keeps punctuation normal |
|
397 { 's := |
|
398 #1 'nameptr := |
|
399 s num.names$ 'numnames := |
|
400 numnames 'namesleft := |
|
401 { namesleft #0 > } |
|
402 { s nameptr |
|
403 "{ff }{vv~}{ll}{, jj}" format.name$ |
|
404 remove.periods |
|
405 bib.name.font |
|
406 't := |
|
407 nameptr #1 > |
|
408 { |
|
409 namesleft #1 > |
|
410 { ", " * t * } |
|
411 { |
|
412 "," * |
|
413 s nameptr "{ll}" format.name$ duplicate$ "others" = |
|
414 { 't := } |
|
415 { pop$ } |
|
416 if$ |
|
417 t "others" = |
|
418 { |
|
419 " " * bbl.etal * |
|
420 % bib.name.font |
|
421 } |
|
422 { " " * t * } |
|
423 if$ |
|
424 } |
|
425 if$ |
|
426 } |
|
427 't |
|
428 if$ |
|
429 nameptr #1 + 'nameptr := |
|
430 namesleft #1 - 'namesleft := |
|
431 } |
|
432 while$ |
|
433 % t "others" = |
|
434 % 'skip$ |
|
435 % { bib.name.font } |
|
436 % if$ |
|
437 } |
|
438 |
|
439 FUNCTION {format.names.ed} |
|
440 { format.names } |
|
441 FUNCTION {format.authors} |
|
442 { author empty$ |
|
443 { "" } |
|
444 { author bformat.names } |
|
445 % bib.name.font} |
|
446 if$ |
|
447 } |
|
448 |
|
449 FUNCTION {format.editors} |
|
450 { editor empty$ |
|
451 { "" } |
|
452 { editor bformat.names |
|
453 % bib.name.font |
|
454 editor num.names$ #1 > |
|
455 { " (" * bbl.editors * ")" * } |
|
456 { " (" * bbl.editor * ")" * } |
|
457 if$ |
|
458 } |
|
459 if$ |
|
460 } |
|
461 |
|
462 FUNCTION {format.in.editors} |
|
463 { editor empty$ |
|
464 { "" } |
|
465 { editor format.names.ed |
|
466 } |
|
467 if$ |
|
468 } |
|
469 |
|
470 FUNCTION {format.note} |
|
471 { |
|
472 note empty$ |
|
473 { "" } |
|
474 { note #1 #1 substring$ |
|
475 duplicate$ "{" = |
|
476 'skip$ |
|
477 { output.state mid.sentence = |
|
478 { "l" } |
|
479 { "u" } |
|
480 if$ |
|
481 change.case$ |
|
482 } |
|
483 if$ |
|
484 note #2 global.max$ substring$ * |
|
485 } |
|
486 if$ |
|
487 } |
|
488 |
|
489 FUNCTION {format.title} |
|
490 { title empty$ |
|
491 { "" } |
|
492 { title |
|
493 emphasize |
|
494 } |
|
495 if$ |
|
496 } |
|
497 |
|
498 FUNCTION {output.bibitem} |
|
499 { newline$ |
|
500 "\bibitem{" write$ |
|
501 cite$ write$ |
|
502 "}" write$ |
|
503 newline$ |
|
504 "" |
|
505 before.all 'output.state := |
|
506 } |
|
507 |
|
508 FUNCTION {n.dashify} |
|
509 { |
|
510 't := |
|
511 "" |
|
512 { t empty$ not } |
|
513 { t #1 #1 substring$ "-" = |
|
514 { t #1 #2 substring$ "--" = not |
|
515 { "--" * |
|
516 t #2 global.max$ substring$ 't := |
|
517 } |
|
518 { { t #1 #1 substring$ "-" = } |
|
519 { "-" * |
|
520 t #2 global.max$ substring$ 't := |
|
521 } |
|
522 while$ |
|
523 } |
|
524 if$ |
|
525 } |
|
526 { t #1 #1 substring$ * |
|
527 t #2 global.max$ substring$ 't := |
|
528 } |
|
529 if$ |
|
530 } |
|
531 while$ |
|
532 } |
|
533 |
|
534 FUNCTION {word.in} |
|
535 { "from: " } |
|
536 |
|
537 FUNCTION {format.date} |
|
538 { year empty$ |
|
539 { "" } |
|
540 'year |
|
541 if$ |
|
542 duplicate$ empty$ |
|
543 'skip$ |
|
544 { |
|
545 before.all 'output.state := |
|
546 " (" swap$ * ")" * |
|
547 } |
|
548 if$ |
|
549 } |
|
550 |
|
551 FUNCTION{format.year} |
|
552 { year duplicate$ empty$ |
|
553 { "empty year in " cite$ * warning$ pop$ "" } |
|
554 { " (" swap$ * ")" * } |
|
555 if$ |
|
556 } |
|
557 |
|
558 FUNCTION {format.btitle} |
|
559 { title emphasize |
|
560 } |
|
561 |
|
562 FUNCTION {tie.or.space.connect} |
|
563 { duplicate$ text.length$ #3 < |
|
564 { "~" } |
|
565 { " " } |
|
566 if$ |
|
567 swap$ * * |
|
568 } |
|
569 |
|
570 FUNCTION {either.or.check} |
|
571 { empty$ |
|
572 'pop$ |
|
573 { "can't use both " swap$ * " fields in " * cite$ * warning$ } |
|
574 if$ |
|
575 } |
|
576 |
|
577 FUNCTION {format.bvolume} |
|
578 { volume empty$ |
|
579 { "" } |
|
580 { bbl.volume volume tie.or.space.connect |
|
581 series empty$ |
|
582 'skip$ |
|
583 { bbl.of space.word * series emphasize * } |
|
584 if$ |
|
585 "volume and number" number either.or.check |
|
586 } |
|
587 if$ |
|
588 } |
|
589 |
|
590 FUNCTION {format.bvolume.in} |
|
591 {series empty$ |
|
592 'format.bvolume |
|
593 {volume empty$ |
|
594 {""} |
|
595 {series " " volume * * |
|
596 "volume and number" number either.or.check } |
|
597 if$ |
|
598 } |
|
599 if$ |
|
600 } |
|
601 |
|
602 FUNCTION {format.number.series} |
|
603 { volume empty$ |
|
604 { number empty$ |
|
605 { series field.or.null } |
|
606 { series empty$ |
|
607 { number } |
|
608 { output.state mid.sentence = |
|
609 { bbl.number } |
|
610 { bbl.number capitalize } |
|
611 if$ |
|
612 number tie.or.space.connect |
|
613 bbl.in space.word * series * |
|
614 } |
|
615 if$ |
|
616 } |
|
617 if$ |
|
618 } |
|
619 { "" } |
|
620 if$ |
|
621 } |
|
622 |
|
623 |
|
624 FUNCTION {format.number.series.in} |
|
625 { volume empty$ |
|
626 {series empty$ |
|
627 'format.number.series |
|
628 {series |
|
629 number empty$ |
|
630 'skip$ |
|
631 {" " number * *} |
|
632 if$ } |
|
633 if$ |
|
634 } |
|
635 { "" } |
|
636 if$ |
|
637 } |
|
638 |
|
639 |
|
640 |
|
641 FUNCTION {format.edition} |
|
642 { edition empty$ |
|
643 { "" } |
|
644 { output.state mid.sentence = |
|
645 { edition "l" change.case$ " " * bbl.edition * } |
|
646 { edition "t" change.case$ " " * bbl.edition * } |
|
647 if$ |
|
648 } |
|
649 if$ |
|
650 } |
|
651 |
|
652 INTEGERS { multiresult } |
|
653 |
|
654 FUNCTION {multi.page.check} |
|
655 { 't := |
|
656 #0 'multiresult := |
|
657 { multiresult not |
|
658 t empty$ not |
|
659 and |
|
660 } |
|
661 { t #1 #1 substring$ |
|
662 duplicate$ "-" = |
|
663 swap$ duplicate$ "," = |
|
664 swap$ "+" = |
|
665 or or |
|
666 { #1 'multiresult := } |
|
667 { t #2 global.max$ substring$ 't := } |
|
668 if$ |
|
669 } |
|
670 while$ |
|
671 multiresult |
|
672 } |
|
673 |
|
674 FUNCTION {format.pages} |
|
675 { pages empty$ |
|
676 { "" } |
|
677 { pages multi.page.check |
|
678 { pages n.dashify } |
|
679 { pages } |
|
680 if$ |
|
681 } |
|
682 if$ |
|
683 } |
|
684 |
|
685 FUNCTION {format.journal.pages} |
|
686 { pages empty$ |
|
687 'skip$ |
|
688 { duplicate$ empty$ |
|
689 { pop$ format.pages } |
|
690 { |
|
691 " " * |
|
692 pages n.dashify * |
|
693 } |
|
694 if$ |
|
695 } |
|
696 if$ |
|
697 } |
|
698 |
|
699 FUNCTION {format.vol.num.pages} |
|
700 { volume field.or.null |
|
701 format.year * |
|
702 } |
|
703 |
|
704 FUNCTION {format.chapter.pages} |
|
705 { chapter empty$ |
|
706 { "" } |
|
707 { type empty$ |
|
708 { bbl.chapter } |
|
709 { type "l" change.case$ } |
|
710 if$ |
|
711 chapter tie.or.space.connect |
|
712 } |
|
713 if$ |
|
714 } |
|
715 |
|
716 FUNCTION {format.in.ed.booktitle} |
|
717 { booktitle empty$ |
|
718 { "" } |
|
719 { editor empty$ |
|
720 { word.in booktitle quotify * } |
|
721 { word.in booktitle quotify * |
|
722 ", (" * |
|
723 format.in.editors * |
|
724 ", " * |
|
725 editor num.names$ #1 > |
|
726 { bbl.editors } |
|
727 { bbl.editor } |
|
728 if$ |
|
729 * |
|
730 ")" * |
|
731 } |
|
732 if$ |
|
733 } |
|
734 if$ |
|
735 } |
|
736 |
|
737 FUNCTION {empty.misc.check} |
|
738 { author empty$ title empty$ howpublished empty$ |
|
739 month empty$ year empty$ note empty$ |
|
740 and and and and and |
|
741 key empty$ not and |
|
742 { "all relevant fields are empty in " cite$ * warning$ } |
|
743 'skip$ |
|
744 if$ |
|
745 } |
|
746 |
|
747 FUNCTION {format.thesis.type} |
|
748 { type empty$ |
|
749 'skip$ |
|
750 { pop$ |
|
751 type "t" change.case$ |
|
752 } |
|
753 if$ |
|
754 } |
|
755 |
|
756 FUNCTION {format.tr.number} |
|
757 { type empty$ |
|
758 { bbl.techrep } |
|
759 'type |
|
760 if$ |
|
761 number empty$ |
|
762 { "t" change.case$ } |
|
763 { number tie.or.space.connect } |
|
764 if$ |
|
765 } |
|
766 |
|
767 FUNCTION {format.article.crossref} |
|
768 { |
|
769 key empty$ |
|
770 { journal empty$ |
|
771 { "need key or journal for " cite$ * " to crossref " * crossref * |
|
772 warning$ |
|
773 "" |
|
774 } |
|
775 { word.in journal emphasize * } |
|
776 if$ |
|
777 } |
|
778 { word.in key * " " *} |
|
779 if$ |
|
780 " \cite{" * crossref * "}" * |
|
781 } |
|
782 |
|
783 FUNCTION {format.crossref.editor} |
|
784 { editor #1 "{vv~}{ll}" format.name$ |
|
785 editor num.names$ duplicate$ |
|
786 #2 > |
|
787 { pop$ |
|
788 " " * bbl.etal * |
|
789 } |
|
790 { #2 < |
|
791 'skip$ |
|
792 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = |
|
793 { |
|
794 " " * bbl.etal * |
|
795 } |
|
796 { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ |
|
797 * } |
|
798 if$ |
|
799 } |
|
800 if$ |
|
801 } |
|
802 if$ |
|
803 } |
|
804 |
|
805 FUNCTION {format.book.crossref} |
|
806 { volume empty$ |
|
807 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ |
|
808 word.in |
|
809 } |
|
810 { bbl.volume volume tie.or.space.connect |
|
811 bbl.of space.word * |
|
812 } |
|
813 if$ |
|
814 editor empty$ |
|
815 editor field.or.null author field.or.null = |
|
816 or |
|
817 { key empty$ |
|
818 { series empty$ |
|
819 { "need editor, key, or series for " cite$ * " to crossref " * |
|
820 crossref * warning$ |
|
821 "" * |
|
822 } |
|
823 { series emphasize * } |
|
824 if$ |
|
825 } |
|
826 { key * } |
|
827 if$ |
|
828 } |
|
829 { format.crossref.editor * } |
|
830 if$ |
|
831 " \cite{" * crossref * "}" * |
|
832 } |
|
833 |
|
834 FUNCTION {format.incoll.inproc.crossref} |
|
835 { |
|
836 editor empty$ |
|
837 editor field.or.null author field.or.null = |
|
838 or |
|
839 { key empty$ |
|
840 { booktitle empty$ |
|
841 { "need editor, key, or booktitle for " cite$ * " to crossref " * |
|
842 crossref * warning$ |
|
843 "" |
|
844 } |
|
845 { word.in "``" booktitle "''" * * } |
|
846 if$ |
|
847 } |
|
848 { word.in key * " " *} |
|
849 if$ |
|
850 } |
|
851 { word.in format.crossref.editor * " " *} |
|
852 if$ |
|
853 " \cite{" * crossref * "}" * |
|
854 } |
|
855 |
|
856 FUNCTION {format.org.or.pub} |
|
857 { 't := |
|
858 "" |
|
859 address empty$ t empty$ and |
|
860 'skip$ |
|
861 { |
|
862 t empty$ |
|
863 { address empty$ |
|
864 'skip$ |
|
865 { address * } |
|
866 if$ |
|
867 } |
|
868 { t * |
|
869 address empty$ |
|
870 'skip$ |
|
871 { ", " * address * } |
|
872 if$ |
|
873 } |
|
874 if$ |
|
875 } |
|
876 if$ |
|
877 } |
|
878 |
|
879 FUNCTION {format.publisher.address} |
|
880 { publisher empty$ |
|
881 { "empty publisher in " cite$ * warning$ |
|
882 "" |
|
883 } |
|
884 { publisher } |
|
885 if$ |
|
886 format.org.or.pub |
|
887 } |
|
888 |
|
889 FUNCTION {format.organization.address} |
|
890 { organization empty$ |
|
891 { "" } |
|
892 { organization } |
|
893 if$ |
|
894 format.org.or.pub |
|
895 } |
|
896 |
|
897 FUNCTION {article} |
|
898 { output.bibitem |
|
899 format.authors "author" output.check |
|
900 format.title "title" output.check |
|
901 crossref missing$ |
|
902 { journal |
|
903 "journal" output.check |
|
904 add.blank |
|
905 format.vol.num.pages output |
|
906 } |
|
907 { format.article.crossref output.nonnull |
|
908 % format.pages output |
|
909 } |
|
910 if$ |
|
911 format.journal.pages |
|
912 format.url output |
|
913 format.note output |
|
914 fin.entry |
|
915 } |
|
916 |
|
917 FUNCTION {book} |
|
918 { output.bibitem |
|
919 author empty$ |
|
920 { format.editors "author and editor" output.check |
|
921 } |
|
922 { format.authors output.nonnull |
|
923 crossref missing$ |
|
924 { "author and editor" editor either.or.check } |
|
925 'skip$ |
|
926 if$ |
|
927 } |
|
928 if$ |
|
929 format.btitle "title" output.check |
|
930 crossref missing$ |
|
931 { format.bvolume output |
|
932 format.edition output |
|
933 format.number.series.in output |
|
934 format.publisher.address output |
|
935 } |
|
936 { |
|
937 format.book.crossref output.nonnull |
|
938 } |
|
939 if$ |
|
940 format.date "year" output.check |
|
941 format.url output |
|
942 format.note output |
|
943 fin.entry |
|
944 } |
|
945 |
|
946 FUNCTION {booklet} |
|
947 { output.bibitem |
|
948 format.authors output |
|
949 format.title "title" output.check |
|
950 howpublished output |
|
951 address output |
|
952 format.date output |
|
953 format.url output |
|
954 format.note output |
|
955 fin.entry |
|
956 } |
|
957 |
|
958 FUNCTION {incollection} |
|
959 { output.bibitem |
|
960 format.authors "author" output.check |
|
961 format.title "title" output.check |
|
962 crossref missing$ |
|
963 { format.in.ed.booktitle "booktitle" output.check |
|
964 format.bvolume.in output |
|
965 format.edition output |
|
966 format.number.series.in output |
|
967 format.publisher.address output |
|
968 } |
|
969 { format.incoll.inproc.crossref output.nonnull |
|
970 } |
|
971 if$ |
|
972 format.date "year" output.check |
|
973 date.block |
|
974 add.blank |
|
975 format.pages "pages" output.check |
|
976 format.url output |
|
977 format.note output |
|
978 fin.entry |
|
979 } |
|
980 |
|
981 FUNCTION {inbook}{incollection} |
|
982 |
|
983 FUNCTION {inproceedings} |
|
984 { output.bibitem |
|
985 format.authors "author" output.check |
|
986 format.title "title" output.check |
|
987 crossref missing$ |
|
988 { format.in.ed.booktitle "booktitle" output.check |
|
989 format.bvolume.in output |
|
990 format.number.series.in output |
|
991 publisher empty$ |
|
992 { format.organization.address output } |
|
993 { organization output |
|
994 format.publisher.address output |
|
995 } |
|
996 if$ |
|
997 } |
|
998 { format.incoll.inproc.crossref output.nonnull |
|
999 } |
|
1000 if$ |
|
1001 format.date "year" output.check |
|
1002 date.block |
|
1003 add.blank |
|
1004 format.pages "pages" output.check |
|
1005 format.url output |
|
1006 format.note output |
|
1007 fin.entry |
|
1008 } |
|
1009 |
|
1010 FUNCTION {conference} { inproceedings } |
|
1011 |
|
1012 FUNCTION {manual} |
|
1013 { output.bibitem |
|
1014 author empty$ |
|
1015 { organization empty$ |
|
1016 'skip$ |
|
1017 { organization output.nonnull |
|
1018 address output |
|
1019 } |
|
1020 if$ |
|
1021 } |
|
1022 { format.authors output.nonnull } |
|
1023 if$ |
|
1024 format.btitle "title" output.check |
|
1025 author empty$ |
|
1026 { organization empty$ |
|
1027 { |
|
1028 address output |
|
1029 } |
|
1030 'skip$ |
|
1031 if$ |
|
1032 } |
|
1033 { |
|
1034 organization output |
|
1035 address output |
|
1036 } |
|
1037 if$ |
|
1038 format.edition output |
|
1039 format.date output |
|
1040 format.url output |
|
1041 format.note output |
|
1042 fin.entry |
|
1043 } |
|
1044 |
|
1045 FUNCTION {mastersthesis} |
|
1046 { output.bibitem |
|
1047 format.authors "author" output.check |
|
1048 format.btitle "title" output.check |
|
1049 bbl.mthesis format.thesis.type output.nonnull |
|
1050 school "school" output.check |
|
1051 address output |
|
1052 format.date "year" output.check |
|
1053 format.url output |
|
1054 format.note output |
|
1055 fin.entry |
|
1056 } |
|
1057 |
|
1058 FUNCTION {misc} |
|
1059 { output.bibitem |
|
1060 format.authors output |
|
1061 format.title output |
|
1062 howpublished output |
|
1063 format.date output |
|
1064 format.url output |
|
1065 format.note output |
|
1066 fin.entry |
|
1067 empty.misc.check |
|
1068 } |
|
1069 |
|
1070 FUNCTION {phdthesis} |
|
1071 { output.bibitem |
|
1072 format.authors "author" output.check |
|
1073 format.btitle "title" output.check |
|
1074 bbl.phdthesis format.thesis.type output.nonnull |
|
1075 school "school" output.check |
|
1076 address output |
|
1077 format.date "year" output.check |
|
1078 format.url output |
|
1079 format.note output |
|
1080 fin.entry |
|
1081 } |
|
1082 |
|
1083 FUNCTION {proceedings} |
|
1084 { output.bibitem |
|
1085 editor empty$ |
|
1086 { organization output } |
|
1087 { format.editors output.nonnull } |
|
1088 if$ |
|
1089 format.btitle "title" output.check |
|
1090 format.bvolume output |
|
1091 editor empty$ |
|
1092 { publisher empty$ |
|
1093 'skip$ |
|
1094 { |
|
1095 format.number.series output |
|
1096 format.publisher.address output |
|
1097 } |
|
1098 if$ |
|
1099 } |
|
1100 { publisher empty$ |
|
1101 { |
|
1102 format.organization.address output } |
|
1103 { |
|
1104 organization output |
|
1105 format.publisher.address output |
|
1106 } |
|
1107 if$ |
|
1108 } |
|
1109 if$ |
|
1110 format.date "year" output.check |
|
1111 format.url output |
|
1112 format.note output |
|
1113 fin.entry |
|
1114 } |
|
1115 |
|
1116 FUNCTION {techreport} |
|
1117 { output.bibitem |
|
1118 format.authors "author" output.check |
|
1119 format.title "title" output.check |
|
1120 format.tr.number output.nonnull |
|
1121 institution "institution" output.check |
|
1122 address output |
|
1123 format.date "year" output.check |
|
1124 format.url output |
|
1125 format.note output |
|
1126 fin.entry |
|
1127 } |
|
1128 |
|
1129 FUNCTION {unpublished} |
|
1130 { output.bibitem |
|
1131 format.authors "author" output.check |
|
1132 format.title "title" output.check |
|
1133 format.date output |
|
1134 format.url output |
|
1135 format.note "note" output.check |
|
1136 fin.entry |
|
1137 } |
|
1138 |
|
1139 FUNCTION {default.type} { misc } |
|
1140 |
|
1141 READ |
|
1142 |
|
1143 FUNCTION {sortify} |
|
1144 { purify$ |
|
1145 "l" change.case$ |
|
1146 } |
|
1147 |
|
1148 INTEGERS { len } |
|
1149 |
|
1150 FUNCTION {chop.word} |
|
1151 { 's := |
|
1152 'len := |
|
1153 s #1 len substring$ = |
|
1154 { s len #1 + global.max$ substring$ } |
|
1155 's |
|
1156 if$ |
|
1157 } |
|
1158 |
|
1159 FUNCTION {sort.format.names} |
|
1160 { 's := |
|
1161 #1 'nameptr := |
|
1162 "" |
|
1163 s num.names$ 'numnames := |
|
1164 numnames 'namesleft := |
|
1165 { namesleft #0 > } |
|
1166 { s nameptr |
|
1167 "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" |
|
1168 format.name$ 't := |
|
1169 nameptr #1 > |
|
1170 { |
|
1171 " " * |
|
1172 namesleft #1 = t "others" = and |
|
1173 { "zzzzz" * } |
|
1174 { t sortify * } |
|
1175 if$ |
|
1176 } |
|
1177 { t sortify * } |
|
1178 if$ |
|
1179 nameptr #1 + 'nameptr := |
|
1180 namesleft #1 - 'namesleft := |
|
1181 } |
|
1182 while$ |
|
1183 } |
|
1184 |
|
1185 FUNCTION {sort.format.title} |
|
1186 { 't := |
|
1187 "A " #2 |
|
1188 "An " #3 |
|
1189 "The " #4 t chop.word |
|
1190 chop.word |
|
1191 chop.word |
|
1192 sortify |
|
1193 #1 global.max$ substring$ |
|
1194 } |
|
1195 |
|
1196 FUNCTION {author.sort} |
|
1197 { author empty$ |
|
1198 { key empty$ |
|
1199 { "to sort, need author or key in " cite$ * warning$ |
|
1200 "" |
|
1201 } |
|
1202 { key sortify } |
|
1203 if$ |
|
1204 } |
|
1205 { author sort.format.names } |
|
1206 if$ |
|
1207 } |
|
1208 |
|
1209 FUNCTION {author.editor.sort} |
|
1210 { author empty$ |
|
1211 { editor empty$ |
|
1212 { key empty$ |
|
1213 { "to sort, need author, editor, or key in " cite$ * warning$ |
|
1214 "" |
|
1215 } |
|
1216 { key sortify } |
|
1217 if$ |
|
1218 } |
|
1219 { editor sort.format.names } |
|
1220 if$ |
|
1221 } |
|
1222 { author sort.format.names } |
|
1223 if$ |
|
1224 } |
|
1225 |
|
1226 FUNCTION {author.organization.sort} |
|
1227 { author empty$ |
|
1228 { organization empty$ |
|
1229 { key empty$ |
|
1230 { "to sort, need author, organization, or key in " cite$ * warning$ |
|
1231 "" |
|
1232 } |
|
1233 { key sortify } |
|
1234 if$ |
|
1235 } |
|
1236 { "The " #4 organization chop.word sortify } |
|
1237 if$ |
|
1238 } |
|
1239 { author sort.format.names } |
|
1240 if$ |
|
1241 } |
|
1242 |
|
1243 FUNCTION {editor.organization.sort} |
|
1244 { editor empty$ |
|
1245 { organization empty$ |
|
1246 { key empty$ |
|
1247 { "to sort, need editor, organization, or key in " cite$ * warning$ |
|
1248 "" |
|
1249 } |
|
1250 { key sortify } |
|
1251 if$ |
|
1252 } |
|
1253 { "The " #4 organization chop.word sortify } |
|
1254 if$ |
|
1255 } |
|
1256 { editor sort.format.names } |
|
1257 if$ |
|
1258 } |
|
1259 |
|
1260 FUNCTION {presort} |
|
1261 { type$ "book" = |
|
1262 type$ "inbook" = |
|
1263 or |
|
1264 'author.editor.sort |
|
1265 { type$ "proceedings" = |
|
1266 'editor.organization.sort |
|
1267 { type$ "manual" = |
|
1268 'author.organization.sort |
|
1269 'author.sort |
|
1270 if$ |
|
1271 } |
|
1272 if$ |
|
1273 } |
|
1274 if$ |
|
1275 " " |
|
1276 * |
|
1277 year field.or.null sortify |
|
1278 * |
|
1279 " " |
|
1280 * |
|
1281 title field.or.null |
|
1282 sort.format.title |
|
1283 * |
|
1284 #1 entry.max$ substring$ |
|
1285 'sort.key$ := |
|
1286 } |
|
1287 |
|
1288 ITERATE {presort} |
|
1289 |
|
1290 SORT |
|
1291 |
|
1292 STRINGS { longest.label } |
|
1293 |
|
1294 INTEGERS { number.label longest.label.width } |
|
1295 |
|
1296 FUNCTION {initialize.longest.label} |
|
1297 { "" 'longest.label := |
|
1298 #1 'number.label := |
|
1299 #0 'longest.label.width := |
|
1300 } |
|
1301 |
|
1302 FUNCTION {longest.label.pass} |
|
1303 { number.label int.to.str$ 'label := |
|
1304 number.label #1 + 'number.label := |
|
1305 label width$ longest.label.width > |
|
1306 { label 'longest.label := |
|
1307 label width$ 'longest.label.width := |
|
1308 } |
|
1309 'skip$ |
|
1310 if$ |
|
1311 } |
|
1312 |
|
1313 EXECUTE {initialize.longest.label} |
|
1314 |
|
1315 ITERATE {longest.label.pass} |
|
1316 |
|
1317 FUNCTION {begin.bib} |
|
1318 { preamble$ empty$ |
|
1319 'skip$ |
|
1320 { preamble$ write$ newline$ } |
|
1321 if$ |
|
1322 "\begin{thebibliography}" |
|
1323 write$ newline$ |
|
1324 } |
|
1325 |
|
1326 EXECUTE {begin.bib} |
|
1327 |
|
1328 EXECUTE {init.state.consts} |
|
1329 |
|
1330 ITERATE {call.type$} |
|
1331 |
|
1332 FUNCTION {end.bib} |
|
1333 { newline$ |
|
1334 "\end{thebibliography}" write$ newline$ |
|
1335 } |
|
1336 |
|
1337 EXECUTE {end.bib} |
|
1338 %% End of customized bst file |
|
1339 %% |
|
1340 %% End of file `gtart.bst'. |