% TEMPLATE for Usenix papers, specifically to meet requirements of % USENIX '05 % originally a template for producing IEEE-format articles using LaTeX. % written by Matthew Ward, CS Department, Worcester Polytechnic Institute. % adapted by David Beazley for his excellent SWIG paper in Proceedings, % Tcl 96 % turned into a smartass generic template by De Clarke, with thanks to % both the above pioneers % use at your own risk. Complaints to /dev/null. % make it two column with no page numbering, default is 10 point % Munged by Fred Douglis 10/97 to separate % the .sty file from the LaTeX source template, so that people can % more easily include the .sty file into an existing document. Also % changed to more closely follow the style guidelines as represented % by the Word sample file. % This version uses the latex2e styles, not the very ancient 2.09 stuff. \documentclass[letterpaper,twocolumn,10pt]{article} \usepackage{usenix,epsfig,endnotes} %\usepackage{babel} % why did these need \xspace before? \newcommand{\yad}{Lemon } \newcommand{\oasys}{Juicer } \newcommand{\eab}[1]{\textcolor{red}{\bf EAB: #1}} \newcommand{\rcs}[1]{\textcolor{green}{\bf RCS: #1}} \newcommand{\mjd}[1]{\textcolor{blue}{\bf MJD: #1}} \begin{document} %don't want date printed \date{} %make title bold and 14 pt font (Latex default is non-bold, 16 pt) \title{\Large \bf Wonderful : A Terrific Application and Fascinating Paper} %for single author (just remove % characters) \author{ {\rm Russell Sears}\\ UC Berkeley \and {\rm Michael Demmer}\\ UC Berkeley \and {\rm Eric Brewer}\\ UC Berkeley } % end author % copy the following lines to add more authors \maketitle % Use the following at camera-ready time to suppress page numbers. % Comment it out when you first submit the paper for review. \thispagestyle{empty} \subsection*{Abstract} \yad is a storage framework that incorporates ideas from traditional write-ahead-logging storage algorithms and file system technologies, while providing applications with increased control over its underlying modules. Generic transactional storage systems such as SQL and BerkeleyDB serve many applications well, but impose constraints that are undesirable to developers of system software and high-performance applications, while filesystems provide limited functionality to applications. This paper generalizes write-ahead-logging algorithms, providing applications with specialized functionality, cleaner semantics and improved performance. Applications may use our modular library of basic data strctures to compose new concurrent transactional access methods, or write their own from scratch. This paper presents concrete low level examples that modify the semantics of the buffer manager to reduce memory and CPU overhead, reorder log entries for increased efficiency, and do away with per-page LSNs in order to perform zero-copy transactional I/O. We argue that encapsulation allows applications to compose extensions. These ideas have been partially implemented, and initial performance figures, and experience using the library compare favorably with existing systems. \section{Introduction} A paragraph of text goes here. Lots of text. Plenty of interesting text. \\ More fascinating text. Features\endnote{Remember to use endnotes, not footnotes!} galore, plethora of promises.\\ \section{This is Another Section} Some embedded literal typset code might look like the following : {\tt \small \begin{verbatim} int wrap_fact(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]) { int result; int arg0; if (argc != 2) { interp->result = "wrong # args"; return TCL_ERROR; } arg0 = atoi(argv[1]); result = fact(arg0); sprintf(interp->result,"%d",result); return TCL_OK; } \end{verbatim} } Now we're going to cite somebody. Watch for the cite tag. Here it comes~\cite{Chaum1981,Diffie1976}. The tilde character (\~{}) in the source means a non-breaking space. This way, your reference will always be attached to the word that preceded it, instead of going to the next line. \section{This Section has SubSections} \subsection{First SubSection} Here's a typical figure reference. The figure is centered at the top of the column. It's scaled. It's explicitly placed. You'll have to tweak the numbers to get what you want.\\ % you can also use the wonderful epsfig package... \begin{figure}[t] \begin{center} \begin{picture}(300,150)(0,200) \put(-15,-30){\special{psfile = fig1.ps hscale = 50 vscale = 50}} \end{picture}\\ \end{center} \caption{Wonderful Flowchart} \end{figure} This text came after the figure, so we'll casually refer to Figure 1 as we go on our merry way. \subsection{New Subsection} It can get tricky typesetting Tcl and C code in LaTeX because they share a lot of mystical feelings about certain magic characters. You will have to do a lot of escaping to typeset curly braces and percent signs, for example, like this: ``The {\tt \%module} directive sets the name of the initialization function. This is optional, but is recommended if building a Tcl 7.5 module. Everything inside the {\tt \%\{, \%\}} block is copied directly into the output. allowing the inclusion of header files and additional C code." \\ Sometimes you want to really call attention to a piece of text. You can center it in the column like this: \begin{center} {\tt \_1008e614\_Vector\_p} \end{center} and people will really notice it.\\ \noindent The noindent at the start of this paragraph makes it clear that it's a continuation of the preceding text, not a new para in its own right. Now this is an ingenious way to get a forced space. {\tt Real~$*$} and {\tt double~$*$} are equivalent. Now here is another way to call attention to a line of code, but instead of centering it, we noindent and bold it.\\ \noindent {\bf \tt size\_t : fread ptr size nobj stream } \\ And here we have made an indented para like a definition tag (dt) in HTML. You don't need a surrounding list macro pair. \begin{itemize} \item[] {\tt fread} reads from {\tt stream} into the array {\tt ptr} at most {\tt nobj} objects of size {\tt size}. {\tt fread} returns the number of objects read. \end{itemize} This concludes the definitions tag. \subsection{How to Build Your Paper} You have to run {\tt latex} once to prepare your references for munging. Then run {\tt bibtex} to build your bibliography metadata. Then run {\tt latex} twice to ensure all references have been resolved. If your source file is called {\tt usenixTemplate.tex} and your {\tt bibtex} file is called {\tt usenixTemplate.bib}, here's what you do: {\tt \small \begin{verbatim} latex usenixTemplate bibtex usenixTemplate latex usenixTemplate latex usenixTemplate \end{verbatim} } \subsection{Last SubSection} Well, it's getting boring isn't it. This is the last subsection before we wrap it up. \section{Acknowledgments} A polite author always includes acknowledgments. Thank everyone, especially those who funded the work. \section{Availability} It's great when this section says that MyWonderfulApp is free software, available via anonymous FTP from \begin{center} {\tt ftp.site.dom/pub/myname/Wonderful}\\ \end{center} Also, it's even greater when you can write that information is also available on the Wonderful homepage at \begin{center} {\tt http://www.site.dom/\~{}myname/SWIG} \end{center} Now we get serious and fill in those references. Remember you will have to run latex twice on the document in order to resolve those cite tags you met earlier. This is where they get resolved. We've preserved some real ones in addition to the template-speak. After the bibliography you are DONE. {\footnotesize \bibliographystyle{acm} \bibliography{../common/bibliography}} \theendnotes \end{document}