Commit 15b52932fab088ac6c6c48a60931f1223996ae36
1 parent
42ecd373
Exists in
master
and in
3 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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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} |