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