This repo stores a LaTeX template for conference publications. The template is currently supports ACM, IEEE, and USENIX formatting. Tested for the following conferences:
- ACM CCS
- ACM SOCC
- ACM SOSP
- Eurosys
- IEEE S&P
- USENIX ATC
- USENIX NSDI
- USENIX OSDI
- USENIX Security
Your system will need to be configured with the following programs:
pdflatex
- for compiling LaTeX to PDFbibtex
- for compiling a bibliographylatexmk
- for incremental compilation of LaTeXhtlatex
- for compiling LaTeX to HTML (seechktex
- linting your .tex files
Your OS will probably have a meta-package that installs all of these at once.
On Ubuntu:
$ sudo apt-get install texlive-full
On MacOS:
$ brew cask install mactex
paper.tex
is the root document that gets compiled.paper.bib
is the master BibTeX file of all references.sections/
is where paper text is storedstyle/
contains styling macros
For convenience, \systemname{}
is a variable used to abstract the system's name. Please use this instead of hard-coding the system name in text. This will make it much easier to change the name down the line.
\systemname{}
is defined in paper.tex
.
Please put all common packages, macros, and commands in style/head-common.tex
.
This will always be included regardless of target conference.
Depending on the conference, you'll need to make 3 changes to update formatting in paper.tex
.
- Include the corresponding header file (e.g.
\input{style/head-usenix}
) - Include the corresponding author list (e.g.
\input{author-usenix}
) - Uncomment the corresponding bibliography style
To separate content from everything else, please create a new file in sections/
for every new section in the paper. Then include it in the appropriate position in paper.tex
.
...
\input{sections/abstract}
\input{sections/introduction}
\input{sections/background}
\input{sections/design}
\input{sections/implementation}
\input{sections/evaluation}
\input{sections/discussion}
\input{sections/related}
\input{sections/conclusion}
...
For most purposes, use the incremental compiler
$ make all
If you want to manually compile:
$ make complete # Run pdflatex, bibtex, then pdflatex again
$ make pdf # Run pdflatex once
$ make bib # Run bibtex once
It is recommended to follow all of the following steps before final submission
Go through every file in sections/
and run chktex
:
$ chktex <filename>
As a shorthand, this will run it on all .tex
files in sections/
$ make lint
Go through every file in sections/
and run aspell
:
$ aspell -c <filename>
Like it or not, MS Word is probably still the best grammar and spellchecker out there. To open your publication in MS Word, first compile it to HTML
$ make html
Then open MS Word with the generated HTML document and run spell check. You'll have to manually translate all the changes back into your original .tex
files.
You can also view the HTML file in a browser by running the following and navigating to http://localhost:8000
.
$ make serve
See the following section to cleanup all the intermediate files generated.
To delete all files that are not version controlled (e.g. as specified by .gitignore
)
$ make clean
To only cleanup intermediate files from LaTeX
$ make latexclean
Feel free to fork and use for other papers. If you end up making any improvements, please email me@raymondcheng.net to submit changes upstream. Thanks!