Commit before breaking everything
[matches/honours.git] / thesis / styles / agu.bst
1 %%
2 %% This is file `agu.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% merlin.mbs  (with options: `head,ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}')
8 %% physjour.mbs  (with options: `ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}')
9 %% geojour.mbs  (with options: `ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}')
10 %% merlin.mbs  (with options: `tail,ay,nat,seq-key,nm-rev1,nmlm,x9,m1,lab,lab-it,keyxyr,blkyear,note-yr,thtit-a,trnum-it,vol-it,vnum-x,volp-com,pgsep-c,num-xser,pre-edn,edpar,bkedcap,edby,blk-com,pp,ed,abr,ednx,xedn,jabr,and-com,em-it,{}')
11 %% ----------------------------------------
12 %% *** For journals of the American Geophysical Union ***
13 %% *** NOTE: this version limits number of authors in ref list to
14 %% ***   maximum of 9; if more there, only First et al are listed
15 %% ***   Use agufull.bst instead for complete list
16 %% ***
17 %% *** Version 2.1d from 1999/05/20
18 %% *** Book editors done right as P. James (Ed.),
19 %% *** Missing italics with some authors fixed
20 %% ***
21 %% *** Version 2.1c from 1999/02/11
22 %% *** This version does not crash older BibTeX installations with
23 %% *** more than 3000 wiz-functions
24 %% ***
25 %% *** Version 2.1b from 1997/11/18
26 %% *** (page numbers over 9999 are broken with commas, as 12,345)
27 %% ***
28 %% *** Version 2.1a from 1997/05/26
29 %% *** (contains improvements from copy editor comments,
30 %% ***    notes added with first word lowercase (bug in 2.1 fixed)
31 %% ***    and journal `number' never output
32 %% ***    abbreviation for grl corrected)
33 %% ***
34 %% 
35 %% Copyright 1994-1999 Patrick W Daly
36  % ===============================================================
37  % IMPORTANT NOTICE:
38  % This bibliographic style (bst) file has been generated from one or
39  % more master bibliographic style (mbs) files, listed above.
40  %
41  % This generated file can be redistributed and/or modified under the terms
42  % of the LaTeX Project Public License Distributed from CTAN
43  % archives in directory macros/latex/base/lppl.txt; either
44  % version 1 of the License, or any later version.
45  % ===============================================================
46  % Name and version information of the main mbs file:
47  % \ProvidesFile{merlin.mbs}[1999/05/20 3.89 (PWD)]
48  %   For use with BibTeX version 0.99a or later
49  %-------------------------------------------------------------------
50  % This bibliography style file is intended for texts in ENGLISH
51  % This is an author-year citation style bibliography. As such, it is
52  % non-standard LaTeX, and requires a special package file to function properly.
53  % Such a package is    natbib.sty   by Patrick W. Daly
54  % The form of the \bibitem entries is
55  %   \bibitem[Jones et al.(1990)]{key}...
56  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
57  % The essential feature is that the label (the part in brackets) consists
58  % of the author names, as they should appear in the citation, with the year
59  % in parentheses following. There must be no space before the opening
60  % parenthesis!
61  % With natbib v5.3, a full list of authors may also follow the year.
62  % In natbib.sty, it is possible to define the type of enclosures that is
63  % really wanted (brackets or parentheses), but in either case, there must
64  % be parentheses in the label.
65  % The \cite command functions as follows:
66  %   \citet{key} ==>>                Jones et al. (1990)
67  %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)
68  %   \citep{key} ==>>                (Jones et al., 1990)
69  %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)
70  %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
71  %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
72  %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
73  %   \citeauthor{key} ==>>           Jones et al.
74  %   \citeauthor*{key} ==>>          Jones, Baker, and Smith
75  %   \citeyear{key} ==>>             1990
76  %---------------------------------------------------------------------
77
78 ENTRY
79   { address
80     author
81     booktitle
82     chapter
83     edition
84     editor
85     howpublished
86     institution
87     journal
88     key
89     month
90     note
91     number
92     organization
93     pages
94     publisher
95     school
96     series
97     title
98     type
99     volume
100     year
101   }
102   {}
103   { label extra.label sort.label short.list }
104
105 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
106
107 FUNCTION {init.state.consts}
108 { #0 'before.all :=
109   #1 'mid.sentence :=
110   #2 'after.sentence :=
111   #3 'after.block :=
112 }
113
114 STRINGS { s t }
115
116 FUNCTION {output.nonnull}
117 { 's :=
118   output.state mid.sentence =
119     { ", " * write$ }
120     { output.state after.block =
121         { add.period$ write$
122           newline$
123           "\newblock " write$
124         }
125         { output.state before.all =
126             'write$
127             { add.period$ " " * write$ }
128           if$
129         }
130       if$
131       mid.sentence 'output.state :=
132     }
133   if$
134   s
135 }
136
137 FUNCTION {output}
138 { duplicate$ empty$
139     'pop$
140     'output.nonnull
141   if$
142 }
143
144 FUNCTION {output.check}
145 { 't :=
146   duplicate$ empty$
147     { pop$ "empty " t * " in " * cite$ * warning$ }
148     'output.nonnull
149   if$
150 }
151
152 FUNCTION {fin.entry}
153 { add.period$
154   write$
155   newline$
156 }
157
158 FUNCTION {new.block}
159 { output.state before.all =
160     'skip$
161     { after.block 'output.state := }
162   if$
163 }
164
165 FUNCTION {new.sentence}
166 { output.state after.block =
167     'skip$
168     { output.state before.all =
169         'skip$
170         { after.sentence 'output.state := }
171       if$
172     }
173   if$
174 }
175
176 FUNCTION {add.blank}
177 {  " " * before.all 'output.state :=
178 }
179
180 FUNCTION {date.block}
181 {
182   skip$
183 }
184
185 FUNCTION {not}
186 {   { #0 }
187     { #1 }
188   if$
189 }
190
191 FUNCTION {and}
192 {   'skip$
193     { pop$ #0 }
194   if$
195 }
196
197 FUNCTION {or}
198 {   { pop$ #1 }
199     'skip$
200   if$
201 }
202
203 FUNCTION {new.block.checkb}
204 { empty$
205   swap$ empty$
206   and
207     'skip$
208     'new.block
209   if$
210 }
211
212 FUNCTION {field.or.null}
213 { duplicate$ empty$
214     { pop$ "" }
215     'skip$
216   if$
217 }
218
219 FUNCTION {emphasize}
220 { duplicate$ empty$
221     { pop$ "" }
222     { "{\it " swap$ * "\/}" * }
223   if$
224 }
225
226
227 FUNCTION {cite.name.font}
228 { emphasize }
229
230 FUNCTION {capitalize}
231 { "u" change.case$ "t" change.case$ }
232
233 FUNCTION {space.word}
234 { " " swap$ * " " * }
235
236  % Here are the language-specific definitions for explicit words.
237  % Each function has a name bbl.xxx where xxx is the English word.
238  % The language selected here is ENGLISH
239 FUNCTION {bbl.and}
240 { "and"}
241
242 FUNCTION {bbl.etal}
243 { "et~al." }
244
245 FUNCTION {bbl.editors}
246 { "eds." }
247
248 FUNCTION {bbl.editor}
249 { "ed." }
250
251 FUNCTION {bbl.edby}
252 { "edited by" }
253
254 FUNCTION {bbl.edition}
255 { "ed." }
256
257 FUNCTION {bbl.volume}
258 { "vol." }
259
260 FUNCTION {bbl.of}
261 { "of" }
262
263 FUNCTION {bbl.number}
264 { "no." }
265
266 FUNCTION {bbl.nr}
267 { "no." }
268
269 FUNCTION {bbl.in}
270 { "in" }
271
272 FUNCTION {bbl.pages}
273 { "pp." }
274
275 FUNCTION {bbl.page}
276 { "p." }
277
278 FUNCTION {bbl.chapter}
279 { "chap." }
280
281 FUNCTION {bbl.techrep}
282 { "Tech. Rep." }
283
284 FUNCTION {bbl.mthesis}
285 { "Master's thesis" }
286
287 FUNCTION {bbl.phdthesis}
288 { "Ph.D. thesis" }
289
290 MACRO {jan} {"Jan."}
291
292 MACRO {feb} {"Feb."}
293
294 MACRO {mar} {"Mar."}
295
296 MACRO {apr} {"Apr."}
297
298 MACRO {may} {"May"}
299
300 MACRO {jun} {"Jun."}
301
302 MACRO {jul} {"Jul."}
303
304 MACRO {aug} {"Aug."}
305
306 MACRO {sep} {"Sep."}
307
308 MACRO {oct} {"Oct."}
309
310 MACRO {nov} {"Nov."}
311
312 MACRO {dec} {"Dec."}
313
314  %-------------------------------------------------------------------
315  % Begin module:
316  % \ProvidesFile{physjour.mbs}[1999/02/24 2.0d (PWD)]
317 MACRO {aa}{"Astron. \& Astrophys."}
318 MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
319 MACRO {aph} {"Acta Phys."}
320 MACRO {advp} {"Adv. Phys."}
321 MACRO {ajp} {"Amer. J. Phys."}
322 MACRO {ajm} {"Amer. J. Math."}
323 MACRO {amsci} {"Amer. Sci."}
324 MACRO {anofd} {"Ann. Fluid Dyn."}
325 MACRO {am} {"Ann. Math."}
326 MACRO {ap} {"Ann. Phys. (NY)"}
327 MACRO {adp} {"Ann. Phys. (Leipzig)"}
328 MACRO {ao} {"Appl. Opt."}
329 MACRO {apl} {"Appl. Phys. Lett."}
330 MACRO {app} {"Astroparticle Phys."}
331 MACRO {apj} {"Astrophys. J."}
332 MACRO {apjsup} {"Astrophys. J. Suppl. Ser."}
333 MACRO {baps} {"Bull. Amer. Phys. Soc."}
334 MACRO {cmp} {"Comm. Math. Phys."}
335 MACRO {cpam} {"Commun. Pure Appl. Math."}
336 MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
337 MACRO {cpc} {"Comp. Phys. Comm."}
338 MACRO {cqg} {"Class. Quant. Grav."}
339 MACRO {cra} {"C. R. Acad. Sci. A"}
340 MACRO {fed} {"Fusion Eng. \& Design"}
341 MACRO {ft} {"Fusion Tech."}
342 MACRO {grg} {"Gen. Relativ. Gravit."}
343 MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
344 MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
345 MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
346 MACRO {ip} {"Infrared Phys."}
347 MACRO {irp} {"Infrared Phys."}
348 MACRO {jap} {"J. Appl. Phys."}
349 MACRO {jasa} {"J. Acoust. Soc. America"}
350 MACRO {jcp} {"J. Comp. Phys."}
351 MACRO {jetp} {"Sov. Phys.--JETP"}
352 MACRO {jfe} {"J. Fusion Energy"}
353 MACRO {jfm} {"J. Fluid Mech."}
354 MACRO {jmp} {"J. Math. Phys."}
355 MACRO {jne} {"J. Nucl. Energy"}
356 MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
357 MACRO {jnm} {"J. Nucl. Mat."}
358 MACRO {jpc} {"J. Phys. Chem."}
359 MACRO {jpp} {"J. Plasma Phys."}
360 MACRO {jpsj} {"J. Phys. Soc. Japan"}
361 MACRO {jsi} {"J. Sci. Instrum."}
362 MACRO {jvst} {"J. Vac. Sci. \& Tech."}
363 MACRO {nat} {"Nature"}
364 MACRO {nature} {"Nature"}
365 MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
366 MACRO {nf} {"Nucl. Fusion"}
367 MACRO {nim} {"Nucl. Inst. \& Meth."}
368 MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
369 MACRO {np} {"Nucl. Phys."}
370 MACRO {npb} {"Nucl. Phys. B"}
371 MACRO {nt/f} {"Nucl. Tech./Fusion"}
372 MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
373 MACRO {inc} {"Nuovo Cimento"}
374 MACRO {nc} {"Nuovo Cimento"}
375 MACRO {pf} {"Phys. Fluids"}
376 MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
377 MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
378 MACRO {pl} {"Phys. Lett."}
379 MACRO {pla} {"Phys. Lett. A"}
380 MACRO {plb} {"Phys. Lett. B"}
381 MACRO {prep} {"Phys. Rep."}
382 MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
383 MACRO {pp} {"Phys. Plasmas"}
384 MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
385 MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
386 MACRO {prl} {"Phys. Rev. Lett."}
387 MACRO {pr} {"Phys. Rev."}
388 MACRO {physrev} {"Phys. Rev."}
389 MACRO {pra} {"Phys. Rev. A"}
390 MACRO {prb} {"Phys. Rev. B"}
391 MACRO {prc} {"Phys. Rev. C"}
392 MACRO {prd} {"Phys. Rev. D"}
393 MACRO {pre} {"Phys. Rev. E"}
394 MACRO {ps} {"Phys. Scripta"}
395 MACRO {procrsl} {"Proc. Roy. Soc. London"}
396 MACRO {rmp} {"Rev. Mod. Phys."}
397 MACRO {rsi} {"Rev. Sci. Inst."}
398 MACRO {science} {"Science"}
399 MACRO {sciam} {"Sci. Am."}
400 MACRO {sam} {"Stud. Appl. Math."}
401 MACRO {sjpp} {"Sov. J. Plasma Phys."}
402 MACRO {spd} {"Sov. Phys.--Doklady"}
403 MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
404 MACRO {spu} {"Sov. Phys.--Uspeki"}
405  % End module: physjour.mbs
406  %-------------------------------------------------------------------
407  % Begin module:
408  % \ProvidesFile{geojour.mbs}[1999/02/24 2.0e (PWD)]
409 MACRO {aisr} {"Adv. Space Res."}
410 MACRO {ag} {"Ann. Geophys."}
411 MACRO {anigeo} {"Ann. Geofis."}
412 MACRO {angl} {"Ann. Glaciol."}
413 MACRO {andmet} {"Ann. d. Meteor."}
414 MACRO {andgeo} {"Ann. d. Geophys."}
415 MACRO {andphy} {"Ann. d. Phys."}
416 MACRO {afmgb} {"Arch. Meteor. Geophys. Bioklimatol."}
417 MACRO {atph} {"Atm\'osphera"}
418 MACRO {aao} {"Atmos.-Ocean"}
419 MACRO {ass}{"Astrophys. Space Sci."}
420 MACRO {atenv} {"Atmos. Environ."}
421 MACRO {aujag} {"Aust. J. Agric. Res."}
422 MACRO {aumet} {"Aust. Meteor. Mag."}
423 MACRO {blmet} {"Bound.-Layer Meteor."}
424 MACRO {bams} {"Bull. Amer. Meteor. Soc."}
425 MACRO {cch} {"Clim. Change"}
426 MACRO {cdyn} {"Climate Dyn."}
427 MACRO {cbul} {"Climatol. Bull."}
428 MACRO {cap} {"Contrib. Atmos. Phys."}
429 MACRO {dsr} {"Deep-Sea Res."}
430 MACRO {dhz} {"Dtsch. Hydrogr. Z."}
431 MACRO {dao} {"Dyn. Atmos. Oceans"}
432 MACRO {eco} {"Ecology"}
433 MACRO {empl}{"Earth, Moon and Planets"}
434 MACRO {envres} {"Environ. Res."}
435 MACRO {envst} {"Environ. Sci. Technol."}
436 MACRO {ecms} {"Estuarine Coastal Mar. Sci."}
437 MACRO {expa}{"Exper. Astron."}
438 MACRO {geoint} {"Geofis. Int."}
439 MACRO {geopub} {"Geofys. Publ."}
440 MACRO {geogeo} {"Geol. Geofiz."}
441 MACRO {gafd} {"Geophys. Astrophys. Fluid Dyn."}
442 MACRO {gfd} {"Geophys. Fluid Dyn."}
443 MACRO {geomag} {"Geophys. Mag."}
444 MACRO {georl} {"Geophys. Res. Lett."}
445 MACRO {grl} {"Geophys. Res. Lett."}
446 MACRO {ga} {"Geophysica"}
447 MACRO {gs} {"Geophysics"}
448 MACRO {ieeetap} {"IEEE Trans. Antennas Propag."}
449 MACRO {ijawp} {"Int. J. Air Water Pollut."}
450 MACRO {ijc} {"Int. J. Climatol."}
451 MACRO {ijrs} {"Int. J. Remote Sensing"}
452 MACRO {jam} {"J. Appl. Meteor."}
453 MACRO {jaot} {"J. Atmos. Ocean. Technol."}
454 MACRO {jatp} {"J. Atmos. Terr. Phys."}
455 MACRO {jce} {"J. Climate"}
456 MACRO {jcam} {"J. Climate Appl. Meteor."}
457 MACRO {jcm} {"J. Climate Meteor."}
458 MACRO {jcy} {"J. Climatol."}
459 MACRO {jgr} {"J. Geophys. Res."}
460 MACRO {jga} {"J. Glaciol."}
461 MACRO {jh} {"J. Hydrol."}
462 MACRO {jmr} {"J. Mar. Res."}
463 MACRO {jmrj} {"J. Meteor. Res. Japan"}
464 MACRO {jm} {"J. Meteor."}
465 MACRO {jpo} {"J. Phys. Oceanogr."}
466 MACRO {jra} {"J. Rech. Atmos."}
467 MACRO {jaes} {"J. Aeronaut. Sci."}
468 MACRO {japca} {"J. Air Pollut. Control Assoc."}
469 MACRO {jas} {"J. Atmos. Sci."}
470 MACRO {jmts} {"J. Mar. Technol. Soc."}
471 MACRO {jmsj} {"J. Meteor. Soc. Japan"}
472 MACRO {josj} {"J. Oceanogr. Soc. Japan"}
473 MACRO {jwm} {"J. Wea. Mod."}
474 MACRO {lao} {"Limnol. Oceanogr."}
475 MACRO {mwl} {"Mar. Wea. Log"}
476 MACRO {mau} {"Mausam"}
477 MACRO {meteor} {"``Meteor'' Forschungsergeb."}
478 MACRO {map} {"Met. Atmos. Phys."}
479 MACRO {metmag} {"Meteor. Mag."}
480 MACRO {metmon} {"Meteor. Monogr."}
481 MACRO {metrun} {"Meteor. Rundsch."}
482 MACRO {metzeit} {"Meteor. Z."}
483 MACRO {metgid} {"Meteor. Gidrol."}
484 MACRO {mwr} {"Mon. Wea. Rev."}
485 MACRO {nwd} {"Natl. Wea. Dig."}
486 MACRO {nzjmfr} {"N. Z. J. Mar. Freshwater Res."}
487 MACRO {npg} {"Nonlin. Proc. Geophys."}
488 MACRO {om} {"Oceanogr. Meteor."}
489 MACRO {ocac} {"Oceanol. Acta"}
490 MACRO {oceanus} {"Oceanus"}
491 MACRO {paleoc} {"Paleoceanography"}
492 MACRO {pce} {"Physics and Chemistry of the Earth"}
493 MACRO {pmg} {"Pap. Meteor. Geophys."}
494 MACRO {ppom} {"Pap. Phys. Oceanogr. Meteor."}
495 MACRO {physzeit} {"Phys. Z."}
496 MACRO {pps} {"Planet. Space Sci."}
497 MACRO {pss} {"Planet. Space Sci."}
498 MACRO {pag} {"Pure Appl. Geophys."}
499 MACRO {qjrms} {"Quart. J. Roy. Meteor. Soc."}
500 MACRO {quatres} {"Quat. Res."}
501 MACRO {rsci} {"Radio Sci."}
502 MACRO {rse} {"Remote Sens. Environ."}
503 MACRO {rgeo} {"Rev. Geophys."}
504 MACRO {rgsp} {"Rev. Geophys. Space Phys."}
505 MACRO {rdgeo} {"Rev. Geofis."}
506 MACRO {revmeta} {"Rev. Meteor."}
507 MACRO {sgp}{"Surveys in Geophys."}
508 MACRO {sp} {"Solar Phys."}
509 MACRO {ssr} {"Space Sci. Rev."}
510 MACRO {tellus} {"Tellus"}
511 MACRO {tac} {"Theor. Appl. Climatol."}
512 MACRO {tagu} {"Trans. Am. Geophys. Union (EOS)"}
513 MACRO {wrr} {"Water Resour. Res."}
514 MACRO {weather} {"Weather"}
515 MACRO {wafc} {"Wea. Forecasting"}
516 MACRO {ww} {"Weatherwise"}
517 MACRO {wmob} {"WMO Bull."}
518 MACRO {zeitmet} {"Z. Meteor."}
519  % End module: geojour.mbs
520 %% Copyright 1994-1999 Patrick W Daly
521 MACRO {acmcs} {"ACM Comput. Surv."}
522
523 MACRO {acta} {"Acta Inf."}
524
525 MACRO {cacm} {"Commun. ACM"}
526
527 MACRO {ibmjrd} {"IBM J. Res. Dev."}
528
529 MACRO {ibmsj} {"IBM Syst.~J."}
530
531 MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
532
533 MACRO {ieeetc} {"IEEE Trans. Comput."}
534
535 MACRO {ieeetcad}
536  {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
537
538 MACRO {ipl} {"Inf. Process. Lett."}
539
540 MACRO {jacm} {"J.~ACM"}
541
542 MACRO {jcss} {"J.~Comput. Syst. Sci."}
543
544 MACRO {scp} {"Sci. Comput. Programming"}
545
546 MACRO {sicomp} {"SIAM J. Comput."}
547
548 MACRO {tocs} {"ACM Trans. Comput. Syst."}
549
550 MACRO {tods} {"ACM Trans. Database Syst."}
551
552 MACRO {tog} {"ACM Trans. Gr."}
553
554 MACRO {toms} {"ACM Trans. Math. Softw."}
555
556 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
557
558 MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
559
560 MACRO {tcs} {"Theoretical Comput. Sci."}
561
562
563 INTEGERS { nameptr namesleft numnames }
564
565 FUNCTION {format.names}
566 { 's :=
567   "" 't :=
568   #1 'nameptr :=
569   s num.names$ 'numnames :=
570   numnames 'namesleft :=
571     { namesleft #0 > }
572     { nameptr #1 >
573         { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$  }
574         { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$  }
575       if$
576     't :=
577       nameptr #1 >
578         {
579           nameptr #1
580           #1 + =
581           numnames #9
582           > and
583             { "others" 't :=
584               #1 'namesleft := }
585             'skip$
586           if$
587           namesleft #1 >
588             { ", " * t * }
589             {
590               "," *
591               s nameptr "{ll}" format.name$ duplicate$ "others" =
592                 { 't := }
593                 { pop$ }
594               if$
595               t "others" =
596                 {
597                   " " * bbl.etal *
598                 }
599                 { bbl.and
600                   space.word * t *
601                 }
602               if$
603             }
604           if$
605         }
606         't
607       if$
608       nameptr #1 + 'nameptr :=
609       namesleft #1 - 'namesleft :=
610     }
611   while$
612 }
613
614 FUNCTION {format.names.ed}
615 { 's :=
616   "" 't :=
617   #1 'nameptr :=
618   s num.names$ 'numnames :=
619   numnames 'namesleft :=
620     { namesleft #0 > }
621     { s nameptr
622       "{f.~}{vv~}{ll}{, jj}"
623       format.name$
624       't :=
625       nameptr #1 >
626         {
627           namesleft #1 >
628             { ", " * t * }
629             {
630               numnames #2 >
631                 { "," * }
632                 'skip$
633               if$
634               s nameptr "{ll}" format.name$ duplicate$ "others" =
635                 { 't := }
636                 { pop$ }
637               if$
638               t "others" =
639                 {
640
641                   " " * bbl.etal *
642                 }
643                 { bbl.and
644                   space.word * t *
645                 }
646               if$
647             }
648           if$
649         }
650         't
651       if$
652       nameptr #1 + 'nameptr :=
653       namesleft #1 - 'namesleft :=
654     }
655   while$
656 }
657
658 FUNCTION {format.key}
659 { empty$
660     { key field.or.null }
661     { "" }
662   if$
663 }
664
665 FUNCTION {format.authors}
666 { author empty$
667     { "" }
668     { author format.names }
669   if$
670 }
671
672 FUNCTION {format.editors}
673 { editor empty$
674     { "" }
675     { editor format.names
676       " (" *
677       editor num.names$ #1 >
678         'bbl.editors
679         'bbl.editor
680       if$
681       capitalize
682       * ")" *
683     }
684   if$
685 }
686
687 FUNCTION {format.in.editors}
688 { editor empty$
689     { "" }
690     { editor format.names.ed
691     }
692   if$
693 }
694
695 FUNCTION {format.note}
696 {
697  note empty$
698     { "" }
699     { note #1 #1 substring$
700       duplicate$ "{" =
701         'skip$
702         { output.state mid.sentence =
703           { "l" }
704           { "u" }
705         if$
706         change.case$
707         }
708       if$
709       note #2 global.max$ substring$ *
710     }
711   if$
712 }
713
714 FUNCTION {format.title}
715 { title empty$
716     { "" }
717     { title "t" change.case$
718     }
719   if$
720 }
721
722 FUNCTION {format.full.names}
723 {'s :=
724  "" 't :=
725   #1 'nameptr :=
726   s num.names$ 'numnames :=
727   numnames 'namesleft :=
728     { namesleft #0 > }
729     { s nameptr
730       "{vv~}{ll}" format.name$
731       't :=
732       nameptr #1 >
733         {
734           nameptr #1
735           #1 + =
736           numnames #9
737           > and
738             { "others" 't :=
739               #1 'namesleft := }
740             'skip$
741           if$
742           namesleft #1 >
743             { ", " * t * }
744             {
745               s nameptr "{ll}" format.name$ duplicate$ "others" =
746                 { 't := }
747                 { pop$ }
748               if$
749               t "others" =
750                 {
751                   " " * bbl.etal *
752                   cite.name.font
753                 }
754                 {
755                   numnames #2 >
756                     { "," * }
757                     'skip$
758                   if$
759                   bbl.and
760                   space.word * t *
761                 }
762               if$
763             }
764           if$
765         }
766         't
767       if$
768       nameptr #1 + 'nameptr :=
769       namesleft #1 - 'namesleft :=
770     }
771   while$
772   t "others" =
773     'skip$
774     { cite.name.font }
775   if$
776 }
777
778 FUNCTION {author.editor.key.full}
779 { author empty$
780     { editor empty$
781         { key empty$
782             { cite$ #1 #3 substring$ }
783             'key
784           if$
785         }
786         { editor format.full.names }
787       if$
788     }
789     { author format.full.names }
790   if$
791 }
792
793 FUNCTION {author.key.full}
794 { author empty$
795     { key empty$
796          { cite$ #1 #3 substring$ }
797           'key
798       if$
799     }
800     { author format.full.names }
801   if$
802 }
803
804 FUNCTION {editor.key.full}
805 { editor empty$
806     { key empty$
807          { cite$ #1 #3 substring$ }
808           'key
809       if$
810     }
811     { editor format.full.names }
812   if$
813 }
814
815 FUNCTION {make.full.names}
816 { type$ "book" =
817   type$ "inbook" =
818   or
819     'author.editor.key.full
820     { type$ "proceedings" =
821         'editor.key.full
822         'author.key.full
823       if$
824     }
825   if$
826 }
827
828 FUNCTION {output.bibitem}
829 { newline$
830   "\bibitem[{" write$
831   label write$
832   ")" make.full.names duplicate$ short.list =
833      { pop$ }
834      { * }
835    if$
836   "}]{" * write$
837   cite$ write$
838   "}" write$
839   newline$
840   ""
841   before.all 'output.state :=
842 }
843
844 FUNCTION {if.digit}
845 { duplicate$ "0" =
846   swap$ duplicate$ "1" =
847   swap$ duplicate$ "2" =
848   swap$ duplicate$ "3" =
849   swap$ duplicate$ "4" =
850   swap$ duplicate$ "5" =
851   swap$ duplicate$ "6" =
852   swap$ duplicate$ "7" =
853   swap$ duplicate$ "8" =
854   swap$ "9" = or or or or or or or or or
855 }
856 FUNCTION {n.separate}
857 { 't :=
858   ""
859   #0 'numnames :=
860   { t empty$ not }
861   { t #-1 #1 substring$ if.digit
862       { numnames #1 + 'numnames := }
863       { #0 'numnames := }
864     if$
865     t #-1 #1 substring$ swap$ *
866     t #-2 global.max$ substring$ 't :=
867     numnames #5 =
868       { duplicate$ #1 #2 substring$ swap$
869         #3 global.max$ substring$
870         "," swap$ * *
871       }
872       'skip$
873     if$
874   }
875   while$
876 }
877 FUNCTION {n.dashify}
878 {
879   n.separate
880   't :=
881   ""
882     { t empty$ not }
883     { t #1 #1 substring$ "-" =
884         { t #1 #2 substring$ "--" = not
885             { "--" *
886               t #2 global.max$ substring$ 't :=
887             }
888             {   { t #1 #1 substring$ "-" = }
889                 { "-" *
890                   t #2 global.max$ substring$ 't :=
891                 }
892               while$
893             }
894           if$
895         }
896         { t #1 #1 substring$ *
897           t #2 global.max$ substring$ 't :=
898         }
899       if$
900     }
901   while$
902 }
903
904 FUNCTION {word.in}
905 { bbl.in
906   " " * }
907
908 FUNCTION {format.date}
909 { year duplicate$ empty$
910     { pop$ "" }
911     'skip$
912   if$
913   extra.label *
914 }
915
916 FUNCTION {format.btitle}
917 { title emphasize
918 }
919
920 FUNCTION {tie.or.space.connect}
921 { duplicate$ text.length$ #3 <
922     { "~" }
923     { " " }
924   if$
925   swap$ * *
926 }
927
928 FUNCTION {either.or.check}
929 { empty$
930     'pop$
931     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
932   if$
933 }
934
935 FUNCTION {format.bvolume}
936 { volume empty$
937     { "" }
938     { bbl.volume volume tie.or.space.connect
939       series empty$
940         'skip$
941         { bbl.of space.word * series emphasize * }
942       if$
943       "volume and number" number either.or.check
944     }
945   if$
946 }
947
948 FUNCTION {format.number.series}
949 { volume empty$
950     { number empty$
951         { series field.or.null }
952         { series empty$
953             { number }
954         { output.state mid.sentence =
955             { bbl.number }
956             { bbl.number capitalize }
957           if$
958           number tie.or.space.connect
959           bbl.in space.word * series *
960         }
961       if$
962     }
963       if$
964     }
965     { "" }
966   if$
967 }
968
969
970 FUNCTION {format.edition}
971 { edition empty$
972     { "" }
973     { output.state mid.sentence =
974         { edition "l" change.case$ " " * bbl.edition * }
975         { edition "t" change.case$ " " * bbl.edition * }
976       if$
977     }
978   if$
979 }
980
981 INTEGERS { multiresult }
982
983 FUNCTION {multi.page.check}
984 { 't :=
985   #0 'multiresult :=
986     { multiresult not
987       t empty$ not
988       and
989     }
990     { t #1 #1 substring$
991       duplicate$ "-" =
992       swap$ duplicate$ "," =
993       swap$ "+" =
994       or or
995         { #1 'multiresult := }
996         { t #2 global.max$ substring$ 't := }
997       if$
998     }
999   while$
1000   multiresult
1001 }
1002
1003 FUNCTION {format.pages}
1004 { pages empty$
1005     { "" }
1006     { pages multi.page.check
1007         { bbl.pages pages n.dashify tie.or.space.connect }
1008         { bbl.page pages tie.or.space.connect }
1009       if$
1010     }
1011   if$
1012 }
1013
1014 FUNCTION {format.journal.pages}
1015 { pages empty$
1016     'skip$
1017     { duplicate$ empty$
1018         { pop$ format.pages }
1019         {
1020           ", " *
1021           pages n.dashify *
1022         }
1023       if$
1024     }
1025   if$
1026 }
1027
1028 FUNCTION {format.vol.num.pages}
1029 { volume field.or.null
1030   emphasize
1031   format.journal.pages
1032 }
1033
1034 FUNCTION {format.chapter.pages}
1035 { chapter empty$
1036     'format.pages
1037     { type empty$
1038         { bbl.chapter }
1039         { type "l" change.case$ }
1040       if$
1041       chapter tie.or.space.connect
1042       pages empty$
1043         'skip$
1044         { ", " * format.pages * }
1045       if$
1046     }
1047   if$
1048 }
1049
1050 FUNCTION {format.in.ed.booktitle}
1051 { booktitle empty$
1052     { "" }
1053     { editor empty$
1054         { word.in booktitle emphasize * }
1055         { word.in booktitle emphasize *
1056           ", " *
1057           bbl.edby
1058           * " " *
1059           format.in.editors *
1060         }
1061       if$
1062     }
1063   if$
1064 }
1065
1066 FUNCTION {format.thesis.type}
1067 { type empty$
1068     'skip$
1069     { pop$
1070       type "t" change.case$
1071     }
1072   if$
1073 }
1074
1075 FUNCTION {format.tr.number}
1076 { type empty$
1077     { bbl.techrep }
1078     'type
1079   if$
1080   number empty$
1081     { "t" change.case$ }
1082     { number tie.or.space.connect }
1083   if$
1084 }
1085
1086 FUNCTION {format.article.crossref}
1087 {
1088   word.in
1089   " \cite{" * crossref * "}" *
1090 }
1091
1092 FUNCTION {format.book.crossref}
1093 { volume empty$
1094     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
1095       word.in
1096     }
1097     { bbl.volume volume tie.or.space.connect
1098       bbl.of space.word *
1099     }
1100   if$
1101   " \cite{" * crossref * "}" *
1102 }
1103
1104 FUNCTION {format.incoll.inproc.crossref}
1105 {
1106   word.in
1107   " \cite{" * crossref * "}" *
1108 }
1109
1110 FUNCTION {format.org.or.pub}
1111 { 't :=
1112   ""
1113   address empty$ t empty$ and
1114     'skip$
1115     {
1116       t empty$
1117         { address empty$
1118           'skip$
1119           { address * }
1120           if$
1121         }
1122         { t *
1123           address empty$
1124             'skip$
1125             { ", " * address * }
1126           if$
1127         }
1128       if$
1129     }
1130   if$
1131 }
1132
1133 FUNCTION {format.publisher.address}
1134 { publisher empty$
1135     { "empty publisher in " cite$ * warning$
1136       ""
1137     }
1138     { publisher }
1139   if$
1140   format.org.or.pub
1141 }
1142
1143 FUNCTION {format.organization.address}
1144 { organization empty$
1145     { "" }
1146     { organization }
1147   if$
1148   format.org.or.pub
1149 }
1150
1151 FUNCTION {article}
1152 { output.bibitem
1153   format.authors "author" output.check
1154   author format.key output
1155   format.title "title" output.check
1156   crossref missing$
1157     { journal
1158       emphasize
1159       "journal" output.check
1160       format.vol.num.pages output
1161       format.date "year" output.check
1162     }
1163     { format.article.crossref output.nonnull
1164       format.pages output
1165     }
1166   if$
1167   format.note output
1168   fin.entry
1169 }
1170
1171 FUNCTION {book}
1172 { output.bibitem
1173   author empty$
1174     { format.editors "author and editor" output.check
1175       editor format.key output
1176     }
1177     { format.authors output.nonnull
1178       crossref missing$
1179         { "author and editor" editor either.or.check }
1180         'skip$
1181       if$
1182     }
1183   if$
1184   format.btitle "title" output.check
1185   crossref missing$
1186     { format.bvolume output
1187       format.number.series output
1188       format.edition output
1189       format.publisher.address output
1190     }
1191     {
1192       format.book.crossref output.nonnull
1193     }
1194   if$
1195   format.date "year" output.check
1196   format.note output
1197   fin.entry
1198 }
1199
1200 FUNCTION {booklet}
1201 { output.bibitem
1202   format.authors output
1203   author format.key output
1204   format.title "title" output.check
1205   howpublished output
1206   address output
1207   format.date "year" output.check
1208   format.note output
1209   fin.entry
1210 }
1211
1212 FUNCTION {inbook}
1213 { output.bibitem
1214   author empty$
1215     { format.editors "author and editor" output.check
1216       editor format.key output
1217     }
1218     { format.authors output.nonnull
1219       crossref missing$
1220         { "author and editor" editor either.or.check }
1221         'skip$
1222       if$
1223     }
1224   if$
1225   format.btitle "title" output.check
1226   crossref missing$
1227     {
1228       format.bvolume output
1229       format.chapter.pages "chapter and pages" output.check
1230       format.number.series output
1231       format.edition output
1232       format.publisher.address output
1233     }
1234     {
1235       format.chapter.pages "chapter and pages" output.check
1236       format.book.crossref output.nonnull
1237     }
1238   if$
1239   format.date "year" output.check
1240   format.note output
1241   fin.entry
1242 }
1243
1244 FUNCTION {incollection}
1245 { output.bibitem
1246   format.authors "author" output.check
1247   author format.key output
1248   format.title "title" output.check
1249   crossref missing$
1250     { format.in.ed.booktitle "booktitle" output.check
1251       format.bvolume output
1252       format.number.series output
1253       format.edition output
1254       format.chapter.pages output
1255       format.publisher.address output
1256       format.date "year" output.check
1257     }
1258     { format.incoll.inproc.crossref output.nonnull
1259       format.chapter.pages output
1260     }
1261   if$
1262   format.note output
1263   fin.entry
1264 }
1265
1266 FUNCTION {inproceedings}
1267 { output.bibitem
1268   format.authors "author" output.check
1269   author format.key output
1270   format.title "title" output.check
1271   crossref missing$
1272     { format.in.ed.booktitle "booktitle" output.check
1273       format.bvolume output
1274       format.number.series output
1275       format.pages output
1276       publisher empty$
1277         { format.organization.address output }
1278         { organization output
1279           format.publisher.address output
1280         }
1281       if$
1282       format.date "year" output.check
1283     }
1284     { format.incoll.inproc.crossref output.nonnull
1285       format.pages output
1286     }
1287   if$
1288   format.note output
1289   fin.entry
1290 }
1291
1292 FUNCTION {conference} { inproceedings }
1293
1294 FUNCTION {manual}
1295 { output.bibitem
1296   format.authors output
1297   author format.key output
1298   format.btitle "title" output.check
1299   organization output
1300   address output
1301   format.edition output
1302   format.date "year" output.check
1303   format.note output
1304   fin.entry
1305 }
1306
1307 FUNCTION {mastersthesis}
1308 { output.bibitem
1309   format.authors "author" output.check
1310   author format.key output
1311   format.title "title" output.check
1312   bbl.mthesis format.thesis.type output.nonnull
1313   school "school" output.check
1314   address output
1315   format.date "year" output.check
1316   format.note output
1317   fin.entry
1318 }
1319
1320 FUNCTION {misc}
1321 { output.bibitem
1322   format.authors output
1323   author format.key output
1324   format.title output
1325   howpublished output
1326   format.date "year" output.check
1327   format.note output
1328   fin.entry
1329 }
1330
1331 FUNCTION {phdthesis}
1332 { output.bibitem
1333   format.authors "author" output.check
1334   author format.key output
1335   format.title "title" output.check
1336   bbl.phdthesis format.thesis.type output.nonnull
1337   school "school" output.check
1338   address output
1339   format.date "year" output.check
1340   format.note output
1341   fin.entry
1342 }
1343
1344 FUNCTION {proceedings}
1345 { output.bibitem
1346   format.editors output
1347   editor format.key output
1348   format.btitle "title" output.check
1349   format.bvolume output
1350   format.number.series output
1351   publisher empty$
1352     { format.organization.address output }
1353     { organization output
1354       format.publisher.address output
1355     }
1356   if$
1357   format.date "year" output.check
1358   format.note output
1359   fin.entry
1360 }
1361
1362 FUNCTION {techreport}
1363 { output.bibitem
1364   format.authors "author" output.check
1365   author format.key output
1366   format.title "title" output.check
1367   format.tr.number emphasize output.nonnull
1368   institution "institution" output.check
1369   address output
1370   format.date "year" output.check
1371   format.note output
1372   fin.entry
1373 }
1374
1375 FUNCTION {unpublished}
1376 { output.bibitem
1377   format.authors "author" output.check
1378   author format.key output
1379   format.title "title" output.check
1380   format.date "year" output.check
1381   format.note "note" output.check
1382   fin.entry
1383 }
1384
1385 FUNCTION {default.type} { misc }
1386
1387 READ
1388
1389 FUNCTION {sortify}
1390 { purify$
1391   "l" change.case$
1392 }
1393
1394 INTEGERS { len }
1395
1396 FUNCTION {chop.word}
1397 { 's :=
1398   'len :=
1399   s #1 len substring$ =
1400     { s len #1 + global.max$ substring$ }
1401     's
1402   if$
1403 }
1404
1405 FUNCTION {format.lab.names}
1406 { 's :=
1407   "" 't :=
1408   s #1 "{vv~}{ll}" format.name$
1409   s num.names$ duplicate$
1410   #2 >
1411     { pop$
1412       " " * bbl.etal *
1413       cite.name.font
1414       "others" 't :=
1415     }
1416     { #2 <
1417         'skip$
1418         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1419             {
1420               " " * bbl.etal *
1421               cite.name.font
1422               "others" 't :=
1423             }
1424             { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1425               * }
1426           if$
1427         }
1428       if$
1429     }
1430   if$
1431   t "others" =
1432     'skip$
1433     { cite.name.font }
1434   if$
1435 }
1436
1437 FUNCTION {author.key.label}
1438 { author empty$
1439     { key empty$
1440         { cite$ #1 #3 substring$ }
1441         'key
1442       if$
1443     }
1444     { author format.lab.names }
1445   if$
1446 }
1447
1448 FUNCTION {author.editor.key.label}
1449 { author empty$
1450     { editor empty$
1451         { key empty$
1452             { cite$ #1 #3 substring$ }
1453             'key
1454           if$
1455         }
1456         { editor format.lab.names }
1457       if$
1458     }
1459     { author format.lab.names }
1460   if$
1461 }
1462
1463 FUNCTION {editor.key.label}
1464 { editor empty$
1465     { key empty$
1466         { cite$ #1 #3 substring$ }
1467         'key
1468       if$
1469     }
1470     { editor format.lab.names }
1471   if$
1472 }
1473
1474 FUNCTION {calc.short.authors}
1475 { type$ "book" =
1476   type$ "inbook" =
1477   or
1478     'author.editor.key.label
1479     { type$ "proceedings" =
1480         'editor.key.label
1481         'author.key.label
1482       if$
1483     }
1484   if$
1485   'short.list :=
1486 }
1487
1488 FUNCTION {calc.label}
1489 { calc.short.authors
1490   short.list
1491   "("
1492   *
1493   year duplicate$ empty$
1494   short.list key field.or.null = or
1495      { pop$ "" }
1496      'skip$
1497   if$
1498   *
1499   'label :=
1500 }
1501
1502 FUNCTION {sort.format.names}
1503 { 's :=
1504   #1 'nameptr :=
1505   ""
1506   s num.names$ 'numnames :=
1507   numnames 'namesleft :=
1508     { namesleft #0 > }
1509     { s nameptr
1510       "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
1511       format.name$ 't :=
1512       nameptr #1 >
1513         {
1514           nameptr #1
1515           #1 + =
1516           numnames #9
1517           > and
1518             { "others" 't :=
1519               #1 'namesleft := }
1520             'skip$
1521           if$
1522           "   "  *
1523           namesleft #1 = t "others" = and
1524             { "zzzzz" * }
1525             { numnames #2 > nameptr #2 = and
1526                 { "zz" * year field.or.null * "   " * }
1527                 'skip$
1528               if$
1529               t sortify *
1530             }
1531           if$
1532         }
1533         { t sortify * }
1534       if$
1535       nameptr #1 + 'nameptr :=
1536       namesleft #1 - 'namesleft :=
1537     }
1538   while$
1539 }
1540
1541 FUNCTION {sort.format.title}
1542 { 't :=
1543   "A " #2
1544     "An " #3
1545       "The " #4 t chop.word
1546     chop.word
1547   chop.word
1548   sortify
1549   #1 global.max$ substring$
1550 }
1551
1552 FUNCTION {author.sort}
1553 { author empty$
1554     { key empty$
1555         { "to sort, need author or key in " cite$ * warning$
1556           ""
1557         }
1558         { key sortify }
1559       if$
1560     }
1561     { author sort.format.names }
1562   if$
1563 }
1564
1565 FUNCTION {author.editor.sort}
1566 { author empty$
1567     { editor empty$
1568         { key empty$
1569             { "to sort, need author, editor, or key in " cite$ * warning$
1570               ""
1571             }
1572             { key sortify }
1573           if$
1574         }
1575         { editor sort.format.names }
1576       if$
1577     }
1578     { author sort.format.names }
1579   if$
1580 }
1581
1582 FUNCTION {editor.sort}
1583 { editor empty$
1584     { key empty$
1585         { "to sort, need editor or key in " cite$ * warning$
1586           ""
1587         }
1588         { key sortify }
1589       if$
1590     }
1591     { editor sort.format.names }
1592   if$
1593 }
1594
1595 FUNCTION {presort}
1596 { calc.label
1597   label sortify
1598   "    "
1599   *
1600   type$ "book" =
1601   type$ "inbook" =
1602   or
1603     'author.editor.sort
1604     { type$ "proceedings" =
1605         'editor.sort
1606         'author.sort
1607       if$
1608     }
1609   if$
1610   #1 entry.max$ substring$
1611   'sort.label :=
1612   sort.label
1613   *
1614   "    "
1615   *
1616   cite$
1617   *
1618   #1 entry.max$ substring$
1619   'sort.key$ :=
1620 }
1621
1622 ITERATE {presort}
1623
1624 SORT
1625
1626 STRINGS { last.label next.extra }
1627
1628 INTEGERS { last.extra.num number.label }
1629
1630 FUNCTION {initialize.extra.label.stuff}
1631 { #0 int.to.chr$ 'last.label :=
1632   "" 'next.extra :=
1633   #0 'last.extra.num :=
1634   #0 'number.label :=
1635 }
1636
1637 FUNCTION {forward.pass}
1638 { last.label label =
1639     { last.extra.num #1 + 'last.extra.num :=
1640       last.extra.num int.to.chr$ 'extra.label :=
1641     }
1642     { "a" chr.to.int$ 'last.extra.num :=
1643       "" 'extra.label :=
1644       label 'last.label :=
1645     }
1646   if$
1647   number.label #1 + 'number.label :=
1648 }
1649
1650 FUNCTION {reverse.pass}
1651 { next.extra "b" =
1652     { "a" 'extra.label := }
1653     'skip$
1654   if$
1655   extra.label 'next.extra :=
1656   extra.label
1657   duplicate$ empty$
1658     'skip$
1659     { "{\natexlab{" swap$ * "}}" * }
1660   if$
1661   'extra.label :=
1662   label extra.label * 'label :=
1663 }
1664
1665 EXECUTE {initialize.extra.label.stuff}
1666
1667 ITERATE {forward.pass}
1668
1669 REVERSE {reverse.pass}
1670
1671 FUNCTION {bib.sort.order}
1672 { sort.label
1673   "    "
1674   *
1675   year field.or.null sortify
1676   *
1677   "    "
1678   *
1679   cite$
1680   *
1681   #1 entry.max$ substring$
1682   'sort.key$ :=
1683 }
1684
1685 ITERATE {bib.sort.order}
1686
1687 SORT
1688
1689 FUNCTION {begin.bib}
1690 { preamble$ empty$
1691     'skip$
1692     { preamble$ write$ newline$ }
1693   if$
1694   "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1695   write$ newline$
1696   "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1697   write$ newline$
1698 }
1699
1700 EXECUTE {begin.bib}
1701
1702 EXECUTE {init.state.consts}
1703
1704 ITERATE {call.type$}
1705
1706 FUNCTION {end.bib}
1707 { newline$
1708   "\end{thebibliography}" write$ newline$
1709 }
1710
1711 EXECUTE {end.bib}
1712 %% End of customized bst file
1713 %%
1714 %% End of file `agu.bst'.

UCC git Repository :: git.ucc.asn.au