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