\documentclass[final]{ols} \usepackage{url} \usepackage{zrl} \begin{document} % Required: Do not print the date. \date{} \title{Formatting Tips and Tricks} \subtitle{Some potentially helpful examples} \author{ John W.\ Lockhart \\ {\em Red Hat, Inc.}\\ {\tt\normalsize lockhart@\{oco.net,redhat.com\}}\\ \and Optional Second Author\\ {\em Second Institution}\\ {\tt\normalsize another@address.for.email.com}\\ } % end author section \shortauthor{J.W.\ Lockhart} \maketitle % Required: Suppress page numbers on title page \thispagestyle{empty} \section*{Abstract} This example paper contains tips and tricks to ensure that what you write is what appears in the \textit{Proceedings} with as little editing as possible. The most important parts are at the end; please read them. (Okay, okay: Section~\ref{lockhart-subrules} and Figure~\ref{lockhart-fig1}.) If you are new to {\LaTeX}, please read this paper in its entirety, and check out its source and any other \texttt{.tex} files in the \texttt{\small EXAMPLE} directory. If you have a paper from the Linux Symposium or GCC Summit (2002--2004), and would like to crib from its final formatting, please drop me a note and I'll be happy to send along the edited source. Likewise, if you would like a copy of the final edited form of this year's source, just let me know. The tree was created based on the information on the conference website. If you don't have a subdirectory, create one along the same lines. Blank materials are in the \texttt{\small TEMPLATES} directory; \texttt{ProtoMake} and \texttt{Blank.tex} are probably the most interesting files. Likewise, if your Abstract was available when I looked, it has been included. Feel free to edit it; it's just there to get you started and to provide an example of how to properly include files should you need to. Many thanks go to Zack Weinberg for studying prior years' templates and proceeding to write the \texttt{ols.cls} class and other crucial bits of infrastructure. The new system should provide for a lot more flexibility than the old. \section{Simple Formatting Tricks} \LaTeX\ is just a fancy markup language\ldots \textit{most} of the time. Some of the more common font and layout conventions follow: \begin{itemize} \item \texttt{texttt} produces \texttt{typewriter} style. \item \texttt{textit} produces \textit{italics}. \item \texttt{textbf} produces \textbf{boldface}. \item \texttt{textsc} produces \textsc{small caps}. \item \texttt{\textit{Font}} \textbf{\textsc{styles}} can be \textit{\textbf{combined}}\footnote{Often eye-breakingly. Restraint is Good.} \end{itemize} Paragraphs can be awfully messy in the source, and even % what, a comment? have comments interspersed. Be careful with % unintentional percent signs---75\% of the time you'll accidentally comment out the rest of the text on the line. Unescaped dollar signs will put you into math mode, so be likewise careful. Of course, that's sometimes exactly where you \textit{want} to be. Tildes do not produce tildes in \LaTeX ---think instead of \textsc{html}'s \texttt{\ } and you'll get the picture. Instead, you can use \texttt{{\textbackslash}{\~{}}\{\}} or \texttt{{\textbackslash}textasciitilde} to produce a tilde. Table~\ref{lockhart-tab1} provides a list of characters that require special handling. Note that tables may ``float''---that is, {\LaTeX} might move your table to a place where it all fits on a single page, rather than putting it exactly where you have included it in your source. Be aware that it's easier to include references to tables and figures than it is to force each into a particular position and adjust the surrounding typesetting. % % that's % \~{} % or % \textasciitilde % for a tilde (without all the extra typesetting). % Escape anything but a backslash by using a backslash. Backslash % itself is \textbackslash (as seen above). \begin{table}[!th] \centering \begin{small} \begin{tabular}[b]{c|c|p{2.3cm}} Char & Command & Otherwise \\ \hline % # \# & \texttt{{\textbackslash}\#} & argument number \tabularnewline \hline % $ \$ & \texttt{{\textbackslash}\$} & toggle math mode \tabularnewline \hline % % \% & \texttt{{\textbackslash}\%} & comment: ignore rest of line \tabularnewline \hline % & \& & \texttt{{\textbackslash}\&} & tabstop \tabularnewline \hline % _ \_ & \texttt{{\textbackslash}{\_}} & subscript in math mode \tabularnewline \hline % { \{ & \texttt{{\textbackslash}\{} & open environment \tabularnewline \hline % } \} & \texttt{{\textbackslash}\}} & close environment \tabularnewline \hline % ~ {\~{}} & \texttt{{\textbackslash}{\~{}}\{\}} & non-breaking space \tabularnewline {\textasciitilde} & \texttt{{\textbackslash}textasciitilde} & non-breaking space \tabularnewline \hline % \ {\textbackslash} & \texttt{{\textbackslash}textbackslash} & begin command \tabularnewline \end{tabular} \end{small} \caption{{\LaTeX} characters that require special handling} \label{lockhart-tab1} \end{table} \subsection{New Macros}\label{lockhart-newmacros} A number of macros based on the \texttt{url} package are available for this year. They are: \begin{itemize} \item \ident{ident} -- intended for identifiers, \texttt{{\textbackslash}ident\{some\_text\}} sets the text in \texttt{tt} and may break the line at any punctuation. Spaces are deleted. \item \ident{lident} -- intended for long identifiers, this works the same as \ident{ident}, but sets the text in a smaller font. \item \ident{code} -- intended for short excerpts of code, this works like \ident{ident}, except that spaces are preserved. Lines are not broken on spaces. \item \ident{lcode} -- intended for longer excerpts of code, this works like \ident{code}, except that text is set in a smaller font. This probably does not work correctly for multi-line code fragments; consider using the \texttt{cprog} package for that. \item \ident{brcode} -- intended for excerpts of source code, this works like \ident{code}, except that line breaks may occur at spaces. \item \ident{lbrcode} -- intended for excerpts of source code, this works like \ident{brcode}, except that text is set in a smaller font. \end{itemize} Examples are shown in Table~\ref{lockhart-macro-examples}. \begin{table*}[tb] \begin{itemize} \item \verb|\ident{a_long_identifier}| --- this example in turn yields \ident{a_long_identifier} \item \texttt{{\textbackslash}lident|an\_even\_lon ger\_identifier|} --- this in turn yields \lident|an_even_lon ger_identifier| \item \verb|\lcode{int un_useful(int *a) { return *a; }}| --- this yields \lcode{int un_useful(int *a) { return *a; }} \item \verb|\lbrcode{int un_useful(int *a) { return *a; }}| --- this yields \lbrcode{int un_useful(int *a) { return *a; }} \end{itemize} \caption{Examples of New Macros} \label{lockhart-macro-examples} \end{table*} \section{Typesetting conventions} You shouldn't have to worry too much here, but I'll illustrate a few things. Quotation marks, both `single' and ``double,'' look good in body text, while other \texttt{"styles"} might look better for other uses. Note that when you're typesetting for a compiler, punctuation goes outside the \texttt{"quotation marks",} but punctuation is placed \textit{inside} the quotation marks for ``narrative.'' There are multiple flavors of dashes---the em dash, the en--dash, the oft-used hyphen, and the minus sign (math mode: $2x - 3$). Note that the preceding sentence contains them all. \subsection{Choices for uniformity} For source code, we have chosen the common style of not beginning a line with a comma. The compiler doesn't care, but keeping the printed page consistent between papers is useful. Identifiers may need to be split between lines, so we use a typewriter font and mark up the string appropriately: \texttt{sys\_\linebreak[0]sched\_\linebreak[0]yield()} or \texttt{\small A\_\linebreak[0]REALLY\_\linebreak[0]LONG\_\linebreak[0]IDENTIFIER\_\linebreak[0]THAT\_\linebreak[0]NEEDS\_\linebreak[0]TO\_\linebreak[0]BE\_\linebreak[0]THIS\_\linebreak[0]LONG} would be good examples\footnote{Alternatively, see the macros in Section~\ref{lockhart-newmacros}.}. To tell {\LaTeX} that an unhyphenated line break is okay if required, just use \texttt{{\textbackslash}linebreak[0]}. \subsection{Points of English} A few nitpicks: \begin{enumerate} \item \textit{it's} is a macro which expands to \textit{it is}. It has no other meaning. \item \textit{its} is possessive. \item Items in a series are: \textit{a}, \textit{b}, and \textit{c}. Never \textit{a}, \textit{b} and \textit{c}. This rule makes it much simpler when you must use complex values of (for example) \textit{b}. For truly long constructs, you may use a semicolon as a delimiter rather than a comma. \item Some phrases should be hyphenated---for instance, when you're using an adjective to modify another adjective, or a noun that appears before another. A high-performance system; a win-win situation; a high-level loop transformation; a slow-moving train, but a slowly moving car; that sort of thing. Most of the time, people will still be able to parse the results easily if the sentence isn't perfect. \item Be happy, know your homonyms. There, they're, their. To, two, too. Your, you're. And so forth. Spelling checkers show their limitations on this\ldots \end{enumerate} Of course, proofreading is a wonderful thing, and every bit of it you (or any guinea pigs you can persuade) do is a Good Thing. I'll correct what I notice, but I have only two eyes and there's a lot of margin-crunching formatting to be done. There are certain times, often with non-native speakers, where I'm not clear on the meaning. If I catch something like that in time, I'll ask; if not, chances are that I'll keep my hands off of the section in question so as not to insert a woefully incorrect meaning. \section{Tools} It helps to have the following installed on your system: \begin{itemize} \item \textbf{\tt tetex}. The most common \TeX\ package for Linux. \item \textbf{\tt dviutils}. Required for building the 2005 Proceedings. Can combine DVI files as well as other useful tasks. \item \textbf{\tt transfig}. Graphics in \texttt{.fig} format, useful for figures. \item \textbf{\tt dia}. Also useful for figures. \item \textbf{\tt ImageMagick}. Great for photographs and graphics manipulation \& conversion. \item \textbf{\tt xpdf} or \textbf{\tt acroread} for viewing PDF files. Other viewers can also do a nice job. \item Utilites often found in {\tt tetex}, but which your distribution may have packaged separately: \texttt{xdvi}, \texttt{dvips}, \texttt{pdflatex}. \item \textbf{\tt ghostscript} for handling Postscript. \end{itemize} \section{Examples} Some examples from previous conferences have been included in this package; hopefully they'll be useful in handling code examples. Reducing everything to \texttt{footnotesize} or setting it \texttt{verbatim} won't magically make it fit on the page, alas. Have a look in the \texttt{EXAMPLE} directory to find these items: \begin{itemize} \item {\raggedright \texttt{\small bibli\-og\-raphy.tex}, \texttt{\small bibli\-og\-ra\-phy2.tex}, and \texttt{\small ref\-er\-ences.tex}. Different ways of citing any relevant works external to your paper.} \item \texttt{conditional.tex}. If you have {\LaTeX} code that works only by itself and need to do conditional processing, here's an example. \item \texttt{\small complexCode/complexFigure.tex}. An example of a complex figure containing side-by-side C code. \item \texttt{figures.tex}. Different ways of doing figures. \item \texttt{includegraphics.tex}. Different ways to include graphics. \item \texttt{legalese.tex}. Legal disclaimers. \item \texttt{multipleAuthors.tex}. Formatting examples for multiple authors. \item \texttt{tables.tex}. Different ways to do tables. \end{itemize} \subsection{Bad Examples} A prior year's paper gave the example of setting \texttt{verbatim} sections in \texttt{tt}. Repetitiously and redundantly enough, that's the default. So, please, no instances of \begin{verbatim} {\tt \begin{verbatim} ... \end{verbatim} \begin{small} \centering \textbf{Corrected.} You might, however, wish to do something like this instead: \begin{verbatim} \begin{small} \centering \textbf{Corrected.} You ... \begin{verbatim} ... \end{verbatim} \end{small} Of course, check the source of this document (\lident{EXAMPLE/myPaper.tex}) for more ideas. Valid font sizes, for instance, include \texttt{normalsize}, \texttt{small}, \texttt{footnotesize}, \texttt{scriptsize}, and \texttt{tiny}. Please don't use anything larger than \texttt{normalsize}. Another extant bad example is the practice of ending paragraphs with a double backslash (\texttt{\textbackslash\textbackslash}) \textit{and} a blank line. This creates unwanted, superfluous whitespace between paragraphs. \LaTeX\ is, believe it or not, supposed to be easy. Just leave one or more blank lines between paragraphs and you'll be fine. \section{Style packages} For 2005, we are no longer using the \texttt{combine} package. You will find some additional useful packages in the \texttt{Texmf} directory, however. The empty papers are set up to use the \texttt{url}, \texttt{zrl}, and \texttt{graphicx} packages by default, in hopes that this will be useful for most papers. You may also find it helpful to set the \texttt{TEXINPUTS} environment variable as follows: \begin{center} {\footnotesize \texttt{export TEXINPUTS='.//:\$\{LOCALTEX\}//:'}} \end{center} % % or for those of you who'd like to cut'n'paste from the source: % export TEXINPUTS='.//:${LOCALTEX}//:' % Adding the above to your \texttt{\textasciitilde/.bashrc} can save you the trouble of typing it for future runs. % well, since 'combine' is gone, so should this problem be... %% The most common cause of build problems is including style packages %% that aren't compatible with \texttt{combine}. Unfortunately, this %% includes\footnote{At least using last year's versions, that was the case.} %% things like \texttt{hyperref} and \texttt{html}---two %% otherwise-wonderful packages for handling URLs and such. To build your paper, you should be able to \texttt{cd} to the toplevel directory (the one that contains your individual directory) and type the following at a shell prompt: \begin{small} \begin{verbatim} DIRS=yourname make \end{verbatim} \end{small} Ambitious authors are encouraged to install the \texttt{dviutils} and \texttt{pdftk} packages and type \texttt{make} from the top-level directory. If all goes well, you'll get something that looks quite like the finished \textit{Proceedings}. \section{Graphics and Symbols} For importing graphics, don't forget to omit any file extensions. That's because \texttt{latex} and \texttt{pdflatex} look for different formats. The output formats we generate are PDF, PS, and DVI; you will thus want to generate both EPS and PDF copies of any figures that use structured graphics. The easiest ways to get special symbols such as Registered\textregistered\ and Trademark\texttrademark\ is to use the \LaTeX2e\ \texttt{{\textbackslash}text} constructs: thus, \texttt{{\textbackslash}textregistered} and \texttt{{\textbackslash}texttrademark}. \section{\TeX\ References} If you aren't familiar with {\LaTeX}, there are many sources of information available. Your distribution might have additional documentation in \brcode{/usr/share/texmf}, or you might find manuals for a package (such as \texttt{cprog}) out at {\small\url{http://www.ctan.org}}. If you are completely new to {\TeX} and {\LaTeX}, you will probably find it highly useful to visit \texttt{\small http://www.tug.org/} and especially \texttt{\small http://www.tug.org/begin.html} for online and paper references. For a free and extremely useful document, try: \texttt{\small http://www.tug.org\linebreak[0]/tex-archive\linebreak[0]/info\linebreak[0]/lshort\linebreak[0]/english\linebreak[0]/lshort.pdf}. Note that translations\footnote{French, for instance: \url{http://www.tug.org/tex-archive/info/lshort/french/flshort-3.20.pdf}; note also that this section of the Example paper shows different ways of handling URLs.} are available, for those more comfortable in something other than English: \texttt{\small http://www.tug.org\linebreak[0]/tex-archive\linebreak[0]/info\linebreak[0]/lshort/} %%% Cut'n'paste versions of those URLs: % http://www.tug.org/tex-archive/info/lshort/english/lshort.pdf % http://www.tug.org/tex-archive/info/lshort/french/flshort-3.20.pdf % http://www.tug.org/tex-archive/info/lshort/ I tend to use \textit{A Guide to \LaTeX} (Kopka \& Daly, ISBN 0-201-39825-7) and the \textit{\LaTeX\ Graphics Companion} (Goossens, Rahtz, \& Mittelbach) the most these days. You are also welcome to send questions to me at \texttt{{lockhart}{@}{redhat.com}} (work) or \texttt{{lockhart}{@}{oco.net}} (home). % % {}'s begin a new environment in TeX, as in C. % A few extra {}'s might let an email address escape notice % by spammers' collecting 'bots, should the .tex file wind % up on a website somewhere at some point. % As usual, please refrain from submitting anything remotely resembling a Microsoft Word \texttt{.doc} file\ldots \texttt{}. It's a \textit{lot} easier for me to fix up plain ASCII text and convert/insert accompanying graphics, if you find yourself terminally confused or in a dire emergency. \begin{figure}[!ht] \begin{center} \hrule \vspace*{2mm} \textbf{\textsc{Submitting a Paper}} \begin{footnotesize} \begin{verbatim} cd OLS2005 make clean tar zcf yourLastName.tar.gz \ yourLastName \end{verbatim} E-mail the resulting tarball to \texttt{papers{@}linuxsymposium{.}org}. \end{footnotesize} \vspace*{2mm} \hrule \caption{Submitting a paper} \label{lockhart-fig1} \end{center} \end{figure} \section{Simple rules to keep your formatting team happy} \label{lockhart-subrules} \begin{enumerate} \item To submit your paper, just \texttt{make clean} in your directory, \texttt{tar} it up, and send the resulting gzipped tarball to \texttt{papers@linuxsymposium.org} or \texttt{papers@gccsummit.org}, as appropriate. See Figure~\ref{lockhart-fig1} for an example. \item Updates. If you need to change something, please send both a patch and an updated tarball. The most convenient form depends on how many changes have been made since you submitted your paper. However, if your change is trivial---a line or two, for instance---a simple email will do. \item Use the existing directory structure, please. The directory names are intended to be the last name of the presenter (lowercase, punctuation omitted); the main paper should be \texttt{lastname.tex} and any additional files should be \texttt{lastname-file.extension}. This is basically to keep the file owners straight, and to allow us the option to instruct {\LaTeX} to search the entire (sub)directory hierarchy for input files. You don't want someone else's file by mistake, right? Putting your name on it helps to keep things straight. The same goes for \verb|\label{}| and \verb|\ref{}| commands. \item Omit file extensions and pathnames in your {\LaTeX} source, please. By omitting the path and just saying \texttt{{\textbackslash}input\{lockhart-abstract\}}, a paper can be built from both its directory and from its parent directory. For graphics, omitting the extension lets \texttt{latex} or \texttt{pdflatex} pick its preferred input format for the best possible results. \item No proprietary document/graphics formats, please. This especially means MS Office, Visio, or other such tools. \LaTeX\ can, however, import EPS and PDF, if you can save in those formats. \item Originals, please. For example, if you have photographs, send along the full-resolution JPG (crop out any undesired elements if necessary, but use the maximum resolution). For diagrams, please send the XFig or Dia files. This ensures the best possible print quality. Printing will be in black and white, but the online PDF's will be in full color. Your screen is probably about 72dpi, but the typesetter is probably using something that's at least 1200dpi. The more resolution, the better. (If, however, your originals are outrageously huge, feel free to ask!) Since hardcopy will be printed in Ottawa, the papersize will be North American ``letter.'' Please keep that in mind if you are concerned about page breaks and such. \item Do \textbf{\textit{not}} use sans-serif fonts, or go changing global font sizes. We're using 12-point Times Roman for body text. Likewise, please don't go haywire with italics. I once received a huge collection of tables, each of which set the font size and face on an item-by-item basis. \textit{Incorrectly}. \item Those of you who like to begin lines of code with commas: as previously mentioned, we're typesetting the code with the comma attached to the preceding identifier (as most publishers do). Feel free to post your preferred version to the web and to refer to it in the paper. \item If possible, please avoid trivial new macros. Should you need to add something, though, please use \texttt{{\textbackslash}providecommand} rather than \texttt{{\textbackslash}newcommand}, and try for a relatively unique name (papers tend to blur together during long editing sessions). \item Trivia note: generally speaking, it takes longer to edit a submission from a {\TeX}spert than plain, unmarked ASCII. If you consider yourself a {\LaTeX} expert and love to write fancy new commands, please consider contributing clean-ups or well-tested new features for the infrastructure rather than customizing the daylights out of your submission. Thanks! \end{enumerate} This paper builds correctly using the tetex-2.0.2-14FC2.2 package on Fedora Core 2, and the Fedora Core 3 tetex package. Please note that if you are using FC3, you may wish to update your \texttt{urw-fonts} package to 2.2-8 or better before viewing PDF files. Other distributions haven't been tested, but should work. If you run into problems, please let me know. And remember, it's only typesetting, not rocket science. Or hacking compilers or kernels. \texttt{:-)} Have some fun along the way\ldots \end{document}