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