Commit c8a9fe5e4b4a1e5204e43debebd8e93cd60290a7

Authored by Rafael Reggiani Manzo
1 parent ea0af73c

Add ICSE 2018 empty template

The ICSE 2018 Software Engeneering in Practice Track page (
http://www.icse2018.org/track/icse-2018-Software-Engineering-in-Practice)
specify the use of ACM's template. But do not specify which class to
use. ACM's page specifies the following regarding this case:

"Most proceedings authors (including ICPS authors) will use the
"sigconf" proceedings template. If you are unsure which template variant
to use, please request clarification from your event or publication
contact."

Thus until we get clarification on this matter I've set the template to
sigcon.

I've got the authors info from other articles in this repository.

The section names and its presence/absence are not part of the template.
I've just set a standard article format that we should modify as the
article evolves.
icse2018/.gitignore 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +*.pdf
  2 +*.log
  3 +*.aux
  4 +*.cfg
  5 +*.glo
  6 +*.idx
  7 +*.toc
  8 +*.ilg
  9 +*.ind
  10 +*.out
  11 +*.lof
  12 +*.lot
  13 +*.bbl
  14 +*.blg
  15 +*.gls
  16 +*.cut
  17 +*.hd
  18 +*.dvi
  19 +*.ps
  20 +*.thm
  21 +*.tgz
  22 +*.zip
  23 +*.rpi
  24 +*~
  25 +*.fdb_latexmk
  26 +*.fls
... ...
icse2018/ACM-Reference-Format.bst 0 → 100644
... ... @@ -0,0 +1,3238 @@
  1 +%%% -*-BibTeX-*-
  2 +%%% ====================================================================
  3 +%%% @BibTeX-style-file{
  4 +%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
  5 +%%% version = "2.1",
  6 +%%% date = "14 June 2017",
  7 +%%% filename = "ACM-Reference-Format.bst",
  8 +%%% email = "borisv@lk.net, boris@varphi.com",
  9 +%%% codetable = "ISO/ASCII",
  10 +%%% keywords = "ACM Transactions bibliography style; BibTeX",
  11 +%%% license = "public domain",
  12 +%%% supported = "yes",
  13 +%%% abstract = "",
  14 +%%% }
  15 +%%% ====================================================================
  16 +
  17 +%%% Revision history: see source in git
  18 +
  19 +ENTRY
  20 + { address
  21 + advisor
  22 + archiveprefix
  23 + author
  24 + booktitle
  25 + chapter
  26 + city
  27 + date
  28 + edition
  29 + editor
  30 + eprint
  31 + howpublished
  32 + institution
  33 + journal
  34 + key
  35 + month
  36 + note
  37 + number
  38 + organization
  39 + pages
  40 + primaryclass
  41 + publisher
  42 + school
  43 + series
  44 + title
  45 + type
  46 + volume
  47 + year
  48 + % New keys recognized
  49 + issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
  50 + articleno
  51 + eid
  52 + day % UTAH: needed for newspapers, weeklies, bi-weeklies
  53 + doi % UTAH
  54 + url % UTAH
  55 + bookpages % UTAH
  56 + numpages
  57 + lastaccessed % UTAH: used only for @Misc{...}
  58 + coden % UTAH
  59 + isbn % UTAH
  60 + isbn-13 % UTAH
  61 + issn % UTAH
  62 + lccn % UTAH
  63 + }
  64 + {}
  65 + { label.year extra.label sort.year sort.label basic.label.year}
  66 +
  67 +INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  68 +
  69 +INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
  70 +
  71 +INTEGERS { nameptr namesleft numnames }
  72 +
  73 +INTEGERS { multiresult }
  74 +
  75 +INTEGERS { len }
  76 +
  77 +INTEGERS { last.extra.num }
  78 +
  79 +STRINGS { s t t.org u }
  80 +
  81 +STRINGS { last.label next.extra }
  82 +
  83 +STRINGS { p1 p2 p3 page.count }
  84 +
  85 +
  86 +FUNCTION { not }
  87 +{
  88 + { #0 }
  89 + { #1 }
  90 + if$
  91 +}
  92 +
  93 +FUNCTION { and }
  94 +{
  95 + 'skip$
  96 + { pop$ #0 }
  97 + if$
  98 +}
  99 +
  100 +FUNCTION { or }
  101 +{
  102 + { pop$ #1 }
  103 + 'skip$
  104 + if$
  105 +}
  106 +
  107 +
  108 +FUNCTION { dump.stack.1 }
  109 +{
  110 + duplicate$ "STACK[top] = [" swap$ * "]" * warning$
  111 +}
  112 +
  113 +FUNCTION { dump.stack.2 }
  114 +{
  115 + duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
  116 + swap$
  117 + duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
  118 + swap$
  119 +}
  120 +
  121 +FUNCTION { empty.or.unknown }
  122 +{
  123 + %% Examine the top stack entry, and push 1 if it is empty, or
  124 + %% consists only of whitespace, or is a string beginning with two
  125 + %% queries (??), and otherwise, push 0.
  126 + %%
  127 + %% This function provides a replacement for empty$, with the
  128 + %% convenient feature that unknown values marked by two leading
  129 + %% queries are treated the same as missing values, and thus, do not
  130 + %% appear in the output .bbl file, and yet, their presence in .bib
  131 + %% file(s) serves to mark values which are temporarily missing, but
  132 + %% are expected to be filled in eventually once more data is
  133 + %% obtained. The TeX User Group and BibNet bibliography archives
  134 + %% make extensive use of this practice.
  135 + %%
  136 + %% An empty string cannot serve the same purpose, because just as in
  137 + %% statistics data processing, an unknown value is not the same as an
  138 + %% empty value.
  139 + %%
  140 + %% At entry: stack = ... top:[string]
  141 + %% At exit: stack = ... top:[0 or 1]
  142 +
  143 + duplicate$ empty$
  144 + { pop$ #1 }
  145 + { #1 #2 substring$ "??" = }
  146 + if$
  147 +}
  148 +
  149 +FUNCTION { writeln }
  150 +{
  151 + %% In BibTeX style files, the sequences
  152 + %%
  153 + %% ... "one" "two" output
  154 + %% ... "one" "two" output.xxx
  155 + %%
  156 + %% ship "one" to the output file, possibly following by punctuation,
  157 + %% leaving the stack with
  158 + %%
  159 + %% ... "two"
  160 + %%
  161 + %% There is thus a one-string lag in output processing that must be
  162 + %% carefully handled to avoid duplicating a string in the output
  163 + %% file. Unless otherwise noted, all output.xxx functions leave
  164 + %% just one new string on the stack, and that model should be born
  165 + %% in mind when reading or writing function code.
  166 + %%
  167 + %% BibTeX's asynchronous buffering of output from strings from the
  168 + %% stack is confusing because newline$ bypasses the buffer. It
  169 + %% would have been so much easier for newline to be a character
  170 + %% rather than a state of the output-in-progress.
  171 + %%
  172 + %% The documentation in btxhak.dvi is WRONG: it says
  173 + %%
  174 + %% newline$ Writes onto the bbl file what's accumulated in the
  175 + %% output buffer. It writes a blank line if and only
  176 + %% if the output buffer is empty. Since write$ does
  177 + %% reasonable line breaking, you should use this
  178 + %% function only when you want a blank line or an
  179 + %% explicit line break.
  180 + %%
  181 + %% write$ Pops the top (string) literal and writes it on the
  182 + %% output buffer (which will result in stuff being
  183 + %% written onto the bbl file when the buffer fills
  184 + %% up).
  185 + %%
  186 + %% Examination of the BibTeX source code shows that write$ does
  187 + %% indeed behave as claimed, but newline$ sends a newline character
  188 + %% directly to the output file, leaving the stack unchanged. The
  189 + %% first line "Writes onto ... buffer." is therefore wrong.
  190 + %%
  191 + %% The original BibTeX style files almost always use "write$ newline$"
  192 + %% in that order, so it makes sense to hide that pair in a private
  193 + %% function like this one, named after a statement in Pascal,
  194 + %% the programming language embedded in the BibTeX Web program.
  195 +
  196 + write$ % output top-of-stack string
  197 + newline$ % immediate write of newline (not via stack)
  198 +}
  199 +
  200 +FUNCTION { init.state.consts }
  201 +{
  202 + #0 'before.all :=
  203 + #1 'mid.sentence :=
  204 + #2 'after.sentence :=
  205 + #3 'after.block :=
  206 +}
  207 +
  208 +FUNCTION { output.nonnull }
  209 +{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
  210 + 's :=
  211 + output.state mid.sentence =
  212 + {
  213 + ", " * write$
  214 + }
  215 + {
  216 + output.state after.block =
  217 + {
  218 + add.period$ writeln
  219 + "\newblock " write$
  220 + }
  221 + {
  222 + output.state before.all =
  223 + {
  224 + write$
  225 + }
  226 + {
  227 + add.period$ " " * write$
  228 + }
  229 + if$
  230 + }
  231 + if$
  232 + mid.sentence 'output.state :=
  233 + }
  234 + if$
  235 + s
  236 +}
  237 +
  238 +FUNCTION { output.nonnull.dot.space }
  239 +{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
  240 + 's :=
  241 + output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
  242 + {
  243 + ". " * write$
  244 + }
  245 + {
  246 + output.state after.block =
  247 + {
  248 + add.period$ writeln "\newblock " write$
  249 + }
  250 + {
  251 + output.state before.all =
  252 + {
  253 + write$
  254 + }
  255 + {
  256 + add.period$ " " * write$
  257 + }
  258 + if$
  259 + }
  260 + if$
  261 + mid.sentence 'output.state :=
  262 + }
  263 + if$
  264 + s
  265 +}
  266 +
  267 +FUNCTION { output.nonnull.remove }
  268 +{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
  269 + 's :=
  270 + output.state mid.sentence =
  271 + {
  272 + " " * write$
  273 + }
  274 + {
  275 + output.state after.block =
  276 + {
  277 + add.period$ writeln "\newblock " write$
  278 + }
  279 + {
  280 + output.state before.all =
  281 + {
  282 + write$
  283 + }
  284 + {
  285 + add.period$ " " * write$
  286 + }
  287 + if$
  288 + }
  289 + if$
  290 + mid.sentence 'output.state :=
  291 + }
  292 + if$
  293 + s
  294 +}
  295 +
  296 +FUNCTION { output.nonnull.removenospace }
  297 +{ % Stack in: ... R S T Stack out: ... R T File out: S
  298 + 's :=
  299 + output.state mid.sentence =
  300 + {
  301 + "" * write$
  302 + }
  303 + {
  304 + output.state after.block =
  305 + {
  306 + add.period$ writeln "\newblock " write$
  307 + }
  308 + {
  309 + output.state before.all =
  310 + {
  311 + write$
  312 + }
  313 + {
  314 + add.period$ " " * write$
  315 + }
  316 + if$
  317 + }
  318 + if$
  319 + mid.sentence 'output.state :=
  320 + }
  321 + if$
  322 + s
  323 +}
  324 +
  325 +FUNCTION { output }
  326 +{ % discard top token if empty, else like output.nonnull
  327 + duplicate$ empty.or.unknown
  328 + 'pop$
  329 + 'output.nonnull
  330 + if$
  331 +}
  332 +
  333 +FUNCTION { output.dot.space }
  334 +{ % discard top token if empty, else like output.nonnull.dot.space
  335 + duplicate$ empty.or.unknown
  336 + 'pop$
  337 + 'output.nonnull.dot.space
  338 + if$
  339 +}
  340 +
  341 +FUNCTION { output.removenospace }
  342 +{ % discard top token if empty, else like output.nonnull.removenospace
  343 + duplicate$ empty.or.unknown
  344 + 'pop$
  345 + 'output.nonnull.removenospace
  346 + if$
  347 +}
  348 +
  349 +FUNCTION { output.check }
  350 +{ % like output, but warn if key name on top-of-stack is not set
  351 + 't :=
  352 + duplicate$ empty.or.unknown
  353 + { pop$ "empty " t * " in " * cite$ * warning$ }
  354 + 'output.nonnull
  355 + if$
  356 +}
  357 +
  358 +FUNCTION { bibinfo.output.check }
  359 +{ % like output.check, adding bibinfo field
  360 + 't :=
  361 + duplicate$ empty.or.unknown
  362 + { pop$ "empty " t * " in " * cite$ * warning$ }
  363 + { "\bibinfo{" t "}{" * * swap$ * "}" *
  364 + output.nonnull }
  365 + if$
  366 +}
  367 +
  368 +FUNCTION { output.check.dot.space }
  369 +{ % like output.dot.space, but warn if key name on top-of-stack is not set
  370 + 't :=
  371 + duplicate$ empty.or.unknown
  372 + { pop$ "empty " t * " in " * cite$ * warning$ }
  373 + 'output.nonnull.dot.space
  374 + if$
  375 +}
  376 +
  377 +FUNCTION { fin.block }
  378 +{ % functionally, but not logically, identical to fin.entry
  379 + add.period$
  380 + writeln
  381 +}
  382 +
  383 +FUNCTION { fin.entry }
  384 +{
  385 + add.period$
  386 + writeln
  387 +}
  388 +
  389 +FUNCTION { new.sentence }
  390 +{ % update sentence state, with neither output nor stack change
  391 + output.state after.block =
  392 + 'skip$
  393 + {
  394 + output.state before.all =
  395 + 'skip$
  396 + { after.sentence 'output.state := }
  397 + if$
  398 + }
  399 + if$
  400 +}
  401 +
  402 +FUNCTION { fin.sentence }
  403 +{
  404 + add.period$
  405 + write$
  406 + new.sentence
  407 + ""
  408 +}
  409 +
  410 +FUNCTION { new.block }
  411 +{
  412 + output.state before.all =
  413 + 'skip$
  414 + { after.block 'output.state := }
  415 + if$
  416 +}
  417 +
  418 +FUNCTION { output.coden } % UTAH
  419 +{ % output non-empty CODEN as one-line sentence (stack untouched)
  420 + coden empty.or.unknown
  421 + { }
  422 + { "\showCODEN{" coden * "}" * writeln }
  423 + if$
  424 +}
  425 +
  426 +FUNCTION { format.articleno }
  427 +{
  428 + articleno empty.or.unknown not eid empty.or.unknown not and
  429 + { "Both articleno and eid are defined for " cite$ * warning$ }
  430 + 'skip$
  431 + if$
  432 + articleno empty.or.unknown eid empty.or.unknown and
  433 + { "" }
  434 + {
  435 + numpages empty.or.unknown
  436 + { "articleno or eid field, but no numpages field, in "
  437 + cite$ * warning$ }
  438 + { }
  439 + if$
  440 + eid empty.or.unknown
  441 + { "Article \bibinfo{articleno}{" articleno * "}" * }
  442 + { "Article \bibinfo{articleno}{" eid * "}" * }
  443 + if$
  444 + }
  445 + if$
  446 +}
  447 +
  448 +FUNCTION { format.year }
  449 +{ % push year string or "[n. d.]" onto output stack
  450 + %% Because year is a mandatory field, we always force SOMETHING
  451 + %% to be output
  452 + "\bibinfo{year}{"
  453 + year empty.or.unknown
  454 + { "[n. d.]" }
  455 + { year }
  456 + if$
  457 + * "}" *
  458 +}
  459 +
  460 +FUNCTION { format.day.month }
  461 +{ % push "day month " or "month " or "" onto output stack
  462 + day empty.or.unknown
  463 + {
  464 + month empty.or.unknown
  465 + { "" }
  466 + { "\bibinfo{date}{" month * "} " *}
  467 + if$
  468 + }
  469 + {
  470 + month empty.or.unknown
  471 + { "" }
  472 + { "\bibinfo{date}{" day * " " * month * "} " *}
  473 + if$
  474 + }
  475 + if$
  476 +}
  477 +
  478 +FUNCTION { format.day.month.year } % UTAH
  479 +{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
  480 + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
  481 + % acm-*.bst addition: prefix parenthesized date string with
  482 + % ", Article nnn "
  483 + articleno empty.or.unknown eid empty.or.unknown and
  484 + { "" }
  485 + { output.state after.block =
  486 + {", " format.articleno * }
  487 + { format.articleno }
  488 + if$
  489 + }
  490 + if$
  491 + " (" * format.day.month * format.year * ")" *
  492 +}
  493 +
  494 +FUNCTION { output.day.month.year } % UTAH
  495 +{ % if month is empty value, do nothing; else output stack top and
  496 + % leave with new top string "(MON.)" or "(DD MON.)"
  497 + % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
  498 + format.day.month.year
  499 + output.nonnull.remove
  500 +}
  501 +
  502 +FUNCTION { strip.doi } % UTAH
  503 +{ % Strip any Web address prefix to recover the bare DOI, leaving the
  504 + % result on the output stack, as recommended by CrossRef DOI
  505 + % documentation.
  506 + % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
  507 + % "10.1145/1534530.1534545". That is later typeset and displayed as
  508 + % doi:10.1145/1534530.1534545 as the LAST item in the reference list
  509 + % entry. Publisher Web sites wrap this with a suitable link to a real
  510 + % URL to resolve the DOI, and the master https://doi.org/ address is
  511 + % preferred, since publisher-specific URLs can disappear in response
  512 + % to economic events. All journals are encouraged by the DOI
  513 + % authorities to use that typeset format and link procedures for
  514 + % uniformity across all publications that include DOIs in reference
  515 + % lists.
  516 + % The numeric prefix is guaranteed to start with "10.", so we use
  517 + % that as a test.
  518 + % 2017-02-04 Added stripping of https:// (Boris)
  519 + doi #1 #3 substring$ "10." =
  520 + { doi }
  521 + {
  522 + doi 't := % get modifiable copy of DOI
  523 +
  524 + % Change https:// to http:// to strip both prefixes (BV)
  525 +
  526 + t #1 #8 substring$ "https://" =
  527 + { "http://" t #9 t text.length$ #8 - substring$ * 't := }
  528 + { }
  529 + if$
  530 +
  531 + t #1 #7 substring$ "http://" =
  532 + {
  533 + t #8 t text.length$ #7 - substring$ 't :=
  534 +
  535 + "INTERNAL STYLE-FILE ERROR" 's :=
  536 +
  537 + % search for next "/" and assign its suffix to s
  538 +
  539 + { t text.length$ }
  540 + {
  541 + t #1 #1 substring$ "/" =
  542 + {
  543 + % save rest of string as true DOI (should be 10.xxxx/yyyy)
  544 + t #2 t text.length$ #1 - substring$ 's :=
  545 + "" 't := % empty string t terminates the loop
  546 + }
  547 + {
  548 + % discard first character and continue loop: t <= substring(t,2,last)
  549 + t #2 t text.length$ #1 - substring$ 't :=
  550 + }
  551 + if$
  552 + }
  553 + while$
  554 +
  555 + % check for valid DOI (should be 10.xxxx/yyyy)
  556 + s #1 #3 substring$ "10." =
  557 + { }
  558 + { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
  559 + if$
  560 +
  561 + s % push the stripped DOI on the output stack
  562 +
  563 + }
  564 + {
  565 + "unrecognized DOI value [" doi * "]" * warning$
  566 + doi % push the unrecognized original DOI on the output stack
  567 + }
  568 + if$
  569 + }
  570 + if$
  571 +}
  572 +
  573 +%
  574 +% Change by BV: added standard prefix to URL
  575 +%
  576 +FUNCTION { output.doi } % UTAH
  577 +{ % output non-empty DOI as one-line sentence (stack untouched)
  578 + doi empty.or.unknown
  579 + { }
  580 + {
  581 + %% NB: We want URLs at beginning of line to reduce likelihood of
  582 + %% BibTeX's nasty line wrapping after column 79, which then requires
  583 + %% manual (or automated) editing of the .bbl file to repair.
  584 + %% The \url{} macro strips percent-newlines, and is thus safe in
  585 + %% the presence of the line wrapping, but \path|...| and
  586 + %% \verb|...| do not.
  587 + "\showDOI{%" writeln
  588 + "\url{https://doi.org/" strip.doi * "}}" * writeln
  589 + }
  590 + if$
  591 +}
  592 +
  593 +FUNCTION { output.isbn } % UTAH
  594 +{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
  595 + show-isbn-10-and-13
  596 + {
  597 + %% show both 10- and 13-digit ISBNs
  598 + isbn empty.or.unknown
  599 + { }
  600 + {
  601 + "\showISBNx{" isbn * "}" * writeln
  602 + }
  603 + if$
  604 + isbn-13 empty.or.unknown
  605 + { }
  606 + {
  607 + "\showISBNxiii{" isbn-13 * "}" * writeln
  608 + }
  609 + if$
  610 + }
  611 + {
  612 + %% show 10-digit ISBNs only if 13-digit ISBNs not available
  613 + isbn-13 empty.or.unknown
  614 + {
  615 + isbn empty.or.unknown
  616 + { }
  617 + {
  618 + "\showISBNx{" isbn * "}" * writeln
  619 + }
  620 + if$
  621 + }
  622 + {
  623 + "\showISBNxiii{" isbn-13 * "}" * writeln
  624 + }
  625 + if$
  626 + }
  627 + if$
  628 +}
  629 +
  630 +FUNCTION { output.issn } % UTAH
  631 +{ % output non-empty ISSN as one-line sentence (stack untouched)
  632 + issn empty.or.unknown
  633 + { }
  634 + { "\showISSN{" issn * "}" * writeln }
  635 + if$
  636 +}
  637 +
  638 +FUNCTION { output.issue }
  639 +{ % output non-empty issue number as a one-line sentence (stack untouched)
  640 + issue empty.or.unknown
  641 + { }
  642 + { "Issue " issue * "." * writeln }
  643 + if$
  644 +}
  645 +
  646 +FUNCTION { output.lccn } % UTAH
  647 +{ % return with stack untouched
  648 + lccn empty.or.unknown
  649 + { }
  650 + { "\showLCCN{" lccn * "}" * writeln }
  651 + if$
  652 +}
  653 +
  654 +FUNCTION { output.note } % UTAH
  655 +{ % return with stack empty
  656 + note empty.or.unknown
  657 + { }
  658 + { "\shownote{" note add.period$ * "}" * writeln }
  659 + if$
  660 +}
  661 +
  662 +FUNCTION { output.note.check } % UTAH
  663 +{ % return with stack empty
  664 + note empty.or.unknown
  665 + { "empty note in " cite$ * warning$ }
  666 + { "\shownote{" note add.period$ * "}" * writeln }
  667 + if$
  668 +}
  669 +
  670 +FUNCTION { output.eprint } %
  671 +{ % return with stack empty
  672 + eprint empty.or.unknown
  673 + { }
  674 + { "\showeprint"
  675 + archiveprefix empty.or.unknown
  676 + { }
  677 + { "[" archiveprefix "l" change.case$ "]" * * * }
  678 + if$
  679 + "{" *
  680 + primaryclass empty.or.unknown
  681 + { }
  682 + { primaryclass "/" * *}
  683 + if$
  684 + eprint "}" * *
  685 + writeln
  686 + }
  687 + if$
  688 +}
  689 +
  690 +
  691 +%
  692 +% Changes by BV 2011/04/15. Do not output
  693 +% url if doi is defined
  694 +%
  695 +FUNCTION { output.url } % UTAH
  696 +{ % return with stack untouched
  697 + % output URL and associated lastaccessed fields
  698 + doi empty.or.unknown
  699 + {
  700 + url empty.or.unknown
  701 + { }
  702 + {
  703 + %% NB: We want URLs at beginning of line to reduce likelihood of
  704 + %% BibTeX's nasty line wrapping after column 79, which would require
  705 + %% manual (or automated) editing of the .bbl file to repair. However,
  706 + %% the \url{} macro handles the unwrapping job automatically.
  707 + "\showURL{%" writeln
  708 + lastaccessed empty.or.unknown
  709 + { "" }
  710 + { "Retrieved " lastaccessed * " from " * }
  711 + if$
  712 +
  713 + %% The URL field may contain a semicolon-separated list of Web
  714 + %% addresses, and we locate and wrap each of them in \url{...}.
  715 + %% The simplistic approach of putting the entire list into the
  716 + %% macro argument is that the semicolons are typeset in a
  717 + %% typewriter font, and no space follows them.
  718 + %%
  719 + %% We therefore replace the original code
  720 + %% "\url{" * url * "}}" * writeln
  721 + %% with this character-at-a-time loop:
  722 +
  723 + "\url{" *
  724 +
  725 + url 't := % get modifiable copy of URL list
  726 +
  727 + { t text.length$ }
  728 + {
  729 + t #1 #1 substring$ ";" =
  730 + { % then split argument at separator
  731 + "};" * writeln
  732 + "\url{"
  733 + }
  734 + { % else concatenate nonblank character to argument
  735 + t #1 #1 substring$ " " =
  736 + { }
  737 + { t #1 #1 substring$ * }
  738 + if$
  739 + }
  740 + if$
  741 +
  742 + t #2 t text.length$ #1 - substring$ 't :=
  743 + }
  744 + while$
  745 +
  746 + "}}" * writeln
  747 + }
  748 + if$
  749 + }
  750 + { }
  751 + if$
  752 +}
  753 +
  754 +FUNCTION { output.year.check }
  755 +{ % warn if year empty, output top string and leave " YEAR<label>" on stack in mid-sentence
  756 + year empty.or.unknown
  757 + { "empty year in " cite$ * warning$
  758 + write$
  759 + " \bibinfo{year}{[n. d.]}"
  760 + "\natexlab{" extra.label * "}" * *
  761 + mid.sentence 'output.state :=
  762 + }
  763 + { write$
  764 + " \bibinfo{year}{" year * "}" *
  765 + "\natexlab{" extra.label * "}" * *
  766 + mid.sentence 'output.state :=
  767 + }
  768 + if$
  769 +}
  770 +
  771 +
  772 +FUNCTION { le }
  773 +{
  774 + %% test whether first number is less than or equal to second number
  775 + %% stack in: n1 n2
  776 + %% stack out: if n1 <= n2 then 1 else 0
  777 +
  778 + %% "DEBUG: le " cite$ * warning$
  779 + > { #0 } { #1 } if$
  780 +}
  781 +
  782 +FUNCTION { ge }
  783 +{
  784 + %% test whether first number is greater than or equal to second number
  785 + %% stack in: n1 n2
  786 + %% stack out: if n1 >= n2 then 1 else 0
  787 +
  788 + %% "DEBUG: ge " cite$ * warning$
  789 + < { #0 } { #1 } if$
  790 +}
  791 +
  792 +FUNCTION { is.leading.digit }
  793 +{
  794 + %% test whether first character of string is a digit
  795 + %% stack in: string
  796 + %% stack out: if first-char-is-digit then 1 else 0
  797 +
  798 + #1 #1 substring$ % replace string by string[1:1]
  799 + duplicate$ % string[1:1] string[1:1]
  800 + chr.to.int$
  801 + "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
  802 + swap$ % 0-or-1 string[1:1]
  803 + chr.to.int$
  804 + "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
  805 + and
  806 +}
  807 +
  808 +FUNCTION { skip.digits }
  809 +{
  810 + %% skip over leading digits in string
  811 + %% stack in: string
  812 + %% stack out: rest-of-string leading-digits
  813 +
  814 + %% "DEBUG: enter skip.digits " cite$ * warning$
  815 +
  816 + %% dump.stack.1
  817 +
  818 + duplicate$
  819 + 't :=
  820 + 't.org :=
  821 + "" 'u :=
  822 +
  823 + { t text.length$ }
  824 + {
  825 + %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
  826 + t is.leading.digit
  827 + { t #2 t text.length$ #1 - substring$ }
  828 + {
  829 + t 'u :=
  830 + ""
  831 + }
  832 + if$
  833 + 't :=
  834 + }
  835 + while$
  836 +
  837 + u % rest of string
  838 + t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
  839 +
  840 + %% "DEBUG: t.org = [" t.org * "]" * warning$
  841 + %% "DEBUG: u = [" u * "]" * warning$
  842 +
  843 + %% dump.stack.2
  844 +
  845 + %% "DEBUG: leave skip.digits " cite$ * warning$
  846 +}
  847 +
  848 +FUNCTION { skip.nondigits }
  849 +{
  850 + %% skip over leading nondigits in string
  851 + %% stack in: string
  852 + %% stack out: rest-of-string
  853 +
  854 + %% "DEBUG: enter skip.nondigits " cite$ * warning$
  855 +
  856 + 't :=
  857 + "" 'u :=
  858 +
  859 + { t text.length$ }
  860 + {
  861 + %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
  862 + t is.leading.digit
  863 + {
  864 + t 'u :=
  865 + ""
  866 + }
  867 + { t #2 t text.length$ #1 - substring$ }
  868 + if$
  869 + 't :=
  870 + }
  871 + while$
  872 +
  873 + u % rest of string
  874 +
  875 + %% dump.stack.1
  876 + %% "DEBUG: leave skip.nondigits " cite$ * warning$
  877 +}
  878 +
  879 +FUNCTION { parse.next.number }
  880 +{
  881 + %% stack in: string
  882 + %% stack out: rest-of-string next-numeric-part-of-string
  883 + %% Example:
  884 + %% stack in: "123:1--123:59"
  885 + %% stack out: ":1--123:59" "123"
  886 +
  887 + 's :=
  888 + s skip.nondigits 's :=
  889 + s skip.digits
  890 +}
  891 +
  892 +FUNCTION { reduce.pages.to.page.count }
  893 +{
  894 + %% Stack in: arbitrary-and-unused
  895 + %% Stack out: unchanged
  896 + %%
  897 + %% For the new-style pagination with article number and numpages or
  898 + %% pages, we expect to have BibTeX entries containing something like
  899 + %% articleno = "17",
  900 + %% pages = "1--23",
  901 + %% with output "Article 17, 23 pages",
  902 + %% or
  903 + %% articleno = "17",
  904 + %% numpages = "23",
  905 + %% with output "Article 17, 23 pages",
  906 + %% or
  907 + %% articleno = "17",
  908 + %% pages = "17:1--17:23",
  909 + %% with output "Article 17, 23 pages",
  910 + %%
  911 + %% If articleno is missing or empty, then we should output "1--23",
  912 + %% "23" (with a warning of a missing articleno), or "17:1--17:23",
  913 + %% respectively.
  914 +
  915 + %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
  916 +
  917 + %% "DEBUG: pages = [" pages * "]" * warning$
  918 +
  919 + pages
  920 + parse.next.number 'p1 :=
  921 + parse.next.number 'p2 :=
  922 + parse.next.number 'p3 :=
  923 + parse.next.number 'page.count :=
  924 +
  925 + duplicate$
  926 + empty.or.unknown
  927 + { }
  928 + {
  929 + duplicate$ "unexpected trailing garbage [" swap$ *
  930 + "] after n:p1--n:p2 in pages = [" *
  931 + pages *
  932 + "] in " *
  933 + cite$ *
  934 + warning$
  935 + }
  936 + if$
  937 +
  938 + pop$
  939 +
  940 + %% "DEBUG: reduce.pages.to.page.count: "
  941 + %% " p1 = " p1 * *
  942 + %% " p2 = " p2 * *
  943 + %% " p3 = " p3 * *
  944 + %% " p4 = " page.count * *
  945 + %% " in " cite$ * * warning$
  946 +
  947 + p1 p3 = p2 "1" = and numpages empty.or.unknown and
  948 + { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
  949 + {
  950 + numpages empty.or.unknown
  951 + { pages }
  952 + { numpages }
  953 + if$
  954 + 'page.count :=
  955 + }
  956 + if$
  957 +
  958 + p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
  959 + {
  960 + p2 'page.count :=
  961 + "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
  962 + }
  963 + {
  964 + numpages empty.or.unknown
  965 + { pages }
  966 + { numpages }
  967 + if$
  968 + 'page.count :=
  969 + }
  970 + if$
  971 +
  972 + %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
  973 +}
  974 +
  975 +FUNCTION { new.block.checkb }
  976 +{ % issue a new.block only if at least one of top two stack strings is not empty
  977 + empty.or.unknown
  978 + swap$ empty.or.unknown
  979 + and
  980 + 'skip$
  981 + 'new.block
  982 + if$
  983 +}
  984 +
  985 +FUNCTION { field.or.null }
  986 +{ % convert empty value to null string, else return value
  987 + duplicate$ empty.or.unknown
  988 + { pop$ "" }
  989 + 'skip$
  990 + if$
  991 +}
  992 +
  993 +
  994 +
  995 +FUNCTION { emphasize }
  996 +{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
  997 + duplicate$ empty.or.unknown
  998 + { pop$ "" }
  999 + { "{\em " swap$ * "}" * }
  1000 + if$
  1001 +}
  1002 +
  1003 +FUNCTION { emphasize.with.italic.correction }
  1004 +{ % convert empty string to null string, or emphasize with a trailing italic correction
  1005 + duplicate$ empty.or.unknown
  1006 + { pop$ "" }
  1007 + { "{\em " swap$ * "\/}" * }
  1008 + if$
  1009 +}
  1010 +
  1011 +FUNCTION { comma }
  1012 +{ % convert empty string to null string, or brace string and add trailing comma
  1013 + duplicate$ empty.or.unknown
  1014 + { pop$ "" }
  1015 + { "{" swap$ * "}," * }
  1016 + if$
  1017 +}
  1018 +
  1019 +FUNCTION { format.names }
  1020 +{
  1021 + % Format bibliographical entries with the first author last name first,
  1022 + % and subsequent authors with initials followed by last name.
  1023 + % All names are formatted in this routine.
  1024 +
  1025 + 's :=
  1026 + #1 'nameptr := % nameptr = 1;
  1027 + s num.names$ 'numnames := % numnames = num.name$(s);
  1028 + numnames 'namesleft :=
  1029 + { namesleft #0 > }
  1030 + { nameptr #1 =
  1031 + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
  1032 + %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
  1033 + {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
  1034 + {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
  1035 + if$
  1036 + nameptr #1 >
  1037 + {
  1038 + namesleft #1 >
  1039 + { ", " * t * }
  1040 + {
  1041 + numnames #2 >
  1042 + { "," * }
  1043 + 'skip$
  1044 + if$
  1045 + t "\bibinfo{person}{others}" =
  1046 + { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
  1047 + { " {and} " * t * } % from Chicago Manual of Style
  1048 + if$
  1049 + }
  1050 + if$
  1051 + }
  1052 + 't
  1053 + if$
  1054 + nameptr #1 + 'nameptr := % nameptr += 1;
  1055 + namesleft #1 - 'namesleft := % namesleft =- 1;
  1056 + }
  1057 + while$
  1058 +}
  1059 +
  1060 +FUNCTION { my.full.label }
  1061 +{
  1062 + 's :=
  1063 + #1 'nameptr := % nameptr = 1;
  1064 + s num.names$ 'numnames := % numnames = num.name$(s);
  1065 + numnames 'namesleft :=
  1066 + { namesleft #0 > }
  1067 +
  1068 + { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
  1069 + nameptr #1 >
  1070 + {
  1071 + namesleft #1 >
  1072 + { ", " * t * }
  1073 + {
  1074 + numnames #2 >
  1075 + { "," * }
  1076 + 'skip$
  1077 + if$
  1078 + t "others" =
  1079 + { " et~al\mbox{.}" * } % jrh: avoid spacing problems
  1080 + { " and " * t * } % from Chicago Manual of Style
  1081 + if$
  1082 + }
  1083 + if$
  1084 + }
  1085 + 't
  1086 + if$
  1087 + nameptr #1 + 'nameptr := % nameptr += 1;
  1088 + namesleft #1 - 'namesleft := % namesleft =- 1;
  1089 + }
  1090 + while$
  1091 +
  1092 +}
  1093 +
  1094 +FUNCTION { format.names.fml }
  1095 +{
  1096 + % Format names in "familiar" format, with first initial followed by
  1097 + % last name. Like format.names, ALL names are formatted.
  1098 + % jtb: The names are NOT put in small caps
  1099 +
  1100 + 's :=
  1101 + #1 'nameptr := % nameptr = 1;
  1102 + s num.names$ 'numnames := % numnames = num.name$(s);
  1103 + numnames 'namesleft :=
  1104 + { namesleft #0 > }
  1105 +
  1106 + {
  1107 + "\bibinfo{person}{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
  1108 +
  1109 + nameptr #1 >
  1110 + {
  1111 + namesleft #1 >
  1112 + { ", " * t * }
  1113 + {
  1114 + numnames #2 >
  1115 + { "," * }
  1116 + 'skip$
  1117 + if$
  1118 + t "\bibinfo{person}{others}" =
  1119 + { " {et~al\mbox{.}}" * }
  1120 + { " {and} " * t * }
  1121 + if$
  1122 + }
  1123 + if$
  1124 + }
  1125 + 't
  1126 + if$
  1127 + nameptr #1 + 'nameptr := % nameptr += 1;
  1128 + namesleft #1 - 'namesleft := % namesleft =- 1;
  1129 + }
  1130 + while$
  1131 +}
  1132 +
  1133 +FUNCTION { format.authors }
  1134 +{
  1135 + author empty.or.unknown
  1136 + { "" }
  1137 + {
  1138 + "\bibfield{author}{"
  1139 + author format.names add.period$ * "}" *} % jtb: add period if none before
  1140 + if$
  1141 +}
  1142 +
  1143 +FUNCTION { format.key }
  1144 +{
  1145 + empty.or.unknown
  1146 + { key field.or.null }
  1147 + { "" }
  1148 + if$
  1149 +}
  1150 +
  1151 +FUNCTION { format.no.key }
  1152 +{
  1153 + empty.or.unknown
  1154 + { "" }
  1155 + { "" }
  1156 + if$
  1157 +}
  1158 +
  1159 +FUNCTION { format.editors.fml }
  1160 +{
  1161 + % Format editor names for use in the "in" types: inbook, incollection,
  1162 + % inproceedings: first initial, then last names. When editors are the
  1163 + % LABEL for an entry, then format.editor is used which lists editors
  1164 + % by last name first.
  1165 +
  1166 + editor empty.or.unknown
  1167 + { "" }
  1168 + {
  1169 + "\bibfield{editor}{"
  1170 + editor format.names.fml
  1171 + * "}" *
  1172 + editor num.names$ #1 >
  1173 + { " (Eds.)" * }
  1174 + { " (Ed.)" * }
  1175 + if$
  1176 + }
  1177 + if$
  1178 +}
  1179 +
  1180 +FUNCTION { format.editors }
  1181 +{ % format editor names for use in labels, last names first.
  1182 + editor empty.or.unknown
  1183 + { "" }
  1184 + {
  1185 + "\bibfield{editor}{"
  1186 + editor format.names
  1187 + * "}" *
  1188 + editor num.names$ #1 >
  1189 + { " (Eds.)." * }
  1190 + { " (Ed.)." * }
  1191 + if$
  1192 + }
  1193 + if$
  1194 +}
  1195 +
  1196 +FUNCTION { format.articletitle }
  1197 +{
  1198 + title empty.or.unknown
  1199 + { "" }
  1200 + % Use this to preserve lettercase in titles:
  1201 + { "\showarticletitle{" title * "}" * }
  1202 + % Use this for downcase title style:
  1203 + % { \showarticletitle{" title "t" change.case$ * "}" * }
  1204 + if$
  1205 +}
  1206 +
  1207 +FUNCTION { format.title }
  1208 +{
  1209 + title empty.or.unknown
  1210 + { "" }
  1211 + % Use this to preserve lettercase in titles:
  1212 + { "\bibinfo{title}{" title * "}" * }
  1213 + % Use this for downcase title style:
  1214 + % { title "t" change.case$ }
  1215 + if$
  1216 +}
  1217 +
  1218 +FUNCTION { n.dashify }
  1219 +{
  1220 + 't :=
  1221 + ""
  1222 + { t empty.or.unknown not }
  1223 + {
  1224 + t #1 #1 substring$ "-" =
  1225 + {
  1226 + t #1 #2 substring$ "--" = not
  1227 + { "--" *
  1228 + t #2 global.max$ substring$ 't :=
  1229 + }
  1230 + {
  1231 + { t #1 #1 substring$ "-" = }
  1232 + {
  1233 + "-" *
  1234 + t #2 global.max$ substring$ 't :=
  1235 + }
  1236 + while$
  1237 + }
  1238 + if$
  1239 + }
  1240 + {
  1241 + t #1 #1 substring$ *
  1242 + t #2 global.max$ substring$ 't :=
  1243 + }
  1244 + if$
  1245 + }
  1246 + while$
  1247 +}
  1248 +
  1249 +FUNCTION { format.btitle }
  1250 +{
  1251 + "\bibinfo{booktitle}{"
  1252 + edition empty.or.unknown
  1253 + { title emphasize }
  1254 + { title empty.or.unknown
  1255 + { title emphasize } % jtb: what is this supposed to do ?!?
  1256 + { "{\em " title * "\/} (\bibinfo{edition}{" * edition "l" change.case$ *
  1257 + "} ed.)" * } % jtb: no parens for ed.
  1258 + if$
  1259 + }
  1260 + if$
  1261 + * "}" *
  1262 +}
  1263 +
  1264 +FUNCTION { format.emphasize.booktitle }
  1265 +{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
  1266 + "\bibinfo{booktitle}{"
  1267 + edition empty.or.unknown
  1268 + { booktitle emphasize }
  1269 + { booktitle empty.or.unknown
  1270 + { "" }
  1271 + { "{\em " booktitle * "} (\bibinfo{edition}{" *
  1272 + edition "l" change.case$ * "} ed.)" * }
  1273 + if$
  1274 + }
  1275 + if$
  1276 + * "}" *
  1277 +}
  1278 +
  1279 +FUNCTION { format.city }
  1280 +{
  1281 + % jtb: if the preceding string (the title of the conference) is non-empty,
  1282 + % jtb: append the location, otherwise leave empty (so as to trigger the
  1283 + % jtb: error message in output.check
  1284 +
  1285 + duplicate$ empty.or.unknown
  1286 + { }
  1287 + {
  1288 + city empty.or.unknown
  1289 + {
  1290 + date empty.or.unknown
  1291 + { }
  1292 + { " (" * date * ")" * }
  1293 + if$
  1294 + }
  1295 + {
  1296 + date empty.or.unknown
  1297 + { " (" * city * ")" * }
  1298 + { " (" * city * ", " * date * ")" * }
  1299 + if$
  1300 + }
  1301 + if$
  1302 + }
  1303 + if$
  1304 +}
  1305 +
  1306 +FUNCTION { tie.or.space.connect }
  1307 +{
  1308 + duplicate$ text.length$ #3 <
  1309 + { "~" }
  1310 + { " " }
  1311 + if$
  1312 + swap$ * *
  1313 +}
  1314 +
  1315 +FUNCTION { either.or.check }
  1316 +{
  1317 + empty.or.unknown
  1318 + 'pop$
  1319 + { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  1320 + if$
  1321 +}
  1322 +
  1323 +FUNCTION { format.bvolume }
  1324 +{
  1325 + % jtb: If there is a series, this is added and the volume trails after it.
  1326 + % jtb: Otherwise, "Vol" is Capitalized.
  1327 +
  1328 + volume empty.or.unknown
  1329 + { "" }
  1330 + {
  1331 + series empty.or.unknown
  1332 + { "Vol.~\bibinfo{volume}{" volume "}" * *}
  1333 + { "\bibinfo{series}{" series "}, " * *
  1334 + "Vol.~\bibinfo{volume}{" volume "}" * * *}
  1335 + if$
  1336 + "volume and number" number either.or.check
  1337 + }
  1338 + if$
  1339 +}
  1340 +
  1341 +FUNCTION { format.bvolume.noseries }
  1342 +{
  1343 + volume empty.or.unknown
  1344 + { "" }
  1345 + { "Vol.~\bibinfo{volume}{" volume "}" * *
  1346 + "volume and number" number either.or.check
  1347 + }
  1348 + if$
  1349 +}
  1350 +
  1351 +FUNCTION { format.series }
  1352 +{
  1353 + series empty.or.unknown
  1354 + {""}
  1355 + {" {\em (\bibinfo{series}{" * series "})}" *}
  1356 + if$
  1357 +}
  1358 +
  1359 +FUNCTION { format.number.series }
  1360 +{
  1361 + volume empty.or.unknown
  1362 + {
  1363 + number empty.or.unknown
  1364 + {
  1365 + volume empty.or.unknown
  1366 + { "" }
  1367 + {
  1368 + series empty.or.unknown
  1369 + { "" }
  1370 + { " (\bibinfo{series}{" series * "})" * }
  1371 + if$
  1372 + }
  1373 + if$
  1374 + } % { series field.or.null }
  1375 + {
  1376 + output.state mid.sentence =
  1377 + { "Number" } % gnp - changed to mixed case always
  1378 + { "Number" }
  1379 + if$
  1380 + number tie.or.space.connect series empty.or.unknown
  1381 + { "there's a number but no series in " cite$ * warning$ }
  1382 + { " in \bibinfo{series}{" * series * "}" * }
  1383 + if$
  1384 + }
  1385 + if$
  1386 + }
  1387 + {
  1388 + ""
  1389 + }
  1390 + if$
  1391 +}
  1392 +
  1393 +FUNCTION { multi.page.check }
  1394 +{
  1395 + 't :=
  1396 + #0 'multiresult :=
  1397 + { multiresult not
  1398 + t empty.or.unknown not
  1399 + and
  1400 + }
  1401 + { t #1 #1 substring$
  1402 + duplicate$ "-" =
  1403 + swap$ duplicate$ "," =
  1404 + swap$ "+" =
  1405 + or or
  1406 + { #1 'multiresult := }
  1407 + { t #2 global.max$ substring$ 't := }
  1408 + if$
  1409 + }
  1410 + while$
  1411 + multiresult
  1412 +}
  1413 +
  1414 +FUNCTION { format.pages }
  1415 +{
  1416 + pages empty.or.unknown
  1417 + { "" }
  1418 + { "\bibinfo{pages}{"
  1419 + pages multi.page.check
  1420 + { pages n.dashify } % gnp - removed () % jtb: removed pp.
  1421 + { pages }
  1422 + if$
  1423 + * "}" *
  1424 + }
  1425 + if$
  1426 +}
  1427 +
  1428 +FUNCTION { format.pages.check.without.articleno }
  1429 +{ %% format pages field only if articleno is absent
  1430 + %% Stack out: pages-specification
  1431 + numpages missing$ pages missing$ and
  1432 + { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
  1433 + { }
  1434 + if$
  1435 +
  1436 + articleno empty.or.unknown eid empty.or.unknown and
  1437 + {
  1438 + pages missing$
  1439 + { numpages }
  1440 + { format.pages }
  1441 + if$
  1442 + }
  1443 + { "" }
  1444 + if$
  1445 +}
  1446 +
  1447 +FUNCTION { format.pages.check }
  1448 +{
  1449 + pages empty.or.unknown
  1450 + { "page numbers missing in " cite$ * warning$ "" }
  1451 + { pages n.dashify }
  1452 + if$
  1453 +}
  1454 +
  1455 +FUNCTION { format.bookpages }
  1456 +{
  1457 + bookpages empty.or.unknown
  1458 + { "" }
  1459 + { bookpages "book pages" tie.or.space.connect }
  1460 + if$
  1461 +}
  1462 +
  1463 +FUNCTION { format.named.pages }
  1464 +{
  1465 + pages empty.or.unknown
  1466 + { "" }
  1467 + { format.pages "pages" tie.or.space.connect }
  1468 + if$
  1469 +}
  1470 +
  1471 +%
  1472 +% Changed by Boris Veytsman, 2011-03-13
  1473 +% Now the word "pages" is printed even if
  1474 +% there field pages is not empty.
  1475 +%
  1476 +
  1477 +FUNCTION { format.page.count }
  1478 +{
  1479 + page.count empty.or.unknown
  1480 + { "" }
  1481 + { "\bibinfo{numpages}{" page.count * "}~pages" * }
  1482 + if$
  1483 +}
  1484 +
  1485 +FUNCTION { format.articleno.numpages }
  1486 +{
  1487 + %% There are seven possible outputs, depending on which fields are set.
  1488 + %%
  1489 + %% These four are handled here:
  1490 + %%
  1491 + %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
  1492 + %% articleno, numpages -> "Article articleno-value, numpages-value pages"
  1493 + %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
  1494 + %% articleno -> "Article articleno-value" and warn about missing numpages
  1495 + %%
  1496 + %% The remaining three have already been handled by
  1497 + %% format.pages.check.without.articleno:
  1498 + %%
  1499 + %% numpages, pages -> "pages-value"
  1500 + %% numpages -> "numpages-value"
  1501 + %% pages -> "pages-value"
  1502 +
  1503 + articleno empty.or.unknown eid empty.or.unknown and
  1504 + {
  1505 + numpages empty.or.unknown
  1506 + { }
  1507 + { "numpages field, but no articleno or eid field, in "
  1508 + cite$ * warning$ }
  1509 + if$
  1510 + ""
  1511 + }
  1512 + {
  1513 + numpages empty.or.unknown
  1514 + {
  1515 + pages empty.or.unknown
  1516 + {
  1517 + "articleno or eid, but no pages or numpages field in "
  1518 + cite$ * warning$
  1519 + "" 'page.count :=
  1520 + }
  1521 + { reduce.pages.to.page.count }
  1522 + if$
  1523 + }
  1524 + { numpages 'page.count := }
  1525 + if$
  1526 +
  1527 + %% The Article number is now handled in format.day.month.year because
  1528 + %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
  1529 + %% over "Digital Libraries 12, 3 (July 2008), Article 5"
  1530 + %% format.articleno output
  1531 + format.page.count
  1532 + }
  1533 + if$
  1534 +}
  1535 +
  1536 +FUNCTION {calc.format.page.count}
  1537 +{
  1538 + numpages empty.or.unknown
  1539 + {
  1540 + pages empty.or.unknown
  1541 + {
  1542 + "" 'page.count :=
  1543 + }
  1544 + { reduce.pages.to.page.count }
  1545 + if$
  1546 + }
  1547 + { numpages 'page.count := }
  1548 + if$
  1549 + format.page.count
  1550 +}
  1551 +
  1552 +
  1553 +
  1554 +FUNCTION { format.journal.volume.number.day.month.year }
  1555 +{
  1556 + % By Young (and Spencer)
  1557 + % GNP - fixed bugs with missing volume, number, and/or pages
  1558 + %
  1559 + % Format journal, volume, number, pages for article types.
  1560 + %
  1561 + journal empty.or.unknown
  1562 + { "no journal in " cite$ * warning$
  1563 + "" }
  1564 +% { journal emphasize.with.italic.correction }
  1565 + {
  1566 + "\bibinfo{journal}{"
  1567 + journal "Journal of the ACM" =
  1568 + { "{\it J. ACM}" }
  1569 + {
  1570 + journal "American Mathematical Society Translations" =
  1571 + { "{\it Amer. Math. Soc. Transl.}" }
  1572 + {
  1573 + journal "Bulletin of the American Mathematical Society" =
  1574 + { "{\it Bull. Amer. Math. Soc.}" }
  1575 + {
  1576 + journal "Proceedings of the American Mathematical Society" =
  1577 + { "{\it Proc. Amer. Math. Soc.}" }
  1578 + {
  1579 + journal "Transactions of the American Mathematical Society" =
  1580 + { "{\it Trans. Amer. Math. Soc.}" }
  1581 + {
  1582 + journal "Communications of the {ACM}" =
  1583 + { "{\it Commun. {ACM}}" }
  1584 + {
  1585 + journal "{ACM} Computing Surveys" =
  1586 + { "{\it Comput. Surveys}" }
  1587 + {
  1588 + journal "{ACM} Transactions on Mathematical Software" =
  1589 + { "{\it {ACM} Trans. Math. Software}" }
  1590 + {
  1591 + journal "{ACM} {SIGNUM} Newsletter" =
  1592 + { "{\it {ACM} {SIGNUM} Newslett.}" }
  1593 + {
  1594 + journal "American Journal of Sociology" =
  1595 + { "{\it Amer. J. Sociology}" }
  1596 + {
  1597 + journal "Journal of the American Statistical Association" =
  1598 + { "{\it J. Amer. Statist. Assoc.}" }
  1599 + {
  1600 + journal "Applied Mathematics and Computation" =
  1601 + { "{\it Appl. Math. Comput.}" }
  1602 + {
  1603 + journal "American Mathematical Monthly" =
  1604 + { "{\it Amer. Math. Monthly}" }
  1605 + {
  1606 + journal "British Journal of Mathematical and Statistical Psychology" =
  1607 + { "{\it Brit. J. Math. Statist. Psych.}" }
  1608 + {
  1609 + journal "Canadian Mathematical Bulletin" =
  1610 + { "{\it Canad. Math. Bull.}" }
  1611 + {
  1612 + journal "Journal of Computational and Applied Mathematics" =
  1613 + { "{\it J. Comput. Appl. Math.}" }
  1614 + {
  1615 + journal "Journal of Computational Physics" =
  1616 + { "{\it J. Comput. Phys.}" }
  1617 + {
  1618 + journal "Computers and Structures" =
  1619 + { "{\it Comput. \& Structures}" }
  1620 + {
  1621 + journal "The Computer Journal" =
  1622 + { "{\it Comput. J.}" }
  1623 + {
  1624 + journal "Journal of Computer and System Sciences" =
  1625 + { "{\it J. Comput. System Sci.}" }
  1626 + {
  1627 + journal "Contemporary Mathematics" =
  1628 + { "{\it Contemp. Math.}" }
  1629 + {
  1630 + journal "Crelle's Journal" =
  1631 + { "{\it Crelle's J.}" }
  1632 + {
  1633 + journal "Giornale di Mathematiche" =
  1634 + { "{\it Giorn. Mat.}" }
  1635 + {
  1636 + journal "{IEEE} Transactions on Computers" =
  1637 + { "{\it {IEEE} Trans. Comput.}" }
  1638 + {
  1639 + journal "{IEEE} Transactions on Automatic Control" =
  1640 + { "{\it {IEEE} Trans. Automat. Control}" }
  1641 + {
  1642 + journal "Proceedings of the {IEEE}" =
  1643 + { "{\it Proc. {IEEE}}" }
  1644 + {
  1645 + journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
  1646 + { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
  1647 + {
  1648 + journal "{IMA} Journal of Numerical Analysis" =
  1649 + { "{\it {IMA} J. Numer. Anal.}" }
  1650 + {
  1651 + journal "Information Processing Letters" =
  1652 + { "{\it Inform. Process. Lett.}" }
  1653 + {
  1654 + journal "Journal of the Institute of Mathematics and its Applications" =
  1655 + { "{\it J. Inst. Math. Appl.}" }
  1656 + {
  1657 + journal "International Journal of Control" =
  1658 + { "{\it Internat. J. Control}" }
  1659 + {
  1660 + journal "International Journal for Numerical Methods in Engineering" =
  1661 + { "{\it Internat. J. Numer. Methods Engrg.}" }
  1662 + {
  1663 + journal "International Journal of Supercomputing Applications" =
  1664 + { "{\it Internat. J. Supercomputing Applic.}" }
  1665 + {
  1666 + journal "Journal of Research of the National Bureau of Standards" =
  1667 + { "{\it J. Res. Nat. Bur. Standards}" }
  1668 + {
  1669 + journal "Linear Algebra and its Applications" =
  1670 + { "{\it Linear Algebra Appl.}" }
  1671 + {
  1672 + journal "Journal of Mathematical Analysis and Applications" =
  1673 + { "{\it J. Math. Anal. Appl.}" }
  1674 + {
  1675 + journal "Mathematische Annalen" =
  1676 + { "{\it Math. Ann.}" }
  1677 + {
  1678 + journal "Journal of Mathematical Physics" =
  1679 + { "{\it J. Math. Phys.}" }
  1680 + {
  1681 + journal "Mathematics of Computation" =
  1682 + { "{\it Math. Comp.}" }
  1683 + {
  1684 + journal "Mathematica Scandinavica" =
  1685 + { "{\it Math. Scand.}" }
  1686 + {
  1687 + journal "Mathematical Tables and Other Aids to Computation" =
  1688 + { "{\it Math. Tables Aids Comput.}" }
  1689 + {
  1690 + journal "Numerische Mathematik" =
  1691 + { "{\it Numer. Math.}" }
  1692 + {
  1693 + journal "Pacific Journal of Mathematics" =
  1694 + { "{\it Pacific J. Math.}" }
  1695 + {
  1696 + journal "Journal of Parallel and Distributed Computing" =
  1697 + { "{\it J. Parallel and Distrib. Comput.}" }
  1698 + {
  1699 + journal "Parallel Computing" =
  1700 + { "{\it Parallel Comput.}" }
  1701 + {
  1702 + journal "Philosophical Magazine" =
  1703 + { "{\it Philos. Mag.}" }
  1704 + {
  1705 + journal "Proceedings of the National Academy of Sciences of the USA" =
  1706 + { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
  1707 + {
  1708 + journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
  1709 + { "{\it Quart. J. Math. Oxford Ser. (2)}" }
  1710 + {
  1711 + journal "Quarterly of Applied Mathematics" =
  1712 + { "{\it Quart. Appl. Math.}" }
  1713 + {
  1714 + journal "Review of the International Statisical Institute" =
  1715 + { "{\it Rev. Inst. Internat. Statist.}" }
  1716 + {
  1717 + journal "Journal of the Society for Industrial and Applied Mathematics" =
  1718 + { "{\it J. Soc. Indust. Appl. Math.}" }
  1719 + {
  1720 + journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
  1721 + { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
  1722 + {
  1723 + journal "{SIAM} Journal on Algebraic and Discrete Methods" =
  1724 + { "{\it {SIAM} J. Algebraic Discrete Methods}" }
  1725 + {
  1726 + journal "{SIAM} Journal on Applied Mathematics" =
  1727 + { "{\it {SIAM} J. Appl. Math.}" }
  1728 + {
  1729 + journal "{SIAM} Journal on Computing" =
  1730 + { "{\it {SIAM} J. Comput.}" }
  1731 + {
  1732 + journal "{SIAM} Journal on Matrix Analysis and Applications" =
  1733 + { "{\it {SIAM} J. Matrix Anal. Appl.}" }
  1734 + {
  1735 + journal "{SIAM} Journal on Numerical Analysis" =
  1736 + { "{\it {SIAM} J. Numer. Anal.}" }
  1737 + {
  1738 + journal "{SIAM} Review" =
  1739 + { "{\it {SIAM} Rev.}" }
  1740 + {
  1741 + journal "{SIAM} Journal on Scientific and Statistical Computing" =
  1742 + { "{\it {SIAM} J. Sci. Statist. Comput.}" }
  1743 + {
  1744 + journal "Software Practice and Experience" =
  1745 + { "{\it Software Prac. Experience}" }
  1746 + {
  1747 + journal "Statistical Science" =
  1748 + { "{\it Statist. Sci.}" }
  1749 + {
  1750 + journal "{USSR} Computational Mathematics and Mathematical Physics" =
  1751 + { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
  1752 + {
  1753 + journal "Journal of {VLSI} and Computer Systems" =
  1754 + { "{\it J. {VLSI} Comput. Syst.}" }
  1755 + {
  1756 + journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
  1757 + { "{\it Z. Angew. Math. Mech.}" }
  1758 + {
  1759 + journal "Zeitschrift fur Angewandte Mathematik und Physik" =
  1760 + { "{\it Z. Angew. Math. Phys.}" }
  1761 + {
  1762 + journal "ACM Computing Surveys" =
  1763 + { "{\it Comput. Surveys}" }
  1764 + {
  1765 + journal "ACM Transactions on Mathematical Software" =
  1766 + { "{\it ACM Trans. Math. Software}" }
  1767 + {
  1768 + journal "ACM {SIGNUM} Newsletter" =
  1769 + { "{\it ACM {SIGNUM} Newslett.}" }
  1770 + {
  1771 + journal "IEEE Transactions on Computers" =
  1772 + { "{\it IEEE Trans. Comput.}" }
  1773 + {
  1774 + journal "IEEE Transactions on Automatic Control" =
  1775 + { "{\it IEEE Trans. Automat. Control}" }
  1776 + {
  1777 + journal "Proceedings of the IEEE" =
  1778 + { "{\it Proc. IEEE}" }
  1779 + {
  1780 + journal "IEEE Transactions on Aerospace and Electronic Systems" =
  1781 + { "{\it IEEE Trans. Aerospace Electron. Systems}" }
  1782 + {
  1783 + journal "IMA Journal of Numerical Analysis" =
  1784 + { "{\it IMA J. Numer. Anal.}" }
  1785 + {
  1786 + journal "SIAM Journal on Algebraic and Discrete Methods" =
  1787 + { "{\it SIAM J. Algebraic Discrete Methods}" }
  1788 + {
  1789 + journal "SIAM Journal on Applied Mathematics" =
  1790 + { "{\it SIAM J. Appl. Math.}" }
  1791 + {
  1792 + journal "SIAM Journal on Computing" =
  1793 + { "{\it SIAM J. Comput.}" }
  1794 + {
  1795 + journal "SIAM Journal on Matrix Analysis and Applications" =
  1796 + { "{\it SIAM J. Matrix Anal. Appl.}" }
  1797 + {
  1798 + journal "SIAM Journal on Numerical Analysis" =
  1799 + { "{\it SIAM J. Numer. Anal.}" }
  1800 + {
  1801 + journal "SIAM Review" =
  1802 + { "{\it SIAM Rev.}" }
  1803 + {
  1804 + journal "SIAM Journal on Scientific and Statistical Computing" =
  1805 + { "{\it SIAM J. Sci. Statist. Comput.}" }
  1806 + {
  1807 + journal "USSR Computational Mathematics and Mathematical Physics" =
  1808 + { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
  1809 + {
  1810 + journal "Journal of VLSI and Computer Systems" =
  1811 + { "{\it J. VLSI Comput. Syst.}" }
  1812 + {
  1813 + journal "Communications of the ACM" =
  1814 + { "{\it Commun. ACM}" }
  1815 + %% If no match with cases needing special handling, just output journal name
  1816 + { journal emphasize.with.italic.correction }
  1817 + if$
  1818 + }
  1819 + if$
  1820 + }
  1821 + if$
  1822 + }
  1823 + if$
  1824 + }
  1825 + if$
  1826 + }
  1827 + if$
  1828 + }
  1829 + if$
  1830 + }
  1831 + if$
  1832 + }
  1833 + if$
  1834 + }
  1835 + if$
  1836 + }
  1837 + if$
  1838 + }
  1839 + if$
  1840 + }
  1841 + if$
  1842 + }
  1843 + if$
  1844 + }
  1845 + if$
  1846 + }
  1847 + if$
  1848 + }
  1849 + if$
  1850 + }
  1851 + if$
  1852 + }
  1853 + if$
  1854 + }
  1855 + if$
  1856 + }
  1857 + if$
  1858 + }
  1859 + if$
  1860 + }
  1861 + if$
  1862 + }
  1863 + if$
  1864 + }
  1865 + if$
  1866 + }
  1867 + if$
  1868 + }
  1869 + if$
  1870 + }
  1871 + if$
  1872 + }
  1873 + if$
  1874 + }
  1875 + if$
  1876 + }
  1877 + if$
  1878 + }
  1879 + if$
  1880 + }
  1881 + if$
  1882 + }
  1883 + if$
  1884 + }
  1885 + if$
  1886 + }
  1887 + if$
  1888 + }
  1889 + if$
  1890 + }
  1891 + if$
  1892 + }
  1893 + if$
  1894 + }
  1895 + if$
  1896 + }
  1897 + if$
  1898 + }
  1899 + if$
  1900 + }
  1901 + if$
  1902 + }
  1903 + if$
  1904 + }
  1905 + if$
  1906 + }
  1907 + if$
  1908 + }
  1909 + if$
  1910 + }
  1911 + if$
  1912 + }
  1913 + if$
  1914 + }
  1915 + if$
  1916 + }
  1917 + if$
  1918 + }
  1919 + if$
  1920 + }
  1921 + if$
  1922 + }
  1923 + if$
  1924 + }
  1925 + if$
  1926 + }
  1927 + if$
  1928 + }
  1929 + if$
  1930 + }
  1931 + if$
  1932 + }
  1933 + if$
  1934 + }
  1935 + if$
  1936 + }
  1937 + if$
  1938 + }
  1939 + if$
  1940 + }
  1941 + if$
  1942 + }
  1943 + if$
  1944 + }
  1945 + if$
  1946 + }
  1947 + if$
  1948 + }
  1949 + if$
  1950 + }
  1951 + if$
  1952 + }
  1953 + if$
  1954 + }
  1955 + if$
  1956 + }
  1957 + if$
  1958 + }
  1959 + if$
  1960 + }
  1961 + if$
  1962 + }
  1963 + if$
  1964 + }
  1965 + if$
  1966 + }
  1967 + if$
  1968 + }
  1969 + if$
  1970 + }
  1971 + if$
  1972 + }
  1973 + if$
  1974 + }
  1975 + if$
  1976 + }
  1977 + if$
  1978 + }
  1979 + if$
  1980 + }
  1981 + if$
  1982 + * "}" *
  1983 + }
  1984 + if$
  1985 +
  1986 + number empty.or.unknown
  1987 + {
  1988 + volume empty.or.unknown
  1989 + { "no number and no volume in " cite$ * warning$ "" * }
  1990 + { " " * " \bibinfo{volume}{" * volume * "}" * }
  1991 + if$
  1992 + }
  1993 + {
  1994 + volume empty.or.unknown
  1995 + {
  1996 + "unusual to have number, but no volume, for " cite$ * warning$
  1997 + " \bibinfo{number}{" * number * "}" *
  1998 + }
  1999 + { " \bibinfo{volume}{" * volume * "}, \bibinfo{number}{" *
  2000 + number * "}" *}
  2001 + if$
  2002 + }
  2003 + if$
  2004 + after.block 'output.state :=
  2005 +
  2006 + % Sometimes proceedings are published in journals
  2007 + % In this case we do not want to put year, day and month here
  2008 +
  2009 + type$ "inproceedings" =
  2010 + { }
  2011 + {format.day.month.year * }
  2012 + if$
  2013 +}
  2014 +
  2015 +FUNCTION { format.chapter.pages }
  2016 +{
  2017 + chapter empty.or.unknown
  2018 + 'format.pages
  2019 + { type empty.or.unknown
  2020 + { "Chapter" } % gnp - changed to mixed case
  2021 + { type "t" change.case$ }
  2022 + if$
  2023 + chapter tie.or.space.connect
  2024 + pages empty.or.unknown
  2025 + {"page numbers missing in " cite$ * warning$} % gnp - added check
  2026 + { ", " * format.pages * }
  2027 + if$
  2028 + }
  2029 + if$
  2030 +}
  2031 +
  2032 +FUNCTION { format.in.emphasize.booktitle }
  2033 +{ % jtb: format for collections or proceedings not appearing in a journal
  2034 + booktitle empty.or.unknown
  2035 + { "" }
  2036 + { "In " format.emphasize.booktitle * }
  2037 + if$
  2038 +}
  2039 +
  2040 +FUNCTION { format.in.booktitle }
  2041 +{ % jtb: format for proceedings appearing in a journal
  2042 + booktitle empty.or.unknown
  2043 + { "" }
  2044 + { "In \bibinfo{booktitle}{" booktitle * "}" * }
  2045 + if$
  2046 +}
  2047 +
  2048 +FUNCTION { format.in.ed.booktitle }
  2049 +{
  2050 + booktitle empty.or.unknown
  2051 + { "" }
  2052 + { editor empty.or.unknown
  2053 + { "In " format.emphasize.booktitle * }
  2054 + % jtb: swapped editor location
  2055 + { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
  2056 + if$
  2057 + }
  2058 + if$
  2059 +}
  2060 +
  2061 +FUNCTION { format.thesis.type }
  2062 +{ % call with default type on stack top
  2063 + type empty.or.unknown
  2064 + 'skip$ % use default type
  2065 + {
  2066 + pop$ % discard default type
  2067 + % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
  2068 + type
  2069 + }
  2070 + if$
  2071 +}
  2072 +
  2073 +FUNCTION { format.tr.number }
  2074 +{
  2075 + "\bibinfo{type}{"
  2076 + type empty.or.unknown
  2077 + { "{T}echnical {R}eport" }
  2078 + 'type
  2079 + if$
  2080 + "}" * *
  2081 + number empty.or.unknown
  2082 + { "t" change.case$ }
  2083 + %% LOOKS BAD: { "." * number tie.or.space.connect }
  2084 + %% Prefer "Research report RJ687." to "Research report. RJ687."
  2085 + { number tie.or.space.connect }
  2086 + if$
  2087 +}
  2088 +
  2089 +FUNCTION { format.advisor }
  2090 +{
  2091 + advisor empty.or.unknown
  2092 + { "" }
  2093 + { "Advisor(s) " advisor * }
  2094 + if$
  2095 +}
  2096 +
  2097 +FUNCTION { format.article.crossref }
  2098 +{ "See"
  2099 + "\citeN{" * crossref * "}" *
  2100 +}
  2101 +
  2102 +FUNCTION { format.crossref.editor }
  2103 +{
  2104 + editor #1 "{vv~}{ll}" format.name$
  2105 + editor num.names$ duplicate$
  2106 + #2 >
  2107 + { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
  2108 + { #2 <
  2109 + 'skip$
  2110 + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2111 + { " et~al\mbox{.}" * } % jrh: avoid spacing problems
  2112 + { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  2113 + if$
  2114 + }
  2115 + if$
  2116 + }
  2117 + if$
  2118 +}
  2119 +
  2120 +FUNCTION { format.book.crossref }
  2121 +{
  2122 + volume empty.or.unknown
  2123 + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  2124 + "In "
  2125 + }
  2126 + { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
  2127 + " of " *
  2128 + }
  2129 + if$
  2130 + editor empty.or.unknown
  2131 + editor field.or.null author field.or.null =
  2132 + or
  2133 + { key empty.or.unknown
  2134 + { series empty.or.unknown
  2135 + { "need editor, key, or series for " cite$ * " to crossref " *
  2136 + crossref * warning$
  2137 + "" *
  2138 + }
  2139 + { "{\em " * series * "\/}" * }
  2140 + if$
  2141 + }
  2142 + { key * }
  2143 + if$
  2144 + }
  2145 + { format.crossref.editor * }
  2146 + if$
  2147 + " \citeN{" * crossref * "}" *
  2148 +}
  2149 +
  2150 +FUNCTION { format.incoll.inproc.crossref }
  2151 +{ "See"
  2152 + " \citeN{" * crossref * "}" *
  2153 +}
  2154 +
  2155 +FUNCTION { format.lab.names }
  2156 +{
  2157 + % format.lab.names:
  2158 + %
  2159 + % determines "short" names for the abbreviated author information.
  2160 + % "Long" labels are created in calc.label, using the routine my.full.label
  2161 + % to format author and editor fields.
  2162 + %
  2163 + % There are 4 cases for labels. (n=3 in the example)
  2164 + % a) one author Foo
  2165 + % b) one to n Foo, Bar and Baz
  2166 + % c) use of "and others" Foo, Bar et al.
  2167 + % d) more than n Foo et al.
  2168 +
  2169 + 's :=
  2170 + s num.names$ 'numnames :=
  2171 + numnames #2 > % change number to number of others allowed before
  2172 + % forcing "et al".
  2173 + { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
  2174 + {
  2175 + numnames #1 - 'namesleft :=
  2176 + #2 'nameptr :=
  2177 + s #1 "{vv~}{ll}" format.name$
  2178 + { namesleft #0 > }
  2179 + { nameptr numnames =
  2180 + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2181 + { " et~al\mbox{.}" * } % jrh: avoid spacing problems
  2182 + { " and " * s nameptr "{vv~}{ll}" format.name$ * }
  2183 + if$
  2184 + }
  2185 + { ", " * s nameptr "{vv~}{ll}" format.name$ * }
  2186 + if$
  2187 + nameptr #1 + 'nameptr :=
  2188 + namesleft #1 - 'namesleft :=
  2189 + }
  2190 + while$
  2191 + }
  2192 + if$
  2193 +}
  2194 +
  2195 +FUNCTION { author.key.label }
  2196 +{
  2197 + author empty.or.unknown
  2198 + { key empty.or.unknown
  2199 + { "no key, author in " cite$ * warning$
  2200 + cite$ #1 #3 substring$ }
  2201 + 'key
  2202 + if$
  2203 + }
  2204 + { author format.lab.names }
  2205 + if$
  2206 +}
  2207 +
  2208 +FUNCTION { editor.key.organization.label }
  2209 +{ % added - gnp. Provide label formatting by organization if editor is null.
  2210 + editor empty.or.unknown
  2211 + { organization empty.or.unknown
  2212 + { key empty.or.unknown
  2213 + { "no key, editor or organization in " cite$ * warning$
  2214 + cite$ #1 #3 substring$ }
  2215 + 'key
  2216 + if$
  2217 + }
  2218 + { organization }
  2219 + if$
  2220 + }
  2221 + { editor format.lab.names }
  2222 + if$
  2223 +}
  2224 +
  2225 +FUNCTION { author.editor.key.label }
  2226 +{
  2227 + author empty.or.unknown
  2228 + { editor empty.or.unknown
  2229 + { key empty.or.unknown
  2230 + { "no key, author, or editor in " cite$ * warning$
  2231 + cite$ #1 #3 substring$ }
  2232 + 'key
  2233 + if$
  2234 + }
  2235 + { editor format.lab.names }
  2236 + if$
  2237 + }
  2238 + { author format.lab.names }
  2239 + if$
  2240 +}
  2241 +
  2242 +FUNCTION { author.editor.key.organization.label }
  2243 +{ % added - gnp. Provide label formatting by organization if author is null.
  2244 + author empty.or.unknown
  2245 + { editor empty.or.unknown
  2246 + { organization empty.or.unknown
  2247 + { key empty.or.unknown
  2248 + { "no key, author, editor or organization in " cite$ * warning$
  2249 + cite$ #1 #3 substring$ }
  2250 + 'key
  2251 + if$
  2252 + }
  2253 + { organization }
  2254 + if$
  2255 + }
  2256 + { editor format.lab.names }
  2257 + if$
  2258 + }
  2259 + { author format.lab.names }
  2260 + if$
  2261 +}
  2262 +
  2263 +% Calculate label and leave it on stack
  2264 +FUNCTION { calc.basic.label }
  2265 +{
  2266 + type$ "book" =
  2267 + type$ "inbook" =
  2268 + or
  2269 + type$ "article" =
  2270 + or
  2271 + 'author.editor.key.label
  2272 + { type$ "proceedings" =
  2273 + type$ "periodical" =
  2274 + or
  2275 + 'editor.key.organization.label
  2276 + { type$ "manual" =
  2277 + 'author.editor.key.organization.label
  2278 + 'author.key.label
  2279 + if$
  2280 + }
  2281 + if$
  2282 + }
  2283 + if$
  2284 + duplicate$
  2285 + year empty.or.unknown
  2286 + { "[n. d.]" }
  2287 + { year field.or.null purify$ #-1 #4 substring$}
  2288 + if$
  2289 + *
  2290 + 'basic.label.year :=
  2291 +}
  2292 +
  2293 +FUNCTION { calc.label }
  2294 +{
  2295 + % Changed - GNP. See also author.editor.organization.sort, editor.organization.sort
  2296 + % Form label for BibTeX entry. The classification of which fields are used
  2297 + % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
  2298 + % The change here from newapa is to also include organization as a
  2299 + % citation label if author or editor is missing.
  2300 +
  2301 + calc.basic.label
  2302 +
  2303 + author empty.or.unknown % generate the full label citation information.
  2304 + {
  2305 + editor empty.or.unknown
  2306 + {
  2307 + organization empty.or.unknown
  2308 + {
  2309 + key empty.or.unknown
  2310 + {
  2311 + "no author, editor, organization, or key in " cite$ * warning$
  2312 + "??"
  2313 + }
  2314 + { key }
  2315 + if$
  2316 + }
  2317 + { organization }
  2318 + if$
  2319 + }
  2320 + { editor my.full.label }
  2321 + if$
  2322 + }
  2323 + { author my.full.label }
  2324 + if$
  2325 +
  2326 + % leave label on the stack, to be popped when required.
  2327 +
  2328 + "}{" * swap$ * "}{" *
  2329 + % year field.or.null purify$ #-1 #4 substring$ *
  2330 + %
  2331 + % save the year for sort processing afterwards (adding a, b, c, etc.)
  2332 + %
  2333 + year empty.or.unknown
  2334 + { "[n. d.]" }
  2335 + { year field.or.null purify$ #-1 #4 substring$}
  2336 + if$
  2337 + 'label.year :=
  2338 +}
  2339 +
  2340 +
  2341 +FUNCTION { output.bibitem }
  2342 +{
  2343 + newline$
  2344 + "\bibitem[\protect\citeauthoryear{" write$
  2345 + calc.label write$
  2346 + sort.year write$
  2347 + "}]%" writeln
  2348 + " {" write$
  2349 + cite$ write$
  2350 + "}" writeln
  2351 + ""
  2352 + before.all 'output.state :=
  2353 +}
  2354 +
  2355 +
  2356 +FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint }
  2357 +{ % enter and return with stack empty
  2358 + %% We switch now from buffered output to output of complete lines, so
  2359 + %% that the Issue .. URL data have their own lines, and are less likely
  2360 + %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
  2361 + %% lines longer than 79 characters, backtracking to what it thinks is
  2362 + %% a break point in the string. Any such wrapping MUST be undone to
  2363 + %% prevent percent-newline from appearing in DOIs and URLs. The
  2364 + %% output data are intentionally wrapped in \showxxx{} macros at
  2365 + %% beginning of line, and that supply their own punctuation (if they
  2366 + %% are not defined to suppress output entirely), to make it easier for
  2367 + %% other software to recover them from .bbl files.
  2368 + %%
  2369 + %% It also makes it possible to later change the macro definitions
  2370 + %% to suppress particular output values, or alter their appearance.
  2371 + %%
  2372 + %% Note that it is possible for theses, technical reports, and
  2373 + %% manuals to have ISBNs, and anything that has an ISBN may also
  2374 + %% have an ISSN. When there are no values for these keys, there
  2375 + %% is no output generated for them here.
  2376 +
  2377 + "\newblock" writeln
  2378 + after.block 'output.state :=
  2379 +
  2380 + output.issue
  2381 + output.isbn
  2382 + output.coden % CODEN is functionally like ISSN, so output them sequentially
  2383 + output.issn
  2384 + output.lccn
  2385 + output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
  2386 + output.eprint
  2387 + output.url % but ACM wants URL last
  2388 +}
  2389 +
  2390 +FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint.note }
  2391 +{ % enter with stack empty, return with empty string on stack
  2392 + output.issue.doi.coden.isxn.lccn.url.eprint
  2393 + note empty.or.unknown
  2394 + { }
  2395 + {
  2396 + "\newblock" writeln
  2397 + output.note
  2398 + }
  2399 + if$
  2400 + ""
  2401 +}
  2402 +
  2403 +FUNCTION { output.issue.doi.coden.isxn.lccn.url.eprint.note.check }
  2404 +{ % enter with stack empty, return with empty string on stack
  2405 + output.issue.doi.coden.isxn.lccn.url.eprint
  2406 + note empty.or.unknown
  2407 + { }
  2408 + {
  2409 + "\newblock" writeln
  2410 + output.note.check
  2411 + }
  2412 + if$
  2413 + ""
  2414 +}
  2415 +
  2416 +FUNCTION { article }
  2417 +{
  2418 + output.bibitem
  2419 +
  2420 + author empty.or.unknown
  2421 + {
  2422 + editor empty.or.unknown
  2423 + { "neither author and editor supplied for " cite$ * warning$ }
  2424 + { format.editors "editor" output.check }
  2425 + if$
  2426 + }
  2427 + { format.authors "author" output.check }
  2428 + if$
  2429 +
  2430 + author format.no.key output % added
  2431 + output.year.check % added
  2432 + new.block
  2433 + format.articletitle "title" output.check
  2434 + new.block
  2435 + howpublished empty.or.unknown
  2436 + { }
  2437 + { "\bibinfo{howpublished}{" howpublished "}" * * output }
  2438 + if$
  2439 +
  2440 + crossref missing$
  2441 + { format.journal.volume.number.day.month.year output}
  2442 + {
  2443 + "cross reference in @Article{...} is unusual" warning$
  2444 + format.article.crossref output.nonnull
  2445 + }
  2446 + if$
  2447 +
  2448 + format.pages.check.without.articleno output
  2449 + format.articleno.numpages output
  2450 + fin.block
  2451 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2452 + fin.entry
  2453 +}
  2454 +
  2455 +FUNCTION { book }
  2456 +{
  2457 + output.bibitem
  2458 + author empty.or.unknown
  2459 + { format.editors "author and editor" output.check }
  2460 + { format.authors output.nonnull
  2461 + crossref missing$
  2462 + { "author and editor" editor either.or.check }
  2463 + 'skip$
  2464 + if$
  2465 + }
  2466 + if$
  2467 + output.year.check % added
  2468 + new.block
  2469 + format.btitle "title" output.check
  2470 + crossref missing$
  2471 + { new.sentence % jtb: start a new sentence for series/volume
  2472 + format.bvolume output
  2473 + new.block
  2474 + format.number.series output
  2475 + new.sentence
  2476 + publisher "publisher" bibinfo.output.check
  2477 + address "address" bibinfo.output.check % jtb: require address
  2478 + fin.sentence
  2479 + pages empty.or.unknown
  2480 + { format.bookpages } % use bookpages when pages empty
  2481 + { format.pages.check "pages" tie.or.space.connect }
  2482 + if$
  2483 + output
  2484 + }
  2485 + { new.block
  2486 + format.book.crossref output.nonnull
  2487 + }
  2488 + if$
  2489 + fin.block
  2490 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2491 + fin.entry
  2492 +}
  2493 +
  2494 +FUNCTION { booklet }
  2495 +{
  2496 + output.bibitem
  2497 + format.authors output
  2498 + author format.key output % added
  2499 + output.year.check % added
  2500 + new.block
  2501 + format.title "title" output.check
  2502 + new.block
  2503 + howpublished empty.or.unknown
  2504 + { }
  2505 + { "\bibinfo{howpublished}{" howpublished "}" * * output }
  2506 + if$
  2507 + address output
  2508 + fin.block
  2509 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2510 + fin.entry
  2511 +}
  2512 +
  2513 +FUNCTION { inbook }
  2514 +{
  2515 + output.bibitem
  2516 + author empty.or.unknown
  2517 + { format.editors
  2518 + "author and editor" output.check
  2519 + }
  2520 + { format.authors output.nonnull
  2521 + crossref missing$
  2522 + { "author and editor" editor either.or.check }
  2523 + 'skip$
  2524 + if$
  2525 + }
  2526 + if$
  2527 + output.year.check % added
  2528 + new.block
  2529 + format.btitle "title" output.check
  2530 + crossref missing$
  2531 + { new.sentence % jtb: start a new sentence for series/volume
  2532 + format.bvolume output
  2533 + new.block
  2534 + format.number.series output
  2535 + new.sentence
  2536 + publisher "publisher" bibinfo.output.check
  2537 + address "address" bibinfo.output.check % jtb: require address
  2538 + format.bookpages output
  2539 + format.chapter.pages
  2540 + "chapter and pages" output.check % jtb: moved from before publisher
  2541 + }
  2542 + {
  2543 + format.bookpages output
  2544 + format.chapter.pages "chapter and pages" output.check
  2545 + new.block
  2546 + format.book.crossref output.nonnull
  2547 + }
  2548 + if$
  2549 + fin.block
  2550 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2551 + fin.entry
  2552 +}
  2553 +
  2554 +FUNCTION { incollection }
  2555 +{
  2556 + output.bibitem
  2557 + format.authors "author" output.check
  2558 + author format.key output % added
  2559 + output.year.check % added
  2560 + new.block
  2561 + format.articletitle "title" output.check
  2562 + new.block
  2563 + crossref missing$
  2564 + { format.in.ed.booktitle "booktitle" output.check
  2565 + new.sentence % jtb: start a new sentence for series/volume
  2566 + format.bvolume output
  2567 + format.number.series output
  2568 + new.sentence
  2569 + publisher "publisher" bibinfo.output.check
  2570 + address "address" bibinfo.output.check % jtb: require address
  2571 + format.bookpages output
  2572 + format.chapter.pages output % gnp - was special.output.nonnull
  2573 + % left out comma before page numbers
  2574 + % jtb: moved from before publisher
  2575 + }
  2576 + {
  2577 + format.incoll.inproc.crossref output.nonnull
  2578 + format.chapter.pages output
  2579 + }
  2580 + if$
  2581 + fin.block
  2582 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2583 + fin.entry
  2584 +}
  2585 +
  2586 +FUNCTION { inproceedings }
  2587 +{
  2588 + output.bibitem
  2589 + format.authors "author" output.check
  2590 + author format.key output % added
  2591 + output.year.check % added
  2592 + new.block
  2593 + format.articletitle "title" output.check
  2594 + howpublished empty.or.unknown
  2595 + { }
  2596 + { "\bibinfo{howpublished}{" howpublished "}" * * output.dot.space }
  2597 + if$
  2598 + crossref missing$
  2599 + {
  2600 + journal missing$ % jtb: proceedings appearing in journals
  2601 + { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
  2602 + format.series output.removenospace
  2603 + format.editors.fml output % BV 2011/09/27 Moved dot to comma
  2604 + format.bvolume.noseries output
  2605 + new.sentence
  2606 + organization output
  2607 + publisher "publisher" bibinfo.output.check % jtb: require publisher (?)
  2608 + address "address" bibinfo.output.check % jtb: require address
  2609 + format.bookpages output
  2610 + }
  2611 + {
  2612 + format.in.booktitle format.city "booktitle" output.check
  2613 + format.editors.fml output
  2614 + new.sentence
  2615 + format.journal.volume.number.day.month.year output
  2616 + }
  2617 + if$
  2618 + format.articleno output
  2619 + format.pages.check.without.articleno output
  2620 + }
  2621 + {
  2622 + format.incoll.inproc.crossref output.nonnull
  2623 + format.articleno output
  2624 + format.pages.check.without.articleno output
  2625 + }
  2626 + if$
  2627 + format.articleno.numpages output
  2628 + fin.block
  2629 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2630 + fin.entry
  2631 +}
  2632 +
  2633 +FUNCTION { conference } { inproceedings }
  2634 +
  2635 +FUNCTION { manual }
  2636 +{
  2637 + output.bibitem
  2638 + author empty.or.unknown
  2639 + { editor empty.or.unknown
  2640 + { organization "organization" output.check
  2641 + organization format.key output } % if all else fails, use key
  2642 + { format.editors "author and editor" output.check }
  2643 + if$
  2644 + }
  2645 + { format.authors output.nonnull }
  2646 + if$
  2647 + output.year.check % added
  2648 + new.block
  2649 + format.btitle "title" output.check
  2650 + organization address new.block.checkb
  2651 + % jtb: back to normal style: organization, address
  2652 + organization "organization" output.check
  2653 + address output
  2654 + fin.block
  2655 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2656 + fin.entry
  2657 +}
  2658 +
  2659 +FUNCTION { mastersthesis }
  2660 +{
  2661 + output.bibitem
  2662 + format.authors "author" output.check
  2663 + author format.key output % added
  2664 + output.year.check % added
  2665 + new.block
  2666 + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
  2667 + new.block
  2668 + "\bibinfo{thesistype}{Master's\ thesis}" format.thesis.type output
  2669 + new.sentence
  2670 + school "school" bibinfo.output.check
  2671 + address empty.or.unknown
  2672 + { }
  2673 + { "\bibinfo{address}{" address * "}" * output }
  2674 + if$
  2675 + new.block
  2676 + format.advisor output
  2677 + fin.block
  2678 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2679 + fin.entry
  2680 +}
  2681 +
  2682 +FUNCTION { misc }
  2683 +{
  2684 + output.bibitem
  2685 + format.authors "author" output.check
  2686 + author format.key output % added
  2687 + output.year.check % added
  2688 + title howpublished new.block.checkb
  2689 + format.title output
  2690 + new.block
  2691 + howpublished empty.or.unknown
  2692 + { }
  2693 + { "\bibinfo{howpublished}{" howpublished "}" * * output }
  2694 + if$
  2695 + "" output.nonnull.dot.space
  2696 + output.day.month.year
  2697 + calc.format.page.count output
  2698 + fin.block
  2699 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2700 + fin.entry
  2701 +}
  2702 +
  2703 +FUNCTION { online } { misc }
  2704 +
  2705 +FUNCTION { game } { misc }
  2706 +
  2707 +
  2708 +FUNCTION { phdthesis }
  2709 +{
  2710 + output.bibitem
  2711 + format.authors "author" output.check
  2712 + author format.key output % added
  2713 + output.year.check % added
  2714 + new.block
  2715 + format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
  2716 + new.block
  2717 + "\bibinfo{thesistype}{Ph.D. Dissertation}" format.thesis.type output
  2718 + new.sentence
  2719 + school "school" bibinfo.output.check
  2720 + address empty.or.unknown
  2721 + { }
  2722 + { "\bibinfo{address}{" address * "}" * output }
  2723 + if$
  2724 + new.block
  2725 + format.advisor output
  2726 + fin.block
  2727 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2728 + fin.entry
  2729 +}
  2730 +
  2731 +FUNCTION {format.date}
  2732 +{ year empty.or.unknown
  2733 + { month empty.or.unknown
  2734 + {
  2735 + "" % output empty date if year/month both empty
  2736 + day empty.or.unknown
  2737 + { }
  2738 + { "there's a day but no month or year in " cite$ * warning$ }
  2739 + if$
  2740 + }
  2741 + { "there's a month but no year in " cite$ * warning$
  2742 + month
  2743 + day empty.or.unknown
  2744 + { }
  2745 + { " " * day * }
  2746 + if$
  2747 + }
  2748 + if$
  2749 + }
  2750 + { month empty.or.unknown
  2751 + {
  2752 + year % output only year if month empty
  2753 + day empty.or.unknown
  2754 + { }
  2755 + { "there's a day and year but no month in " cite$ * warning$ }
  2756 + if$
  2757 + }
  2758 + {
  2759 + month " " *
  2760 + day empty.or.unknown
  2761 + { }
  2762 + { day * ", " * }
  2763 + if$
  2764 + year *
  2765 + }
  2766 + if$
  2767 + }
  2768 + if$
  2769 +}
  2770 +
  2771 +FUNCTION {new.block.checka}
  2772 +{
  2773 + empty.or.unknown
  2774 + 'skip$
  2775 + 'new.block
  2776 + if$
  2777 +}
  2778 +
  2779 +FUNCTION { periodical }
  2780 +{
  2781 + output.bibitem
  2782 + editor empty.or.unknown
  2783 + { organization output }
  2784 + { format.editors output.nonnull }
  2785 + if$
  2786 + new.block
  2787 + output.year.check
  2788 + new.sentence
  2789 + format.articletitle "title" output.check
  2790 + format.journal.volume.number.day.month.year output
  2791 + calc.format.page.count output
  2792 + fin.entry
  2793 +}
  2794 +
  2795 +FUNCTION { proceedings }
  2796 +{
  2797 + output.bibitem
  2798 + editor empty.or.unknown
  2799 + { organization output
  2800 + organization format.key output } % gnp - changed from author format.key
  2801 + { format.editors output.nonnull }
  2802 + if$
  2803 + % author format.key output % gnp - removed (should be either
  2804 + % editor or organization
  2805 + output.year.check % added (newapa)
  2806 + new.block
  2807 + format.btitle format.city "title" output.check % jtb: added city
  2808 + new.sentence
  2809 + format.bvolume output
  2810 + format.number.series output
  2811 + new.sentence
  2812 + organization output
  2813 + % jtb: normal order: publisher, address
  2814 + publisher empty.or.unknown
  2815 + { }
  2816 + { "\bibinfo{publisher}{" publisher * "}" * output }
  2817 + if$
  2818 + address empty.or.unknown
  2819 + { }
  2820 + { "\bibinfo{address}{" address * "}" * output }
  2821 + if$
  2822 + fin.block
  2823 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2824 + fin.entry
  2825 +}
  2826 +
  2827 +FUNCTION { techreport }
  2828 +{
  2829 + output.bibitem
  2830 + format.authors "author" output.check
  2831 + author format.key output % added
  2832 + output.year.check % added
  2833 + new.block
  2834 + format.btitle "title" output.check
  2835 + new.block
  2836 +% format.tr.number output % jtb: moved month ...
  2837 + format.tr.number output new.sentence % Gerry - need dot 2011/09/28
  2838 + institution "institution" bibinfo.output.check
  2839 + address empty.or.unknown
  2840 + { }
  2841 + { "\bibinfo{address}{" address "}" * * output }
  2842 + if$
  2843 + new.sentence
  2844 + format.named.pages output
  2845 + % ACM omits year at end in transactions style
  2846 + % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
  2847 + fin.block
  2848 + output.issue.doi.coden.isxn.lccn.url.eprint.note
  2849 + fin.entry
  2850 +}
  2851 +
  2852 +FUNCTION { unpublished }
  2853 +{
  2854 + output.bibitem
  2855 + format.authors
  2856 + "author" output.check
  2857 + author format.key output % added
  2858 + output.year.check % added
  2859 + new.block
  2860 + format.title "title" output.check
  2861 + fin.sentence
  2862 + output.day.month.year % UTAH
  2863 + calc.format.page.count output
  2864 + fin.block
  2865 + output.issue.doi.coden.isxn.lccn.url.eprint.note.check
  2866 + fin.entry
  2867 +}
  2868 +
  2869 +FUNCTION { default.type } { misc }
  2870 +
  2871 +%%% ACM journal-style month definitions: full name if 1--5 letters, else
  2872 +%%% abbreviation of 3 or 4 characters and a dot
  2873 +
  2874 +MACRO {jan} {"Jan."}
  2875 +
  2876 +MACRO {feb} {"Feb."}
  2877 +
  2878 +MACRO {mar} {"March"}
  2879 +
  2880 +MACRO {apr} {"April"}
  2881 +
  2882 +MACRO {may} {"May"}
  2883 +
  2884 +MACRO {jun} {"June"}
  2885 +
  2886 +MACRO {jul} {"July"}
  2887 +
  2888 +MACRO {aug} {"Aug."}
  2889 +
  2890 +MACRO {sep} {"Sept."}
  2891 +
  2892 +MACRO {oct} {"Oct."}
  2893 +
  2894 +MACRO {nov} {"Nov."}
  2895 +
  2896 +MACRO {dec} {"Dec."}
  2897 +
  2898 +
  2899 +
  2900 +READ
  2901 +
  2902 +FUNCTION { sortify }
  2903 +{
  2904 + purify$
  2905 + "l" change.case$
  2906 +}
  2907 +
  2908 +FUNCTION { chop.word }
  2909 +{
  2910 + 's :=
  2911 + 'len :=
  2912 + s #1 len substring$ =
  2913 + { s len #1 + global.max$ substring$ }
  2914 + 's
  2915 + if$
  2916 +}
  2917 +
  2918 +FUNCTION { sort.format.names }
  2919 +{
  2920 + 's :=
  2921 + #1 'nameptr :=
  2922 + ""
  2923 + s num.names$ 'numnames :=
  2924 + numnames 'namesleft :=
  2925 + { namesleft #0 > }
  2926 + { nameptr #1 >
  2927 + { " " * }
  2928 + 'skip$
  2929 + if$
  2930 + s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
  2931 + nameptr numnames = t "others" = and
  2932 + { " et~al" * }
  2933 + { t sortify * }
  2934 + if$
  2935 + nameptr #1 + 'nameptr :=
  2936 + namesleft #1 - 'namesleft :=
  2937 + }
  2938 + while$
  2939 +}
  2940 +
  2941 +FUNCTION { sort.format.title }
  2942 +{
  2943 + 't :=
  2944 + "A " #2
  2945 + "An " #3
  2946 + "The " #4 t chop.word
  2947 + chop.word
  2948 + chop.word
  2949 + sortify
  2950 + #1 global.max$ substring$
  2951 +}
  2952 +
  2953 +FUNCTION { author.sort }
  2954 +{
  2955 + author empty.or.unknown
  2956 + { key empty.or.unknown
  2957 + { "to sort, need author or key in " cite$ * warning$
  2958 + "" }
  2959 + { key sortify }
  2960 + if$
  2961 + }
  2962 + { author sort.format.names }
  2963 + if$
  2964 +}
  2965 +
  2966 +FUNCTION { author.editor.sort }
  2967 +{
  2968 + author empty.or.unknown
  2969 + {
  2970 + editor empty.or.unknown
  2971 + {
  2972 + key empty.or.unknown
  2973 + { "to sort, need author, editor, or key in " cite$ * warning$
  2974 + ""
  2975 + }
  2976 + { key sortify }
  2977 + if$
  2978 + }
  2979 + { editor sort.format.names }
  2980 + if$
  2981 + }
  2982 + { author sort.format.names }
  2983 + if$
  2984 +}
  2985 +
  2986 +FUNCTION { editor.organization.sort }
  2987 +{
  2988 + % added - GNP. Stack editor or organization for sorting (from alpha.bst).
  2989 + % Unlike alpha.bst, we need entire names, not abbreviations
  2990 +
  2991 + editor empty.or.unknown
  2992 + { organization empty.or.unknown
  2993 + { key empty.or.unknown
  2994 + { "to sort, need editor, organization, or key in " cite$ * warning$
  2995 + ""
  2996 + }
  2997 + { key sortify }
  2998 + if$
  2999 + }
  3000 + { organization sortify }
  3001 + if$
  3002 + }
  3003 + { editor sort.format.names }
  3004 + if$
  3005 +}
  3006 +
  3007 +FUNCTION { author.editor.organization.sort }
  3008 +{
  3009 + % added - GNP. Stack author or organization for sorting (from alpha.bst).
  3010 + % Unlike alpha.bst, we need entire names, not abbreviations
  3011 +
  3012 + author empty.or.unknown
  3013 + {
  3014 + editor empty.or.unknown
  3015 + { organization empty.or.unknown
  3016 + { key empty.or.unknown
  3017 + { "to sort, need author, editor, or key in " cite$ * warning$
  3018 + ""
  3019 + }
  3020 + { key sortify }
  3021 + if$
  3022 + }
  3023 + { organization sortify }
  3024 + if$
  3025 + }
  3026 + { editor sort.format.names }
  3027 + if$
  3028 + }
  3029 + { author sort.format.names }
  3030 + if$
  3031 +}
  3032 +
  3033 +FUNCTION { presort }
  3034 +{
  3035 + % Presort creates the bibentry's label via a call to calc.label, and then
  3036 + % sorts the entries based on entry type. Chicago.bst adds support for
  3037 + % including organizations as the sort key; the following is stolen from
  3038 + % alpha.bst.
  3039 +
  3040 + calc.label
  3041 + basic.label.year
  3042 + swap$
  3043 + " "
  3044 + swap$
  3045 + * *
  3046 + " "
  3047 + *
  3048 + sortify
  3049 + year field.or.null purify$ #-1 #4 substring$ * % add year
  3050 + " "
  3051 + *
  3052 + type$ "book" =
  3053 + type$ "inbook" =
  3054 + or
  3055 + type$ "article" =
  3056 + or
  3057 + 'author.editor.sort
  3058 + { type$ "proceedings" =
  3059 + type$ "periodical" =
  3060 + or
  3061 + 'editor.organization.sort
  3062 + { type$ "manual" =
  3063 + 'author.editor.organization.sort
  3064 + 'author.sort
  3065 + if$
  3066 + }
  3067 + if$
  3068 + }
  3069 + if$
  3070 + #1 entry.max$ substring$ % added for newapa
  3071 + 'sort.label := % added for newapa
  3072 + sort.label % added for newapa
  3073 + *
  3074 + " "
  3075 + *
  3076 + title field.or.null
  3077 + sort.format.title
  3078 + *
  3079 + #1 entry.max$ substring$
  3080 + 'sort.key$ :=
  3081 +}
  3082 +
  3083 +
  3084 +
  3085 +ITERATE { presort }
  3086 +
  3087 +SORT % by label, year, author/editor, title
  3088 +
  3089 +FUNCTION { initialize.extra.label.stuff }
  3090 +{ #0 int.to.chr$ 'last.label :=
  3091 + "" 'next.extra :=
  3092 + #0 'last.extra.num :=
  3093 +}
  3094 +
  3095 +FUNCTION { forward.pass }
  3096 +{
  3097 + % Pass through all entries, comparing current entry to last one.
  3098 + % Need to concatenate year to the stack (done by calc.label) to determine
  3099 + % if two entries are the same (see presort)
  3100 +
  3101 + last.label
  3102 + % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
  3103 + % NEW:
  3104 + calc.basic.label year field.or.null purify$ #-1 #4 substring$ * % add year
  3105 + #1 entry.max$ substring$ = % are they equal?
  3106 + { last.extra.num #1 + 'last.extra.num :=
  3107 + last.extra.num int.to.chr$ 'extra.label :=
  3108 + }
  3109 + { "a" chr.to.int$ 'last.extra.num :=
  3110 + "" 'extra.label :=
  3111 + % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
  3112 + % NEW:
  3113 + calc.basic.label year field.or.null purify$ #-1 #4 substring$ * % add year
  3114 + #1 entry.max$ substring$ 'last.label := % assign to last.label
  3115 + }
  3116 + if$
  3117 +}
  3118 +
  3119 +FUNCTION { reverse.pass }
  3120 +{
  3121 + next.extra "b" =
  3122 + { "a" 'extra.label := }
  3123 + 'skip$
  3124 + if$
  3125 + label.year extra.label * 'sort.year :=
  3126 + extra.label 'next.extra :=
  3127 +}
  3128 +
  3129 +EXECUTE {initialize.extra.label.stuff}
  3130 +
  3131 +ITERATE {forward.pass}
  3132 +
  3133 +REVERSE {reverse.pass}
  3134 +
  3135 +FUNCTION { bib.sort.order }
  3136 +{
  3137 + sort.label
  3138 + " "
  3139 + *
  3140 + year field.or.null sortify
  3141 + *
  3142 + " "
  3143 + *
  3144 + title field.or.null
  3145 + sort.format.title
  3146 + *
  3147 + #1 entry.max$ substring$
  3148 + 'sort.key$ :=
  3149 +}
  3150 +
  3151 +ITERATE { bib.sort.order }
  3152 +
  3153 +SORT % by sort.label, year, title --- giving final bib. order.
  3154 +
  3155 +FUNCTION { begin.bib }
  3156 +{
  3157 + %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
  3158 + %% Set to #1 to show both 10-digit and 13-digit ISBNs.
  3159 + #1 'show-isbn-10-and-13 :=
  3160 +
  3161 + "%%% -*-BibTeX-*-" writeln
  3162 + "%%% Do NOT edit. File created by BibTeX with style" writeln
  3163 + "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
  3164 + "" writeln
  3165 +
  3166 + preamble$ empty.or.unknown
  3167 + 'skip$
  3168 + { preamble$ writeln }
  3169 + if$
  3170 + "\begin{thebibliography}{00}" writeln
  3171 + "" writeln
  3172 + "%%% ====================================================================" writeln
  3173 + "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
  3174 + "%%% customized versions of any of these macros before the \bibliography" writeln
  3175 + "%%% command. Each of them MUST provide its own final punctuation," writeln
  3176 + "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
  3177 + "%%% do not use final punctuation, in order to avoid confusing it with" writeln
  3178 + "%%% the Web address." writeln
  3179 + "%%%" writeln
  3180 + "%%% To suppress output of a particular field, define its macro to expand" writeln
  3181 + "%%% to an empty string, or better, \unskip, like this:" writeln
  3182 + "%%%" writeln
  3183 + "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
  3184 + "%%%" writeln
  3185 + "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
  3186 + "%%%" writeln
  3187 + "%%% ====================================================================" writeln
  3188 + "" writeln
  3189 +
  3190 + %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
  3191 + %% macro wrappers expand to \unskip, discarding their values and unwanted
  3192 + %% space.
  3193 + %%
  3194 + %% For other publications, prior definitions like these may be useful:
  3195 + %%
  3196 + %% Plain TeX:
  3197 + %% \def \showCODEN #1{CODEN #1.}
  3198 + %% \def \showISSN #1{ISSN #1.}
  3199 + %% \def \showLCCN #1{LCCN #1.}
  3200 + %%
  3201 + %% LaTeX:
  3202 + %% \newcommand{\showCODEN}[1]{CODEN #1.}
  3203 + %% \newcommand{\showISSN}[1]#1{ISSN #1.}
  3204 + %% \newcommand{\showLCCN}[1]{LCCN #1.}
  3205 +
  3206 + "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
  3207 + "\ifx \showDOI \undefined \def \showDOI #1{#1}\fi" writeln
  3208 + % ACM styles omit ISBNs, but they can be included by suitable definitions of
  3209 + % \showISBNx and \showISBNxiii before the .bbl file is read
  3210 + "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
  3211 + "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
  3212 + "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
  3213 + "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
  3214 + "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
  3215 + "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
  3216 + "\ifx \showURL \undefined \def \showURL {\relax} \fi" writeln
  3217 + "% The following commands are used for tagged output and should be " writeln
  3218 + "% invisible to TeX" writeln
  3219 + "\providecommand\bibfield[2]{#2}" writeln
  3220 + "\providecommand\bibinfo[2]{#2}" writeln
  3221 + "\providecommand\natexlab[1]{#1}" writeln
  3222 + "\providecommand\showeprint[2][]{arXiv:#2}" writeln
  3223 +}
  3224 +
  3225 +EXECUTE {begin.bib}
  3226 +
  3227 +EXECUTE {init.state.consts}
  3228 +
  3229 +ITERATE {call.type$}
  3230 +
  3231 +FUNCTION { end.bib }
  3232 +{
  3233 + newline$
  3234 + "\end{thebibliography}"
  3235 + writeln
  3236 +}
  3237 +
  3238 +EXECUTE {end.bib}
... ...
icse2018/bibliography.bib 0 → 100644
... ... @@ -0,0 +1,74 @@
  1 +@ARTICLE{bowman:reasoning,
  2 + author = {Bowman, Mic and Debray, Saumya K. and Peterson, Larry L.},
  3 + title = {Reasoning About Naming Systems},
  4 + journal = {ACM Trans. Program. Lang. Syst.},
  5 + volume = {15},
  6 + number = {5},
  7 + pages = {795-825},
  8 + month = {November},
  9 + year = {1993},
  10 + doi = {10.1145/161468.161471},
  11 +}
  12 +
  13 +@ARTICLE{braams:babel,
  14 + author = {Braams, Johannes},
  15 + title = {Babel, a Multilingual Style-Option System for Use with LaTeX's Standard Document Styles},
  16 + journal = {TUGboat},
  17 + volume = {12},
  18 + number = {2},
  19 + pages = {291-301},
  20 + month = {June},
  21 + year = {1991},
  22 +}
  23 +
  24 +@INPROCEEDINGS{clark:pct,
  25 + AUTHOR = "Malcolm Clark",
  26 + TITLE = "Post Congress Tristesse",
  27 + BOOKTITLE = "TeX90 Conference Proceedings",
  28 + PAGES = "84-89",
  29 + ORGANIZATION = "TeX Users Group",
  30 + MONTH = "March",
  31 + YEAR = {1991} }
  32 +
  33 +@ARTICLE{herlihy:methodology,
  34 + author = {Herlihy, Maurice},
  35 + title = {A Methodology for Implementing Highly Concurrent Data Objects},
  36 + journal = {ACM Trans. Program. Lang. Syst.},
  37 + volume = {15},
  38 + number = {5},
  39 + pages = {745-770},
  40 + month = {November},
  41 + year = {1993},
  42 + doi = {10.1145/161468.161469},
  43 +}
  44 +
  45 +@BOOK{Lamport:LaTeX,
  46 + AUTHOR = "Leslie Lamport",
  47 + TITLE = "LaTeX User's Guide and Document Reference Manual",
  48 + PUBLISHER = "Addison-Wesley Publishing Company",
  49 + ADDRESS = "Reading, Massachusetts",
  50 + YEAR = "1986" }
  51 +
  52 +@BOOK{salas:calculus,
  53 + AUTHOR = "S.L. Salas and Einar Hille",
  54 + TITLE = "Calculus: One and Several Variable",
  55 + PUBLISHER = "John Wiley and Sons",
  56 + ADDRESS = "New York",
  57 + YEAR = "1978" }
  58 +
  59 +@MANUAL{Fear05,
  60 + title = {Publication quality tables in {\LaTeX}},
  61 + author = {Simon Fear},
  62 + month = {April},
  63 + year = 2005,
  64 + note = {\url{http://www.ctan.org/pkg/booktabs}}
  65 +}
  66 +
  67 +@Manual{Amsthm15,
  68 + title = {Using the amsthm Package},
  69 + organization = {American Mathematical Society},
  70 + month = {April},
  71 + year = 2015,
  72 + note = {\url{http://www.ctan.org/pkg/amsthm}}
  73 +}
  74 +
... ...
icse2018/content/.keep 0 → 100644
icse2018/content/00-abstract.tex 0 → 100644
... ... @@ -0,0 +1,43 @@
  1 +\begin{abstract}
  2 +This paper provides a sample of a \LaTeX\ document which conforms,
  3 +somewhat loosely, to the formatting guidelines for
  4 +ACM SIG Proceedings.\footnote{This is an abstract footnote}
  5 +\end{abstract}
  6 +
  7 +%
  8 +% The code below should be generated by the tool at
  9 +% http://dl.acm.org/ccs.cfm
  10 +% Please copy and paste the code instead of the example below.
  11 +%
  12 +%\begin{CCSXML}
  13 +%<ccs2012>
  14 +% <concept>
  15 +% <concept_id>10010520.10010553.10010562</concept_id>
  16 +% <concept_desc>Computer systems organization~Embedded systems</concept_desc>
  17 +% <concept_significance>500</concept_significance>
  18 +% </concept>
  19 +% <concept>
  20 +% <concept_id>10010520.10010575.10010755</concept_id>
  21 +% <concept_desc>Computer systems organization~Redundancy</concept_desc>
  22 +% <concept_significance>300</concept_significance>
  23 +% </concept>
  24 +% <concept>
  25 +% <concept_id>10010520.10010553.10010554</concept_id>
  26 +% <concept_desc>Computer systems organization~Robotics</concept_desc>
  27 +% <concept_significance>100</concept_significance>
  28 +% </concept>
  29 +% <concept>
  30 +% <concept_id>10003033.10003083.10003095</concept_id>
  31 +% <concept_desc>Networks~Network reliability</concept_desc>
  32 +% <concept_significance>100</concept_significance>
  33 +% </concept>
  34 +%</ccs2012>
  35 +%\end{CCSXML}
  36 +%
  37 +%\ccsdesc[500]{Computer systems organization~Embedded systems}
  38 +%\ccsdesc[300]{Computer systems organization~Redundancy}
  39 +%\ccsdesc{Computer systems organization~Robotics}
  40 +%\ccsdesc[100]{Networks~Network reliability}
  41 +
  42 +
  43 +\keywords{ACM proceedings, \LaTeX, text tagging}
... ...
icse2018/content/01-introduction.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Introduction}
... ...
icse2018/content/02-context.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Problem Context}
0 2 \ No newline at end of file
... ...
icse2018/content/03-materials.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Materials}
... ...
icse2018/content/04-methods.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Methods}
... ...
icse2018/content/05-results.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Results}
... ...
icse2018/content/06-discussion.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Discussion}
... ...
icse2018/content/07-conclusions.tex 0 → 100644
... ... @@ -0,0 +1 @@
  1 +\section{Conclusions}
... ...
icse2018/content/08-acknowledgements.tex 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +\begin{acks}
  2 + The authors would like to thank Dr. Yuhua Li for providing the
  3 + matlab code of the \textit{BEPS} method.
  4 +
  5 + The authors would also like to thank the anonymous referees for
  6 + their valuable comments and helpful suggestions. The work is
  7 + supported by the \grantsponsor{GS501100001809}{National Natural
  8 + Science Foundation of
  9 + China}{http://dx.doi.org/10.13039/501100001809} under Grant
  10 + No.:~\grantnum{GS501100001809}{61273304}
  11 + and~\grantnum[http://www.nnsf.cn/youngscientsts]{GS501100001809}{Young
  12 + Scientsts' Support Program}.
  13 +
  14 +\end{acks}
... ...
icse2018/figures/.keep 0 → 100644
icse2018/main.tex 0 → 100644
... ... @@ -0,0 +1,152 @@
  1 +\documentclass[sigconf, authordraft]{acmart}
  2 +
  3 +\usepackage{booktabs} % For formal tables
  4 +\usepackage[utf8]{inputenc}
  5 +
  6 +
  7 +% Copyright
  8 +%\setcopyright{none}
  9 +%\setcopyright{acmcopyright}
  10 +%\setcopyright{acmlicensed}
  11 +\setcopyright{rightsretained}
  12 +%\setcopyright{usgov}
  13 +%\setcopyright{usgovmixed}
  14 +%\setcopyright{cagov}
  15 +%\setcopyright{cagovmixed}
  16 +
  17 +
  18 +% DOI
  19 +%\acmDOI{10.475/123_4}
  20 +
  21 +% ISBN
  22 +%\acmISBN{123-4567-24-567/08/06}
  23 +
  24 +%Conference
  25 +%\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
  26 +% Paso, Texas USA}
  27 +%\acmYear{1997}
  28 +%\copyrightyear{2016}
  29 +
  30 +%\acmPrice{15.00}
  31 +
  32 +%\acmSubmissionID{123-A12-B3}
  33 +
  34 +\begin{document}
  35 +\title{SIG Proceedings Paper in LaTeX Format}
  36 +%\titlenote{Produces the permission block, and
  37 +% copyright information}
  38 +%\subtitle{Extended Abstract}
  39 +%\subtitlenote{The full version of the author's guide is available as
  40 +% \texttt{acmart.pdf} document}
  41 +
  42 +
  43 +\author{Paulo Meirelles}
  44 +\affiliation{%
  45 + \institution{Faculty Gama (FGA) \\ University of Bras\'ilia}
  46 + \streetaddress{St. Leste Projeção A - Gama Leste}
  47 + \city{Gama}
  48 + \state{Bras\'ilia}
  49 + \country{Brazil}
  50 + \postcode{72444-240}
  51 +}
  52 +\email{paulormm@unb.br}
  53 +
  54 +\author{Antonio Terceiro}
  55 +\affiliation{%
  56 + \institution{Colivre}
  57 + \streetaddress{Rua Marechal Floriano, nº 28, sala 301}
  58 + \city{Salvador}
  59 + \state{Bahia}
  60 + \country{Brazil}
  61 + \postcode{40110-010}
  62 +}
  63 +\email{terceiro@colivre.coop.br}
  64 +
  65 +\author{Melissa Wen}
  66 +\affiliation{%
  67 + \institution{Colivre}
  68 + \streetaddress{Rua Marechal Floriano, nº 28, sala 301}
  69 + \city{Salvador}
  70 + \state{Bahia}
  71 + \country{Brazil}
  72 + \postcode{40110-010}
  73 +}
  74 +\email{melissa@colivre.coop.br}
  75 +
  76 +\author{Rodrigo Siqueira}
  77 +\affiliation{%
  78 + \institution{FLOSS Competence Center \\ University of S\~ao Paulo}
  79 + \streetaddress{Rua do Matão, 1010}
  80 + \city{S\~ao Paulo}
  81 + \state{S\~ao Paulo}
  82 + \country{Brazil}
  83 + \postcode{05508-090}
  84 +}
  85 +\email{siqueira@ime.usp.br}
  86 +
  87 +\author{Arthur del Esposte}
  88 +\affiliation{%
  89 + \institution{FLOSS Competence Center \\ University of S\~ao Paulo}
  90 + \streetaddress{Rua do Matão, 1010}
  91 + \city{S\~ao Paulo}
  92 + \state{S\~ao Paulo}
  93 + \country{Brazil}
  94 + \postcode{05508-090}
  95 +}
  96 +\email{esposte@ime.usp.br}
  97 +
  98 +\author{Lucas Kanashiro}
  99 +\affiliation{%
  100 + \institution{FLOSS Competence Center \\ University of S\~ao Paulo}
  101 + \streetaddress{Rua do Matão, 1010}
  102 + \city{S\~ao Paulo}
  103 + \state{S\~ao Paulo}
  104 + \country{Brazil}
  105 + \postcode{05508-090}
  106 +}
  107 +\email{lkd@ime.usp.br}
  108 +
  109 +\author{Diego Camarinha}
  110 +\affiliation{%
  111 + \institution{FLOSS Competence Center \\ University of S\~ao Paulo}
  112 + \streetaddress{Rua do Matão, 1010}
  113 + \city{S\~ao Paulo}
  114 + \state{S\~ao Paulo}
  115 + \country{Brazil}
  116 + \postcode{05508-090}
  117 +}
  118 +\email{diegoamc@ime.usp.br}
  119 +
  120 +\author{Rafael Manzo}
  121 +\affiliation{%
  122 + \institution{FLOSS Competence Center \\ University of S\~ao Paulo}
  123 + \streetaddress{Rua do Matão, 1010}
  124 + \city{S\~ao Paulo}
  125 + \state{S\~ao Paulo}
  126 + \country{Brazil}
  127 + \postcode{05508-090}
  128 +}
  129 +\email{manzo@ime.usp.br}
  130 +
  131 +% The default list of authors is too long for headers}
  132 +\renewcommand{\shortauthors}{P. Meirelles et al.}
  133 +
  134 +
  135 +\input{content/00-abstract}
  136 +
  137 +
  138 +\maketitle
  139 +
  140 +\input{content/01-introduction}
  141 +\input{content/02-context}
  142 +\input{content/03-materials}
  143 +\input{content/04-methods}
  144 +\input{content/05-results}
  145 +\input{content/06-discussion}
  146 +\input{content/07-conclusions}
  147 +\input{content/08-acknowledgements}
  148 +
  149 +\bibliographystyle{ACM-Reference-Format}
  150 +\bibliography{bibliography}
  151 +
  152 +\end{document}
... ...