diff --git a/article/SIGCHI-Reference-Format.bst b/article/SIGCHI-Reference-Format.bst new file mode 100755 index 0000000000000000000000000000000000000000..3fa6fafb9cc599626c1786cd9c586096afd6d99e --- /dev/null +++ b/article/SIGCHI-Reference-Format.bst @@ -0,0 +1,3352 @@ +%%% -*-BibTeX-*- +%%% ==================================================================== +%%% @BibTeX-style-file{ +%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray", +%%% version = "1.00", +%%% date = "18 January 2012", +%%% time = "11:48 EST", +%%% filename = "ACM-Reference-Format-Journals.bst", +%%% address = "University of Utah +%%% Department of Mathematics, 110 LCB +%%% 155 S 1400 E RM 233 +%%% Salt Lake City, UT 84112-0090 +%%% USA", +%%% telephone = "+1 801 581 5254", +%%% FAX = "+1 801 581 4148", +%%% URL = "http://www.math.utah.edu/~beebe", +%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt" +%%% email = "beebe@math.utah.edu, beebe@acm.org, +%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org", +%%% codetable = "ISO/ASCII", +%%% keywords = "ACM Transactions bibliography style; BibTeX", +%%% license = "public domain", +%%% supported = "yes", +%%% abstract = "", +%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20) +%%% available from http://www.winmd5.com/?rid=winmd5," +%%% } +%%% ==================================================================== + +% "SIGCHI Format" BibTeX style, Forked from ACM-Reference-Format-Journals.bst +% Modifications 13-FEBURARY-2015 (David Ayman Shamma) + +% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst +% for BibTeX version 0.99c, LaTeX version 3.141 +% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008 +% Revised 17-APRIL-2008 (Nelson) +% Revised 13-MARCH-2011 (Boris/Gerry) +% Revised 23-MARCH-2011 (Boris/Gerry) +% Revised 27-MARCH-2011 (Boris/Gerry) +% Revised 15-APRIL-2011 (Boris/Gerry) +% Revised 27-SEPTEMBER-2011 (Boris) +% +% +% History (by Nelson) +% +% Based on 'acmtrans' (for ACM Journals) +% Date: 28th April 2008 +% +% 1. Avoid 'repeating' the 'month' values. +% 2. Avoid incorrectly italicizing the volume number. +% 3. Avoid non italicizing certain titles (book, inproceedings etc). +% 4. NO series if there is NO volume. +% 5. Sorting of reference with first surname. +% 6. Article no added for Inproceedings. +% +% Date: 07th May 2008 +% +% 1. Abbreviation list added +% +% Citation format: [author-last-name year] +% [author-last-name and author-last-name year] +% [author-last-name, author-last-name, and author-last-name year] +% [author-last-name et al. year] +% [author-last-name] +% author-last-name [year] +% [author-last-name and author-last-name] +% [author-last-name et al.] +% [year] or [year,year] +% year or year,year +% +% Reference list ordering: alphabetical by author or whatever passes +% for author in the absence of one. +% +% Features of the old acmtrans.bst: +% ================================= +% +% - all authors appear last name first. +% - all pages are listed xx-xx, (no pp.) and are at the end of the reference +% - publishers are identified as publisher, address +% - conferences papers (inproceedings) may give city of conference, +% date of conference, and journal that the proceedings appear in. +% - months abbreviated to max four letters (eg. Mar.) +% - volume of a series indicated after the title of the series +% - editors appear after edited title and are identified by a trailing "Eds." +% not in parentheses. Editor names are not given in small caps. +% (unless there is no author line) +% - names terminated with a period even if there is no first name. +% - editions are indicated trailing after the work, not in parentheses. +% - "et al." citations have a protected period to avoid bad spacing (jrh) +% - "address" required when publisher given +% - series (roman) and volume are in a sentence separate from (book-)title +% +% +% Features of chicago.bst: +% ======================= +% +% - full names used in citations, but abbreviated citations are available +% (see above) +% - if an entry has a "month", then the month and year are also printed +% as part of that bibitem. +% - all conjunctions use "and" instead of "\&" +% - major modification from Chicago Manual of Style (13th ed.) is that +% only the first author in a reference appears last name first- +% additional authors appear as J. Q. Public. +% - pages are listed as "pp. xx-xx" in all entry types except +% article entries. +% - book, inbook, and manual use "location: publisher" (or organization) +% for address and publisher. All other types list publishers separately. +% - "pp." are used to identify page numbers for all entry types except +% articles. +% - organization is used as a citation label if neither author nor editor +% is present (for manuals). +% - "et al." is used for long author and editor lists, or when "others" +% is used. +% +% Modifications and bug fixes from newapa.bst: +% =========================================== +% +% - added month, year to bib entries if month is present +% - fixed bug with In proceedings, added necessary comma after title +% - all conjunctions changed to "and" from "\&" +% - fixed bug with author labels in my.full.label: "et al." now is +% generated when "others" is an author name +% - major modification from Chicago Manual of Style (13th ed.) is that +% only the first author in a reference appears last name first- +% additional authors appear as J. Q. Public. +% - pages are listed as "pp. xx-xx" in all entry types except +% article entries. Unnecessary (IMHO) "()" around page numbers +% were removed, and page numbers now don't end with a period. +% - created chicago.sty for use with this bibstyle (required). +% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume, +% number, and /or pages. Renamed to format.journal.volume.number. +% - fixed bug in formatting booktitles: additional period an error if +% book has a volume. +% - fixed bug: editors usually given redundant period before next clause +% (format.editors.dot) removed. +% - added label support for organizations, if both author and editor +% are missing (from alpha.bst). If organization is too long, then +% the key field is used for abbreviated citations. +% - In proceedings or books of several volumes, no comma was written +% between the "Volume x" and the page numbers (this was intentional +% in newapa.bst). Fixed. +% - Some journals may not have volumes/numbers, only month/year (eg. +% IEEE Computer). Fixed bug in article style that assumed volume/number +% was always present. +% +% Original documentation for newapa.sty: +% ===================================== +% +% This version was made by modifying the master file made by +% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX +% style of Peter F. Patel-Schneider. +% +% Copyright (C) 1985, all rights reserved. +% Copying of this file is authorized only if either +% (1) you make absolutely no changes to your copy, including name, or +% (2) if you do make changes, you name it something other than 'newapa.bst'. +% There are undoubtably bugs in this style. If you make bug fixes, +% improvements, etc. please let me know. My e-mail address is: +% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com +% +% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst', +% with lots of tweaking to make it look like APA style, along with tips +% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'. +% +% +% Start of ACM-Reference-Format-Journals.bst +% +% Note: Many of the new bibentry 'fields' will only work with the +% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability, +% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst. +% +% +ENTRY + { address + advisor + author + booktitle + chapter + city % jtb: added + date % jtb: added + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + % New keys recognized + issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra + articleno + day % UTAH: needed for newspapers, weeklies, bi-weeklies + doi % UTAH + url % UTAH + bookpages % UTAH + numpages + lastaccessed % UTAH: used only for @Misc{...} + coden % UTAH + isbn % UTAH + isbn-13 % UTAH + issn % UTAH + lccn % UTAH + } + {} + { label.year extra.label sort.year sort.label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib + +INTEGERS { nameptr namesleft numnames } + +INTEGERS { multiresult } + +INTEGERS { len } + +INTEGERS { last.extra.num } + +STRINGS { s t t.org u } + +STRINGS { last.label next.extra } + +STRINGS { p1 p2 p3 page.count } + +FUNCTION { dump.stack.1 } +{ + duplicate$ "STACK[top] = [" swap$ * "]" * warning$ +} + +FUNCTION { dump.stack.2 } +{ + duplicate$ "STACK[top ] = [" swap$ * "]" * warning$ + swap$ + duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$ + swap$ +} + +FUNCTION { empty.or.unknown } +{ + %% Examine the top stack entry, and push 1 if it is empty, or + %% consists only of whitespace, or is a string beginning with two + %% queries (??), and otherwise, push 0. + %% + %% This function provides a replacement for empty$, with the + %% convenient feature that unknown values marked by two leading + %% queries are treated the same as missing values, and thus, do not + %% appear in the output .bbl file, and yet, their presence in .bib + %% file(s) serves to mark values which are temporarily missing, but + %% are expected to be filled in eventually once more data is + %% obtained. The TeX User Group and BibNet bibliography archives + %% make extensive use of this practice. + %% + %% An empty string cannot serve the same purpose, because just as in + %% statistics data processing, an unknown value is not the same as an + %% empty value. + %% + %% At entry: stack = ... top:[string] + %% At exit: stack = ... top:[0 or 1] + + duplicate$ empty$ + { pop$ #1 } + { #1 #2 substring$ "??" = } + if$ +} + +FUNCTION { writeln } +{ + %% In BibTeX style files, the sequences + %% + %% ... "one" "two" output + %% ... "one" "two" output.xxx + %% + %% ship "one" to the output file, possibly following by punctuation, + %% leaving the stack with + %% + %% ... "two" + %% + %% There is thus a one-string lag in output processing that must be + %% carefully handled to avoid duplicating a string in the output + %% file. Unless otherwise noted, all output.xxx functions leave + %% just one new string on the stack, and that model should be born + %% in mind when reading or writing function code. + %% + %% BibTeX's asynchronous buffering of output from strings from the + %% stack is confusing because newline$ bypasses the buffer. It + %% would have been so much easier for newline to be a character + %% rather than a state of the output-in-progress. + %% + %% The documentation in btxhak.dvi is WRONG: it says + %% + %% newline$ Writes onto the bbl file what's accumulated in the + %% output buffer. It writes a blank line if and only + %% if the output buffer is empty. Since write$ does + %% reasonable line breaking, you should use this + %% function only when you want a blank line or an + %% explicit line break. + %% + %% write$ Pops the top (string) literal and writes it on the + %% output buffer (which will result in stuff being + %% written onto the bbl file when the buffer fills + %% up). + %% + %% Examination of the BibTeX source code shows that write$ does + %% indeed behave as claimed, but newline$ sends a newline character + %% directly to the output file, leaving the stack unchanged. The + %% first line "Writes onto ... buffer." is therefore wrong. + %% + %% The original BibTeX style files almost always use "write$ newline$" + %% in that order, so it makes sense to hide that pair in a private + %% function like this one, named after a statement in Pascal, + %% the programming language embedded in the BibTeX Web program. + + write$ % output top-of-stack string + newline$ % immediate write of newline (not via stack) +} + +FUNCTION { init.state.consts } +{ + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +FUNCTION { output.nonnull } +{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space> + 's := + output.state mid.sentence = + { + ", " * write$ + } + { + output.state after.block = + { + add.period$ writeln + "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.dot.space } +{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space> + 's := + output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ } + { + ". " * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.remove } +{ % Stack in: ... R S T Stack out: ... R T File out: S<space> + 's := + output.state mid.sentence = + { + " " * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output.nonnull.removenospace } +{ % Stack in: ... R S T Stack out: ... R T File out: S + 's := + output.state mid.sentence = + { + "" * write$ + } + { + output.state after.block = + { + add.period$ writeln "\newblock " write$ + } + { + output.state before.all = + { + write$ + } + { + add.period$ " " * write$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION { output } +{ % discard top token if empty, else like output.nonnull + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION { output.dot.space } +{ % discard top token if empty, else like output.nonnull.dot.space + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull.dot.space + if$ +} + +FUNCTION { output.removenospace } +{ % discard top token if empty, else like output.nonnull.removenospace + duplicate$ empty.or.unknown + 'pop$ + 'output.nonnull.removenospace + if$ +} + +FUNCTION { output.check } +{ % like output, but warn if key name on top-of-stack is not set + 't := + duplicate$ empty.or.unknown + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION { output.check.dot.space } +{ % like output.dot.space, but warn if key name on top-of-stack is not set + 't := + duplicate$ empty.or.unknown + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.dot.space + if$ +} + +FUNCTION { fin.block } +{ % functionally, but not logically, identical to fin.entry + add.period$ + writeln +} + +FUNCTION { fin.entry } +{ + add.period$ + writeln +} + +FUNCTION { new.sentence } +{ % update sentence state, with neither output nor stack change + output.state after.block = + 'skip$ + { + output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION { fin.sentence } +{ + add.period$ + write$ + new.sentence + "" +} + +FUNCTION { new.block } +{ + output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION { output.coden } % UTAH +{ % output non-empty CODEN as one-line sentence (stack untouched) + coden empty.or.unknown + { } + { "\showCODEN{" coden * "}" * writeln } + if$ +} + +FUNCTION { format.articleno } +{ + articleno empty.or.unknown + { "" } + { + numpages empty.or.unknown + { "articleno field, but no numpages field, in " cite$ * warning$ } + { } + if$ + "Article " articleno * + } + if$ +} + +FUNCTION { format.year } +{ % push year string or "????" onto output stack + %% Because year is a mandatory field, we always force SOMETHING + %% to be output + year empty.or.unknown + { "????" } + { year } + if$ +} + +FUNCTION { format.day.month } +{ % push "day month " or "month " or "" onto output stack + day empty.or.unknown + { + month empty.or.unknown + { "" } + { month " " *} + if$ + } + { + month empty.or.unknown + { "" } + { day " " * month * " " *} + if$ + } + if$ +} + +FUNCTION { format.day.month.year } % UTAH +{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)" + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) + % acm-*.bst addition: prefix parenthesized date string with + % ", Article nnn " + articleno empty.or.unknown + { "" } + { ", " format.articleno * } + if$ + " (" * format.day.month * format.year * ")" * +} + +FUNCTION { output.day.month.year } % UTAH +{ % if month is empty value, do nothing; else output stack top and + % leave with new top string "(MON.)" or "(DD MON.)" + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.) + format.day.month.year + output.nonnull.remove +} + +FUNCTION { strip.doi } % UTAH +{ % Strip any Web address prefix to recover the bare DOI, leaving the + % result on the output stack, as recommended by CrossRef DOI + % documentation. + % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to + % "10.1145/1534530.1534545". That is later typeset and displayed as + % doi:10.1145/1534530.1534545 as the LAST item in the reference list + % entry. Publisher Web sites wrap this with a suitable link to a real + % URL to resolve the DOI, and the master http://dx.doi.org/ address is + % preferred, since publisher-specific URLs can disappear in response + % to economic events. All journals are encouraged by the DOI + % authorities to use that typeset format and link procedures for + % uniformity across all publications that include DOIs in reference + % lists. + % The numeric prefix is guaranteed to start with "10.", so we use + % that as a test. + doi #1 #3 substring$ "10." = + { doi } + { + doi #1 #7 substring$ "http://" = + { + doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI + + "INTERNAL STYLE-FILE ERROR" 's := + + % search for next "/" and assign its suffix to s + + { t text.length$ } + { + t #1 #1 substring$ "/" = + { + % save rest of string as true DOI (should be 10.xxxx/yyyy) + t #2 t text.length$ #1 - substring$ 's := + "" 't := % empty string t terminates the loop + } + { + % discard first character and continue loop: t <= substring(t,2,last) + t #2 t text.length$ #1 - substring$ 't := + } + if$ + } + while$ + + % check for valid DOI (should be 10.xxxx/yyyy) + s #1 #3 substring$ "10." = + { } + { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ } + if$ + + s % push the stripped DOI on the output stack + + } + { + "unrecognized DOI value [" doi * "]" * warning$ + doi % push the unrecognized original DOI on the output stack + } + if$ + } + if$ +} + +% +% Change by BV: added standard prefix to URL +% +FUNCTION { output.doi } % UTAH +{ % output non-empty DOI as one-line sentence (stack untouched) + doi empty.or.unknown + { } + { + %% NB: We want URLs at beginning of line to reduce likelihood of + %% BibTeX's nasty line wrapping after column 79, which then requires + %% manual (or automated) editing of the .bbl file to repair. + %% The \url{} macro strips percent-newlines, and is thus safe in + %% the presence of the line wrapping, but \path|...| and + %% \verb|...| do not. + "\showDOI{%" writeln + "\url{http://dx.doi.org/" strip.doi * "}}" * writeln + } + if$ +} + +FUNCTION { output.isbn } % UTAH +{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched) + show-isbn-10-and-13 + { + %% show both 10- and 13-digit ISBNs + isbn empty.or.unknown + { } + { + "\showISBNx{" isbn * "}" * writeln + } + if$ + isbn-13 empty.or.unknown + { } + { + "\showISBNxiii{" isbn-13 * "}" * writeln + } + if$ + } + { + %% show 10-digit ISBNs only if 13-digit ISBNs not available + isbn-13 empty.or.unknown + { + isbn empty.or.unknown + { } + { + "\showISBNx{" isbn * "}" * writeln + } + if$ + } + { + "\showISBNxiii{" isbn-13 * "}" * writeln + } + if$ + } + if$ +} + +FUNCTION { output.issn } % UTAH +{ % output non-empty ISSN as one-line sentence (stack untouched) + issn empty.or.unknown + { } + { "\showISSN{" issn * "}" * writeln } + if$ +} + +FUNCTION { output.issue } +{ % output non-empty issue number as a one-line sentence (stack untouched) + issue empty.or.unknown + { } + { "Issue " issue * "." * writeln } + if$ +} + +FUNCTION { output.lccn } % UTAH +{ % return with stack untouched + lccn empty.or.unknown + { } + { "\showLCCN{" lccn * "}" * writeln } + if$ +} + +FUNCTION { output.note } % UTAH +{ % return with stack empty + note empty.or.unknown + { } + { "\shownote{" note add.period$ * "}" * writeln } + if$ +} + +FUNCTION { output.note.check } % UTAH +{ % return with stack empty + note empty.or.unknown + { "empty note in " cite$ * warning$ } + { "\shownote{" note add.period$ * "}" * writeln } + if$ +} + +% +% Changes by BV 2011/04/15. Do not output +% url if doi is defined +% +FUNCTION { output.url } % UTAH +{ % return with stack untouched + % output URL and associated lastaccessed fields + doi empty.or.unknown + { + url empty.or.unknown + { } + { + %% NB: We want URLs at beginning of line to reduce likelihood of + %% BibTeX's nasty line wrapping after column 79, which would require + %% manual (or automated) editing of the .bbl file to repair. However, + %% the \url{} macro handles the unwrapping job automatically. + "\showURL{%" writeln + lastaccessed empty.or.unknown + { "" } + { "Retrieved " lastaccessed * " from " * } + if$ + + %% The URL field may contain a semicolon-separated list of Web + %% addresses, and we locate and wrap each of them in \url{...}. + %% The simplistic approach of putting the entire list into the + %% macro argument is that the semicolons are typeset in a + %% typewriter font, and no space follows them. + %% + %% We therefore replace the original code + %% "\url{" * url * "}}" * writeln + %% with this character-at-a-time loop: + + "\url{" * + + url 't := % get modifiable copy of URL list + + { t text.length$ } + { + t #1 #1 substring$ ";" = + { % then split argument at separator + "};" * writeln + "\url{" + } + { % else concatenate nonblank character to argument + t #1 #1 substring$ " " = + { } + { t #1 #1 substring$ * } + if$ + } + if$ + + t #2 t text.length$ #1 - substring$ 't := + } + while$ + + "}}" * writeln + } + if$ + } + { } + if$ +} + +FUNCTION { output.year.check } +{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence + year empty.or.unknown + { "empty year in " cite$ * warning$ } + { write$ + " " year * extra.label * + mid.sentence 'output.state := + } + if$ +} + +FUNCTION { not } +{ + { #0 } + { #1 } + if$ +} + +FUNCTION { and } +{ + 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION { or } +{ + { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION { le } +{ + %% test whether first number is less than or equal to second number + %% stack in: n1 n2 + %% stack out: if n1 <= n2 then 1 else 0 + + %% "DEBUG: le " cite$ * warning$ + > { #0 } { #1 } if$ +} + +FUNCTION { ge } +{ + %% test whether first number is greater than or equal to second number + %% stack in: n1 n2 + %% stack out: if n1 >= n2 then 1 else 0 + + %% "DEBUG: ge " cite$ * warning$ + < { #0 } { #1 } if$ +} + +FUNCTION { is.leading.digit } +{ + %% test whether first character of string is a digit + %% stack in: string + %% stack out: if first-char-is-digit then 1 else 0 + + #1 #1 substring$ % replace string by string[1:1] + duplicate$ % string[1:1] string[1:1] + chr.to.int$ + "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1 + swap$ % 0-or-1 string[1:1] + chr.to.int$ + "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1 + and +} + +FUNCTION { skip.digits } +{ + %% skip over leading digits in string + %% stack in: string + %% stack out: rest-of-string leading-digits + + %% "DEBUG: enter skip.digits " cite$ * warning$ + + %% dump.stack.1 + + duplicate$ + 't := + 't.org := + "" 'u := + + { t text.length$ } + { + %% "=================DEBUG: skip.digits t = [" t * "]" * warning$ + t is.leading.digit + { t #2 t text.length$ #1 - substring$ } + { + t 'u := + "" + } + if$ + 't := + } + while$ + + u % rest of string + t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits + + %% "DEBUG: t.org = [" t.org * "]" * warning$ + %% "DEBUG: u = [" u * "]" * warning$ + + %% dump.stack.2 + + %% "DEBUG: leave skip.digits " cite$ * warning$ +} + +FUNCTION { skip.nondigits } +{ + %% skip over leading nondigits in string + %% stack in: string + %% stack out: rest-of-string + + %% "DEBUG: enter skip.nondigits " cite$ * warning$ + + 't := + "" 'u := + + { t text.length$ } + { + %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$ + t is.leading.digit + { + t 'u := + "" + } + { t #2 t text.length$ #1 - substring$ } + if$ + 't := + } + while$ + + u % rest of string + + %% dump.stack.1 + %% "DEBUG: leave skip.nondigits " cite$ * warning$ +} + +FUNCTION { parse.next.number } +{ + %% stack in: string + %% stack out: rest-of-string next-numeric-part-of-string + %% Example: + %% stack in: "123:1--123:59" + %% stack out: ":1--123:59" "123" + + 's := + s skip.nondigits 's := + s skip.digits +} + +FUNCTION { reduce.pages.to.page.count } +{ + %% Stack in: arbitrary-and-unused + %% Stack out: unchanged + %% + %% For the new-style pagination with article number and numpages or + %% pages, we expect to have BibTeX entries containing something like + %% articleno = "17", + %% pages = "1--23", + %% with output "Article 17, 23 pages", + %% or + %% articleno = "17", + %% numpages = "23", + %% with output "Article 17, 23 pages", + %% or + %% articleno = "17", + %% pages = "17:1--17:23", + %% with output "Article 17, 23 pages", + %% + %% If articleno is missing or empty, then we should output "1--23", + %% "23" (with a warning of a missing articleno), or "17:1--17:23", + %% respectively. + + %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$ + + %% "DEBUG: pages = [" pages * "]" * warning$ + + pages + parse.next.number 'p1 := + parse.next.number 'p2 := + parse.next.number 'p3 := + parse.next.number 'page.count := + + duplicate$ + empty.or.unknown + { } + { + duplicate$ "unexpected trailing garbage [" swap$ * + "] after n:p1--n:p2 in pages = [" * + pages * + "] in " * + cite$ * + warning$ + } + if$ + + pop$ + + %% "DEBUG: reduce.pages.to.page.count: " + %% " p1 = " p1 * * + %% " p2 = " p2 * * + %% " p3 = " p3 * * + %% " p4 = " page.count * * + %% " in " cite$ * * warning$ + + p1 p3 = p2 "1" = and numpages empty.or.unknown and + { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ } + { + numpages empty.or.unknown + { pages } + { numpages } + if$ + 'page.count := + } + if$ + + p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and + { + p2 'page.count := + "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ + } + { + numpages empty.or.unknown + { pages } + { numpages } + if$ + 'page.count := + } + if$ + + %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$ +} + +FUNCTION { new.block.checkb } +{ % issue a new.block only if at least one of top two stack strings is not empty + empty.or.unknown + swap$ empty.or.unknown + and + 'skip$ + 'new.block + if$ +} + +FUNCTION { field.or.null } +{ % convert empty value to null string, else return value + duplicate$ empty.or.unknown + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION { emphasize } +{ % emphasize a non-empty top string on the stack (WITHOUT italic correction) + duplicate$ empty.or.unknown + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION { emphasize.with.italic.correction } +{ % convert empty string to null string, or emphasize with a trailing italic correction + duplicate$ empty.or.unknown + { pop$ "" } + { "{\em " swap$ * "\/}" * } + if$ +} + +FUNCTION { comma } +{ % convert empty string to null string, or brace string and add trailing comma + duplicate$ empty.or.unknown + { pop$ "" } + { "{" swap$ * "}," * } + if$ +} + +FUNCTION { format.names } +{ + % Format bibliographical entries with the first author last name first, + % and subsequent authors with initials followed by last name. + % All names are formatted in this routine. + + 's := + #1 'nameptr := % nameptr = 1; + s num.names$ 'numnames := % numnames = num.name$(s); + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 = + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := } + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := } + {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := } + {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := } + if$ + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "{\sc others}" = + { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems + { " {and} " * t * } % from Chicago Manual of Style + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := % nameptr += 1; + namesleft #1 - 'namesleft := % namesleft =- 1; + } + while$ +} + +FUNCTION { my.full.label } +{ + 's := + #1 'nameptr := % nameptr = 1; + s num.names$ 'numnames := % numnames = num.name$(s); + numnames 'namesleft := + { namesleft #0 > } + + { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al\mbox{.}" * } % jrh: avoid spacing problems + { " and " * t * } % from Chicago Manual of Style + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := % nameptr += 1; + namesleft #1 - 'namesleft := % namesleft =- 1; + } + while$ + +} + +FUNCTION { format.names.fml } +{ + % Format names in "familiar" format, with first initial followed by + % last name. Like format.names, ALL names are formatted. + % jtb: The names are NOT put in small caps + + 's := + #1 'nameptr := % nameptr = 1; + s num.names$ 'numnames := % numnames = num.name$(s); + numnames 'namesleft := + { namesleft #0 > } + + { + "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't := + + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + t "{others}" = + { " {et~al\mbox{.}}" * } + { " {and} " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := % nameptr += 1; + namesleft #1 - 'namesleft := % namesleft =- 1; + } + while$ +} + +FUNCTION { format.authors } +{ + author empty.or.unknown + { "" } + { author format.names add.period$} % jtb: add period if none before + if$ +} + +FUNCTION { format.key } +{ + empty.or.unknown + { key field.or.null } + { "" } + if$ +} + +FUNCTION { format.no.key } +{ + empty.or.unknown + { "" } + { "" } + if$ +} + +FUNCTION { format.editors.fml } +{ + % Format editor names for use in the "in" types: inbook, incollection, + % inproceedings: first initial, then last names. When editors are the + % LABEL for an entry, then format.editor is used which lists editors + % by last name first. + + editor empty.or.unknown + { "" } + { + editor format.names.fml editor num.names$ #1 > + { " (Eds.)" * } + { " (Ed.)" * } + if$ + } + if$ +} + +FUNCTION { format.editors } +{ % format editor names for use in labels, last names first. + editor empty.or.unknown + { "" } + { + editor format.names + editor num.names$ #1 > + { " (Eds.)." * } + { " (Ed.)." * } + if$ + } + if$ +} + +FUNCTION { format.articletitle } +{ + title empty.or.unknown + { "" } + % Use this to preserve lettercase in titles: + { "\showarticletitle{" title * "}" * } + % Use this for downcase title style: + % { \showarticletitle{" title "t" change.case$ * "}" * } + if$ +} + +FUNCTION { format.title } +{ + title empty.or.unknown + { "" } + % Use this to preserve lettercase in titles: + { title } + % Use this for downcase title style: + % { title "t" change.case$ } + if$ +} + +FUNCTION { n.dashify } +{ + 't := + "" + { t empty.or.unknown not } + { + t #1 #1 substring$ "-" = + { + t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { + { t #1 #1 substring$ "-" = } + { + "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { + t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION { format.btitle } +{ + edition empty.or.unknown + { title emphasize } + { title empty.or.unknown + { title emphasize } % jtb: what is this supposed to do ?!? + { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed. + if$ + } + if$ +} + +FUNCTION { format.emphasize.booktitle } +{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack + edition empty.or.unknown + { booktitle emphasize } + { booktitle empty.or.unknown + { "" } + { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * } + if$ + } + if$ +} + +FUNCTION { format.city } +{ + % jtb: if the preceding string (the title of the conference) is non-empty, + % jtb: append the location, otherwise leave empty (so as to trigger the + % jtb: error message in output.check + + duplicate$ empty.or.unknown + { } + { + city empty.or.unknown + { + date empty.or.unknown + { } + { " (" * date * ")" * } + if$ + } + { + date empty.or.unknown + { " (" * city * ")" * } + { " (" * city * ", " * date * ")" * } + if$ + } + if$ + } + if$ +} + +FUNCTION { tie.or.space.connect } +{ + duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION { either.or.check } +{ + empty.or.unknown + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION { format.bvolume } +{ + % jtb: If there is a series, this is added and the volume trails after it. + % jtb: Otherwise, "Vol" is Capitalized. + + volume empty.or.unknown + { "" } + { + series empty.or.unknown + { "Vol." volume tie.or.space.connect} + { series ", " * "Vol." volume tie.or.space.connect *} + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION { format.bvolume.noseries } +{ + volume empty.or.unknown + { "" } + { + series empty.or.unknown + { "Vol." volume tie.or.space.connect} + { "Vol." volume tie.or.space.connect} +% { series ", " * "Vol." volume tie.or.space.connect *} + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION { format.series } +{ + series empty.or.unknown + {""} + {" {\em (" * series ")}" *} + if$ +} + +FUNCTION { format.number.series } +{ + volume empty.or.unknown + { + number empty.or.unknown + { + volume empty.or.unknown + { "" } + { + series empty.or.unknown + { "" } + { " (" series * ")" * } + if$ + } + if$ + } % { series field.or.null } + { + output.state mid.sentence = + { "Number" } % gnp - changed to mixed case always + { "Number" } + if$ + number tie.or.space.connect series empty.or.unknown + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { + "" + } + if$ +} + +FUNCTION { multi.page.check } +{ + 't := + #0 'multiresult := + { multiresult not + t empty.or.unknown not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION { format.pages } +{ + pages empty.or.unknown + { "" } + { + pages multi.page.check + { pages n.dashify } % gnp - removed () % jtb: removed pp. + { pages } + if$ + } + if$ +} + +FUNCTION { format.pages.check.without.articleno } +{ %% format pages field only if articleno is absent + %% Stack out: pages-specification + numpages missing$ pages missing$ and + { "page numbers missing in both pages and numpages fields in " cite$ * warning$ } + { } + if$ + + articleno empty.or.unknown + { + pages missing$ + { numpages } + { format.pages } + if$ + } + { "" } + if$ +} + +FUNCTION { format.pages.check } +{ + pages empty.or.unknown + { "page numbers missing in " cite$ * warning$ "" } + { pages n.dashify } + if$ +} + +FUNCTION { format.bookpages } +{ + bookpages empty.or.unknown + { "" } + { bookpages "book pages" tie.or.space.connect } + if$ +} + +FUNCTION { format.named.pages } +{ + pages empty.or.unknown + { "" } + { format.pages "pages" tie.or.space.connect } + if$ +} + +% +% Changed by Boris Veytsman, 2011-03-13 +% Now the word "pages" is printed even if +% there field pages is not empty. +% + +FUNCTION { format.page.count } +{ + page.count empty.or.unknown + { "" } + { + articleno empty.or.unknown + { "numpages field, but no articleno field, in " cite$ * warning$ } + { } + if$ + page.count "pages" tie.or.space.connect + } + if$ +} + +FUNCTION { format.articleno.numpages } +{ + %% There are seven possible outputs, depending on which fields are set. + %% + %% These four are handled here: + %% + %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages" + %% articleno, numpages -> "Article articleno-value, numpages-value pages" + %% articleno, pages -> "Article articleno-value, reduced-pages-value pages" + %% articleno -> "Article articleno-value" and warn about missing numpages + %% + %% The remaining three have already been handled by + %% format.pages.check.without.articleno: + %% + %% numpages, pages -> "pages-value" + %% numpages -> "numpages-value" + %% pages -> "pages-value" + + articleno empty.or.unknown + { + numpages empty.or.unknown + { } + { "require articleno with numpages field in " cite$ * warning$ } + if$ + "" + } + { + numpages empty.or.unknown + { + pages empty.or.unknown + { + "require pages or numpages fields with articleno field in " cite$ * warning$ + "" 'page.count := + } + { reduce.pages.to.page.count } + if$ + } + { numpages 'page.count := } + if$ + + %% The Article number is now handled in format.day.month.year because + %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)" + %% over "Digital Libraries 12, 3 (July 2008), Article 5" + %% format.articleno output + format.page.count + } + if$ +} + +FUNCTION { format.journal.volume.number.day.month.year } +{ + % By Young (and Spencer) + % GNP - fixed bugs with missing volume, number, and/or pages + % + % Format journal, volume, number, pages for article types. + % + journal empty.or.unknown + { "no journal in " cite$ * warning$ + "" } +% { journal emphasize.with.italic.correction } + { + journal "Journal of the ACM" = + { "{\it J. ACM}" } + { + journal "American Mathematical Society Translations" = + { "{\it Amer. Math. Soc. Transl.}" } + { + journal "Bulletin of the American Mathematical Society" = + { "{\it Bull. Amer. Math. Soc.}" } + { + journal "Proceedings of the American Mathematical Society" = + { "{\it Proc. Amer. Math. Soc.}" } + { + journal "Transactions of the American Mathematical Society" = + { "{\it Trans. Amer. Math. Soc.}" } + { + journal "Communications of the {ACM}" = + { "{\it Commun. {ACM}}" } + { + journal "{ACM} Computing Surveys" = + { "{\it Comput. Surveys}" } + { + journal "{ACM} Transactions on Mathematical Software" = + { "{\it {ACM} Trans. Math. Software}" } + { + journal "{ACM} {SIGNUM} Newsletter" = + { "{\it {ACM} {SIGNUM} Newslett.}" } + { + journal "American Journal of Sociology" = + { "{\it Amer. J. Sociology}" } + { + journal "Journal of the American Statistical Association" = + { "{\it J. Amer. Statist. Assoc.}" } + { + journal "Applied Mathematics and Computation" = + { "{\it Appl. Math. Comput.}" } + { + journal "American Mathematical Monthly" = + { "{\it Amer. Math. Monthly}" } + { + journal "British Journal of Mathematical and Statistical Psychology" = + { "{\it Brit. J. Math. Statist. Psych.}" } + { + journal "Canadian Mathematical Bulletin" = + { "{\it Canad. Math. Bull.}" } + { + journal "Journal of Computational and Applied Mathematics" = + { "{\it J. Comput. Appl. Math.}" } + { + journal "Journal of Computational Physics" = + { "{\it J. Comput. Phys.}" } + { + journal "Computers and Structures" = + { "{\it Comput. \& Structures}" } + { + journal "The Computer Journal" = + { "{\it Comput. J.}" } + { + journal "Journal of Computer and System Sciences" = + { "{\it J. Comput. System Sci.}" } + { + journal "Contemporary Mathematics" = + { "{\it Contemp. Math.}" } + { + journal "Crelle's Journal" = + { "{\it Crelle's J.}" } + { + journal "Giornale di Mathematiche" = + { "{\it Giorn. Mat.}" } + { + journal "{IEEE} Transactions on Computers" = + { "{\it {IEEE} Trans. Comput.}" } + { + journal "{IEEE} Transactions on Automatic Control" = + { "{\it {IEEE} Trans. Automat. Control}" } + { + journal "Proceedings of the {IEEE}" = + { "{\it Proc. {IEEE}}" } + { + journal "{IEEE} Transactions on Aerospace and Electronic Systems" = + { "{\it {IEEE} Trans. Aerospace Electron. Systems}" } + { + journal "{IMA} Journal of Numerical Analysis" = + { "{\it {IMA} J. Numer. Anal.}" } + { + journal "Information Processing Letters" = + { "{\it Inform. Process. Lett.}" } + { + journal "Journal of the Institute of Mathematics and its Applications" = + { "{\it J. Inst. Math. Appl.}" } + { + journal "International Journal of Control" = + { "{\it Internat. J. Control}" } + { + journal "International Journal for Numerical Methods in Engineering" = + { "{\it Internat. J. Numer. Methods Engrg.}" } + { + journal "International Journal of Supercomputing Applications" = + { "{\it Internat. J. Supercomputing Applic.}" } + { + journal "Journal of Research of the National Bureau of Standards" = + { "{\it J. Res. Nat. Bur. Standards}" } + { + journal "Linear Algebra and its Applications" = + { "{\it Linear Algebra Appl.}" } + { + journal "Journal of Mathematical Analysis and Applications" = + { "{\it J. Math. Anal. Appl.}" } + { + journal "Mathematische Annalen" = + { "{\it Math. Ann.}" } + { + journal "Journal of Mathematical Physics" = + { "{\it J. Math. Phys.}" } + { + journal "Mathematics of Computation" = + { "{\it Math. Comp.}" } + { + journal "Mathematica Scandinavica" = + { "{\it Math. Scand.}" } + { + journal "Mathematical Tables and Other Aids to Computation" = + { "{\it Math. Tables Aids Comput.}" } + { + journal "Numerische Mathematik" = + { "{\it Numer. Math.}" } + { + journal "Pacific Journal of Mathematics" = + { "{\it Pacific J. Math.}" } + { + journal "Journal of Parallel and Distributed Computing" = + { "{\it J. Parallel and Distrib. Comput.}" } + { + journal "Parallel Computing" = + { "{\it Parallel Comput.}" } + { + journal "Philosophical Magazine" = + { "{\it Philos. Mag.}" } + { + journal "Proceedings of the National Academy of Sciences of the USA" = + { "{\it Proc. Nat. Acad. Sci. U. S. A.}" } + { + journal "Quarterly Journal of Mathematics, Oxford, Series (2)" = + { "{\it Quart. J. Math. Oxford Ser. (2)}" } + { + journal "Quarterly of Applied Mathematics" = + { "{\it Quart. Appl. Math.}" } + { + journal "Review of the International Statisical Institute" = + { "{\it Rev. Inst. Internat. Statist.}" } + { + journal "Journal of the Society for Industrial and Applied Mathematics" = + { "{\it J. Soc. Indust. Appl. Math.}" } + { + journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" = + { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" } + { + journal "{SIAM} Journal on Algebraic and Discrete Methods" = + { "{\it {SIAM} J. Algebraic Discrete Methods}" } + { + journal "{SIAM} Journal on Applied Mathematics" = + { "{\it {SIAM} J. Appl. Math.}" } + { + journal "{SIAM} Journal on Computing" = + { "{\it {SIAM} J. Comput.}" } + { + journal "{SIAM} Journal on Matrix Analysis and Applications" = + { "{\it {SIAM} J. Matrix Anal. Appl.}" } + { + journal "{SIAM} Journal on Numerical Analysis" = + { "{\it {SIAM} J. Numer. Anal.}" } + { + journal "{SIAM} Review" = + { "{\it {SIAM} Rev.}" } + { + journal "{SIAM} Journal on Scientific and Statistical Computing" = + { "{\it {SIAM} J. Sci. Statist. Comput.}" } + { + journal "Software Practice and Experience" = + { "{\it Software Prac. Experience}" } + { + journal "Statistical Science" = + { "{\it Statist. Sci.}" } + { + journal "{USSR} Computational Mathematics and Mathematical Physics" = + { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" } + { + journal "Journal of {VLSI} and Computer Systems" = + { "{\it J. {VLSI} Comput. Syst.}" } + { + journal "Zeitschrift fur Angewandte Mathematik und Mechanik" = + { "{\it Z. Angew. Math. Mech.}" } + { + journal "Zeitschrift fur Angewandte Mathematik und Physik" = + { "{\it Z. Angew. Math. Phys.}" } + { + journal "ACM Computing Surveys" = + { "{\it Comput. Surveys}" } + { + journal "ACM Transactions on Mathematical Software" = + { "{\it ACM Trans. Math. Software}" } + { + journal "ACM {SIGNUM} Newsletter" = + { "{\it ACM {SIGNUM} Newslett.}" } + { + journal "IEEE Transactions on Computers" = + { "{\it IEEE Trans. Comput.}" } + { + journal "IEEE Transactions on Automatic Control" = + { "{\it IEEE Trans. Automat. Control}" } + { + journal "Proceedings of the IEEE" = + { "{\it Proc. IEEE}" } + { + journal "IEEE Transactions on Aerospace and Electronic Systems" = + { "{\it IEEE Trans. Aerospace Electron. Systems}" } + { + journal "IMA Journal of Numerical Analysis" = + { "{\it IMA J. Numer. Anal.}" } + { + journal "SIAM Journal on Algebraic and Discrete Methods" = + { "{\it SIAM J. Algebraic Discrete Methods}" } + { + journal "SIAM Journal on Applied Mathematics" = + { "{\it SIAM J. Appl. Math.}" } + { + journal "SIAM Journal on Computing" = + { "{\it SIAM J. Comput.}" } + { + journal "SIAM Journal on Matrix Analysis and Applications" = + { "{\it SIAM J. Matrix Anal. Appl.}" } + { + journal "SIAM Journal on Numerical Analysis" = + { "{\it SIAM J. Numer. Anal.}" } + { + journal "SIAM Review" = + { "{\it SIAM Rev.}" } + { + journal "SIAM Journal on Scientific and Statistical Computing" = + { "{\it SIAM J. Sci. Statist. Comput.}" } + { + journal "USSR Computational Mathematics and Mathematical Physics" = + { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" } + { + journal "Journal of VLSI and Computer Systems" = + { "{\it J. VLSI Comput. Syst.}" } + { + journal "Communications of the ACM" = + { "{\it Commun. ACM}" } + %% If no match with cases needing special handling, just output journal name + { journal emphasize.with.italic.correction } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + + number empty.or.unknown + { + volume empty.or.unknown + { "no number and no volume in " cite$ * warning$ "" * } + { " " * " {" * volume * "}" * } + if$ + } + { + volume empty.or.unknown + { + "unusual to have number, but no volume, for " cite$ * warning$ + " " * number * + } + { " " * volume comma " " * number * * } + if$ + } + if$ + + format.day.month.year * +} + +FUNCTION { format.chapter.pages } +{ + chapter empty.or.unknown + 'format.pages + { type empty.or.unknown + { "Chapter" } % gnp - changed to mixed case + { type "t" change.case$ } + if$ + chapter tie.or.space.connect + pages empty.or.unknown + {"page numbers missing in " cite$ * warning$} % gnp - added check + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION { format.in.emphasize.booktitle } +{ % jtb: format for collections or proceedings not appearing in a journal + booktitle empty.or.unknown + { "" } + { "In " format.emphasize.booktitle * } + if$ +} + +FUNCTION { format.in.booktitle } +{ % jtb: format for proceedings appearing in a journal + booktitle empty.or.unknown + { "" } + { "In " booktitle * } + if$ +} + +FUNCTION { format.in.ed.booktitle } +{ + booktitle empty.or.unknown + { "" } + { editor empty.or.unknown + { "In " format.emphasize.booktitle * } + % jtb: swapped editor location + { "In " format.emphasize.booktitle * ", " * format.editors.fml * } + if$ + } + if$ +} + +FUNCTION { format.thesis.type } +{ % call with default type on stack top + type empty.or.unknown + 'skip$ % use default type + { + pop$ % discard default type + % NO: it is silly to have to brace protect every degree type!: type "t" change.case$ + type + } + if$ +} + +FUNCTION { format.tr.number } +{ + type empty.or.unknown +% { "Tech. Rep." } + { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28) + 'type + if$ + number empty.or.unknown + { "t" change.case$ } + %% LOOKS BAD: { "." * number tie.or.space.connect } + %% Prefer "Research report RJ687." to "Research report. RJ687." + { number tie.or.space.connect } + if$ +} + +FUNCTION { format.advisor } +{ + advisor empty.or.unknown + { "" } + { "Advisor(s) " advisor * } + if$ +} + +FUNCTION { format.article.crossref } +{ "See" + "\citeN{" * crossref * "}" * +} + +FUNCTION { format.crossref.editor } +{ + editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al\mbox{.}" * } % jrh: avoid spacing problems + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION { format.book.crossref } +{ + volume empty.or.unknown + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect % gnp - changed to mixed case + " of " * + } + if$ + editor empty.or.unknown + editor field.or.null author field.or.null = + or + { key empty.or.unknown + { series empty.or.unknown + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \citeN{" * crossref * "}" * +} + +FUNCTION { format.incoll.inproc.crossref } +{ "See" + " \citeN{" * crossref * "}" * +} + +FUNCTION { format.lab.names } +{ + % format.lab.names: + % + % determines "short" names for the abbreviated author information. + % "Long" labels are created in calc.label, using the routine my.full.label + % to format author and editor fields. + % + % There are 4 cases for labels. (n=3 in the example) + % a) one author Foo + % b) one to n Foo, Bar and Baz + % c) use of "and others" Foo, Bar et al. + % d) more than n Foo et al. + + 's := + s num.names$ 'numnames := + numnames #2 > % change number to number of others allowed before + % forcing "et al". + { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added + { + numnames #1 - 'namesleft := + #2 'nameptr := + s #1 "{vv~}{ll}" format.name$ + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al\mbox{.}" * } % jrh: avoid spacing problems + { " and " * s nameptr "{vv~}{ll}" format.name$ * } + if$ + } + { ", " * s nameptr "{vv~}{ll}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } + if$ +} + +FUNCTION { author.key.label } +{ + author empty.or.unknown + { key empty.or.unknown + { "no key, author in " cite$ * warning$ + cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION { author.key.organization.label } +{ % added - gnp. Provide label formatting by organization if author is null. + author empty.or.unknown + { organization empty.or.unknown + { key empty.or.unknown + { "no key, author or organization in " cite$ * warning$ + cite$ #1 #3 substring$ } + 'key + if$ + } + { organization } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION { editor.key.organization.label } +{ % added - gnp. Provide label formatting by organization if editor is null. + editor empty.or.unknown + { organization empty.or.unknown + { key empty.or.unknown + { "no key, editor or organization in " cite$ * warning$ + cite$ #1 #3 substring$ } + 'key + if$ + } + { organization } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION { author.editor.key.label } +{ + author empty.or.unknown + { editor empty.or.unknown + { key empty.or.unknown + { "no key, author, or editor in " cite$ * warning$ + cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION { calc.label } +{ + % Changed - GNP. See also author.organization.sort, editor.organization.sort + % Form label for BibTeX entry. The classification of which fields are used + % for which type of entry (book, inbook, etc.) are taken from alpha.bst. + % The change here from newapa is to also include organization as a + % citation label if author or editor is missing. + + type$ "book" = + type$ "inbook" = + or + type$ "periodical" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + + author empty.or.unknown % generate the full label citation information. + { + editor empty.or.unknown + { + organization empty.or.unknown + { + key empty.or.unknown + { + "no author, editor, organization, or key in " cite$ * warning$ + "??" + } + { key } + if$ + } + { organization } + if$ + } + { editor my.full.label } + if$ + } + { author my.full.label } + if$ + + % leave label on the stack, to be popped when required. + + "}{" * swap$ * "}{" * + % year field.or.null purify$ #-1 #4 substring$ * + % + % save the year for sort processing afterwards (adding a, b, c, etc.) + % + year field.or.null purify$ #-1 #4 substring$ + 'label.year := +} + +% +% Change by Gerry: use number-like citations for transactions +% 2011/03/23 +% Reverting: Ayman +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +% FUNCTION { output.bibitem } +% { +% newline$ +% "\bibitem[\protect\citeauthoryear{" write$ +% calc.label write$ +% sort.year write$ +% "}]%" writeln +% " {" write$ +% cite$ write$ +% "}" writeln +% "" +% before.all 'output.state := +% } + + +FUNCTION { output.issue.doi.coden.isxn.lccn.url } +{ % enter and return with stack empty + %% We switch now from buffered output to output of complete lines, so + %% that the Issue .. URL data have their own lines, and are less likely + %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps + %% lines longer than 79 characters, backtracking to what it thinks is + %% a break point in the string. Any such wrapping MUST be undone to + %% prevent percent-newline from appearing in DOIs and URLs. The + %% output data are intentionally wrapped in \showxxx{} macros at + %% beginning of line, and that supply their own punctuation (if they + %% are not defined to suppress output entirely), to make it easier for + %% other software to recover them from .bbl files. + %% + %% It also makes it possible to later change the macro definitions + %% to suppress particular output values, or alter their appearance. + %% + %% Note that it is possible for theses, technical reports, and + %% manuals to have ISBNs, and anything that has an ISBN may also + %% have an ISSN. When there are no values for these keys, there + %% is no output generated for them here. + + "\newblock" writeln + after.block 'output.state := + + output.issue + output.isbn + output.coden % CODEN is functionally like ISSN, so output them sequentially + output.issn + output.lccn + output.doi % DOI is ALWAYS last according to CrossRef DOI documentation + output.url % but ACM wants URL last +} + +FUNCTION { output.issue.doi.coden.isxn.lccn.url.note } +{ % enter with stack empty, return with empty string on stack + output.issue.doi.coden.isxn.lccn.url + note empty.or.unknown + { } + { + "\newblock" writeln + output.note + } + if$ + "" +} + +FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check } +{ % enter with stack empty, return with empty string on stack + output.issue.doi.coden.isxn.lccn.url + note empty.or.unknown + { } + { + "\newblock" writeln + output.note.check + } + if$ + "" +} + +FUNCTION { article } +{ + output.bibitem + + author empty.or.unknown + { + editor empty.or.unknown + { "neither author and editor supplied for " cite$ * warning$ } + { format.editors "editor" output.check } + if$ + } + { format.authors "author" output.check } + if$ + + author format.no.key output % added + output.year.check % added + new.block + format.articletitle "title" output.check + new.block + howpublished output + + crossref missing$ + { format.journal.volume.number.day.month.year } + { + "cross reference in @Article{...} is unusual" warning$ + format.article.crossref output.nonnull + } + if$ + output + + format.pages.check.without.articleno output + format.articleno.numpages output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { book } +{ + output.bibitem + author empty.or.unknown + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % added + new.block + format.btitle "title" output.check + crossref missing$ + { new.sentence % jtb: start a new sentence for series/volume + format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address "address" output.check % jtb: require address + fin.sentence + pages empty.or.unknown + { format.bookpages } % use bookpages when pages empty + { format.pages.check "pages" tie.or.space.connect } + if$ + output + } + { new.block + format.book.crossref output.nonnull + } + if$ + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { booklet } +{ + output.bibitem + format.authors output + author format.key output % added + output.year.check % added + new.block + format.title "title" output.check + new.block + howpublished output + address output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { inbook } +{ + output.bibitem + author empty.or.unknown + { format.editors + "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + output.year.check % added + new.block + format.btitle "title" output.check + crossref missing$ + { new.sentence % jtb: start a new sentence for series/volume + format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address "address" output.check % jtb: require address + format.bookpages output + format.chapter.pages + "chapter and pages" output.check % jtb: moved from before publisher + } + { + format.bookpages output + format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { incollection } +{ + output.bibitem + format.authors "author" output.check + author format.key output % added + output.year.check % added + new.block + format.articletitle "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence % jtb: start a new sentence for series/volume + format.bvolume output + format.number.series output + new.sentence + publisher "publisher" output.check + address "address" output.check % jtb: require address + format.bookpages output + format.chapter.pages output % gnp - was special.output.nonnull + % left out comma before page numbers + % jtb: moved from before publisher + } + { + format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { inproceedings } +{ + output.bibitem + format.authors "author" output.check + author format.key output % added + output.year.check % added + new.block + format.articletitle "title" output.check + howpublished output.dot.space + crossref missing$ + { + journal missing$ % jtb: proceedings appearing in journals + { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space + format.series output.removenospace + format.editors.fml output % BV 2011/09/27 Moved dot to comma + format.bvolume.noseries output + new.sentence + organization output + publisher "publisher" output.check % jtb: require publisher (?) + address "address" output.check % jtb: require address + format.bookpages output + } + { + format.in.booktitle format.city "booktitle" output.check + format.editors.fml output + new.sentence + format.journal.volume.number.day.month.year output + } + if$ + format.articleno output + format.pages.check.without.articleno output + } + { + format.incoll.inproc.crossref output.nonnull + format.articleno output + format.pages.check.without.articleno output + } + if$ + format.articleno.numpages output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { conference } { inproceedings } + +FUNCTION { manual } +{ + output.bibitem + author empty.or.unknown + { editor empty.or.unknown + { organization "organization" output.check + organization format.key output } % if all else fails, use key + { format.editors "author and editor" output.check } + if$ + } + { format.authors output.nonnull } + if$ + output.year.check % added + new.block + format.btitle "title" output.check + organization address new.block.checkb + % jtb: back to normal style: organization, address + organization "organization" output.check + address output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { mastersthesis } +{ + output.bibitem + format.authors "author" output.check + author format.key output % added + output.year.check % added + new.block + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title + new.block + "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27 + school "school" output.check + address output + new.block + format.advisor output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { misc } +{ + output.bibitem + format.authors output + author format.key output % added + output.year.check % added + title howpublished new.block.checkb + format.title output + new.block + howpublished output + "" output.nonnull.dot.space + 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 + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { phdthesis } +{ + output.bibitem + format.authors "author" output.check + author format.key output % added + output.year.check % added + new.block + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title + new.block + "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27 + school "school" output.check + address output + new.block + format.advisor output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION {format.date} +{ year empty.or.unknown + { month empty.or.unknown + { + "" % output empty date if year/month both empty + day empty.or.unknown + { } + { "there's a day but no month or year in " cite$ * warning$ } + if$ + } + { "there's a month but no year in " cite$ * warning$ + month + day empty.or.unknown + { } + { " " * day * } + if$ + } + if$ + } + { month empty.or.unknown + { + year % output only year if month empty + day empty.or.unknown + { } + { "there's a day and year but no month in " cite$ * warning$ } + if$ + } + { + month " " * + day empty.or.unknown + { } + { day * ", " * } + if$ + year * + } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ + empty.or.unknown + 'skip$ + 'new.block + if$ +} + +FUNCTION { periodical } +{ + output.bibitem + editor empty.or.unknown + { organization output } + { format.editors output.nonnull } + if$ + new.block + title emphasize "title" output.check + format.date output + new.sentence + publisher output + address output + howpublished new.block.checka + howpublished output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { proceedings } +{ + output.bibitem + editor empty.or.unknown + { organization output + organization format.key output } % gnp - changed from author format.key + { format.editors output.nonnull } + if$ + % author format.key output % gnp - removed (should be either + % editor or organization + output.year.check % added (newapa) + new.block + format.btitle format.city "title" output.check % jtb: added city + new.sentence + format.bvolume output + format.number.series output + new.sentence + organization output + % jtb: normal order: publisher, address + publisher output + address output + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { techreport } +{ + output.bibitem + format.authors "author" output.check + author format.key output % added + output.year.check % added + new.block + format.btitle "title" output.check + new.block +% format.tr.number output % jtb: moved month ... + format.tr.number output new.sentence % Gerry - need dot 2011/09/28 + institution "institution" output.check + address output + new.sentence + format.named.pages output + % ACM omits year at end in transactions style + % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens) + fin.block + output.issue.doi.coden.isxn.lccn.url.note + fin.entry +} + +FUNCTION { unpublished } +{ + output.bibitem + format.authors + "author" output.check + author format.key output % added + output.year.check % added + new.block + format.title "title" output.check + fin.sentence + output.day.month.year % UTAH + fin.block + output.issue.doi.coden.isxn.lccn.url.note.check + fin.entry +} + +FUNCTION { default.type } { misc } + +%%% ACM journal-style month definitions: full name if 1--5 letters, else +%%% abbreviation of 3 or 4 characters and a dot + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sept."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + + +%%% ==================================================================== +%%% I M P O R T A N T C H A N G E +%%% +%%% For the 2009 release of the official acm-*.bst files, there are to +%%% be NO predefined journal abbreviations in those style files. +%%% +%%% ACM may later develop an official list of mappings of full journal +%%% names of commonly-cited journals to ACM-preferred abbreviations, but +%%% authors should consider that use of any of these commented-out +%%% abbreviations is DEPRECATED unless the BibTeX file itself provides +%%% its own @String{name = "value"} definitions. +%%% +%%% Use of journal (and publisher and address) @String{...} +%%% abbreviations, as opposed to explicit value assignments such as +%%% journal = "J. ACM" and publisher = "IEEE", is preferred in +%%% bibliographic databases, because it makes it easier for journal +%%% production staff to replace those definitions by publisher-preferred +%%% abbreviations when articles are typeset for publication. +%%% +%%% For historical reasons, and because some of these abbreviations are +%%% used in other (non-ACM) bibliography style files, they are preserved +%%% here in comments. Future releases of the acm*-.bst files are likely +%%% to remove them entirely. +%%% ==================================================================== +%%% +%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {al} {"Ada Lett."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {bit} {"Bit"} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {cj} {"Comput. J."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {cn} {"Comput. Netw."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {cl} {"Comput. Lang."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ict} {"Inf. Contr."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {icp} {"Inf. Comput."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX +%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."} +%%% DEPRECATED: +%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX +%%% DEPRECATED: +%%% DEPRECATED: MACRO {tr} {"Tech. Rep."} +%%% ==================================================================== + +READ + +FUNCTION { sortify } +{ + purify$ + "l" change.case$ +} + +FUNCTION { chop.word } +{ + 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION { sort.format.names } +{ + 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't := + s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { " et~al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { sort.format.title } +{ + 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION { author.sort } +{ + author empty.or.unknown + { key empty.or.unknown + { "to sort, need author or key in " cite$ * warning$ + "" } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION { author.editor.sort } +{ + author empty.or.unknown + { + editor empty.or.unknown + { + key empty.or.unknown + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION { author.organization.sort } +{ + % added - GNP. Stack author or organization for sorting (from alpha.bst). + % Unlike alpha.bst, we need entire names, not abbreviations + + author empty.or.unknown + { organization empty.or.unknown + { key empty.or.unknown + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { organization sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION { editor.organization.sort } +{ + % added - GNP. Stack editor or organization for sorting (from alpha.bst). + % Unlike alpha.bst, we need entire names, not abbreviations + + editor empty.or.unknown + { organization empty.or.unknown + { key empty.or.unknown + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { organization sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION { presort } +{ + % Presort creates the bibentry's label via a call to calc.label, and then + % sorts the entries based on entry type. Chicago.bst adds support for + % including organizations as the sort key; the following is stolen from + % alpha.bst. + + calc.label sortify % recalculate bibitem label + year field.or.null purify$ #-1 #4 substring$ * % add year + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + #1 entry.max$ substring$ % added for newapa + 'sort.label := % added for newapa + sort.label % added for newapa + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE { presort } + +SORT % by label, year, author/editor, title + +FUNCTION { initialize.extra.label.stuff } +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := +} + +FUNCTION { forward.pass } +{ + % Pass through all entries, comparing current entry to last one. + % Need to concatenate year to the stack (done by calc.label) to determine + % if two entries are the same (see presort) + + last.label + % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year + % NEW: + author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year + #1 entry.max$ substring$ = % are they equal? + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year + % NEW: + author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year + #1 entry.max$ substring$ 'last.label := % assign to last.label + } + if$ +} + +FUNCTION { reverse.pass } +{ + next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label.year extra.label * 'sort.year := + extra.label 'next.extra := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION { bib.sort.order } +{ + sort.label + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE { bib.sort.order } + +SORT % by sort.label, year, title --- giving final bib. order. + +FUNCTION { begin.bib } +{ + %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN. + %% Set to #1 to show both 10-digit and 13-digit ISBNs. + #1 'show-isbn-10-and-13 := + + "%%% -*-BibTeX-*-" writeln + "%%% Do NOT edit. File created by BibTeX with style" writeln + "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln + "" writeln + + preamble$ empty.or.unknown + 'skip$ + { preamble$ writeln } + if$ + "\begin{thebibliography}{00}" writeln + "" writeln + "%%% ====================================================================" writeln + "%%% NOTE TO THE USER: you can override these defaults by providing" writeln + "%%% customized versions of any of these macros before the \bibliography" writeln + "%%% command. Each of them MUST provide its own final punctuation," writeln + "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln + "%%% do not use final punctuation, in order to avoid confusing it with" writeln + "%%% the Web address." writeln + "%%%" writeln + "%%% To suppress output of a particular field, define its macro to expand" writeln + "%%% to an empty string, or better, \unskip, like this:" writeln + "%%%" writeln + "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln + "%%%" writeln + "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln + "%%%" writeln + "%%% ====================================================================" writeln + "" writeln + + %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default + %% macro wrappers expand to \unskip, discarding their values and unwanted + %% space. + %% + %% For other publications, prior definitions like these may be useful: + %% + %% Plain TeX: + %% \def \showCODEN #1{CODEN #1.} + %% \def \showISSN #1{ISSN #1.} + %% \def \showLCCN #1{LCCN #1.} + %% + %% LaTeX: + %% \newcommand{\showCODEN}[1]{CODEN #1.} + %% \newcommand{\showISSN}[1]#1{ISSN #1.} + %% \newcommand{\showLCCN}[1]{LCCN #1.} + + "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln + "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln + % ACM styles omit ISBNs, but they can be included by suitable definitions of + % \showISBNx and \showISBNxiii before the .bbl file is read + "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln + "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln + "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln + "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln + "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above + "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln + "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION { end.bib } +{ + newline$ + "\end{thebibliography}" + writeln +} + +EXECUTE {end.bib} + +%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012 + diff --git a/article/literature.bib b/article/literature.bib new file mode 100644 index 0000000000000000000000000000000000000000..089247f33f3840763c9706a2c62bcb19fa4cb431 --- /dev/null +++ b/article/literature.bib @@ -0,0 +1,164 @@ +@Misc{CHINOSAUR:venue, + author = {@\_CHINOSAUR}, + key = {_CHINOSAUR}, + howpublished = {Tweet}, + title = {"VENUE IS TOO COLD" \#BINGO \#CHI2014}, + month = {May}, + day = 1, + year = 2014, + note = {Retrieved Febuary 2, 2015 from + \url{https://twitter.com/_CHINOSAUR/status/461864317415989248}}, + annote = {Tweet} +} + +@misc{supermetroid:snes, + Address = {Kyoto, Japan}, + Author = {{Nintendo R\&D1} and {Intelligent Systems}}, + Day = {18}, + Howpublished = {Game [SNES]}, + Month = {April}, + Note = {Nintendo, Kyoto, Japan. Played August 2011.}, + Publisher = {Nintendo}, + Title = {\emph{Super Metroid}}, + Year = {1994} +} + +@inproceedings{Klemmer:2002:WSC:503376.503378, + author = {Klemmer, Scott R. and Thomsen, Michael and + Phelps-Goodman, Ethan and Lee, Robert and Landay, + James A.}, + title = {Where Do Web Sites Come from?: Capturing and + Interacting with Design History}, + booktitle = {Proceedings of the SIGCHI Conference on Human + Factors in Computing Systems}, + series = {CHI '02}, + year = 2002, + isbn = {1-58113-453-3}, + location = {Minneapolis, Minnesota, USA}, + pages = {1--8}, + url = {http://doi.acm.org/10.1145/503376.503378}, + doi = {10.1145/503376.503378}, + acmid = 503378, + publisher = {ACM}, + address = {New York, NY, USA}, + keywords = {CSCW, activity capture, design rationale, history + management, informal interfaces, sketching, tangible + UI, web design}, +} + +@inproceedings{Mather:2000:MUT, + title = {Making up titles for conference papers}, + author = {Mather, B. D.}, + booktitle = {Ext. Abstracts CHI 2000}, + year = 2000, + publisher = "ACM Press", + pages = "1-2", +} + +@book{Schwartz:1995:GBF, + title = {Guidelines for Bias-Free Writing}, + author = {Marilyn Schwartz}, + address = {Bloomington, IN, USA}, + year = 1995, + publisher = {ERIC} +} + +@inproceedings{Zellweger:2001:FAO:504216.504224, + author = {Zellweger, Polle T. and Bouvin, Niels Olof and + Jeh{\o}j, Henning and Mackinlay, Jock D.}, + title = {Fluid annotations in an open world}, + booktitle = {Proc. Hypertext 2001}, + year = 2001, + pages = {9--18}, + publisher = {ACM Press}, +} + +@misc{acm_categories, + key = "ACM", + author = {ACM}, + title = {How to Classify Works Using ACM's Computing + Classification System}, + year = 1998, + note = {\url{http://www.acm.org/class/how_to_use.html}}, +} + +@Misc{cavender:writing, + author = {Anna Cavender and Shari Trewin and Vicki Hanson}, + title = {Accessible Writing Guide}, + year = 2014, + day = 22, + note = + {\url{http://www.sigaccess.org/welcome-to-sigaccess/resources/accessible-writing-guide/}}, + annote = {URL} +} + +@article{ethics, + title = {{Social Impacts of Computing: Codes of Professional + Ethics}}, + author = {R. E. Anderson}, + doi = "10.1177/089443939201000402", + journal = "Social Science Computer Review December", + year = 1992, + volume = 10, + number = 4, + pages = "453-469" +} + +@Misc{heilig:sensorama, + author = {Morton L. Heilig}, + title = {Sensorama Simulator}, + howpublished = {U.S. Patent 3,050,870}, + month = {August}, + day = 28, + year = 1962, + note = {Filed Februrary 22, 1962.}, + annote = {is this right?} +}, + +@article{kaye:puc, + year = 2014, + issn = {1617-4909}, + journal = {Personal and Ubiquitous Computing}, + volume = 18, + number = 4, + doi = {10.1007/s00779-014-0773-4}, + title = {Special issue on science fiction and ubiquitous + computing}, + url = {http://dx.doi.org/10.1007/s00779-014-0773-4}, + publisher = {Springer London}, + author = {Kaye, Jofish and Dourish, Paul}, + pages = {765-766}, + language = {English} +} + +@Misc{psy:gangnam, + author = {Psy}, + title = {Gangnam Style}, + howpublished = {Video}, + month = {July}, + day = 15, + year = 2012, + note = {Retrieved August 22, 2014 from + \url{https://www.youtube.com/watch?v=9bZkp7q19f0}}, + annote = {Video URL} +} + +@PhdThesis{sutherland:sketchpad, + author = {Ivan E. Sutherland}, + title = {Sketchpad, a Man-Machine Graphical Communication + System}, + school = {Massachusetts Institute of Technology}, + year = 1963, + address = {Cambridge, MA}, +} + +@InBook{winner:politics, + author = {Langdon Winner}, + title = {The Social Shaping of Technology}, + chapter = {Do artifacts have politics?}, + publisher = {Open University Press}, + year = 1999, + address = {UK}, + edition = {2nd}, + pages = {28--40}, +} diff --git a/article/proceedings.tex b/article/proceedings.tex new file mode 100644 index 0000000000000000000000000000000000000000..729db0f9a8a0e16a0fee2b6444660215080b01c6 --- /dev/null +++ b/article/proceedings.tex @@ -0,0 +1,270 @@ +\documentclass{sigchi} + +% Arabic page numbers for submission. Remove this line to eliminate +% page numbers for the camera ready copy +% \pagenumbering{arabic} + +% Load basic packages +\usepackage{balance} % to better equalize the last page +\usepackage{graphics} % for EPS, load graphicx instead +\usepackage[T1]{fontenc} % for umlauts and other diaeresis +\usepackage{txfonts} +\usepackage{mathptmx} +\usepackage[pdflang={en-US},pdftex]{hyperref} +\usepackage{color} +\usepackage{booktabs} +\usepackage{textcomp} + +% Some optional stuff you might like/need. +\usepackage{microtype} % Improved Tracking and Kerning +% \usepackage[all]{hypcap} % Fixes bug in hyperref caption linking +\usepackage{ccicons} % Cite your images correctly! +% \usepackage[utf8]{inputenc} % for a UTF8 editor only + +% If you want to use todo notes, marginpars etc. during creation of +% your draft document, you have to enable the "chi_draft" option for +% the document class. To do this, change the very first line to: +% "\documentclass[chi_draft]{sigchi}". You can then place todo notes +% by using the "\todo{...}" command. Make sure to disable the draft +% option again before submitting your final document. +\usepackage{todonotes} + +% Paper metadata (use plain text, for PDF inclusion and later +% re-using, if desired). Use \emtpyauthor when submitting for review +% so you remain anonymous. +\def\plaintitle{Wikipedia's Edit Filters} +\def\plainauthor{First Author, Second Author, Third Author, + Fourth Author, Fifth Author, Sixth Author} +\def\emptyauthor{} +\def\plainkeywords{Authors' choice; of terms; separated; by + semicolons; include commas, within terms only; required.} +\def\plaingeneralterms{Documentation, Standardization} + +% llt: Define a global style for URLs, rather that the default one +\makeatletter +\def\url@leostyle{% + \@ifundefined{selectfont}{ + \def\UrlFont{\sf} + }{ + \def\UrlFont{\small\bf\ttfamily} + }} +\makeatother +\urlstyle{leo} + +% To make various LaTeX processors do the right thing with page size. +\def\pprw{8.5in} +\def\pprh{11in} +\special{papersize=\pprw,\pprh} +\setlength{\paperwidth}{\pprw} +\setlength{\paperheight}{\pprh} +\setlength{\pdfpagewidth}{\pprw} +\setlength{\pdfpageheight}{\pprh} + +% Make sure hyperref comes last of your loaded packages, to give it a +% fighting chance of not being over-written, since its job is to +% redefine many LaTeX commands. +\definecolor{linkColor}{RGB}{6,125,233} +\hypersetup{% + pdftitle={\plaintitle}, +% Use \plainauthor for final version. +% pdfauthor={\plainauthor}, + pdfauthor={\emptyauthor}, + pdfkeywords={\plainkeywords}, + pdfdisplaydoctitle=true, % For Accessibility + bookmarksnumbered, + pdfstartview={FitH}, + colorlinks, + citecolor=black, + filecolor=black, + linkcolor=black, + urlcolor=linkColor, + breaklinks=true, + hypertexnames=false +} + +% create a shortcut to typeset table headings +% \newcommand\tabhead[1]{\small\textbf{#1}} + +% End of preamble. Here it comes the document. +\begin{document} + +\title{\plaintitle} + +\numberofauthors{3} +\author{% + \alignauthor{Leave Authors Anonymous\\ + \affaddr{for Submission}\\ + \affaddr{City, Country}\\ + \email{e-mail address}}\\ + \alignauthor{Leave Authors Anonymous\\ + \affaddr{for Submission}\\ + \affaddr{City, Country}\\ + \email{e-mail address}}\\ + \alignauthor{Leave Authors Anonymous\\ + \affaddr{for Submission}\\ + \affaddr{City, Country}\\ + \email{e-mail address}}\\ +} + +\maketitle + +\begin{abstract} + Abstracts should be about 150 words and + are required. +\end{abstract} + +\category{H.5.m.}{Information Interfaces and Presentation + (e.g. HCI)}{Miscellaneous} \category{See + \url{http://acm.org/about/class/1998/} for the full list of ACM + classifiers. This section is required.}{}{} + +\keywords{\plainkeywords} + +\section{Introduction} + + +\section{Page Size and Columns} + +\section{Typeset Text} + +\subsection{Title and Authors} + +\subsection{Abstract and Keywords} + +\subsection{Normal or Body Text} + +\subsection{First Page Copyright Notice} + +\subsection{Subsequent Pages} + +\begin{figure} +\centering + \includegraphics[width=0.9\columnwidth]{figures/sigchi-logo} + \caption{Insert a caption below each figure. Do not alter the + Caption style. One-line captions should be centered; multi-line + should be justified. }~\label{fig:figure1} +\end{figure} + +\subsection{References and Citations} + +Use a numbered list of references at the end of the article, ordered +alphabetically by last name of first author, and referenced by numbers +in +brackets~\cite{acm_categories,ethics,Klemmer:2002:WSC:503376.503378}. +Your references should be published materials accessible to the +public. Internal technical reports may be cited only if they are +easily accessible (i.e., you provide the address for obtaining the +report within your citation) and may be obtained by any reader for a +nominal fee. Proprietary information may not be cited. Private +communications should be acknowledged in the main text, not referenced +(e.g., ``[Borriello, personal communication]''). + +References should be in ACM citation format: +\url{http://acm.org/publications/submissions/latex_style}. This +includes citations to internet +resources~\cite{acm_categories,cavender:writing,CHINOSAUR:venue,psy:gangnam} +according to ACM format, although it is often appropriate to include +URLs directly in the text, as above. + +\begin{table} + \centering + \begin{tabular}{l r r r} + % \toprule + & & \multicolumn{2}{c}{\small{\textbf{Test Conditions}}} \\ + \cmidrule(r){3-4} + {\small\textit{Name}} + & {\small \textit{First}} + & {\small \textit{Second}} + & {\small \textit{Final}} \\ + \midrule + Marsden & 223.0 & 44 & 432,321 \\ + Nass & 22.2 & 16 & 234,333 \\ + Borriello & 22.9 & 11 & 93,123 \\ + Karat & 34.9 & 2200 & 103,322 \\ + % \bottomrule + \end{tabular} + \caption{Table captions should be placed below the table. We + recommend table lines be 1 point, 25\% black. Minimize use of + table grid lines.}~\label{tab:table1} +\end{table} + +\section{Sections} + +\subsection{Subsections} + +\subsubsection{Sub-subsections} + +\section{Figures/Captions} + +Place figures and tables at the top or bottom of the appropriate +column or columns, on the same page as the relevant text (see +Figure~\ref{fig:figure1}). A figure or table may extend across both +columns to a maximum width of 17.78 cm (7 in.). + +\begin{figure*} + \centering + \includegraphics[width=1.75\columnwidth]{figures/map} + \caption{In this image, the map maximizes use of space. You can make + figures as wide as you need, up to a maximum of the full width of + both columns. Note that \LaTeX\ tends to render large figures on a + dedicated page. Image: \ccbynd~ayman on + Flickr.}~\label{fig:figure2} +\end{figure*} + +\section{Conclusion} + +It is important that you write for the SIGCHI audience. Please read +previous years' proceedings to understand the writing style and +conventions that successful authors have used. It is particularly +important that you state clearly what you have done, not merely what +you plan to do, and explain how your work is different from previously +published work, i.e., the unique contribution that your work makes to +the field. Please consider what the reader will learn from your +submission, and how they will find your work useful. If you write with +these questions in mind, your work is more likely to be successful, +both in being accepted into the conference, and in influencing the +work of our field. + +\section{Acknowledgments} + +Sample text: We thank all the volunteers, and all publications support +and staff, who wrote and provided helpful comments on previous +versions of this document. Authors 1, 2, and 3 gratefully acknowledge +the grant from NSF (\#1234--2012--ABC). \textit{This whole paragraph is + just an example.} + +% Balancing columns in a ref list is a bit of a pain because you +% either use a hack like flushend or balance, or manually insert +% a column break. http://www.tex.ac.uk/cgi-bin/texfaq2html?label=balance +% multicols doesn't work because we're already in two-column mode, +% and flushend isn't awesome, so I choose balance. See this +% for more info: http://cs.brown.edu/system/software/latex/doc/balance.pdf +% +% Note that in a perfect world balance wants to be in the first +% column of the last page. +% +% If balance doesn't work for you, you can remove that and +% hard-code a column break into the bbl file right before you +% submit: +% +% http://stackoverflow.com/questions/2149854/how-to-manually-equalize-columns- +% in-an-ieee-paper-if-using-bibtex +% +% Or, just remove \balance and give up on balancing the last page. +% +\balance{} + +% BALANCE COLUMNS +\balance{} + +% REFERENCES FORMAT +% References must be the same font size as other body text. +\bibliographystyle{SIGCHI-Reference-Format} +\bibliography{literature} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/article/sigchi-ext.cls b/article/sigchi-ext.cls new file mode 100644 index 0000000000000000000000000000000000000000..a355d1a5e39a64db9e35b67da52918ef7d217c60 --- /dev/null +++ b/article/sigchi-ext.cls @@ -0,0 +1,623 @@ +% CHI Extended Abstracts template. +% +% Tested with a clean LaTeX installation on Windows XP, Ubuntu 9.04 +% and above (should work in normal LaTeX environments) +% +% Filename: sigchi-ext.cls +% +% Features: +% - simpler design, two 'real' columns, better handling of +% footnotes/marginal notes +% - adheres to ACM archival format, so you don't need to change your +% LaTeX markup significantly from other ACM templates +% - font sizes, spacing between paragraphs, and look&feel more +% according to CHI's Ext. Abstracts template (MS Word) +% - supports an optional ACM teaser image on first page +% - improved PDF bookmarking +% +% CHANGELOG: +% 2015-03-21 David A. Shamma Removed bibsty dependency. +% 2015-01-05 David A. Shamma Updating for new format and Github repo. +% 2013-07-22 Paul Baumann Added example copyright to LaTeX file. +% 2010-12-01 Luis A. Leiva A lot of refactorization. +% 2010-10-18 Manas Tungare Restored support for \figures. +% 2010-08-09 Manas Tungare Updated copyright info for CHI 2011 +% 2009-12-04 Stephen Voida Updated copyright info for CHI 2010 +% 2009-11-17 Manas Tungare Refactored the title & author sections. +% 2008-11-25 Manas Tungare Initial create. +% +% LICENSE: Public domain: You are free to do whatever you want with +% this template. If you improve this in any way, please submit a +% pull request to the Github repository. + + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sigchi-ext}[2015/1/05, David A. Shamma] + +\typeout{CHI Extended Abstracts template} +\typeout{- updated by David A. Shamma.} +\typeout{- refactored by Luis A. Leiva} +\typeout{- original by Manas Tungare} +\typeout{} +\typeout{Available at https://github.com/sigchi.} +\typeout{} + +\LoadClass[10pt,letterpaper,landscape]{article}[1996/10/31] + +% ----------------------------------------------------------------------------- +% Set paper and margin sizes + +\setlength{\paperheight}{8.5in} +\setlength{\paperwidth}{11in} + +\setlength{\textwidth}{7.25in} +\setlength{\textheight}{6in} + +\setlength{\oddsidemargin}{1.5in} +\setlength{\topmargin}{0.25in} + +\setlength{\columnsep}{0.5in} + +\setlength{\voffset}{-0.2in} + +\setlength{\parindent}{0pt} +\setlength{\footskip}{0.5in} + +\setlength{\marginparsep}{15pt} +\setlength{\marginparwidth}{1.8in} + +\setlength{\itemsep}{0pt} +\setlength{\parsep}{0pt} +\setlength{\topsep}{0pt} +\setlength{\parskip}{9pt} + +% ----------------------------------------------------------------------------- +% Set paper columns and avoid justifying text, according to CHI's MS +% Word template +\twocolumn +\raggedright + +% Use LaTeX standard sans-serif fonts +\renewcommand*\familydefault{\sfdefault} + +% ----------------------------------------------------------------------------- +% Allowed environments and commands + +%% Todo: fix the floats! This overrides floating images, which is +%% needed for marginpar images but not for inline. So the trade off +%% is to make actual floats work then make a new environment for +%% marginepar images. -ayman +% \renewenvironment{table}{\def\@captype{table}}{} +% \renewenvironment{figure}{\def\@captype{figure}}{} +\renewcommand{\thanks}[1]{} % No thanks in this template +\pagestyle{empty} % No page numbers + +% ----------------------------------------------------------------------------- +% Paper Metadata + +\newcommand*{\copyrightinfo}[1]{\gdef\@copyrightinfo{\raggedright#1}} + +% Allow to copy-paste the ACM bibstrip in the Permission Release Form. +\RequirePackage{acmcopyright} +% Define the required commands. +\newcommand*{\CopyrightYear}[1]{} % Actually not used, but needed for consistency +\newcommand*{\acmPrice}[1]{} % Actually not used, but needed for consistency +\newcommand*{\conferenceinfo}[2]{\gdef\@crconferenceinfo{\emph{#1}, #2}} +\newcommand*{\isbn}[1]{\gdef\@crisbn{ACM~#1.}} +\newcommand*{\doi}[1]{\gdef\@crdoi{\urlstyle{crc}\url{#1}}} +% The follwing command typesets the required ACM bibstrip. +% It must be invoked between \begin{document} and \maketitle, either after or before CCS codes. +% So just use \copyrightinfo{\acmcopyright} to override the manual copyright info. +\newcommand*{\acmcopyright}{ + \@copyrightpermission\par\smallskip + \@copyrightowner\par + \@crconferenceinfo\par + \@crisbn\par + \@crdoi +} + +\def\keywords{ +\section*{Author Keywords} +} + +\def\terms{ +\section*{General Terms} +} + +% ----------------------------------------------------------------------------- +% ACM Classification - Gerry/Georgia November 2nd. 1999 + +\newcount\catcount +\global\catcount=1 + +\def\category#1#2#3{% +\ifnum\catcount=1 + \section*{ACM Classification Keywords} + \advance\catcount by 1\else{\unskip; }% +\fi +\@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}% +} + +\def\@category#1#2#3[#4]{% + \begingroup + \let\and\relax +% #1 [\textbf{#2}]% + #1 [#2]% + \if!#4!% + \if!#3!\else : #3\fi + \else + :\space + \if!#3!\else #3\kern\z@---\hskip\z@\fi + \textit{#4}% + \fi + \endgroup +} + +% ----------------------------------------------------------------------------- +% Typeset titles of chapters and sections in sans-serif + +\def\@makeschapterhead#1{ + \vspace*{50\p@} + {\parindent \z@ \raggedright + \sffamily + \interlinepenalty\@M + \Huge\bfseries #1\par\nobreak + \vskip 20\p@ + } +} + +\def\sectionsindent{\z@} +\def\sectionsbeforeskip{-3.5ex \@plus -0.1ex \@minus -0.2ex} +\def\sectionsafterskip{0.2ex \@plus 0.01ex} +% LaTeX scheme is {name}{level}{indent}{beforeskip}{afterskip}{style} +\renewcommand\section{ + \@startsection{section}{1}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% + {\sffamily\large\bfseries\phantomsection} +} +\renewcommand\subsection{ + \@startsection{subsection}{2}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% + {\sffamily\normalsize\itshape\phantomsection} +} +\renewcommand\subsubsection{ + \@startsection{subsubsection}{3}{\sectionsindent}{\sectionsbeforeskip}{\sectionsafterskip}% + %{\sffamily\MakeUppercase\small\itshape\phantomsection} + {\sffamily\normalsize\itshape\phantomsection} +} + +% Now remove vertical space after sections (same as class' font size) +\usepackage[compact]{titlesec} +\titlespacing{\section}{0pt}{*0}{-9pt} +\titlespacing{\subsection}{0pt}{*0}{-9pt} +\titlespacing{\subsubsection}{0pt}{*0}{-9pt} + +% Add references to TOC +\let\myrefname\refname +\renewcommand\refname{\addcontentsline{toc}{section}{\myrefname}\myrefname} + +% Typeset captions +\usepackage[small,bf,sf]{caption} +\captionsetup{font={small,sf},textfont=sf,justification=raggedright} + +% Typeset URLs +\usepackage{url} +% Define a (compact) global style for URLs, rather than the default one +% \def\url@leostyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\bf\ttfamily}}} +\def\url@leostyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\sffamily}}} +\def\url@crcstyle{\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\scriptsize\sffamily}}} +\urlstyle{leo} + +%% Fix Hypenation - to restore hyphenation we need this package. +%% https://twitter.com/anjirokhan/status/546046683331973120 +\usepackage{ragged2e} + +\usepackage{enumitem} + +% Set footones ALWAYS at the bottom of the pages +\usepackage[bottom]{footmisc} + +% Optionally save space in lists (place this command after a list environment (e.g., itemize, enumerate, description) +\newcommand{\compresslist}{ + \vspace{-1em} + \setlength{\itemsep}{1pt} + \setlength{\parskip}{0pt} + \setlength{\parsep}{0pt} +} + +% ----------------------------------------------------------------------------- +% Hyperref for fancy typesetting, PDF metadata, and PDF bookmarks +\RequirePackage{color} +\definecolor{linkColor}{RGB}{6,125,233} +\RequirePackage[ + colorlinks, + citecolor=black, + linkcolor=black, + menucolor=black, + urlcolor=linkColor, + linktocpage, + naturalnames, + plainpages, + breaklinks=true, + bookmarksnumbered, + pdfstartview={FitH}, + final +]{hyperref} + +% Numbering is not allowed for any {sub{sub}}sections +\setcounter{secnumdepth}{-1} + +% ----------------------------------------------------------------------------- +% Text enhancements + +\doublehyphendemerits=9999 % No consecutive line hyphens +\brokenpenalty=9999 % No broken words across pages +\widowpenalty=9999 % Almost no widows at bottom of page +\clubpenalty=9999 % Almost no orphans at top of page +\interfootnotelinepenalty=9999 % Almost never break footnotes + +% ----------------------------------------------------------------------------- +% Allow placing an optional teaser image below author(s) name + +\newcommand{\acm@empty}{} +\newcommand{\acm@teaser}{} +\newcommand{\teaser}[1]{\renewcommand{\acm@teaser}{#1}} + +% ----------------------------------------------------------------------------- +% Authors handling + +\gdef\numberofauthors#1{} +\newcommand{\alignauthor}[1]{% + \parbox[t]{0.5\linewidth}{\raggedright#1}% +} +\newcommand{\affaddr}[1]{#1} +\newcommand{\email}[1]{#1} + +% ----------------------------------------------------------------------------- +% Typeset first page + +\renewcommand{\maketitle}{ + % allocate paper title + \begin{minipage}[t]{0.19\textwidth}\mbox{}\end{minipage}% + \begin{minipage}[b]{0.81\textwidth} + \rule{1.03\textwidth}{3pt} + \renewcommand\baselinestretch{0.75} + \usefont{OT1}{phv}{bc}{n}\selectfont + \raggedright\Huge\bfseries\@title\par + \end{minipage} + + \vfil + + % allocate authors, optional teaser, ... +% \begin{minipage}[b][0.74\textheight][b]{\linewidth} +% \begin{minipage}[t][0.2\textheight][t]{\linewidth}\mbox{}\end{minipage} + \begin{minipage}[t][0.76\textheight][t]{\linewidth} + \ifx\acm@teaser\acm@empty + \begin{minipage}[t][0.5\textheight][t]{\linewidth}{\small\@author}\end{minipage} + \else + \small\@author\par + \vfill + \begingroup + \def\@captype{figure} + \acm@teaser + \endgroup\par + \fi + + \vfil + + % ... and ACM copyright + \rule{\columnwidth}{0.5pt} + {\scriptsize\@copyrightinfo \\} + \end{minipage} + + % avoid title overlapping with abstract + \begin{minipage}[t][0.2\textheight][t]{\linewidth}\mbox{}\end{minipage} +} + +% ----------------------------------------------------------------------------- +% Default copyright strip +\copyrightinfo{Paste the appropriate copyright statement here. ACM + now supports three different copyright statements: + \begin{itemize}[noitemsep,topsep=0pt,parsep=0pt,partopsep=0pt] + \item ACM copyright: ACM holds the copyright on the work. This is + the historical approach. + \item License: The author(s) retain copyright, but ACM receives an + exclusive publication license. + \item Open Access: The author(s) wish to pay for the work to be open + access. The additional fee must be paid to ACM. + \end{itemize} + This text field is large enough to hold the appropriate release + statement assuming it is single spaced in a sans-serif 7 point + font. \\ \textcolor{red}{Every submission will be assigned their own + unique DOI string to be included here.}} + +% ----------------------------------------------------------------------------- +% Including bibspacing.sty inline from http://bit.ly/1vlKdb0 + +% \newdimen\bibindent +% \setlength\bibindent{1.5em} +% \newdimen\bibspacing +% \setlength\bibspacing\z@ +% \renewenvironment{thebibliography}[1]{% +% \section*{\refname +% \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% +% \list{\@biblabel{\@arabic\c@enumiv}}% +% {\settowidth\labelwidth{\@biblabel{#1}}% +% \leftmargin\labelwidth +% \advance\leftmargin\labelsep +% \itemsep\z@skip % should this be commented out? +% \parsep\z@skip % should this be commented out? +% \@openbib@code +% \usecounter{enumiv}% +% \let\p@enumiv\@empty +% \renewcommand\theenumiv{\@arabic\c@enumiv}}% +% \sloppy\clubpenalty4000\widowpenalty4000% +% \sfcode`\.\@m} +% {\def\@noitemerr +% {\@latex@warning{Empty `thebibliography' environment}}% +% \endlist} + +%% https://code.google.com/p/tufte-latex/source/browse/tufte-common.def + +% Paragraph indentation and separation for marginal text +\newcommand{\@tufte@margin@par}{% + \setlength{\RaggedRightParindent}{0.5pc}% + \setlength{\JustifyingParindent}{0.5pc}% + \setlength{\parindent}{0.5pc}% + \setlength{\parskip}{0pt}% +} + +%% +% The placeins package provides the \FloatBarrier command. This forces +% LaTeX to place all of the floats before proceeding. We'll use this to +% keep the float (figure and table) numbers in sequence. +\RequirePackage{placeins} + +%% +% Margin float environment + +\newsavebox{\@tufte@margin@floatbox} +\newenvironment{@tufte@margin@float}[2][-1.2ex]% + {\FloatBarrier% process all floats before this point so the figure/table numbers stay in order. + \begin{lrbox}{\@tufte@margin@floatbox}% + \begin{minipage}{\marginparwidth}% + %% \@tufte@caption@font% + \def\@captype{#2}% + \hbox{}\vspace*{#1}% + %% \@tufte@caption@justification% + \@tufte@margin@par% + \noindent% + } + {\end{minipage}% + \end{lrbox}% + \marginpar{\usebox{\@tufte@margin@floatbox}}% + } + + +%% +% Margin figure environment + +\newenvironment{marginfigure}[1][-1.2ex]% + {\begin{@tufte@margin@float}[#1]{figure}} + {\end{@tufte@margin@float}} + + +%% +% Margin table environment + +\newenvironment{margintable}[1][-1.2ex]% + {\begin{@tufte@margin@float}[#1]{table}} + {\end{@tufte@margin@float}} + +%% +% Auto-detects the proper text alignment based on the various class options + +\newcommand*{\@tufte@justification@autodetect}{% + \ifthenelse{\boolean{@tufte@justified}}% + {\justifying}% + {\RaggedRight}% +} + +%% +% Forces the outer edge of the caption to be set ragged. +% Therefore, on verso pages it's ragged left, and on recto pages it's ragged right. + +\newcommand*{\@tufte@justification@caption@outer}{% + \ifthenelse{\boolean{@tufte@float@recto}}% + {\RaggedRight}% + {\RaggedLeft}% +} + +\newcommand*{\@tufte@justification@outer}{% + \@tufte@checkoddpage% + \ifthenelse{\boolean{@tufte@odd@page}}% + {\RaggedRight}% + {\RaggedLeft}% +} + +%% +% For the CCSXML 2012 Categories + +\let\@concepts\@empty +% Support for CCSXML file +\RequirePackage{comment} +\excludecomment{CCSXML} + +% New concepts scheme +% +% The first argument is the significance, the +% second is the concept(s) +% +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~} +% +% The parser of the expression Significance~General~Specific +% +\def\ccsdesc@parse#1~#2~#3~{% + \expandafter\ifx\csname CCS@#2\endcsname\relax + \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }% + \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi + \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{% + \ifnum#1>499\textbf{#3; }\else + \ifnum#1>299\textit{#3; }\else + #3; \fi\fi}} + +\newcommand\printccsdesc{% + \ifx\@concepts\@empty\else + \if@twocolumn + \section*{CCS Concepts} + \@concepts + \else \small + \quotation{\@concepts}% + \fi + \fi} + +%% +% Pulling in citation formatting from `sigchi.cls' file. + +\parindent 0pt +\typeout{Using 'Abbrev' bibliography style} +\newcommand\bibyear[2]{% + \unskip\quad\ignorespaces#1\unskip + \if#2..\quad \else \quad#2 \fi +} +\newcommand{\bibemph}[1]{{\em#1}} +\newcommand{\bibemphic}[1]{{\em#1\/}} +\newcommand{\bibsc}[1]{{\sc#1}} +\def\@normalcite{% + \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}% +} +\def\@citeNB{% + \def\@cite##1##2{##1\if@tempswa , ##2\fi}% +} +\def\@citeRB{% + \def\@cite##1##2{##1\if@tempswa , ##2\fi]}% +} +\def\start@cite#1#2{% + \edef\citeauthoryear##1##2##3{% + ###1% + \ifnum#2=\z@ \else\ ###2\fi + }% + \ifnum#1=\thr@@ + \let\@@cite\@citeyear + \else + \let\@@cite\@citenormal + \fi + \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}% +} +\def\cite{\start@cite23} +\def\citeNP{\cite*} +\def\citeA{\start@cite10} +\def\citeANP{\citeA*} +\def\shortcite{\start@cite23} +\def\shortciteNP{\shortcite*} +\def\shortciteA{\start@cite20} +\def\shortciteANP{\shortciteA*} +\def\citeyear{\start@cite30} +\def\citeyearNP{\citeyear*} +\def\citeN{% + \@citeRB + \def\citeauthoryear##1##2##3{##1\ [##3% + \def\reserved@a{##1}% + \def\citeauthoryear####1####2####3{% + \def\reserved@b{####1}% + \ifx\reserved@a\reserved@b + ####3% + \else + \errmessage{Package acmart Error: author mismatch + in \string\citeN^^J^^J% + See the acmart package documentation for explanation}% + \fi + }% + }% + \@ifstar\@citeyear\@citeyear +} +\def\shortciteN{% + \@citeRB + \def\citeauthoryear##1##2##3{##2\ [##3% + \def\reserved@a{##2}% + \def\citeauthoryear####1####2####3{% + \def\reserved@b{####2}% + \ifx\reserved@a\reserved@b + ####3% + \else + \errmessage{Package acmart Error: author mismatch + in \string\shortciteN^^J^^J% + See the acmart package documentation for explanation}% + \fi + }% + }% + \@ifstar\@citeyear\@citeyear % changed from "\@ifstart" 12 Jan 2000 gkmt +} + + \def\@citenormal{% + \@ifnextchar [{\@tempswatrue\@citex;} + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 +} +\def\@citeyear{% + \@ifnextchar [{\@tempswatrue\@citex,}% + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 +} +\def\@citex#1[#2]#3{% + \let\@citea\@empty + \@cite{% + \@for\@citeb:=#3\do{% + \@citea + \def\@citea{#1, }% % GERRY FIX FOR BABEL 3/20/2009 -- SO THAT YOU GET [1, 2] IN THE BODY TEXT + \edef\@citeb{\expandafter\@iden\@citeb}% + \if@filesw + \immediate\write\@auxout{\string\citation{\@citeb}}% + \fi + \@ifundefined{b@\@citeb}{% + {\bf ?}% + \@warning{% + Citation `\@citeb' on page \thepage\space undefined% + }% + }% + {\csname b@\@citeb\endcsname}% + }% + }{#2}% +} +\let\@biblabel\@gobble +\newdimen\bibindent +\bibindent=0em +\newskip\bibsep % [jdf] allow bib space tweaking +\bibsep 2pt \@plus 1pt \@minus 1pt % [jdf] initial spacing between ref entries +\setcounter{enumi}{1} +\def\thebibliography#1{% +%% Comment this to have blue DOI links. +\makeatletter +\def\url@leostyle{% +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\color{black}\small\bf\ttfamily}}} +\makeatother +\urlstyle{leo} +%% + \section{% + {REFERENCES} + \@mkboth{{\refname}}{{\refname}}% + }% +% \list{[\arabic{enumi}]}{% + \list{\arabic{enumi}.}{% DLC +% \settowidth\labelwidth{[#1]}% + \settowidth\labelwidth{#1.}% DLC + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \usecounter{enumi} + \itemsep\bibsep% [jdf] standard spacing between references + }% + \let\newblock\@empty + \raggedright %% 7 JAN 2000 gkmt + \sloppy + \sfcode`\.=1000\relax +} + + +\gdef\balancecolumns +{\vfill\eject +\global\@colht=\textheight +\global\ht\@cclv=\textheight +} + +% That's all folks! +\endinput diff --git a/article/sigchi.cls b/article/sigchi.cls new file mode 100644 index 0000000000000000000000000000000000000000..1e225eb4407e8b44f03ee78754294b98c04929dc --- /dev/null +++ b/article/sigchi.cls @@ -0,0 +1,1676 @@ +% CHI Proceedings Template. +% +% FILENAME: sigchi.cls +% +% SOURCE: See https://github.com/sigchi for latest official version. +% +% NOTE: If you wish to edit this document, please list edits properly +% in the CHANGELOG section and not scattered through the code. +% +% CHANGELOG: +% +% 2015-12-10 Daniel Ashbrook Switch 7-bit fonts to 8-bit +% +% 2015-03-21 David A. Shamma Updating for new format and Github +% repo for CHI 2016. +% +% 2014-07-30 Scooter Morris Updated to add DOI text to copyright +% footer +% +% 2011-10-19 DanCo Added \sloppy to reduce overfull lines per Sheridan +% +% 2011-08-28 Jean-Daniel Fekete Re-added flushleft in \terms & +% \category, added compatibility for the caption package +% +% 2006 Andrew Duchowski Updated the metafont names to use more +% modern Berry font naming schemes. +% +% 2002-07-30 JS/GM Fix to vertical spacing before Proofs +% +% 2002-07-29 Georgia Fixed bug in sub-sub-section numbering in +% paragraphs +% +% 1999-09-11 Gerry Murry Allowance Made to switch default fonts +% between those systems using METAFONT and those using 'Type 1' or +% 'Truetype' fonts. See LINE NUMBER 266 for details. Also provided +% for enumerated/annotated Corollaries 'surrounded' by enumerated +% Theorems (line 838). +% +% Modified from ACM_PROC_ARTICLE-SP DOCUMENT STYLE by G.K.M. Tobin +% August-October 1999. Adapted from ARTICLE document style by Ken +% Traub, Olin Shivers also using elements of esub2acm.cls. Modified +% from ARTICLE DOCUMENT STYLE -- Released 16 March 1988 for LaTeX +% version 2.09 by Leslie Lamport, 16 March 1988. +% +% MISC: +% +% Fixed the format to match the Word template and added a \teaser +% command to add a teaser image. +% +% Made the Permission Statement / Conference Info / Copyright Info +% 'user definable' in the source .tex file OR automatic if not +% specified. This 'sp' version does NOT produce the permission block. +% +% Major change in January 2000 was to include a "blank line" in +% between new paragraphs. This involved major changes to the, then, +% acmproc-sp.cls 1.0SP file, precipitating a 'new' name: +% "acm_proc_article-sp.cls" V2.01SP. Footnotes inside table cells +% using \minipage (Oct. 2002) +% +% LICENSE: Public domain: You are free to do whatever you want with +% this template. If you improve this in any way, please submit a +% pull request to the Github repository. +% +% ---- Start of example ---- +% +% \documentclass{sigchi} +% \usepackage{times} +% \pagenumbering{arabic} % Arabic page numbers for submission. +% % Remove this line to eliminate page numbers +% % for the camera ready copy +% \title{The Title} +% \numberofauthors{2} +% \author{ +% \alignauthor Author 1 +% \affaddr{Affiliation}\\ +% \affaddr{Affiliation}\\ +% \email{author@a.com} +% \alignauthor Author 2 +% \affaddr{Affiliation}\\ +% \affaddr{Affiliation}\\ +% \email{author2@b.com} +% } +% +%\begin{document} +%\maketitle +%\abstract{This is the abstract} +%\keywords{Put author keywords here} +%\classification{The ACM Classification keywords here.} +% +%\section{Introduction} +% ... +% +% ---- End of example ---- +% +% For the ACM Tracking Purposes +\def\fileversion{V0.20} +\def\filedate{March 21, 2015} +\def\docdate {\filedate} +% Packages +\usepackage{epsfig} +\usepackage{amssymb} +\usepackage{amsmath} +\usepackage{amsfonts} +%%% ACM_PROC_ARTICLE-SP is a document style for producing two-column camera-ready pages for +%%% ACM conferences, according to ACM specifications. The main features of +%%% this style are: +%%% +%%% 1) Two columns. +%%% 2) Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of +%%% 2pc, hence columns are 20pc wide and 55.5pc tall. (6pc =3D 1in, approx) +%%% 3) First page has title information, and an extra 6pc of space at the +%%% bottom of the first column for the ACM copyright notice. +%%% 4) Text is 9pt on 10pt baselines; titles (except main) are 9pt bold. +%%% +%%% +%%% There are a few restrictions you must observe: +%%% +%%% 1) You cannot change the font size; ACM wants you to use 9pt. +%%% 3) You must start your paper with the \maketitle command. Prior to the +%%% \maketitle you must have \title and \author commands. If you have a +%%% \date command it will be ignored; no date appears on the paper, since +%%% the proceedings will have a date on the front cover. +%%% 4) Marginal paragraphs, tables of contents, lists of figures and tables, +%%% and page headings are all forbidden. +%%% 5) The `figure' environment will produce a figure one column wide; if you +%%% want one that is two columns wide, use `figure*'. +%%% +% +%%% Copyright Space: +%%% This style automatically leaves 1" blank space at the bottom of page 1/ +%%% column 1. This space can optionally be filled with some text using the +%%% \toappear{...} command. If used, this command must be BEFORE the \maketitle +%%% command. If this command is defined AND [preprint] is on, then the +%%% space is filled with the {...} text (at the bottom); otherwise, it is +%%% blank. If you use \toappearbox{...} instead of \toappear{...} then a +%%% box will be drawn around the text (if [preprint] is on). +%%% +%%% A typical usage looks like this: +%%% \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian +%%% Embalming Technique, June 1991, Alfaretta, Georgia.} +%%% This will be included in the preprint, and left out of the conference +%%% version. +%%% +%%% WARNING: +%%% Some dvi-ps converters heuristically allow chars to drift from their +%%% true positions a few pixels. This may be noticeable with the 9pt sans-serif +%%% bold font used for section headers. +%%% You may turn this hackery off via the -e option: +%%% dvips -e 0 foo.dvi >foo.ps +%%% + +\typeout{} + +\typeout{Document Class SIGCHI} + +\typeout{Available at https://github.com/sigchi.} + +\typeout{} + +\typeout{- <May 11, 2016> Updated by Florian Heller to accept ACM copyright commands.} + +\typeout{- <March 21, 2015> Updated by David A. Shamma for CHI 2016.} + +\typeout{- <July 30, 2014> Updated for for 2014 by William Hudson and + Jean-Daniel Fekete.} + +\typeout{- <October 19, 2010> Updated for 2011 by Manas Tungare.} + +\typeout{Shamelessly copied from} + +\typeout{- <September 7, 2000> Modified by Jan O. Borchers from + `chiproceedings'} + +\typeout{- <October 2, 2002> Modified by G.K.M. Tobin from + `acm_proc_article-sp'} + +\typeout{- <May 22, 1989> Hacked from `acmconf' 4/91 by + shivers@cs.cmu.edu, 4/93 by theobald@cs.mcgill.ca} + +\typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.} + +\typeout{} + +% Options taken from ACM LaTeX template. FH, May 11 2016 +% New option code by BV + +\newcount\ACM@basesize +\ACM@basesize=9\relax +\DeclareOption{9pt}{\ACM@basesize=9\relax} +\DeclareOption{10pt}{\ACM@basesize=10\relax} +\DeclareOption{11pt}{\ClassError{sig-alternate}{The `11pt' option is + not allowed}{sig-alternate now exists in 9pt and 10pt versions only}} +\DeclareOption{12pt}{\ClassError{sig-alternate}{The `12pt' option is + not allowed}{sig-alternate now exists in 9pt and 10pt versions only}} + +\ExecuteOptions{9pt} +\ProcessOptions + +\def\doi#1{\def\@doi{#1}} +\doi{http://dx.doi.org/10.1145/0000000.0000000} + +\let\@concepts\@empty + + +\oddsidemargin 1.9025cm % [jdf] stick to CHI Formating Guidelines +\evensidemargin 1.9025cm % [jdf] idem +\advance\oddsidemargin by -1in % Correct for LaTeX gratuitousness +\advance\evensidemargin by -1in % Correct for LaTeX gratuitousness +\marginparwidth 0pt % Margin pars are not allowed. +\marginparsep 11pt % Horizontal space between outer margin and + % marginal note + + % Top of page: +\topmargin 2.2cm % [jdf] stick to CHI Formating Guidelines +%\topmargin 6.5pc % Nominal distance from top of page to top of % 00-09-07 job (for A4) + % box containing running head. +\advance\topmargin by -1in % Correct for LaTeX gratuitousness +\headheight 0pt % Height of box containing running head. +\headsep 0pt % Space between running head and text. + % Bottom of page: +\footskip 30pt % Distance from baseline of box containing foot + % to baseline of last line of text. +\@ifundefined{footheight}{\newdimen\footheight}{}% this is for LaTeX2e +\footheight 12pt % Height of box containing running foot. + + +%% Must redefine the top margin so there's room for headers and +%% page numbers if you are using the preprint option. Footers +%% are OK as is. Olin. +\advance\topmargin by -37pt % Leave 37pt above text for headers +\headheight 12pt % Height of box containing running head. +\headsep 25pt % Space between running head and text. + +\textheight 23cm % [jdf] stick to CHI Formating Guidelines +\textwidth 18cm % [jdf] stick to CHI Formating Guidelines + % For two-column mode: +\columnsep 8.5mm % [jdf] stick to CHI Formating Guidelines +\columnseprule 0pt % Width of rule between columns. +\hfuzz 1pt % Allow some variation in column width, otherwise it's + % too hard to typeset in narrow columns. + +\footnotesep 5.6pt % Height of strut placed at the beginning of every + % footnote =3D height of normal \footnotesize strut, + % so no extra space between footnotes. + +\skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and + % top of first footnote. +\floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved + % to top or bottom of text page. +\textfloatsep 18pt plus 2pt minus 4pt % Space between main text and floats + % at top or bottom of page. +\intextsep 11pt plus 2pt minus 2pt % Space between in-text figures and + % text. +\@ifundefined{@maxsep}{\newdimen\@maxsep}{}% this is for LaTeX2e +\@maxsep 18pt % The maximum of \floatsep, + % \textfloatsep and \intextsep (minus + % the stretch and shrink). +\dblfloatsep 11pt plus 2pt minus 2pt % Same as \floatsep for double-column + % figures in two-column mode. +\dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column + % floats. +\@ifundefined{@dblmaxsep}{\newdimen\@dblmaxsep}{}% this is for LaTeX2e +\@dblmaxsep 18pt % The maximum of \dblfloatsep and + % \dbltexfloatsep. +\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be + % 0pt plus ...) +\@fpsep 8pt plus 2fil % Space between floats on float page/column. +\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be + % 0pt plus ... ) +\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...) +\@dblfpsep 8pt plus 2fil % Space between floats on float page. +\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be + % 0pt plus ... ) +\marginparpush 5pt % Minimum vertical separation between two marginal + % notes. + +\parskip 0pt % Extra vertical space between paragraphs. + % Set to 0pt outside sections, to keep section heads + % uniformly spaced. The value of parskip is set + % to leading value _within_ sections. + % 12 Jan 2000 gkmt +\parindent 0pt % Width of paragraph indentation. +%\partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to + % \parskip and \topsep, added when user + % leaves blank line before environment. +\partopsep 0pt % 00-09-07 job + +\doublehyphendemerits=9999 % No consecutive line hyphens +\brokenpenalty=9999 % No broken words across pages +\widowpenalty=9999 % Almost no widows at bottom of page +\clubpenalty=9999 % Almost no orphans at top of page +\interfootnotelinepenalty=9999 % Almost never break footnotes + +\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1] +\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2] +\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3] + +\@beginparpenalty -\@lowpenalty % Before a list or paragraph environment. +\@endparpenalty -\@lowpenalty % After a list or paragraph environment. +\@itempenalty -\@lowpenalty % Between list items. + +\@namedef{ds@10pt}{\@latexerr{The `10pt' option is not allowed in the `acmconf' + document style.}\@eha} +\@namedef{ds@11pt}{\@latexerr{The `11pt' option is not allowed in the `acmconf' + document style.}\@eha} +\@namedef{ds@12pt}{\@latexerr{The `12pt' option is not allowed in the `acmconf' + document style.}\@eha} + +\@options + +\lineskip 2pt % \lineskip is 1pt for all font sizes. +\normallineskip 2pt +\def\baselinestretch{1} + +\abovedisplayskip 9pt plus2pt minus4.5pt% +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus3pt% +\belowdisplayshortskip 5.4pt plus3pt minus3pt% +\let\@listi\@listI % Setting of \@listi added 9 Jun 87 + +\def\small{\@setsize\small{9pt}\viiipt\@viiipt +\abovedisplayskip 7.6pt plus 3pt minus 4pt% +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus2pt% +\belowdisplayshortskip 3.6pt plus2pt minus 2pt +\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87 +\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt +\itemsep \parsep}} + +\def\footnotesize{\@setsize\footnotesize{9pt}\ixpt\@ixpt +\abovedisplayskip 6.4pt plus 2pt minus 4pt% +\belowdisplayskip \abovedisplayskip +\abovedisplayshortskip \z@ plus 1pt% +\belowdisplayshortskip 2.7pt plus 1pt minus 2pt +\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87 +\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt +\itemsep \parsep}} + +\newcount\aucount +\newcount\originalaucount +\newdimen\auwidth +\auwidth=\textwidth +\newdimen\auskip +\newcount\auskipcount +\newdimen\auskip +\global\auskip=1pc +\newdimen\allauboxes +\allauboxes=\auwidth +\newtoks\addauthors + +\newtoks\subtitletext +\gdef\subtitle#1{\subtitletext={#1}} + +\gdef\additionalauthors#1{\addauthors={#1}} + +\gdef\numberofauthors#1{\global\aucount=#1 +\ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi% +\global\auskipcount=\aucount\global\advance\auskipcount by -1 % [jdf] fix +\global\multiply\auskipcount by 2 +\global\multiply\auskip by \auskipcount +\global\advance\auwidth by -\auskip +\global\divide\auwidth by \aucount +\global\advance\auwidth by -5pt} % [jdf] tabular add some horizontal space + +% \and was modified to count the number of authors. GKMT 12 Aug 1999 +\def\alignauthor{% % \begin{tabular} + \end{tabular} % + \hskip 1pt % [jdf] allow break for more than 3 authors + \begin{tabular}[t]{p{\auwidth}}% + \centering\baselineskip 13pt}% [jdf] added more vertical spacing + +% *** NOTE *** NOTE *** NOTE *** NOTE *** +% If you have 'font problems' then you may need +% to change these, e.g. 'arialb' instead of "arialbd". +% Gerry Murray 11/11/1999 +% *** OR ** comment out block A and activate block B or vice versa. +% ********************************************** +% +% -- Start of block A -- (Type 1 or Truetype fonts) +%\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd +%\newfont{\secit}{timesbi at 12pt} %13 Jan 00 gkmt +%\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi +%\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to timesbi gm 2/4/2000 +% % because "normal" is italic, "italic" is Roman +%\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd +%\newfont{\ttlit}{arialbi at 18pt} % 13 Jan 00 gkmt +%\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial +%\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt +%\newfont{\subttlbf}{arialbd at 14pt} % 13 Jan 00 gkmt +%\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial +%\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt +%\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial +%\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt +%\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial +%\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times +%\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi +%\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times +%\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times + +% ********************************************* +% -- End of block A -- +% +% +% -- Start of block B -- METAFONT +% +++++++++++++++++++++++++++++++++++++++++++++ +% Next (default) block for those using Metafont +% Gerry Murray 11/11/1999 +% *** THIS BLOCK FOR THOSE USING METAFONT ***** +% ********************************************* +%%\newfont{\secfnt}{ptmb at 12pt} +%\newfont{\secfnt}{phvb at 9pt} % 00-09-07 job +%%\newfont{\secit}{ptmbi at 12pt} %13 Jan 00 gkmt +%\newfont{\secit}{phvbo at 9pt} %13 Jan 00 gkmt % 00-09-07 job +%%\newfont{\subsecfnt}{ptmri at 11pt} +%\newfont{\subsecfnt}{phvro at 9pt} % 00-09-07 job +%%\newfont{\subsecit}{ptmbi at 11pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000 +%\newfont{\subsecit}{phvr at 9pt} % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000 % 00-09-07 job +% % because "normal" is italic, "italic" is Roman +%\newfont{\ttlfnt}{phvb at 18pt} +%\newfont{\ttlit}{phvbo at 18pt} % GM 2/4/2000 +%\newfont{\subttlfnt}{phvr at 14pt} +%\newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000 +%\newfont{\subttlbf}{phvb at 14pt} % 13 Jan 00 gkmt +%%\newfont{\aufnt}{phvr at 12pt} +%\newfont{\aufnt}{ptmb at 12pt} % 00-09-07 job +%%\newfont{\auit}{phvro at 12pt} % GM 2/4/2000 +%\newfont{\auit}{ptmbo at 12pt} % GM 2/4/2000 % 00-09-07 job +%%\newfont{\affaddr}{phvr at 10pt} +%\newfont{\affaddr}{ptmr at 12pt} % 00-09-07 job +%%\newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000 +%\newfont{\affaddrit}{ptmro at 12pt} % GM 2/4/2000 % 00-09-07 job +%%\newfont{\eaddfnt}{phvr at 12pt} +%\newfont{\eaddfnt}{ptmr at 12pt} % 00-09-07 job +%%\newfont{\ixpt}{ptmr at 9pt} +%\newfont{\ixpt}{ptmr at 10pt} % 00-09-07 job +%\newfont{\confname}{ptmri at 8pt} +%\newfont{\crnotice}{ptmr at 8pt} +%%\newfont{\ninept}{ptmr at 9pt} +%\newfont{\ninept}{ptmr at 10pt} % 00-09-07 job +% ********************************************* +% -- End of block B -- +% +% +% -- Start of block C -- METAFONT (modern usage) +% +++++++++++++++++++++++++++++++++++++++++++++ +% Next (default) block for those using Metafont +% Andrew Duchowski 06/19/2006 +% *** THIS BLOCK FOR THOSE USING METAFONT ***** +% ********************************************* +% notes: 7t fonts are 7-bit latex, 8t fonts are T1 fonts +\newfont{\secfnt}{phvb8t at 9pt} +\newfont{\secit}{phvbo8t at 9pt} +\newfont{\subsecfnt}{phvro8t at 9pt} +\newfont{\subsecit}{phvr8t at 9pt} +\newfont{\ttlfnt}{phvb8t at 18pt} +\newfont{\ttlit}{phvbo8t at 18pt} +\newfont{\subttlfnt}{phvr8t at 14pt} +\newfont{\subttlit}{phvro8t at 14pt} +\newfont{\subttlbf}{phvb8t at 14pt} +\newfont{\aufnt}{ptmb8t at 12pt} +\newfont{\auit}{ptmbo8t at 12pt} +\newfont{\affaddr}{ptmr8t at 12pt} +\newfont{\affaddrit}{ptmro8t at 12pt} +\newfont{\eaddfnt}{ptmr8t at 12pt} +\newfont{\ixpt}{ptmr8t at 10pt} +\newfont{\confname}{ptmri8t at 8pt} +\newfont{\crnotice}{ptmr8t at 8pt} +\newfont{\ninept}{ptmr8t at 10pt} +% +++++++++++++++++++++++++++++++++++++++++++++ +% -- End of block C -- + +%\def\email#1{{{\eaddfnt{\vskip 4pt#1}}}} +\def\email#1{{{\eaddfnt{#1}}}} % 00-09-07 job + +\def\addauthorsection{\ifnum\originalaucount>3 + \section{Additional Authors}\the\addauthors + \fi} + +\newcount\savesection +\newcount\sectioncntr +\global\sectioncntr=1 + +\setcounter{secnumdepth}{0} + +\def\appendix{\par +\section*{APPENDIX} +\setcounter{section}{0} + \setcounter{subsection}{0} + \def\thesection{\Alph{section}} } + + +%\leftmargini 22.5pt +\leftmargini 10pt % DLC +\leftmarginii 19.8pt % > \labelsep + width of '(m)' +\leftmarginiii 16.8pt % > \labelsep + width of 'vii.' +\leftmarginiv 15.3pt % > \labelsep + width of 'M.' +\leftmarginv 9pt +\leftmarginvi 9pt + +\leftmargin\leftmargini +\labelsep 4.5pt +\labelwidth\leftmargini\advance\labelwidth-\labelsep + +\def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt% +%\topsep 7.2pt plus 2pt minus 4pt% +\topsep 0pt% % 00-09-07 job +\itemsep 3.6pt plus 2pt minus 1pt} + +\let\@listi\@listI +\@listi + +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii\advance\labelwidth-\labelsep + \topsep 3.6pt plus 2pt minus 1pt + \parsep 1.8pt plus 0.9pt minus 0.9pt + \itemsep \parsep} + +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii\advance\labelwidth-\labelsep + \topsep 1.8pt plus 0.9pt minus 0.9pt + \parsep \z@ \partopsep 1pt plus 0pt minus 1pt + \itemsep \topsep} + +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} + +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv\advance\labelwidth-\labelsep} + +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} + +\def\labelenumi{\theenumi.} +\def\theenumi{\arabic{enumi}} + +\def\labelenumii{(\theenumii)} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} + +\def\labelenumiii{\theenumiii.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} + +\def\labelenumiv{\theenumiv.} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} + +\def\labelitemi{$\bullet$} +\def\labelitemii{\bf --} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + +\def\verse{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} +\let\endverse\endlist + +\def\quotation{\list{}{\listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} +\let\endquotation=\endlist + +\def\quote{\list{}{\rightmargin\leftmargin}\item[]} +\let\endquote=\endlist + +\def\descriptionlabel#1{\hspace\labelsep \bf #1} +\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + +\let\enddescription\endlist + +\def\theequation{\arabic{equation}} + +\arraycolsep 4.5pt % Half the space between columns in an array environment. +\tabcolsep 5.4pt % Half the space between columns in a tabular environment. +\arrayrulewidth .4pt % Width of rules in array and tabular environment. +\doublerulesep 1.8pt % Space between adjacent rules in array or tabular env. + +\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.) + +\skip\@mpfootins =\skip\footins + +\fboxsep =2.7pt % Space left between box and text by \fbox and \framebox. +\fboxrule =.4pt % Width of rules in box made by \fbox and \framebox. + +\def\thepart{\Roman{part}} % Roman numeral part numbers. +\def\thesection {\arabic{section}} +\def\thesubsection {\thesection.\arabic{subsection}} +%\def\thesubsubsection {\thesubsection.\arabic{subsubsection}} % GM 7/30/2002 +%\def\theparagraph {\thesubsubsection.\arabic{paragraph}} % GM 7/30/2002 +\def\thesubparagraph {\theparagraph.\arabic{subparagraph}} + +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +\def\tableofcontents{\@latexerr{\tableofcontents: Tables of contents are not + allowed in the `acmconf' document style.}\@eha} + +\def\l@part#1#2{\addpenalty{\@secpenalty} + \addvspace{2.25em plus 1pt} % space above part line + \begingroup + \@tempdima 3em % width of box holding part number, used by + \parindent \z@ \rightskip \@pnumwidth %% \numberline + \parfillskip -\@pnumwidth + {\large \bf % set line in \large boldface + \leavevmode % TeX command to enter horizontal mode. + #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak % Never break after part entry + \endgroup} + +\def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break + \addvspace{1.0em plus 1pt} % space above toc entry + \@tempdima 1.5em % width of box holding section number + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \bf % Boldface. + \leavevmode % TeX command to enter horizontal mode. + \advance\leftskip\@tempdima %% added 5 Feb 88 to conform to + \hskip -\leftskip %% 25 Jan 88 change to \numberline + #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par + \endgroup} + + +\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} +\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} +\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} +\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}} + +\def\listoffigures{\@latexerr{\listoffigures: Lists of figures are not + allowed in the `acmconf' document style.}\@eha} + +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} + +\def\listoftables{\@latexerr{\listoftables: Lists of tables are not + allowed in the `acmconf' document style.}\@eha} +\let\l@table\l@figure + +\def\footnoterule{\kern-3\p@ + \hrule width .4\columnwidth + \kern 2.6\p@} % The \hrule has default height of .4pt . +% ------ +\long\def\@makefntext#1{\noindent +%\hbox to .5em{\hss$^{\@thefnmark}$}#1} % original +\hbox to .5em{\hss\textsuperscript{\@thefnmark}}#1} % C. Clifton / GM Oct. 2nd. 2002 +% ------- + +\long\def\@maketntext#1{\noindent +#1} + +\long\def\@maketitlenotetext#1#2{\noindent + \hbox to 1.8em{\hss$^{#1}$}#2} + +\setcounter{topnumber}{2} +\def\topfraction{.7} +\setcounter{bottomnumber}{1} +\def\bottomfraction{.3} +\setcounter{totalnumber}{3} +\def\textfraction{.2} +\def\floatpagefraction{.5} +\setcounter{dbltopnumber}{2} +\def\dbltopfraction{.7} +\def\dblfloatpagefraction{.5} + +% According to the CHI specifications, captions should be centered. +% This looks kind of bad for multi-line captions, so I only center +% 1-line captions. +\long\def\@makecaption#1#2{ + \vskip 2pt % \baselineskip + \setbox\@tempboxa\hbox{\small +\textbf{#1. #2}} % DLC + \ifdim \wd\@tempboxa >\hsize % IF longer than one line: + \small\textbf{#1. #2}\par % THEN set as ordinary paragraph. + \else % ELSE center. + \hbox to\hsize{\hfil\box\@tempboxa\hfil}\par + \fi} + +\@ifundefined{figure}{\newcounter {figure}} % this is for LaTeX2e + +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{Figure \thefigure} +\def\figure{\@float{figure}} +\def\endfigure{\end@float} +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} + +\@ifundefined{table}{\newcounter {table}} % this is for LaTeX2e + +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{Table \thetable} +\def\table{\@float{table}} +\def\endtable{\end@float} +\@namedef{table*}{\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + +% [jdf] create a \teaser command for adding a figure in title page +\newcommand{\chi@empty}{} +\newcommand{\chi@teaser}{} +\newcommand{\teaser}[1]{\renewcommand{\chi@teaser}{#1}} + +\newlength{\teaserspace} +\setlength{\teaserspace}{0.25in} +% [jdf] end teaser + +\newtoks\titleboxnotes +\newcount\titleboxnoteflag + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 0pt{$^{\@thefnmark}$\hss}} + \twocolumn[\@maketitle] +\@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@subtitle{}\let\thanks\relax + \@copyrightspace} % JRB 2008-08-13 this line was commented out for some reason + % which meant that the copyright space wasn't reserved. + % I re-enabled it. + +% actual class setup happens here: + \NeedsTeXFormat{LaTeX2e} + \ProvidesClass{sigchi} [2011/06/06 - V0.16] % DLC + \RequirePackage{latexsym}% QUERY: are these two really needed? + +\def\@height{height} +\def\@width{width} +\def\@minus{minus} +\def\@plus{plus} +\def\hb@xt@{\hbox to} +\newif\if@faircopy +\@faircopyfalse +\def\ds@faircopy{\@faircopytrue} + +\def\ds@preprint{\@faircopyfalse} + +\@twosidetrue +\@mparswitchtrue +\def\ds@draft{\overfullrule 5\p@} + +\lineskip \p@ +\normallineskip \p@ +\def\baselinestretch{1} +\def\@ptsize{0} %needed for amssymbols.sty + +% allow use of old-style font change commands in LaTeX2e +\@maxdepth\maxdepth +% +\DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} + + \renewcommand{\rmdefault}{cmr} % was 'ttm' +% Note! I have also found 'mvr' to work ESPECIALLY well. +% Gerry - October 1999 +% You may need to change your LV1times.fd file so that sc is +% mapped to cmcsc - -for smallcaps -- that is if you decide +% to change {cmr} to {times} above. (Not recommended) + \renewcommand{\@ptsize}{} + \renewcommand{\normalsize}{% +% \@setfontsize\normalsize\@ixpt{10.5\p@}%\ninept% + \@setfontsize\normalsize\@xpt{11\p@}%\ninept% % from 9/10.5 to 10/11 00-09-07 job + \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip 6\p@ \@minus 3\p@ + \belowdisplayshortskip 6\p@ \@minus 3\p@ + \let\@listi\@listI + } + + \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt{8\p@}} + \newcommand\tiny{\@setfontsize\tiny\@vpt{6\p@}} + \newcommand\large{\@setfontsize\large\@xiipt{14\p@}} + \newcommand\Large{\@setfontsize\Large\@xivpt{18\p@}} + \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20\p@}} + \newcommand\huge{\@setfontsize\huge\@xxpt{25\p@}} + \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30\p@}} + +\normalsize + +% make aubox hsize/number of authors up to 3, less gutter +% then showbox gutter showbox gutter showbox -- GKMT Aug 99 +%\newbox\@acmtitlebox % [jdf] no use of the box +\def\@maketitle{\newpage + \null +%\setbox\@acmtitlebox\vbox{ % [jdf] box not used +\baselineskip 20pt % [jdf] no skip + \vskip 1em % [jdf] removed Vertical space above title. + \begin{center} + {\ttlfnt \@title\par} % Title set in 18pt Helvetica (Arial) bold size. + \vskip 0.5ex % [jdf] Vertical space after title. +%This should be the subtitle. +{\subttlfnt \the\subtitletext\par}\vskip 0.7ex%\fi [jdf] less vertical space + {\baselineskip 16pt\aufnt % each author set in \12 pt Arial, in a + \lineskip .5em % tabular environment + \begin{tabular}[t]{c}\@author + \end{tabular}\par} + \vskip 1em % [jdf] reduced Vertical space after author. + \end{center}% % [jdf] begin add teaser + \ifx\chi@teaser\chi@empty \else% + \begingroup% + \def\@captype{figure}% + \chi@teaser% + \endgroup\par% + \vspace{\teaserspace}% % [jdf] end teaser + \fi} +% \dimen0=\ht\@acmtitlebox % [jdf] removed box stuff +% \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT +% \advance\dimen0 by -8.75pc\relax % Increased space for title box -- KBT % 00-09-07 job (decreased) +% \unvbox\@acmtitlebox +% \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi} + + +\newcount\titlenotecount +\global\titlenotecount=0 +\newtoks\tntoks +\newtoks\tntokstwo +\newtoks\tntoksthree +\newtoks\tntoksfour +\newtoks\tntoksfive + +\def\abstract{ +\ifnum\titlenotecount>0 % was =1 + \insert\footins{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + }% + \color@begingroup +\ifnum\titlenotecount=1 + \@maketntext{% + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\@finalstrut\strutbox}% +\fi +\ifnum\titlenotecount=2 + \@maketntext{% + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\@finalstrut\strutbox}% +\fi +\ifnum\titlenotecount=3 + \@maketntext{% + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\@finalstrut\strutbox}% +\fi +\ifnum\titlenotecount=4 + \@maketntext{% + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\@finalstrut\strutbox}% +\fi +\ifnum\titlenotecount=5 + \@maketntext{% + \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\par\@finalstrut\strutbox}% +\@maketntext{% + \raisebox{4pt}{$\P$}\rule\z@\footnotesep\ignorespaces\the\tntoksfive\@finalstrut\strutbox}% +\fi + \color@endgroup} %g} +\fi +\setcounter{footnote}{0} +\section*{ABSTRACT}\normalsize %\the\parskip \the\baselineskip%\ninept +} + +\def\endabstract{\if@twocolumn\else\endquotation\fi} + +\def\keywords#1{%\if@twocolumn +\section*{Author Keywords} +\begin{flushleft}#1\end{flushleft} +%\else \small +%\quotation #1 +%\fi +} + +\def\classification#1{%\if@twocolumn +\section*{ACM Classification Keywords} +\begin{flushleft}#1\end{flushleft} +%\else \small +%\quotation\the\parskip +%\fi +} + +% I've pulled the check for 2 cols, since proceedings are _always_ +% two-column 11 Jan 2000 gkmt +\def\terms#1{%\if@twocolumn +\section*{General Terms} +\begin{flushleft}#1\end{flushleft} +%\else \small +%\quotation\the\parskip +%\fi +} + +% -- Classification needs to be a bit smart due to optionals - Gerry/Georgia November 2nd. 1999 +\newcount\catcount +\global\catcount=1 + +\def\category#1#2#3{% +\ifnum\catcount=1 +\section*{ACM Classification Keywords} % DLC +\advance\catcount by 1\else{\unskip; }\fi + \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}% +} + +\def\@category#1#2#3[#4]{% + \begingroup + \let\and\relax +% #1 [\textbf{#2}]% + #1 #2% % DLC + \if!#4!% + \if!#3!\else : #3\fi + \else + :\space + \if!#3!\else #3\kern\z@---\hskip\z@\fi + \textit{#4}% + \fi + \endgroup +} +% + +%%% This section (written by KBT) handles the 1" box in the lower left +%%% corner of the left column of the first page by creating a picture, +%%% and inserting the predefined string at the bottom (with a negative +%%% displacement to offset the space allocated for a non-existent +%%% caption). +%%% +\newtoks\copyrightnotice +\def\ftype@copyrightbox{8} +\def\@copyrightspace{ +\@float{copyrightbox}[b] +\begin{center} +\setlength{\unitlength}{1pc} +\ifnum\ACM@basesize=9 +\begin{picture}(20,6) %Space for copyright notice +\put(0,-0.95){\crnotice{\@toappear}} +\end{picture} +\fi +\ifnum\ACM@basesize=10 +\begin{picture}(20,7) %Space for copyright notice +\put(0,-0.95){\crnotice{\@toappear}} +\end{picture} +\fi +\end{center} +\end@float} + +\def\@toappear{} % Default setting blank - commands below change this. +\long\def\toappear#1{\def\@toappear{\parbox[b]{20pc}{\baselineskip 9pt#1}}} +\def\toappearbox#1{\def\@toappear{\raisebox{5pt}{\framebox[20pc]{\parbox[b]{19pc}{#1}}}}} + +\newtoks\conf +\newtoks\confinfo +\def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}} + + +% Introduce a "chi_draft" option which conditionally enables marginpars with a warning. +\let\oldmarginpar\marginpar +\renewcommand{\marginpar}[2][]{\@latexerr{The marginpar command is not allowed in the + `acmconf' document style.}\@eha} +\DeclareOption{chi_draft}{ + \marginparwidth 40pt + \renewcommand{\marginpar}[2][]{\@latex@warning{The marginpar command is not allowed in the `acmconf' + document style. Remove all occurences before final document submission.}\oldmarginpar[#1]{#2}} +} +% Immediately execute the options at this point. Reason is discussed +% here: https://tex.stackexchange.com/questions/203387/ +\ProcessOptions + +\mark{{}{}} % Initializes TeX's marks + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + +\def\@begintheorem#1#2{% + \trivlist + \item[% + \hskip 10\p@ + \hskip \labelsep + {{\sc #1}\hskip 5\p@\relax#2.}% + ] + \it +} +\def\@opargbegintheorem#1#2#3{% + \trivlist + \item[% + \hskip 10\p@ + \hskip \labelsep + {\sc #1\ #2\ % This mod by Gerry to enumerate corollaries + \setbox\@tempboxa\hbox{(#3)} % and bracket the 'corollary title' + \ifdim \wd\@tempboxa>\z@ % and retain the correct numbering of e.g. theorems + \hskip 5\p@\relax % if they occur 'around' said corollaries. + \box\@tempboxa % Gerry - Nov. 1999. + \fi.}% + ] + \it +} +\newif\if@qeded +\global\@qededfalse + +% -- original +%\def\proof{% +% \vspace{-\parskip} % GM July 2000 (for tighter spacing) +% \global\@qededfalse +% \@ifnextchar[{\@xproof}{\@proof}% +%} +% -- end of original + +% (JSS) Fix for vertical spacing bug - Gerry Murray July 30th. 2002 +\def\proof{% +\vspace{-\lastskip}\vspace{-\parsep}\penalty-51% +\global\@qededfalse +\@ifnextchar[{\@xproof}{\@proof}% +} + +\def\endproof{% + \if@qeded\else\qed\fi + \endtrivlist +} +\def\@proof{% + \trivlist + \item[% + \hskip 10\p@ + \hskip \labelsep + {\sc Proof.}% + ] + \ignorespaces +} +\def\@xproof[#1]{% + \trivlist + \item[\hskip 10\p@\hskip \labelsep{\sc Proof #1.}]% + \ignorespaces +} +\def\qed{% + \unskip + \kern 10\p@ + \begingroup + \unitlength\p@ + \linethickness{.4\p@}% + \framebox(6,6){}% + \endgroup + \global\@qededtrue +} + +\def\newdef#1#2{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \global\@namedef{#1}{\@defthm{#1}{#2}}% + \global\@namedef{end#1}{\@endtheorem}% + }% +} +\def\@defthm#1#2{% + \refstepcounter{#1}% + \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}% +} +\def\@xdefthm#1#2{% + \@begindef{#2}{\csname the#1\endcsname}% + \ignorespaces +} +\def\@ydefthm#1#2[#3]{% + \trivlist + \item[% + \hskip 10\p@ + \hskip \labelsep + {\it #2% + \savebox\@tempboxa{#3}% + \ifdim \wd\@tempboxa>\z@ + \ \box\@tempboxa + \fi.% + }]% + \ignorespaces +} +\def\@begindef#1#2{% + \trivlist + \item[% + \hskip 10\p@ + \hskip \labelsep + {\it #1\ \rm #2.}% + ]% +} +\def\theequation{\arabic{equation}} + +\newcounter{part} +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] +\def\thepart{\Roman{part}} +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} %removed \subsecfnt 29 July 2002 gkmt +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} %removed \subsecfnt 29 July 2002 gkmt + +\newif\if@uchead +\@ucheadfalse + +%% CHANGES: NEW NOTE +%% NOTE: OK to use old-style font commands below, since they were +%% suitably redefined for LaTeX2e +%% END CHANGES +\def\part{% + \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@} + {4\p@}{\normalsize\@ucheadtrue}% +} + +% Rationale for changes made in next four definitions: +% "Before skip" is made elastic to provide some give in setting columns (vs. +% parskip, which is non-elastic to keep section headers "anchored" to their +% subsequent text. +% +% "After skip" is minimized -- BUT setting it to 0pt resulted in run-in heads, despite +% the documentation asserted only after-skip < 0pt would have result. +% +% Baselineskip added to style to ensure multi-line section titles, and section heads +% followed by another section head rather than text, are decently spaced vertically. +% 12 Jan 2000 gkmt +\def\section{% + \@startsection{section}{1}{\z@}{8pt plus 3pt minus 3pt}% + {0.5pt}{\baselineskip=14pt\secfnt\@ucheadtrue}% +} + +\def\subsection{% + \@startsection{subsection}{2}{\z@}{8pt plus 3pt minus 3pt}% + {0.5pt}{\baselineskip=14pt\secfnt}% +} +\def\subsubsection{% + \@startsection{subsubsection}{3}{\z@}{4pt plus 2pt minus 1pt}% + {0.5pt}{\baselineskip=14pt\subsecfnt}% +} + +\def\paragraph{% + \@startsection{paragraph}{3}{\z@}{4pt plus 2pt minus 1pt}% + {0.5pt}{\baselineskip=14pt\subsecfnt}% +} + +\let\@period=. +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec %gkmt, 11 aug 99 + \global\let\@period\@empty + \leavevmode + \global\let\@period.% + \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa + \@afterindentfalse + \fi + %\if@nobreak 11 Jan 00 gkmt + %\everypar{} + %\else + \addpenalty\@secpenalty + \addvspace\@tempskipa + %\fi + \parskip=0pt + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}} + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}% +} + + +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \par\nobreak + \vskip -6pt % [jdf] less space between section as in the Word template + \@xsect{#3}\parskip=6pt} % [jdf] paragraph skip shorter + + +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@\refstepcounter{#1} + \else + \refstepcounter{#1}% + \edef\@svsec{% + \begingroup + %\ifnum#2>2 \noexpand\rm \fi % changed to next 29 July 2002 gkmt + \ifnum#2>2 \noexpand#6 \fi + \csname the#1\endcsname + \endgroup + \ifnum #2=1\relax .\fi + \hskip 1em + }% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6\relax + \@hangfrom{\hskip #3\relax\@svsec}% + \begingroup + \interlinepenalty \@M + \if@uchead + \uppercase{#8}% + \else + #8% + \fi + \par + \endgroup + \endgroup + \csname #1mark\endcsname{#7}% + \par\nobreak + \vskip -6pt % [jdf] less space between section as in the Word template + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7% + }% + \else + \def\@svsechd{% + #6% + \hskip #3\relax + \@svsec + \if@uchead + \uppercase{#8}% + \else + #8% + \fi + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7% + }% + }% + \fi + \@xsect{#5}\parskip=6pt% [jdf] shorter +} +\def\@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par + \nobreak + \vskip \@tempskipa + \@afterheading + \else + \global\@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + \clubpenalty\@M + \hskip -\parindent + \begingroup + \@svsechd + \@period + \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi + }% + \fi + \ignorespaces +} + +\def\@trivlist{% + \@topsepadd\topsep + \if@noskipsec + \global\let\@period\@empty + \leavevmode + \global\let\@period.% + \fi + \ifvmode + \advance\@topsepadd\partopsep + \else + \unskip + \par + \fi + \if@inlabel + \@noparitemtrue + \@noparlisttrue + \else + \@noparlistfalse + \@topsep\@topsepadd + \fi + \advance\@topsep \parskip + \leftskip\z@skip + \rightskip\@rightskip + \parfillskip\@flushglue + \@setpar{\if@newlist\else{\@@par}\fi} + \global\@newlisttrue + \@outerparskip\parskip +} + +%%% Actually, 'abbrev' works just fine as the default - Gerry Feb. 2000 +%%% Bibliography style. + +\parindent 0pt +\typeout{Using 'Abbrev' bibliography style} +\newcommand\bibyear[2]{% + \unskip\quad\ignorespaces#1\unskip + \if#2..\quad \else \quad#2 \fi +} +\newcommand{\bibemph}[1]{{\em#1}} +\newcommand{\bibemphic}[1]{{\em#1\/}} +\newcommand{\bibsc}[1]{{\sc#1}} +\def\@normalcite{% + \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}% +} +\def\@citeNB{% + \def\@cite##1##2{##1\if@tempswa , ##2\fi}% +} +\def\@citeRB{% + \def\@cite##1##2{##1\if@tempswa , ##2\fi]}% +} +\def\start@cite#1#2{% + \edef\citeauthoryear##1##2##3{% + ###1% + \ifnum#2=\z@ \else\ ###2\fi + }% + \ifnum#1=\thr@@ + \let\@@cite\@citeyear + \else + \let\@@cite\@citenormal + \fi + \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}% +} +\def\cite{\start@cite23} +\def\citeNP{\cite*} +\def\citeA{\start@cite10} +\def\citeANP{\citeA*} +\def\shortcite{\start@cite23} +\def\shortciteNP{\shortcite*} +\def\shortciteA{\start@cite20} +\def\shortciteANP{\shortciteA*} +\def\citeyear{\start@cite30} +\def\citeyearNP{\citeyear*} +\def\citeN{% + \@citeRB + \def\citeauthoryear##1##2##3{##1\ [##3% + \def\reserved@a{##1}% + \def\citeauthoryear####1####2####3{% + \def\reserved@b{####1}% + \ifx\reserved@a\reserved@b + ####3% + \else + \errmessage{Package acmart Error: author mismatch + in \string\citeN^^J^^J% + See the acmart package documentation for explanation}% + \fi + }% + }% + \@ifstar\@citeyear\@citeyear +} +\def\shortciteN{% + \@citeRB + \def\citeauthoryear##1##2##3{##2\ [##3% + \def\reserved@a{##2}% + \def\citeauthoryear####1####2####3{% + \def\reserved@b{####2}% + \ifx\reserved@a\reserved@b + ####3% + \else + \errmessage{Package acmart Error: author mismatch + in \string\shortciteN^^J^^J% + See the acmart package documentation for explanation}% + \fi + }% + }% + \@ifstar\@citeyear\@citeyear % changed from "\@ifstart" 12 Jan 2000 gkmt +} + + \def\@citenormal{% + \@ifnextchar [{\@tempswatrue\@citex;} + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 +} +\def\@citeyear{% + \@ifnextchar [{\@tempswatrue\@citex,}% + {\@tempswafalse\@citex[]}% GERRY FIX FOR BABEL 3/20/2009 +} +\def\@citex#1[#2]#3{% + \let\@citea\@empty + \@cite{% + \@for\@citeb:=#3\do{% + \@citea + \def\@citea{#1, }% % GERRY FIX FOR BABEL 3/20/2009 -- SO THAT YOU GET [1, 2] IN THE BODY TEXT + \edef\@citeb{\expandafter\@iden\@citeb}% + \if@filesw + \immediate\write\@auxout{\string\citation{\@citeb}}% + \fi + \@ifundefined{b@\@citeb}{% + {\bf ?}% + \@warning{% + Citation `\@citeb' on page \thepage\space undefined% + }% + }% + {\csname b@\@citeb\endcsname}% + }% + }{#2}% +} +\let\@biblabel\@gobble +\newdimen\bibindent +\bibindent=0em +\newskip\bibsep % [jdf] allow bib space tweaking +\bibsep 2pt \@plus 1pt \@minus 1pt % [jdf] initial spacing between ref entries +\setcounter{enumi}{1} +\def\thebibliography#1{% +%% Comment this to have blue DOI links. +\makeatletter +\def\url@leostyle{% +\@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\color{black}\small\bf\ttfamily}}} +\makeatother +\urlstyle{leo} +%% + \section{% + {References} + \@mkboth{{\refname}}{{\refname}}% + }% +% \list{[\arabic{enumi}]}{% + \list{\arabic{enumi}.}{% DLC +% \settowidth\labelwidth{[#1]}% + \settowidth\labelwidth{#1.}% DLC + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \usecounter{enumi} + \itemsep\bibsep% [jdf] standard spacing between references + }% + \let\newblock\@empty + \raggedright %% 7 JAN 2000 gkmt + \sloppy + \sfcode`\.=1000\relax +} + + +\gdef\balancecolumns +{\vfill\eject +\global\@colht=\textheight +\global\ht\@cclv=\textheight +} + +\newcount\colcntr +\global\colcntr=0 +\newbox\savebox + +\gdef \@makecol {% +\global\advance\colcntr by 1 +\ifnum\colcntr>2 \global\colcntr=1\fi + \ifvoid\footins + \setbox\@outputbox \box\@cclv + \else + \setbox\@outputbox \vbox{% +\boxmaxdepth \@maxdepth + \@tempdima\dp\@cclv + \unvbox \@cclv + \vskip-\@tempdima + \vskip \skip\footins + \color@begingroup + \normalcolor + \footnoterule + \unvbox \footins + \color@endgroup + }% + \fi + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \@combinefloats + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \setbox\@outputbox \vbox to\@colht {% +\@texttop + \dimen@ \dp\@outputbox + \unvbox \@outputbox + \vskip -\dimen@ + \@textbottom + }% + \fi + \global \maxdepth \@maxdepth +} +\def\titlenote{\@ifnextchar[\@xtitlenote{\stepcounter\@mpfn +\global\advance\titlenotecount by 1 +\ifnum\titlenotecount=1 + \raisebox{9pt}{$\ast$} +\fi +\ifnum\titlenotecount=2 + \raisebox{9pt}{$\dagger$} +\fi +\ifnum\titlenotecount=3 + \raisebox{9pt}{$\ddagger$} +\fi +\ifnum\titlenotecount=4 +\raisebox{9pt}{$\S$} +\fi +\ifnum\titlenotecount=5 +\raisebox{9pt}{$\P$} +\fi + \@titlenotetext +}} + +\long\def\@titlenotetext#1{\insert\footins{% +\ifnum\titlenotecount=1\global\tntoks={#1}\fi +\ifnum\titlenotecount=2\global\tntokstwo={#1}\fi +\ifnum\titlenotecount=3\global\tntoksthree={#1}\fi +\ifnum\titlenotecount=4\global\tntoksfour={#1}\fi +\ifnum\titlenotecount=5\global\tntoksfive={#1}\fi + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + }% + \color@begingroup + \color@endgroup}} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\ps@plain +\baselineskip=11pt +\let\thepage\relax % For NO page numbers - Gerry Nov. 30th. 1999 +\def\setpagenumber#1{\global\setcounter{page}{#1}} +%\pagenumbering{arabic} % Arabic page numbers but commented out for NO page numbes - Gerry Nov. 30th. 1999 +\twocolumn % Double column. +\flushbottom % Even bottom -- alas, does not balance columns at end of document +\pagestyle{plain} + +% Need Copyright Year and Copyright Data to be user definable (in .tex file). +% Gerry Nov. 30th. 1999 +\newtoks\copyrtyr +\newtoks\acmcopyr +\newtoks\boilerplate + +\global\acmcopyr={X-XXXXX-XX-X/XX/XX} % Default - 5/11/2001 *** Gerry +\global\copyrtyr={\the\year} % Default - 3/3/2003 *** Gerry +\def\acmPrice#1{\gdef\@acmPrice{#1}} +\acmPrice{} %article price % Changed to 15 - June 2012 - Gerry + + +\def\CopyrightYear#1{\global\copyrtyr{#1}} +\def\crdata#1{\global\acmcopyr{#1}} +\def\permission#1{\global\boilerplate{#1}} + +% ISBN +% +\def\isbn#1{\global\acmcopyr={#1}} +\isbn{978-1-4503-2138-9} + +\RequirePackage{url} +\urlstyle{rm} +\def\doi#1{\def\@doi{#1}} +\doi{10.1145/1235} +\def\printdoi#1{\url{#1}} + + + +% Copyright +\RequirePackage{acmcopyright} +\setcopyright{none} + +% +\global\boilerplate={\@copyrightpermission} +% +\newtoks\copyrightetc +\ifnum\ACM@basesize=9\relax +\global\copyrightetc{% +{\noindent\confname\ \the\conf } \the\confinfo \par\smallskip + \if@printcopyright + \copyright\ \the\copyrtyr\ \@copyrightowner + \fi + \if@acmowned ISBN \else\ifnum\acm@copyrightmode=2 ISBN \else \par\smallskip ACM ISBN \fi\fi + \the\acmcopyr\ifx\@acmPrice\@empty.\else\dots\@acmPrice\fi\par\smallskip +{DOI: \small\expandafter\printdoi\expandafter{\@doi}}} +\toappear{\fontsize{7pt}{8pt}\fontfamily{ptm}\selectfont + \the\boilerplate\par\smallskip + \the\copyrightetc} +\fi +\ifnum\ACM@basesize=10\relax +\global\copyrightetc{% +{\noindent\confname\ \the\conf\ \the\confinfo}\par\smallskip + \if@printcopyright + \copyright\ \the\copyrtyr\ \@copyrightowner + \fi + \if@acmowned ISBN \else\ifnum\acm@copyrightmode=2 ISBN \else \par\smallskip ACM ISBN \fi\fi + \the\acmcopyr\ifx\@acmPrice\@empty.\else\dots\@acmPrice\fi\par\smallskip +{DOI: \small\expandafter\printdoi\expandafter{\@doi}}} +\toappear{\fontsize{7.5pt}{8.5pt}\fontfamily{ptm}\selectfont + \the\boilerplate\par\smallskip + \the\copyrightetc} +\fi + +\clubpenalty=10000 +\widowpenalty = 10000 + +%% +% For the CCSXML 2012 Categories + +\let\@concepts\@empty +% Support for CCSXML file +\RequirePackage{comment} +\excludecomment{CCSXML} + +% New concepts scheme +% +% The first argument is the significance, the +% second is the concept(s) +% +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~} +% +% The parser of the expression Significance~General~Specific +% +\def\ccsdesc@parse#1~#2~#3~{% + \expandafter\ifx\csname CCS@#2\endcsname\relax + \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }% + \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi + \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{% + \ifnum#1>499\textbf{#3; }\else + \ifnum#1>299\textit{#3; }\else + #3; \fi\fi}} + +\newcommand\printccsdesc{% + \ifx\@concepts\@empty\else + \if@twocolumn + \section*{CCS Concepts} + \@concepts + \else \small + \quotation{\@concepts}% + \fi + \fi} + + +%% DanCo, 10/19/11: Added this to reduce overfull lines per Sheridan +%% request; it leads to occasionally unpleasant extra whitespace, +%% though actually no worse and perhaps better than the +%% default Word template. +%% +%% This can be manually controlled instead by authors in text +%% by putting \sloppy before and \fussy immediately +%% after troublesome paras. Idea found at +%% http://www.economics.utoronto.ca/osborne/latex/PMAKEUP.HTM + +\sloppy