hekeus@51
|
1 %Filename: AAAI.bst
|
hekeus@51
|
2 % BibTeX `aaai' style file for BibTeX version 0.99c, LaTeX version 2.09
|
hekeus@51
|
3 % Version of 22 February 2008
|
hekeus@51
|
4 % Place it in a file called aaai.bst in the BibTeX search path. (Placing it
|
hekeus@51
|
5 % in the same directory as the LaTeX document should also work.)
|
hekeus@51
|
6 % Support for named citations is provided by named.sty
|
hekeus@51
|
7 % This version was made by modifying the master file made by
|
hekeus@51
|
8 % Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU)
|
hekeus@51
|
9 % Copyright (C) 1985, all rights reserved.
|
hekeus@51
|
10 % Modifications Copyright (C) 1988, 1989, 1994, Peter F. Patel-Schneider
|
hekeus@51
|
11 % Copying of this file is authorized only if either
|
hekeus@51
|
12 % (1) you make absolutely no changes to your copy, including name, or
|
hekeus@51
|
13 % (2) if you do make changes, you name it something other than
|
hekeus@51
|
14 % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
|
hekeus@51
|
15 % This restriction helps ensure that all standard styles are identical.
|
hekeus@51
|
16 % This style is NOT guaranteed to work. It is provided in the hope
|
hekeus@51
|
17 % that it will make the preparation of papers easier.
|
hekeus@51
|
18 %
|
hekeus@51
|
19 % There are undoubtably bugs in this style. If you make bug fixes,
|
hekeus@51
|
20 % improvements, etc. please us know (www.aaai.org)
|
hekeus@51
|
21 % The preparation of this modified file was supported by Schlumberger Palo
|
hekeus@51
|
22 % Alto Research and AT\&T Bell Laboratories.
|
hekeus@51
|
23 % Modifications Copyright (C) 1990. Sunil Issar si@cs.cmu.edu
|
hekeus@51
|
24 % Modified the file so that the Bibliography style is closer to the
|
hekeus@51
|
25 % one specified in the Instructions to Authors for AAAI papers.
|
hekeus@51
|
26 % This style is NOT guaranteed to work. It is provided in the hope
|
hekeus@51
|
27 % that it will make the preparation of papers easier.
|
hekeus@51
|
28 % Standard disclaimers apply. Send comments etc., to si@cs.cmu.edu
|
hekeus@51
|
29 % This file can be used in other conferences as long as credit to the
|
hekeus@51
|
30 % authors and supporting agencies is retained, this notice is not changed,
|
hekeus@51
|
31 % and further modification or reuse is not restricted.
|
hekeus@51
|
32 % Name format in citations:
|
hekeus@51
|
33 % single authorFirst
|
hekeus@51
|
34 % two authorsFirst and Second
|
hekeus@51
|
35 % three authorsFirst, Second, and Third
|
hekeus@51
|
36 % more authorsFirst et al.
|
hekeus@51
|
37 %
|
hekeus@51
|
38 % Bibliography format
|
hekeus@51
|
39 % author. date. other.
|
hekeus@51
|
40 % Author format
|
hekeus@51
|
41 % single authorFirst, Initials
|
hekeus@51
|
42 % two authorsFirst, Initials, and Second, Initials
|
hekeus@51
|
43 % more authorsFirst, Initials; ...; and Last, Initials
|
hekeus@51
|
44 %
|
hekeus@51
|
45 % Reference list ordering: alphabetical by author or whatever passes
|
hekeus@51
|
46 % for author in the absence of one.
|
hekeus@51
|
47 %
|
hekeus@51
|
48 % This BibTeX style has support for short (year only) citations. This
|
hekeus@51
|
49 % is done by having the citations actually look like
|
hekeus@51
|
50 % \citeauthoryear{author-info}{year}
|
hekeus@51
|
51 % The LaTeX style has to have support for this
|
hekeus@51
|
52 ENTRY
|
hekeus@51
|
53 { address
|
hekeus@51
|
54 author
|
hekeus@51
|
55 booktitle
|
hekeus@51
|
56 chapter
|
hekeus@51
|
57 edition
|
hekeus@51
|
58 editor
|
hekeus@51
|
59 howpublished
|
hekeus@51
|
60 institution
|
hekeus@51
|
61 journal
|
hekeus@51
|
62 key
|
hekeus@51
|
63 month
|
hekeus@51
|
64 note
|
hekeus@51
|
65 number
|
hekeus@51
|
66 organization
|
hekeus@51
|
67 pages
|
hekeus@51
|
68 publisher
|
hekeus@51
|
69 school
|
hekeus@51
|
70 series
|
hekeus@51
|
71 title
|
hekeus@51
|
72 type
|
hekeus@51
|
73 volume
|
hekeus@51
|
74 year
|
hekeus@51
|
75 }
|
hekeus@51
|
76 {}
|
hekeus@51
|
77 { label extra.label sort.label }
|
hekeus@51
|
78 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
|
hekeus@51
|
79 FUNCTION {init.state.consts}
|
hekeus@51
|
80 { #0 'before.all :=
|
hekeus@51
|
81 #1 'mid.sentence :=
|
hekeus@51
|
82 #2 'after.sentence :=
|
hekeus@51
|
83 #3 'after.block :=
|
hekeus@51
|
84 }
|
hekeus@51
|
85 STRINGS { s t }
|
hekeus@51
|
86 FUNCTION {output.nonnull}
|
hekeus@51
|
87 { 's :=
|
hekeus@51
|
88 output.state mid.sentence =
|
hekeus@51
|
89 { ", " * write$ }
|
hekeus@51
|
90 { output.state after.block =
|
hekeus@51
|
91 { add.period$ write$
|
hekeus@51
|
92 newline$
|
hekeus@51
|
93 "\newblock " write$
|
hekeus@51
|
94 }
|
hekeus@51
|
95 { output.state before.all =
|
hekeus@51
|
96 'write$
|
hekeus@51
|
97 { add.period$ " " * write$ }
|
hekeus@51
|
98 if$
|
hekeus@51
|
99 }
|
hekeus@51
|
100 if$
|
hekeus@51
|
101 mid.sentence 'output.state :=
|
hekeus@51
|
102 }
|
hekeus@51
|
103 if$
|
hekeus@51
|
104 s
|
hekeus@51
|
105 }
|
hekeus@51
|
106 FUNCTION {sioutput.nonnull}
|
hekeus@51
|
107 { 's :=
|
hekeus@51
|
108 output.state mid.sentence =
|
hekeus@51
|
109 { " " * write$ }
|
hekeus@51
|
110 { output.state after.block =
|
hekeus@51
|
111 { add.period$ write$
|
hekeus@51
|
112 newline$
|
hekeus@51
|
113 "\newblock " write$
|
hekeus@51
|
114 }
|
hekeus@51
|
115 { output.state before.all =
|
hekeus@51
|
116 'write$
|
hekeus@51
|
117 { add.period$ " " * write$ }
|
hekeus@51
|
118 if$
|
hekeus@51
|
119 }
|
hekeus@51
|
120 if$
|
hekeus@51
|
121 mid.sentence 'output.state :=
|
hekeus@51
|
122 }
|
hekeus@51
|
123 if$
|
hekeus@51
|
124 s
|
hekeus@51
|
125 }
|
hekeus@51
|
126 FUNCTION {output}
|
hekeus@51
|
127 { duplicate$ empty$
|
hekeus@51
|
128 'pop$
|
hekeus@51
|
129 'output.nonnull
|
hekeus@51
|
130 if$
|
hekeus@51
|
131 }
|
hekeus@51
|
132 FUNCTION {sioutput}
|
hekeus@51
|
133 { duplicate$ empty$
|
hekeus@51
|
134 'pop$
|
hekeus@51
|
135 'sioutput.nonnull
|
hekeus@51
|
136 if$
|
hekeus@51
|
137 }
|
hekeus@51
|
138 FUNCTION {output.check}
|
hekeus@51
|
139 { 't :=
|
hekeus@51
|
140 duplicate$ empty$
|
hekeus@51
|
141 { pop$ "empty " t * " in " * cite$ * warning$ }
|
hekeus@51
|
142 'output.nonnull
|
hekeus@51
|
143 if$
|
hekeus@51
|
144 }
|
hekeus@51
|
145 FUNCTION {output.bibitem}
|
hekeus@51
|
146 { newline$
|
hekeus@51
|
147 "\bibitem[" write$
|
hekeus@51
|
148 label write$
|
hekeus@51
|
149 "]{" write$
|
hekeus@51
|
150 cite$ write$
|
hekeus@51
|
151 "}" write$
|
hekeus@51
|
152 newline$
|
hekeus@51
|
153 ""
|
hekeus@51
|
154 before.all 'output.state :=
|
hekeus@51
|
155 }
|
hekeus@51
|
156 FUNCTION {fin.entry}
|
hekeus@51
|
157 { add.period$
|
hekeus@51
|
158 write$
|
hekeus@51
|
159 newline$
|
hekeus@51
|
160 }
|
hekeus@51
|
161 FUNCTION {new.block}
|
hekeus@51
|
162 { output.state before.all =
|
hekeus@51
|
163 'skip$
|
hekeus@51
|
164 { after.block 'output.state := }
|
hekeus@51
|
165 if$
|
hekeus@51
|
166 }
|
hekeus@51
|
167 FUNCTION {new.sentence}
|
hekeus@51
|
168 { output.state after.block =
|
hekeus@51
|
169 'skip$
|
hekeus@51
|
170 { output.state before.all =
|
hekeus@51
|
171 'skip$
|
hekeus@51
|
172 { after.sentence 'output.state := }
|
hekeus@51
|
173 if$
|
hekeus@51
|
174 }
|
hekeus@51
|
175 if$
|
hekeus@51
|
176 }
|
hekeus@51
|
177 FUNCTION {not}
|
hekeus@51
|
178 { { #0 }
|
hekeus@51
|
179 { #1 }
|
hekeus@51
|
180 if$
|
hekeus@51
|
181 }
|
hekeus@51
|
182 FUNCTION {and}
|
hekeus@51
|
183 { 'skip$
|
hekeus@51
|
184 { pop$ #0 }
|
hekeus@51
|
185 if$
|
hekeus@51
|
186 }
|
hekeus@51
|
187 FUNCTION {or}
|
hekeus@51
|
188 { { pop$ #1 }
|
hekeus@51
|
189 'skip$
|
hekeus@51
|
190 if$
|
hekeus@51
|
191 }
|
hekeus@51
|
192 FUNCTION {new.block.checka}
|
hekeus@51
|
193 { empty$
|
hekeus@51
|
194 'skip$
|
hekeus@51
|
195 'new.block
|
hekeus@51
|
196 if$
|
hekeus@51
|
197 }
|
hekeus@51
|
198 FUNCTION {new.block.checkb}
|
hekeus@51
|
199 { empty$
|
hekeus@51
|
200 swap$ empty$
|
hekeus@51
|
201 and
|
hekeus@51
|
202 'skip$
|
hekeus@51
|
203 'new.block
|
hekeus@51
|
204 if$
|
hekeus@51
|
205 }
|
hekeus@51
|
206 FUNCTION {new.sentence.checka}
|
hekeus@51
|
207 { empty$
|
hekeus@51
|
208 'skip$
|
hekeus@51
|
209 'new.sentence
|
hekeus@51
|
210 if$
|
hekeus@51
|
211 }
|
hekeus@51
|
212 FUNCTION {new.sentence.checkb}
|
hekeus@51
|
213 { empty$
|
hekeus@51
|
214 swap$ empty$
|
hekeus@51
|
215 and
|
hekeus@51
|
216 'skip$
|
hekeus@51
|
217 'new.sentence
|
hekeus@51
|
218 if$
|
hekeus@51
|
219 }
|
hekeus@51
|
220 FUNCTION {field.or.null}
|
hekeus@51
|
221 { duplicate$ empty$
|
hekeus@51
|
222 { pop$ "" }
|
hekeus@51
|
223 'skip$
|
hekeus@51
|
224 if$
|
hekeus@51
|
225 }
|
hekeus@51
|
226 FUNCTION {emphasize}
|
hekeus@51
|
227 { duplicate$ empty$
|
hekeus@51
|
228 { pop$ "" }
|
hekeus@51
|
229 { "{\em " swap$ * "}" * }
|
hekeus@51
|
230 if$
|
hekeus@51
|
231 }
|
hekeus@51
|
232 INTEGERS { nameptr namesleft numnames }
|
hekeus@51
|
233 FUNCTION {format.publisher}
|
hekeus@51
|
234 { publisher empty$
|
hekeus@51
|
235 { "" }
|
hekeus@51
|
236 { address empty$
|
hekeus@51
|
237 { publisher }
|
hekeus@51
|
238 { address ": " * publisher * }
|
hekeus@51
|
239 if$
|
hekeus@51
|
240 }
|
hekeus@51
|
241 if$
|
hekeus@51
|
242 }
|
hekeus@51
|
243 FUNCTION {format.organization}
|
hekeus@51
|
244 { organization empty$
|
hekeus@51
|
245 { "" }
|
hekeus@51
|
246 { address empty$
|
hekeus@51
|
247 { organization }
|
hekeus@51
|
248 { address ": " * organization * }
|
hekeus@51
|
249 if$
|
hekeus@51
|
250 }
|
hekeus@51
|
251 if$
|
hekeus@51
|
252 }
|
hekeus@51
|
253 FUNCTION {format.names}
|
hekeus@51
|
254 { 's :=
|
hekeus@51
|
255 #1 'nameptr :=
|
hekeus@51
|
256 s num.names$ 'numnames :=
|
hekeus@51
|
257 numnames 'namesleft :=
|
hekeus@51
|
258 { namesleft #0 > }
|
hekeus@51
|
259 { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
|
hekeus@51
|
260 nameptr #1 >
|
hekeus@51
|
261 { namesleft #1 >
|
hekeus@51
|
262 { "; " * t * }
|
hekeus@51
|
263 { numnames #2 >
|
hekeus@51
|
264 { ";" * }
|
hekeus@51
|
265 { "," * }
|
hekeus@51
|
266 if$
|
hekeus@51
|
267 t "others" =
|
hekeus@51
|
268 { " et~al." * }
|
hekeus@51
|
269 { " and " * t * }
|
hekeus@51
|
270 if$
|
hekeus@51
|
271 }
|
hekeus@51
|
272 if$
|
hekeus@51
|
273 }
|
hekeus@51
|
274 't
|
hekeus@51
|
275 if$
|
hekeus@51
|
276 nameptr #1 + 'nameptr :=
|
hekeus@51
|
277 namesleft #1 - 'namesleft :=
|
hekeus@51
|
278 }
|
hekeus@51
|
279 while$
|
hekeus@51
|
280 add.period$
|
hekeus@51
|
281 }
|
hekeus@51
|
282 FUNCTION {format.authors}
|
hekeus@51
|
283 { author empty$
|
hekeus@51
|
284 { "" }
|
hekeus@51
|
285 { author format.names }
|
hekeus@51
|
286 if$
|
hekeus@51
|
287 }
|
hekeus@51
|
288 FUNCTION {format.editors}
|
hekeus@51
|
289 { editor empty$
|
hekeus@51
|
290 { "" }
|
hekeus@51
|
291 { editor format.names
|
hekeus@51
|
292 editor num.names$ #1 >
|
hekeus@51
|
293 { ", eds." * }
|
hekeus@51
|
294 { ", ed." * }
|
hekeus@51
|
295 if$
|
hekeus@51
|
296 }
|
hekeus@51
|
297 if$
|
hekeus@51
|
298 }
|
hekeus@51
|
299 FUNCTION {format.title}
|
hekeus@51
|
300 { title empty$
|
hekeus@51
|
301 { "" }
|
hekeus@51
|
302 { title "t" change.case$ }
|
hekeus@51
|
303 if$
|
hekeus@51
|
304 }
|
hekeus@51
|
305 FUNCTION {n.dashify}
|
hekeus@51
|
306 { 't :=
|
hekeus@51
|
307 ""
|
hekeus@51
|
308 { t empty$ not }
|
hekeus@51
|
309 { t #1 #1 substring$ "-" =
|
hekeus@51
|
310 { t #1 #2 substring$ "--" = not
|
hekeus@51
|
311 { "--" *
|
hekeus@51
|
312 t #2 global.max$ substring$ 't :=
|
hekeus@51
|
313 }
|
hekeus@51
|
314 { { t #1 #1 substring$ "-" = }
|
hekeus@51
|
315 { "-" *
|
hekeus@51
|
316 t #2 global.max$ substring$ 't :=
|
hekeus@51
|
317 }
|
hekeus@51
|
318 while$
|
hekeus@51
|
319 }
|
hekeus@51
|
320 if$
|
hekeus@51
|
321 }
|
hekeus@51
|
322 { t #1 #1 substring$ *
|
hekeus@51
|
323 t #2 global.max$ substring$ 't :=
|
hekeus@51
|
324 }
|
hekeus@51
|
325 if$
|
hekeus@51
|
326 }
|
hekeus@51
|
327 while$
|
hekeus@51
|
328 }
|
hekeus@51
|
329 FUNCTION {format.year}
|
hekeus@51
|
330 { year empty$
|
hekeus@51
|
331 { "" }
|
hekeus@51
|
332 { year extra.label * }
|
hekeus@51
|
333 if$
|
hekeus@51
|
334 }
|
hekeus@51
|
335 FUNCTION {format.date}
|
hekeus@51
|
336 { year empty$
|
hekeus@51
|
337 { month empty$
|
hekeus@51
|
338 { "" }
|
hekeus@51
|
339 { "there's a month but no year in " cite$ * warning$
|
hekeus@51
|
340 month
|
hekeus@51
|
341 }
|
hekeus@51
|
342 if$
|
hekeus@51
|
343 }
|
hekeus@51
|
344 { month empty$
|
hekeus@51
|
345 'year
|
hekeus@51
|
346 { month " " * year * }
|
hekeus@51
|
347 if$
|
hekeus@51
|
348 }
|
hekeus@51
|
349 if$
|
hekeus@51
|
350 }
|
hekeus@51
|
351 FUNCTION {format.btitle}
|
hekeus@51
|
352 { title emphasize
|
hekeus@51
|
353 }
|
hekeus@51
|
354 FUNCTION {tie.or.space.connect}
|
hekeus@51
|
355 { duplicate$ text.length$ #3 <
|
hekeus@51
|
356 { "~" }
|
hekeus@51
|
357 { " " }
|
hekeus@51
|
358 if$
|
hekeus@51
|
359 swap$ * *
|
hekeus@51
|
360 }
|
hekeus@51
|
361 FUNCTION {either.or.check}
|
hekeus@51
|
362 { empty$
|
hekeus@51
|
363 'pop$
|
hekeus@51
|
364 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
|
hekeus@51
|
365 if$
|
hekeus@51
|
366 }
|
hekeus@51
|
367 FUNCTION {format.bvolume}
|
hekeus@51
|
368 { volume empty$
|
hekeus@51
|
369 { "" }
|
hekeus@51
|
370 { "volume" volume tie.or.space.connect
|
hekeus@51
|
371 series empty$
|
hekeus@51
|
372 'skip$
|
hekeus@51
|
373 { " of " * series emphasize * }
|
hekeus@51
|
374 if$
|
hekeus@51
|
375 "volume and number" number either.or.check
|
hekeus@51
|
376 }
|
hekeus@51
|
377 if$
|
hekeus@51
|
378 }
|
hekeus@51
|
379 FUNCTION {format.number.series}
|
hekeus@51
|
380 { volume empty$
|
hekeus@51
|
381 { number empty$
|
hekeus@51
|
382 { series field.or.null }
|
hekeus@51
|
383 { output.state mid.sentence =
|
hekeus@51
|
384 { "number" }
|
hekeus@51
|
385 { "Number" }
|
hekeus@51
|
386 if$
|
hekeus@51
|
387 number tie.or.space.connect
|
hekeus@51
|
388 series empty$
|
hekeus@51
|
389 { "there's a number but no series in " cite$ * warning$ }
|
hekeus@51
|
390 { " in " * series * }
|
hekeus@51
|
391 if$
|
hekeus@51
|
392 }
|
hekeus@51
|
393 if$
|
hekeus@51
|
394 }
|
hekeus@51
|
395 { "" }
|
hekeus@51
|
396 if$
|
hekeus@51
|
397 }
|
hekeus@51
|
398 FUNCTION {format.edition}
|
hekeus@51
|
399 { edition empty$
|
hekeus@51
|
400 { "" }
|
hekeus@51
|
401 { output.state mid.sentence =
|
hekeus@51
|
402 { edition "l" change.case$ " edition" * }
|
hekeus@51
|
403 { edition "t" change.case$ " edition" * }
|
hekeus@51
|
404 if$
|
hekeus@51
|
405 }
|
hekeus@51
|
406 if$
|
hekeus@51
|
407 }
|
hekeus@51
|
408 INTEGERS { multiresult }
|
hekeus@51
|
409 FUNCTION {multi.page.check}
|
hekeus@51
|
410 { 't :=
|
hekeus@51
|
411 #0 'multiresult :=
|
hekeus@51
|
412 { multiresult not
|
hekeus@51
|
413 t empty$ not
|
hekeus@51
|
414 and
|
hekeus@51
|
415 }
|
hekeus@51
|
416 { t #1 #1 substring$
|
hekeus@51
|
417 duplicate$ "-" =
|
hekeus@51
|
418 swap$ duplicate$ "," =
|
hekeus@51
|
419 swap$ "+" =
|
hekeus@51
|
420 or or
|
hekeus@51
|
421 { #1 'multiresult := }
|
hekeus@51
|
422 { t #2 global.max$ substring$ 't := }
|
hekeus@51
|
423 if$
|
hekeus@51
|
424 }
|
hekeus@51
|
425 while$
|
hekeus@51
|
426 multiresult
|
hekeus@51
|
427 }
|
hekeus@51
|
428 FUNCTION {format.pages}
|
hekeus@51
|
429 { pages empty$
|
hekeus@51
|
430 { "" }
|
hekeus@51
|
431 { pages multi.page.check
|
hekeus@51
|
432 { "" pages n.dashify tie.or.space.connect }
|
hekeus@51
|
433 { "" pages tie.or.space.connect }
|
hekeus@51
|
434 if$
|
hekeus@51
|
435 }
|
hekeus@51
|
436 if$
|
hekeus@51
|
437 }
|
hekeus@51
|
438 FUNCTION {format.vol.num.pages}
|
hekeus@51
|
439 { volume field.or.null
|
hekeus@51
|
440 number empty$
|
hekeus@51
|
441 'skip$
|
hekeus@51
|
442 { "(" number * ")" * *
|
hekeus@51
|
443 volume empty$
|
hekeus@51
|
444 { "there's a number but no volume in " cite$ * warning$ }
|
hekeus@51
|
445 'skip$
|
hekeus@51
|
446 if$
|
hekeus@51
|
447 }
|
hekeus@51
|
448 if$
|
hekeus@51
|
449 pages empty$
|
hekeus@51
|
450 'skip$
|
hekeus@51
|
451 { duplicate$ empty$
|
hekeus@51
|
452 { pop$ format.pages }
|
hekeus@51
|
453 { ":" * pages n.dashify * }
|
hekeus@51
|
454 if$
|
hekeus@51
|
455 }
|
hekeus@51
|
456 if$
|
hekeus@51
|
457 }
|
hekeus@51
|
458 FUNCTION {format.chapter.pages}
|
hekeus@51
|
459 { chapter empty$
|
hekeus@51
|
460 'format.pages
|
hekeus@51
|
461 { type empty$
|
hekeus@51
|
462 { "chapter" }
|
hekeus@51
|
463 { type "l" change.case$ }
|
hekeus@51
|
464 if$
|
hekeus@51
|
465 chapter tie.or.space.connect
|
hekeus@51
|
466 pages empty$
|
hekeus@51
|
467 'skip$
|
hekeus@51
|
468 { ", " * format.pages * }
|
hekeus@51
|
469 if$
|
hekeus@51
|
470 }
|
hekeus@51
|
471 if$
|
hekeus@51
|
472 }
|
hekeus@51
|
473 FUNCTION {format.in.ed.booktitle}
|
hekeus@51
|
474 { booktitle empty$
|
hekeus@51
|
475 { "" }
|
hekeus@51
|
476 { editor empty$
|
hekeus@51
|
477 { "In " booktitle emphasize * }
|
hekeus@51
|
478 { "In " format.editors * ", " * booktitle emphasize * }
|
hekeus@51
|
479 if$
|
hekeus@51
|
480 }
|
hekeus@51
|
481 if$
|
hekeus@51
|
482 }
|
hekeus@51
|
483 FUNCTION {empty.misc.check}
|
hekeus@51
|
484 { author empty$ title empty$ howpublished empty$
|
hekeus@51
|
485 month empty$ year empty$ note empty$
|
hekeus@51
|
486 and and and and and
|
hekeus@51
|
487 key empty$ not and
|
hekeus@51
|
488 { "all relevant fields are empty in " cite$ * warning$ }
|
hekeus@51
|
489 'skip$
|
hekeus@51
|
490 if$
|
hekeus@51
|
491 }
|
hekeus@51
|
492 FUNCTION {format.thesis.type}
|
hekeus@51
|
493 { type empty$
|
hekeus@51
|
494 'skip$
|
hekeus@51
|
495 { pop$
|
hekeus@51
|
496 type "t" change.case$
|
hekeus@51
|
497 }
|
hekeus@51
|
498 if$
|
hekeus@51
|
499 }
|
hekeus@51
|
500 FUNCTION {format.tr.number}
|
hekeus@51
|
501 { type empty$
|
hekeus@51
|
502 { "Technical Report" }
|
hekeus@51
|
503 'type
|
hekeus@51
|
504 if$
|
hekeus@51
|
505 number empty$
|
hekeus@51
|
506 { "t" change.case$ }
|
hekeus@51
|
507 { number tie.or.space.connect }
|
hekeus@51
|
508 if$
|
hekeus@51
|
509 }
|
hekeus@51
|
510 FUNCTION {format.article.crossref}
|
hekeus@51
|
511 { key empty$
|
hekeus@51
|
512 { journal empty$
|
hekeus@51
|
513 { "need key or journal for " cite$ * " to crossref " * crossref *
|
hekeus@51
|
514 warning$
|
hekeus@51
|
515 ""
|
hekeus@51
|
516 }
|
hekeus@51
|
517 { "In {\em " journal * "\/}" * }
|
hekeus@51
|
518 if$
|
hekeus@51
|
519 }
|
hekeus@51
|
520 { "In " key * }
|
hekeus@51
|
521 if$
|
hekeus@51
|
522 " \shortcite{" * crossref * "}" *
|
hekeus@51
|
523 }
|
hekeus@51
|
524 FUNCTION {format.crossref.editor}
|
hekeus@51
|
525 { editor #1 "{vv~}{ll}" format.name$
|
hekeus@51
|
526 editor num.names$ duplicate$
|
hekeus@51
|
527 #2 >
|
hekeus@51
|
528 { pop$ " et~al." * }
|
hekeus@51
|
529 { #2 <
|
hekeus@51
|
530 'skip$
|
hekeus@51
|
531 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
|
hekeus@51
|
532 { " et~al." * }
|
hekeus@51
|
533 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
|
hekeus@51
|
534 if$
|
hekeus@51
|
535 }
|
hekeus@51
|
536 if$
|
hekeus@51
|
537 }
|
hekeus@51
|
538 if$
|
hekeus@51
|
539 }
|
hekeus@51
|
540 FUNCTION {format.book.crossref}
|
hekeus@51
|
541 { volume empty$
|
hekeus@51
|
542 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
|
hekeus@51
|
543 "In "
|
hekeus@51
|
544 }
|
hekeus@51
|
545 { "Volume" volume tie.or.space.connect
|
hekeus@51
|
546 " of " *
|
hekeus@51
|
547 }
|
hekeus@51
|
548 if$
|
hekeus@51
|
549 editor empty$
|
hekeus@51
|
550 editor field.or.null author field.or.null =
|
hekeus@51
|
551 or
|
hekeus@51
|
552 { key empty$
|
hekeus@51
|
553 { series empty$
|
hekeus@51
|
554 { "need editor, key, or series for " cite$ * " to crossref " *
|
hekeus@51
|
555 crossref * warning$
|
hekeus@51
|
556 "" *
|
hekeus@51
|
557 }
|
hekeus@51
|
558 { "{\em " * series * "\/}" * }
|
hekeus@51
|
559 if$
|
hekeus@51
|
560 }
|
hekeus@51
|
561 { key * }
|
hekeus@51
|
562 if$
|
hekeus@51
|
563 }
|
hekeus@51
|
564 { format.crossref.editor * }
|
hekeus@51
|
565 if$
|
hekeus@51
|
566 " \shortcite{" * crossref * "}" *
|
hekeus@51
|
567 }
|
hekeus@51
|
568 FUNCTION {format.incoll.inproc.crossref}
|
hekeus@51
|
569 { editor empty$
|
hekeus@51
|
570 editor field.or.null author field.or.null =
|
hekeus@51
|
571 or
|
hekeus@51
|
572 { key empty$
|
hekeus@51
|
573 { booktitle empty$
|
hekeus@51
|
574 { "need editor, key, or booktitle for " cite$ * " to crossref " *
|
hekeus@51
|
575 crossref * warning$
|
hekeus@51
|
576 ""
|
hekeus@51
|
577 }
|
hekeus@51
|
578 { "In {\em " booktitle * "\/}" * }
|
hekeus@51
|
579 if$
|
hekeus@51
|
580 }
|
hekeus@51
|
581 { "In " key * }
|
hekeus@51
|
582 if$
|
hekeus@51
|
583 }
|
hekeus@51
|
584 { "In " format.crossref.editor * }
|
hekeus@51
|
585 if$
|
hekeus@51
|
586 " \shortcite{" * crossref * "}" *
|
hekeus@51
|
587 }
|
hekeus@51
|
588 FUNCTION {article}
|
hekeus@51
|
589 { output.bibitem
|
hekeus@51
|
590 format.authors "author" output.check
|
hekeus@51
|
591 new.block format.year "year" output.check
|
hekeus@51
|
592 new.block
|
hekeus@51
|
593 format.title "title" output.check
|
hekeus@51
|
594 new.block
|
hekeus@51
|
595 crossref missing$
|
hekeus@51
|
596 { journal emphasize "journal" output.check
|
hekeus@51
|
597 format.vol.num.pages sioutput
|
hekeus@51
|
598 }
|
hekeus@51
|
599 { format.article.crossref output.nonnull
|
hekeus@51
|
600 format.pages sioutput
|
hekeus@51
|
601 }
|
hekeus@51
|
602 if$
|
hekeus@51
|
603 new.block
|
hekeus@51
|
604 note output
|
hekeus@51
|
605 fin.entry
|
hekeus@51
|
606 }
|
hekeus@51
|
607 FUNCTION {book}
|
hekeus@51
|
608 { output.bibitem
|
hekeus@51
|
609 author empty$
|
hekeus@51
|
610 { format.editors "author and editor" output.check }
|
hekeus@51
|
611 { format.authors output.nonnull
|
hekeus@51
|
612 crossref missing$
|
hekeus@51
|
613 { "author and editor" editor either.or.check }
|
hekeus@51
|
614 'skip$
|
hekeus@51
|
615 if$
|
hekeus@51
|
616 }
|
hekeus@51
|
617 if$
|
hekeus@51
|
618 new.block format.year "year" output.check
|
hekeus@51
|
619 new.block
|
hekeus@51
|
620 format.btitle "title" output.check
|
hekeus@51
|
621 crossref missing$
|
hekeus@51
|
622 { format.bvolume output
|
hekeus@51
|
623 new.block
|
hekeus@51
|
624 format.number.series output
|
hekeus@51
|
625 new.sentence
|
hekeus@51
|
626 format.publisher "publisher" output.check
|
hekeus@51
|
627 }
|
hekeus@51
|
628 { new.block
|
hekeus@51
|
629 format.book.crossref output.nonnull
|
hekeus@51
|
630 }
|
hekeus@51
|
631 if$
|
hekeus@51
|
632 format.edition output
|
hekeus@51
|
633 % format.date "year" output.check
|
hekeus@51
|
634 new.block
|
hekeus@51
|
635 note output
|
hekeus@51
|
636 fin.entry
|
hekeus@51
|
637 }
|
hekeus@51
|
638 FUNCTION {booklet}
|
hekeus@51
|
639 { output.bibitem
|
hekeus@51
|
640 format.authors output
|
hekeus@51
|
641 new.block format.year "year" output.check
|
hekeus@51
|
642 new.block
|
hekeus@51
|
643 format.title "title" output.check
|
hekeus@51
|
644 howpublished address new.block.checkb
|
hekeus@51
|
645 howpublished output
|
hekeus@51
|
646 address output
|
hekeus@51
|
647 % format.date output
|
hekeus@51
|
648 new.block
|
hekeus@51
|
649 note output
|
hekeus@51
|
650 fin.entry
|
hekeus@51
|
651 }
|
hekeus@51
|
652 FUNCTION {inbook}
|
hekeus@51
|
653 { output.bibitem
|
hekeus@51
|
654 author empty$
|
hekeus@51
|
655 { format.editors "author and editor" output.check }
|
hekeus@51
|
656 { format.authors output.nonnull
|
hekeus@51
|
657 crossref missing$
|
hekeus@51
|
658 { "author and editor" editor either.or.check }
|
hekeus@51
|
659 'skip$
|
hekeus@51
|
660 if$
|
hekeus@51
|
661 }
|
hekeus@51
|
662 if$
|
hekeus@51
|
663 new.block format.year "year" output.check
|
hekeus@51
|
664 new.block
|
hekeus@51
|
665 format.btitle "title" output.check
|
hekeus@51
|
666 crossref missing$
|
hekeus@51
|
667 { format.bvolume output
|
hekeus@51
|
668 new.block
|
hekeus@51
|
669 format.number.series output
|
hekeus@51
|
670 new.sentence
|
hekeus@51
|
671 format.publisher "publisher" output.check
|
hekeus@51
|
672 }
|
hekeus@51
|
673 { format.book.crossref output.nonnull
|
hekeus@51
|
674 }
|
hekeus@51
|
675 if$
|
hekeus@51
|
676 format.edition output
|
hekeus@51
|
677 % format.date "year" output.check
|
hekeus@51
|
678 new.block
|
hekeus@51
|
679 format.chapter.pages "chapter and pages" output.check
|
hekeus@51
|
680 new.block
|
hekeus@51
|
681 note output
|
hekeus@51
|
682 fin.entry
|
hekeus@51
|
683 }
|
hekeus@51
|
684 FUNCTION {incollection}
|
hekeus@51
|
685 { output.bibitem
|
hekeus@51
|
686 format.authors "author" output.check
|
hekeus@51
|
687 new.block format.year "year" output.check
|
hekeus@51
|
688 new.block
|
hekeus@51
|
689 format.title "title" output.check
|
hekeus@51
|
690 new.block
|
hekeus@51
|
691 crossref missing$
|
hekeus@51
|
692 { format.in.ed.booktitle "booktitle" output.check
|
hekeus@51
|
693 format.bvolume output
|
hekeus@51
|
694 format.number.series output
|
hekeus@51
|
695 new.sentence
|
hekeus@51
|
696 format.publisher "publisher" output.check
|
hekeus@51
|
697 format.edition output
|
hekeus@51
|
698 % format.date "year" output.check
|
hekeus@51
|
699 new.block
|
hekeus@51
|
700 format.chapter.pages output
|
hekeus@51
|
701 }
|
hekeus@51
|
702 { format.incoll.inproc.crossref output.nonnull
|
hekeus@51
|
703 new.block
|
hekeus@51
|
704 format.chapter.pages output
|
hekeus@51
|
705 }
|
hekeus@51
|
706 if$
|
hekeus@51
|
707 new.block
|
hekeus@51
|
708 note output
|
hekeus@51
|
709 fin.entry
|
hekeus@51
|
710 }
|
hekeus@51
|
711 FUNCTION {inproceedings}
|
hekeus@51
|
712 { output.bibitem
|
hekeus@51
|
713 format.authors "author" output.check
|
hekeus@51
|
714 new.block format.year "year" output.check
|
hekeus@51
|
715 new.block
|
hekeus@51
|
716 format.title "title" output.check
|
hekeus@51
|
717 new.block
|
hekeus@51
|
718 crossref missing$
|
hekeus@51
|
719 { format.in.ed.booktitle "booktitle" output.check
|
hekeus@51
|
720 format.bvolume output
|
hekeus@51
|
721 format.number.series output
|
hekeus@51
|
722 format.pages output
|
hekeus@51
|
723 new.block
|
hekeus@51
|
724 organization empty$
|
hekeus@51
|
725 { format.publisher output }
|
hekeus@51
|
726 { format.organization output }
|
hekeus@51
|
727 if$
|
hekeus@51
|
728 }
|
hekeus@51
|
729 { format.incoll.inproc.crossref output.nonnull
|
hekeus@51
|
730 format.pages output
|
hekeus@51
|
731 }
|
hekeus@51
|
732 if$
|
hekeus@51
|
733 new.block
|
hekeus@51
|
734 note output
|
hekeus@51
|
735 fin.entry
|
hekeus@51
|
736 }
|
hekeus@51
|
737 FUNCTION {conference} { inproceedings }
|
hekeus@51
|
738 FUNCTION {manual}
|
hekeus@51
|
739 { output.bibitem
|
hekeus@51
|
740 author empty$
|
hekeus@51
|
741 { organization empty$
|
hekeus@51
|
742 'skip$
|
hekeus@51
|
743 { organization output.nonnull
|
hekeus@51
|
744 address output
|
hekeus@51
|
745 }
|
hekeus@51
|
746 if$
|
hekeus@51
|
747 }
|
hekeus@51
|
748 { format.authors output.nonnull }
|
hekeus@51
|
749 if$
|
hekeus@51
|
750 new.block format.year "year" output.check
|
hekeus@51
|
751 new.block
|
hekeus@51
|
752 format.btitle "title" output.check
|
hekeus@51
|
753 author empty$
|
hekeus@51
|
754 { organization empty$
|
hekeus@51
|
755 { address new.block.checka
|
hekeus@51
|
756 address output
|
hekeus@51
|
757 }
|
hekeus@51
|
758 'skip$
|
hekeus@51
|
759 if$
|
hekeus@51
|
760 }
|
hekeus@51
|
761 { organization address new.block.checkb
|
hekeus@51
|
762 organization output
|
hekeus@51
|
763 address output
|
hekeus@51
|
764 }
|
hekeus@51
|
765 if$
|
hekeus@51
|
766 format.edition output
|
hekeus@51
|
767 % format.date output
|
hekeus@51
|
768 new.block
|
hekeus@51
|
769 note output
|
hekeus@51
|
770 fin.entry
|
hekeus@51
|
771 }
|
hekeus@51
|
772 FUNCTION {mastersthesis}
|
hekeus@51
|
773 { output.bibitem
|
hekeus@51
|
774 format.authors "author" output.check
|
hekeus@51
|
775 new.block format.year "year" output.check
|
hekeus@51
|
776 new.block
|
hekeus@51
|
777 format.title "title" output.check
|
hekeus@51
|
778 new.block
|
hekeus@51
|
779 "Master's thesis" format.thesis.type output.nonnull
|
hekeus@51
|
780 school "school" output.check
|
hekeus@51
|
781 address output
|
hekeus@51
|
782 % format.date "year" output.check
|
hekeus@51
|
783 new.block
|
hekeus@51
|
784 note output
|
hekeus@51
|
785 fin.entry
|
hekeus@51
|
786 }
|
hekeus@51
|
787 FUNCTION {misc}
|
hekeus@51
|
788 { output.bibitem
|
hekeus@51
|
789 format.authors output
|
hekeus@51
|
790 new.block format.year "year" output.check
|
hekeus@51
|
791 title howpublished new.block.checkb
|
hekeus@51
|
792 format.title output
|
hekeus@51
|
793 howpublished new.block.checka
|
hekeus@51
|
794 howpublished output
|
hekeus@51
|
795 % format.date output
|
hekeus@51
|
796 new.block
|
hekeus@51
|
797 note output
|
hekeus@51
|
798 fin.entry
|
hekeus@51
|
799 empty.misc.check
|
hekeus@51
|
800 }
|
hekeus@51
|
801 FUNCTION {phdthesis}
|
hekeus@51
|
802 { output.bibitem
|
hekeus@51
|
803 format.authors "author" output.check
|
hekeus@51
|
804 new.block format.year "year" output.check
|
hekeus@51
|
805 new.block
|
hekeus@51
|
806 format.btitle "title" output.check
|
hekeus@51
|
807 new.block
|
hekeus@51
|
808 "Ph.D. Dissertation" format.thesis.type output.nonnull
|
hekeus@51
|
809 school "school" output.check
|
hekeus@51
|
810 address output
|
hekeus@51
|
811 % format.date "year" output.check
|
hekeus@51
|
812 new.block
|
hekeus@51
|
813 note output
|
hekeus@51
|
814 fin.entry
|
hekeus@51
|
815 }
|
hekeus@51
|
816 FUNCTION {proceedings}
|
hekeus@51
|
817 { output.bibitem
|
hekeus@51
|
818 editor empty$
|
hekeus@51
|
819 { organization output }
|
hekeus@51
|
820 { format.editors output.nonnull }
|
hekeus@51
|
821 if$
|
hekeus@51
|
822 new.block format.year "year" output.check
|
hekeus@51
|
823 new.block
|
hekeus@51
|
824 format.btitle "title" output.check
|
hekeus@51
|
825 format.bvolume output
|
hekeus@51
|
826 format.number.series output
|
hekeus@51
|
827 editor empty$
|
hekeus@51
|
828 { publisher empty$
|
hekeus@51
|
829 { address output }
|
hekeus@51
|
830 { format.publisher output }
|
hekeus@51
|
831 if$
|
hekeus@51
|
832 }
|
hekeus@51
|
833 { organization empty$
|
hekeus@51
|
834 { publisher new.sentence.checka
|
hekeus@51
|
835 format.publisher output
|
hekeus@51
|
836 }
|
hekeus@51
|
837 { organization new.sentence.checkb
|
hekeus@51
|
838 format.organization output
|
hekeus@51
|
839 }
|
hekeus@51
|
840 if$
|
hekeus@51
|
841 }
|
hekeus@51
|
842 if$
|
hekeus@51
|
843 new.block
|
hekeus@51
|
844 note output
|
hekeus@51
|
845 fin.entry
|
hekeus@51
|
846 }
|
hekeus@51
|
847 FUNCTION {techreport}
|
hekeus@51
|
848 { output.bibitem
|
hekeus@51
|
849 format.authors "author" output.check
|
hekeus@51
|
850 new.block format.year "year" output.check
|
hekeus@51
|
851 new.block
|
hekeus@51
|
852 format.title "title" output.check
|
hekeus@51
|
853 new.block
|
hekeus@51
|
854 format.tr.number output.nonnull
|
hekeus@51
|
855 institution "institution" output.check
|
hekeus@51
|
856 address output
|
hekeus@51
|
857 % format.date "year" output.check
|
hekeus@51
|
858 new.block
|
hekeus@51
|
859 note output
|
hekeus@51
|
860 fin.entry
|
hekeus@51
|
861 }
|
hekeus@51
|
862 FUNCTION {unpublished}
|
hekeus@51
|
863 { output.bibitem
|
hekeus@51
|
864 format.authors "author" output.check
|
hekeus@51
|
865 new.block format.year "year" output.check
|
hekeus@51
|
866 new.block
|
hekeus@51
|
867 format.title "title" output.check
|
hekeus@51
|
868 new.block
|
hekeus@51
|
869 note "note" output.check
|
hekeus@51
|
870 % format.date output
|
hekeus@51
|
871 fin.entry
|
hekeus@51
|
872 }
|
hekeus@51
|
873 FUNCTION {default.type} { misc }
|
hekeus@51
|
874 MACRO {jan} {"January"}
|
hekeus@51
|
875 MACRO {feb} {"February"}
|
hekeus@51
|
876 MACRO {mar} {"March"}
|
hekeus@51
|
877 MACRO {apr} {"April"}
|
hekeus@51
|
878 MACRO {may} {"May"}
|
hekeus@51
|
879 MACRO {jun} {"June"}
|
hekeus@51
|
880 MACRO {jul} {"July"}
|
hekeus@51
|
881 MACRO {aug} {"August"}
|
hekeus@51
|
882 MACRO {sep} {"September"}
|
hekeus@51
|
883 MACRO {oct} {"October"}
|
hekeus@51
|
884 MACRO {nov} {"November"}
|
hekeus@51
|
885 MACRO {dec} {"December"}
|
hekeus@51
|
886 MACRO {acmcs} {"ACM Computing Surveys"}
|
hekeus@51
|
887 MACRO {acta} {"Acta Informatica"}
|
hekeus@51
|
888 MACRO {cacm} {"Communications of the ACM"}
|
hekeus@51
|
889 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
|
hekeus@51
|
890 MACRO {ibmsj} {"IBM Systems Journal"}
|
hekeus@51
|
891 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
|
hekeus@51
|
892 MACRO {ieeetc} {"IEEE Transactions on Computers"}
|
hekeus@51
|
893 MACRO {ieeetcad}
|
hekeus@51
|
894 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
|
hekeus@51
|
895 MACRO {ipl} {"Information Processing Letters"}
|
hekeus@51
|
896 MACRO {jacm} {"Journal of the ACM"}
|
hekeus@51
|
897 MACRO {jcss} {"Journal of Computer and System Sciences"}
|
hekeus@51
|
898 MACRO {scp} {"Science of Computer Programming"}
|
hekeus@51
|
899 MACRO {sicomp} {"SIAM Journal on Computing"}
|
hekeus@51
|
900 MACRO {tocs} {"ACM Transactions on Computer Systems"}
|
hekeus@51
|
901 MACRO {tods} {"ACM Transactions on Database Systems"}
|
hekeus@51
|
902 MACRO {tog} {"ACM Transactions on Graphics"}
|
hekeus@51
|
903 MACRO {toms} {"ACM Transactions on Mathematical Software"}
|
hekeus@51
|
904 MACRO {toois} {"ACM Transactions on Office Information Systems"}
|
hekeus@51
|
905 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
|
hekeus@51
|
906 MACRO {tcs} {"Theoretical Computer Science"}
|
hekeus@51
|
907 READ
|
hekeus@51
|
908 FUNCTION {sortify}
|
hekeus@51
|
909 { purify$
|
hekeus@51
|
910 "l" change.case$
|
hekeus@51
|
911 }
|
hekeus@51
|
912 INTEGERS { len }
|
hekeus@51
|
913 FUNCTION {chop.word}
|
hekeus@51
|
914 { 's :=
|
hekeus@51
|
915 'len :=
|
hekeus@51
|
916 s #1 len substring$ =
|
hekeus@51
|
917 { s len #1 + global.max$ substring$ }
|
hekeus@51
|
918 's
|
hekeus@51
|
919 if$
|
hekeus@51
|
920 }
|
hekeus@51
|
921 FUNCTION {format.lab.names}
|
hekeus@51
|
922 { 's :=
|
hekeus@51
|
923 s num.names$ 'numnames :=
|
hekeus@51
|
924 numnames #1 =
|
hekeus@51
|
925 { s #1 "{vv }{ll}" format.name$ }
|
hekeus@51
|
926 { numnames #2 =
|
hekeus@51
|
927 { s #1 "{vv }{ll} and " format.name$ s #2 "{vv }{ll}" format.name$ *
|
hekeus@51
|
928 }
|
hekeus@51
|
929 { numnames #3 =
|
hekeus@51
|
930 { s #1 "{vv }{ll}, " format.name$
|
hekeus@51
|
931 s #2 "{vv }{ll}, and " format.name$ *
|
hekeus@51
|
932 s #3 "{vv }{ll}" format.name$ *
|
hekeus@51
|
933 }
|
hekeus@51
|
934 { s #1 "{vv }{ll }\bgroup et al\mbox{.}\egroup " format.name$
|
hekeus@51
|
935 }
|
hekeus@51
|
936 if$
|
hekeus@51
|
937 }
|
hekeus@51
|
938 if$
|
hekeus@51
|
939 }
|
hekeus@51
|
940 if$
|
hekeus@51
|
941 }
|
hekeus@51
|
942 FUNCTION {author.key.label}
|
hekeus@51
|
943 { author empty$
|
hekeus@51
|
944 { key empty$
|
hekeus@51
|
945 { cite$ #1 #3 substring$ }
|
hekeus@51
|
946 { key }
|
hekeus@51
|
947 if$
|
hekeus@51
|
948 }
|
hekeus@51
|
949 { author format.lab.names }
|
hekeus@51
|
950 if$
|
hekeus@51
|
951 }
|
hekeus@51
|
952 FUNCTION {author.editor.key.label}
|
hekeus@51
|
953 { author empty$
|
hekeus@51
|
954 { editor empty$
|
hekeus@51
|
955 { key empty$
|
hekeus@51
|
956 { cite$ #1 #3 substring$ }
|
hekeus@51
|
957 { key }
|
hekeus@51
|
958 if$
|
hekeus@51
|
959 }
|
hekeus@51
|
960 { editor format.lab.names }
|
hekeus@51
|
961 if$
|
hekeus@51
|
962 }
|
hekeus@51
|
963 { author format.lab.names }
|
hekeus@51
|
964 if$
|
hekeus@51
|
965 }
|
hekeus@51
|
966 FUNCTION {author.key.organization.label}
|
hekeus@51
|
967 { author empty$
|
hekeus@51
|
968 { key empty$
|
hekeus@51
|
969 { organization empty$
|
hekeus@51
|
970 { cite$ #1 #3 substring$ }
|
hekeus@51
|
971 { "The " #4 organization chop.word #3 text.prefix$ }
|
hekeus@51
|
972 if$
|
hekeus@51
|
973 }
|
hekeus@51
|
974 { key }
|
hekeus@51
|
975 if$
|
hekeus@51
|
976 }
|
hekeus@51
|
977 { author format.lab.names }
|
hekeus@51
|
978 if$
|
hekeus@51
|
979 }
|
hekeus@51
|
980 FUNCTION {editor.key.organization.label}
|
hekeus@51
|
981 { editor empty$
|
hekeus@51
|
982 { key empty$
|
hekeus@51
|
983 { organization empty$
|
hekeus@51
|
984 { cite$ #1 #3 substring$ }
|
hekeus@51
|
985 { "The " #4 organization chop.word #3 text.prefix$ }
|
hekeus@51
|
986 if$
|
hekeus@51
|
987 }
|
hekeus@51
|
988 { key }
|
hekeus@51
|
989 if$
|
hekeus@51
|
990 }
|
hekeus@51
|
991 { editor format.lab.names }
|
hekeus@51
|
992 if$
|
hekeus@51
|
993 }
|
hekeus@51
|
994 FUNCTION {calc.label}
|
hekeus@51
|
995 { type$ "book" =
|
hekeus@51
|
996 type$ "inbook" =
|
hekeus@51
|
997 or
|
hekeus@51
|
998 'author.editor.key.label
|
hekeus@51
|
999 { type$ "proceedings" =
|
hekeus@51
|
1000 'editor.key.organization.label
|
hekeus@51
|
1001 { type$ "manual" =
|
hekeus@51
|
1002 'author.key.organization.label
|
hekeus@51
|
1003 'author.key.label
|
hekeus@51
|
1004 if$
|
hekeus@51
|
1005 }
|
hekeus@51
|
1006 if$
|
hekeus@51
|
1007 }
|
hekeus@51
|
1008 if$
|
hekeus@51
|
1009 duplicate$
|
hekeus@51
|
1010 "\protect\citeauthoryear{" swap$ * "}{" *
|
hekeus@51
|
1011 year field.or.null purify$ * % CHANGED - pfps - 15 Feb 1989
|
hekeus@51
|
1012 'label :=
|
hekeus@51
|
1013 year field.or.null purify$ *
|
hekeus@51
|
1014 sortify 'sort.label :=
|
hekeus@51
|
1015 }
|
hekeus@51
|
1016 FUNCTION {sort.format.names}
|
hekeus@51
|
1017 { 's :=
|
hekeus@51
|
1018 #1 'nameptr :=
|
hekeus@51
|
1019 ""
|
hekeus@51
|
1020 s num.names$ 'numnames :=
|
hekeus@51
|
1021 numnames 'namesleft :=
|
hekeus@51
|
1022 { namesleft #0 > }
|
hekeus@51
|
1023 { nameptr #1 >
|
hekeus@51
|
1024 { " " * }
|
hekeus@51
|
1025 'skip$
|
hekeus@51
|
1026 if$
|
hekeus@51
|
1027 s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
|
hekeus@51
|
1028 nameptr numnames = t "others" = and
|
hekeus@51
|
1029 { "et al" * }
|
hekeus@51
|
1030 { t sortify * }
|
hekeus@51
|
1031 if$
|
hekeus@51
|
1032 nameptr #1 + 'nameptr :=
|
hekeus@51
|
1033 namesleft #1 - 'namesleft :=
|
hekeus@51
|
1034 }
|
hekeus@51
|
1035 while$
|
hekeus@51
|
1036 }
|
hekeus@51
|
1037 FUNCTION {sort.format.title}
|
hekeus@51
|
1038 { 't :=
|
hekeus@51
|
1039 "A " #2
|
hekeus@51
|
1040 "An " #3
|
hekeus@51
|
1041 "The " #4 t chop.word
|
hekeus@51
|
1042 chop.word
|
hekeus@51
|
1043 chop.word
|
hekeus@51
|
1044 sortify
|
hekeus@51
|
1045 #1 global.max$ substring$
|
hekeus@51
|
1046 }
|
hekeus@51
|
1047 FUNCTION {author.sort}
|
hekeus@51
|
1048 { author empty$
|
hekeus@51
|
1049 { key empty$
|
hekeus@51
|
1050 { "to sort, need author or key in " cite$ * warning$
|
hekeus@51
|
1051 ""
|
hekeus@51
|
1052 }
|
hekeus@51
|
1053 { key sortify }
|
hekeus@51
|
1054 if$
|
hekeus@51
|
1055 }
|
hekeus@51
|
1056 { author sort.format.names }
|
hekeus@51
|
1057 if$
|
hekeus@51
|
1058 }
|
hekeus@51
|
1059 FUNCTION {author.editor.sort}
|
hekeus@51
|
1060 { author empty$
|
hekeus@51
|
1061 { editor empty$
|
hekeus@51
|
1062 { key empty$
|
hekeus@51
|
1063 { "to sort, need author, editor, or key in " cite$ * warning$
|
hekeus@51
|
1064 ""
|
hekeus@51
|
1065 }
|
hekeus@51
|
1066 { key sortify }
|
hekeus@51
|
1067 if$
|
hekeus@51
|
1068 }
|
hekeus@51
|
1069 { editor sort.format.names }
|
hekeus@51
|
1070 if$
|
hekeus@51
|
1071 }
|
hekeus@51
|
1072 { author sort.format.names }
|
hekeus@51
|
1073 if$
|
hekeus@51
|
1074 }
|
hekeus@51
|
1075 FUNCTION {author.organization.sort}
|
hekeus@51
|
1076 { author empty$
|
hekeus@51
|
1077 { organization empty$
|
hekeus@51
|
1078 { key empty$
|
hekeus@51
|
1079 { "to sort, need author, organization, or key in " cite$ * warning$
|
hekeus@51
|
1080 ""
|
hekeus@51
|
1081 }
|
hekeus@51
|
1082 { key sortify }
|
hekeus@51
|
1083 if$
|
hekeus@51
|
1084 }
|
hekeus@51
|
1085 { "The " #4 organization chop.word sortify }
|
hekeus@51
|
1086 if$
|
hekeus@51
|
1087 }
|
hekeus@51
|
1088 { author sort.format.names }
|
hekeus@51
|
1089 if$
|
hekeus@51
|
1090 }
|
hekeus@51
|
1091 FUNCTION {editor.organization.sort}
|
hekeus@51
|
1092 { editor empty$
|
hekeus@51
|
1093 { organization empty$
|
hekeus@51
|
1094 { key empty$
|
hekeus@51
|
1095 { "to sort, need editor, organization, or key in " cite$ * warning$
|
hekeus@51
|
1096 ""
|
hekeus@51
|
1097 }
|
hekeus@51
|
1098 { key sortify }
|
hekeus@51
|
1099 if$
|
hekeus@51
|
1100 }
|
hekeus@51
|
1101 { "The " #4 organization chop.word sortify }
|
hekeus@51
|
1102 if$
|
hekeus@51
|
1103 }
|
hekeus@51
|
1104 { editor sort.format.names }
|
hekeus@51
|
1105 if$
|
hekeus@51
|
1106 }
|
hekeus@51
|
1107 FUNCTION {presort}
|
hekeus@51
|
1108 { calc.label
|
hekeus@51
|
1109 sort.label
|
hekeus@51
|
1110 " "
|
hekeus@51
|
1111 *
|
hekeus@51
|
1112 type$ "book" =
|
hekeus@51
|
1113 type$ "inbook" =
|
hekeus@51
|
1114 or
|
hekeus@51
|
1115 'author.editor.sort
|
hekeus@51
|
1116 { type$ "proceedings" =
|
hekeus@51
|
1117 'editor.organization.sort
|
hekeus@51
|
1118 { type$ "manual" =
|
hekeus@51
|
1119 'author.organization.sort
|
hekeus@51
|
1120 'author.sort
|
hekeus@51
|
1121 if$
|
hekeus@51
|
1122 }
|
hekeus@51
|
1123 if$
|
hekeus@51
|
1124 }
|
hekeus@51
|
1125 if$
|
hekeus@51
|
1126 *
|
hekeus@51
|
1127 " "
|
hekeus@51
|
1128 *
|
hekeus@51
|
1129 year field.or.null sortify
|
hekeus@51
|
1130 *
|
hekeus@51
|
1131 " "
|
hekeus@51
|
1132 *
|
hekeus@51
|
1133 title field.or.null
|
hekeus@51
|
1134 sort.format.title
|
hekeus@51
|
1135 *
|
hekeus@51
|
1136 #1 entry.max$ substring$
|
hekeus@51
|
1137 'sort.key$ :=
|
hekeus@51
|
1138 }
|
hekeus@51
|
1139 ITERATE {presort}
|
hekeus@51
|
1140 SORT
|
hekeus@51
|
1141 STRINGS { longest.label last.sort.label next.extra }
|
hekeus@51
|
1142 INTEGERS { longest.label.width last.extra.num }
|
hekeus@51
|
1143 FUNCTION {initialize.longest.label}
|
hekeus@51
|
1144 { "" 'longest.label :=
|
hekeus@51
|
1145 #0 int.to.chr$ 'last.sort.label :=
|
hekeus@51
|
1146 "" 'next.extra :=
|
hekeus@51
|
1147 #0 'longest.label.width :=
|
hekeus@51
|
1148 #0 'last.extra.num :=
|
hekeus@51
|
1149 }
|
hekeus@51
|
1150 FUNCTION {forward.pass}
|
hekeus@51
|
1151 { last.sort.label sort.label =
|
hekeus@51
|
1152 { last.extra.num #1 + 'last.extra.num :=
|
hekeus@51
|
1153 last.extra.num int.to.chr$ 'extra.label :=
|
hekeus@51
|
1154 }
|
hekeus@51
|
1155 { "a" chr.to.int$ 'last.extra.num :=
|
hekeus@51
|
1156 "" 'extra.label :=
|
hekeus@51
|
1157 sort.label 'last.sort.label :=
|
hekeus@51
|
1158 }
|
hekeus@51
|
1159 if$
|
hekeus@51
|
1160 }
|
hekeus@51
|
1161 FUNCTION {reverse.pass}
|
hekeus@51
|
1162 { next.extra "b" =
|
hekeus@51
|
1163 { "a" 'extra.label := }
|
hekeus@51
|
1164 'skip$
|
hekeus@51
|
1165 if$
|
hekeus@51
|
1166 label extra.label * "}" * 'label := % CHANGED - pfps 15 Feb 1989
|
hekeus@51
|
1167 label width$ longest.label.width >
|
hekeus@51
|
1168 { label 'longest.label :=
|
hekeus@51
|
1169 label width$ 'longest.label.width :=
|
hekeus@51
|
1170 }
|
hekeus@51
|
1171 'skip$
|
hekeus@51
|
1172 if$
|
hekeus@51
|
1173 extra.label 'next.extra :=
|
hekeus@51
|
1174 }
|
hekeus@51
|
1175 EXECUTE {initialize.longest.label}
|
hekeus@51
|
1176 ITERATE {forward.pass}
|
hekeus@51
|
1177 REVERSE {reverse.pass}
|
hekeus@51
|
1178 FUNCTION {begin.bib}
|
hekeus@51
|
1179 { preamble$ empty$
|
hekeus@51
|
1180 'skip$
|
hekeus@51
|
1181 { preamble$ write$ newline$ }
|
hekeus@51
|
1182 if$
|
hekeus@51
|
1183 "\begin{thebibliography}{}" write$ newline$
|
hekeus@51
|
1184 }
|
hekeus@51
|
1185 EXECUTE {begin.bib}
|
hekeus@51
|
1186 EXECUTE {init.state.consts}
|
hekeus@51
|
1187 ITERATE {call.type$}
|
hekeus@51
|
1188 FUNCTION {end.bib}
|
hekeus@51
|
1189 { newline$
|
hekeus@51
|
1190 "\end{thebibliography}" write$ newline$
|
hekeus@51
|
1191 }
|
hekeus@51
|
1192 EXECUTE {end.bib}
|