Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Importing the paper skeleton

  • Loading branch information...
commit 127e6495226b8c9c5f2efef86ffd600c6684d416 1 parent 08b4e02
@dave-andersen dave-andersen authored
View
11 Makefile
@@ -0,0 +1,11 @@
+TARGET=paper
+all: pdf
+
+pdf:
+ GS_OPTIONS=-dPDFSETTINGS=/prepress rubber --pdf -Wrefs -Wmisc paper
+
+clean:
+ rm -f *.aux *.log *.out *.bbl *.blg *~ *.bak $(TARGET).ps $(TARGET).pdf
+
+ps: pdf
+ GS_OPTIONS=-dPDFSETTINGS=/prepress pdftops -level1 $(TARGET).pdf
View
23 README
@@ -0,0 +1,23 @@
+The supplied Makefile uses a LaTeX build system called rubber,
+which _greatly_ simplifies the build process. The hard way (multiple
+pdflatex/bibtex incantations) will also work. rubber is available at
+
+ http://www.pps.jussieu.fr/~beffara/soft/rubber/
+
+
+To build this paper, you'll want to symlink in the "ref.bib" and "rfc.bib"
+files from dave's biblio repository. You can check those out of the
+subversion repository at
+
+ https://moo.cmcl.cs.cmu.edu/svn/biblio/
+
+A note: The given Makefile tries to ensure that all fonts are embedded.
+You can double-check by running 'pdffonts' on the final paper.pdf or an
+individual figure.
+
+#
+# The skeleton for this paper comes from
+# https://moo.cmcl.cs.cmu.edu/svn/paper_skel
+# When editing paper_skel, please ensure that your changes are
+# clean and apply to future papers in general, not just one
+# specific paper.
View
4 README.md
@@ -1,4 +0,0 @@
-paper_skel
-==========
-
-A LaTeX paper skeleton for CS systems conference formats
View
1,423 abbrvnat_noaddr.bst
@@ -0,0 +1,1423 @@
+%% File: `abbrvnat.bst'
+%% A modification of `abbrv.bst' for use with natbib package
+%%
+%% Copyright 1993-2005 Patrick W Daly
+%% Max-Planck-Institut f\"ur Sonnensystemforschung
+%% Max-Planck-Str. 2
+%% D-37191 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@mps.mpg.de
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN
+%% archives in directory macros/latex/base/lppl.txt; either
+%% version 1 of the License, or any later version.
+%%
+ % Version and source file information:
+ % \ProvidesFile{natbst.mbs}[2005/01/07 1.8 (PWD)]
+ %
+ % BibTeX `plainnat' family
+ % version 0.99b for BibTeX versions 0.99a or later,
+ % for LaTeX versions 2.09 and 2e.
+ %
+ % For use with the `natbib.sty' package; emulates the corresponding
+ % member of the `plain' family, but with author-year citations.
+ %
+ % With version 6.0 of `natbib.sty', it may also be used for numerical
+ % citations, while retaining the commands \citeauthor, \citefullauthor,
+ % and \citeyear to print the corresponding information.
+ %
+ % For version 7.0 of `natbib.sty', the KEY field replaces missing
+ % authors/editors, and the date is left blank in \bibitem.
+ %
+ % Includes field EID for the sequence/citation number of electronic journals
+ % which is used instead of page numbers.
+ %
+ % Includes fields ISBN and ISSN.
+ %
+ % Includes field URL for Internet addresses.
+ %
+ % Includes field DOI for Digital Object Idenfifiers.
+ %
+ % Works best with the url.sty package of Donald Arseneau.
+ %
+ % Works with identical authors and year are further sorted by
+ % citation key, to preserve any natural sequence.
+ %
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ eid
+ edition
+ editor
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", editors" * }
+ { ", editor" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.isbn}
+{ isbn empty$
+ { "" }
+ { new.block "ISBN " isbn * }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn empty$
+ { "" }
+ { new.block "ISSN " issn * }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { new.block "URL \url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { month
+ " " * swap$ *
+ }
+ if$
+ extra.label *
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "volume" volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "number" }
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edition" * }
+ { edition "t" change.case$ " edition" * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pages" pages n.dashify tie.or.space.connect }
+ { "page" pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.eid}
+{ eid empty$
+ { "" }
+ { "art." eid tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ":\penalty0 " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.eid}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "\penalty0 (" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ eid empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.eid }
+ { ":\penalty0 " * eid * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "chapter" }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " booktitle emphasize * }
+ { "In " format.editors * ", " * booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Technical Report" }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In \emph{" journal * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \citep{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "\emph{" * series * "}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ 'skip$
+ if$
+ ", \citet{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In \emph{" booktitle * "}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ }
+ { "In " }
+ if$
+ " \citet{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "journal" output.check
+ eid empty$
+ { format.vol.num.pages output }
+ { format.vol.num.eid output }
+ if$
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ eid empty$
+ { format.pages output }
+ { format.eid output }
+ if$
+ }
+ if$
+ format.issn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.date output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.date output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.date output
+ format.issn output
+ format.url output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ new.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address output
+ format.date "year" output.check
+ new.sentence
+ organization output
+ publisher output
+ format.isbn output
+ format.doi output
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ format.url output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ new.block
+ format.title "title" output.check
+ format.url output
+ new.block
+ note "note" output.check
+ format.date output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+
+MACRO {ibmsj} {"IBM Syst.~J."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+
+MACRO {scp} {"Sci. Comput. Programming"}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Gr."}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+
+MACRO {tcs} {"Theoretical Comput. Sci."}
+
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { numnames #2 > nameptr #2 = and
+ { "zz" * year field.or.null * " " * }
+ 'skip$
+ if$
+ t sortify *
+ }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ cite$
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
View
5 abstract.tex
@@ -0,0 +1,5 @@
+\begin{abstract}
+
+This paper is very abstract
+
+\end{abstract}
View
402 bibtex.py
@@ -0,0 +1,402 @@
+# This file is part of Rubber and thus covered by the GPL
+# (c) Emmanuel Beffara, 2002--2006
+"""
+BibTeX support for Rubber
+
+This module is a special one: it is triggered by the macros \\bibliography and
+\\bibliographystyle and not as a package, so the main system knows about it.
+The module provides the following commands:
+
+ path <dir> = adds <dir> to the search path for databases
+ stylepath <dir> = adds <dir> to the search path for styles
+"""
+
+# Stop python 2.2 from calling "yield" statements syntax errors.
+from __future__ import generators
+
+import os, sys
+from os.path import *
+import re, string
+
+from rubber import _
+from rubber import *
+
+re_bibdata = re.compile(r"\\bibdata{(?P<data>.*)}")
+re_citation = re.compile(r"\\citation{(?P<cite>.*)}")
+re_undef = re.compile("LaTeX Warning: Citation `(?P<cite>.*)' .*undefined.*")
+
+# The regular expression that identifies errors in BibTeX log files is heavily
+# heuristic. The remark is that all error messages end with a text of the form
+# "---line xxx of file yyy" or "---while reading file zzz". The actual error
+# is either the text before the dashes or the text on the previous line.
+
+re_error = re.compile(
+ "---(line (?P<line>[0-9]+) of|while reading) file (?P<file>.*)")
+
+class Module (rubber.rules.latex.Module):
+ """
+ This class is the module that handles BibTeX in Rubber. It provides the
+ funcionality required when compiling documents as well as material to
+ parse blg files for diagnostics.
+ """
+ def __init__ (self, doc, dict, base=None):
+ """
+ Initialize the state of the module and register appropriate functions
+ in the main process. The extra arugment 'base' can be used to specify
+ the base name of the aux file, it defaults to the document name.
+ """
+ self.doc = doc
+ self.env = doc.env
+
+ if base is None:
+ self.base = doc.src_base
+ else:
+ self.base = base
+
+ cwd = self.env.vars["cwd"]
+ self.bib_path = [cwd]
+ if doc.src_path != cwd:
+ self.bib_path.append(doc.src_path)
+ self.bst_path = [cwd]
+
+ self.undef_cites = None
+ self.used_cites = None
+ self.style = None
+ self.set_style("plain")
+ self.db = {}
+ self.sorted = 1
+ self.run_needed = 0
+
+ #
+ # The following method are used to specify the various datafiles that
+ # BibTeX uses.
+ #
+
+ def do_path (self, path):
+ self.bib_path.append(self.doc.abspath(path))
+
+ def do_stylepath (self, path):
+ self.bst_path.append(self.doc.abspath(path))
+
+ def do_sorted (self, mode):
+ self.sorted = mode in ("true", "yes", "1")
+
+ def add_db (self, name):
+ """
+ Register a bibliography database file.
+ """
+ for dir in self.bib_path:
+ bib = join(dir, name + ".bib")
+ if exists(bib):
+ self.db[name] = bib
+ self.doc.sources[bib] = DependLeaf(self.env, bib)
+ self.doc.not_included.append(bib)
+ return
+
+ def set_style (self, style):
+ """
+ Define the bibliography style used. This method is called when
+ \\bibliographystyle is found. If the style file is found in the
+ current directory, it is considered a dependency.
+ """
+ if self.style:
+ old_bst = self.style + ".bst"
+ if exists(old_bst) and self.doc.sources.has_key(old_bst):
+ del self.doc.sources[old_bst]
+
+ self.style = style
+ for dir in self.bst_path:
+ new_bst = join(dir, style + ".bst")
+ if exists(new_bst):
+ self.bst_file = new_bst
+ self.doc.sources[new_bst] = DependLeaf(self.env, new_bst)
+ return
+ self.bst_file = None
+
+ #
+ # The following methods are responsible of detecting when running BibTeX
+ # is needed and actually running it.
+ #
+
+ def pre_compile (self):
+ """
+ Run BibTeX if needed before the first compilation. This function also
+ checks if BibTeX has been run by someone else, and in this case it
+ tells the system that it should recompile the document.
+ """
+ if exists(self.doc.src_base + ".aux"):
+ self.used_cites, self.prev_dbs = self.parse_aux()
+ else:
+ self.prev_dbs = None
+ if self.doc.log.lines:
+ self.undef_cites = self.list_undefs()
+
+ self.run_needed = self.first_run_needed()
+ if self.doc.must_compile:
+ # If a LaTeX compilation is going to happen, it is not necessary
+ # to bother with BibTeX yet.
+ return 0
+ if self.run_needed:
+ return self.run()
+
+ bbl = self.base + ".bbl"
+ if exists(bbl):
+ if getmtime(bbl) > getmtime(self.doc.src_base + ".log"):
+ self.doc.must_compile = 1
+ return 0
+
+ def first_run_needed (self):
+ """
+ The condition is only on the database files' modification dates, but
+ it would be more clever to check if the results have changed.
+ BibTeXing is also needed when the last run of BibTeX failed, and in
+ the very particular case when the style has changed since last
+ compilation.
+ """
+ if not exists(self.base + ".aux"):
+ return 0
+ if not exists(self.base + ".blg"):
+ return 1
+
+ dtime = getmtime(self.base + ".blg")
+ for db in self.db.values():
+ if getmtime(db) > dtime:
+ msg.log(_("bibliography database %s was modified") % db, pkg="bibtex")
+ return 1
+
+ blg = open(self.base + ".blg")
+ for line in blg.readlines():
+ if re_error.search(line):
+ blg.close()
+ msg.log(_("last BibTeXing failed"), pkg="bibtex")
+ return 1
+ blg.close()
+
+ if self.style_changed():
+ return 1
+ if self.bst_file and getmtime(self.bst_file) > dtime:
+ msg.log(_("the bibliography style file was modified"), pkg="bibtex")
+ return 1
+ return 0
+
+ def parse_aux (self):
+ """
+ Parse the aux files and return the list of all defined citations and
+ the list of databases used.
+ """
+ last = 0
+ cites = {}
+ dbs = []
+ for auxname in self.doc.aux_md5.keys():
+ aux = open(auxname)
+ for line in aux.readlines():
+ match = re_citation.match(line)
+ if match:
+ cite = match.group("cite")
+ if not cites.has_key(cite):
+ last = last + 1
+ cites[cite] = last
+ continue
+ match = re_bibdata.match(line)
+ if match:
+ dbs.extend(match.group("data").split(","))
+ aux.close()
+ dbs.sort()
+
+ if self.sorted:
+ list = cites.keys()
+ list.sort()
+ return list, dbs
+ else:
+ list = [(n,c) for (c,n) in cites.items()]
+ list.sort()
+ return [c for (n,c) in list], dbs
+
+ def list_undefs (self):
+ """
+ Return the list of all undefined citations.
+ """
+ cites = {}
+ for line in self.doc.log.lines:
+ match = re_undef.match(line)
+ if match:
+ cites[match.group("cite")] = None
+ list = cites.keys()
+ list.sort()
+ return list
+
+ def post_compile (self):
+ """
+ This method runs BibTeX if needed to solve undefined citations. If it
+ was run, then force a new LaTeX compilation.
+ """
+ if not self.bibtex_needed():
+ msg.log(_("no BibTeXing needed"), pkg="bibtex")
+ return 0
+ return self.run()
+
+ def run (self):
+ """
+ This method actually runs BibTeX with the appropriate environment
+ variables set.
+ """
+ msg.progress(_("running BibTeX on %s") % self.base)
+ doc = {}
+ if len(self.bib_path) != 1:
+ doc["BIBINPUTS"] = string.join(self.bib_path +
+ [os.getenv("BIBINPUTS", "")], ":")
+ if len(self.bst_path) != 1:
+ doc["BSTINPUTS"] = string.join(self.bst_path +
+ [os.getenv("BSTINPUTS", "")], ":")
+ if self.env.execute(["bibtex", "--min-crossrefs=100", self.base], doc):
+ msg.info(_("There were errors making the bibliography."))
+ return 1
+ self.run_needed = 0
+ self.doc.must_compile = 1
+ return 0
+
+ def bibtex_needed (self):
+ """
+ Return true if BibTeX must be run.
+ """
+ if self.run_needed:
+ return 1
+ msg.log(_("checking if BibTeX must be run..."), pkg="bibtex")
+
+ new, dbs = self.parse_aux()
+
+ # If there was a list of used citations, we check if it has
+ # changed. If it has, we have to rerun.
+
+ if self.prev_dbs is not None and self.prev_dbs != dbs:
+ msg.log(_("the set of databases changed"), pkg="bibtex")
+ self.prev_dbs = dbs
+ self.used_cites = new
+ self.undef_cites = self.list_undefs()
+ return 1
+ self.prev_dbs = dbs
+
+ # If there was a list of used citations, we check if it has
+ # changed. If it has, we have to rerun.
+
+ if self.used_cites:
+ if new != self.used_cites:
+ msg.log(_("the list of citations changed"), pkg="bibtex")
+ self.used_cites = new
+ self.undef_cites = self.list_undefs()
+ return 1
+ self.used_cites = new
+
+ # If there was a list of undefined citations, we check if it has
+ # changed. If it has and it is not empty, we have to rerun.
+
+ if self.undef_cites:
+ new = self.list_undefs()
+ if new == []:
+ msg.log(_("no more undefined citations"), pkg="bibtex")
+ self.undef_cites = new
+ else:
+ for cite in new:
+ if cite in self.undef_cites:
+ continue
+ msg.log(_("there are new undefined citations"), pkg="bibtex")
+ self.undef_cites = new
+ return 1
+ msg.log(_("there is no new undefined citation"), pkg="bibtex")
+ self.undef_cites = new
+ return 0
+ else:
+ self.undef_cites = self.list_undefs()
+
+ # At this point we don't know if undefined citations changed. If
+ # BibTeX has not been run before (i.e. there is no log file) we know
+ # that it has to be run now.
+
+ blg = self.base + ".blg"
+ if not exists(blg):
+ msg.log(_("no BibTeX log file"), pkg="bibtex")
+ return 1
+
+ # Here, BibTeX has been run before but we don't know if undefined
+ # citations changed.
+
+ if self.undef_cites == []:
+ msg.log(_("no undefined citations"), pkg="bibtex")
+ return 0
+
+ log = self.doc.src_base + ".log"
+ if getmtime(blg) < getmtime(log):
+ msg.log(_("BibTeX's log is older than the main log"), pkg="bibtex")
+ return 1
+
+ return 0
+
+ def clean (self):
+ self.doc.remove_suffixes([".bbl", ".blg"])
+
+ #
+ # The following method extract information from BibTeX log files.
+ #
+
+ def style_changed (self):
+ """
+ Read the log file if it exists and check if the style used is the one
+ specified in the source. This supposes that the style is mentioned on
+ a line with the form 'The style file: foo.bst'.
+ """
+ blg = self.base + ".blg"
+ if not exists(blg):
+ return 0
+ log = open(blg)
+ line = log.readline()
+ while line != "":
+ if line[:16] == "The style file: ":
+ if line.rstrip()[16:-4] != self.style:
+ msg.log(_("the bibliography style was changed"), pkg="bibtex")
+ log.close()
+ return 1
+ line = log.readline()
+ log.close()
+ return 0
+
+ def get_errors (self):
+ """
+ Read the log file, identify error messages and report them.
+ """
+ blg = self.base + ".blg"
+ if not exists(blg):
+ return
+ log = open(blg)
+ last_line = ""
+ line = log.readline()
+ while line != "":
+ m = re_error.search(line)
+ if m:
+ # TODO: it would be possible to report the offending code.
+ if m.start() == 0:
+ text = string.strip(last_line)
+ else:
+ text = string.strip(line[:m.start()])
+ line = m.group("line")
+ if line: line = int(line)
+ d = {
+ "pkg": "bibtex",
+ "kind": "error",
+ "text": text
+ }
+ d.update( m.groupdict() )
+
+ # BibTeX does not report the path of the database in its log.
+
+ file = d["file"]
+ if file[-4:] == ".bib":
+ file = file[:-4]
+ if self.db.has_key(file):
+ d["file"] = self.db[file]
+ elif self.db.has_key(file + ".bib"):
+ d["file"] = self.db[file + ".bib"]
+ yield d
+ last_line = line
+ line = log.readline()
+ log.close()
+ return
View
4 concl.tex
@@ -0,0 +1,4 @@
+\section{Conclusion}
+\label{sec:concl}
+
+Therefore, a duck.
View
2  design.tex
@@ -0,0 +1,2 @@
+\section{Design}
+\label{sec:design}
View
9 eval.tex
@@ -0,0 +1,9 @@
+\section{Evaluation}
+\label{sec:eval}
+
+\begin{figure}
+ \centerline{\placeholder{Descriptive figure text goes here.}}
+
+\caption{A placeholder caption for a placeholder figure.}
+\label{fig:placeholder}
+\end{figure}
View
12 intro.tex
@@ -0,0 +1,12 @@
+\section{Introduction}
+\label{sec:intro}
+
+\begin{itemize}
+ \item Intro
+ \item Outline
+ \item Would fit nicely
+ \item Here
+\end{itemize}
+
+We have some related work in Section~\ref{sec:related}.
+\mk{Need to fix!}
View
242 paper.tex
@@ -0,0 +1,242 @@
+\documentclass[pdftex,twocolumn,10pt,letterpaper]{extarticle}
+
+%%% Set these variables appropriately
+%%%
+%% Note: Authors is hardcoded below, this line only used for the PDF info
+\newcommand{\AUTHORS}{Authors}
+\newcommand{\TITLE}{Title}
+\newcommand{\KEYWORDS}{Put your keywords here}
+\newcommand{\CONFERENCE}{Somewhere}
+\newcommand{\PAGENUMBERS}{yes} % "yes" or "no"
+\newcommand{\COLOR}{yes}
+\newcommand{\showComments}{yes}
+\newcommand{\comment}[1]{}
+\newcommand{\onlyAbstract}{no}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%
+%%% Page Setup
+%%%
+\special{papersize=8.5in,11in}
+\setlength{\pdfpagewidth}{8.5in}
+\setlength{\pdfpageheight}{11in}
+
+\usepackage{ifthen}
+\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
+\usepackage[nohead,
+ left=0.75in,right=0.85in,top=0.75in,
+ footskip=0.5in,bottom=1in, % Room for page numbers
+ columnsep=0.25in
+ ]{geometry}
+}{%
+\usepackage[noheadfoot,left=0.75in,right=0.85in,top=0.75in,
+ footskip=0.5in,bottom=1in,
+ columnsep=0.25in
+ ]{geometry}
+}
+
+%%%
+%%% Captions
+%%%
+\usepackage[font=bf]{caption}
+%% Space between figure and caption (assuming caption
+%% is below figure)
+%\usepackage[font=bf,aboveskip=0pt]{caption} % SPACE
+%% Space between caption and body text of document
+%\addtolength{\textfloatsep}{-7pt} % SPACE
+
+%%%
+%%% Section headings
+%%%
+\usepackage{titlesec}
+%\titlespacing{\paragraph}{0pt}{*1}{*1} % SPACE
+%\usepackage[compact]{titlesec} % SPACE
+%\titleformat{\section}% % IEEE/ACM: caps + period
+% {\bf\large\uppercase}{\thesection.\quad}{0pt}{}
+
+%%%
+%%% Lists
+%%%
+\usepackage{enumitem}
+\setlist{itemsep=0pt,parsep=0pt} % more compact lists
+
+%%%
+%%% Header / Footer
+%%%
+\usepackage{fancyhdr}
+\renewcommand{\headrulewidth}{0pt}
+
+\ifthenelse{\equal{\PAGENUMBERS}{yes}}{%
+ \pagestyle{plain}
+}{%
+ \pagestyle{empty}
+}
+
+%%%
+%%% Bibliography
+%%%
+\usepackage[numbers]{natbib}
+
+%%%
+%%% Footnotes / Endnotes
+%%%
+\interfootnotelinepenalty=10000 % Split footnotes are annoying
+
+% If you want endnodes, uncomment:
+%\usepackage{endnotes}
+%\usepackage{drafthead}
+%\let\footnote=\endnote
+
+%%%
+%%% Tables
+%%%
+\usepackage{booktabs}
+\usepackage{color}
+\usepackage{colortbl}
+\usepackage{float} % Must appear before hyperref to
+ % avoid weird PDF compile issues
+
+%%%
+%%% Fonts
+%%%
+\usepackage{mathptmx} % Times/Times-like math symbols
+\usepackage{courier}
+\usepackage[scaled=0.92]{helvet}
+
+%%%
+%%% PDF setup
+%%%
+\ifthenelse{\equal{\COLOR}{yes}}{%
+ \usepackage[colorlinks]{hyperref}% % for online version
+}{%
+ \usepackage[pdfborder={0 0 0}]{hyperref}% % for paper (B&W) version
+}
+\usepackage{url}
+
+\hypersetup{%
+pdfauthor = {\AUTHORS},
+pdftitle = {\TITLE},
+pdfsubject = {\CONFERENCE},
+pdfkeywords = {\KEYWORDS},
+bookmarksopen = {true}
+}
+
+%%
+%% Figure placeholder macros
+%%
+
+\definecolor{placeholderbg}{rgb}{0.85,0.85,0.85}
+\newcommand{\placeholder}[1]{%
+\fcolorbox{black}{placeholderbg}{\parbox[top][1.5in][c]{0.95\columnwidth}{#1}}}
+
+
+%%%
+%%% Misc
+%%%
+\usepackage[pdftex]{graphicx}
+\usepackage{soul}
+
+%\setlength{\parindent}{0pt}
+%\setlength{\parskip}{\baselineskip}
+
+%\clubpenalty=10000 % Don't allow orphans
+%\widowpenalty=10000 % Don't allow widows
+
+%%%
+%%% To appear/appeared in text on title page
+%%%
+\usepackage[absolute]{textpos}
+\newcommand{\ToAppear}{%
+\begin{textblock*}{\textwidth}(0.95in,0.4in)
+\begin{flushright}
+ %\noindent{\fbox{\textsf{Under submission---please do not redistribute.}}}
+ % --OR--
+ \noindent{\small To appear in \textit{Proceedings of the XYZ}\\
+ \noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
+ % --OR--
+ %\noindent{\small In \textit{Proceedings of the XYZ}\\
+ %\noindent{\small \textit{Conference (XYZ'08)}, City, State, Month 2008}}
+\end{flushright}
+\end{textblock*}
+}
+
+%%%
+%%% Sample ACM Copyright Block
+%%%
+\newfloat{acmcr}{b}{acmcr}
+\newcommand{\AcmCopyright}{%
+\begin{acmcr}
+\parbox[b]{20pc}{%
+\footnotesize
+Permission to make digital or hard copies of all or part of this work
+for personal or classroom use is granted without fee provided that
+copies are not made or distributed for profit or commercial advantage
+and that copies bear this notice and the full citation on the first
+page. To copy otherwise, to republish, to post on servers or to
+redistribute to lists, requires prior specific permission and/or a fee.
+
+{\em Conference}, Month Date--Date, Year, Location\\
+Copyright 200X ACM X-XXXXX-XX-X/XX/XX ...\$5.00}
+\end{acmcr}}
+
+%%%
+%%% Comments
+%%%
+\newcommand{\note}[2]{
+ \ifthenelse{\equal{\showComments}{yes}}{\textcolor{#1}{#2}}{}
+}
+
+% Change these to your own initials as you like...
+\newcommand{\author1}[1]{\note{blue}{Author1: #1}}
+\newcommand{\author2}[1]{\note{red}{Author2: #1}}
+\newcommand{\author3}[1]{\note{green}{Author3: #1}}
+
+\date{}
+\title{\textbf{\TITLE}}
+\author{{\large Authors}\\
+{\em Affiliations}}
+
+% This needs to be the last thing before \begin{document}
+%\usepackage{microtype} % SPACE
+
+%%%%%%%%%%%%%%%%%%%% START DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+\maketitle
+
+%\AcmCopyright
+%\ToAppear
+
+\input{abstract}
+\ifthenelse{\equal{\onlyAbstract}{no}}{%
+\input{intro}
+\input{design}
+\input{eval}
+\input{related}
+\input{concl}
+
+%\appendix
+%\input{appendix_sources}
+
+%\vspace{-0.1in}
+%\section*{Acknowledgments}
+% Comments for people we need to ack in the final version
+
+%% Bibliography
+\setlength{\bibsep}{2pt}
+\small
+% \footnotesize % SPACE
+\bibliography{ref,rfc}
+\bibliographystyle{abbrvnat}
+%\bibliographystyle{abbrvnat_noaddr} % SPACE
+%\theendnotes % ENDNOTES
+}{% !onlyAbstract
+}
+
+\end{document}
+
+% Local Variables:
+% TeX-command-default: "LaTeX PDF"
+% End:
+
View
4 related.tex
@@ -0,0 +1,4 @@
+\section{Related Work}
+\label{sec:related}
+
+I like puppies~\cite{Andersen:nsdi2005}.
Please sign in to comment.
Something went wrong with that request. Please try again.