Commit 15b52932fab088ac6c6c48a60931f1223996ae36
1 parent
42ecd373
Exists in
master
and in
2 other branches
Adding a draft for OpenSym 2017
Showing
21 changed files
with
6713 additions
and
0 deletions
Show diff stats
... | ... | @@ -0,0 +1,15 @@ |
1 | +TARGET=spb | |
2 | + | |
3 | +all: $(TARGET).tex | |
4 | + pdflatex $(TARGET).tex | |
5 | + bibtex $(TARGET) | |
6 | + pdflatex $(TARGET).tex | |
7 | + pdflatex $(TARGET).tex | |
8 | + evince $(TARGET).pdf & | |
9 | + | |
10 | +edit: | |
11 | + gedit Makefile *.bib *.tex & | |
12 | + | |
13 | +clean: | |
14 | + rm -f $(TARGET).pdf *.out *.aux *.log *.blg *.bbl *.dvi *.ps *.toc *.lot *.lof *.idx *~ | |
15 | + | ... | ... |
... | ... | @@ -0,0 +1,3352 @@ |
1 | +%%% -*-BibTeX-*- | |
2 | +%%% ==================================================================== | |
3 | +%%% @BibTeX-style-file{ | |
4 | +%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray", | |
5 | +%%% version = "1.00", | |
6 | +%%% date = "18 January 2012", | |
7 | +%%% time = "11:48 EST", | |
8 | +%%% filename = "ACM-Reference-Format-Journals.bst", | |
9 | +%%% address = "University of Utah | |
10 | +%%% Department of Mathematics, 110 LCB | |
11 | +%%% 155 S 1400 E RM 233 | |
12 | +%%% Salt Lake City, UT 84112-0090 | |
13 | +%%% USA", | |
14 | +%%% telephone = "+1 801 581 5254", | |
15 | +%%% FAX = "+1 801 581 4148", | |
16 | +%%% URL = "http://www.math.utah.edu/~beebe", | |
17 | +%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt" | |
18 | +%%% email = "beebe@math.utah.edu, beebe@acm.org, | |
19 | +%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org", | |
20 | +%%% codetable = "ISO/ASCII", | |
21 | +%%% keywords = "ACM Transactions bibliography style; BibTeX", | |
22 | +%%% license = "public domain", | |
23 | +%%% supported = "yes", | |
24 | +%%% abstract = "", | |
25 | +%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20) | |
26 | +%%% available from http://www.winmd5.com/?rid=winmd5," | |
27 | +%%% } | |
28 | +%%% ==================================================================== | |
29 | + | |
30 | +% "SIGCHI Format" BibTeX style, Forked from ACM-Reference-Format-Journals.bst | |
31 | +% Modifications 13-FEBURARY-2015 (David Ayman Shamma) | |
32 | + | |
33 | +% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst | |
34 | +% for BibTeX version 0.99c, LaTeX version 3.141 | |
35 | +% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008 | |
36 | +% Revised 17-APRIL-2008 (Nelson) | |
37 | +% Revised 13-MARCH-2011 (Boris/Gerry) | |
38 | +% Revised 23-MARCH-2011 (Boris/Gerry) | |
39 | +% Revised 27-MARCH-2011 (Boris/Gerry) | |
40 | +% Revised 15-APRIL-2011 (Boris/Gerry) | |
41 | +% Revised 27-SEPTEMBER-2011 (Boris) | |
42 | +% | |
43 | +% | |
44 | +% History (by Nelson) | |
45 | +% | |
46 | +% Based on 'acmtrans' (for ACM Journals) | |
47 | +% Date: 28th April 2008 | |
48 | +% | |
49 | +% 1. Avoid 'repeating' the 'month' values. | |
50 | +% 2. Avoid incorrectly italicizing the volume number. | |
51 | +% 3. Avoid non italicizing certain titles (book, inproceedings etc). | |
52 | +% 4. NO series if there is NO volume. | |
53 | +% 5. Sorting of reference with first surname. | |
54 | +% 6. Article no added for Inproceedings. | |
55 | +% | |
56 | +% Date: 07th May 2008 | |
57 | +% | |
58 | +% 1. Abbreviation list added | |
59 | +% | |
60 | +% Citation format: [author-last-name year] | |
61 | +% [author-last-name and author-last-name year] | |
62 | +% [author-last-name, author-last-name, and author-last-name year] | |
63 | +% [author-last-name et al. year] | |
64 | +% [author-last-name] | |
65 | +% author-last-name [year] | |
66 | +% [author-last-name and author-last-name] | |
67 | +% [author-last-name et al.] | |
68 | +% [year] or [year,year] | |
69 | +% year or year,year | |
70 | +% | |
71 | +% Reference list ordering: alphabetical by author or whatever passes | |
72 | +% for author in the absence of one. | |
73 | +% | |
74 | +% Features of the old acmtrans.bst: | |
75 | +% ================================= | |
76 | +% | |
77 | +% - all authors appear last name first. | |
78 | +% - all pages are listed xx-xx, (no pp.) and are at the end of the reference | |
79 | +% - publishers are identified as publisher, address | |
80 | +% - conferences papers (inproceedings) may give city of conference, | |
81 | +% date of conference, and journal that the proceedings appear in. | |
82 | +% - months abbreviated to max four letters (eg. Mar.) | |
83 | +% - volume of a series indicated after the title of the series | |
84 | +% - editors appear after edited title and are identified by a trailing "Eds." | |
85 | +% not in parentheses. Editor names are not given in small caps. | |
86 | +% (unless there is no author line) | |
87 | +% - names terminated with a period even if there is no first name. | |
88 | +% - editions are indicated trailing after the work, not in parentheses. | |
89 | +% - "et al." citations have a protected period to avoid bad spacing (jrh) | |
90 | +% - "address" required when publisher given | |
91 | +% - series (roman) and volume are in a sentence separate from (book-)title | |
92 | +% | |
93 | +% | |
94 | +% Features of chicago.bst: | |
95 | +% ======================= | |
96 | +% | |
97 | +% - full names used in citations, but abbreviated citations are available | |
98 | +% (see above) | |
99 | +% - if an entry has a "month", then the month and year are also printed | |
100 | +% as part of that bibitem. | |
101 | +% - all conjunctions use "and" instead of "\&" | |
102 | +% - major modification from Chicago Manual of Style (13th ed.) is that | |
103 | +% only the first author in a reference appears last name first- | |
104 | +% additional authors appear as J. Q. Public. | |
105 | +% - pages are listed as "pp. xx-xx" in all entry types except | |
106 | +% article entries. | |
107 | +% - book, inbook, and manual use "location: publisher" (or organization) | |
108 | +% for address and publisher. All other types list publishers separately. | |
109 | +% - "pp." are used to identify page numbers for all entry types except | |
110 | +% articles. | |
111 | +% - organization is used as a citation label if neither author nor editor | |
112 | +% is present (for manuals). | |
113 | +% - "et al." is used for long author and editor lists, or when "others" | |
114 | +% is used. | |
115 | +% | |
116 | +% Modifications and bug fixes from newapa.bst: | |
117 | +% =========================================== | |
118 | +% | |
119 | +% - added month, year to bib entries if month is present | |
120 | +% - fixed bug with In proceedings, added necessary comma after title | |
121 | +% - all conjunctions changed to "and" from "\&" | |
122 | +% - fixed bug with author labels in my.full.label: "et al." now is | |
123 | +% generated when "others" is an author name | |
124 | +% - major modification from Chicago Manual of Style (13th ed.) is that | |
125 | +% only the first author in a reference appears last name first- | |
126 | +% additional authors appear as J. Q. Public. | |
127 | +% - pages are listed as "pp. xx-xx" in all entry types except | |
128 | +% article entries. Unnecessary (IMHO) "()" around page numbers | |
129 | +% were removed, and page numbers now don't end with a period. | |
130 | +% - created chicago.sty for use with this bibstyle (required). | |
131 | +% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume, | |
132 | +% number, and /or pages. Renamed to format.journal.volume.number. | |
133 | +% - fixed bug in formatting booktitles: additional period an error if | |
134 | +% book has a volume. | |
135 | +% - fixed bug: editors usually given redundant period before next clause | |
136 | +% (format.editors.dot) removed. | |
137 | +% - added label support for organizations, if both author and editor | |
138 | +% are missing (from alpha.bst). If organization is too long, then | |
139 | +% the key field is used for abbreviated citations. | |
140 | +% - In proceedings or books of several volumes, no comma was written | |
141 | +% between the "Volume x" and the page numbers (this was intentional | |
142 | +% in newapa.bst). Fixed. | |
143 | +% - Some journals may not have volumes/numbers, only month/year (eg. | |
144 | +% IEEE Computer). Fixed bug in article style that assumed volume/number | |
145 | +% was always present. | |
146 | +% | |
147 | +% Original documentation for newapa.sty: | |
148 | +% ===================================== | |
149 | +% | |
150 | +% This version was made by modifying the master file made by | |
151 | +% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX | |
152 | +% style of Peter F. Patel-Schneider. | |
153 | +% | |
154 | +% Copyright (C) 1985, all rights reserved. | |
155 | +% Copying of this file is authorized only if either | |
156 | +% (1) you make absolutely no changes to your copy, including name, or | |
157 | +% (2) if you do make changes, you name it something other than 'newapa.bst'. | |
158 | +% There are undoubtably bugs in this style. If you make bug fixes, | |
159 | +% improvements, etc. please let me know. My e-mail address is: | |
160 | +% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com | |
161 | +% | |
162 | +% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst', | |
163 | +% with lots of tweaking to make it look like APA style, along with tips | |
164 | +% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'. | |
165 | +% | |
166 | +% | |
167 | +% Start of ACM-Reference-Format-Journals.bst | |
168 | +% | |
169 | +% Note: Many of the new bibentry 'fields' will only work with the | |
170 | +% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability, | |
171 | +% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst. | |
172 | +% | |
173 | +% | |
174 | +ENTRY | |
175 | + { address | |
176 | + advisor | |
177 | + author | |
178 | + booktitle | |
179 | + chapter | |
180 | + city % jtb: added | |
181 | + date % jtb: added | |
182 | + edition | |
183 | + editor | |
184 | + howpublished | |
185 | + institution | |
186 | + journal | |
187 | + key | |
188 | + month | |
189 | + note | |
190 | + number | |
191 | + organization | |
192 | + pages | |
193 | + publisher | |
194 | + school | |
195 | + series | |
196 | + title | |
197 | + type | |
198 | + volume | |
199 | + year | |
200 | + % New keys recognized | |
201 | + issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra | |
202 | + articleno | |
203 | + day % UTAH: needed for newspapers, weeklies, bi-weeklies | |
204 | + doi % UTAH | |
205 | + url % UTAH | |
206 | + bookpages % UTAH | |
207 | + numpages | |
208 | + lastaccessed % UTAH: used only for @Misc{...} | |
209 | + coden % UTAH | |
210 | + isbn % UTAH | |
211 | + isbn-13 % UTAH | |
212 | + issn % UTAH | |
213 | + lccn % UTAH | |
214 | + } | |
215 | + {} | |
216 | + { label.year extra.label sort.year sort.label } | |
217 | + | |
218 | +INTEGERS { output.state before.all mid.sentence after.sentence after.block } | |
219 | + | |
220 | +INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib | |
221 | + | |
222 | +INTEGERS { nameptr namesleft numnames } | |
223 | + | |
224 | +INTEGERS { multiresult } | |
225 | + | |
226 | +INTEGERS { len } | |
227 | + | |
228 | +INTEGERS { last.extra.num } | |
229 | + | |
230 | +STRINGS { s t t.org u } | |
231 | + | |
232 | +STRINGS { last.label next.extra } | |
233 | + | |
234 | +STRINGS { p1 p2 p3 page.count } | |
235 | + | |
236 | +FUNCTION { dump.stack.1 } | |
237 | +{ | |
238 | + duplicate$ "STACK[top] = [" swap$ * "]" * warning$ | |
239 | +} | |
240 | + | |
241 | +FUNCTION { dump.stack.2 } | |
242 | +{ | |
243 | + duplicate$ "STACK[top ] = [" swap$ * "]" * warning$ | |
244 | + swap$ | |
245 | + duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$ | |
246 | + swap$ | |
247 | +} | |
248 | + | |
249 | +FUNCTION { empty.or.unknown } | |
250 | +{ | |
251 | + %% Examine the top stack entry, and push 1 if it is empty, or | |
252 | + %% consists only of whitespace, or is a string beginning with two | |
253 | + %% queries (??), and otherwise, push 0. | |
254 | + %% | |
255 | + %% This function provides a replacement for empty$, with the | |
256 | + %% convenient feature that unknown values marked by two leading | |
257 | + %% queries are treated the same as missing values, and thus, do not | |
258 | + %% appear in the output .bbl file, and yet, their presence in .bib | |
259 | + %% file(s) serves to mark values which are temporarily missing, but | |
260 | + %% are expected to be filled in eventually once more data is | |
261 | + %% obtained. The TeX User Group and BibNet bibliography archives | |
262 | + %% make extensive use of this practice. | |
263 | + %% | |
264 | + %% An empty string cannot serve the same purpose, because just as in | |
265 | + %% statistics data processing, an unknown value is not the same as an | |
266 | + %% empty value. | |
267 | + %% | |
268 | + %% At entry: stack = ... top:[string] | |
269 | + %% At exit: stack = ... top:[0 or 1] | |
270 | + | |
271 | + duplicate$ empty$ | |
272 | + { pop$ #1 } | |
273 | + { #1 #2 substring$ "??" = } | |
274 | + if$ | |
275 | +} | |
276 | + | |
277 | +FUNCTION { writeln } | |
278 | +{ | |
279 | + %% In BibTeX style files, the sequences | |
280 | + %% | |
281 | + %% ... "one" "two" output | |
282 | + %% ... "one" "two" output.xxx | |
283 | + %% | |
284 | + %% ship "one" to the output file, possibly following by punctuation, | |
285 | + %% leaving the stack with | |
286 | + %% | |
287 | + %% ... "two" | |
288 | + %% | |
289 | + %% There is thus a one-string lag in output processing that must be | |
290 | + %% carefully handled to avoid duplicating a string in the output | |
291 | + %% file. Unless otherwise noted, all output.xxx functions leave | |
292 | + %% just one new string on the stack, and that model should be born | |
293 | + %% in mind when reading or writing function code. | |
294 | + %% | |
295 | + %% BibTeX's asynchronous buffering of output from strings from the | |
296 | + %% stack is confusing because newline$ bypasses the buffer. It | |
297 | + %% would have been so much easier for newline to be a character | |
298 | + %% rather than a state of the output-in-progress. | |
299 | + %% | |
300 | + %% The documentation in btxhak.dvi is WRONG: it says | |
301 | + %% | |
302 | + %% newline$ Writes onto the bbl file what's accumulated in the | |
303 | + %% output buffer. It writes a blank line if and only | |
304 | + %% if the output buffer is empty. Since write$ does | |
305 | + %% reasonable line breaking, you should use this | |
306 | + %% function only when you want a blank line or an | |
307 | + %% explicit line break. | |
308 | + %% | |
309 | + %% write$ Pops the top (string) literal and writes it on the | |
310 | + %% output buffer (which will result in stuff being | |
311 | + %% written onto the bbl file when the buffer fills | |
312 | + %% up). | |
313 | + %% | |
314 | + %% Examination of the BibTeX source code shows that write$ does | |
315 | + %% indeed behave as claimed, but newline$ sends a newline character | |
316 | + %% directly to the output file, leaving the stack unchanged. The | |
317 | + %% first line "Writes onto ... buffer." is therefore wrong. | |
318 | + %% | |
319 | + %% The original BibTeX style files almost always use "write$ newline$" | |
320 | + %% in that order, so it makes sense to hide that pair in a private | |
321 | + %% function like this one, named after a statement in Pascal, | |
322 | + %% the programming language embedded in the BibTeX Web program. | |
323 | + | |
324 | + write$ % output top-of-stack string | |
325 | + newline$ % immediate write of newline (not via stack) | |
326 | +} | |
327 | + | |
328 | +FUNCTION { init.state.consts } | |
329 | +{ | |
330 | + #0 'before.all := | |
331 | + #1 'mid.sentence := | |
332 | + #2 'after.sentence := | |
333 | + #3 'after.block := | |
334 | +} | |
335 | + | |
336 | +FUNCTION { output.nonnull } | |
337 | +{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space> | |
338 | + 's := | |
339 | + output.state mid.sentence = | |
340 | + { | |
341 | + ", " * write$ | |
342 | + } | |
343 | + { | |
344 | + output.state after.block = | |
345 | + { | |
346 | + add.period$ writeln | |
347 | + "\newblock " write$ | |
348 | + } | |
349 | + { | |
350 | + output.state before.all = | |
351 | + { | |
352 | + write$ | |
353 | + } | |
354 | + { | |
355 | + add.period$ " " * write$ | |
356 | + } | |
357 | + if$ | |
358 | + } | |
359 | + if$ | |
360 | + mid.sentence 'output.state := | |
361 | + } | |
362 | + if$ | |
363 | + s | |
364 | +} | |
365 | + | |
366 | +FUNCTION { output.nonnull.dot.space } | |
367 | +{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space> | |
368 | + 's := | |
369 | + output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ } | |
370 | + { | |
371 | + ". " * write$ | |
372 | + } | |
373 | + { | |
374 | + output.state after.block = | |
375 | + { | |
376 | + add.period$ writeln "\newblock " write$ | |
377 | + } | |
378 | + { | |
379 | + output.state before.all = | |
380 | + { | |
381 | + write$ | |
382 | + } | |
383 | + { | |
384 | + add.period$ " " * write$ | |
385 | + } | |
386 | + if$ | |
387 | + } | |
388 | + if$ | |
389 | + mid.sentence 'output.state := | |
390 | + } | |
391 | + if$ | |
392 | + s | |
393 | +} | |
394 | + | |
395 | +FUNCTION { output.nonnull.remove } | |
396 | +{ % Stack in: ... R S T Stack out: ... R T File out: S<space> | |
397 | + 's := | |
398 | + output.state mid.sentence = | |
399 | + { | |
400 | + " " * write$ | |
401 | + } | |
402 | + { | |
403 | + output.state after.block = | |
404 | + { | |
405 | + add.period$ writeln "\newblock " write$ | |
406 | + } | |
407 | + { | |
408 | + output.state before.all = | |
409 | + { | |
410 | + write$ | |
411 | + } | |
412 | + { | |
413 | + add.period$ " " * write$ | |
414 | + } | |
415 | + if$ | |
416 | + } | |
417 | + if$ | |
418 | + mid.sentence 'output.state := | |
419 | + } | |
420 | + if$ | |
421 | + s | |
422 | +} | |
423 | + | |
424 | +FUNCTION { output.nonnull.removenospace } | |
425 | +{ % Stack in: ... R S T Stack out: ... R T File out: S | |
426 | + 's := | |
427 | + output.state mid.sentence = | |
428 | + { | |
429 | + "" * write$ | |
430 | + } | |
431 | + { | |
432 | + output.state after.block = | |
433 | + { | |
434 | + add.period$ writeln "\newblock " write$ | |
435 | + } | |
436 | + { | |
437 | + output.state before.all = | |
438 | + { | |
439 | + write$ | |
440 | + } | |
441 | + { | |
442 | + add.period$ " " * write$ | |
443 | + } | |
444 | + if$ | |
445 | + } | |
446 | + if$ | |
447 | + mid.sentence 'output.state := | |
448 | + } | |
449 | + if$ | |
450 | + s | |
451 | +} | |
452 | + | |
453 | +FUNCTION { output } | |
454 | +{ % discard top token if empty, else like output.nonnull | |
455 | + duplicate$ empty.or.unknown | |
456 | + 'pop$ | |
457 | + 'output.nonnull | |
458 | + if$ | |
459 | +} | |
460 | + | |
461 | +FUNCTION { output.dot.space } | |
462 | +{ % discard top token if empty, else like output.nonnull.dot.space | |
463 | + duplicate$ empty.or.unknown | |
464 | + 'pop$ | |
465 | + 'output.nonnull.dot.space | |
466 | + if$ | |
467 | +} | |
468 | + | |
469 | +FUNCTION { output.removenospace } | |
470 | +{ % discard top token if empty, else like output.nonnull.removenospace | |
471 | + duplicate$ empty.or.unknown | |
472 | + 'pop$ | |
473 | + 'output.nonnull.removenospace | |
474 | + if$ | |
475 | +} | |
476 | + | |
477 | +FUNCTION { output.check } | |
478 | +{ % like output, but warn if key name on top-of-stack is not set | |
479 | + 't := | |
480 | + duplicate$ empty.or.unknown | |
481 | + { pop$ "empty " t * " in " * cite$ * warning$ } | |
482 | + 'output.nonnull | |
483 | + if$ | |
484 | +} | |
485 | + | |
486 | +FUNCTION { output.check.dot.space } | |
487 | +{ % like output.dot.space, but warn if key name on top-of-stack is not set | |
488 | + 't := | |
489 | + duplicate$ empty.or.unknown | |
490 | + { pop$ "empty " t * " in " * cite$ * warning$ } | |
491 | + 'output.nonnull.dot.space | |
492 | + if$ | |
493 | +} | |
494 | + | |
495 | +FUNCTION { fin.block } | |
496 | +{ % functionally, but not logically, identical to fin.entry | |
497 | + add.period$ | |
498 | + writeln | |
499 | +} | |
500 | + | |
501 | +FUNCTION { fin.entry } | |
502 | +{ | |
503 | + add.period$ | |
504 | + writeln | |
505 | +} | |
506 | + | |
507 | +FUNCTION { new.sentence } | |
508 | +{ % update sentence state, with neither output nor stack change | |
509 | + output.state after.block = | |
510 | + 'skip$ | |
511 | + { | |
512 | + output.state before.all = | |
513 | + 'skip$ | |
514 | + { after.sentence 'output.state := } | |
515 | + if$ | |
516 | + } | |
517 | + if$ | |
518 | +} | |
519 | + | |
520 | +FUNCTION { fin.sentence } | |
521 | +{ | |
522 | + add.period$ | |
523 | + write$ | |
524 | + new.sentence | |
525 | + "" | |
526 | +} | |
527 | + | |
528 | +FUNCTION { new.block } | |
529 | +{ | |
530 | + output.state before.all = | |
531 | + 'skip$ | |
532 | + { after.block 'output.state := } | |
533 | + if$ | |
534 | +} | |
535 | + | |
536 | +FUNCTION { output.coden } % UTAH | |
537 | +{ % output non-empty CODEN as one-line sentence (stack untouched) | |
538 | + coden empty.or.unknown | |
539 | + { } | |
540 | + { "\showCODEN{" coden * "}" * writeln } | |
541 | + if$ | |
542 | +} | |
543 | + | |
544 | +FUNCTION { format.articleno } | |
545 | +{ | |
546 | + articleno empty.or.unknown | |
547 | + { "" } | |
548 | + { | |
549 | + numpages empty.or.unknown | |
550 | + { "articleno field, but no numpages field, in " cite$ * warning$ } | |
551 | + { } | |
552 | + if$ | |
553 | + "Article " articleno * | |
554 | + } | |
555 | + if$ | |
556 | +} | |
557 | + | |
558 | +FUNCTION { format.year } | |
559 | +{ % push year string or "????" onto output stack | |
560 | + %% Because year is a mandatory field, we always force SOMETHING | |
561 | + %% to be output | |
562 | + year empty.or.unknown | |
563 | + { "????" } | |
564 | + { year } | |
565 | + if$ | |
566 | +} | |
567 | + | |
568 | +FUNCTION { format.day.month } | |
569 | +{ % push "day month " or "month " or "" onto output stack | |
570 | + day empty.or.unknown | |
571 | + { | |
572 | + month empty.or.unknown | |
573 | + { "" } | |
574 | + { month " " *} | |
575 | + if$ | |
576 | + } | |
577 | + { | |
578 | + month empty.or.unknown | |
579 | + { "" } | |
580 | + { day " " * month * " " *} | |
581 | + if$ | |
582 | + } | |
583 | + if$ | |
584 | +} | |
585 | + | |
586 | +FUNCTION { format.day.month.year } % UTAH | |
587 | +{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)" | |
588 | + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) | |
589 | + % acm-*.bst addition: prefix parenthesized date string with | |
590 | + % ", Article nnn " | |
591 | + articleno empty.or.unknown | |
592 | + { "" } | |
593 | + { ", " format.articleno * } | |
594 | + if$ | |
595 | + " (" * format.day.month * format.year * ")" * | |
596 | +} | |
597 | + | |
598 | +FUNCTION { output.day.month.year } % UTAH | |
599 | +{ % if month is empty value, do nothing; else output stack top and | |
600 | + % leave with new top string "(MON.)" or "(DD MON.)" | |
601 | + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) | |
602 | + format.day.month.year | |
603 | + output.nonnull.remove | |
604 | +} | |
605 | + | |
606 | +FUNCTION { strip.doi } % UTAH | |
607 | +{ % Strip any Web address prefix to recover the bare DOI, leaving the | |
608 | + % result on the output stack, as recommended by CrossRef DOI | |
609 | + % documentation. | |
610 | + % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to | |
611 | + % "10.1145/1534530.1534545". That is later typeset and displayed as | |
612 | + % doi:10.1145/1534530.1534545 as the LAST item in the reference list | |
613 | + % entry. Publisher Web sites wrap this with a suitable link to a real | |
614 | + % URL to resolve the DOI, and the master http://dx.doi.org/ address is | |
615 | + % preferred, since publisher-specific URLs can disappear in response | |
616 | + % to economic events. All journals are encouraged by the DOI | |
617 | + % authorities to use that typeset format and link procedures for | |
618 | + % uniformity across all publications that include DOIs in reference | |
619 | + % lists. | |
620 | + % The numeric prefix is guaranteed to start with "10.", so we use | |
621 | + % that as a test. | |
622 | + doi #1 #3 substring$ "10." = | |
623 | + { doi } | |
624 | + { | |
625 | + doi #1 #7 substring$ "http://" = | |
626 | + { | |
627 | + doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI | |
628 | + | |
629 | + "INTERNAL STYLE-FILE ERROR" 's := | |
630 | + | |
631 | + % search for next "/" and assign its suffix to s | |
632 | + | |
633 | + { t text.length$ } | |
634 | + { | |
635 | + t #1 #1 substring$ "/" = | |
636 | + { | |
637 | + % save rest of string as true DOI (should be 10.xxxx/yyyy) | |
638 | + t #2 t text.length$ #1 - substring$ 's := | |
639 | + "" 't := % empty string t terminates the loop | |
640 | + } | |
641 | + { | |
642 | + % discard first character and continue loop: t <= substring(t,2,last) | |
643 | + t #2 t text.length$ #1 - substring$ 't := | |
644 | + } | |
645 | + if$ | |
646 | + } | |
647 | + while$ | |
648 | + | |
649 | + % check for valid DOI (should be 10.xxxx/yyyy) | |
650 | + s #1 #3 substring$ "10." = | |
651 | + { } | |
652 | + { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ } | |
653 | + if$ | |
654 | + | |
655 | + s % push the stripped DOI on the output stack | |
656 | + | |
657 | + } | |
658 | + { | |
659 | + "unrecognized DOI value [" doi * "]" * warning$ | |
660 | + doi % push the unrecognized original DOI on the output stack | |
661 | + } | |
662 | + if$ | |
663 | + } | |
664 | + if$ | |
665 | +} | |
666 | + | |
667 | +% | |
668 | +% Change by BV: added standard prefix to URL | |
669 | +% | |
670 | +FUNCTION { output.doi } % UTAH | |
671 | +{ % output non-empty DOI as one-line sentence (stack untouched) | |
672 | + doi empty.or.unknown | |
673 | + { } | |
674 | + { | |
675 | + %% NB: We want URLs at beginning of line to reduce likelihood of | |
676 | + %% BibTeX's nasty line wrapping after column 79, which then requires | |
677 | + %% manual (or automated) editing of the .bbl file to repair. | |
678 | + %% The \url{} macro strips percent-newlines, and is thus safe in | |
679 | + %% the presence of the line wrapping, but \path|...| and | |
680 | + %% \verb|...| do not. | |
681 | + "\showDOI{%" writeln | |
682 | + "\url{http://dx.doi.org/" strip.doi * "}}" * writeln | |
683 | + } | |
684 | + if$ | |
685 | +} | |
686 | + | |
687 | +FUNCTION { output.isbn } % UTAH | |
688 | +{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched) | |
689 | + show-isbn-10-and-13 | |
690 | + { | |
691 | + %% show both 10- and 13-digit ISBNs | |
692 | + isbn empty.or.unknown | |
693 | + { } | |
694 | + { | |
695 | + "\showISBNx{" isbn * "}" * writeln | |
696 | + } | |
697 | + if$ | |
698 | + isbn-13 empty.or.unknown | |
699 | + { } | |
700 | + { | |
701 | + "\showISBNxiii{" isbn-13 * "}" * writeln | |
702 | + } | |
703 | + if$ | |
704 | + } | |
705 | + { | |
706 | + %% show 10-digit ISBNs only if 13-digit ISBNs not available | |
707 | + isbn-13 empty.or.unknown | |
708 | + { | |
709 | + isbn empty.or.unknown | |
710 | + { } | |
711 | + { | |
712 | + "\showISBNx{" isbn * "}" * writeln | |
713 | + } | |
714 | + if$ | |
715 | + } | |
716 | + { | |
717 | + "\showISBNxiii{" isbn-13 * "}" * writeln | |
718 | + } | |
719 | + if$ | |
720 | + } | |
721 | + if$ | |
722 | +} | |
723 | + | |
724 | +FUNCTION { output.issn } % UTAH | |
725 | +{ % output non-empty ISSN as one-line sentence (stack untouched) | |
726 | + issn empty.or.unknown | |
727 | + { } | |
728 | + { "\showISSN{" issn * "}" * writeln } | |
729 | + if$ | |
730 | +} | |
731 | + | |
732 | +FUNCTION { output.issue } | |
733 | +{ % output non-empty issue number as a one-line sentence (stack untouched) | |
734 | + issue empty.or.unknown | |
735 | + { } | |
736 | + { "Issue " issue * "." * writeln } | |
737 | + if$ | |
738 | +} | |
739 | + | |
740 | +FUNCTION { output.lccn } % UTAH | |
741 | +{ % return with stack untouched | |
742 | + lccn empty.or.unknown | |
743 | + { } | |
744 | + { "\showLCCN{" lccn * "}" * writeln } | |
745 | + if$ | |
746 | +} | |
747 | + | |
748 | +FUNCTION { output.note } % UTAH | |
749 | +{ % return with stack empty | |
750 | + note empty.or.unknown | |
751 | + { } | |
752 | + { "\shownote{" note add.period$ * "}" * writeln } | |
753 | + if$ | |
754 | +} | |
755 | + | |
756 | +FUNCTION { output.note.check } % UTAH | |
757 | +{ % return with stack empty | |
758 | + note empty.or.unknown | |
759 | + { "empty note in " cite$ * warning$ } | |
760 | + { "\shownote{" note add.period$ * "}" * writeln } | |
761 | + if$ | |
762 | +} | |
763 | + | |
764 | +% | |
765 | +% Changes by BV 2011/04/15. Do not output | |
766 | +% url if doi is defined | |
767 | +% | |
768 | +FUNCTION { output.url } % UTAH | |
769 | +{ % return with stack untouched | |
770 | + % output URL and associated lastaccessed fields | |
771 | + doi empty.or.unknown | |
772 | + { | |
773 | + url empty.or.unknown | |
774 | + { } | |
775 | + { | |
776 | + %% NB: We want URLs at beginning of line to reduce likelihood of | |
777 | + %% BibTeX's nasty line wrapping after column 79, which would require | |
778 | + %% manual (or automated) editing of the .bbl file to repair. However, | |
779 | + %% the \url{} macro handles the unwrapping job automatically. | |
780 | + "\showURL{%" writeln | |
781 | + lastaccessed empty.or.unknown | |
782 | + { "" } | |
783 | + { "Retrieved " lastaccessed * " from " * } | |
784 | + if$ | |
785 | + | |
786 | + %% The URL field may contain a semicolon-separated list of Web | |
787 | + %% addresses, and we locate and wrap each of them in \url{...}. | |
788 | + %% The simplistic approach of putting the entire list into the | |
789 | + %% macro argument is that the semicolons are typeset in a | |
790 | + %% typewriter font, and no space follows them. | |
791 | + %% | |
792 | + %% We therefore replace the original code | |
793 | + %% "\url{" * url * "}}" * writeln | |
794 | + %% with this character-at-a-time loop: | |
795 | + | |
796 | + "\url{" * | |
797 | + | |
798 | + url 't := % get modifiable copy of URL list | |
799 | + | |
800 | + { t text.length$ } | |
801 | + { | |
802 | + t #1 #1 substring$ ";" = | |
803 | + { % then split argument at separator | |
804 | + "};" * writeln | |
805 | + "\url{" | |
806 | + } | |
807 | + { % else concatenate nonblank character to argument | |
808 | + t #1 #1 substring$ " " = | |
809 | + { } | |
810 | + { t #1 #1 substring$ * } | |
811 | + if$ | |
812 | + } | |
813 | + if$ | |
814 | + | |
815 | + t #2 t text.length$ #1 - substring$ 't := | |
816 | + } | |
817 | + while$ | |
818 | + | |
819 | + "}}" * writeln | |
820 | + } | |
821 | + if$ | |
822 | + } | |
823 | + { } | |
824 | + if$ | |
825 | +} | |
826 | + | |
827 | +FUNCTION { output.year.check } | |
828 | +{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence | |
829 | + year empty.or.unknown | |
830 | + { "empty year in " cite$ * warning$ } | |
831 | + { write$ | |
832 | + " " year * extra.label * | |
833 | + mid.sentence 'output.state := | |
834 | + } | |
835 | + if$ | |
836 | +} | |
837 | + | |
838 | +FUNCTION { not } | |
839 | +{ | |
840 | + { #0 } | |
841 | + { #1 } | |
842 | + if$ | |
843 | +} | |
844 | + | |
845 | +FUNCTION { and } | |
846 | +{ | |
847 | + 'skip$ | |
848 | + { pop$ #0 } | |
849 | + if$ | |
850 | +} | |
851 | + | |
852 | +FUNCTION { or } | |
853 | +{ | |
854 | + { pop$ #1 } | |
855 | + 'skip$ | |
856 | + if$ | |
857 | +} | |
858 | + | |
859 | +FUNCTION { le } | |
860 | +{ | |
861 | + %% test whether first number is less than or equal to second number | |
862 | + %% stack in: n1 n2 | |
863 | + %% stack out: if n1 <= n2 then 1 else 0 | |
864 | + | |
865 | + %% "DEBUG: le " cite$ * warning$ | |
866 | + > { #0 } { #1 } if$ | |
867 | +} | |
868 | + | |
869 | +FUNCTION { ge } | |
870 | +{ | |
871 | + %% test whether first number is greater than or equal to second number | |
872 | + %% stack in: n1 n2 | |
873 | + %% stack out: if n1 >= n2 then 1 else 0 | |
874 | + | |
875 | + %% "DEBUG: ge " cite$ * warning$ | |
876 | + < { #0 } { #1 } if$ | |
877 | +} | |
878 | + | |
879 | +FUNCTION { is.leading.digit } | |
880 | +{ | |
881 | + %% test whether first character of string is a digit | |
882 | + %% stack in: string | |
883 | + %% stack out: if first-char-is-digit then 1 else 0 | |
884 | + | |
885 | + #1 #1 substring$ % replace string by string[1:1] | |
886 | + duplicate$ % string[1:1] string[1:1] | |
887 | + chr.to.int$ | |
888 | + "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1 | |
889 | + swap$ % 0-or-1 string[1:1] | |
890 | + chr.to.int$ | |
891 | + "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1 | |
892 | + and | |
893 | +} | |
894 | + | |
895 | +FUNCTION { skip.digits } | |
896 | +{ | |
897 | + %% skip over leading digits in string | |
898 | + %% stack in: string | |
899 | + %% stack out: rest-of-string leading-digits | |
900 | + | |
901 | + %% "DEBUG: enter skip.digits " cite$ * warning$ | |
902 | + | |
903 | + %% dump.stack.1 | |
904 | + | |
905 | + duplicate$ | |
906 | + 't := | |
907 | + 't.org := | |
908 | + "" 'u := | |
909 | + | |
910 | + { t text.length$ } | |
911 | + { | |
912 | + %% "=================DEBUG: skip.digits t = [" t * "]" * warning$ | |
913 | + t is.leading.digit | |
914 | + { t #2 t text.length$ #1 - substring$ } | |
915 | + { | |
916 | + t 'u := | |
917 | + "" | |
918 | + } | |
919 | + if$ | |
920 | + 't := | |
921 | + } | |
922 | + while$ | |
923 | + | |
924 | + u % rest of string | |
925 | + t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits | |
926 | + | |
927 | + %% "DEBUG: t.org = [" t.org * "]" * warning$ | |
928 | + %% "DEBUG: u = [" u * "]" * warning$ | |
929 | + | |
930 | + %% dump.stack.2 | |
931 | + | |
932 | + %% "DEBUG: leave skip.digits " cite$ * warning$ | |
933 | +} | |
934 | + | |
935 | +FUNCTION { skip.nondigits } | |
936 | +{ | |
937 | + %% skip over leading nondigits in string | |
938 | + %% stack in: string | |
939 | + %% stack out: rest-of-string | |
940 | + | |
941 | + %% "DEBUG: enter skip.nondigits " cite$ * warning$ | |
942 | + | |
943 | + 't := | |
944 | + "" 'u := | |
945 | + | |
946 | + { t text.length$ } | |
947 | + { | |
948 | + %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$ | |
949 | + t is.leading.digit | |
950 | + { | |
951 | + t 'u := | |
952 | + "" | |
953 | + } | |
954 | + { t #2 t text.length$ #1 - substring$ } | |
955 | + if$ | |
956 | + 't := | |
957 | + } | |
958 | + while$ | |
959 | + | |
960 | + u % rest of string | |
961 | + | |
962 | + %% dump.stack.1 | |
963 | + %% "DEBUG: leave skip.nondigits " cite$ * warning$ | |
964 | +} | |
965 | + | |
966 | +FUNCTION { parse.next.number } | |
967 | +{ | |
968 | + %% stack in: string | |
969 | + %% stack out: rest-of-string next-numeric-part-of-string | |
970 | + %% Example: | |
971 | + %% stack in: "123:1--123:59" | |
972 | + %% stack out: ":1--123:59" "123" | |
973 | + | |
974 | + 's := | |
975 | + s skip.nondigits 's := | |
976 | + s skip.digits | |
977 | +} | |
978 | + | |
979 | +FUNCTION { reduce.pages.to.page.count } | |
980 | +{ | |
981 | + %% Stack in: arbitrary-and-unused | |
982 | + %% Stack out: unchanged | |
983 | + %% | |
984 | + %% For the new-style pagination with article number and numpages or | |
985 | + %% pages, we expect to have BibTeX entries containing something like | |
986 | + %% articleno = "17", | |
987 | + %% pages = "1--23", | |
988 | + %% with output "Article 17, 23 pages", | |
989 | + %% or | |
990 | + %% articleno = "17", | |
991 | + %% numpages = "23", | |
992 | + %% with output "Article 17, 23 pages", | |
993 | + %% or | |
994 | + %% articleno = "17", | |
995 | + %% pages = "17:1--17:23", | |
996 | + %% with output "Article 17, 23 pages", | |
997 | + %% | |
998 | + %% If articleno is missing or empty, then we should output "1--23", | |
999 | + %% "23" (with a warning of a missing articleno), or "17:1--17:23", | |
1000 | + %% respectively. | |
1001 | + | |
1002 | + %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$ | |
1003 | + | |
1004 | + %% "DEBUG: pages = [" pages * "]" * warning$ | |
1005 | + | |
1006 | + pages | |
1007 | + parse.next.number 'p1 := | |
1008 | + parse.next.number 'p2 := | |
1009 | + parse.next.number 'p3 := | |
1010 | + parse.next.number 'page.count := | |
1011 | + | |
1012 | + duplicate$ | |
1013 | + empty.or.unknown | |
1014 | + { } | |
1015 | + { | |
1016 | + duplicate$ "unexpected trailing garbage [" swap$ * | |
1017 | + "] after n:p1--n:p2 in pages = [" * | |
1018 | + pages * | |
1019 | + "] in " * | |
1020 | + cite$ * | |
1021 | + warning$ | |
1022 | + } | |
1023 | + if$ | |
1024 | + | |
1025 | + pop$ | |
1026 | + | |
1027 | + %% "DEBUG: reduce.pages.to.page.count: " | |
1028 | + %% " p1 = " p1 * * | |
1029 | + %% " p2 = " p2 * * | |
1030 | + %% " p3 = " p3 * * | |
1031 | + %% " p4 = " page.count * * | |
1032 | + %% " in " cite$ * * warning$ | |
1033 | + | |
1034 | + p1 p3 = p2 "1" = and numpages empty.or.unknown and | |
1035 | + { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ } | |
1036 | + { | |
1037 | + numpages empty.or.unknown | |
1038 | + { pages } | |
1039 | + { numpages } | |
1040 | + if$ | |
1041 | + 'page.count := | |
1042 | + } | |
1043 | + if$ | |
1044 | + | |
1045 | + p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and | |
1046 | + { | |
1047 | + p2 'page.count := | |
1048 | + "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ | |
1049 | + } | |
1050 | + { | |
1051 | + numpages empty.or.unknown | |
1052 | + { pages } | |
1053 | + { numpages } | |
1054 | + if$ | |
1055 | + 'page.count := | |
1056 | + } | |
1057 | + if$ | |
1058 | + | |
1059 | + %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$ | |
1060 | +} | |
1061 | + | |
1062 | +FUNCTION { new.block.checkb } | |
1063 | +{ % issue a new.block only if at least one of top two stack strings is not empty | |
1064 | + empty.or.unknown | |
1065 | + swap$ empty.or.unknown | |
1066 | + and | |
1067 | + 'skip$ | |
1068 | + 'new.block | |
1069 | + if$ | |
1070 | +} | |
1071 | + | |
1072 | +FUNCTION { field.or.null } | |
1073 | +{ % convert empty value to null string, else return value | |
1074 | + duplicate$ empty.or.unknown | |
1075 | + { pop$ "" } | |
1076 | + 'skip$ | |
1077 | + if$ | |
1078 | +} | |
1079 | + | |
1080 | +FUNCTION { emphasize } | |
1081 | +{ % emphasize a non-empty top string on the stack (WITHOUT italic correction) | |
1082 | + duplicate$ empty.or.unknown | |
1083 | + { pop$ "" } | |
1084 | + { "{\em " swap$ * "}" * } | |
1085 | + if$ | |
1086 | +} | |
1087 | + | |
1088 | +FUNCTION { emphasize.with.italic.correction } | |
1089 | +{ % convert empty string to null string, or emphasize with a trailing italic correction | |
1090 | + duplicate$ empty.or.unknown | |
1091 | + { pop$ "" } | |
1092 | + { "{\em " swap$ * "\/}" * } | |
1093 | + if$ | |
1094 | +} | |
1095 | + | |
1096 | +FUNCTION { comma } | |
1097 | +{ % convert empty string to null string, or brace string and add trailing comma | |
1098 | + duplicate$ empty.or.unknown | |
1099 | + { pop$ "" } | |
1100 | + { "{" swap$ * "}," * } | |
1101 | + if$ | |
1102 | +} | |
1103 | + | |
1104 | +FUNCTION { format.names } | |
1105 | +{ | |
1106 | + % Format bibliographical entries with the first author last name first, | |
1107 | + % and subsequent authors with initials followed by last name. | |
1108 | + % All names are formatted in this routine. | |
1109 | + | |
1110 | + 's := | |
1111 | + #1 'nameptr := % nameptr = 1; | |
1112 | + s num.names$ 'numnames := % numnames = num.name$(s); | |
1113 | + numnames 'namesleft := | |
1114 | + { namesleft #0 > } | |
1115 | + { nameptr #1 = | |
1116 | + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := } | |
1117 | + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := } | |
1118 | + {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := } | |
1119 | + {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := } | |
1120 | + if$ | |
1121 | + nameptr #1 > | |
1122 | + { | |
1123 | + namesleft #1 > | |
1124 | + { ", " * t * } | |
1125 | + { | |
1126 | + numnames #2 > | |
1127 | + { "," * } | |
1128 | + 'skip$ | |
1129 | + if$ | |
1130 | + t "{\sc others}" = | |
1131 | + { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems | |
1132 | + { " {and} " * t * } % from Chicago Manual of Style | |
1133 | + if$ | |
1134 | + } | |
1135 | + if$ | |
1136 | + } | |
1137 | + 't | |
1138 | + if$ | |
1139 | + nameptr #1 + 'nameptr := % nameptr += 1; | |
1140 | + namesleft #1 - 'namesleft := % namesleft =- 1; | |
1141 | + } | |
1142 | + while$ | |
1143 | +} | |
1144 | + | |
1145 | +FUNCTION { my.full.label } | |
1146 | +{ | |
1147 | + 's := | |
1148 | + #1 'nameptr := % nameptr = 1; | |
1149 | + s num.names$ 'numnames := % numnames = num.name$(s); | |
1150 | + numnames 'namesleft := | |
1151 | + { namesleft #0 > } | |
1152 | + | |
1153 | + { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name | |
1154 | + nameptr #1 > | |
1155 | + { | |
1156 | + namesleft #1 > | |
1157 | + { ", " * t * } | |
1158 | + { | |
1159 | + numnames #2 > | |
1160 | + { "," * } | |
1161 | + 'skip$ | |
1162 | + if$ | |
1163 | + t "others" = | |
1164 | + { " et~al\mbox{.}" * } % jrh: avoid spacing problems | |
1165 | + { " and " * t * } % from Chicago Manual of Style | |
1166 | + if$ | |
1167 | + } | |
1168 | + if$ | |
1169 | + } | |
1170 | + 't | |
1171 | + if$ | |
1172 | + nameptr #1 + 'nameptr := % nameptr += 1; | |
1173 | + namesleft #1 - 'namesleft := % namesleft =- 1; | |
1174 | + } | |
1175 | + while$ | |
1176 | + | |
1177 | +} | |
1178 | + | |
1179 | +FUNCTION { format.names.fml } | |
1180 | +{ | |
1181 | + % Format names in "familiar" format, with first initial followed by | |
1182 | + % last name. Like format.names, ALL names are formatted. | |
1183 | + % jtb: The names are NOT put in small caps | |
1184 | + | |
1185 | + 's := | |
1186 | + #1 'nameptr := % nameptr = 1; | |
1187 | + s num.names$ 'numnames := % numnames = num.name$(s); | |
1188 | + numnames 'namesleft := | |
1189 | + { namesleft #0 > } | |
1190 | + | |
1191 | + { | |
1192 | + "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't := | |
1193 | + | |
1194 | + nameptr #1 > | |
1195 | + { | |
1196 | + namesleft #1 > | |
1197 | + { ", " * t * } | |
1198 | + { | |
1199 | + numnames #2 > | |
1200 | + { "," * } | |
1201 | + 'skip$ | |
1202 | + if$ | |
1203 | + t "{others}" = | |
1204 | + { " {et~al\mbox{.}}" * } | |
1205 | + { " {and} " * t * } | |
1206 | + if$ | |
1207 | + } | |
1208 | + if$ | |
1209 | + } | |
1210 | + 't | |
1211 | + if$ | |
1212 | + nameptr #1 + 'nameptr := % nameptr += 1; | |
1213 | + namesleft #1 - 'namesleft := % namesleft =- 1; | |
1214 | + } | |
1215 | + while$ | |
1216 | +} | |
1217 | + | |
1218 | +FUNCTION { format.authors } | |
1219 | +{ | |
1220 | + author empty.or.unknown | |
1221 | + { "" } | |
1222 | + { author format.names add.period$} % jtb: add period if none before | |
1223 | + if$ | |
1224 | +} | |
1225 | + | |
1226 | +FUNCTION { format.key } | |
1227 | +{ | |
1228 | + empty.or.unknown | |
1229 | + { key field.or.null } | |
1230 | + { "" } | |
1231 | + if$ | |
1232 | +} | |
1233 | + | |
1234 | +FUNCTION { format.no.key } | |
1235 | +{ | |
1236 | + empty.or.unknown | |
1237 | + { "" } | |
1238 | + { "" } | |
1239 | + if$ | |
1240 | +} | |
1241 | + | |
1242 | +FUNCTION { format.editors.fml } | |
1243 | +{ | |
1244 | + % Format editor names for use in the "in" types: inbook, incollection, | |
1245 | + % inproceedings: first initial, then last names. When editors are the | |
1246 | + % LABEL for an entry, then format.editor is used which lists editors | |
1247 | + % by last name first. | |
1248 | + | |
1249 | + editor empty.or.unknown | |
1250 | + { "" } | |
1251 | + { | |
1252 | + editor format.names.fml editor num.names$ #1 > | |
1253 | + { " (Eds.)" * } | |
1254 | + { " (Ed.)" * } | |
1255 | + if$ | |
1256 | + } | |
1257 | + if$ | |
1258 | +} | |
1259 | + | |
1260 | +FUNCTION { format.editors } | |
1261 | +{ % format editor names for use in labels, last names first. | |
1262 | + editor empty.or.unknown | |
1263 | + { "" } | |
1264 | + { | |
1265 | + editor format.names | |
1266 | + editor num.names$ #1 > | |
1267 | + { " (Eds.)." * } | |
1268 | + { " (Ed.)." * } | |
1269 | + if$ | |
1270 | + } | |
1271 | + if$ | |
1272 | +} | |
1273 | + | |
1274 | +FUNCTION { format.articletitle } | |
1275 | +{ | |
1276 | + title empty.or.unknown | |
1277 | + { "" } | |
1278 | + % Use this to preserve lettercase in titles: | |
1279 | + { "\showarticletitle{" title * "}" * } | |
1280 | + % Use this for downcase title style: | |
1281 | + % { \showarticletitle{" title "t" change.case$ * "}" * } | |
1282 | + if$ | |
1283 | +} | |
1284 | + | |
1285 | +FUNCTION { format.title } | |
1286 | +{ | |
1287 | + title empty.or.unknown | |
1288 | + { "" } | |
1289 | + % Use this to preserve lettercase in titles: | |
1290 | + { title } | |
1291 | + % Use this for downcase title style: | |
1292 | + % { title "t" change.case$ } | |
1293 | + if$ | |
1294 | +} | |
1295 | + | |
1296 | +FUNCTION { n.dashify } | |
1297 | +{ | |
1298 | + 't := | |
1299 | + "" | |
1300 | + { t empty.or.unknown not } | |
1301 | + { | |
1302 | + t #1 #1 substring$ "-" = | |
1303 | + { | |
1304 | + t #1 #2 substring$ "--" = not | |
1305 | + { "--" * | |
1306 | + t #2 global.max$ substring$ 't := | |
1307 | + } | |
1308 | + { | |
1309 | + { t #1 #1 substring$ "-" = } | |
1310 | + { | |
1311 | + "-" * | |
1312 | + t #2 global.max$ substring$ 't := | |
1313 | + } | |
1314 | + while$ | |
1315 | + } | |
1316 | + if$ | |
1317 | + } | |
1318 | + { | |
1319 | + t #1 #1 substring$ * | |
1320 | + t #2 global.max$ substring$ 't := | |
1321 | + } | |
1322 | + if$ | |
1323 | + } | |
1324 | + while$ | |
1325 | +} | |
1326 | + | |
1327 | +FUNCTION { format.btitle } | |
1328 | +{ | |
1329 | + edition empty.or.unknown | |
1330 | + { title emphasize } | |
1331 | + { title empty.or.unknown | |
1332 | + { title emphasize } % jtb: what is this supposed to do ?!? | |
1333 | + { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed. | |
1334 | + if$ | |
1335 | + } | |
1336 | + if$ | |
1337 | +} | |
1338 | + | |
1339 | +FUNCTION { format.emphasize.booktitle } | |
1340 | +{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack | |
1341 | + edition empty.or.unknown | |
1342 | + { booktitle emphasize } | |
1343 | + { booktitle empty.or.unknown | |
1344 | + { "" } | |
1345 | + { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * } | |
1346 | + if$ | |
1347 | + } | |
1348 | + if$ | |
1349 | +} | |
1350 | + | |
1351 | +FUNCTION { format.city } | |
1352 | +{ | |
1353 | + % jtb: if the preceding string (the title of the conference) is non-empty, | |
1354 | + % jtb: append the location, otherwise leave empty (so as to trigger the | |
1355 | + % jtb: error message in output.check | |
1356 | + | |
1357 | + duplicate$ empty.or.unknown | |
1358 | + { } | |
1359 | + { | |
1360 | + city empty.or.unknown | |
1361 | + { | |
1362 | + date empty.or.unknown | |
1363 | + { } | |
1364 | + { " (" * date * ")" * } | |
1365 | + if$ | |
1366 | + } | |
1367 | + { | |
1368 | + date empty.or.unknown | |
1369 | + { " (" * city * ")" * } | |
1370 | + { " (" * city * ", " * date * ")" * } | |
1371 | + if$ | |
1372 | + } | |
1373 | + if$ | |
1374 | + } | |
1375 | + if$ | |
1376 | +} | |
1377 | + | |
1378 | +FUNCTION { tie.or.space.connect } | |
1379 | +{ | |
1380 | + duplicate$ text.length$ #3 < | |
1381 | + { "~" } | |
1382 | + { " " } | |
1383 | + if$ | |
1384 | + swap$ * * | |
1385 | +} | |
1386 | + | |
1387 | +FUNCTION { either.or.check } | |
1388 | +{ | |
1389 | + empty.or.unknown | |
1390 | + 'pop$ | |
1391 | + { "can't use both " swap$ * " fields in " * cite$ * warning$ } | |
1392 | + if$ | |
1393 | +} | |
1394 | + | |
1395 | +FUNCTION { format.bvolume } | |
1396 | +{ | |
1397 | + % jtb: If there is a series, this is added and the volume trails after it. | |
1398 | + % jtb: Otherwise, "Vol" is Capitalized. | |
1399 | + | |
1400 | + volume empty.or.unknown | |
1401 | + { "" } | |
1402 | + { | |
1403 | + series empty.or.unknown | |
1404 | + { "Vol." volume tie.or.space.connect} | |
1405 | + { series ", " * "Vol." volume tie.or.space.connect *} | |
1406 | + if$ | |
1407 | + "volume and number" number either.or.check | |
1408 | + } | |
1409 | + if$ | |
1410 | +} | |
1411 | + | |
1412 | +FUNCTION { format.bvolume.noseries } | |
1413 | +{ | |
1414 | + volume empty.or.unknown | |
1415 | + { "" } | |
1416 | + { | |
1417 | + series empty.or.unknown | |
1418 | + { "Vol." volume tie.or.space.connect} | |
1419 | + { "Vol." volume tie.or.space.connect} | |
1420 | +% { series ", " * "Vol." volume tie.or.space.connect *} | |
1421 | + if$ | |
1422 | + "volume and number" number either.or.check | |
1423 | + } | |
1424 | + if$ | |
1425 | +} | |
1426 | + | |
1427 | +FUNCTION { format.series } | |
1428 | +{ | |
1429 | + series empty.or.unknown | |
1430 | + {""} | |
1431 | + {" {\em (" * series ")}" *} | |
1432 | + if$ | |
1433 | +} | |
1434 | + | |
1435 | +FUNCTION { format.number.series } | |
1436 | +{ | |
1437 | + volume empty.or.unknown | |
1438 | + { | |
1439 | + number empty.or.unknown | |
1440 | + { | |
1441 | + volume empty.or.unknown | |
1442 | + { "" } | |
1443 | + { | |
1444 | + series empty.or.unknown | |
1445 | + { "" } | |
1446 | + { " (" series * ")" * } | |
1447 | + if$ | |
1448 | + } | |
1449 | + if$ | |
1450 | + } % { series field.or.null } | |
1451 | + { | |
1452 | + output.state mid.sentence = | |
1453 | + { "Number" } % gnp - changed to mixed case always | |
1454 | + { "Number" } | |
1455 | + if$ | |
1456 | + number tie.or.space.connect series empty.or.unknown | |
1457 | + { "there's a number but no series in " cite$ * warning$ } | |
1458 | + { " in " * series * } | |
1459 | + if$ | |
1460 | + } | |
1461 | + if$ | |
1462 | + } | |
1463 | + { | |
1464 | + "" | |
1465 | + } | |
1466 | + if$ | |
1467 | +} | |
1468 | + | |
1469 | +FUNCTION { multi.page.check } | |
1470 | +{ | |
1471 | + 't := | |
1472 | + #0 'multiresult := | |
1473 | + { multiresult not | |
1474 | + t empty.or.unknown not | |
1475 | + and | |
1476 | + } | |
1477 | + { t #1 #1 substring$ | |
1478 | + duplicate$ "-" = | |
1479 | + swap$ duplicate$ "," = | |
1480 | + swap$ "+" = | |
1481 | + or or | |
1482 | + { #1 'multiresult := } | |
1483 | + { t #2 global.max$ substring$ 't := } | |
1484 | + if$ | |
1485 | + } | |
1486 | + while$ | |
1487 | + multiresult | |
1488 | +} | |
1489 | + | |
1490 | +FUNCTION { format.pages } | |
1491 | +{ | |
1492 | + pages empty.or.unknown | |
1493 | + { "" } | |
1494 | + { | |
1495 | + pages multi.page.check | |
1496 | + { pages n.dashify } % gnp - removed () % jtb: removed pp. | |
1497 | + { pages } | |
1498 | + if$ | |
1499 | + } | |
1500 | + if$ | |
1501 | +} | |
1502 | + | |
1503 | +FUNCTION { format.pages.check.without.articleno } | |
1504 | +{ %% format pages field only if articleno is absent | |
1505 | + %% Stack out: pages-specification | |
1506 | + numpages missing$ pages missing$ and | |
1507 | + { "page numbers missing in both pages and numpages fields in " cite$ * warning$ } | |
1508 | + { } | |
1509 | + if$ | |
1510 | + | |
1511 | + articleno empty.or.unknown | |
1512 | + { | |
1513 | + pages missing$ | |
1514 | + { numpages } | |
1515 | + { format.pages } | |
1516 | + if$ | |
1517 | + } | |
1518 | + { "" } | |
1519 | + if$ | |
1520 | +} | |
1521 | + | |
1522 | +FUNCTION { format.pages.check } | |
1523 | +{ | |
1524 | + pages empty.or.unknown | |
1525 | + { "page numbers missing in " cite$ * warning$ "" } | |
1526 | + { pages n.dashify } | |
1527 | + if$ | |
1528 | +} | |
1529 | + | |
1530 | +FUNCTION { format.bookpages } | |
1531 | +{ | |
1532 | + bookpages empty.or.unknown | |
1533 | + { "" } | |
1534 | + { bookpages "book pages" tie.or.space.connect } | |
1535 | + if$ | |
1536 | +} | |
1537 | + | |
1538 | +FUNCTION { format.named.pages } | |
1539 | +{ | |
1540 | + pages empty.or.unknown | |
1541 | + { "" } | |
1542 | + { format.pages "pages" tie.or.space.connect } | |
1543 | + if$ | |
1544 | +} | |
1545 | + | |
1546 | +% | |
1547 | +% Changed by Boris Veytsman, 2011-03-13 | |
1548 | +% Now the word "pages" is printed even if | |
1549 | +% there field pages is not empty. | |
1550 | +% | |
1551 | + | |
1552 | +FUNCTION { format.page.count } | |
1553 | +{ | |
1554 | + page.count empty.or.unknown | |
1555 | + { "" } | |
1556 | + { | |
1557 | + articleno empty.or.unknown | |
1558 | + { "numpages field, but no articleno field, in " cite$ * warning$ } | |
1559 | + { } | |
1560 | + if$ | |
1561 | + page.count "pages" tie.or.space.connect | |
1562 | + } | |
1563 | + if$ | |
1564 | +} | |
1565 | + | |
1566 | +FUNCTION { format.articleno.numpages } | |
1567 | +{ | |
1568 | + %% There are seven possible outputs, depending on which fields are set. | |
1569 | + %% | |
1570 | + %% These four are handled here: | |
1571 | + %% | |
1572 | + %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages" | |
1573 | + %% articleno, numpages -> "Article articleno-value, numpages-value pages" | |
1574 | + %% articleno, pages -> "Article articleno-value, reduced-pages-value pages" | |
1575 | + %% articleno -> "Article articleno-value" and warn about missing numpages | |
1576 | + %% | |
1577 | + %% The remaining three have already been handled by | |
1578 | + %% format.pages.check.without.articleno: | |
1579 | + %% | |
1580 | + %% numpages, pages -> "pages-value" | |
1581 | + %% numpages -> "numpages-value" | |
1582 | + %% pages -> "pages-value" | |
1583 | + | |
1584 | + articleno empty.or.unknown | |
1585 | + { | |
1586 | + numpages empty.or.unknown | |
1587 | + { } | |
1588 | + { "require articleno with numpages field in " cite$ * warning$ } | |
1589 | + if$ | |
1590 | + "" | |
1591 | + } | |
1592 | + { | |
1593 | + numpages empty.or.unknown | |
1594 | + { | |
1595 | + pages empty.or.unknown | |
1596 | + { | |
1597 | + "require pages or numpages fields with articleno field in " cite$ * warning$ | |
1598 | + "" 'page.count := | |
1599 | + } | |
1600 | + { reduce.pages.to.page.count } | |
1601 | + if$ | |
1602 | + } | |
1603 | + { numpages 'page.count := } | |
1604 | + if$ | |
1605 | + | |
1606 | + %% The Article number is now handled in format.day.month.year because | |
1607 | + %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)" | |
1608 | + %% over "Digital Libraries 12, 3 (July 2008), Article 5" | |
1609 | + %% format.articleno output | |
1610 | + format.page.count | |
1611 | + } | |
1612 | + if$ | |
1613 | +} | |
1614 | + | |
1615 | +FUNCTION { format.journal.volume.number.day.month.year } | |
1616 | +{ | |
1617 | + % By Young (and Spencer) | |
1618 | + % GNP - fixed bugs with missing volume, number, and/or pages | |
1619 | + % | |
1620 | + % Format journal, volume, number, pages for article types. | |
1621 | + % | |
1622 | + journal empty.or.unknown | |
1623 | + { "no journal in " cite$ * warning$ | |
1624 | + "" } | |
1625 | +% { journal emphasize.with.italic.correction } | |
1626 | + { | |
1627 | + journal "Journal of the ACM" = | |
1628 | + { "{\it J. ACM}" } | |
1629 | + { | |
1630 | + journal "American Mathematical Society Translations" = | |
1631 | + { "{\it Amer. Math. Soc. Transl.}" } | |
1632 | + { | |
1633 | + journal "Bulletin of the American Mathematical Society" = | |
1634 | + { "{\it Bull. Amer. Math. Soc.}" } | |
1635 | + { | |
1636 | + journal "Proceedings of the American Mathematical Society" = | |
1637 | + { "{\it Proc. Amer. Math. Soc.}" } | |
1638 | + { | |
1639 | + journal "Transactions of the American Mathematical Society" = | |
1640 | + { "{\it Trans. Amer. Math. Soc.}" } | |
1641 | + { | |
1642 | + journal "Communications of the {ACM}" = | |
1643 | + { "{\it Commun. {ACM}}" } | |
1644 | + { | |
1645 | + journal "{ACM} Computing Surveys" = | |
1646 | + { "{\it Comput. Surveys}" } | |
1647 | + { | |
1648 | + journal "{ACM} Transactions on Mathematical Software" = | |
1649 | + { "{\it {ACM} Trans. Math. Software}" } | |
1650 | + { | |
1651 | + journal "{ACM} {SIGNUM} Newsletter" = | |
1652 | + { "{\it {ACM} {SIGNUM} Newslett.}" } | |
1653 | + { | |
1654 | + journal "American Journal of Sociology" = | |
1655 | + { "{\it Amer. J. Sociology}" } | |
1656 | + { | |
1657 | + journal "Journal of the American Statistical Association" = | |
1658 | + { "{\it J. Amer. Statist. Assoc.}" } | |
1659 | + { | |
1660 | + journal "Applied Mathematics and Computation" = | |
1661 | + { "{\it Appl. Math. Comput.}" } | |
1662 | + { | |
1663 | + journal "American Mathematical Monthly" = | |
1664 | + { "{\it Amer. Math. Monthly}" } | |
1665 | + { | |
1666 | + journal "British Journal of Mathematical and Statistical Psychology" = | |
1667 | + { "{\it Brit. J. Math. Statist. Psych.}" } | |
1668 | + { | |
1669 | + journal "Canadian Mathematical Bulletin" = | |
1670 | + { "{\it Canad. Math. Bull.}" } | |
1671 | + { | |
1672 | + journal "Journal of Computational and Applied Mathematics" = | |
1673 | + { "{\it J. Comput. Appl. Math.}" } | |
1674 | + { | |
1675 | + journal "Journal of Computational Physics" = | |
1676 | + { "{\it J. Comput. Phys.}" } | |
1677 | + { | |
1678 | + journal "Computers and Structures" = | |
1679 | + { "{\it Comput. \& Structures}" } | |
1680 | + { | |
1681 | + journal "The Computer Journal" = | |
1682 | + { "{\it Comput. J.}" } | |
1683 | + { | |
1684 | + journal "Journal of Computer and System Sciences" = | |
1685 | + { "{\it J. Comput. System Sci.}" } | |
1686 | + { | |
1687 | + journal "Contemporary Mathematics" = | |
1688 | + { "{\it Contemp. Math.}" } | |
1689 | + { | |
1690 | + journal "Crelle's Journal" = | |
1691 | + { "{\it Crelle's J.}" } | |
1692 | + { | |
1693 | + journal "Giornale di Mathematiche" = | |
1694 | + { "{\it Giorn. Mat.}" } | |
1695 | + { | |
1696 | + journal "{IEEE} Transactions on Computers" = | |
1697 | + { "{\it {IEEE} Trans. Comput.}" } | |
1698 | + { | |
1699 | + journal "{IEEE} Transactions on Automatic Control" = | |
1700 | + { "{\it {IEEE} Trans. Automat. Control}" } | |
1701 | + { | |
1702 | + journal "Proceedings of the {IEEE}" = | |
1703 | + { "{\it Proc. {IEEE}}" } | |
1704 | + { | |
1705 | + journal "{IEEE} Transactions on Aerospace and Electronic Systems" = | |
1706 | + { "{\it {IEEE} Trans. Aerospace Electron. Systems}" } | |
1707 | + { | |
1708 | + journal "{IMA} Journal of Numerical Analysis" = | |
1709 | + { "{\it {IMA} J. Numer. Anal.}" } | |
1710 | + { | |
1711 | + journal "Information Processing Letters" = | |
1712 | + { "{\it Inform. Process. Lett.}" } | |
1713 | + { | |
1714 | + journal "Journal of the Institute of Mathematics and its Applications" = | |
1715 | + { "{\it J. Inst. Math. Appl.}" } | |
1716 | + { | |
1717 | + journal "International Journal of Control" = | |
1718 | + { "{\it Internat. J. Control}" } | |
1719 | + { | |
1720 | + journal "International Journal for Numerical Methods in Engineering" = | |
1721 | + { "{\it Internat. J. Numer. Methods Engrg.}" } | |
1722 | + { | |
1723 | + journal "International Journal of Supercomputing Applications" = | |
1724 | + { "{\it Internat. J. Supercomputing Applic.}" } | |
1725 | + { | |
1726 | + journal "Journal of Research of the National Bureau of Standards" = | |
1727 | + { "{\it J. Res. Nat. Bur. Standards}" } | |
1728 | + { | |
1729 | + journal "Linear Algebra and its Applications" = | |
1730 | + { "{\it Linear Algebra Appl.}" } | |
1731 | + { | |
1732 | + journal "Journal of Mathematical Analysis and Applications" = | |
1733 | + { "{\it J. Math. Anal. Appl.}" } | |
1734 | + { | |
1735 | + journal "Mathematische Annalen" = | |
1736 | + { "{\it Math. Ann.}" } | |
1737 | + { | |
1738 | + journal "Journal of Mathematical Physics" = | |
1739 | + { "{\it J. Math. Phys.}" } | |
1740 | + { | |
1741 | + journal "Mathematics of Computation" = | |
1742 | + { "{\it Math. Comp.}" } | |
1743 | + { | |
1744 | + journal "Mathematica Scandinavica" = | |
1745 | + { "{\it Math. Scand.}" } | |
1746 | + { | |
1747 | + journal "Mathematical Tables and Other Aids to Computation" = | |
1748 | + { "{\it Math. Tables Aids Comput.}" } | |
1749 | + { | |
1750 | + journal "Numerische Mathematik" = | |
1751 | + { "{\it Numer. Math.}" } | |
1752 | + { | |
1753 | + journal "Pacific Journal of Mathematics" = | |
1754 | + { "{\it Pacific J. Math.}" } | |
1755 | + { | |
1756 | + journal "Journal of Parallel and Distributed Computing" = | |
1757 | + { "{\it J. Parallel and Distrib. Comput.}" } | |
1758 | + { | |
1759 | + journal "Parallel Computing" = | |
1760 | + { "{\it Parallel Comput.}" } | |
1761 | + { | |
1762 | + journal "Philosophical Magazine" = | |
1763 | + { "{\it Philos. Mag.}" } | |
1764 | + { | |
1765 | + journal "Proceedings of the National Academy of Sciences of the USA" = | |
1766 | + { "{\it Proc. Nat. Acad. Sci. U. S. A.}" } | |
1767 | + { | |
1768 | + journal "Quarterly Journal of Mathematics, Oxford, Series (2)" = | |
1769 | + { "{\it Quart. J. Math. Oxford Ser. (2)}" } | |
1770 | + { | |
1771 | + journal "Quarterly of Applied Mathematics" = | |
1772 | + { "{\it Quart. Appl. Math.}" } | |
1773 | + { | |
1774 | + journal "Review of the International Statisical Institute" = | |
1775 | + { "{\it Rev. Inst. Internat. Statist.}" } | |
1776 | + { | |
1777 | + journal "Journal of the Society for Industrial and Applied Mathematics" = | |
1778 | + { "{\it J. Soc. Indust. Appl. Math.}" } | |
1779 | + { | |
1780 | + journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" = | |
1781 | + { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" } | |
1782 | + { | |
1783 | + journal "{SIAM} Journal on Algebraic and Discrete Methods" = | |
1784 | + { "{\it {SIAM} J. Algebraic Discrete Methods}" } | |
1785 | + { | |
1786 | + journal "{SIAM} Journal on Applied Mathematics" = | |
1787 | + { "{\it {SIAM} J. Appl. Math.}" } | |
1788 | + { | |
1789 | + journal "{SIAM} Journal on Computing" = | |
1790 | + { "{\it {SIAM} J. Comput.}" } | |
1791 | + { | |
1792 | + journal "{SIAM} Journal on Matrix Analysis and Applications" = | |
1793 | + { "{\it {SIAM} J. Matrix Anal. Appl.}" } | |
1794 | + { | |
1795 | + journal "{SIAM} Journal on Numerical Analysis" = | |
1796 | + { "{\it {SIAM} J. Numer. Anal.}" } | |
1797 | + { | |
1798 | + journal "{SIAM} Review" = | |
1799 | + { "{\it {SIAM} Rev.}" } | |
1800 | + { | |
1801 | + journal "{SIAM} Journal on Scientific and Statistical Computing" = | |
1802 | + { "{\it {SIAM} J. Sci. Statist. Comput.}" } | |
1803 | + { | |
1804 | + journal "Software Practice and Experience" = | |
1805 | + { "{\it Software Prac. Experience}" } | |
1806 | + { | |
1807 | + journal "Statistical Science" = | |
1808 | + { "{\it Statist. Sci.}" } | |
1809 | + { | |
1810 | + journal "{USSR} Computational Mathematics and Mathematical Physics" = | |
1811 | + { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" } | |
1812 | + { | |
1813 | + journal "Journal of {VLSI} and Computer Systems" = | |
1814 | + { "{\it J. {VLSI} Comput. Syst.}" } | |
1815 | + { | |
1816 | + journal "Zeitschrift fur Angewandte Mathematik und Mechanik" = | |
1817 | + { "{\it Z. Angew. Math. Mech.}" } | |
1818 | + { | |
1819 | + journal "Zeitschrift fur Angewandte Mathematik und Physik" = | |
1820 | + { "{\it Z. Angew. Math. Phys.}" } | |
1821 | + { | |
1822 | + journal "ACM Computing Surveys" = | |
1823 | + { "{\it Comput. Surveys}" } | |
1824 | + { | |
1825 | + journal "ACM Transactions on Mathematical Software" = | |
1826 | + { "{\it ACM Trans. Math. Software}" } | |
1827 | + { | |
1828 | + journal "ACM {SIGNUM} Newsletter" = | |
1829 | + { "{\it ACM {SIGNUM} Newslett.}" } | |
1830 | + { | |
1831 | + journal "IEEE Transactions on Computers" = | |
1832 | + { "{\it IEEE Trans. Comput.}" } | |
1833 | + { | |
1834 | + journal "IEEE Transactions on Automatic Control" = | |
1835 | + { "{\it IEEE Trans. Automat. Control}" } | |
1836 | + { | |
1837 | + journal "Proceedings of the IEEE" = | |
1838 | + { "{\it Proc. IEEE}" } | |
1839 | + { | |
1840 | + journal "IEEE Transactions on Aerospace and Electronic Systems" = | |
1841 | + { "{\it IEEE Trans. Aerospace Electron. Systems}" } | |
1842 | + { | |
1843 | + journal "IMA Journal of Numerical Analysis" = | |
1844 | + { "{\it IMA J. Numer. Anal.}" } | |
1845 | + { | |
1846 | + journal "SIAM Journal on Algebraic and Discrete Methods" = | |
1847 | + { "{\it SIAM J. Algebraic Discrete Methods}" } | |
1848 | + { | |
1849 | + journal "SIAM Journal on Applied Mathematics" = | |
1850 | + { "{\it SIAM J. Appl. Math.}" } | |
1851 | + { | |
1852 | + journal "SIAM Journal on Computing" = | |
1853 | + { "{\it SIAM J. Comput.}" } | |
1854 | + { | |
1855 | + journal "SIAM Journal on Matrix Analysis and Applications" = | |
1856 | + { "{\it SIAM J. Matrix Anal. Appl.}" } | |
1857 | + { | |
1858 | + journal "SIAM Journal on Numerical Analysis" = | |
1859 | + { "{\it SIAM J. Numer. Anal.}" } | |
1860 | + { | |
1861 | + journal "SIAM Review" = | |
1862 | + { "{\it SIAM Rev.}" } | |
1863 | + { | |
1864 | + journal "SIAM Journal on Scientific and Statistical Computing" = | |
1865 | + { "{\it SIAM J. Sci. Statist. Comput.}" } | |
1866 | + { | |
1867 | + journal "USSR Computational Mathematics and Mathematical Physics" = | |
1868 | + { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" } | |
1869 | + { | |
1870 | + journal "Journal of VLSI and Computer Systems" = | |
1871 | + { "{\it J. VLSI Comput. Syst.}" } | |
1872 | + { | |
1873 | + journal "Communications of the ACM" = | |
1874 | + { "{\it Commun. ACM}" } | |
1875 | + %% If no match with cases needing special handling, just output journal name | |
1876 | + { journal emphasize.with.italic.correction } | |
1877 | + if$ | |
1878 | + } | |
1879 | + if$ | |
1880 | + } | |
1881 | + if$ | |
1882 | + } | |
1883 | + if$ | |
1884 | + } | |
1885 | + if$ | |
1886 | + } | |
1887 | + if$ | |
1888 | + } | |
1889 | + if$ | |
1890 | + } | |
1891 | + if$ | |
1892 | + } | |
1893 | + if$ | |
1894 | + } | |
1895 | + if$ | |
1896 | + } | |
1897 | + if$ | |
1898 | + } | |
1899 | + if$ | |
1900 | + } | |
1901 | + if$ | |
1902 | + } | |
1903 | + if$ | |
1904 | + } | |
1905 | + if$ | |
1906 | + } | |
1907 | + if$ | |
1908 | + } | |
1909 | + if$ | |
1910 | + } | |
1911 | + if$ | |
1912 | + } | |
1913 | + if$ | |
1914 | + } | |
1915 | + if$ | |
1916 | + } | |
1917 | + if$ | |
1918 | + } | |
1919 | + if$ | |
1920 | + } | |
1921 | + if$ | |
1922 | + } | |
1923 | + if$ | |
1924 | + } | |
1925 | + if$ | |
1926 | + } | |
1927 | + if$ | |
1928 | + } | |
1929 | + if$ | |
1930 | + } | |
1931 | + if$ | |
1932 | + } | |
1933 | + if$ | |
1934 | + } | |
1935 | + if$ | |
1936 | + } | |
1937 | + if$ | |
1938 | + } | |
1939 | + if$ | |
1940 | + } | |
1941 | + if$ | |
1942 | + } | |
1943 | + if$ | |
1944 | + } | |
1945 | + if$ | |
1946 | + } | |
1947 | + if$ | |
1948 | + } | |
1949 | + if$ | |
1950 | + } | |
1951 | + if$ | |
1952 | + } | |
1953 | + if$ | |
1954 | + } | |
1955 | + if$ | |
1956 | + } | |
1957 | + if$ | |
1958 | + } | |
1959 | + if$ | |
1960 | + } | |
1961 | + if$ | |
1962 | + } | |
1963 | + if$ | |
1964 | + } | |
1965 | + if$ | |
1966 | + } | |
1967 | + if$ | |
1968 | + } | |
1969 | + if$ | |
1970 | + } | |
1971 | + if$ | |
1972 | + } | |
1973 | + if$ | |
1974 | + } | |
1975 | + if$ | |
1976 | + } | |
1977 | + if$ | |
1978 | + } | |
1979 | + if$ | |
1980 | + } | |
1981 | + if$ | |
1982 | + } | |
1983 | + if$ | |
1984 | + } | |
1985 | + if$ | |
1986 | + } | |
1987 | + if$ | |
1988 | + } | |
1989 | + if$ | |
1990 | + } | |
1991 | + if$ | |
1992 | + } | |
1993 | + if$ | |
1994 | + } | |
1995 | + if$ | |
1996 | + } | |
1997 | + if$ | |
1998 | + } | |
1999 | + if$ | |
2000 | + } | |
2001 | + if$ | |
2002 | + } | |
2003 | + if$ | |
2004 | + } | |
2005 | + if$ | |
2006 | + } | |
2007 | + if$ | |
2008 | + } | |
2009 | + if$ | |
2010 | + } | |
2011 | + if$ | |
2012 | + } | |
2013 | + if$ | |
2014 | + } | |
2015 | + if$ | |
2016 | + } | |
2017 | + if$ | |
2018 | + } | |
2019 | + if$ | |
2020 | + } | |
2021 | + if$ | |
2022 | + } | |
2023 | + if$ | |
2024 | + } | |
2025 | + if$ | |
2026 | + } | |
2027 | + if$ | |
2028 | + } | |
2029 | + if$ | |
2030 | + } | |
2031 | + if$ | |
2032 | + } | |
2033 | + if$ | |
2034 | + } | |
2035 | + if$ | |
2036 | + } | |
2037 | + if$ | |
2038 | + } | |
2039 | + if$ | |
2040 | + } | |
2041 | + if$ | |
2042 | + } | |
2043 | + if$ | |
2044 | + | |
2045 | + number empty.or.unknown | |
2046 | + { | |
2047 | + volume empty.or.unknown | |
2048 | + { "no number and no volume in " cite$ * warning$ "" * } | |
2049 | + { " " * " {" * volume * "}" * } | |
2050 | + if$ | |
2051 | + } | |
2052 | + { | |
2053 | + volume empty.or.unknown | |
2054 | + { | |
2055 | + "unusual to have number, but no volume, for " cite$ * warning$ | |
2056 | + " " * number * | |
2057 | + } | |
2058 | + { " " * volume comma " " * number * * } | |
2059 | + if$ | |
2060 | + } | |
2061 | + if$ | |
2062 | + | |
2063 | + format.day.month.year * | |
2064 | +} | |
2065 | + | |
2066 | +FUNCTION { format.chapter.pages } | |
2067 | +{ | |
2068 | + chapter empty.or.unknown | |
2069 | + 'format.pages | |
2070 | + { type empty.or.unknown | |
2071 | + { "Chapter" } % gnp - changed to mixed case | |
2072 | + { type "t" change.case$ } | |
2073 | + if$ | |
2074 | + chapter tie.or.space.connect | |
2075 | + pages empty.or.unknown | |
2076 | + {"page numbers missing in " cite$ * warning$} % gnp - added check | |
2077 | + { ", " * format.pages * } | |
2078 | + if$ | |
2079 | + } | |
2080 | + if$ | |
2081 | +} | |
2082 | + | |
2083 | +FUNCTION { format.in.emphasize.booktitle } | |
2084 | +{ % jtb: format for collections or proceedings not appearing in a journal | |
2085 | + booktitle empty.or.unknown | |
2086 | + { "" } | |
2087 | + { "In " format.emphasize.booktitle * } | |
2088 | + if$ | |
2089 | +} | |
2090 | + | |
2091 | +FUNCTION { format.in.booktitle } | |
2092 | +{ % jtb: format for proceedings appearing in a journal | |
2093 | + booktitle empty.or.unknown | |
2094 | + { "" } | |
2095 | + { "In " booktitle * } | |
2096 | + if$ | |
2097 | +} | |
2098 | + | |
2099 | +FUNCTION { format.in.ed.booktitle } | |
2100 | +{ | |
2101 | + booktitle empty.or.unknown | |
2102 | + { "" } | |
2103 | + { editor empty.or.unknown | |
2104 | + { "In " format.emphasize.booktitle * } | |
2105 | + % jtb: swapped editor location | |
2106 | + { "In " format.emphasize.booktitle * ", " * format.editors.fml * } | |
2107 | + if$ | |
2108 | + } | |
2109 | + if$ | |
2110 | +} | |
2111 | + | |
2112 | +FUNCTION { format.thesis.type } | |
2113 | +{ % call with default type on stack top | |
2114 | + type empty.or.unknown | |
2115 | + 'skip$ % use default type | |
2116 | + { | |
2117 | + pop$ % discard default type | |
2118 | + % NO: it is silly to have to brace protect every degree type!: type "t" change.case$ | |
2119 | + type | |
2120 | + } | |
2121 | + if$ | |
2122 | +} | |
2123 | + | |
2124 | +FUNCTION { format.tr.number } | |
2125 | +{ | |
2126 | + type empty.or.unknown | |
2127 | +% { "Tech. Rep." } | |
2128 | + { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28) | |
2129 | + 'type | |
2130 | + if$ | |
2131 | + number empty.or.unknown | |
2132 | + { "t" change.case$ } | |
2133 | + %% LOOKS BAD: { "." * number tie.or.space.connect } | |
2134 | + %% Prefer "Research report RJ687." to "Research report. RJ687." | |
2135 | + { number tie.or.space.connect } | |
2136 | + if$ | |
2137 | +} | |
2138 | + | |
2139 | +FUNCTION { format.advisor } | |
2140 | +{ | |
2141 | + advisor empty.or.unknown | |
2142 | + { "" } | |
2143 | + { "Advisor(s) " advisor * } | |
2144 | + if$ | |
2145 | +} | |
2146 | + | |
2147 | +FUNCTION { format.article.crossref } | |
2148 | +{ "See" | |
2149 | + "\citeN{" * crossref * "}" * | |
2150 | +} | |
2151 | + | |
2152 | +FUNCTION { format.crossref.editor } | |
2153 | +{ | |
2154 | + editor #1 "{vv~}{ll}" format.name$ | |
2155 | + editor num.names$ duplicate$ | |
2156 | + #2 > | |
2157 | + { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems | |
2158 | + { #2 < | |
2159 | + 'skip$ | |
2160 | + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
2161 | + { " et~al\mbox{.}" * } % jrh: avoid spacing problems | |
2162 | + { " and " * editor #2 "{vv~}{ll}" format.name$ * } | |
2163 | + if$ | |
2164 | + } | |
2165 | + if$ | |
2166 | + } | |
2167 | + if$ | |
2168 | +} | |
2169 | + | |
2170 | +FUNCTION { format.book.crossref } | |
2171 | +{ | |
2172 | + volume empty.or.unknown | |
2173 | + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | |
2174 | + "In " | |
2175 | + } | |
2176 | + { "Volume" volume tie.or.space.connect % gnp - changed to mixed case | |
2177 | + " of " * | |
2178 | + } | |
2179 | + if$ | |
2180 | + editor empty.or.unknown | |
2181 | + editor field.or.null author field.or.null = | |
2182 | + or | |
2183 | + { key empty.or.unknown | |
2184 | + { series empty.or.unknown | |
2185 | + { "need editor, key, or series for " cite$ * " to crossref " * | |
2186 | + crossref * warning$ | |
2187 | + "" * | |
2188 | + } | |
2189 | + { "{\em " * series * "\/}" * } | |
2190 | + if$ | |
2191 | + } | |
2192 | + { key * } | |
2193 | + if$ | |
2194 | + } | |
2195 | + { format.crossref.editor * } | |
2196 | + if$ | |
2197 | + " \citeN{" * crossref * "}" * | |
2198 | +} | |
2199 | + | |
2200 | +FUNCTION { format.incoll.inproc.crossref } | |
2201 | +{ "See" | |
2202 | + " \citeN{" * crossref * "}" * | |
2203 | +} | |
2204 | + | |
2205 | +FUNCTION { format.lab.names } | |
2206 | +{ | |
2207 | + % format.lab.names: | |
2208 | + % | |
2209 | + % determines "short" names for the abbreviated author information. | |
2210 | + % "Long" labels are created in calc.label, using the routine my.full.label | |
2211 | + % to format author and editor fields. | |
2212 | + % | |
2213 | + % There are 4 cases for labels. (n=3 in the example) | |
2214 | + % a) one author Foo | |
2215 | + % b) one to n Foo, Bar and Baz | |
2216 | + % c) use of "and others" Foo, Bar et al. | |
2217 | + % d) more than n Foo et al. | |
2218 | + | |
2219 | + 's := | |
2220 | + s num.names$ 'numnames := | |
2221 | + numnames #2 > % change number to number of others allowed before | |
2222 | + % forcing "et al". | |
2223 | + { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added | |
2224 | + { | |
2225 | + numnames #1 - 'namesleft := | |
2226 | + #2 'nameptr := | |
2227 | + s #1 "{vv~}{ll}" format.name$ | |
2228 | + { namesleft #0 > } | |
2229 | + { nameptr numnames = | |
2230 | + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
2231 | + { " et~al\mbox{.}" * } % jrh: avoid spacing problems | |
2232 | + { " and " * s nameptr "{vv~}{ll}" format.name$ * } | |
2233 | + if$ | |
2234 | + } | |
2235 | + { ", " * s nameptr "{vv~}{ll}" format.name$ * } | |
2236 | + if$ | |
2237 | + nameptr #1 + 'nameptr := | |
2238 | + namesleft #1 - 'namesleft := | |
2239 | + } | |
2240 | + while$ | |
2241 | + } | |
2242 | + if$ | |
2243 | +} | |
2244 | + | |
2245 | +FUNCTION { author.key.label } | |
2246 | +{ | |
2247 | + author empty.or.unknown | |
2248 | + { key empty.or.unknown | |
2249 | + { "no key, author in " cite$ * warning$ | |
2250 | + cite$ #1 #3 substring$ } | |
2251 | + 'key | |
2252 | + if$ | |
2253 | + } | |
2254 | + { author format.lab.names } | |
2255 | + if$ | |
2256 | +} | |
2257 | + | |
2258 | +FUNCTION { author.key.organization.label } | |
2259 | +{ % added - gnp. Provide label formatting by organization if author is null. | |
2260 | + author empty.or.unknown | |
2261 | + { organization empty.or.unknown | |
2262 | + { key empty.or.unknown | |
2263 | + { "no key, author or organization in " cite$ * warning$ | |
2264 | + cite$ #1 #3 substring$ } | |
2265 | + 'key | |
2266 | + if$ | |
2267 | + } | |
2268 | + { organization } | |
2269 | + if$ | |
2270 | + } | |
2271 | + { author format.lab.names } | |
2272 | + if$ | |
2273 | +} | |
2274 | + | |
2275 | +FUNCTION { editor.key.organization.label } | |
2276 | +{ % added - gnp. Provide label formatting by organization if editor is null. | |
2277 | + editor empty.or.unknown | |
2278 | + { organization empty.or.unknown | |
2279 | + { key empty.or.unknown | |
2280 | + { "no key, editor or organization in " cite$ * warning$ | |
2281 | + cite$ #1 #3 substring$ } | |
2282 | + 'key | |
2283 | + if$ | |
2284 | + } | |
2285 | + { organization } | |
2286 | + if$ | |
2287 | + } | |
2288 | + { editor format.lab.names } | |
2289 | + if$ | |
2290 | +} | |
2291 | + | |
2292 | +FUNCTION { author.editor.key.label } | |
2293 | +{ | |
2294 | + author empty.or.unknown | |
2295 | + { editor empty.or.unknown | |
2296 | + { key empty.or.unknown | |
2297 | + { "no key, author, or editor in " cite$ * warning$ | |
2298 | + cite$ #1 #3 substring$ } | |
2299 | + 'key | |
2300 | + if$ | |
2301 | + } | |
2302 | + { editor format.lab.names } | |
2303 | + if$ | |
2304 | + } | |
2305 | + { author format.lab.names } | |
2306 | + if$ | |
2307 | +} | |
2308 | + | |
2309 | +FUNCTION { calc.label } | |
2310 | +{ | |
2311 | + % Changed - GNP. See also author.organization.sort, editor.organization.sort | |
2312 | + % Form label for BibTeX entry. The classification of which fields are used | |
2313 | + % for which type of entry (book, inbook, etc.) are taken from alpha.bst. | |
2314 | + % The change here from newapa is to also include organization as a | |
2315 | + % citation label if author or editor is missing. | |
2316 | + | |
2317 | + type$ "book" = | |
2318 | + type$ "inbook" = | |
2319 | + or | |
2320 | + type$ "periodical" = | |
2321 | + or | |
2322 | + 'author.editor.key.label | |
2323 | + { type$ "proceedings" = | |
2324 | + 'editor.key.organization.label | |
2325 | + { type$ "manual" = | |
2326 | + 'author.key.organization.label | |
2327 | + 'author.key.label | |
2328 | + if$ | |
2329 | + } | |
2330 | + if$ | |
2331 | + } | |
2332 | + if$ | |
2333 | + | |
2334 | + author empty.or.unknown % generate the full label citation information. | |
2335 | + { | |
2336 | + editor empty.or.unknown | |
2337 | + { | |
2338 | + organization empty.or.unknown | |
2339 | + { | |
2340 | + key empty.or.unknown | |
2341 | + { | |
2342 | + "no author, editor, organization, or key in " cite$ * warning$ | |
2343 | + "??" | |
2344 | + } | |
2345 | + { key } | |
2346 | + if$ | |
2347 | + } | |
2348 | + { organization } | |
2349 | + if$ | |
2350 | + } | |
2351 | + { editor my.full.label } | |
2352 | + if$ | |
2353 | + } | |
2354 | + { author my.full.label } | |
2355 | + if$ | |
2356 | + | |
2357 | + % leave label on the stack, to be popped when required. | |
2358 | + | |
2359 | + "}{" * swap$ * "}{" * | |
2360 | + % year field.or.null purify$ #-1 #4 substring$ * | |
2361 | + % | |
2362 | + % save the year for sort processing afterwards (adding a, b, c, etc.) | |
2363 | + % | |
2364 | + year field.or.null purify$ #-1 #4 substring$ | |
2365 | + 'label.year := | |
2366 | +} | |
2367 | + | |
2368 | +% | |
2369 | +% Change by Gerry: use number-like citations for transactions | |
2370 | +% 2011/03/23 | |
2371 | +% Reverting: Ayman | |
2372 | +FUNCTION {output.bibitem} | |
2373 | +{ newline$ | |
2374 | + "\bibitem{" write$ | |
2375 | + cite$ write$ | |
2376 | + "}" write$ | |
2377 | + newline$ | |
2378 | + "" | |
2379 | + before.all 'output.state := | |
2380 | +} | |
2381 | + | |
2382 | +% FUNCTION { output.bibitem } | |
2383 | +% { | |
2384 | +% newline$ | |
2385 | +% "\bibitem[\protect\citeauthoryear{" write$ | |
2386 | +% calc.label write$ | |
2387 | +% sort.year write$ | |
2388 | +% "}]%" writeln | |
2389 | +% " {" write$ | |
2390 | +% cite$ write$ | |
2391 | +% "}" writeln | |
2392 | +% "" | |
2393 | +% before.all 'output.state := | |
2394 | +% } | |
2395 | + | |
2396 | + | |
2397 | +FUNCTION { output.issue.doi.coden.isxn.lccn.url } | |
2398 | +{ % enter and return with stack empty | |
2399 | + %% We switch now from buffered output to output of complete lines, so | |
2400 | + %% that the Issue .. URL data have their own lines, and are less likely | |
2401 | + %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps | |
2402 | + %% lines longer than 79 characters, backtracking to what it thinks is | |
2403 | + %% a break point in the string. Any such wrapping MUST be undone to | |
2404 | + %% prevent percent-newline from appearing in DOIs and URLs. The | |
2405 | + %% output data are intentionally wrapped in \showxxx{} macros at | |
2406 | + %% beginning of line, and that supply their own punctuation (if they | |
2407 | + %% are not defined to suppress output entirely), to make it easier for | |
2408 | + %% other software to recover them from .bbl files. | |
2409 | + %% | |
2410 | + %% It also makes it possible to later change the macro definitions | |
2411 | + %% to suppress particular output values, or alter their appearance. | |
2412 | + %% | |
2413 | + %% Note that it is possible for theses, technical reports, and | |
2414 | + %% manuals to have ISBNs, and anything that has an ISBN may also | |
2415 | + %% have an ISSN. When there are no values for these keys, there | |
2416 | + %% is no output generated for them here. | |
2417 | + | |
2418 | + "\newblock" writeln | |
2419 | + after.block 'output.state := | |
2420 | + | |
2421 | + output.issue | |
2422 | + output.isbn | |
2423 | + output.coden % CODEN is functionally like ISSN, so output them sequentially | |
2424 | + output.issn | |
2425 | + output.lccn | |
2426 | + output.doi % DOI is ALWAYS last according to CrossRef DOI documentation | |
2427 | + output.url % but ACM wants URL last | |
2428 | +} | |
2429 | + | |
2430 | +FUNCTION { output.issue.doi.coden.isxn.lccn.url.note } | |
2431 | +{ % enter with stack empty, return with empty string on stack | |
2432 | + output.issue.doi.coden.isxn.lccn.url | |
2433 | + note empty.or.unknown | |
2434 | + { } | |
2435 | + { | |
2436 | + "\newblock" writeln | |
2437 | + output.note | |
2438 | + } | |
2439 | + if$ | |
2440 | + "" | |
2441 | +} | |
2442 | + | |
2443 | +FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check } | |
2444 | +{ % enter with stack empty, return with empty string on stack | |
2445 | + output.issue.doi.coden.isxn.lccn.url | |
2446 | + note empty.or.unknown | |
2447 | + { } | |
2448 | + { | |
2449 | + "\newblock" writeln | |
2450 | + output.note.check | |
2451 | + } | |
2452 | + if$ | |
2453 | + "" | |
2454 | +} | |
2455 | + | |
2456 | +FUNCTION { article } | |
2457 | +{ | |
2458 | + output.bibitem | |
2459 | + | |
2460 | + author empty.or.unknown | |
2461 | + { | |
2462 | + editor empty.or.unknown | |
2463 | + { "neither author and editor supplied for " cite$ * warning$ } | |
2464 | + { format.editors "editor" output.check } | |
2465 | + if$ | |
2466 | + } | |
2467 | + { format.authors "author" output.check } | |
2468 | + if$ | |
2469 | + | |
2470 | + author format.no.key output % added | |
2471 | + output.year.check % added | |
2472 | + new.block | |
2473 | + format.articletitle "title" output.check | |
2474 | + new.block | |
2475 | + howpublished output | |
2476 | + | |
2477 | + crossref missing$ | |
2478 | + { format.journal.volume.number.day.month.year } | |
2479 | + { | |
2480 | + "cross reference in @Article{...} is unusual" warning$ | |
2481 | + format.article.crossref output.nonnull | |
2482 | + } | |
2483 | + if$ | |
2484 | + output | |
2485 | + | |
2486 | + format.pages.check.without.articleno output | |
2487 | + format.articleno.numpages output | |
2488 | + fin.block | |
2489 | + output.issue.doi.coden.isxn.lccn.url.note | |
2490 | + fin.entry | |
2491 | +} | |
2492 | + | |
2493 | +FUNCTION { book } | |
2494 | +{ | |
2495 | + output.bibitem | |
2496 | + author empty.or.unknown | |
2497 | + { format.editors "author and editor" output.check } | |
2498 | + { format.authors output.nonnull | |
2499 | + crossref missing$ | |
2500 | + { "author and editor" editor either.or.check } | |
2501 | + 'skip$ | |
2502 | + if$ | |
2503 | + } | |
2504 | + if$ | |
2505 | + output.year.check % added | |
2506 | + new.block | |
2507 | + format.btitle "title" output.check | |
2508 | + crossref missing$ | |
2509 | + { new.sentence % jtb: start a new sentence for series/volume | |
2510 | + format.bvolume output | |
2511 | + new.block | |
2512 | + format.number.series output | |
2513 | + new.sentence | |
2514 | + publisher "publisher" output.check | |
2515 | + address "address" output.check % jtb: require address | |
2516 | + fin.sentence | |
2517 | + pages empty.or.unknown | |
2518 | + { format.bookpages } % use bookpages when pages empty | |
2519 | + { format.pages.check "pages" tie.or.space.connect } | |
2520 | + if$ | |
2521 | + output | |
2522 | + } | |
2523 | + { new.block | |
2524 | + format.book.crossref output.nonnull | |
2525 | + } | |
2526 | + if$ | |
2527 | + fin.block | |
2528 | + output.issue.doi.coden.isxn.lccn.url.note | |
2529 | + fin.entry | |
2530 | +} | |
2531 | + | |
2532 | +FUNCTION { booklet } | |
2533 | +{ | |
2534 | + output.bibitem | |
2535 | + format.authors output | |
2536 | + author format.key output % added | |
2537 | + output.year.check % added | |
2538 | + new.block | |
2539 | + format.title "title" output.check | |
2540 | + new.block | |
2541 | + howpublished output | |
2542 | + address output | |
2543 | + fin.block | |
2544 | + output.issue.doi.coden.isxn.lccn.url.note | |
2545 | + fin.entry | |
2546 | +} | |
2547 | + | |
2548 | +FUNCTION { inbook } | |
2549 | +{ | |
2550 | + output.bibitem | |
2551 | + author empty.or.unknown | |
2552 | + { format.editors | |
2553 | + "author and editor" output.check | |
2554 | + } | |
2555 | + { format.authors output.nonnull | |
2556 | + crossref missing$ | |
2557 | + { "author and editor" editor either.or.check } | |
2558 | + 'skip$ | |
2559 | + if$ | |
2560 | + } | |
2561 | + if$ | |
2562 | + output.year.check % added | |
2563 | + new.block | |
2564 | + format.btitle "title" output.check | |
2565 | + crossref missing$ | |
2566 | + { new.sentence % jtb: start a new sentence for series/volume | |
2567 | + format.bvolume output | |
2568 | + new.block | |
2569 | + format.number.series output | |
2570 | + new.sentence | |
2571 | + publisher "publisher" output.check | |
2572 | + address "address" output.check % jtb: require address | |
2573 | + format.bookpages output | |
2574 | + format.chapter.pages | |
2575 | + "chapter and pages" output.check % jtb: moved from before publisher | |
2576 | + } | |
2577 | + { | |
2578 | + format.bookpages output | |
2579 | + format.chapter.pages "chapter and pages" output.check | |
2580 | + new.block | |
2581 | + format.book.crossref output.nonnull | |
2582 | + } | |
2583 | + if$ | |
2584 | + fin.block | |
2585 | + output.issue.doi.coden.isxn.lccn.url.note | |
2586 | + fin.entry | |
2587 | +} | |
2588 | + | |
2589 | +FUNCTION { incollection } | |
2590 | +{ | |
2591 | + output.bibitem | |
2592 | + format.authors "author" output.check | |
2593 | + author format.key output % added | |
2594 | + output.year.check % added | |
2595 | + new.block | |
2596 | + format.articletitle "title" output.check | |
2597 | + new.block | |
2598 | + crossref missing$ | |
2599 | + { format.in.ed.booktitle "booktitle" output.check | |
2600 | + new.sentence % jtb: start a new sentence for series/volume | |
2601 | + format.bvolume output | |
2602 | + format.number.series output | |
2603 | + new.sentence | |
2604 | + publisher "publisher" output.check | |
2605 | + address "address" output.check % jtb: require address | |
2606 | + format.bookpages output | |
2607 | + format.chapter.pages output % gnp - was special.output.nonnull | |
2608 | + % left out comma before page numbers | |
2609 | + % jtb: moved from before publisher | |
2610 | + } | |
2611 | + { | |
2612 | + format.incoll.inproc.crossref output.nonnull | |
2613 | + format.chapter.pages output | |
2614 | + } | |
2615 | + if$ | |
2616 | + fin.block | |
2617 | + output.issue.doi.coden.isxn.lccn.url.note | |
2618 | + fin.entry | |
2619 | +} | |
2620 | + | |
2621 | +FUNCTION { inproceedings } | |
2622 | +{ | |
2623 | + output.bibitem | |
2624 | + format.authors "author" output.check | |
2625 | + author format.key output % added | |
2626 | + output.year.check % added | |
2627 | + new.block | |
2628 | + format.articletitle "title" output.check | |
2629 | + howpublished output.dot.space | |
2630 | + crossref missing$ | |
2631 | + { | |
2632 | + journal missing$ % jtb: proceedings appearing in journals | |
2633 | + { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space | |
2634 | + format.series output.removenospace | |
2635 | + format.editors.fml output % BV 2011/09/27 Moved dot to comma | |
2636 | + format.bvolume.noseries output | |
2637 | + new.sentence | |
2638 | + organization output | |
2639 | + publisher "publisher" output.check % jtb: require publisher (?) | |
2640 | + address "address" output.check % jtb: require address | |
2641 | + format.bookpages output | |
2642 | + } | |
2643 | + { | |
2644 | + format.in.booktitle format.city "booktitle" output.check | |
2645 | + format.editors.fml output | |
2646 | + new.sentence | |
2647 | + format.journal.volume.number.day.month.year output | |
2648 | + } | |
2649 | + if$ | |
2650 | + format.articleno output | |
2651 | + format.pages.check.without.articleno output | |
2652 | + } | |
2653 | + { | |
2654 | + format.incoll.inproc.crossref output.nonnull | |
2655 | + format.articleno output | |
2656 | + format.pages.check.without.articleno output | |
2657 | + } | |
2658 | + if$ | |
2659 | + format.articleno.numpages output | |
2660 | + fin.block | |
2661 | + output.issue.doi.coden.isxn.lccn.url.note | |
2662 | + fin.entry | |
2663 | +} | |
2664 | + | |
2665 | +FUNCTION { conference } { inproceedings } | |
2666 | + | |
2667 | +FUNCTION { manual } | |
2668 | +{ | |
2669 | + output.bibitem | |
2670 | + author empty.or.unknown | |
2671 | + { editor empty.or.unknown | |
2672 | + { organization "organization" output.check | |
2673 | + organization format.key output } % if all else fails, use key | |
2674 | + { format.editors "author and editor" output.check } | |
2675 | + if$ | |
2676 | + } | |
2677 | + { format.authors output.nonnull } | |
2678 | + if$ | |
2679 | + output.year.check % added | |
2680 | + new.block | |
2681 | + format.btitle "title" output.check | |
2682 | + organization address new.block.checkb | |
2683 | + % jtb: back to normal style: organization, address | |
2684 | + organization "organization" output.check | |
2685 | + address output | |
2686 | + fin.block | |
2687 | + output.issue.doi.coden.isxn.lccn.url.note | |
2688 | + fin.entry | |
2689 | +} | |
2690 | + | |
2691 | +FUNCTION { mastersthesis } | |
2692 | +{ | |
2693 | + output.bibitem | |
2694 | + format.authors "author" output.check | |
2695 | + author format.key output % added | |
2696 | + output.year.check % added | |
2697 | + new.block | |
2698 | + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title | |
2699 | + new.block | |
2700 | + "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27 | |
2701 | + school "school" output.check | |
2702 | + address output | |
2703 | + new.block | |
2704 | + format.advisor output | |
2705 | + fin.block | |
2706 | + output.issue.doi.coden.isxn.lccn.url.note | |
2707 | + fin.entry | |
2708 | +} | |
2709 | + | |
2710 | +FUNCTION { misc } | |
2711 | +{ | |
2712 | + output.bibitem | |
2713 | + format.authors output | |
2714 | + author format.key output % added | |
2715 | + output.year.check % added | |
2716 | + title howpublished new.block.checkb | |
2717 | + format.title output | |
2718 | + new.block | |
2719 | + howpublished output | |
2720 | + "" output.nonnull.dot.space | |
2721 | + output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28 | |
2722 | + fin.block | |
2723 | + output.issue.doi.coden.isxn.lccn.url.note | |
2724 | + fin.entry | |
2725 | +} | |
2726 | + | |
2727 | +FUNCTION { phdthesis } | |
2728 | +{ | |
2729 | + output.bibitem | |
2730 | + format.authors "author" output.check | |
2731 | + author format.key output % added | |
2732 | + output.year.check % added | |
2733 | + new.block | |
2734 | + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title | |
2735 | + new.block | |
2736 | + "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27 | |
2737 | + school "school" output.check | |
2738 | + address output | |
2739 | + new.block | |
2740 | + format.advisor output | |
2741 | + fin.block | |
2742 | + output.issue.doi.coden.isxn.lccn.url.note | |
2743 | + fin.entry | |
2744 | +} | |
2745 | + | |
2746 | +FUNCTION {format.date} | |
2747 | +{ year empty.or.unknown | |
2748 | + { month empty.or.unknown | |
2749 | + { | |
2750 | + "" % output empty date if year/month both empty | |
2751 | + day empty.or.unknown | |
2752 | + { } | |
2753 | + { "there's a day but no month or year in " cite$ * warning$ } | |
2754 | + if$ | |
2755 | + } | |
2756 | + { "there's a month but no year in " cite$ * warning$ | |
2757 | + month | |
2758 | + day empty.or.unknown | |
2759 | + { } | |
2760 | + { " " * day * } | |
2761 | + if$ | |
2762 | + } | |
2763 | + if$ | |
2764 | + } | |
2765 | + { month empty.or.unknown | |
2766 | + { | |
2767 | + year % output only year if month empty | |
2768 | + day empty.or.unknown | |
2769 | + { } | |
2770 | + { "there's a day and year but no month in " cite$ * warning$ } | |
2771 | + if$ | |
2772 | + } | |
2773 | + { | |
2774 | + month " " * | |
2775 | + day empty.or.unknown | |
2776 | + { } | |
2777 | + { day * ", " * } | |
2778 | + if$ | |
2779 | + year * | |
2780 | + } | |
2781 | + if$ | |
2782 | + } | |
2783 | + if$ | |
2784 | +} | |
2785 | + | |
2786 | +FUNCTION {new.block.checka} | |
2787 | +{ | |
2788 | + empty.or.unknown | |
2789 | + 'skip$ | |
2790 | + 'new.block | |
2791 | + if$ | |
2792 | +} | |
2793 | + | |
2794 | +FUNCTION { periodical } | |
2795 | +{ | |
2796 | + output.bibitem | |
2797 | + editor empty.or.unknown | |
2798 | + { organization output } | |
2799 | + { format.editors output.nonnull } | |
2800 | + if$ | |
2801 | + new.block | |
2802 | + title emphasize "title" output.check | |
2803 | + format.date output | |
2804 | + new.sentence | |
2805 | + publisher output | |
2806 | + address output | |
2807 | + howpublished new.block.checka | |
2808 | + howpublished output | |
2809 | + fin.block | |
2810 | + output.issue.doi.coden.isxn.lccn.url.note | |
2811 | + fin.entry | |
2812 | +} | |
2813 | + | |
2814 | +FUNCTION { proceedings } | |
2815 | +{ | |
2816 | + output.bibitem | |
2817 | + editor empty.or.unknown | |
2818 | + { organization output | |
2819 | + organization format.key output } % gnp - changed from author format.key | |
2820 | + { format.editors output.nonnull } | |
2821 | + if$ | |
2822 | + % author format.key output % gnp - removed (should be either | |
2823 | + % editor or organization | |
2824 | + output.year.check % added (newapa) | |
2825 | + new.block | |
2826 | + format.btitle format.city "title" output.check % jtb: added city | |
2827 | + new.sentence | |
2828 | + format.bvolume output | |
2829 | + format.number.series output | |
2830 | + new.sentence | |
2831 | + organization output | |
2832 | + % jtb: normal order: publisher, address | |
2833 | + publisher output | |
2834 | + address output | |
2835 | + fin.block | |
2836 | + output.issue.doi.coden.isxn.lccn.url.note | |
2837 | + fin.entry | |
2838 | +} | |
2839 | + | |
2840 | +FUNCTION { techreport } | |
2841 | +{ | |
2842 | + output.bibitem | |
2843 | + format.authors "author" output.check | |
2844 | + author format.key output % added | |
2845 | + output.year.check % added | |
2846 | + new.block | |
2847 | + format.btitle "title" output.check | |
2848 | + new.block | |
2849 | +% format.tr.number output % jtb: moved month ... | |
2850 | + format.tr.number output new.sentence % Gerry - need dot 2011/09/28 | |
2851 | + institution "institution" output.check | |
2852 | + address output | |
2853 | + new.sentence | |
2854 | + format.named.pages output | |
2855 | + % ACM omits year at end in transactions style | |
2856 | + % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens) | |
2857 | + fin.block | |
2858 | + output.issue.doi.coden.isxn.lccn.url.note | |
2859 | + fin.entry | |
2860 | +} | |
2861 | + | |
2862 | +FUNCTION { unpublished } | |
2863 | +{ | |
2864 | + output.bibitem | |
2865 | + format.authors | |
2866 | + "author" output.check | |
2867 | + author format.key output % added | |
2868 | + output.year.check % added | |
2869 | + new.block | |
2870 | + format.title "title" output.check | |
2871 | + fin.sentence | |
2872 | + output.day.month.year % UTAH | |
2873 | + fin.block | |
2874 | + output.issue.doi.coden.isxn.lccn.url.note.check | |
2875 | + fin.entry | |
2876 | +} | |
2877 | + | |
2878 | +FUNCTION { default.type } { misc } | |
2879 | + | |
2880 | +%%% ACM journal-style month definitions: full name if 1--5 letters, else | |
2881 | +%%% abbreviation of 3 or 4 characters and a dot | |
2882 | + | |
2883 | +MACRO {jan} {"Jan."} | |
2884 | + | |
2885 | +MACRO {feb} {"Feb."} | |
2886 | + | |
2887 | +MACRO {mar} {"March"} | |
2888 | + | |
2889 | +MACRO {apr} {"April"} | |
2890 | + | |
2891 | +MACRO {may} {"May"} | |
2892 | + | |
2893 | +MACRO {jun} {"June"} | |
2894 | + | |
2895 | +MACRO {jul} {"July"} | |
2896 | + | |
2897 | +MACRO {aug} {"Aug."} | |
2898 | + | |
2899 | +MACRO {sep} {"Sept."} | |
2900 | + | |
2901 | +MACRO {oct} {"Oct."} | |
2902 | + | |
2903 | +MACRO {nov} {"Nov."} | |
2904 | + | |
2905 | +MACRO {dec} {"Dec."} | |
2906 | + | |
2907 | + | |
2908 | +%%% ==================================================================== | |
2909 | +%%% I M P O R T A N T C H A N G E | |
2910 | +%%% | |
2911 | +%%% For the 2009 release of the official acm-*.bst files, there are to | |
2912 | +%%% be NO predefined journal abbreviations in those style files. | |
2913 | +%%% | |
2914 | +%%% ACM may later develop an official list of mappings of full journal | |
2915 | +%%% names of commonly-cited journals to ACM-preferred abbreviations, but | |
2916 | +%%% authors should consider that use of any of these commented-out | |
2917 | +%%% abbreviations is DEPRECATED unless the BibTeX file itself provides | |
2918 | +%%% its own @String{name = "value"} definitions. | |
2919 | +%%% | |
2920 | +%%% Use of journal (and publisher and address) @String{...} | |
2921 | +%%% abbreviations, as opposed to explicit value assignments such as | |
2922 | +%%% journal = "J. ACM" and publisher = "IEEE", is preferred in | |
2923 | +%%% bibliographic databases, because it makes it easier for journal | |
2924 | +%%% production staff to replace those definitions by publisher-preferred | |
2925 | +%%% abbreviations when articles are typeset for publication. | |
2926 | +%%% | |
2927 | +%%% For historical reasons, and because some of these abbreviations are | |
2928 | +%%% used in other (non-ACM) bibliography style files, they are preserved | |
2929 | +%%% here in comments. Future releases of the acm*-.bst files are likely | |
2930 | +%%% to remove them entirely. | |
2931 | +%%% ==================================================================== | |
2932 | +%%% | |
2933 | +%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX | |
2934 | +%%% DEPRECATED: | |
2935 | +%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."} | |
2936 | +%%% DEPRECATED: | |
2937 | +%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX | |
2938 | +%%% DEPRECATED: | |
2939 | +%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"} | |
2940 | +%%% DEPRECATED: | |
2941 | +%%% DEPRECATED: MACRO {al} {"Ada Lett."} | |
2942 | +%%% DEPRECATED: | |
2943 | +%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."} | |
2944 | +%%% DEPRECATED: | |
2945 | +%%% DEPRECATED: MACRO {bit} {"Bit"} | |
2946 | +%%% DEPRECATED: | |
2947 | +%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX | |
2948 | +%%% DEPRECATED: | |
2949 | +%%% DEPRECATED: MACRO {cj} {"Comput. J."} | |
2950 | +%%% DEPRECATED: | |
2951 | +%%% DEPRECATED: MACRO {cn} {"Comput. Netw."} | |
2952 | +%%% DEPRECATED: | |
2953 | +%%% DEPRECATED: MACRO {cl} {"Comput. Lang."} | |
2954 | +%%% DEPRECATED: | |
2955 | +%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX | |
2956 | +%%% DEPRECATED: | |
2957 | +%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX | |
2958 | +%%% DEPRECATED: | |
2959 | +%%% DEPRECATED: MACRO {ict} {"Inf. Contr."} | |
2960 | +%%% DEPRECATED: | |
2961 | +%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."} | |
2962 | +%%% DEPRECATED: | |
2963 | +%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."} | |
2964 | +%%% DEPRECATED: | |
2965 | +%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX | |
2966 | +%%% DEPRECATED: | |
2967 | +%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX | |
2968 | +%%% DEPRECATED: | |
2969 | +%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX | |
2970 | +%%% DEPRECATED: | |
2971 | +%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."} | |
2972 | +%%% DEPRECATED: | |
2973 | +%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"} | |
2974 | +%%% DEPRECATED: | |
2975 | +%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX | |
2976 | +%%% DEPRECATED: | |
2977 | +%%% DEPRECATED: MACRO {icp} {"Inf. Comput."} | |
2978 | +%%% DEPRECATED: | |
2979 | +%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."} | |
2980 | +%%% DEPRECATED: | |
2981 | +%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."} | |
2982 | +%%% DEPRECATED: | |
2983 | +%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."} | |
2984 | +%%% DEPRECATED: | |
2985 | +%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX | |
2986 | +%%% DEPRECATED: | |
2987 | +%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX | |
2988 | +%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX | |
2989 | +%%% DEPRECATED: | |
2990 | +%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."} | |
2991 | +%%% DEPRECATED: | |
2992 | +%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."} | |
2993 | +%%% DEPRECATED: | |
2994 | +%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."} | |
2995 | +%%% DEPRECATED: | |
2996 | +%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."} | |
2997 | +%%% DEPRECATED: | |
2998 | +%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."} | |
2999 | +%%% DEPRECATED: | |
3000 | +%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."} | |
3001 | +%%% DEPRECATED: | |
3002 | +%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."} | |
3003 | +%%% DEPRECATED: | |
3004 | +%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."} | |
3005 | +%%% DEPRECATED: | |
3006 | +%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."} | |
3007 | +%%% DEPRECATED: | |
3008 | +%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."} | |
3009 | +%%% DEPRECATED: | |
3010 | +%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."} | |
3011 | +%%% DEPRECATED: | |
3012 | +%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX | |
3013 | +%%% DEPRECATED: | |
3014 | +%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX | |
3015 | +%%% DEPRECATED: | |
3016 | +%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."} | |
3017 | +%%% DEPRECATED: | |
3018 | +%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX | |
3019 | +%%% DEPRECATED: | |
3020 | +%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX | |
3021 | +%%% DEPRECATED: | |
3022 | +%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX | |
3023 | +%%% DEPRECATED: | |
3024 | +%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX | |
3025 | +%%% DEPRECATED: | |
3026 | +%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX | |
3027 | +%%% DEPRECATED: | |
3028 | +%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX | |
3029 | +%%% DEPRECATED: | |
3030 | +%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX | |
3031 | +%%% DEPRECATED: | |
3032 | +%%% DEPRECATED: MACRO {tr} {"Tech. Rep."} | |
3033 | +%%% ==================================================================== | |
3034 | + | |
3035 | +READ | |
3036 | + | |
3037 | +FUNCTION { sortify } | |
3038 | +{ | |
3039 | + purify$ | |
3040 | + "l" change.case$ | |
3041 | +} | |
3042 | + | |
3043 | +FUNCTION { chop.word } | |
3044 | +{ | |
3045 | + 's := | |
3046 | + 'len := | |
3047 | + s #1 len substring$ = | |
3048 | + { s len #1 + global.max$ substring$ } | |
3049 | + 's | |
3050 | + if$ | |
3051 | +} | |
3052 | + | |
3053 | +FUNCTION { sort.format.names } | |
3054 | +{ | |
3055 | + 's := | |
3056 | + #1 'nameptr := | |
3057 | + "" | |
3058 | + s num.names$ 'numnames := | |
3059 | + numnames 'namesleft := | |
3060 | + { namesleft #0 > } | |
3061 | + { nameptr #1 > | |
3062 | + { " " * } | |
3063 | + 'skip$ | |
3064 | + if$ | |
3065 | + % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't := | |
3066 | + s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := | |
3067 | + nameptr numnames = t "others" = and | |
3068 | + { " et~al" * } | |
3069 | + { t sortify * } | |
3070 | + if$ | |
3071 | + nameptr #1 + 'nameptr := | |
3072 | + namesleft #1 - 'namesleft := | |
3073 | + } | |
3074 | + while$ | |
3075 | +} | |
3076 | + | |
3077 | +FUNCTION { sort.format.title } | |
3078 | +{ | |
3079 | + 't := | |
3080 | + "A " #2 | |
3081 | + "An " #3 | |
3082 | + "The " #4 t chop.word | |
3083 | + chop.word | |
3084 | + chop.word | |
3085 | + sortify | |
3086 | + #1 global.max$ substring$ | |
3087 | +} | |
3088 | + | |
3089 | +FUNCTION { author.sort } | |
3090 | +{ | |
3091 | + author empty.or.unknown | |
3092 | + { key empty.or.unknown | |
3093 | + { "to sort, need author or key in " cite$ * warning$ | |
3094 | + "" } | |
3095 | + { key sortify } | |
3096 | + if$ | |
3097 | + } | |
3098 | + { author sort.format.names } | |
3099 | + if$ | |
3100 | +} | |
3101 | + | |
3102 | +FUNCTION { author.editor.sort } | |
3103 | +{ | |
3104 | + author empty.or.unknown | |
3105 | + { | |
3106 | + editor empty.or.unknown | |
3107 | + { | |
3108 | + key empty.or.unknown | |
3109 | + { "to sort, need author, editor, or key in " cite$ * warning$ | |
3110 | + "" | |
3111 | + } | |
3112 | + { key sortify } | |
3113 | + if$ | |
3114 | + } | |
3115 | + { editor sort.format.names } | |
3116 | + if$ | |
3117 | + } | |
3118 | + { author sort.format.names } | |
3119 | + if$ | |
3120 | +} | |
3121 | + | |
3122 | +FUNCTION { author.organization.sort } | |
3123 | +{ | |
3124 | + % added - GNP. Stack author or organization for sorting (from alpha.bst). | |
3125 | + % Unlike alpha.bst, we need entire names, not abbreviations | |
3126 | + | |
3127 | + author empty.or.unknown | |
3128 | + { organization empty.or.unknown | |
3129 | + { key empty.or.unknown | |
3130 | + { "to sort, need author, organization, or key in " cite$ * warning$ | |
3131 | + "" | |
3132 | + } | |
3133 | + { key sortify } | |
3134 | + if$ | |
3135 | + } | |
3136 | + { organization sortify } | |
3137 | + if$ | |
3138 | + } | |
3139 | + { author sort.format.names } | |
3140 | + if$ | |
3141 | +} | |
3142 | + | |
3143 | +FUNCTION { editor.organization.sort } | |
3144 | +{ | |
3145 | + % added - GNP. Stack editor or organization for sorting (from alpha.bst). | |
3146 | + % Unlike alpha.bst, we need entire names, not abbreviations | |
3147 | + | |
3148 | + editor empty.or.unknown | |
3149 | + { organization empty.or.unknown | |
3150 | + { key empty.or.unknown | |
3151 | + { "to sort, need editor, organization, or key in " cite$ * warning$ | |
3152 | + "" | |
3153 | + } | |
3154 | + { key sortify } | |
3155 | + if$ | |
3156 | + } | |
3157 | + { organization sortify } | |
3158 | + if$ | |
3159 | + } | |
3160 | + { editor sort.format.names } | |
3161 | + if$ | |
3162 | +} | |
3163 | + | |
3164 | +FUNCTION { presort } | |
3165 | +{ | |
3166 | + % Presort creates the bibentry's label via a call to calc.label, and then | |
3167 | + % sorts the entries based on entry type. Chicago.bst adds support for | |
3168 | + % including organizations as the sort key; the following is stolen from | |
3169 | + % alpha.bst. | |
3170 | + | |
3171 | + calc.label sortify % recalculate bibitem label | |
3172 | + year field.or.null purify$ #-1 #4 substring$ * % add year | |
3173 | + " " | |
3174 | + * | |
3175 | + type$ "book" = | |
3176 | + type$ "inbook" = | |
3177 | + or | |
3178 | + 'author.editor.sort | |
3179 | + { type$ "proceedings" = | |
3180 | + 'editor.organization.sort | |
3181 | + { type$ "manual" = | |
3182 | + 'author.organization.sort | |
3183 | + 'author.sort | |
3184 | + if$ | |
3185 | + } | |
3186 | + if$ | |
3187 | + } | |
3188 | + if$ | |
3189 | + #1 entry.max$ substring$ % added for newapa | |
3190 | + 'sort.label := % added for newapa | |
3191 | + sort.label % added for newapa | |
3192 | + * | |
3193 | + " " | |
3194 | + * | |
3195 | + title field.or.null | |
3196 | + sort.format.title | |
3197 | + * | |
3198 | + #1 entry.max$ substring$ | |
3199 | + 'sort.key$ := | |
3200 | +} | |
3201 | + | |
3202 | +ITERATE { presort } | |
3203 | + | |
3204 | +SORT % by label, year, author/editor, title | |
3205 | + | |
3206 | +FUNCTION { initialize.extra.label.stuff } | |
3207 | +{ #0 int.to.chr$ 'last.label := | |
3208 | + "" 'next.extra := | |
3209 | + #0 'last.extra.num := | |
3210 | +} | |
3211 | + | |
3212 | +FUNCTION { forward.pass } | |
3213 | +{ | |
3214 | + % Pass through all entries, comparing current entry to last one. | |
3215 | + % Need to concatenate year to the stack (done by calc.label) to determine | |
3216 | + % if two entries are the same (see presort) | |
3217 | + | |
3218 | + last.label | |
3219 | + % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year | |
3220 | + % NEW: | |
3221 | + author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year | |
3222 | + #1 entry.max$ substring$ = % are they equal? | |
3223 | + { last.extra.num #1 + 'last.extra.num := | |
3224 | + last.extra.num int.to.chr$ 'extra.label := | |
3225 | + } | |
3226 | + { "a" chr.to.int$ 'last.extra.num := | |
3227 | + "" 'extra.label := | |
3228 | + % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year | |
3229 | + % NEW: | |
3230 | + author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year | |
3231 | + #1 entry.max$ substring$ 'last.label := % assign to last.label | |
3232 | + } | |
3233 | + if$ | |
3234 | +} | |
3235 | + | |
3236 | +FUNCTION { reverse.pass } | |
3237 | +{ | |
3238 | + next.extra "b" = | |
3239 | + { "a" 'extra.label := } | |
3240 | + 'skip$ | |
3241 | + if$ | |
3242 | + label.year extra.label * 'sort.year := | |
3243 | + extra.label 'next.extra := | |
3244 | +} | |
3245 | + | |
3246 | +EXECUTE {initialize.extra.label.stuff} | |
3247 | + | |
3248 | +ITERATE {forward.pass} | |
3249 | + | |
3250 | +REVERSE {reverse.pass} | |
3251 | + | |
3252 | +FUNCTION { bib.sort.order } | |
3253 | +{ | |
3254 | + sort.label | |
3255 | + " " | |
3256 | + * | |
3257 | + year field.or.null sortify | |
3258 | + * | |
3259 | + " " | |
3260 | + * | |
3261 | + title field.or.null | |
3262 | + sort.format.title | |
3263 | + * | |
3264 | + #1 entry.max$ substring$ | |
3265 | + 'sort.key$ := | |
3266 | +} | |
3267 | + | |
3268 | +ITERATE { bib.sort.order } | |
3269 | + | |
3270 | +SORT % by sort.label, year, title --- giving final bib. order. | |
3271 | + | |
3272 | +FUNCTION { begin.bib } | |
3273 | +{ | |
3274 | + %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN. | |
3275 | + %% Set to #1 to show both 10-digit and 13-digit ISBNs. | |
3276 | + #1 'show-isbn-10-and-13 := | |
3277 | + | |
3278 | + "%%% -*-BibTeX-*-" writeln | |
3279 | + "%%% Do NOT edit. File created by BibTeX with style" writeln | |
3280 | + "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln | |
3281 | + "" writeln | |
3282 | + | |
3283 | + preamble$ empty.or.unknown | |
3284 | + 'skip$ | |
3285 | + { preamble$ writeln } | |
3286 | + if$ | |
3287 | + "\begin{thebibliography}{00}" writeln | |
3288 | + "" writeln | |
3289 | + "%%% ====================================================================" writeln | |
3290 | + "%%% NOTE TO THE USER: you can override these defaults by providing" writeln | |
3291 | + "%%% customized versions of any of these macros before the \bibliography" writeln | |
3292 | + "%%% command. Each of them MUST provide its own final punctuation," writeln | |
3293 | + "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln | |
3294 | + "%%% do not use final punctuation, in order to avoid confusing it with" writeln | |
3295 | + "%%% the Web address." writeln | |
3296 | + "%%%" writeln | |
3297 | + "%%% To suppress output of a particular field, define its macro to expand" writeln | |
3298 | + "%%% to an empty string, or better, \unskip, like this:" writeln | |
3299 | + "%%%" writeln | |
3300 | + "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln | |
3301 | + "%%%" writeln | |
3302 | + "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln | |
3303 | + "%%%" writeln | |
3304 | + "%%% ====================================================================" writeln | |
3305 | + "" writeln | |
3306 | + | |
3307 | + %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default | |
3308 | + %% macro wrappers expand to \unskip, discarding their values and unwanted | |
3309 | + %% space. | |
3310 | + %% | |
3311 | + %% For other publications, prior definitions like these may be useful: | |
3312 | + %% | |
3313 | + %% Plain TeX: | |
3314 | + %% \def \showCODEN #1{CODEN #1.} | |
3315 | + %% \def \showISSN #1{ISSN #1.} | |
3316 | + %% \def \showLCCN #1{LCCN #1.} | |
3317 | + %% | |
3318 | + %% LaTeX: | |
3319 | + %% \newcommand{\showCODEN}[1]{CODEN #1.} | |
3320 | + %% \newcommand{\showISSN}[1]#1{ISSN #1.} | |
3321 | + %% \newcommand{\showLCCN}[1]{LCCN #1.} | |
3322 | + | |
3323 | + "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln | |
3324 | + "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln | |
3325 | + % ACM styles omit ISBNs, but they can be included by suitable definitions of | |
3326 | + % \showISBNx and \showISBNxiii before the .bbl file is read | |
3327 | + "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln | |
3328 | + "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln | |
3329 | + "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln | |
3330 | + "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln | |
3331 | + "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above | |
3332 | + "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln | |
3333 | + "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln | |
3334 | +} | |
3335 | + | |
3336 | +EXECUTE {begin.bib} | |
3337 | + | |
3338 | +EXECUTE {init.state.consts} | |
3339 | + | |
3340 | +ITERATE {call.type$} | |
3341 | + | |
3342 | +FUNCTION { end.bib } | |
3343 | +{ | |
3344 | + newline$ | |
3345 | + "\end{thebibliography}" | |
3346 | + writeln | |
3347 | +} | |
3348 | + | |
3349 | +EXECUTE {end.bib} | |
3350 | + | |
3351 | +%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012 | |
3352 | + | ... | ... |
... | ... | @@ -0,0 +1,221 @@ |
1 | +%% | |
2 | +%% This is file `acmcopyright.sty', | |
3 | +%% generated with the docstrip utility. | |
4 | +%% | |
5 | +%% The original source files were: | |
6 | +%% | |
7 | +%% acmcopyright.dtx (with options: `style') | |
8 | +%% | |
9 | +%% IMPORTANT NOTICE: | |
10 | +%% | |
11 | +%% For the copyright see the source file. | |
12 | +%% | |
13 | +%% Any modified versions of this file must be renamed | |
14 | +%% with new filenames distinct from acmcopyright.sty. | |
15 | +%% | |
16 | +%% For distribution of the original source see the terms | |
17 | +%% for copying and modification in the file acmcopyright.dtx. | |
18 | +%% | |
19 | +%% This generated file may be distributed as long as the | |
20 | +%% original source files, as listed above, are part of the | |
21 | +%% same distribution. (The sources need not necessarily be | |
22 | +%% in the same archive or directory.) | |
23 | +%% \CharacterTable | |
24 | +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z | |
25 | +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z | |
26 | +%% Digits \0\1\2\3\4\5\6\7\8\9 | |
27 | +%% Exclamation \! Double quote \" Hash (number) \# | |
28 | +%% Dollar \$ Percent \% Ampersand \& | |
29 | +%% Acute accent \' Left paren \( Right paren \) | |
30 | +%% Asterisk \* Plus \+ Comma \, | |
31 | +%% Minus \- Point \. Solidus \/ | |
32 | +%% Colon \: Semicolon \; Less than \< | |
33 | +%% Equals \= Greater than \> Question mark \? | |
34 | +%% Commercial at \@ Left bracket \[ Backslash \\ | |
35 | +%% Right bracket \] Circumflex \^ Underscore \_ | |
36 | +%% Grave accent \` Left brace \{ Vertical bar \| | |
37 | +%% Right brace \} Tilde \~} | |
38 | +\NeedsTeXFormat{LaTeX2e} | |
39 | +\ProvidesPackage{acmcopyright} | |
40 | +[2014/06/29 v1.2 Copyright statemens for ACM classes] | |
41 | +\newif\if@printcopyright | |
42 | +\@printcopyrighttrue | |
43 | +\newif\if@printpermission | |
44 | +\@printpermissiontrue | |
45 | +\newif\if@acmowned | |
46 | +\@acmownedtrue | |
47 | +\RequirePackage{xkeyval} | |
48 | +\define@choicekey*{ACM@}{acmcopyrightmode}[% | |
49 | + \acm@copyrightinput\acm@copyrightmode]{none,acmcopyright,acmlicensed,% | |
50 | + rightsretained,usgov,usgovmixed,cagov,cagovmixed,% | |
51 | + licensedusgovmixed,licensedcagovmixed,othergov,licensedothergov}{% | |
52 | + \@printpermissiontrue | |
53 | + \@printcopyrighttrue | |
54 | + \@acmownedtrue | |
55 | + \ifnum\acm@copyrightmode=0\relax % none | |
56 | + \@printpermissionfalse | |
57 | + \@printcopyrightfalse | |
58 | + \@acmownedfalse | |
59 | + \fi | |
60 | + \ifnum\acm@copyrightmode=2\relax % acmlicensed | |
61 | + \@acmownedfalse | |
62 | + \fi | |
63 | + \ifnum\acm@copyrightmode=3\relax % rightsretained | |
64 | + \@acmownedfalse | |
65 | + \fi | |
66 | + \ifnum\acm@copyrightmode=4\relax % usgov | |
67 | + \@printpermissiontrue | |
68 | + \@printcopyrightfalse | |
69 | + \@acmownedfalse | |
70 | + \fi | |
71 | + \ifnum\acm@copyrightmode=6\relax % cagov | |
72 | + \@acmownedfalse | |
73 | + \fi | |
74 | + \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed | |
75 | + \@acmownedfalse | |
76 | + \fi | |
77 | + \ifnum\acm@copyrightmode=9\relax % licensedcagovmixed | |
78 | + \@acmownedfalse | |
79 | + \fi | |
80 | + \ifnum\acm@copyrightmode=10\relax % othergov | |
81 | + \@acmownedtrue | |
82 | + \fi | |
83 | + \ifnum\acm@copyrightmode=11\relax % licensedothergov | |
84 | + \@acmownedfalse | |
85 | + \@printcopyrightfalse | |
86 | + \fi} | |
87 | +\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} | |
88 | +\setcopyright{acmcopyright} | |
89 | +\def\@copyrightowner{% | |
90 | + \ifcase\acm@copyrightmode\relax % none | |
91 | + \or % acmcopyright | |
92 | + ACM. | |
93 | + \or % acmlicensed | |
94 | + Copyright held by the owner/author(s). Publication rights licensed to | |
95 | + ACM. | |
96 | + \or % rightsretained | |
97 | + Copyright held by the owner/author(s). | |
98 | + \or % usgov | |
99 | + \or % usgovmixed | |
100 | + ACM. | |
101 | + \or % cagov | |
102 | + Crown in Right of Canada. | |
103 | + \or %cagovmixed | |
104 | + ACM. | |
105 | + \or %licensedusgovmixed | |
106 | + Copyright held by the owner/author(s). Publication rights licensed to | |
107 | + ACM. | |
108 | + \or %licensedcagovmixed | |
109 | + Copyright held by the owner/author(s). Publication rights licensed to | |
110 | + ACM. | |
111 | + \or % othergov | |
112 | + ACM. | |
113 | + \or % licensedothergov | |
114 | + \fi} | |
115 | +\def\@copyrightpermission{% | |
116 | + \ifcase\acm@copyrightmode\relax % none | |
117 | + \or % acmcopyright | |
118 | + Permission to make digital or hard copies of all or part of this | |
119 | + work for personal or classroom use is granted without fee provided | |
120 | + that copies are not made or distributed for profit or commercial | |
121 | + advantage and that copies bear this notice and the full citation on | |
122 | + the first page. Copyrights for components of this work owned by | |
123 | + others than ACM must be honored. Abstracting with credit is | |
124 | + permitted. To copy otherwise, or republish, to post on servers or to | |
125 | + redistribute to lists, requires prior specific permission | |
126 | + and\hspace*{.5pt}/or a fee. Request permissions from | |
127 | + permissions@acm.org. | |
128 | + \or % acmlicensed | |
129 | + Permission to make digital or hard copies of all or part of this | |
130 | + work for personal or classroom use is granted without fee provided | |
131 | + that copies are not made or distributed for profit or commercial | |
132 | + advantage and that copies bear this notice and the full citation on | |
133 | + the first page. Copyrights for components of this work owned by | |
134 | + others than the author(s) must be honored. Abstracting with credit | |
135 | + is permitted. To copy otherwise, or republish, to post on servers | |
136 | + or to redistribute to lists, requires prior specific permission | |
137 | + and\hspace*{.5pt}/or a fee. Request permissions from | |
138 | + permissions@acm.org. | |
139 | + \or % rightsretained | |
140 | + Permission to make digital or hard copies of part or all of this work | |
141 | + for personal or classroom use is granted without fee provided that | |
142 | + copies are not made or distributed for profit or commercial advantage | |
143 | + and that copies bear this notice and the full citation on the first | |
144 | + page. Copyrights for third-party components of this work must be | |
145 | + honored. For all other uses, contact the | |
146 | + owner\hspace*{.5pt}/author(s). | |
147 | + \or % usgov | |
148 | + This paper is authored by an employee(s) of the United States | |
149 | + Government and is in the public domain. Non-exclusive copying or | |
150 | + redistribution is allowed, provided that the article citation is | |
151 | + given and the authors and agency are clearly identified as its | |
152 | + source. | |
153 | + \or % usgovmixed | |
154 | + ACM acknowledges that this contribution was authored or co-authored | |
155 | + by an employee, or contractor of the national government. As such, | |
156 | + the Government retains a nonexclusive, royalty-free right to | |
157 | + publish or reproduce this article, or to allow others to do so, for | |
158 | + Government purposes only. Permission to make digital or hard copies | |
159 | + for personal or classroom use is granted. Copies must bear this | |
160 | + notice and the full citation on the first page. Copyrights for | |
161 | + components of this work owned by others than ACM must be | |
162 | + honored. To copy otherwise, distribute, republish, or post, | |
163 | + requires prior specific permission and\hspace*{.5pt}/or a | |
164 | + fee. Request permissions from permissions@acm.org. | |
165 | + \or % cagov | |
166 | + This article was authored by employees of the Government of Canada. | |
167 | + As such, the Canadian government retains all interest in the | |
168 | + copyright to this work and grants to ACM a nonexclusive, | |
169 | + royalty-free right to publish or reproduce this article, or to allow | |
170 | + others to do so, provided that clear attribution is given both to | |
171 | + the authors and the Canadian government agency employing them. | |
172 | + Permission to make digital or hard copies for personal or classroom | |
173 | + use is granted. Copies must bear this notice and the full citation | |
174 | + on the first page. Copyrights for components of this work owned by | |
175 | + others than the Canadain Government must be honored. To copy | |
176 | + otherwise, distribute, republish, or post, requires prior specific | |
177 | + permission and\hspace*{.5pt}/or a fee. Request permissions from | |
178 | + permissions@acm.org. | |
179 | + \or % cagovmixed | |
180 | + ACM acknowledges that this contribution was co-authored by an | |
181 | + affiliate of the national government of Canada. As such, the Crown | |
182 | + in Right of Canada retains an equal interest in the copyright. | |
183 | + Reprints must include clear attribution to ACM and the author's | |
184 | + government agency affiliation. Permission to make digital or hard | |
185 | + copies for personal or classroom use is granted. Copies must bear | |
186 | + this notice and the full citation on the first page. Copyrights for | |
187 | + components of this work owned by others than ACM must be honored. | |
188 | + To copy otherwise, distribute, republish, or post, requires prior | |
189 | + specific permission and\hspace*{.5pt}/or a fee. Request permissions | |
190 | + from permissions@acm.org. | |
191 | + \or % licensedusgovmixed | |
192 | + Publication rights licensed to ACM. ACM acknowledges that this | |
193 | + contribution was authored or co-authored by an employee, contractor | |
194 | + or affiliate of the United States government. As such, the | |
195 | + Government retains a nonexclusive, royalty-free right to publish or | |
196 | + reproduce this article, or to allow others to do so, for Government | |
197 | + purposes only. | |
198 | + \or % licensedcagovmixed | |
199 | + Publication rights licensed to ACM. ACM acknowledges that this | |
200 | + contribution was authored or co-authored by an employee, contractor | |
201 | + or affiliate of the national government of Canada. As such, the | |
202 | + Government retains a nonexclusive, royalty-free right to publish or | |
203 | + reproduce this article, or to allow others to do so, for Government | |
204 | + purposes only. | |
205 | + \or % othergov | |
206 | + ACM acknowledges that this contribution was authored or co-authored | |
207 | + by an employee, contractor or affiliate of a national government. As | |
208 | + such, the Government retains a nonexclusive, royalty-free right to | |
209 | + publish or reproduce this article, or to allow others to do so, for | |
210 | + Government purposes only. | |
211 | + \or % licensedothergov | |
212 | + Publication rights licensed to ACM. ACM acknowledges that this | |
213 | + contribution was authored or co-authored by an employee, contractor | |
214 | + or affiliate of a national government. As such, the Government | |
215 | + retains a nonexclusive, royalty-free right to publish or reproduce | |
216 | + this article, or to allow others to do so, for Government purposes | |
217 | + only. | |
218 | + \fi} | |
219 | +\endinput | |
220 | +%% | |
221 | +%% End of file `acmcopyright.sty'. | ... | ... |
... | ... | @@ -0,0 +1,14 @@ |
1 | +\begin{abstract} | |
2 | +The Brazilian Public Software is a program by the Brazilian Federal | |
3 | +Government to foster the sharing and collaboration on FOSS solutions for | |
4 | +the public administration. In this paper, we present an integrated | |
5 | +development platform that was developed for the program. The development | |
6 | +of this platform used several FOSS applications, and contributed | |
7 | +features back to them. We discuss the development methodology, platform | |
8 | +architecture, and the user experience efforts carried out. | |
9 | +\end{abstract} | |
10 | + | |
11 | +\category{H.5.m.}{Information Interfaces and Presentation | |
12 | + (e.g. HCI)}{Miscellaneous} | |
13 | + | |
14 | +\keywords{\plainkeywords} | ... | ... |
... | ... | @@ -0,0 +1,50 @@ |
1 | +\section{Introduction} | |
2 | +\label{sec:intro} | |
3 | + | |
4 | +During the last few decades, the Brazilian Federal Government has | |
5 | +improved its software adoption and development processes. In 2003, the | |
6 | +recommendation to adopt Free/Open Source Software (FOSS) become a public | |
7 | +policy. In 2007, the Brazilian Government released a portal called | |
8 | +Brazilian Public Software (\textit{Software Público Brasileiro} -- SPB, | |
9 | +in Portuguese), with the goal of sharing FOSS projects developed by, or | |
10 | +for, the Brazilian Government. | |
11 | + | |
12 | +The Brazilian legal instrument on software contracting | |
13 | +(\textit{Instrução Normativa} 04/2012) mandates that public management | |
14 | +must consult the SPB Portal to adopt a software solution. The | |
15 | +acquisition of a proprietary solution must be explicitly justified by | |
16 | +demonstrating that there is no suitable option in the SPB Portal. | |
17 | + | |
18 | +Since 2009, however, the SPB Portal was having several technical issues. | |
19 | +The original codebase was not being developed anymore, and there as a | |
20 | +large amount of technical debt to overcome. The system was a modified | |
21 | +version of an existing FOSS platform that was not being developed | |
22 | +anymore, and the portal maintenance was becoming harder and harder. | |
23 | + | |
24 | +From January 2014 to June 2016, a new platform for the SPB Portal was | |
25 | +designed and developed by the University of Brasília (UnB) and the | |
26 | +University of São Paulo (USP) in a partnership with the Brazilian | |
27 | +Ministry of Budget, Planning, and Management. This new Portal was | |
28 | +designed as an integrated platform for collaborative software | |
29 | +development. It includes functionality for social networking, mailing | |
30 | +lists, version control system, and source code quality monitoring. In | |
31 | +this paper, we present an overview of this new generation of the SPB | |
32 | +Portal. | |
33 | + | |
34 | +The project was developed by a team of 3 professors, 6 professionals, 2 | |
35 | +masters students, and approximately 40 undergrad students (not all of | |
36 | +them at the same time, though -- graduations and other events triggered | |
37 | +changes in the team). | |
38 | + | |
39 | +\begin{figure*}[hbt] | |
40 | + \centering | |
41 | + \includegraphics[width=.9\linewidth]{figures/home-SPB.png} | |
42 | + \caption{The new SPB Portal.} | |
43 | + \label{fig:spb} | |
44 | +\end{figure*} | |
45 | + | |
46 | +Figure \ref{fig:spb} shows the home page of this integrated platform. | |
47 | +The development tried to be as faithful as possible to FOSS development. | |
48 | +All development was done in the open, and the changes we needed in the | |
49 | +tools user were contributed back to their communities. | |
50 | + | ... | ... |
... | ... | @@ -0,0 +1,73 @@ |
1 | +\section{Brazilian Public Software versus Free/Open Source Software} | |
2 | +\label{sec:spb} | |
3 | + | |
4 | +%TODO: Hilmer | |
5 | + | |
6 | +O software livre é considerado um fenômeno recente que ganhou destaque nos | |
7 | +últimos anos e despertou maior interesse de observação por parte da academia. | |
8 | +No entanto, desde o início da computação a maior parte dos desenvolvedores | |
9 | +trabalhava da forma que hoje identificamos como software livre, ou seja, | |
10 | +compartilhando código de forma aberta. Essa característica faz com que o código | |
11 | +esteja disponível para inspeção, alteração, e utilização por qualquer pessoa, | |
12 | +física ou jurídica~\cite{kon2012}, | |
13 | +~\cite{hippel2003}. | |
14 | + | |
15 | +Os elementos que diferenciam o software livre de outros tipos de software é o | |
16 | +entendimento do processo de desenvolvimento, do contexto econômico, da relação | |
17 | +entre os desenvolvedores e usuários, além das características éticas e legais | |
18 | +que se relacionam ao software. No contexto do software livre é promovida a | |
19 | +liberdade do usuário e seu desenvolvimento tem alicerce | |
20 | +em colaboração e desenvolvimento aberto.\cite{meirelles2013}. | |
21 | + | |
22 | +Do ponto de vista econômico, diferentemente do que ocorre com o software | |
23 | +proprietário, restrito, o software livre promove o estabelecimento de vários | |
24 | +fornecedores que competem entre si com base no mesmo software. Essa competição | |
25 | +mais forte entre fornecedores traz vantagens para os usuários, pois dá melhores | |
26 | +garantias quanto ao desenvolvimento futuro do sistema e induz a uma redução nos | |
27 | +preços. Essas liberdades e garantias sobre o software são estabelecidas no | |
28 | +Brasil pela Lei 9610/98, lei de direitos autorais. Na sua maioria das vezes, | |
29 | +essa proteção decorrente da lei segue aliada aos termos conferidos por um | |
30 | +contrato atinente a determinado software. Esse contrato é denominado | |
31 | +``licença''. A licença de um software estabelece um rol de direitos e deveres | |
32 | +que se projetam sobre um determinado usuário do software. Em especial, o que | |
33 | +diferencia o software livre do software restrito é apenas a forma de | |
34 | +licenciamento\cite{sabino2009}. As licenças de software livre são o | |
35 | +que garantem o direito de executar, estudar, adaptar, e aperfeiçoar o software, | |
36 | +como por exemplo as licenças \textit{GPL (GNU General Public License)} aceitas | |
37 | +para projetos hospedados no portal do software público brasileiro. | |
38 | + | |
39 | +O Portal do Software Público Brasileiro (SPB), inaugurado em 2007, na prática, | |
40 | +é um sistema web que se consolidou como um ambiente de compartilhamento de | |
41 | +projetos de software. Oferece um espaço (comunidade) para cada software. Por | |
42 | +isso, a atual plataforma para o SPB foi pensada para contemplar ferramentas que | |
43 | +promovam a colaboração e a interação nas comunidades (por gestores, usuários e | |
44 | +desenvolvedores) dos projetos, conforme as práticas usadas nas comunidades de | |
45 | +software livre. Isso inclui listas de e-mail, fóruns de discussão, issue | |
46 | +trackers, sistemas de controle de versão e ambientes de rede | |
47 | +social. | |
48 | + | |
49 | +Inicialmente, o propósito do Portal era apenas compartilhar os softwares | |
50 | +desenvolvidos no governo, visando diminuir os custos de contratação de | |
51 | +software. Entretanto, se observou que ao disponibilizar os softwares | |
52 | +rapidamente formaram-se comunidades em torno daquele software com diversas | |
53 | +pessoas colaborando e compartilhando os resultados obtidos através do uso | |
54 | +daquelas soluções. Dessa forma, algumas cooperativas de desenvolvimento de | |
55 | +software e empresas privadas demonstraram o interesse em disponibilizar seus | |
56 | +softwares na plataforma do SPB. | |
57 | + | |
58 | +O conceito de software público diferencia-se do de software livre em alguns | |
59 | +aspectos, destacando-se a atribuição de bem público ao software e a | |
60 | +obrigatoriedade do software estar no Portal do Software Público. Embora haja | |
61 | +algumas diferenças entre o que é um software livre e um software público | |
62 | +brasileiro, há princípios comuns, como a tendência da descentralização na | |
63 | +tomada de decisões, o intenso compartilhamento de informações e os processos de | |
64 | +retroalimentação decorrentes do uso dos artefatos produzidos. Por um lado, o | |
65 | +software livre se apresenta atualmente como um modelo já consolidado e viável | |
66 | +em um número crescente de aplicações e ambientes. Por outro lado, restam | |
67 | +incertezas jurídicas e econômicas. Alguns desses desafios estão vinculados às | |
68 | +barreiras criadas pelo modelo e cultura do software | |
69 | +restrito~\cite{kon2012}. Além dessas, existem também as dificuldades | |
70 | +para a entrada e a permanência de novos contribuidores nos projetos. A questão | |
71 | +que motivou esta pesquisa é que essas dificuldades podem ser maiores no | |
72 | +contexto dos projetos de software público brasileiro, devido à estrutura | |
73 | +organizacional e aos processos do Governo Federal. | ... | ... |
... | ... | @@ -0,0 +1,105 @@ |
1 | +\section{Architecture} | |
2 | +\label{sec:architecture} | |
3 | + | |
4 | +%TODO: Kanashiro e Siqueira | |
5 | + | |
6 | +The two main requirements provided by the Brazilian Federal Government | |
7 | +for the new platform were: | |
8 | +% | |
9 | +1) \textit{Integrate existing FOSS systems}, with minimal differences | |
10 | +from their original versions. This way, the platform can benefit from | |
11 | +improvements done by the upstream communities that provide those | |
12 | +systems, and the maintenance effort that is specific for the SPB Portal | |
13 | +should be reduced; | |
14 | +% | |
15 | +and | |
16 | +2) \textit{Provide a consistent user interface} across the different | |
17 | +systems, as well as centralized authentication. | |
18 | + | |
19 | +The first requirement was accomplished by dedicating specialized teams | |
20 | +for each system that was being integrated. The teams would learn how to | |
21 | +develop their assigned systems, and contribute the necessary features | |
22 | +directly to the original communities, so that the version we used was | |
23 | +not significantly different from the original. Of course, at times | |
24 | +project deadlines forced us to use our own version before tho features | |
25 | +were fully reviewed and integrated upstream to the original projects, | |
26 | +but we managed to contribute the vast majority of the changes back. | |
27 | + | |
28 | +For the second requirement, we integrated a web integration platform | |
29 | +called Colab\footnote{\url{https://github.com/colab/colab}}. Colab | |
30 | +serves as a frontend for other web applications as a reverse proxy, | |
31 | +manages authentication, and can apply changes to the HTML provided by | |
32 | +the integrated applications in order to provide visual consistency. | |
33 | +Colab had support for an initial set of applications (Trac, GNU Mailman, | |
34 | +Apache Lucene) hard-coded; our team evolved Colab so that it can now | |
35 | +receive plugins to add support for new applications with minimal changes | |
36 | +to its existing core. We added support for the other applications used | |
37 | +in the SPB platform: Noosfero, GitLab, and Mezuro. | |
38 | + | |
39 | +Noosfero\footnote{\url{http://noosfero.org/}} is a software for building | |
40 | +social and collaboration networks. Besides the classical social | |
41 | +networking features, it also provides publication features such as blogs | |
42 | +and a general-purpose CMS (Content Management System). Most of the user | |
43 | +interactions with SPB is through Noosfero: user registration, project | |
44 | +home pages and documentation, and contact forms. | |
45 | +GitLab\footnote{\url{http://gitlab.com/}} is a web-based Git repository | |
46 | +manager with wiki pages and issue tracking features. | |
47 | +Mezuro\footnote{\url{http://mezuro.org/}} is a platform to collect source code | |
48 | +metric to monitor the internal quality of softwares written in C, C++, | |
49 | +Java, Python, Ruby, and PHP. GNU Mailman is used for mailing lists. | |
50 | + | |
51 | +\begin{figure}[hbt] | |
52 | + \centering | |
53 | + \includegraphics[width=\linewidth]{figures/arch.png} | |
54 | + \caption{SPB architecture overview.} | |
55 | + \label{fig:architecture} | |
56 | +\end{figure} | |
57 | + | |
58 | +The conceptual architecture of the platform is presented in Figure | |
59 | +\ref{fig:architecture}. Colab initially handles all user interaction, | |
60 | +directing requests to one of the integrated applications. It | |
61 | +post-processes responses from the applications to apply a consistent | |
62 | +visual appearance, manages authentication, and provides a unified search | |
63 | +functionality: instead of using the redundant restricted search | |
64 | +functionality of each application, a search in the SPB portal might | |
65 | +return content from any of the applications, be it web pages, mailing | |
66 | +list posts, or source code. | |
67 | + | |
68 | +%TODO: deixar coeso daqui para baixo | |
69 | + | |
70 | +\begin{figure*}[hbt] | |
71 | + \centering | |
72 | + \includegraphics[width=\linewidth]{figures/arch2.png} | |
73 | + \caption{Instanciation view of the SPB architecture.} | |
74 | + \label{fig:architecture2} | |
75 | +\end{figure*} | |
76 | + | |
77 | +In real, the SPB platform was deployed in 7 virtual machines with different functions, | |
78 | +as we can see in Figure \ref{fig:architecture2}. | |
79 | + | |
80 | +The \textit{reverseproxy} handles the HTTP requests and redirects them to the | |
81 | +\textit{integration}, the \textit{email} sends and receives e-mails on behalf | |
82 | +of the platform and the \textit{monitor} keeps the entire environment tracked. | |
83 | +These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and | |
84 | +\textit{monitor} - are accessible via Internet and the other ones are only | |
85 | +available in the local network created between them. | |
86 | + | |
87 | +\textit{Integration} works as a second layer of proxy beneath | |
88 | +\textit{reverseproxy}, any request to the platform will be handled by it. The | |
89 | +Colab service provides interface, authentication and search engine integration | |
90 | +among all the services. When a request is received to a specific service, | |
91 | +Colab authenticates the user in the target tool, sends the request and makes a | |
92 | +visual transformation in the HTML page which is the content of the response. | |
93 | +Another user-oriented feature is the integrated search engine, when the user | |
94 | +want to find something in the platform Colab will perform the search in the | |
95 | +whole databases. Colab itself provides a web interface for GNU Mailman and we | |
96 | +have two others integrated tools in \textit{integration}: Gitlab and Prezento. | |
97 | +Gitlab provides web interface for Git repositories and issues tracker, and | |
98 | +Prezento is a front-end for source code static analysis. | |
99 | + | |
100 | +The source code static analysis is performed by \textit{mezuro}. It runs some | |
101 | +static analysis tools on source code stored in repository and provide this data | |
102 | +to Prezento. A social network and CMS (Content Manager System) is provided by | |
103 | +Noosfero in \textit{social}, and the databases of all tools with a cache | |
104 | +service are in \textit{database}. | |
105 | + | ... | ... |
... | ... | @@ -0,0 +1,33 @@ |
1 | +\section{User eXperience evolution} | |
2 | + | |
3 | +The integration of collaborative environments goes beyond functional aspects. | |
4 | +Offering the population an unified experience across these environments has | |
5 | +been the key to encourage the use of the platform as it reduces the perception | |
6 | +of complexity. Thus, the SPB Portal information architecture was redesigned | |
7 | +to provide a transparent navigation and to reach users with different profiles. | |
8 | +A process of harmonization has been employed on the interaction models of each | |
9 | +tool to reduce the learning curve. At the same time, a new visual style was | |
10 | +created to unify the navigation experience and to comply with the guidelines of | |
11 | +the digital communication identity standard established by the Federal | |
12 | +Government. | |
13 | + | |
14 | +With the increase in system features and the addition of new tools, the | |
15 | +visual style has steadily evolved to keep the navigation unified. Moreover, | |
16 | +tools from different backgrounds, which in many cases provide similar | |
17 | +functionality, prompted the development of an unified interface. Some | |
18 | +features, such as search and user profile editing were eliminated from | |
19 | +the individual applications, and implemented centrally to ensure a | |
20 | +consistent look and feel. | |
21 | + | |
22 | +Another challenge was responsive web design. The integrated applications | |
23 | +had varying degrees of support for responsiveness, and the common | |
24 | +interface had to adapt for each individual scenario. In particular | |
25 | +Noosfero did not yet have a responsive design; we engaged in its | |
26 | +development and contributed towards that goal. | |
27 | + | |
28 | +After the initial release of the new SPB Portal in 2014, several | |
29 | +validations activities were implemented in 2015 and 2016. The aim was to | |
30 | +provide the most wanted features by casual users (such as public | |
31 | +servants interested in downloads and documentation) immediately, while | |
32 | +allowing more experienced users (such as developers) to easily drill down | |
33 | +to the details. | ... | ... |
... | ... | @@ -0,0 +1,13 @@ |
1 | +\section{Final remarks} | |
2 | + | |
3 | +The portal is available at \url{softwarepublico.gov.br}. All | |
4 | +documentation, including detailed architecture and operation manuals are | |
5 | +also available\footnote{\url{https://softwarepublico.gov.br/doc/} | |
6 | +(in Portuguese only at the moment)}). | |
7 | +% | |
8 | +All the integrated tools are FOSS and our contributions were published | |
9 | +in open repositories, available on the SPB Portal itself. We also | |
10 | +contributed these features back to the respective communities: that | |
11 | +benefits those communities, as well as us since we can share future | |
12 | +development and maintenance effort with other organizations that | |
13 | +participate in their projects. | ... | ... |
39.2 KB
... | ... | @@ -0,0 +1,302 @@ |
1 | +<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
2 | +<!-- Created with Inkscape (http://www.inkscape.org/) --> | |
3 | + | |
4 | +<svg | |
5 | + xmlns:dc="http://purl.org/dc/elements/1.1/" | |
6 | + xmlns:cc="http://creativecommons.org/ns#" | |
7 | + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | |
8 | + xmlns:svg="http://www.w3.org/2000/svg" | |
9 | + xmlns="http://www.w3.org/2000/svg" | |
10 | + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |
11 | + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |
12 | + width="1024" | |
13 | + height="480" | |
14 | + viewBox="0 0 270.93333 126.99987" | |
15 | + version="1.1" | |
16 | + id="svg8" | |
17 | + inkscape:version="0.92.1 r15371" | |
18 | + sodipodi:docname="arch.svg" | |
19 | + inkscape:export-filename="/home/terceiro/research/papers/2017/spb/OSS-2017/figures/arch.png" | |
20 | + inkscape:export-xdpi="96" | |
21 | + inkscape:export-ydpi="96"> | |
22 | + <defs | |
23 | + id="defs2"> | |
24 | + <marker | |
25 | + inkscape:stockid="Arrow1Lend" | |
26 | + orient="auto" | |
27 | + refY="0" | |
28 | + refX="0" | |
29 | + id="marker5935" | |
30 | + style="overflow:visible" | |
31 | + inkscape:isstock="true"> | |
32 | + <path | |
33 | + id="path5933" | |
34 | + d="M 0,0 5,-5 -12.5,0 5,5 Z" | |
35 | + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | |
36 | + transform="matrix(-0.8,0,0,-0.8,-10,0)" | |
37 | + inkscape:connector-curvature="0" /> | |
38 | + </marker> | |
39 | + <marker | |
40 | + inkscape:isstock="true" | |
41 | + style="overflow:visible" | |
42 | + id="marker5359" | |
43 | + refX="0" | |
44 | + refY="0" | |
45 | + orient="auto" | |
46 | + inkscape:stockid="Arrow1Lend" | |
47 | + inkscape:collect="always"> | |
48 | + <path | |
49 | + transform="matrix(-0.8,0,0,-0.8,-10,0)" | |
50 | + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | |
51 | + d="M 0,0 5,-5 -12.5,0 5,5 Z" | |
52 | + id="path5357" | |
53 | + inkscape:connector-curvature="0" /> | |
54 | + </marker> | |
55 | + <marker | |
56 | + inkscape:stockid="Arrow1Lend" | |
57 | + orient="auto" | |
58 | + refY="0" | |
59 | + refX="0" | |
60 | + id="marker5019" | |
61 | + style="overflow:visible" | |
62 | + inkscape:isstock="true"> | |
63 | + <path | |
64 | + id="path5017" | |
65 | + d="M 0,0 5,-5 -12.5,0 5,5 Z" | |
66 | + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | |
67 | + transform="matrix(-0.8,0,0,-0.8,-10,0)" | |
68 | + inkscape:connector-curvature="0" /> | |
69 | + </marker> | |
70 | + <marker | |
71 | + inkscape:stockid="Arrow1Lend" | |
72 | + orient="auto" | |
73 | + refY="0" | |
74 | + refX="0" | |
75 | + id="marker4863" | |
76 | + style="overflow:visible" | |
77 | + inkscape:isstock="true" | |
78 | + inkscape:collect="always"> | |
79 | + <path | |
80 | + id="path4861" | |
81 | + d="M 0,0 5,-5 -12.5,0 5,5 Z" | |
82 | + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | |
83 | + transform="matrix(-0.8,0,0,-0.8,-10,0)" | |
84 | + inkscape:connector-curvature="0" /> | |
85 | + </marker> | |
86 | + <marker | |
87 | + inkscape:stockid="Arrow1Lend" | |
88 | + orient="auto" | |
89 | + refY="0" | |
90 | + refX="0" | |
91 | + id="Arrow1Lend" | |
92 | + style="overflow:visible" | |
93 | + inkscape:isstock="true"> | |
94 | + <path | |
95 | + id="path4580" | |
96 | + d="M 0,0 5,-5 -12.5,0 5,5 Z" | |
97 | + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" | |
98 | + transform="matrix(-0.8,0,0,-0.8,-10,0)" | |
99 | + inkscape:connector-curvature="0" /> | |
100 | + </marker> | |
101 | + </defs> | |
102 | + <sodipodi:namedview | |
103 | + id="base" | |
104 | + pagecolor="#ffffff" | |
105 | + bordercolor="#666666" | |
106 | + borderopacity="1.0" | |
107 | + inkscape:pageopacity="0.0" | |
108 | + inkscape:pageshadow="2" | |
109 | + inkscape:zoom="1.0104167" | |
110 | + inkscape:cx="335.34021" | |
111 | + inkscape:cy="240" | |
112 | + inkscape:document-units="mm" | |
113 | + inkscape:current-layer="g6086" | |
114 | + showgrid="false" | |
115 | + units="px" | |
116 | + inkscape:window-width="1366" | |
117 | + inkscape:window-height="704" | |
118 | + inkscape:window-x="0" | |
119 | + inkscape:window-y="27" | |
120 | + inkscape:window-maximized="1" /> | |
121 | + <metadata | |
122 | + id="metadata5"> | |
123 | + <rdf:RDF> | |
124 | + <cc:Work | |
125 | + rdf:about=""> | |
126 | + <dc:format>image/svg+xml</dc:format> | |
127 | + <dc:type | |
128 | + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | |
129 | + <dc:title></dc:title> | |
130 | + </cc:Work> | |
131 | + </rdf:RDF> | |
132 | + </metadata> | |
133 | + <g | |
134 | + inkscape:label="Layer 1" | |
135 | + inkscape:groupmode="layer" | |
136 | + id="layer1" | |
137 | + transform="translate(0,-170.0001)"> | |
138 | + <g | |
139 | + id="g6086" | |
140 | + transform="translate(0,79.375004)"> | |
141 | + <g | |
142 | + transform="matrix(0.78525619,0,0,0.78525619,-49.623926,77.658487)" | |
143 | + id="g4513"> | |
144 | + <rect | |
145 | + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |
146 | + id="rect4504" | |
147 | + width="72.343452" | |
148 | + height="24.587317" | |
149 | + x="79.908783" | |
150 | + y="145.22058" /> | |
151 | + <text | |
152 | + xml:space="preserve" | |
153 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.05688667px;line-height:28.67301178px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14692044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
154 | + x="82.755447" | |
155 | + y="163.29472" | |
156 | + id="text4508"><tspan | |
157 | + sodipodi:role="line" | |
158 | + id="tspan4506" | |
159 | + x="82.755447" | |
160 | + y="163.29472" | |
161 | + style="stroke-width:1.14692044px">Noosfero</tspan></text> | |
162 | + </g> | |
163 | + <g | |
164 | + id="g4521" | |
165 | + transform="matrix(0.78525619,0,0,0.78525619,44.313728,28.743922)"> | |
166 | + <rect | |
167 | + y="145.22058" | |
168 | + x="79.908783" | |
169 | + height="24.587317" | |
170 | + width="72.343452" | |
171 | + id="rect4515" | |
172 | + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> | |
173 | + <text | |
174 | + id="text4519" | |
175 | + y="163.19838" | |
176 | + x="96.076134" | |
177 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.05688667px;line-height:28.67301178px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14692044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
178 | + xml:space="preserve"><tspan | |
179 | + style="stroke-width:1.14692044px" | |
180 | + y="163.19838" | |
181 | + x="96.076134" | |
182 | + id="tspan4517" | |
183 | + sodipodi:role="line">Colab</tspan></text> | |
184 | + </g> | |
185 | + <g | |
186 | + transform="matrix(0.78525619,0,0,0.78525619,12.608456,78.877338)" | |
187 | + id="g4529"> | |
188 | + <rect | |
189 | + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | |
190 | + id="rect4523" | |
191 | + width="72.343452" | |
192 | + height="24.587317" | |
193 | + x="80.408913" | |
194 | + y="143.66841" /> | |
195 | + <text | |
196 | + xml:space="preserve" | |
197 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.05688667px;line-height:28.67301178px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14692044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
198 | + x="95.870644" | |
199 | + y="161.64621" | |
200 | + id="text4527"><tspan | |
201 | + sodipodi:role="line" | |
202 | + id="tspan4525" | |
203 | + x="95.870644" | |
204 | + y="161.64621" | |
205 | + style="stroke-width:1.14692044px">Gitlab</tspan></text> | |
206 | + </g> | |
207 | + <g | |
208 | + id="g4537" | |
209 | + transform="matrix(0.78525619,0,0,0.78525619,129.65802,78.713424)"> | |
210 | + <rect | |
211 | + y="143.87715" | |
212 | + x="90.852165" | |
213 | + height="24.587317" | |
214 | + width="72.343452" | |
215 | + id="rect4531" | |
216 | + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> | |
217 | + <text | |
218 | + id="text4535" | |
219 | + y="161.64621" | |
220 | + x="99.913902" | |
221 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.05688667px;line-height:28.67301178px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14692044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
222 | + xml:space="preserve"><tspan | |
223 | + style="stroke-width:1.14692044px" | |
224 | + y="161.64621" | |
225 | + x="99.913902" | |
226 | + id="tspan4533" | |
227 | + sodipodi:role="line">Mezuro</tspan></text> | |
228 | + </g> | |
229 | + <g | |
230 | + id="g4545" | |
231 | + transform="matrix(0.78525619,0,0,0.78525619,126.12242,40.111281)"> | |
232 | + <rect | |
233 | + y="193.03581" | |
234 | + x="15.603492" | |
235 | + height="24.587317" | |
236 | + width="72.343452" | |
237 | + id="rect4539" | |
238 | + style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> | |
239 | + <text | |
240 | + id="text4543" | |
241 | + y="211.01361" | |
242 | + x="22.292139" | |
243 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.05688667px;line-height:28.67301178px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.14692044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
244 | + xml:space="preserve"><tspan | |
245 | + style="stroke-width:1.14692044px" | |
246 | + y="211.01361" | |
247 | + x="22.292139" | |
248 | + id="tspan4541" | |
249 | + sodipodi:role="line">Mailman</tspan></text> | |
250 | + </g> | |
251 | + <g | |
252 | + transform="translate(-17.596701,-1.6758763)" | |
253 | + id="g4573"> | |
254 | + <path | |
255 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" | |
256 | + d="m 105.30904,123.67103 c 0,3.13366 -7.096307,5.15651 -7.096307,5.15651 0,0 -0.634831,10.34294 -4.763388,12.39652 -4.128557,2.05358 -14.837858,-1.9901 -14.837858,-1.9901 0,0 -10.290461,6.46437 -16.590428,6.46437 -6.299966,0 -16.088912,-7.96891 -16.088912,-7.96891 0,0 -8.034554,4.71236 -12.163111,2.65878 -4.128557,-2.05359 -6.435105,-10.39045 -6.435105,-10.39045 0,0 -3.752876,-3.69458 -3.752875,-6.82824 1e-6,-3.13366 5.758939,-5.49087 5.758939,-5.49087 0,0 -2.348532,-8.4531 1.754298,-10.55761 5.633102,-2.88945 17.512605,-0.51748 17.512605,-0.51748 0,0 7.114196,-6.29719 13.414161,-6.29719 6.299965,0 14.25002,6.13002 14.25002,6.13002 0,0 13.885563,-1.53611 18.01412,0.51748 4.128557,2.05358 5.097733,9.72176 5.097733,9.72176 0,0 5.926108,3.86175 5.926108,6.99541 z" | |
257 | + id="path4549" | |
258 | + inkscape:connector-curvature="0" | |
259 | + sodipodi:nodetypes="scscscscscscscscs" /> | |
260 | + <text | |
261 | + xml:space="preserve" | |
262 | + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.60877037px;line-height:22.51565933px;font-family:Cantarell;-inkscape-font-specification:Cantarell;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.90062636px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" | |
263 | + x="43.804577" | |
264 | + y="125.93317" | |
265 | + id="text4519-3"><tspan | |
266 | + sodipodi:role="line" | |
267 | + id="tspan4517-6" | |
268 | + x="43.804577" | |
269 | + y="125.93317" | |
270 | + style="stroke-width:0.90062636px">internet</tspan></text> | |
271 | + </g> | |
272 | + <path | |
273 | + sodipodi:nodetypes="csc" | |
274 | + inkscape:connector-curvature="0" | |
275 | + id="path4575" | |
276 | + d="m 89.299838,121.99515 c 0,0 41.636142,-2.8699 41.912782,9.30257 l 0.20948,9.21731" | |
277 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-end:url(#Arrow1Lend);enable-background:accumulate" /> | |
278 | + <path | |
279 | + inkscape:connector-curvature="0" | |
280 | + id="path4859" | |
281 | + d="m 131.24135,164.86986 -87.987992,24.8855" | |
282 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-end:url(#marker4863);enable-background:accumulate" /> | |
283 | + <path | |
284 | + inkscape:connector-curvature="0" | |
285 | + id="path5015" | |
286 | + d="m 143.33679,164.86986 87.98803,24.8855" | |
287 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-end:url(#marker5019);enable-background:accumulate" /> | |
288 | + <path | |
289 | + sodipodi:nodetypes="cc" | |
290 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-end:url(#marker5359);enable-background:accumulate" | |
291 | + d="m 134.80714,164.86986 -24.36704,24.8855" | |
292 | + id="path5355" | |
293 | + inkscape:connector-curvature="0" /> | |
294 | + <path | |
295 | + inkscape:connector-curvature="0" | |
296 | + id="path5931" | |
297 | + d="m 138.22112,164.86986 24.36704,24.8855" | |
298 | + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-end:url(#marker5935);enable-background:accumulate" | |
299 | + sodipodi:nodetypes="cc" /> | |
300 | + </g> | |
301 | + </g> | |
302 | +</svg> | ... | ... |
109 KB
88.4 KB
... | ... | @@ -0,0 +1,623 @@ |
1 | +% CHI Extended Abstracts template. | |
2 | +% | |
3 | +% Tested with a clean LaTeX installation on Windows XP, Ubuntu 9.04 | |
4 | +% and above (should work in normal LaTeX environments) | |
5 | +% | |
6 | +% Filename: sigchi-ext.cls | |
7 | +% | |
8 | +% Features: | |
9 | +% - simpler design, two 'real' columns, better handling of | |
10 | +% footnotes/marginal notes | |
11 | +% - adheres to ACM archival format, so you don't need to change your | |
12 | +% LaTeX markup significantly from other ACM templates | |
13 | +% - font sizes, spacing between paragraphs, and look&feel more | |
14 | +% according to CHI's Ext. Abstracts template (MS Word) | |
15 | +% - supports an optional ACM teaser image on first page | |
16 | +% - improved PDF bookmarking | |
17 | +% | |
18 | +% CHANGELOG: | |
19 | +% 2015-03-21 David A. Shamma Removed bibsty dependency. | |
20 | +% 2015-01-05 David A. Shamma Updating for new format and Github repo. | |
21 | +% 2013-07-22 Paul Baumann Added example copyright to LaTeX file. | |
22 | +% 2010-12-01 Luis A. Leiva A lot of refactorization. | |
23 | +% 2010-10-18 Manas Tungare Restored support for \figures. | |
24 | +% 2010-08-09 Manas Tungare Updated copyright info for CHI 2011 | |
25 | +% 2009-12-04 Stephen Voida Updated copyright info for CHI 2010 | |
26 | +% 2009-11-17 Manas Tungare Refactored the title & author sections. | |
27 | +% 2008-11-25 Manas Tungare Initial create. | |
28 | +% | |
29 | +% LICENSE: Public domain: You are free to do whatever you want with | |
30 | +% this template. If you improve this in any way, please submit a | |
31 | +% pull request to the Github repository. | |
32 | + | |
33 | + | |
34 | +\NeedsTeXFormat{LaTeX2e}[1995/12/01] | |
35 | +\ProvidesClass{sigchi-ext}[2015/1/05, David A. Shamma] | |
36 | + | |
37 | +\typeout{CHI Extended Abstracts template} | |
38 | +\typeout{- updated by David A. Shamma.} | |
39 | +\typeout{- refactored by Luis A. Leiva} | |
40 | +\typeout{- original by Manas Tungare} | |
41 | +\typeout{} | |
42 | +\typeout{Available at https://github.com/sigchi.} | |
43 | +\typeout{} | |
44 | + | |
45 | +\LoadClass[10pt,letterpaper,landscape]{article}[1996/10/31] | |
46 | + | |
47 | +% ----------------------------------------------------------------------------- | |
48 | +% Set paper and margin sizes | |
49 | + | |
50 | +\setlength{\paperheight}{8.5in} | |
51 | +\setlength{\paperwidth}{11in} | |
52 | + | |
53 | +\setlength{\textwidth}{7.25in} | |
54 | +\setlength{\textheight}{6in} | |
55 | + | |
56 | +\setlength{\oddsidemargin}{1.5in} | |
57 | +\setlength{\topmargin}{0.25in} | |
58 | + | |
59 | +\setlength{\columnsep}{0.5in} | |
60 | + | |
61 | +\setlength{\voffset}{-0.2in} | |
62 | + | |
63 | +\setlength{\parindent}{0pt} | |
64 | +\setlength{\footskip}{0.5in} | |
65 | + | |
66 | +\setlength{\marginparsep}{15pt} | |
67 | +\setlength{\marginparwidth}{1.8in} | |
68 | + | |
69 | +\setlength{\itemsep}{0pt} | |
70 | +\setlength{\parsep}{0pt} | |
71 | +\setlength{\topsep}{0pt} | |
72 | +\setlength{\parskip}{9pt} | |
73 | + | |
74 | +% ----------------------------------------------------------------------------- | |
75 | +% Set paper columns and avoid justifying text, according to CHI's MS | |
76 | +% Word template | |
77 | +\twocolumn | |
78 | +\raggedright | |
79 | + | |
80 | +% Use LaTeX standard sans-serif fonts | |
81 | +\renewcommand*\familydefault{\sfdefault} | |
82 | + | |
83 | +% ----------------------------------------------------------------------------- | |
84 | +% Allowed environments and commands | |
85 | + | |
86 | +%% Todo: fix the floats! This overrides floating images, which is | |
87 | +%% needed for marginpar images but not for inline. So the trade off | |
88 | +%% is to make actual floats work then make a new environment for | |
89 | +%% marginepar images. -ayman | |
90 | +% \renewenvironment{table}{\def\@captype{table}}{} | |
91 | +% \renewenvironment{figure}{\def\@captype{figure}}{} | |
92 | +\renewcommand{\thanks}[1]{} % No thanks in this template | |
93 | +\pagestyle{empty} % No page numbers | |
94 | + | |
95 | +% ----------------------------------------------------------------------------- | |
96 | +% Paper Metadata | |
97 | + | |
98 | +\newcommand*{\copyrightinfo}[1]{\gdef\@copyrightinfo{\raggedright#1}} | |
99 | + | |
100 | +% Allow to copy-paste the ACM bibstrip in the Permission Release Form. | |
101 | +\RequirePackage{acmcopyright} | |
102 | +% Define the required commands. | |
103 | +\newcommand*{\CopyrightYear}[1]{} % Actually not used, but needed for consistency | |
104 | +\newcommand*{\acmPrice}[1]{} % Actually not used, but needed for consistency | |
105 | +\newcommand*{\conferenceinfo}[2]{\gdef\@crconferenceinfo{\emph{#1}, #2}} | |
106 | +\newcommand*{\isbn}[1]{\gdef\@crisbn{ACM~#1.}} | |
107 | +\newcommand*{\doi}[1]{\gdef\@crdoi{\urlstyle{crc}\url{#1}}} | |
108 | +% The follwing command typesets the required ACM bibstrip. | |
109 | +% It must be invoked between \begin{document} and \maketitle, either after or before CCS codes. | |
110 | +% So just use \copyrightinfo{\acmcopyright} to override the manual copyright info. | |
111 | +\newcommand*{\acmcopyright}{ | |
112 | + \@copyrightpermission\par\smallskip | |
113 | + \@copyrightowner\par | |
114 | + \@crconferenceinfo\par | |
115 | + \@crisbn\par | |
116 | + \@crdoi | |
117 | +} | |
118 | + | |
119 | +\def\keywords{ | |
120 | +\section*{Author Keywords} | |
121 | +} | |
122 | + | |
123 | +\def\terms{ | |
124 | +\section*{General Terms} | |
125 | +} | |
126 | + | |
127 | +% ----------------------------------------------------------------------------- | |
128 | +% ACM Classification - Gerry/Georgia November 2nd. 1999 | |
129 | + | |
130 | +\newcount\catcount | |
131 | +\global\catcount=1 | |
132 | + | |
133 | +\def\category#1#2#3{% | |
134 | +\ifnum\catcount=1 | |
135 | + \section*{ACM Classification Keywords} | |
136 | + \advance\catcount by 1\else{\unskip; }% | |
137 | +\fi | |
138 | +\@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}% | |
139 | +} | |
140 | + | |
141 | +\def\@category#1#2#3[#4]{% | |
142 | + \begingroup | |
143 | + \let\and\relax | |
144 | +% #1 [\textbf{#2}]% | |
145 | + #1 [#2]% | |
146 | + \if!#4!% | |
147 | + \if!#3!\else : #3\fi | |
148 | + \else | |
149 | + :\space | |
150 | + \if!#3!\else #3\kern\z@---\hskip\z@\fi | |
151 | + \textit{#4}% | |
152 | + \fi | |
153 | + \endgroup | |
154 | +} | |
155 | + | |
156 | +% ----------------------------------------------------------------------------- | |
157 | +% Typeset titles of chapters and sections in sans-serif | |
158 | + | |
159 | +\def\@makeschapterhead#1{ | |
160 | + \vspace*{50\p@} | |
161 | + {\parindent \z@ \raggedright | |
162 | + \sffamily | |
163 | + \interlinepenalty\@M | |
164 | + \Huge\bfseries #1\par\nobreak | |
165 | + \vskip 20\p@ | |
166 | + } | |
167 | +} | |
168 | + | |
169 | +\def\sectionsindent{\z@} | |
170 | +\def\sectionsbeforeskip{-3.5ex \@plus -0.1ex \@minus -0.2ex} | |
171 | +\def\sectionsafterskip{0.2ex \@plus 0.01ex} | |
172 | +% LaTeX scheme is {name}{level}{indent}{beforeskip}{afterskip}{style} | |
173 | +\renewcommand\section{ | |
174 | + \@startsection{section}{1}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% | |
175 | + {\sffamily\large\bfseries\phantomsection} | |
176 | +} | |
177 | +\renewcommand\subsection{ | |
178 | + \@startsection{subsection}{2}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% | |
179 | + {\sffamily\normalsize\itshape\phantomsection} | |
180 | +} | |
181 | +\renewcommand\subsubsection{ | |
182 | + \@startsection{subsubsection}{3}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% | |
183 | + %{\sffamily\MakeUppercase\small\itshape\phantomsection} | |
184 | + {\sffamily\normalsize\itshape\phantomsection} | |
185 | +} | |
186 | + | |
187 | +% Now remove vertical space after sections (same as class' font size) | |
188 | +\usepackage[compact]{titlesec} | |
189 | +\titlespacing{\section}{0pt}{*0}{-9pt} | |
190 | +\titlespacing{\subsection}{0pt}{*0}{-9pt} | |
191 | +\titlespacing{\subsubsection}{0pt}{*0}{-9pt} | |
192 | + | |
193 | +% Add references to TOC | |
194 | +\let\myrefname\refname | |
195 | +\renewcommand\refname{\addcontentsline{toc}{section}{\myrefname}\myrefname} | |
196 | + | |
197 | +% Typeset captions | |
198 | +\usepackage[small,bf,sf]{caption} | |
199 | +\captionsetup{font={small,sf},textfont=sf,justification=raggedright} | |
200 | + | |
201 | +% Typeset URLs | |
202 | +\usepackage{url} | |
203 | +% Define a (compact) global style for URLs, rather than the default one | |
204 | +% \def\url@leostyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\bf\ttfamily}}} | |
205 | +\def\url@leostyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\sffamily}}} | |
206 | +\def\url@crcstyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\scriptsize\sffamily}}} | |
207 | +\urlstyle{leo} | |
208 | + | |
209 | +%% Fix Hypenation - to restore hyphenation we need this package. | |
210 | +%% https://twitter.com/anjirokhan/status/546046683331973120 | |
211 | +\usepackage{ragged2e} | |
212 | + | |
213 | +\usepackage{enumitem} | |
214 | + | |
215 | +% Set footones ALWAYS at the bottom of the pages | |
216 | +\usepackage[bottom]{footmisc} | |
217 | + | |
218 | +% Optionally save space in lists (place this command after a list environment (e.g., itemize, enumerate, description) | |
219 | +\newcommand{\compresslist}{ | |
220 | + \vspace{-1em} | |
221 | + \setlength{\itemsep}{1pt} | |
222 | + \setlength{\parskip}{0pt} | |
223 | + \setlength{\parsep}{0pt} | |
224 | +} | |
225 | + | |
226 | +% ----------------------------------------------------------------------------- | |
227 | +% Hyperref for fancy typesetting, PDF metadata, and PDF bookmarks | |
228 | +\RequirePackage{color} | |
229 | +\definecolor{linkColor}{RGB}{6,125,233} | |
230 | +\RequirePackage[ | |
231 | + colorlinks, | |
232 | + citecolor=black, | |
233 | + linkcolor=black, | |
234 | + menucolor=black, | |
235 | + urlcolor=linkColor, | |
236 | + linktocpage, | |
237 | + naturalnames, | |
238 | + plainpages, | |
239 | + breaklinks=true, | |
240 | + bookmarksnumbered, | |
241 | + pdfstartview={FitH}, | |
242 | + final | |
243 | +]{hyperref} | |
244 | + | |
245 | +% Numbering is not allowed for any {sub{sub}}sections | |
246 | +\setcounter{secnumdepth}{-1} | |
247 | + | |
248 | +% ----------------------------------------------------------------------------- | |
249 | +% Text enhancements | |
250 | + | |
251 | +\doublehyphendemerits=9999 % No consecutive line hyphens | |
252 | +\brokenpenalty=9999 % No broken words across pages | |
253 | +\widowpenalty=9999 % Almost no widows at bottom of page | |
254 | +\clubpenalty=9999 % Almost no orphans at top of page | |
255 | +\interfootnotelinepenalty=9999 % Almost never break footnotes | |
256 | + | |
257 | +% ----------------------------------------------------------------------------- | |
258 | +% Allow placing an optional teaser image below author(s) name | |
259 | + | |
260 | +\newcommand{\acm@empty}{} | |
261 | +\newcommand{\acm@teaser}{} | |
262 | +\newcommand{\teaser}[1]{\renewcommand{\acm@teaser}{#1}} | |
263 | + | |
264 | +% ----------------------------------------------------------------------------- | |
265 | +% Authors handling | |
266 | + | |
267 | +\gdef\numberofauthors#1{} | |
268 | +\newcommand{\alignauthor}[1]{% | |
269 | + \parbox[t]{0.5\linewidth}{\raggedright#1}% | |
270 | +} | |
271 | +\newcommand{\affaddr}[1]{#1} | |
272 | +\newcommand{\email}[1]{#1} | |
273 | + | |
274 | +% ----------------------------------------------------------------------------- | |
275 | +% Typeset first page | |
276 | + | |
277 | +\renewcommand{\maketitle}{ | |
278 | + % allocate paper title | |
279 | + \begin{minipage}[t]{0.19\textwidth}\mbox{}\end{minipage}% | |
280 | + \begin{minipage}[b]{0.81\textwidth} | |
281 | + \rule{1.03\textwidth}{3pt} | |
282 | + \renewcommand\baselinestretch{0.75} | |
283 | + \usefont{OT1}{phv}{bc}{n}\selectfont | |
284 | + \raggedright\Huge\bfseries\@title\par | |
285 | + \end{minipage} | |
286 | + | |
287 | + \vfil | |
288 | + | |
289 | + % allocate authors, optional teaser, ... | |
290 | +% \begin{minipage}[b][0.74\textheight][b]{\linewidth} | |
291 | +% \begin{minipage}[t][0.2\textheight][t]{\linewidth}\mbox{}\end{minipage} | |
292 | + \begin{minipage}[t][0.76\textheight][t]{\linewidth} | |
293 | + \ifx\acm@teaser\acm@empty | |
294 | + \begin{minipage}[t][0.5\textheight][t]{\linewidth}{\small\@author}\end{minipage} | |
295 | + \else | |
296 | + \small\@author\par | |
297 | + \vfill | |
298 | + \begingroup | |
299 | + \def\@captype{figure} | |
300 | + \acm@teaser | |
301 | + \endgroup\par | |
302 | + \fi | |
303 | + | |
304 | + \vfil | |
305 | + | |
306 | + % ... and ACM copyright | |
307 | + \rule{\columnwidth}{0.5pt} | |
308 | + {\scriptsize\@copyrightinfo \\} | |
309 | + \end{minipage} | |
310 | + | |
311 | + % avoid title overlapping with abstract | |
312 | + \begin{minipage}[t][0.2\textheight][t]{\linewidth}\mbox{}\end{minipage} | |
313 | +} | |
314 | + | |
315 | +% ----------------------------------------------------------------------------- | |
316 | +% Default copyright strip | |
317 | +\copyrightinfo{Paste the appropriate copyright statement here. ACM | |
318 | + now supports three different copyright statements: | |
319 | + \begin{itemize}[noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt] | |
320 | + \item ACM copyright: ACM holds the copyright on the work. This is | |
321 | + the historical approach. | |
322 | + \item License: The author(s) retain copyright, but ACM receives an | |
323 | + exclusive publication license. | |
324 | + \item Open Access: The author(s) wish to pay for the work to be open | |
325 | + access. The additional fee must be paid to ACM. | |
326 | + \end{itemize} | |
327 | + This text field is large enough to hold the appropriate release | |
328 | + statement assuming it is single spaced in a sans-serif 7 point | |
329 | + font. \\ \textcolor{red}{Every submission will be assigned their own | |
330 | + unique DOI string to be included here.}} | |
331 | + | |
332 | +% ----------------------------------------------------------------------------- | |
333 | +% Including bibspacing.sty inline from http://bit.ly/1vlKdb0 | |
334 | + | |
335 | +% \newdimen\bibindent | |
336 | +% \setlength\bibindent{1.5em} | |
337 | +% \newdimen\bibspacing | |
338 | +% \setlength\bibspacing\z@ | |
339 | +% \renewenvironment{thebibliography}[1]{% | |
340 | +% \section*{\refname | |
341 | +% \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% | |
342 | +% \list{\@biblabel{\@arabic\c@enumiv}}% | |
343 | +% {\settowidth\labelwidth{\@biblabel{#1}}% | |
344 | +% \leftmargin\labelwidth | |
345 | +% \advance\leftmargin\labelsep | |
346 | +% \itemsep\z@skip % should this be commented out? | |
347 | +% \parsep\z@skip % should this be commented out? | |
348 | +% \@openbib@code | |
349 | +% \usecounter{enumiv}% | |
350 | +% \let\p@enumiv\@empty | |
351 | +% \renewcommand\theenumiv{\@arabic\c@enumiv}}% | |
352 | +% \sloppy\clubpenalty4000\widowpenalty4000% | |
353 | +% \sfcode`\.\@m} | |
354 | +% {\def\@noitemerr | |
355 | +% {\@latex@warning{Empty `thebibliography' environment}}% | |
356 | +% \endlist} | |
357 | + | |
358 | +%% https://code.google.com/p/tufte-latex/source/browse/tufte-common.def | |
359 | + | |
360 | +% Paragraph indentation and separation for marginal text | |
361 | +\newcommand{\@tufte@margin@par}{% | |
362 | + \setlength{\RaggedRightParindent}{0.5pc}% | |
363 | + \setlength{\JustifyingParindent}{0.5pc}% | |
364 | + \setlength{\parindent}{0.5pc}% | |
365 | + \setlength{\parskip}{0pt}% | |
366 | +} | |
367 | + | |
368 | +%% | |
369 | +% The placeins package provides the \FloatBarrier command. This forces | |
370 | +% LaTeX to place all of the floats before proceeding. We'll use this to | |
371 | +% keep the float (figure and table) numbers in sequence. | |
372 | +\RequirePackage{placeins} | |
373 | + | |
374 | +%% | |
375 | +% Margin float environment | |
376 | + | |
377 | +\newsavebox{\@tufte@margin@floatbox} | |
378 | +\newenvironment{@tufte@margin@float}[2][-1.2ex]% | |
379 | + {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order. | |
380 | + \begin{lrbox}{\@tufte@margin@floatbox}% | |
381 | + \begin{minipage}{\marginparwidth}% | |
382 | + %% \@tufte@caption@font% | |
383 | + \def\@captype{#2}% | |
384 | + \hbox{}\vspace*{#1}% | |
385 | + %% \@tufte@caption@justification% | |
386 | + \@tufte@margin@par% | |
387 | + \noindent% | |
388 | + } | |
389 | + {\end{minipage}% | |
390 | + \end{lrbox}% | |
391 | + \marginpar{\usebox{\@tufte@margin@floatbox}}% | |
392 | + } | |
393 | + | |
394 | + | |
395 | +%% | |
396 | +% Margin figure environment | |
397 | + | |
398 | +\newenvironment{marginfigure}[1][-1.2ex]% | |
399 | + {\begin{@tufte@margin@float}[#1]{figure}} | |
400 | + {\end{@tufte@margin@float}} | |
401 | + | |
402 | + | |
403 | +%% | |
404 | +% Margin table environment | |
405 | + | |
406 | +\newenvironment{margintable}[1][-1.2ex]% | |
407 | + {\begin{@tufte@margin@float}[#1]{table}} | |
408 | + {\end{@tufte@margin@float}} | |
409 | + | |
410 | +%% | |
411 | +% Auto-detects the proper text alignment based on the various class options | |
412 | + | |
413 | +\newcommand*{\@tufte@justification@autodetect}{% | |
414 | + \ifthenelse{\boolean{@tufte@justified}}% | |
415 | + {\justifying}% | |
416 | + {\RaggedRight}% | |
417 | +} | |
418 | + | |
419 | +%% | |
420 | +% Forces the outer edge of the caption to be set ragged. | |
421 | +% Therefore, on verso pages it's ragged left, and on recto pages it's ragged right. | |
422 | + | |
423 | +\newcommand*{\@tufte@justification@caption@outer}{% | |
424 | + \ifthenelse{\boolean{@tufte@float@recto}}% | |
425 | + {\RaggedRight}% | |
426 | + {\RaggedLeft}% | |
427 | +} | |
428 | + | |
429 | +\newcommand*{\@tufte@justification@outer}{% | |
430 | + \@tufte@checkoddpage% | |
431 | + \ifthenelse{\boolean{@tufte@odd@page}}% | |
432 | + {\RaggedRight}% | |
433 | + {\RaggedLeft}% | |
434 | +} | |
435 | + | |
436 | +%% | |
437 | +% For the CCSXML 2012 Categories | |
438 | + | |
439 | +\let\@concepts\@empty | |
440 | +% Support for CCSXML file | |
441 | +\RequirePackage{comment} | |
442 | +\excludecomment{CCSXML} | |
443 | + | |
444 | +% New concepts scheme | |
445 | +% | |
446 | +% The first argument is the significance, the | |
447 | +% second is the concept(s) | |
448 | +% | |
449 | +\newcommand\ccsdesc[2][100]{% | |
450 | + \ccsdesc@parse#1~#2~} | |
451 | +% | |
452 | +% The parser of the expression Significance~General~Specific | |
453 | +% | |
454 | +\def\ccsdesc@parse#1~#2~#3~{% | |
455 | + \expandafter\ifx\csname CCS@#2\endcsname\relax | |
456 | + \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }% | |
457 | + \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi | |
458 | + \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{% | |
459 | + \ifnum#1>499\textbf{#3; }\else | |
460 | + \ifnum#1>299\textit{#3; }\else | |
461 | + #3; \fi\fi}} | |
462 | + | |
463 | +\newcommand\printccsdesc{% | |
464 | + \ifx\@concepts\@empty\else | |
465 | + \if@twocolumn | |
466 | + \section*{CCS Concepts} | |
467 | + \@concepts | |
468 | + \else \small | |
469 | + \quotation{\@concepts}% | |
470 | + \fi | |
471 | + \fi} | |
472 | + | |
473 | +%% | |
474 | +% Pulling in citation formatting from `sigchi.cls' file. | |
475 | + | |
476 | +\parindent 0pt | |
477 | +\typeout{Using 'Abbrev' bibliography style} | |
478 | +\newcommand\bibyear[2]{% | |
479 | + \unskip\quad\ignorespaces#1\unskip | |
480 | + \if#2..\quad \else \quad#2 \fi | |
481 | +} | |
482 | +\newcommand{\bibemph}[1]{{\em#1}} | |
483 | +\newcommand{\bibemphic}[1]{{\em#1\/}} | |
484 | +\newcommand{\bibsc}[1]{{\sc#1}} | |
485 | +\def\@normalcite{% | |
486 | + \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}% | |
487 | +} | |
488 | +\def\@citeNB{% | |
489 | + \def\@cite##1##2{##1\if@tempswa , ##2\fi}% | |
490 | +} | |
491 | +\def\@citeRB{% | |
492 | + \def\@cite##1##2{##1\if@tempswa , ##2\fi]}% | |
493 | +} | |
494 | +\def\start@cite#1#2{% | |
495 | + \edef\citeauthoryear##1##2##3{% | |
496 | + ###1% | |
497 | + \ifnum#2=\z@ \else\ ###2\fi | |
498 | + }% | |
499 | + \ifnum#1=\thr@@ | |
500 | + \let\@@cite\@citeyear | |
501 | + \else | |
502 | + \let\@@cite\@citenormal | |
503 | + \fi | |
504 | + \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}% | |
505 | +} | |
506 | +\def\cite{\start@cite23} | |
507 | +\def\citeNP{\cite*} | |
508 | +\def\citeA{\start@cite10} | |
509 | +\def\citeANP{\citeA*} | |
510 | +\def\shortcite{\start@cite23} | |
511 | +\def\shortciteNP{\shortcite*} | |
512 | +\def\shortciteA{\start@cite20} | |
513 | +\def\shortciteANP{\shortciteA*} | |
514 | +\def\citeyear{\start@cite30} | |
515 | +\def\citeyearNP{\citeyear*} | |
516 | +\def\citeN{% | |
517 | + \@citeRB | |
518 | + \def\citeauthoryear##1##2##3{##1\ [##3% | |
519 | + \def\reserved@a{##1}% | |
520 | + \def\citeauthoryear####1####2####3{% | |
521 | + \def\reserved@b{####1}% | |
522 | + \ifx\reserved@a\reserved@b | |
523 | + ####3% | |
524 | + \else | |
525 | + \errmessage{Package acmart Error: author mismatch | |
526 | + in \string\citeN^^J^^J% | |
527 | + See the acmart package documentation for explanation}% | |
528 | + \fi | |
529 | + }% | |
530 | + }% | |
531 | + \@ifstar\@citeyear\@citeyear | |
532 | +} | |
533 | +\def\shortciteN{% | |
534 | + \@citeRB | |
535 | + \def\citeauthoryear##1##2##3{##2\ [##3% | |
536 | + \def\reserved@a{##2}% | |
537 | + \def\citeauthoryear####1####2####3{% | |
538 | + \def\reserved@b{####2}% | |
539 | + \ifx\reserved@a\reserved@b | |
540 | + ####3% | |
541 | + \else | |
542 | + \errmessage{Package acmart Error: author mismatch | |
543 | + in \string\shortciteN^^J^^J% | |
544 | + See the acmart package documentation for explanation}% | |
545 | + \fi | |
546 | + }% | |
547 | + }% | |
548 | + \@ifstar\@citeyear\@citeyear % changed from "\@ifstart" 12 Jan 2000 gkmt | |
549 | +} | |
550 | + | |
551 | + \def\@citenormal{% | |
552 | + \@ifnextchar [{\@tempswatrue\@citex;} | |
553 | + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 | |
554 | +} | |
555 | +\def\@citeyear{% | |
556 | + \@ifnextchar [{\@tempswatrue\@citex,}% | |
557 | + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 | |
558 | +} | |
559 | +\def\@citex#1[#2]#3{% | |
560 | + \let\@citea\@empty | |
561 | + \@cite{% | |
562 | + \@for\@citeb:=#3\do{% | |
563 | + \@citea | |
564 | + \def\@citea{#1, }% % GERRY FIX FOR BABEL 3/20/2009 -- SO THAT YOU GET [1, 2] IN THE BODY TEXT | |
565 | + \edef\@citeb{\expandafter\@iden\@citeb}% | |
566 | + \if@filesw | |
567 | + \immediate\write\@auxout{\string\citation{\@citeb}}% | |
568 | + \fi | |
569 | + \@ifundefined{b@\@citeb}{% | |
570 | + {\bf ?}% | |
571 | + \@warning{% | |
572 | + Citation `\@citeb' on page \thepage\space undefined% | |
573 | + }% | |
574 | + }% | |
575 | + {\csname b@\@citeb\endcsname}% | |
576 | + }% | |
577 | + }{#2}% | |
578 | +} | |
579 | +\let\@biblabel\@gobble | |
580 | +\newdimen\bibindent | |
581 | +\bibindent=0em | |
582 | +\newskip\bibsep % [jdf] allow bib space tweaking | |
583 | +\bibsep 2pt \@plus 1pt \@minus 1pt % [jdf] initial spacing between ref entries | |
584 | +\setcounter{enumi}{1} | |
585 | +\def\thebibliography#1{% | |
586 | +%% Comment this to have blue DOI links. | |
587 | +\makeatletter | |
588 | +\def\url@leostyle{% | |
589 | +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\color{black}\small\bf\ttfamily}}} | |
590 | +\makeatother | |
591 | +\urlstyle{leo} | |
592 | +%% | |
593 | + \section{% | |
594 | + {REFERENCES} | |
595 | + \@mkboth{{\refname}}{{\refname}}% | |
596 | + }% | |
597 | +% \list{[\arabic{enumi}]}{% | |
598 | + \list{\arabic{enumi}.}{% DLC | |
599 | +% \settowidth\labelwidth{[#1]}% | |
600 | + \settowidth\labelwidth{#1.}% DLC | |
601 | + \leftmargin\labelwidth | |
602 | + \advance\leftmargin\labelsep | |
603 | + \advance\leftmargin\bibindent | |
604 | + \itemindent -\bibindent | |
605 | + \listparindent \itemindent | |
606 | + \usecounter{enumi} | |
607 | + \itemsep\bibsep% [jdf] standard spacing between references | |
608 | + }% | |
609 | + \let\newblock\@empty | |
610 | + \raggedright %% 7 JAN 2000 gkmt | |
611 | + \sloppy | |
612 | + \sfcode`\.=1000\relax | |
613 | +} | |
614 | + | |
615 | + | |
616 | +\gdef\balancecolumns | |
617 | +{\vfill\eject | |
618 | +\global\@colht=\textheight | |
619 | +\global\ht\@cclv=\textheight | |
620 | +} | |
621 | + | |
622 | +% That's all folks! | |
623 | +\endinput | ... | ... |
... | ... | @@ -0,0 +1,1676 @@ |
1 | +% CHI Proceedings Template. | |
2 | +% | |
3 | +% FILENAME: sigchi.cls | |
4 | +% | |
5 | +% SOURCE: See https://github.com/sigchi for latest official version. | |
6 | +% | |
7 | +% NOTE: If you wish to edit this document, please list edits properly | |
8 | +% in the CHANGELOG section and not scattered through the code. | |
9 | +% | |
10 | +% CHANGELOG: | |
11 | +% | |
12 | +% 2015-12-10 Daniel Ashbrook Switch 7-bit fonts to 8-bit | |
13 | +% | |
14 | +% 2015-03-21 David A. Shamma Updating for new format and Github | |
15 | +% repo for CHI 2016. | |
16 | +% | |
17 | +% 2014-07-30 Scooter Morris Updated to add DOI text to copyright | |
18 | +% footer | |
19 | +% | |
20 | +% 2011-10-19 DanCo Added \sloppy to reduce overfull lines per Sheridan | |
21 | +% | |
22 | +% 2011-08-28 Jean-Daniel Fekete Re-added flushleft in \terms & | |
23 | +% \category, added compatibility for the caption package | |
24 | +% | |
25 | +% 2006 Andrew Duchowski Updated the metafont names to use more | |
26 | +% modern Berry font naming schemes. | |
27 | +% | |
28 | +% 2002-07-30 JS/GM Fix to vertical spacing before Proofs | |
29 | +% | |
30 | +% 2002-07-29 Georgia Fixed bug in sub-sub-section numbering in | |
31 | +% paragraphs | |
32 | +% | |
33 | +% 1999-09-11 Gerry Murry Allowance Made to switch default fonts | |
34 | +% between those systems using METAFONT and those using 'Type 1' or | |
35 | +% 'Truetype' fonts. See LINE NUMBER 266 for details. Also provided | |
36 | +% for enumerated/annotated Corollaries 'surrounded' by enumerated | |
37 | +% Theorems (line 838). | |
38 | +% | |
39 | +% Modified from ACM_PROC_ARTICLE-SP DOCUMENT STYLE by G.K.M. Tobin | |
40 | +% August-October 1999. Adapted from ARTICLE document style by Ken | |
41 | +% Traub, Olin Shivers also using elements of esub2acm.cls. Modified | |
42 | +% from ARTICLE DOCUMENT STYLE -- Released 16 March 1988 for LaTeX | |
43 | +% version 2.09 by Leslie Lamport, 16 March 1988. | |
44 | +% | |
45 | +% MISC: | |
46 | +% | |
47 | +% Fixed the format to match the Word template and added a \teaser | |
48 | +% command to add a teaser image. | |
49 | +% | |
50 | +% Made the Permission Statement / Conference Info / Copyright Info | |
51 | +% 'user definable' in the source .tex file OR automatic if not | |
52 | +% specified. This 'sp' version does NOT produce the permission block. | |
53 | +% | |
54 | +% Major change in January 2000 was to include a "blank line" in | |
55 | +% between new paragraphs. This involved major changes to the, then, | |
56 | +% acmproc-sp.cls 1.0SP file, precipitating a 'new' name: | |
57 | +% "acm_proc_article-sp.cls" V2.01SP. Footnotes inside table cells | |
58 | +% using \minipage (Oct. 2002) | |
59 | +% | |
60 | +% LICENSE: Public domain: You are free to do whatever you want with | |
61 | +% this template. If you improve this in any way, please submit a | |
62 | +% pull request to the Github repository. | |
63 | +% | |
64 | +% ---- Start of example ---- | |
65 | +% | |
66 | +% \documentclass{sigchi} | |
67 | +% \usepackage{times} | |
68 | +% \pagenumbering{arabic} % Arabic page numbers for submission. | |
69 | +% % Remove this line to eliminate page numbers | |
70 | +% % for the camera ready copy | |
71 | +% \title{The Title} | |
72 | +% \numberofauthors{2} | |
73 | +% \author{ | |
74 | +% \alignauthor Author 1 | |
75 | +% \affaddr{Affiliation}\\ | |
76 | +% \affaddr{Affiliation}\\ | |
77 | +% \email{author@a.com} | |
78 | +% \alignauthor Author 2 | |
79 | +% \affaddr{Affiliation}\\ | |
80 | +% \affaddr{Affiliation}\\ | |
81 | +% \email{author2@b.com} | |
82 | +% } | |
83 | +% | |
84 | +%\begin{document} | |
85 | +%\maketitle | |
86 | +%\abstract{This is the abstract} | |
87 | +%\keywords{Put author keywords here} | |
88 | +%\classification{The ACM Classification keywords here.} | |
89 | +% | |
90 | +%\section{Introduction} | |
91 | +% ... | |
92 | +% | |
93 | +% ---- End of example ---- | |
94 | +% | |
95 | +% For the ACM Tracking Purposes | |
96 | +\def\fileversion{V0.20} | |
97 | +\def\filedate{March 21, 2015} | |
98 | +\def\docdate {\filedate} | |
99 | +% Packages | |
100 | +\usepackage{epsfig} | |
101 | +\usepackage{amssymb} | |
102 | +\usepackage{amsmath} | |
103 | +\usepackage{amsfonts} | |
104 | +%%% ACM_PROC_ARTICLE-SP is a document style for producing two-column camera-ready pages for | |
105 | +%%% ACM conferences, according to ACM specifications. The main features of | |
106 | +%%% this style are: | |
107 | +%%% | |
108 | +%%% 1) Two columns. | |
109 | +%%% 2) Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of | |
110 | +%%% 2pc, hence columns are 20pc wide and 55.5pc tall. (6pc =3D 1in, approx) | |
111 | +%%% 3) First page has title information, and an extra 6pc of space at the | |
112 | +%%% bottom of the first column for the ACM copyright notice. | |
113 | +%%% 4) Text is 9pt on 10pt baselines; titles (except main) are 9pt bold. | |
114 | +%%% | |
115 | +%%% | |
116 | +%%% There are a few restrictions you must observe: | |
117 | +%%% | |
118 | +%%% 1) You cannot change the font size; ACM wants you to use 9pt. | |
119 | +%%% 3) You must start your paper with the \maketitle command. Prior to the | |
120 | +%%% \maketitle you must have \title and \author commands. If you have a | |
121 | +%%% \date command it will be ignored; no date appears on the paper, since | |
122 | +%%% the proceedings will have a date on the front cover. | |
123 | +%%% 4) Marginal paragraphs, tables of contents, lists of figures and tables, | |
124 | +%%% and page headings are all forbidden. | |
125 | +%%% 5) The `figure' environment will produce a figure one column wide; if you | |
126 | +%%% want one that is two columns wide, use `figure*'. | |
127 | +%%% | |
128 | +% | |
129 | +%%% Copyright Space: | |
130 | +%%% This style automatically leaves 1" blank space at the bottom of page 1/ | |
131 | +%%% column 1. This space can optionally be filled with some text using the | |
132 | +%%% \toappear{...} command. If used, this command must be BEFORE the \maketitle | |
133 | +%%% command. If this command is defined AND [preprint] is on, then the | |
134 | +%%% space is filled with the {...} text (at the bottom); otherwise, it is | |
135 | +%%% blank. If you use \toappearbox{...} instead of \toappear{...} then a | |
136 | +%%% box will be drawn around the text (if [preprint] is on). | |
137 | +%%% | |
138 | +%%% A typical usage looks like this: | |
139 | +%%% \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian | |
140 | +%%% Embalming Technique, June 1991, Alfaretta, Georgia.} | |
141 | +%%% This will be included in the preprint, and left out of the conference | |
142 | +%%% version. | |
143 | +%%% | |
144 | +%%% WARNING: | |
145 | +%%% Some dvi-ps converters heuristically allow chars to drift from their | |
146 | +%%% true positions a few pixels. This may be noticeable with the 9pt sans-serif | |
147 | +%%% bold font used for section headers. | |
148 | +%%% You may turn this hackery off via the -e option: | |
149 | +%%% dvips -e 0 foo.dvi >foo.ps | |
150 | +%%% | |
151 | + | |
152 | +\typeout{} | |
153 | + | |
154 | +\typeout{Document Class SIGCHI} | |
155 | + | |
156 | +\typeout{Available at https://github.com/sigchi.} | |
157 | + | |
158 | +\typeout{} | |
159 | + | |
160 | +\typeout{- <May 11, 2016> Updated by Florian Heller to accept ACM copyright commands.} | |
161 | + | |
162 | +\typeout{- <March 21, 2015> Updated by David A. Shamma for CHI 2016.} | |
163 | + | |
164 | +\typeout{- <July 30, 2014> Updated for for 2014 by William Hudson and | |
165 | + Jean-Daniel Fekete.} | |
166 | + | |
167 | +\typeout{- <October 19, 2010> Updated for 2011 by Manas Tungare.} | |
168 | + | |
169 | +\typeout{Shamelessly copied from} | |
170 | + | |
171 | +\typeout{- <September 7, 2000> Modified by Jan O. Borchers from | |
172 | + `chiproceedings'} | |
173 | + | |
174 | +\typeout{- <October 2, 2002> Modified by G.K.M. Tobin from | |
175 | + `acm_proc_article-sp'} | |
176 | + | |
177 | +\typeout{- <May 22, 1989> Hacked from `acmconf' 4/91 by | |
178 | + shivers@cs.cmu.edu, 4/93 by theobald@cs.mcgill.ca} | |
179 | + | |
180 | +\typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.} | |
181 | + | |
182 | +\typeout{} | |
183 | + | |
184 | +% Options taken from ACM LaTeX template. FH, May 11 2016 | |
185 | +% New option code by BV | |
186 | + | |
187 | +\newcount\ACM@basesize | |
188 | +\ACM@basesize=9\relax | |
189 | +\DeclareOption{9pt}{\ACM@basesize=9\relax} | |
190 | +\DeclareOption{10pt}{\ACM@basesize=10\relax} | |
191 | +\DeclareOption{11pt}{\ClassError{sig-alternate}{The `11pt' option is | |
192 | + not allowed}{sig-alternate now exists in 9pt and 10pt versions only}} | |
193 | +\DeclareOption{12pt}{\ClassError{sig-alternate}{The `12pt' option is | |
194 | + not allowed}{sig-alternate now exists in 9pt and 10pt versions only}} | |
195 | + | |
196 | +\ExecuteOptions{9pt} | |
197 | +\ProcessOptions | |
198 | + | |
199 | +\def\doi#1{\def\@doi{#1}} | |
200 | +\doi{http://dx.doi.org/10.1145/0000000.0000000} | |
201 | + | |
202 | +\let\@concepts\@empty | |
203 | + | |
204 | + | |
205 | +\oddsidemargin 1.9025cm % [jdf] stick to CHI Formating Guidelines | |
206 | +\evensidemargin 1.9025cm % [jdf] idem | |
207 | +\advance\oddsidemargin by -1in % Correct for LaTeX gratuitousness | |
208 | +\advance\evensidemargin by -1in % Correct for LaTeX gratuitousness | |
209 | +\marginparwidth 0pt % Margin pars are not allowed. | |
210 | +\marginparsep 11pt % Horizontal space between outer margin and | |
211 | + % marginal note | |
212 | + | |
213 | + % Top of page: | |
214 | +\topmargin 2.2cm % [jdf] stick to CHI Formating Guidelines | |
215 | +%\topmargin 6.5pc % Nominal distance from top of page to top of % 00-09-07 job (for A4) | |
216 | + % box containing running head. | |
217 | +\advance\topmargin by -1in % Correct for LaTeX gratuitousness | |
218 | +\headheight 0pt % Height of box containing running head. | |
219 | +\headsep 0pt % Space between running head and text. | |
220 | + % Bottom of page: | |
221 | +\footskip 30pt % Distance from baseline of box containing foot | |
222 | + % to baseline of last line of text. | |
223 | +\@ifundefined{footheight}{\newdimen\footheight}{}% this is for LaTeX2e | |
224 | +\footheight 12pt % Height of box containing running foot. | |
225 | + | |
226 | + | |
227 | +%% Must redefine the top margin so there's room for headers and | |
228 | +%% page numbers if you are using the preprint option. Footers | |
229 | +%% are OK as is. Olin. | |
230 | +\advance\topmargin by -37pt % Leave 37pt above text for headers | |
231 | +\headheight 12pt % Height of box containing running head. | |
232 | +\headsep 25pt % Space between running head and text. | |
233 | + | |
234 | +\textheight 23cm % [jdf] stick to CHI Formating Guidelines | |
235 | +\textwidth 18cm % [jdf] stick to CHI Formating Guidelines | |
236 | + % For two-column mode: | |
237 | +\columnsep 8.5mm % [jdf] stick to CHI Formating Guidelines | |
238 | +\columnseprule 0pt % Width of rule between columns. | |
239 | +\hfuzz 1pt % Allow some variation in column width, otherwise it's | |
240 | + % too hard to typeset in narrow columns. | |
241 | + | |
242 | +\footnotesep 5.6pt % Height of strut placed at the beginning of every | |
243 | + % footnote =3D height of normal \footnotesize strut, | |
244 | + % so no extra space between footnotes. | |
245 | + | |
246 | +\skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and | |
247 | + % top of first footnote. | |
248 | +\floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved | |
249 | + % to top or bottom of text page. | |
250 | +\textfloatsep 18pt plus 2pt minus 4pt % Space between main text and floats | |
251 | + % at top or bottom of page. | |
252 | +\intextsep 11pt plus 2pt minus 2pt % Space between in-text figures and | |
253 | + % text. | |
254 | +\@ifundefined{@maxsep}{\newdimen\@maxsep}{}% this is for LaTeX2e | |
255 | +\@maxsep 18pt % The maximum of \floatsep, | |
256 | + % \textfloatsep and \intextsep (minus | |
257 | + % the stretch and shrink). | |
258 | +\dblfloatsep 11pt plus 2pt minus 2pt % Same as \floatsep for double-column | |
259 | + % figures in two-column mode. | |
260 | +\dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column | |
261 | + % floats. | |
262 | +\@ifundefined{@dblmaxsep}{\newdimen\@dblmaxsep}{}% this is for LaTeX2e | |
263 | +\@dblmaxsep 18pt % The maximum of \dblfloatsep and | |
264 | + % \dbltexfloatsep. | |
265 | +\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be | |
266 | + % 0pt plus ...) | |
267 | +\@fpsep 8pt plus 2fil % Space between floats on float page/column. | |
268 | +\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be | |
269 | + % 0pt plus ... ) | |
270 | +\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...) | |
271 | +\@dblfpsep 8pt plus 2fil % Space between floats on float page. | |
272 | +\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be | |
273 | + % 0pt plus ... ) | |
274 | +\marginparpush 5pt % Minimum vertical separation between two marginal | |
275 | + % notes. | |
276 | + | |
277 | +\parskip 0pt % Extra vertical space between paragraphs. | |
278 | + % Set to 0pt outside sections, to keep section heads | |
279 | + % uniformly spaced. The value of parskip is set | |
280 | + % to leading value _within_ sections. | |
281 | + % 12 Jan 2000 gkmt | |
282 | +\parindent 0pt % Width of paragraph indentation. | |
283 | +%\partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to | |
284 | + % \parskip and \topsep, added when user | |
285 | + % leaves blank line before environment. | |
286 | +\partopsep 0pt % 00-09-07 job | |
287 | + | |
288 | +\doublehyphendemerits=9999 % No consecutive line hyphens | |
289 | +\brokenpenalty=9999 % No broken words across pages | |
290 | +\widowpenalty=9999 % Almost no widows at bottom of page | |
291 | +\clubpenalty=9999 % Almost no orphans at top of page | |
292 | +\interfootnotelinepenalty=9999 % Almost never break footnotes | |
293 | + | |
294 | +\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1] | |
295 | +\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2] | |
296 | +\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3] | |
297 | + | |
298 | +\@beginparpenalty -\@lowpenalty % Before a list or paragraph environment. | |
299 | +\@endparpenalty -\@lowpenalty % After a list or paragraph environment. | |
300 | +\@itempenalty -\@lowpenalty % Between list items. | |
301 | + | |
302 | +\@namedef{ds@10pt}{\@latexerr{The `10pt' option is not allowed in the `acmconf' | |
303 | + document style.}\@eha} | |
304 | +\@namedef{ds@11pt}{\@latexerr{The `11pt' option is not allowed in the `acmconf' | |
305 | + document style.}\@eha} | |
306 | +\@namedef{ds@12pt}{\@latexerr{The `12pt' option is not allowed in the `acmconf' | |
307 | + document style.}\@eha} | |
308 | + | |
309 | +\@options | |
310 | + | |
311 | +\lineskip 2pt % \lineskip is 1pt for all font sizes. | |
312 | +\normallineskip 2pt | |
313 | +\def\baselinestretch{1} | |
314 | + | |
315 | +\abovedisplayskip 9pt plus2pt minus4.5pt% | |
316 | +\belowdisplayskip \abovedisplayskip | |
317 | +\abovedisplayshortskip \z@ plus3pt% | |
318 | +\belowdisplayshortskip 5.4pt plus3pt minus3pt% | |
319 | +\let\@listi\@listI % Setting of \@listi added 9 Jun 87 | |
320 | + | |
321 | +\def\small{\@setsize\small{9pt}\viiipt\@viiipt | |
322 | +\abovedisplayskip 7.6pt plus 3pt minus 4pt% | |
323 | +\belowdisplayskip \abovedisplayskip | |
324 | +\abovedisplayshortskip \z@ plus2pt% | |
325 | +\belowdisplayshortskip 3.6pt plus2pt minus 2pt | |
326 | +\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87 | |
327 | +\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt | |
328 | +\itemsep \parsep}} | |
329 | + | |
330 | +\def\footnotesize{\@setsize\footnotesize{9pt}\ixpt\@ixpt | |
331 | +\abovedisplayskip 6.4pt plus 2pt minus 4pt% | |
332 | +\belowdisplayskip \abovedisplayskip | |
333 | +\abovedisplayshortskip \z@ plus 1pt% | |
334 | +\belowdisplayshortskip 2.7pt plus 1pt minus 2pt | |
335 | +\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87 | |
336 | +\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt | |
337 | +\itemsep \parsep}} | |
338 | + | |
339 | +\newcount\aucount | |
340 | +\newcount\originalaucount | |
341 | +\newdimen\auwidth | |
342 | +\auwidth=\textwidth | |
343 | +\newdimen\auskip | |
344 | +\newcount\auskipcount | |
345 | +\newdimen\auskip | |
346 | +\global\auskip=1pc | |
347 | +\newdimen\allauboxes | |
348 | +\allauboxes=\auwidth | |
349 | +\newtoks\addauthors | |
350 | + | |
351 | +\newtoks\subtitletext | |
352 | +\gdef\subtitle#1{\subtitletext={#1}} | |
353 | + | |
354 | +\gdef\additionalauthors#1{\addauthors={#1}} | |
355 | + | |
356 | +\gdef\numberofauthors#1{\global\aucount=#1 | |
357 | +\ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi% | |
358 | +\global\auskipcount=\aucount\global\advance\auskipcount by -1 % [jdf] fix | |
359 | +\global\multiply\auskipcount by 2 | |
360 | +\global\multiply\auskip by \auskipcount | |
361 | +\global\advance\auwidth by -\auskip | |
362 | +\global\divide\auwidth by \aucount | |
363 | +\global\advance\auwidth by -5pt} % [jdf] tabular add some horizontal space | |
364 | + | |
365 | +% \and was modified to count the number of authors. GKMT 12 Aug 1999 | |
366 | +\def\alignauthor{% % \begin{tabular} | |
367 | + \end{tabular} % | |
368 | + \hskip 1pt % [jdf] allow break for more than 3 authors | |
369 | + \begin{tabular}[t]{p{\auwidth}}% | |
370 | + \centering\baselineskip 13pt}% [jdf] added more vertical spacing | |
371 | + | |
372 | +% *** NOTE *** NOTE *** NOTE *** NOTE *** | |
373 | +% If you have 'font problems' then you may need | |
374 | +% to change these, e.g. 'arialb' instead of "arialbd". | |
375 | +% Gerry Murray 11/11/1999 | |
376 | +% *** OR ** comment out block A and activate block B or vice versa. | |
377 | +% ********************************************** | |
378 | +% | |
379 | +% -- Start of block A -- (Type 1 or Truetype fonts) | |
380 | +%\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd | |
381 | +%\newfont{\secit}{timesbi at 12pt} %13 Jan 00 gkmt | |
382 | +%\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi | |
383 | +%\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to timesbi gm 2/4/2000 | |
384 | +% % because "normal" is italic, "italic" is Roman | |
385 | +%\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd | |
386 | +%\newfont{\ttlit}{arialbi at 18pt} % 13 Jan 00 gkmt | |
387 | +%\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial | |
388 | +%\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt | |
389 | +%\newfont{\subttlbf}{arialbd at 14pt} % 13 Jan 00 gkmt | |
390 | +%\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial | |
391 | +%\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt | |
392 | +%\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial | |
393 | +%\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt | |
394 | +%\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial | |
395 | +%\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times | |
396 | +%\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi | |
397 | +%\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times | |
398 | +%\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times | |
399 | + | |
400 | +% ********************************************* | |
401 | +% -- End of block A -- | |
402 | +% | |
403 | +% | |
404 | +% -- Start of block B -- METAFONT | |
405 | +% +++++++++++++++++++++++++++++++++++++++++++++ | |
406 | +% Next (default) block for those using Metafont | |
407 | +% Gerry Murray 11/11/1999 | |
408 | +% *** THIS BLOCK FOR THOSE USING METAFONT ***** | |
409 | +% ********************************************* | |
410 | +%%\newfont{\secfnt}{ptmb at 12pt} | |
411 | +%\newfont{\secfnt}{phvb at 9pt} % 00-09-07 job | |
412 | +%%\newfont{\secit}{ptmbi at 12pt} %13 Jan 00 gkmt | |
413 | +%\newfont{\secit}{phvbo at 9pt} %13 Jan 00 gkmt % 00-09-07 job | |
414 | +%%\newfont{\subsecfnt}{ptmri at 11pt} | |
415 | +%\newfont{\subsecfnt}{phvro at 9pt} % 00-09-07 job | |
416 | +%%\newfont{\subsecit}{ptmbi at 11pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000 | |
417 | +%\newfont{\subsecit}{phvr at 9pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000 % 00-09-07 job | |
418 | +% % because "normal" is italic, "italic" is Roman | |
419 | +%\newfont{\ttlfnt}{phvb at 18pt} | |
420 | +%\newfont{\ttlit}{phvbo at 18pt} % GM 2/4/2000 | |
421 | +%\newfont{\subttlfnt}{phvr at 14pt} | |
422 | +%\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000 | |
423 | +%\newfont{\subttlbf}{phvb at 14pt} % 13 Jan 00 gkmt | |
424 | +%%\newfont{\aufnt}{phvr at 12pt} | |
425 | +%\newfont{\aufnt}{ptmb at 12pt} % 00-09-07 job | |
426 | +%%\newfont{\auit}{phvro at 12pt} % GM 2/4/2000 | |
427 | +%\newfont{\auit}{ptmbo at 12pt} % GM 2/4/2000 % 00-09-07 job | |
428 | +%%\newfont{\affaddr}{phvr at 10pt} | |
429 | +%\newfont{\affaddr}{ptmr at 12pt} % 00-09-07 job | |
430 | +%%\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000 | |
431 | +%\newfont{\affaddrit}{ptmro at 12pt} % GM 2/4/2000 % 00-09-07 job | |
432 | +%%\newfont{\eaddfnt}{phvr at 12pt} | |
433 | +%\newfont{\eaddfnt}{ptmr at 12pt} % 00-09-07 job | |
434 | +%%\newfont{\ixpt}{ptmr at 9pt} | |
435 | +%\newfont{\ixpt}{ptmr at 10pt} % 00-09-07 job | |
436 | +%\newfont{\confname}{ptmri at 8pt} | |
437 | +%\newfont{\crnotice}{ptmr at 8pt} | |
438 | +%%\newfont{\ninept}{ptmr at 9pt} | |
439 | +%\newfont{\ninept}{ptmr at 10pt} % 00-09-07 job | |
440 | +% ********************************************* | |
441 | +% -- End of block B -- | |
442 | +% | |
443 | +% | |
444 | +% -- Start of block C -- METAFONT (modern usage) | |
445 | +% +++++++++++++++++++++++++++++++++++++++++++++ | |
446 | +% Next (default) block for those using Metafont | |
447 | +% Andrew Duchowski 06/19/2006 | |
448 | +% *** THIS BLOCK FOR THOSE USING METAFONT ***** | |
449 | +% ********************************************* | |
450 | +% notes: 7t fonts are 7-bit latex, 8t fonts are T1 fonts | |
451 | +\newfont{\secfnt}{phvb8t at 9pt} | |
452 | +\newfont{\secit}{phvbo8t at 9pt} | |
453 | +\newfont{\subsecfnt}{phvro8t at 9pt} | |
454 | +\newfont{\subsecit}{phvr8t at 9pt} | |
455 | +\newfont{\ttlfnt}{phvb8t at 18pt} | |
456 | +\newfont{\ttlit}{phvbo8t at 18pt} | |
457 | +\newfont{\subttlfnt}{phvr8t at 14pt} | |
458 | +\newfont{\subttlit}{phvro8t at 14pt} | |
459 | +\newfont{\subttlbf}{phvb8t at 14pt} | |
460 | +\newfont{\aufnt}{ptmb8t at 12pt} | |
461 | +\newfont{\auit}{ptmbo8t at 12pt} | |
462 | +\newfont{\affaddr}{ptmr8t at 12pt} | |
463 | +\newfont{\affaddrit}{ptmro8t at 12pt} | |
464 | +\newfont{\eaddfnt}{ptmr8t at 12pt} | |
465 | +\newfont{\ixpt}{ptmr8t at 10pt} | |
466 | +\newfont{\confname}{ptmri8t at 8pt} | |
467 | +\newfont{\crnotice}{ptmr8t at 8pt} | |
468 | +\newfont{\ninept}{ptmr8t at 10pt} | |
469 | +% +++++++++++++++++++++++++++++++++++++++++++++ | |
470 | +% -- End of block C -- | |
471 | + | |
472 | +%\def\email#1{{{\eaddfnt{\vskip 4pt#1}}}} | |
473 | +\def\email#1{{{\eaddfnt{#1}}}} % 00-09-07 job | |
474 | + | |
475 | +\def\addauthorsection{\ifnum\originalaucount>3 | |
476 | + \section{Additional Authors}\the\addauthors | |
477 | + \fi} | |
478 | + | |
479 | +\newcount\savesection | |
480 | +\newcount\sectioncntr | |
481 | +\global\sectioncntr=1 | |
482 | + | |
483 | +\setcounter{secnumdepth}{0} | |
484 | + | |
485 | +\def\appendix{\par | |
486 | +\section*{APPENDIX} | |
487 | +\setcounter{section}{0} | |
488 | + \setcounter{subsection}{0} | |
489 | + \def\thesection{\Alph{section}} } | |
490 | + | |
491 | + | |
492 | +%\leftmargini 22.5pt | |
493 | +\leftmargini 10pt % DLC | |
494 | +\leftmarginii 19.8pt % > \labelsep + width of '(m)' | |
495 | +\leftmarginiii 16.8pt % > \labelsep + width of 'vii.' | |
496 | +\leftmarginiv 15.3pt % > \labelsep + width of 'M.' | |
497 | +\leftmarginv 9pt | |
498 | +\leftmarginvi 9pt | |
499 | + | |
500 | +\leftmargin\leftmargini | |
501 | +\labelsep 4.5pt | |
502 | +\labelwidth\leftmargini\advance\labelwidth-\labelsep | |
503 | + | |
504 | +\def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt% | |
505 | +%\topsep 7.2pt plus 2pt minus 4pt% | |
506 | +\topsep 0pt% % 00-09-07 job | |
507 | +\itemsep 3.6pt plus 2pt minus 1pt} | |
508 | + | |
509 | +\let\@listi\@listI | |
510 | +\@listi | |
511 | + | |
512 | +\def\@listii{\leftmargin\leftmarginii | |
513 | + \labelwidth\leftmarginii\advance\labelwidth-\labelsep | |
514 | + \topsep 3.6pt plus 2pt minus 1pt | |
515 | + \parsep 1.8pt plus 0.9pt minus 0.9pt | |
516 | + \itemsep \parsep} | |
517 | + | |
518 | +\def\@listiii{\leftmargin\leftmarginiii | |
519 | + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep | |
520 | + \topsep 1.8pt plus 0.9pt minus 0.9pt | |
521 | + \parsep \z@ \partopsep 1pt plus 0pt minus 1pt | |
522 | + \itemsep \topsep} | |
523 | + | |
524 | +\def\@listiv{\leftmargin\leftmarginiv | |
525 | + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} | |
526 | + | |
527 | +\def\@listv{\leftmargin\leftmarginv | |
528 | + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} | |
529 | + | |
530 | +\def\@listvi{\leftmargin\leftmarginvi | |
531 | + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} | |
532 | + | |
533 | +\def\labelenumi{\theenumi.} | |
534 | +\def\theenumi{\arabic{enumi}} | |
535 | + | |
536 | +\def\labelenumii{(\theenumii)} | |
537 | +\def\theenumii{\alph{enumii}} | |
538 | +\def\p@enumii{\theenumi} | |
539 | + | |
540 | +\def\labelenumiii{\theenumiii.} | |
541 | +\def\theenumiii{\roman{enumiii}} | |
542 | +\def\p@enumiii{\theenumi(\theenumii)} | |
543 | + | |
544 | +\def\labelenumiv{\theenumiv.} | |
545 | +\def\theenumiv{\Alph{enumiv}} | |
546 | +\def\p@enumiv{\p@enumiii\theenumiii} | |
547 | + | |
548 | +\def\labelitemi{$\bullet$} | |
549 | +\def\labelitemii{\bf --} | |
550 | +\def\labelitemiii{$\ast$} | |
551 | +\def\labelitemiv{$\cdot$} | |
552 | + | |
553 | +\def\verse{\let\\=\@centercr | |
554 | + \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent | |
555 | + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} | |
556 | +\let\endverse\endlist | |
557 | + | |
558 | +\def\quotation{\list{}{\listparindent 1.5em | |
559 | + \itemindent\listparindent | |
560 | + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} | |
561 | +\let\endquotation=\endlist | |
562 | + | |
563 | +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} | |
564 | +\let\endquote=\endlist | |
565 | + | |
566 | +\def\descriptionlabel#1{\hspace\labelsep \bf #1} | |
567 | +\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin | |
568 | + \let\makelabel\descriptionlabel}} | |
569 | + | |
570 | +\let\enddescription\endlist | |
571 | + | |
572 | +\def\theequation{\arabic{equation}} | |
573 | + | |
574 | +\arraycolsep 4.5pt % Half the space between columns in an array environment. | |
575 | +\tabcolsep 5.4pt % Half the space between columns in a tabular environment. | |
576 | +\arrayrulewidth .4pt % Width of rules in array and tabular environment. | |
577 | +\doublerulesep 1.8pt % Space between adjacent rules in array or tabular env. | |
578 | + | |
579 | +\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.) | |
580 | + | |
581 | +\skip\@mpfootins =\skip\footins | |
582 | + | |
583 | +\fboxsep =2.7pt % Space left between box and text by \fbox and \framebox. | |
584 | +\fboxrule =.4pt % Width of rules in box made by \fbox and \framebox. | |
585 | + | |
586 | +\def\thepart{\Roman{part}} % Roman numeral part numbers. | |
587 | +\def\thesection {\arabic{section}} | |
588 | +\def\thesubsection {\thesection.\arabic{subsection}} | |
589 | +%\def\thesubsubsection {\thesubsection.\arabic{subsubsection}} % GM 7/30/2002 | |
590 | +%\def\theparagraph {\thesubsubsection.\arabic{paragraph}} % GM 7/30/2002 | |
591 | +\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} | |
592 | + | |
593 | +\def\@pnumwidth{1.55em} | |
594 | +\def\@tocrmarg {2.55em} | |
595 | +\def\@dotsep{4.5} | |
596 | +\setcounter{tocdepth}{3} | |
597 | + | |
598 | +\def\tableofcontents{\@latexerr{\tableofcontents: Tables of contents are not | |
599 | + allowed in the `acmconf' document style.}\@eha} | |
600 | + | |
601 | +\def\l@part#1#2{\addpenalty{\@secpenalty} | |
602 | + \addvspace{2.25em plus 1pt} % space above part line | |
603 | + \begingroup | |
604 | + \@tempdima 3em % width of box holding part number, used by | |
605 | + \parindent \z@ \rightskip \@pnumwidth %% \numberline | |
606 | + \parfillskip -\@pnumwidth | |
607 | + {\large \bf % set line in \large boldface | |
608 | + \leavevmode % TeX command to enter horizontal mode. | |
609 | + #1\hfil \hbox to\@pnumwidth{\hss #2}}\par | |
610 | + \nobreak % Never break after part entry | |
611 | + \endgroup} | |
612 | + | |
613 | +\def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break | |
614 | + \addvspace{1.0em plus 1pt} % space above toc entry | |
615 | + \@tempdima 1.5em % width of box holding section number | |
616 | + \begingroup | |
617 | + \parindent \z@ \rightskip \@pnumwidth | |
618 | + \parfillskip -\@pnumwidth | |
619 | + \bf % Boldface. | |
620 | + \leavevmode % TeX command to enter horizontal mode. | |
621 | + \advance\leftskip\@tempdima %% added 5 Feb 88 to conform to | |
622 | + \hskip -\leftskip %% 25 Jan 88 change to \numberline | |
623 | + #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par | |
624 | + \endgroup} | |
625 | + | |
626 | + | |
627 | +\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} | |
628 | +\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} | |
629 | +\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} | |
630 | +\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}} | |
631 | + | |
632 | +\def\listoffigures{\@latexerr{\listoffigures: Lists of figures are not | |
633 | + allowed in the `acmconf' document style.}\@eha} | |
634 | + | |
635 | +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} | |
636 | + | |
637 | +\def\listoftables{\@latexerr{\listoftables: Lists of tables are not | |
638 | + allowed in the `acmconf' document style.}\@eha} | |
639 | +\let\l@table\l@figure | |
640 | + | |
641 | +\def\footnoterule{\kern-3\p@ | |
642 | + \hrule width .4\columnwidth | |
643 | + \kern 2.6\p@} % The \hrule has default height of .4pt . | |
644 | +% ------ | |
645 | +\long\def\@makefntext#1{\noindent | |
646 | +%\hbox to .5em{\hss$^{\@thefnmark}$}#1} % original | |
647 | +\hbox to .5em{\hss\textsuperscript{\@thefnmark}}#1} % C. Clifton / GM Oct. 2nd. 2002 | |
648 | +% ------- | |
649 | + | |
650 | +\long\def\@maketntext#1{\noindent | |
651 | +#1} | |
652 | + | |
653 | +\long\def\@maketitlenotetext#1#2{\noindent | |
654 | + \hbox to 1.8em{\hss$^{#1}$}#2} | |
655 | + | |
656 | +\setcounter{topnumber}{2} | |
657 | +\def\topfraction{.7} | |
658 | +\setcounter{bottomnumber}{1} | |
659 | +\def\bottomfraction{.3} | |
660 | +\setcounter{totalnumber}{3} | |
661 | +\def\textfraction{.2} | |
662 | +\def\floatpagefraction{.5} | |
663 | +\setcounter{dbltopnumber}{2} | |
664 | +\def\dbltopfraction{.7} | |
665 | +\def\dblfloatpagefraction{.5} | |
666 | + | |
667 | +% According to the CHI specifications, captions should be centered. | |
668 | +% This looks kind of bad for multi-line captions, so I only center | |
669 | +% 1-line captions. | |
670 | +\long\def\@makecaption#1#2{ | |
671 | + \vskip 2pt % \baselineskip | |
672 | + \setbox\@tempboxa\hbox{\small | |
673 | +\textbf{#1. #2}} % DLC | |
674 | + \ifdim \wd\@tempboxa >\hsize % IF longer than one line: | |
675 | + \small\textbf{#1. #2}\par % THEN set as ordinary paragraph. | |
676 | + \else % ELSE center. | |
677 | + \hbox to\hsize{\hfil\box\@tempboxa\hfil}\par | |
678 | + \fi} | |
679 | + | |
680 | +\@ifundefined{figure}{\newcounter {figure}} % this is for LaTeX2e | |
681 | + | |
682 | +\def\fps@figure{tbp} | |
683 | +\def\ftype@figure{1} | |
684 | +\def\ext@figure{lof} | |
685 | +\def\fnum@figure{Figure \thefigure} | |
686 | +\def\figure{\@float{figure}} | |
687 | +\def\endfigure{\end@float} | |
688 | +\@namedef{figure*}{\@dblfloat{figure}} | |
689 | +\@namedef{endfigure*}{\end@dblfloat} | |
690 | + | |
691 | +\@ifundefined{table}{\newcounter {table}} % this is for LaTeX2e | |
692 | + | |
693 | +\def\fps@table{tbp} | |
694 | +\def\ftype@table{2} | |
695 | +\def\ext@table{lot} | |
696 | +\def\fnum@table{Table \thetable} | |
697 | +\def\table{\@float{table}} | |
698 | +\def\endtable{\end@float} | |
699 | +\@namedef{table*}{\@dblfloat{table}} | |
700 | +\@namedef{endtable*}{\end@dblfloat} | |
701 | + | |
702 | +% [jdf] create a \teaser command for adding a figure in title page | |
703 | +\newcommand{\chi@empty}{} | |
704 | +\newcommand{\chi@teaser}{} | |
705 | +\newcommand{\teaser}[1]{\renewcommand{\chi@teaser}{#1}} | |
706 | + | |
707 | +\newlength{\teaserspace} | |
708 | +\setlength{\teaserspace}{0.25in} | |
709 | +% [jdf] end teaser | |
710 | + | |
711 | +\newtoks\titleboxnotes | |
712 | +\newcount\titleboxnoteflag | |
713 | + | |
714 | +\def\maketitle{\par | |
715 | + \begingroup | |
716 | + \def\thefootnote{\fnsymbol{footnote}} | |
717 | + \def\@makefnmark{\hbox | |
718 | + to 0pt{$^{\@thefnmark}$\hss}} | |
719 | + \twocolumn[\@maketitle] | |
720 | +\@thanks | |
721 | + \endgroup | |
722 | + \setcounter{footnote}{0} | |
723 | + \let\maketitle\relax | |
724 | + \let\@maketitle\relax | |
725 | + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@subtitle{}\let\thanks\relax | |
726 | + \@copyrightspace} % JRB 2008-08-13 this line was commented out for some reason | |
727 | + % which meant that the copyright space wasn't reserved. | |
728 | + % I re-enabled it. | |
729 | + | |
730 | +% actual class setup happens here: | |
731 | + \NeedsTeXFormat{LaTeX2e} | |
732 | + \ProvidesClass{sigchi} [2011/06/06 - V0.16] % DLC | |
733 | + \RequirePackage{latexsym}% QUERY: are these two really needed? | |
734 | + | |
735 | +\def\@height{height} | |
736 | +\def\@width{width} | |
737 | +\def\@minus{minus} | |
738 | +\def\@plus{plus} | |
739 | +\def\hb@xt@{\hbox to} | |
740 | +\newif\if@faircopy | |
741 | +\@faircopyfalse | |
742 | +\def\ds@faircopy{\@faircopytrue} | |
743 | + | |
744 | +\def\ds@preprint{\@faircopyfalse} | |
745 | + | |
746 | +\@twosidetrue | |
747 | +\@mparswitchtrue | |
748 | +\def\ds@draft{\overfullrule 5\p@} | |
749 | + | |
750 | +\lineskip \p@ | |
751 | +\normallineskip \p@ | |
752 | +\def\baselinestretch{1} | |
753 | +\def\@ptsize{0} %needed for amssymbols.sty | |
754 | + | |
755 | +% allow use of old-style font change commands in LaTeX2e | |
756 | +\@maxdepth\maxdepth | |
757 | +% | |
758 | +\DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm} | |
759 | +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} | |
760 | +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} | |
761 | +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} | |
762 | +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} | |
763 | +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} | |
764 | +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} | |
765 | +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} | |
766 | +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} | |
767 | + | |
768 | + \renewcommand{\rmdefault}{cmr} % was 'ttm' | |
769 | +% Note! I have also found 'mvr' to work ESPECIALLY well. | |
770 | +% Gerry - October 1999 | |
771 | +% You may need to change your LV1times.fd file so that sc is | |
772 | +% mapped to cmcsc - -for smallcaps -- that is if you decide | |
773 | +% to change {cmr} to {times} above. (Not recommended) | |
774 | + \renewcommand{\@ptsize}{} | |
775 | + \renewcommand{\normalsize}{% | |
776 | +% \@setfontsize\normalsize\@ixpt{10.5\p@}%\ninept% | |
777 | + \@setfontsize\normalsize\@xpt{11\p@}%\ninept% % from 9/10.5 to 10/11 00-09-07 job | |
778 | + \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@ | |
779 | + \belowdisplayskip \abovedisplayskip | |
780 | + \abovedisplayshortskip 6\p@ \@minus 3\p@ | |
781 | + \belowdisplayshortskip 6\p@ \@minus 3\p@ | |
782 | + \let\@listi\@listI | |
783 | + } | |
784 | + | |
785 | + \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt{8\p@}} | |
786 | + \newcommand\tiny{\@setfontsize\tiny\@vpt{6\p@}} | |
787 | + \newcommand\large{\@setfontsize\large\@xiipt{14\p@}} | |
788 | + \newcommand\Large{\@setfontsize\Large\@xivpt{18\p@}} | |
789 | + \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20\p@}} | |
790 | + \newcommand\huge{\@setfontsize\huge\@xxpt{25\p@}} | |
791 | + \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30\p@}} | |
792 | + | |
793 | +\normalsize | |
794 | + | |
795 | +% make aubox hsize/number of authors up to 3, less gutter | |
796 | +% then showbox gutter showbox gutter showbox -- GKMT Aug 99 | |
797 | +%\newbox\@acmtitlebox % [jdf] no use of the box | |
798 | +\def\@maketitle{\newpage | |
799 | + \null | |
800 | +%\setbox\@acmtitlebox\vbox{ % [jdf] box not used | |
801 | +\baselineskip 20pt % [jdf] no skip | |
802 | + \vskip 1em % [jdf] removed Vertical space above title. | |
803 | + \begin{center} | |
804 | + {\ttlfnt \@title\par} % Title set in 18pt Helvetica (Arial) bold size. | |
805 | + \vskip 0.5ex % [jdf] Vertical space after title. | |
806 | +%This should be the subtitle. | |
807 | +{\subttlfnt \the\subtitletext\par}\vskip 0.7ex%\fi [jdf] less vertical space | |
808 | + {\baselineskip 16pt\aufnt % each author set in \12 pt Arial, in a | |
809 | + \lineskip .5em % tabular environment | |
810 | + \begin{tabular}[t]{c}\@author | |
811 | + \end{tabular}\par} | |
812 | + \vskip 1em % [jdf] reduced Vertical space after author. | |
813 | + \end{center}% % [jdf] begin add teaser | |
814 | + \ifx\chi@teaser\chi@empty \else% | |
815 | + \begingroup% | |
816 | + \def\@captype{figure}% | |
817 | + \chi@teaser% | |
818 | + \endgroup\par% | |
819 | + \vspace{\teaserspace}% % [jdf] end teaser | |
820 | + \fi} | |
821 | +% \dimen0=\ht\@acmtitlebox % [jdf] removed box stuff | |
822 | +% \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT | |
823 | +% \advance\dimen0 by -8.75pc\relax % Increased space for title box -- KBT % 00-09-07 job (decreased) | |
824 | +% \unvbox\@acmtitlebox | |
825 | +% \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi} | |
826 | + | |
827 | + | |
828 | +\newcount\titlenotecount | |
829 | +\global\titlenotecount=0 | |
830 | +\newtoks\tntoks | |
831 | +\newtoks\tntokstwo | |
832 | +\newtoks\tntoksthree | |
833 | +\newtoks\tntoksfour | |
834 | +\newtoks\tntoksfive | |
835 | + | |
836 | +\def\abstract{ | |
837 | +\ifnum\titlenotecount>0 % was =1 | |
838 | + \insert\footins{% | |
839 | + \reset@font\footnotesize | |
840 | + \interlinepenalty\interfootnotelinepenalty | |
841 | + \splittopskip\footnotesep | |
842 | + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM | |
843 | + \hsize\columnwidth \@parboxrestore | |
844 | + \protected@edef\@currentlabel{% | |
845 | + }% | |
846 | + \color@begingroup | |
847 | +\ifnum\titlenotecount=1 | |
848 | + \@maketntext{% | |
849 | + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\@finalstrut\strutbox}% | |
850 | +\fi | |
851 | +\ifnum\titlenotecount=2 | |
852 | + \@maketntext{% | |
853 | + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% | |
854 | +\@maketntext{% | |
855 | + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\@finalstrut\strutbox}% | |
856 | +\fi | |
857 | +\ifnum\titlenotecount=3 | |
858 | + \@maketntext{% | |
859 | + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% | |
860 | +\@maketntext{% | |
861 | + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% | |
862 | +\@maketntext{% | |
863 | + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\@finalstrut\strutbox}% | |
864 | +\fi | |
865 | +\ifnum\titlenotecount=4 | |
866 | + \@maketntext{% | |
867 | + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% | |
868 | +\@maketntext{% | |
869 | + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% | |
870 | +\@maketntext{% | |
871 | + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}% | |
872 | +\@maketntext{% | |
873 | + \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\@finalstrut\strutbox}% | |
874 | +\fi | |
875 | +\ifnum\titlenotecount=5 | |
876 | + \@maketntext{% | |
877 | + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% | |
878 | +\@maketntext{% | |
879 | + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% | |
880 | +\@maketntext{% | |
881 | + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}% | |
882 | +\@maketntext{% | |
883 | + \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\par\@finalstrut\strutbox}% | |
884 | +\@maketntext{% | |
885 | + \raisebox{4pt}{$\P$}\rule\z@\footnotesep\ignorespaces\the\tntoksfive\@finalstrut\strutbox}% | |
886 | +\fi | |
887 | + \color@endgroup} %g} | |
888 | +\fi | |
889 | +\setcounter{footnote}{0} | |
890 | +\section*{ABSTRACT}\normalsize %\the\parskip \the\baselineskip%\ninept | |
891 | +} | |
892 | + | |
893 | +\def\endabstract{\if@twocolumn\else\endquotation\fi} | |
894 | + | |
895 | +\def\keywords#1{%\if@twocolumn | |
896 | +\section*{Author Keywords} | |
897 | +\begin{flushleft}#1\end{flushleft} | |
898 | +%\else \small | |
899 | +%\quotation #1 | |
900 | +%\fi | |
901 | +} | |
902 | + | |
903 | +\def\classification#1{%\if@twocolumn | |
904 | +\section*{ACM Classification Keywords} | |
905 | +\begin{flushleft}#1\end{flushleft} | |
906 | +%\else \small | |
907 | +%\quotation\the\parskip | |
908 | +%\fi | |
909 | +} | |
910 | + | |
911 | +% I've pulled the check for 2 cols, since proceedings are _always_ | |
912 | +% two-column 11 Jan 2000 gkmt | |
913 | +\def\terms#1{%\if@twocolumn | |
914 | +\section*{General Terms} | |
915 | +\begin{flushleft}#1\end{flushleft} | |
916 | +%\else \small | |
917 | +%\quotation\the\parskip | |
918 | +%\fi | |
919 | +} | |
920 | + | |
921 | +% -- Classification needs to be a bit smart due to optionals - Gerry/Georgia November 2nd. 1999 | |
922 | +\newcount\catcount | |
923 | +\global\catcount=1 | |
924 | + | |
925 | +\def\category#1#2#3{% | |
926 | +\ifnum\catcount=1 | |
927 | +\section*{ACM Classification Keywords} % DLC | |
928 | +\advance\catcount by 1\else{\unskip; }\fi | |
929 | + \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}% | |
930 | +} | |
931 | + | |
932 | +\def\@category#1#2#3[#4]{% | |
933 | + \begingroup | |
934 | + \let\and\relax | |
935 | +% #1 [\textbf{#2}]% | |
936 | + #1 #2% % DLC | |
937 | + \if!#4!% | |
938 | + \if!#3!\else : #3\fi | |
939 | + \else | |
940 | + :\space | |
941 | + \if!#3!\else #3\kern\z@---\hskip\z@\fi | |
942 | + \textit{#4}% | |
943 | + \fi | |
944 | + \endgroup | |
945 | +} | |
946 | +% | |
947 | + | |
948 | +%%% This section (written by KBT) handles the 1" box in the lower left | |
949 | +%%% corner of the left column of the first page by creating a picture, | |
950 | +%%% and inserting the predefined string at the bottom (with a negative | |
951 | +%%% displacement to offset the space allocated for a non-existent | |
952 | +%%% caption). | |
953 | +%%% | |
954 | +\newtoks\copyrightnotice | |
955 | +\def\ftype@copyrightbox{8} | |
956 | +\def\@copyrightspace{ | |
957 | +\@float{copyrightbox}[b] | |
958 | +\begin{center} | |
959 | +\setlength{\unitlength}{1pc} | |
960 | +\ifnum\ACM@basesize=9 | |
961 | +\begin{picture}(20,6) %Space for copyright notice | |
962 | +\put(0,-0.95){\crnotice{\@toappear}} | |
963 | +\end{picture} | |
964 | +\fi | |
965 | +\ifnum\ACM@basesize=10 | |
966 | +\begin{picture}(20,7) %Space for copyright notice | |
967 | +\put(0,-0.95){\crnotice{\@toappear}} | |
968 | +\end{picture} | |
969 | +\fi | |
970 | +\end{center} | |
971 | +\end@float} | |
972 | + | |
973 | +\def\@toappear{} % Default setting blank - commands below change this. | |
974 | +\long\def\toappear#1{\def\@toappear{\parbox[b]{20pc}{\baselineskip 9pt#1}}} | |
975 | +\def\toappearbox#1{\def\@toappear{\raisebox{5pt}{\framebox[20pc]{\parbox[b]{19pc}{#1}}}}} | |
976 | + | |
977 | +\newtoks\conf | |
978 | +\newtoks\confinfo | |
979 | +\def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}} | |
980 | + | |
981 | + | |
982 | +% Introduce a "chi_draft" option which conditionally enables marginpars with a warning. | |
983 | +\let\oldmarginpar\marginpar | |
984 | +\renewcommand{\marginpar}[2][]{\@latexerr{The marginpar command is not allowed in the | |
985 | + `acmconf' document style.}\@eha} | |
986 | +\DeclareOption{chi_draft}{ | |
987 | + \marginparwidth 40pt | |
988 | + \renewcommand{\marginpar}[2][]{\@latex@warning{The marginpar command is not allowed in the `acmconf' | |
989 | + document style. Remove all occurences before final document submission.}\oldmarginpar[#1]{#2}} | |
990 | +} | |
991 | +% Immediately execute the options at this point. Reason is discussed | |
992 | +% here: https://tex.stackexchange.com/questions/203387/ | |
993 | +\ProcessOptions | |
994 | + | |
995 | +\mark{{}{}} % Initializes TeX's marks | |
996 | + | |
997 | +\def\today{\ifcase\month\or | |
998 | + January\or February\or March\or April\or May\or June\or | |
999 | + July\or August\or September\or October\or November\or December\fi | |
1000 | + \space\number\day, \number\year} | |
1001 | + | |
1002 | +\def\@begintheorem#1#2{% | |
1003 | + \trivlist | |
1004 | + \item[% | |
1005 | + \hskip 10\p@ | |
1006 | + \hskip \labelsep | |
1007 | + {{\sc #1}\hskip 5\p@\relax#2.}% | |
1008 | + ] | |
1009 | + \it | |
1010 | +} | |
1011 | +\def\@opargbegintheorem#1#2#3{% | |
1012 | + \trivlist | |
1013 | + \item[% | |
1014 | + \hskip 10\p@ | |
1015 | + \hskip \labelsep | |
1016 | + {\sc #1\ #2\ % This mod by Gerry to enumerate corollaries | |
1017 | + \setbox\@tempboxa\hbox{(#3)} % and bracket the 'corollary title' | |
1018 | + \ifdim \wd\@tempboxa>\z@ % and retain the correct numbering of e.g. theorems | |
1019 | + \hskip 5\p@\relax % if they occur 'around' said corollaries. | |
1020 | + \box\@tempboxa % Gerry - Nov. 1999. | |
1021 | + \fi.}% | |
1022 | + ] | |
1023 | + \it | |
1024 | +} | |
1025 | +\newif\if@qeded | |
1026 | +\global\@qededfalse | |
1027 | + | |
1028 | +% -- original | |
1029 | +%\def\proof{% | |
1030 | +% \vspace{-\parskip} % GM July 2000 (for tighter spacing) | |
1031 | +% \global\@qededfalse | |
1032 | +% \@ifnextchar[{\@xproof}{\@proof}% | |
1033 | +%} | |
1034 | +% -- end of original | |
1035 | + | |
1036 | +% (JSS) Fix for vertical spacing bug - Gerry Murray July 30th. 2002 | |
1037 | +\def\proof{% | |
1038 | +\vspace{-\lastskip}\vspace{-\parsep}\penalty-51% | |
1039 | +\global\@qededfalse | |
1040 | +\@ifnextchar[{\@xproof}{\@proof}% | |
1041 | +} | |
1042 | + | |
1043 | +\def\endproof{% | |
1044 | + \if@qeded\else\qed\fi | |
1045 | + \endtrivlist | |
1046 | +} | |
1047 | +\def\@proof{% | |
1048 | + \trivlist | |
1049 | + \item[% | |
1050 | + \hskip 10\p@ | |
1051 | + \hskip \labelsep | |
1052 | + {\sc Proof.}% | |
1053 | + ] | |
1054 | + \ignorespaces | |
1055 | +} | |
1056 | +\def\@xproof[#1]{% | |
1057 | + \trivlist | |
1058 | + \item[\hskip 10\p@\hskip \labelsep{\sc Proof #1.}]% | |
1059 | + \ignorespaces | |
1060 | +} | |
1061 | +\def\qed{% | |
1062 | + \unskip | |
1063 | + \kern 10\p@ | |
1064 | + \begingroup | |
1065 | + \unitlength\p@ | |
1066 | + \linethickness{.4\p@}% | |
1067 | + \framebox(6,6){}% | |
1068 | + \endgroup | |
1069 | + \global\@qededtrue | |
1070 | +} | |
1071 | + | |
1072 | +\def\newdef#1#2{% | |
1073 | + \expandafter\@ifdefinable\csname #1\endcsname | |
1074 | + {\@definecounter{#1}% | |
1075 | + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% | |
1076 | + \global\@namedef{#1}{\@defthm{#1}{#2}}% | |
1077 | + \global\@namedef{end#1}{\@endtheorem}% | |
1078 | + }% | |
1079 | +} | |
1080 | +\def\@defthm#1#2{% | |
1081 | + \refstepcounter{#1}% | |
1082 | + \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}% | |
1083 | +} | |
1084 | +\def\@xdefthm#1#2{% | |
1085 | + \@begindef{#2}{\csname the#1\endcsname}% | |
1086 | + \ignorespaces | |
1087 | +} | |
1088 | +\def\@ydefthm#1#2[#3]{% | |
1089 | + \trivlist | |
1090 | + \item[% | |
1091 | + \hskip 10\p@ | |
1092 | + \hskip \labelsep | |
1093 | + {\it #2% | |
1094 | + \savebox\@tempboxa{#3}% | |
1095 | + \ifdim \wd\@tempboxa>\z@ | |
1096 | + \ \box\@tempboxa | |
1097 | + \fi.% | |
1098 | + }]% | |
1099 | + \ignorespaces | |
1100 | +} | |
1101 | +\def\@begindef#1#2{% | |
1102 | + \trivlist | |
1103 | + \item[% | |
1104 | + \hskip 10\p@ | |
1105 | + \hskip \labelsep | |
1106 | + {\it #1\ \rm #2.}% | |
1107 | + ]% | |
1108 | +} | |
1109 | +\def\theequation{\arabic{equation}} | |
1110 | + | |
1111 | +\newcounter{part} | |
1112 | +\newcounter{section} | |
1113 | +\newcounter{subsection}[section] | |
1114 | +\newcounter{subsubsection}[subsection] | |
1115 | +\newcounter{paragraph}[subsubsection] | |
1116 | +\def\thepart{\Roman{part}} | |
1117 | +\def\thesection{\arabic{section}} | |
1118 | +\def\thesubsection{\thesection.\arabic{subsection}} | |
1119 | +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} %removed \subsecfnt 29 July 2002 gkmt | |
1120 | +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} %removed \subsecfnt 29 July 2002 gkmt | |
1121 | + | |
1122 | +\newif\if@uchead | |
1123 | +\@ucheadfalse | |
1124 | + | |
1125 | +%% CHANGES: NEW NOTE | |
1126 | +%% NOTE: OK to use old-style font commands below, since they were | |
1127 | +%% suitably redefined for LaTeX2e | |
1128 | +%% END CHANGES | |
1129 | +\def\part{% | |
1130 | + \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@} | |
1131 | + {4\p@}{\normalsize\@ucheadtrue}% | |
1132 | +} | |
1133 | + | |
1134 | +% Rationale for changes made in next four definitions: | |
1135 | +% "Before skip" is made elastic to provide some give in setting columns (vs. | |
1136 | +% parskip, which is non-elastic to keep section headers "anchored" to their | |
1137 | +% subsequent text. | |
1138 | +% | |
1139 | +% "After skip" is minimized -- BUT setting it to 0pt resulted in run-in heads, despite | |
1140 | +% the documentation asserted only after-skip < 0pt would have result. | |
1141 | +% | |
1142 | +% Baselineskip added to style to ensure multi-line section titles, and section heads | |
1143 | +% followed by another section head rather than text, are decently spaced vertically. | |
1144 | +% 12 Jan 2000 gkmt | |
1145 | +\def\section{% | |
1146 | + \@startsection{section}{1}{\z@}{8pt plus 3pt minus 3pt}% | |
1147 | + {0.5pt}{\baselineskip=14pt\secfnt\@ucheadtrue}% | |
1148 | +} | |
1149 | + | |
1150 | +\def\subsection{% | |
1151 | + \@startsection{subsection}{2}{\z@}{8pt plus 3pt minus 3pt}% | |
1152 | + {0.5pt}{\baselineskip=14pt\secfnt}% | |
1153 | +} | |
1154 | +\def\subsubsection{% | |
1155 | + \@startsection{subsubsection}{3}{\z@}{4pt plus 2pt minus 1pt}% | |
1156 | + {0.5pt}{\baselineskip=14pt\subsecfnt}% | |
1157 | +} | |
1158 | + | |
1159 | +\def\paragraph{% | |
1160 | + \@startsection{paragraph}{3}{\z@}{4pt plus 2pt minus 1pt}% | |
1161 | + {0.5pt}{\baselineskip=14pt\subsecfnt}% | |
1162 | +} | |
1163 | + | |
1164 | +\let\@period=. | |
1165 | +\def\@startsection#1#2#3#4#5#6{% | |
1166 | + \if@noskipsec %gkmt, 11 aug 99 | |
1167 | + \global\let\@period\@empty | |
1168 | + \leavevmode | |
1169 | + \global\let\@period.% | |
1170 | + \fi | |
1171 | + \par | |
1172 | + \@tempskipa #4\relax | |
1173 | + \@afterindenttrue | |
1174 | + \ifdim \@tempskipa <\z@ | |
1175 | + \@tempskipa -\@tempskipa | |
1176 | + \@afterindentfalse | |
1177 | + \fi | |
1178 | + %\if@nobreak 11 Jan 00 gkmt | |
1179 | + %\everypar{} | |
1180 | + %\else | |
1181 | + \addpenalty\@secpenalty | |
1182 | + \addvspace\@tempskipa | |
1183 | + %\fi | |
1184 | + \parskip=0pt | |
1185 | + \@ifstar | |
1186 | + {\@ssect{#3}{#4}{#5}{#6}} | |
1187 | + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% | |
1188 | +} | |
1189 | + | |
1190 | + | |
1191 | +\def\@ssect#1#2#3#4#5{% | |
1192 | + \@tempskipa #3\relax | |
1193 | + \ifdim \@tempskipa>\z@ | |
1194 | + \begingroup | |
1195 | + #4{% | |
1196 | + \@hangfrom{\hskip #1}% | |
1197 | + \interlinepenalty \@M #5\@@par}% | |
1198 | + \endgroup | |
1199 | + \else | |
1200 | + \def\@svsechd{#4{\hskip #1\relax #5}}% | |
1201 | + \fi | |
1202 | + \par\nobreak | |
1203 | + \vskip -6pt % [jdf] less space between section as in the Word template | |
1204 | + \@xsect{#3}\parskip=6pt} % [jdf] paragraph skip shorter | |
1205 | + | |
1206 | + | |
1207 | +\def\@sect#1#2#3#4#5#6[#7]#8{% | |
1208 | + \ifnum #2>\c@secnumdepth | |
1209 | + \let\@svsec\@\refstepcounter{#1} | |
1210 | + \else | |
1211 | + \refstepcounter{#1}% | |
1212 | + \edef\@svsec{% | |
1213 | + \begingroup | |
1214 | + %\ifnum#2>2 \noexpand\rm \fi % changed to next 29 July 2002 gkmt | |
1215 | + \ifnum#2>2 \noexpand#6 \fi | |
1216 | + \csname the#1\endcsname | |
1217 | + \endgroup | |
1218 | + \ifnum #2=1\relax .\fi | |
1219 | + \hskip 1em | |
1220 | + }% | |
1221 | + \fi | |
1222 | + \@tempskipa #5\relax | |
1223 | + \ifdim \@tempskipa>\z@ | |
1224 | + \begingroup | |
1225 | + #6\relax | |
1226 | + \@hangfrom{\hskip #3\relax\@svsec}% | |
1227 | + \begingroup | |
1228 | + \interlinepenalty \@M | |
1229 | + \if@uchead | |
1230 | + \uppercase{#8}% | |
1231 | + \else | |
1232 | + #8% | |
1233 | + \fi | |
1234 | + \par | |
1235 | + \endgroup | |
1236 | + \endgroup | |
1237 | + \csname #1mark\endcsname{#7}% | |
1238 | + \par\nobreak | |
1239 | + \vskip -6pt % [jdf] less space between section as in the Word template | |
1240 | + \addcontentsline{toc}{#1}{% | |
1241 | + \ifnum #2>\c@secnumdepth \else | |
1242 | + \protect\numberline{\csname the#1\endcsname}% | |
1243 | + \fi | |
1244 | + #7% | |
1245 | + }% | |
1246 | + \else | |
1247 | + \def\@svsechd{% | |
1248 | + #6% | |
1249 | + \hskip #3\relax | |
1250 | + \@svsec | |
1251 | + \if@uchead | |
1252 | + \uppercase{#8}% | |
1253 | + \else | |
1254 | + #8% | |
1255 | + \fi | |
1256 | + \csname #1mark\endcsname{#7}% | |
1257 | + \addcontentsline{toc}{#1}{% | |
1258 | + \ifnum #2>\c@secnumdepth \else | |
1259 | + \protect\numberline{\csname the#1\endcsname}% | |
1260 | + \fi | |
1261 | + #7% | |
1262 | + }% | |
1263 | + }% | |
1264 | + \fi | |
1265 | + \@xsect{#5}\parskip=6pt% [jdf] shorter | |
1266 | +} | |
1267 | +\def\@xsect#1{% | |
1268 | + \@tempskipa #1\relax | |
1269 | + \ifdim \@tempskipa>\z@ | |
1270 | + \par | |
1271 | + \nobreak | |
1272 | + \vskip \@tempskipa | |
1273 | + \@afterheading | |
1274 | + \else | |
1275 | + \global\@nobreakfalse | |
1276 | + \global\@noskipsectrue | |
1277 | + \everypar{% | |
1278 | + \if@noskipsec | |
1279 | + \global\@noskipsecfalse | |
1280 | + \clubpenalty\@M | |
1281 | + \hskip -\parindent | |
1282 | + \begingroup | |
1283 | + \@svsechd | |
1284 | + \@period | |
1285 | + \endgroup | |
1286 | + \unskip | |
1287 | + \@tempskipa #1\relax | |
1288 | + \hskip -\@tempskipa | |
1289 | + \else | |
1290 | + \clubpenalty \@clubpenalty | |
1291 | + \everypar{}% | |
1292 | + \fi | |
1293 | + }% | |
1294 | + \fi | |
1295 | + \ignorespaces | |
1296 | +} | |
1297 | + | |
1298 | +\def\@trivlist{% | |
1299 | + \@topsepadd\topsep | |
1300 | + \if@noskipsec | |
1301 | + \global\let\@period\@empty | |
1302 | + \leavevmode | |
1303 | + \global\let\@period.% | |
1304 | + \fi | |
1305 | + \ifvmode | |
1306 | + \advance\@topsepadd\partopsep | |
1307 | + \else | |
1308 | + \unskip | |
1309 | + \par | |
1310 | + \fi | |
1311 | + \if@inlabel | |
1312 | + \@noparitemtrue | |
1313 | + \@noparlisttrue | |
1314 | + \else | |
1315 | + \@noparlistfalse | |
1316 | + \@topsep\@topsepadd | |
1317 | + \fi | |
1318 | + \advance\@topsep \parskip | |
1319 | + \leftskip\z@skip | |
1320 | + \rightskip\@rightskip | |
1321 | + \parfillskip\@flushglue | |
1322 | + \@setpar{\if@newlist\else{\@@par}\fi} | |
1323 | + \global\@newlisttrue | |
1324 | + \@outerparskip\parskip | |
1325 | +} | |
1326 | + | |
1327 | +%%% Actually, 'abbrev' works just fine as the default - Gerry Feb. 2000 | |
1328 | +%%% Bibliography style. | |
1329 | + | |
1330 | +\parindent 0pt | |
1331 | +\typeout{Using 'Abbrev' bibliography style} | |
1332 | +\newcommand\bibyear[2]{% | |
1333 | + \unskip\quad\ignorespaces#1\unskip | |
1334 | + \if#2..\quad \else \quad#2 \fi | |
1335 | +} | |
1336 | +\newcommand{\bibemph}[1]{{\em#1}} | |
1337 | +\newcommand{\bibemphic}[1]{{\em#1\/}} | |
1338 | +\newcommand{\bibsc}[1]{{\sc#1}} | |
1339 | +\def\@normalcite{% | |
1340 | + \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}% | |
1341 | +} | |
1342 | +\def\@citeNB{% | |
1343 | + \def\@cite##1##2{##1\if@tempswa , ##2\fi}% | |
1344 | +} | |
1345 | +\def\@citeRB{% | |
1346 | + \def\@cite##1##2{##1\if@tempswa , ##2\fi]}% | |
1347 | +} | |
1348 | +\def\start@cite#1#2{% | |
1349 | + \edef\citeauthoryear##1##2##3{% | |
1350 | + ###1% | |
1351 | + \ifnum#2=\z@ \else\ ###2\fi | |
1352 | + }% | |
1353 | + \ifnum#1=\thr@@ | |
1354 | + \let\@@cite\@citeyear | |
1355 | + \else | |
1356 | + \let\@@cite\@citenormal | |
1357 | + \fi | |
1358 | + \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}% | |
1359 | +} | |
1360 | +\def\cite{\start@cite23} | |
1361 | +\def\citeNP{\cite*} | |
1362 | +\def\citeA{\start@cite10} | |
1363 | +\def\citeANP{\citeA*} | |
1364 | +\def\shortcite{\start@cite23} | |
1365 | +\def\shortciteNP{\shortcite*} | |
1366 | +\def\shortciteA{\start@cite20} | |
1367 | +\def\shortciteANP{\shortciteA*} | |
1368 | +\def\citeyear{\start@cite30} | |
1369 | +\def\citeyearNP{\citeyear*} | |
1370 | +\def\citeN{% | |
1371 | + \@citeRB | |
1372 | + \def\citeauthoryear##1##2##3{##1\ [##3% | |
1373 | + \def\reserved@a{##1}% | |
1374 | + \def\citeauthoryear####1####2####3{% | |
1375 | + \def\reserved@b{####1}% | |
1376 | + \ifx\reserved@a\reserved@b | |
1377 | + ####3% | |
1378 | + \else | |
1379 | + \errmessage{Package acmart Error: author mismatch | |
1380 | + in \string\citeN^^J^^J% | |
1381 | + See the acmart package documentation for explanation}% | |
1382 | + \fi | |
1383 | + }% | |
1384 | + }% | |
1385 | + \@ifstar\@citeyear\@citeyear | |
1386 | +} | |
1387 | +\def\shortciteN{% | |
1388 | + \@citeRB | |
1389 | + \def\citeauthoryear##1##2##3{##2\ [##3% | |
1390 | + \def\reserved@a{##2}% | |
1391 | + \def\citeauthoryear####1####2####3{% | |
1392 | + \def\reserved@b{####2}% | |
1393 | + \ifx\reserved@a\reserved@b | |
1394 | + ####3% | |
1395 | + \else | |
1396 | + \errmessage{Package acmart Error: author mismatch | |
1397 | + in \string\shortciteN^^J^^J% | |
1398 | + See the acmart package documentation for explanation}% | |
1399 | + \fi | |
1400 | + }% | |
1401 | + }% | |
1402 | + \@ifstar\@citeyear\@citeyear % changed from "\@ifstart" 12 Jan 2000 gkmt | |
1403 | +} | |
1404 | + | |
1405 | + \def\@citenormal{% | |
1406 | + \@ifnextchar [{\@tempswatrue\@citex;} | |
1407 | + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 | |
1408 | +} | |
1409 | +\def\@citeyear{% | |
1410 | + \@ifnextchar [{\@tempswatrue\@citex,}% | |
1411 | + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 | |
1412 | +} | |
1413 | +\def\@citex#1[#2]#3{% | |
1414 | + \let\@citea\@empty | |
1415 | + \@cite{% | |
1416 | + \@for\@citeb:=#3\do{% | |
1417 | + \@citea | |
1418 | + \def\@citea{#1, }% % GERRY FIX FOR BABEL 3/20/2009 -- SO THAT YOU GET [1, 2] IN THE BODY TEXT | |
1419 | + \edef\@citeb{\expandafter\@iden\@citeb}% | |
1420 | + \if@filesw | |
1421 | + \immediate\write\@auxout{\string\citation{\@citeb}}% | |
1422 | + \fi | |
1423 | + \@ifundefined{b@\@citeb}{% | |
1424 | + {\bf ?}% | |
1425 | + \@warning{% | |
1426 | + Citation `\@citeb' on page \thepage\space undefined% | |
1427 | + }% | |
1428 | + }% | |
1429 | + {\csname b@\@citeb\endcsname}% | |
1430 | + }% | |
1431 | + }{#2}% | |
1432 | +} | |
1433 | +\let\@biblabel\@gobble | |
1434 | +\newdimen\bibindent | |
1435 | +\bibindent=0em | |
1436 | +\newskip\bibsep % [jdf] allow bib space tweaking | |
1437 | +\bibsep 2pt \@plus 1pt \@minus 1pt % [jdf] initial spacing between ref entries | |
1438 | +\setcounter{enumi}{1} | |
1439 | +\def\thebibliography#1{% | |
1440 | +%% Comment this to have blue DOI links. | |
1441 | +\makeatletter | |
1442 | +\def\url@leostyle{% | |
1443 | +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\color{black}\small\bf\ttfamily}}} | |
1444 | +\makeatother | |
1445 | +\urlstyle{leo} | |
1446 | +%% | |
1447 | + \section{% | |
1448 | + {References} | |
1449 | + \@mkboth{{\refname}}{{\refname}}% | |
1450 | + }% | |
1451 | +% \list{[\arabic{enumi}]}{% | |
1452 | + \list{\arabic{enumi}.}{% DLC | |
1453 | +% \settowidth\labelwidth{[#1]}% | |
1454 | + \settowidth\labelwidth{#1.}% DLC | |
1455 | + \leftmargin\labelwidth | |
1456 | + \advance\leftmargin\labelsep | |
1457 | + \advance\leftmargin\bibindent | |
1458 | + \itemindent -\bibindent | |
1459 | + \listparindent \itemindent | |
1460 | + \usecounter{enumi} | |
1461 | + \itemsep\bibsep% [jdf] standard spacing between references | |
1462 | + }% | |
1463 | + \let\newblock\@empty | |
1464 | + \raggedright %% 7 JAN 2000 gkmt | |
1465 | + \sloppy | |
1466 | + \sfcode`\.=1000\relax | |
1467 | +} | |
1468 | + | |
1469 | + | |
1470 | +\gdef\balancecolumns | |
1471 | +{\vfill\eject | |
1472 | +\global\@colht=\textheight | |
1473 | +\global\ht\@cclv=\textheight | |
1474 | +} | |
1475 | + | |
1476 | +\newcount\colcntr | |
1477 | +\global\colcntr=0 | |
1478 | +\newbox\savebox | |
1479 | + | |
1480 | +\gdef \@makecol {% | |
1481 | +\global\advance\colcntr by 1 | |
1482 | +\ifnum\colcntr>2 \global\colcntr=1\fi | |
1483 | + \ifvoid\footins | |
1484 | + \setbox\@outputbox \box\@cclv | |
1485 | + \else | |
1486 | + \setbox\@outputbox \vbox{% | |
1487 | +\boxmaxdepth \@maxdepth | |
1488 | + \@tempdima\dp\@cclv | |
1489 | + \unvbox \@cclv | |
1490 | + \vskip-\@tempdima | |
1491 | + \vskip \skip\footins | |
1492 | + \color@begingroup | |
1493 | + \normalcolor | |
1494 | + \footnoterule | |
1495 | + \unvbox \footins | |
1496 | + \color@endgroup | |
1497 | + }% | |
1498 | + \fi | |
1499 | + \xdef\@freelist{\@freelist\@midlist}% | |
1500 | + \global \let \@midlist \@empty | |
1501 | + \@combinefloats | |
1502 | + \ifvbox\@kludgeins | |
1503 | + \@makespecialcolbox | |
1504 | + \else | |
1505 | + \setbox\@outputbox \vbox to\@colht {% | |
1506 | +\@texttop | |
1507 | + \dimen@ \dp\@outputbox | |
1508 | + \unvbox \@outputbox | |
1509 | + \vskip -\dimen@ | |
1510 | + \@textbottom | |
1511 | + }% | |
1512 | + \fi | |
1513 | + \global \maxdepth \@maxdepth | |
1514 | +} | |
1515 | +\def\titlenote{\@ifnextchar[\@xtitlenote{\stepcounter\@mpfn | |
1516 | +\global\advance\titlenotecount by 1 | |
1517 | +\ifnum\titlenotecount=1 | |
1518 | + \raisebox{9pt}{$\ast$} | |
1519 | +\fi | |
1520 | +\ifnum\titlenotecount=2 | |
1521 | + \raisebox{9pt}{$\dagger$} | |
1522 | +\fi | |
1523 | +\ifnum\titlenotecount=3 | |
1524 | + \raisebox{9pt}{$\ddagger$} | |
1525 | +\fi | |
1526 | +\ifnum\titlenotecount=4 | |
1527 | +\raisebox{9pt}{$\S$} | |
1528 | +\fi | |
1529 | +\ifnum\titlenotecount=5 | |
1530 | +\raisebox{9pt}{$\P$} | |
1531 | +\fi | |
1532 | + \@titlenotetext | |
1533 | +}} | |
1534 | + | |
1535 | +\long\def\@titlenotetext#1{\insert\footins{% | |
1536 | +\ifnum\titlenotecount=1\global\tntoks={#1}\fi | |
1537 | +\ifnum\titlenotecount=2\global\tntokstwo={#1}\fi | |
1538 | +\ifnum\titlenotecount=3\global\tntoksthree={#1}\fi | |
1539 | +\ifnum\titlenotecount=4\global\tntoksfour={#1}\fi | |
1540 | +\ifnum\titlenotecount=5\global\tntoksfive={#1}\fi | |
1541 | + \reset@font\footnotesize | |
1542 | + \interlinepenalty\interfootnotelinepenalty | |
1543 | + \splittopskip\footnotesep | |
1544 | + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM | |
1545 | + \hsize\columnwidth \@parboxrestore | |
1546 | + \protected@edef\@currentlabel{% | |
1547 | + }% | |
1548 | + \color@begingroup | |
1549 | + \color@endgroup}} | |
1550 | + | |
1551 | +%%%%%%%%%%%%%%%%%%%%%%%%% | |
1552 | +\ps@plain | |
1553 | +\baselineskip=11pt | |
1554 | +\let\thepage\relax % For NO page numbers - Gerry Nov. 30th. 1999 | |
1555 | +\def\setpagenumber#1{\global\setcounter{page}{#1}} | |
1556 | +%\pagenumbering{arabic} % Arabic page numbers but commented out for NO page numbes - Gerry Nov. 30th. 1999 | |
1557 | +\twocolumn % Double column. | |
1558 | +\flushbottom % Even bottom -- alas, does not balance columns at end of document | |
1559 | +\pagestyle{plain} | |
1560 | + | |
1561 | +% Need Copyright Year and Copyright Data to be user definable (in .tex file). | |
1562 | +% Gerry Nov. 30th. 1999 | |
1563 | +\newtoks\copyrtyr | |
1564 | +\newtoks\acmcopyr | |
1565 | +\newtoks\boilerplate | |
1566 | + | |
1567 | +\global\acmcopyr={X-XXXXX-XX-X/XX/XX} % Default - 5/11/2001 *** Gerry | |
1568 | +\global\copyrtyr={\the\year} % Default - 3/3/2003 *** Gerry | |
1569 | +\def\acmPrice#1{\gdef\@acmPrice{#1}} | |
1570 | +\acmPrice{} %article price % Changed to 15 - June 2012 - Gerry | |
1571 | + | |
1572 | + | |
1573 | +\def\CopyrightYear#1{\global\copyrtyr{#1}} | |
1574 | +\def\crdata#1{\global\acmcopyr{#1}} | |
1575 | +\def\permission#1{\global\boilerplate{#1}} | |
1576 | + | |
1577 | +% ISBN | |
1578 | +% | |
1579 | +\def\isbn#1{\global\acmcopyr={#1}} | |
1580 | +\isbn{978-1-4503-2138-9} | |
1581 | + | |
1582 | +\RequirePackage{url} | |
1583 | +\urlstyle{rm} | |
1584 | +\def\doi#1{\def\@doi{#1}} | |
1585 | +\doi{10.1145/1235} | |
1586 | +\def\printdoi#1{\url{#1}} | |
1587 | + | |
1588 | + | |
1589 | + | |
1590 | +% Copyright | |
1591 | +\RequirePackage{acmcopyright} | |
1592 | +\setcopyright{none} | |
1593 | + | |
1594 | +% | |
1595 | +\global\boilerplate={\@copyrightpermission} | |
1596 | +% | |
1597 | +\newtoks\copyrightetc | |
1598 | +\ifnum\ACM@basesize=9\relax | |
1599 | +\global\copyrightetc{% | |
1600 | +{\noindent\confname\ \the\conf } \the\confinfo \par\smallskip | |
1601 | + \if@printcopyright | |
1602 | + \copyright\ \the\copyrtyr\ \@copyrightowner | |
1603 | + \fi | |
1604 | + \if@acmowned ISBN \else\ifnum\acm@copyrightmode=2 ISBN \else \par\smallskip ACM ISBN \fi\fi | |
1605 | + \the\acmcopyr\ifx\@acmPrice\@empty.\else\dots\@acmPrice\fi\par\smallskip | |
1606 | +{DOI: \small\expandafter\printdoi\expandafter{\@doi}}} | |
1607 | +\toappear{\fontsize{7pt}{8pt}\fontfamily{ptm}\selectfont | |
1608 | + \the\boilerplate\par\smallskip | |
1609 | + \the\copyrightetc} | |
1610 | +\fi | |
1611 | +\ifnum\ACM@basesize=10\relax | |
1612 | +\global\copyrightetc{% | |
1613 | +{\noindent\confname\ \the\conf\ \the\confinfo}\par\smallskip | |
1614 | + \if@printcopyright | |
1615 | + \copyright\ \the\copyrtyr\ \@copyrightowner | |
1616 | + \fi | |
1617 | + \if@acmowned ISBN \else\ifnum\acm@copyrightmode=2 ISBN \else \par\smallskip ACM ISBN \fi\fi | |
1618 | + \the\acmcopyr\ifx\@acmPrice\@empty.\else\dots\@acmPrice\fi\par\smallskip | |
1619 | +{DOI: \small\expandafter\printdoi\expandafter{\@doi}}} | |
1620 | +\toappear{\fontsize{7.5pt}{8.5pt}\fontfamily{ptm}\selectfont | |
1621 | + \the\boilerplate\par\smallskip | |
1622 | + \the\copyrightetc} | |
1623 | +\fi | |
1624 | + | |
1625 | +\clubpenalty=10000 | |
1626 | +\widowpenalty = 10000 | |
1627 | + | |
1628 | +%% | |
1629 | +% For the CCSXML 2012 Categories | |
1630 | + | |
1631 | +\let\@concepts\@empty | |
1632 | +% Support for CCSXML file | |
1633 | +\RequirePackage{comment} | |
1634 | +\excludecomment{CCSXML} | |
1635 | + | |
1636 | +% New concepts scheme | |
1637 | +% | |
1638 | +% The first argument is the significance, the | |
1639 | +% second is the concept(s) | |
1640 | +% | |
1641 | +\newcommand\ccsdesc[2][100]{% | |
1642 | + \ccsdesc@parse#1~#2~} | |
1643 | +% | |
1644 | +% The parser of the expression Significance~General~Specific | |
1645 | +% | |
1646 | +\def\ccsdesc@parse#1~#2~#3~{% | |
1647 | + \expandafter\ifx\csname CCS@#2\endcsname\relax | |
1648 | + \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }% | |
1649 | + \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi | |
1650 | + \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{% | |
1651 | + \ifnum#1>499\textbf{#3; }\else | |
1652 | + \ifnum#1>299\textit{#3; }\else | |
1653 | + #3; \fi\fi}} | |
1654 | + | |
1655 | +\newcommand\printccsdesc{% | |
1656 | + \ifx\@concepts\@empty\else | |
1657 | + \if@twocolumn | |
1658 | + \section*{CCS Concepts} | |
1659 | + \@concepts | |
1660 | + \else \small | |
1661 | + \quotation{\@concepts}% | |
1662 | + \fi | |
1663 | + \fi} | |
1664 | + | |
1665 | + | |
1666 | +%% DanCo, 10/19/11: Added this to reduce overfull lines per Sheridan | |
1667 | +%% request; it leads to occasionally unpleasant extra whitespace, | |
1668 | +%% though actually no worse and perhaps better than the | |
1669 | +%% default Word template. | |
1670 | +%% | |
1671 | +%% This can be manually controlled instead by authors in text | |
1672 | +%% by putting \sloppy before and \fussy immediately | |
1673 | +%% after troublesome paras. Idea found at | |
1674 | +%% http://www.economics.utoronto.ca/osborne/latex/PMAKEUP.HTM | |
1675 | + | |
1676 | +\sloppy | ... | ... |
... | ... | @@ -0,0 +1,48 @@ |
1 | +@book{kon2012, | |
2 | + title={Software Livre e Propriedade Intelectual: Aspectos Jur{\'\i}dicos, Licen{\c{c}}as e Modelos de Neg{\'o}cios}, | |
3 | + author={Kon, Fabio and Lago, Nelson and Meirelles, Paulo and Sabino, Vanessa}, | |
4 | + journal={http://ccsl. ime. usp. br/files/slpi. pdf>. Acesso em}, | |
5 | + volume={2}, | |
6 | + pages={12}, | |
7 | + year={2012} | |
8 | +} | |
9 | + | |
10 | +@article{hippel2003, | |
11 | + author = {Hippel, Eric von and Krogh, Georg von}, | |
12 | + title = {Open Source Software and the "Private-Collective" Innovation Model: Issues for Organization Science}, | |
13 | + journal = {Organization Science}, | |
14 | + issue_date = {March 2003}, | |
15 | + volume = {14}, | |
16 | + number = {2}, | |
17 | + month = mar, | |
18 | + year = {2003}, | |
19 | + issn = {1526-5455}, | |
20 | + pages = {209--223}, | |
21 | + numpages = {15}, | |
22 | + url = {http://dx.doi.org/10.1287/orsc.14.2.209.14992}, | |
23 | + doi = {10.1287/orsc.14.2.209.14992}, | |
24 | + acmid = {970585}, | |
25 | + publisher = {INFORMS}, | |
26 | + address = {Institute for Operations Research and the Management Sciences (INFORMS), Linthicum, Maryland, USA}, | |
27 | + keywords = {Incentives, Innovation, Open source software, User innovation, users, collective action}, | |
28 | +} | |
29 | + | |
30 | +@phdthesis{meirelles2013, | |
31 | + title={Monitoring Source Code Metrics in Free Software Projects}, | |
32 | + author={Meirelles, Paulo Roberto Miranda}, | |
33 | + year={2013}, | |
34 | + school={Department of Computer Science -- Institute of Mathematics and Statistics of University of S{\~a}o Paulo}, | |
35 | + note = {[in portuguese]}, | |
36 | + url={http://www.teses.usp.br/teses/disponiveis/45/45134/tde-27082013-090242/en.php} | |
37 | +} | |
38 | + | |
39 | +@mastersthesis{sabino2009, | |
40 | + title={A systematic study on Free Software License}, | |
41 | + author={Vanessa Sabino}, | |
42 | + year={2009}, | |
43 | + school={Department of Computer Science -- Institute of Mathematics and Statistics of University of S{\~a}o Paulo}, | |
44 | + note = {[in portuguese]}, | |
45 | + url={http://www.teses.usp.br/teses/disponiveis/45/45134/tde-14032012-003454/en.php} | |
46 | + | |
47 | +} | |
48 | + | ... | ... |
... | ... | @@ -0,0 +1,164 @@ |
1 | +\documentclass{sigchi} | |
2 | + | |
3 | +% Use this section to set the ACM copyright statement (e.g. for | |
4 | +% preprints). Consult the conference website for the camera-ready | |
5 | +% copyright statement. | |
6 | + | |
7 | +% Copyright | |
8 | +\CopyrightYear{2017} | |
9 | +%\setcopyright{acmcopyright} | |
10 | +\setcopyright{acmlicensed} | |
11 | +%\setcopyright{rightsretained} | |
12 | +%\setcopyright{usgov} | |
13 | +%\setcopyright{usgovmixed} | |
14 | +%\setcopyright{cagov} | |
15 | +%\setcopyright{cagovmixed} | |
16 | +% DOI | |
17 | +\doi{http://dx.doi.org/10.475/123_4} | |
18 | +% ISBN | |
19 | +\isbn{123-4567-24-567/08/06} | |
20 | +%Conference | |
21 | +\conferenceinfo{CHI'16,}{May 07--12, 2016, San Jose, CA, USA} | |
22 | +%Price | |
23 | +\acmPrice{\$15.00} | |
24 | + | |
25 | +% Use this command to override the default ACM copyright statement | |
26 | +% (e.g. for preprints). Consult the conference website for the | |
27 | +% camera-ready copyright statement. | |
28 | + | |
29 | +%% HOW TO OVERRIDE THE DEFAULT COPYRIGHT STRIP -- | |
30 | +%% Please note you need to make sure the copy for your specific | |
31 | +%% license is used here! | |
32 | +% \toappear{ | |
33 | +% Permission to make digital or hard copies of all or part of this work | |
34 | +% for personal or classroom use is granted without fee provided that | |
35 | +% copies are not made or distributed for profit or commercial advantage | |
36 | +% and that copies bear this notice and the full citation on the first | |
37 | +% page. Copyrights for components of this work owned by others than ACM | |
38 | +% must be honored. Abstracting with credit is permitted. To copy | |
39 | +% otherwise, or republish, to post on servers or to redistribute to | |
40 | +% lists, requires prior specific permission and/or a fee. Request | |
41 | +% permissions from \href{mailto:Permissions@acm.org}{Permissions@acm.org}. \\ | |
42 | +% \emph{CHI '16}, May 07--12, 2016, San Jose, CA, USA \\ | |
43 | +% ACM xxx-x-xxxx-xxxx-x/xx/xx\ldots \$15.00 \\ | |
44 | +% DOI: \url{http://dx.doi.org/xx.xxxx/xxxxxxx.xxxxxxx} | |
45 | +% } | |
46 | + | |
47 | +% Arabic page numbers for submission. Remove this line to eliminate | |
48 | +% page numbers for the camera ready copy | |
49 | +% \pagenumbering{arabic} | |
50 | + | |
51 | +% Load basic packages | |
52 | +\usepackage{balance} % to better equalize the last page | |
53 | +\usepackage{graphics} % for EPS, load graphicx instead | |
54 | +\usepackage[T1]{fontenc} % for umlauts and other diaeresis | |
55 | +\usepackage{txfonts} | |
56 | +\usepackage{mathptmx} | |
57 | +\usepackage[pdflang={en-US},pdftex]{hyperref} | |
58 | +\usepackage{color} | |
59 | +\usepackage{booktabs} | |
60 | +\usepackage{textcomp} | |
61 | + | |
62 | +% Some optional stuff you might like/need. | |
63 | +\usepackage{microtype} % Improved Tracking and Kerning | |
64 | +% \usepackage[all]{hypcap} % Fixes bug in hyperref caption linking | |
65 | +\usepackage{ccicons} % Cite your images correctly! | |
66 | +\usepackage[utf8]{inputenc} % for a UTF8 editor only | |
67 | + | |
68 | +% If you want to use todo notes, marginpars etc. during creation of | |
69 | +% your draft document, you have to enable the "chi_draft" option for | |
70 | +% the document class. To do this, change the very first line to: | |
71 | +% "\documentclass[chi_draft]{sigchi}". You can then place todo notes | |
72 | +% by using the "\todo{...}" command. Make sure to disable the draft | |
73 | +% option again before submitting your final document. | |
74 | +\usepackage{todonotes} | |
75 | + | |
76 | +% Paper metadata (use plain text, for PDF inclusion and later | |
77 | +% re-using, if desired). Use \emtpyauthor when submitting for review | |
78 | +% so you remain anonymous. | |
79 | +\def\plaintitle{Brazilian Public Software Portal: an integrated platform for collaborative development} | |
80 | +\def\plainauthor{Paulo Meirelles, Antonio Terceiro, Hilmer Neri, Melissa Wen, Ridrigo Siqueira, Lucas Kanashiro} | |
81 | +\def\emptyauthor{} | |
82 | +\def\plainkeywords{Brazilian Public Software, Free/Libre/Open Source Software, Software Evolution, Integrated Platform.} | |
83 | +\def\plaingeneralterms{Documentation, Standardization} | |
84 | + | |
85 | +% llt: Define a global style for URLs, rather that the default one | |
86 | +\makeatletter | |
87 | +\def\url@leostyle{% | |
88 | + \@ifundefined{selectfont}{ | |
89 | + \def\UrlFont{\sf} | |
90 | + }{ | |
91 | + \def\UrlFont{\small\bf\ttfamily} | |
92 | + }} | |
93 | +\makeatother | |
94 | +\urlstyle{leo} | |
95 | + | |
96 | +% To make various LaTeX processors do the right thing with page size. | |
97 | +\def\pprw{8.5in} | |
98 | +\def\pprh{11in} | |
99 | +\special{papersize=\pprw,\pprh} | |
100 | +\setlength{\paperwidth}{\pprw} | |
101 | +\setlength{\paperheight}{\pprh} | |
102 | +\setlength{\pdfpagewidth}{\pprw} | |
103 | +\setlength{\pdfpageheight}{\pprh} | |
104 | + | |
105 | +% Make sure hyperref comes last of your loaded packages, to give it a | |
106 | +% fighting chance of not being over-written, since its job is to | |
107 | +% redefine many LaTeX commands. | |
108 | +\definecolor{linkColor}{RGB}{6,125,233} | |
109 | +\hypersetup{% | |
110 | + pdftitle={\plaintitle}, | |
111 | + pdfauthor={\plainauthor}, | |
112 | + pdfkeywords={\plainkeywords}, | |
113 | + pdfdisplaydoctitle=true, % For Accessibility | |
114 | + bookmarksnumbered, | |
115 | + pdfstartview={FitH}, | |
116 | + colorlinks, | |
117 | + citecolor=black, | |
118 | + filecolor=black, | |
119 | + linkcolor=black, | |
120 | + urlcolor=linkColor, | |
121 | + breaklinks=true, | |
122 | + hypertexnames=false | |
123 | +} | |
124 | + | |
125 | +% create a shortcut to typeset table headings | |
126 | +% \newcommand\tabhead[1]{\small\textbf{#1}} | |
127 | + | |
128 | +% End of preamble. Here it comes the document. | |
129 | +\begin{document} | |
130 | + | |
131 | +\title{\plaintitle} | |
132 | + | |
133 | +\numberofauthors{6} | |
134 | +\author{% | |
135 | + \alignauthor{Paulo Meirelles,\\Hilmer Neri\\ | |
136 | + \affaddr{Faculty Gama (FGA) \\ University of Bras\'ilia}\\ | |
137 | + \affaddr{Gama, Brazil}\\ | |
138 | + \email{\{paulormm,hilmer\}@unb.br}}\\ | |
139 | + \alignauthor{Antonio Terceiro,\\Melissa Wen\\ | |
140 | + \affaddr{Colivre}\\ | |
141 | + \affaddr{Salvador, Brazil}\\ | |
142 | + \email{\{terceiro,melissa\}@colivre.coop.br}}\\ | |
143 | + \alignauthor{Rodrigo Siqueira,\\Lucas Kanashiro\\ | |
144 | + \affaddr{FLOSS Competence Center \\ University of S\~ao Paulo}\\ | |
145 | + \affaddr{São Paulo, Brazil}\\ | |
146 | + \email{\{siqueira,ldk\}@ime.usp.br}}\\ | |
147 | +} | |
148 | + | |
149 | +\maketitle | |
150 | +%------------------------------------------------------------------------------ | |
151 | +\input{content/00-abstract} | |
152 | +%------------------------------------------------------------------------------ | |
153 | +\input{content/01-introduction} | |
154 | +\input{content/02-spb} | |
155 | +\input{content/03-arch} | |
156 | +\input{content/04-features} | |
157 | +\input{content/05-process} | |
158 | +\input{content/06-ux} | |
159 | +\input{content/07-finals} | |
160 | + | |
161 | +%------------------------------------------------------------------------------ | |
162 | +\bibliographystyle{SIGCHI-Reference-Format} | |
163 | +\bibliography{spb} | |
164 | +\end{document} | ... | ... |