| [f28fdee] | 1 | %======================================================================
 | 
|---|
| [1c1c180] | 2 | % University of Waterloo Thesis Template for LaTeX
 | 
|---|
 | 3 | % Last Updated November, 2020
 | 
|---|
 | 4 | % by Stephen Carr, IST Client Services,
 | 
|---|
| [f28fdee] | 5 | % University of Waterloo, 200 University Ave. W., Waterloo, Ontario, Canada
 | 
|---|
 | 6 | % FOR ASSISTANCE, please send mail to request@uwaterloo.ca
 | 
|---|
 | 7 | 
 | 
|---|
 | 8 | % DISCLAIMER
 | 
|---|
| [1c1c180] | 9 | % To the best of our knowledge, this template satisfies the current uWaterloo
 | 
|---|
 | 10 | % thesis requirements. However, it is your responsibility to assure that you
 | 
|---|
 | 11 | % have met all requirements of the University and your particular department.
 | 
|---|
| [f28fdee] | 12 | 
 | 
|---|
| [1c1c180] | 13 | % Many thanks for the feedback from many graduates who assisted the
 | 
|---|
 | 14 | % development of this template. Also note that there are explanatory comments
 | 
|---|
 | 15 | % and tips throughout this template.
 | 
|---|
| [f28fdee] | 16 | %======================================================================
 | 
|---|
 | 17 | % Some important notes on using this template and making it your own...
 | 
|---|
 | 18 | 
 | 
|---|
| [1c1c180] | 19 | % The University of Waterloo has required electronic thesis submission since
 | 
|---|
 | 20 | % October 2006. See the uWaterloo thesis regulations at:
 | 
|---|
 | 21 | %   https://uwaterloo.ca/graduate-studies/thesis.
 | 
|---|
 | 22 | % This thesis template is geared towards generating a PDF version optimized
 | 
|---|
 | 23 | % for viewing on an electronic display, including hyperlinks within the PDF.
 | 
|---|
| [f28fdee] | 24 | 
 | 
|---|
| [1c1c180] | 25 | % DON'T FORGET TO ADD YOUR OWN NAME AND TITLE in the "hyperref" package
 | 
|---|
 | 26 | % configuration below. THIS INFORMATION GETS EMBEDDED IN THE FINAL PDF
 | 
|---|
 | 27 | % DOCUMENT. You can view the information if you view properties of the PDF.
 | 
|---|
| [f28fdee] | 28 | 
 | 
|---|
| [1c1c180] | 29 | % Many faculties/departments also require one or more printed copies.
 | 
|---|
 | 30 | % This template attempts to satisfy both types of output.
 | 
|---|
| [f28fdee] | 31 | % See additional notes below.
 | 
|---|
| [1c1c180] | 32 | % It is based on the standard "book" document class which provides all
 | 
|---|
 | 33 | % necessary sectioning structures and allows multi-part theses.
 | 
|---|
| [f28fdee] | 34 | 
 | 
|---|
| [1c1c180] | 35 | % If you are using this template in Overleaf (cloud-based collaboration
 | 
|---|
 | 36 | % service), then it is automatically processed and previewed for you as you
 | 
|---|
 | 37 | % edit.
 | 
|---|
 | 38 | 
 | 
|---|
 | 39 | % For people who prefer to install their own LaTeX distributions on their own
 | 
|---|
 | 40 | % computers, and process the source files manually, the following notes
 | 
|---|
 | 41 | % provide the sequence of tasks:
 | 
|---|
| [f28fdee] | 42 | 
 | 
|---|
 | 43 | % E.g. to process a thesis called "mythesis.tex" based on this template, run:
 | 
|---|
 | 44 | 
 | 
|---|
 | 45 | % pdflatex mythesis     -- first pass of the pdflatex processor
 | 
|---|
 | 46 | % bibtex mythesis       -- generates bibliography from .bib data file(s)
 | 
|---|
| [1c1c180] | 47 | % makeindex         -- should be run only if an index is used
 | 
|---|
 | 48 | % pdflatex mythesis     -- fixes numbering in cross-references, bibliographic
 | 
|---|
 | 49 | %                      references, glossaries, index, etc.
 | 
|---|
 | 50 | % pdflatex mythesis     -- it takes a couple of passes to completely process all
 | 
|---|
 | 51 | %                      cross-references
 | 
|---|
 | 52 | 
 | 
|---|
 | 53 | % If you use the recommended LaTeX editor, Texmaker, you would open the
 | 
|---|
 | 54 | % mythesis.tex file, then click the PDFLaTeX button. Then run BibTeX (under
 | 
|---|
 | 55 | % the Tools menu). Then click the PDFLaTeX button two more times.
 | 
|---|
 | 56 | % If you have an index as well, you'll need to run MakeIndex from the Tools
 | 
|---|
 | 57 | % menu as well, before running pdflatex the last two times.
 | 
|---|
 | 58 | 
 | 
|---|
 | 59 | % N.B. The "pdftex" program allows graphics in the following formats to be
 | 
|---|
 | 60 | % included with the "\includegraphics" command: PNG, PDF, JPEG, TIFF
 | 
|---|
 | 61 | % Tip: Generate your figures and photos in the size you want them to appear
 | 
|---|
 | 62 | % in your thesis, rather than scaling them with \includegraphics options.
 | 
|---|
 | 63 | % Tip: Any drawings you do should be in scalable vector graphic formats: SVG,
 | 
|---|
 | 64 | % PNG, WMF, EPS and then converted to PNG or PDF, so they are scalable in the
 | 
|---|
 | 65 | % final PDF as well.
 | 
|---|
| [f28fdee] | 66 | % Tip: Photographs should be cropped and compressed so as not to be too large.
 | 
|---|
 | 67 | 
 | 
|---|
| [1c1c180] | 68 | % ======================================================================
 | 
|---|
| [f28fdee] | 69 | %   D O C U M E N T   P R E A M B L E
 | 
|---|
| [f17fb7d] | 70 | \RequirePackage{etoolbox}
 | 
|---|
| [f28fdee] | 71 | 
 | 
|---|
| [f17fb7d] | 72 | % Control if this for print (set true) or will stay digital (default).
 | 
|---|
 | 73 | % Print is two sided, digital uses more colours.
 | 
|---|
 | 74 | \newtoggle{printversion}
 | 
|---|
 | 75 | %\toggletrue{printversion}
 | 
|---|
| [f28fdee] | 76 | 
 | 
|---|
| [f17fb7d] | 77 | \iftoggle{printversion}{%
 | 
|---|
 | 78 |   \documentclass[letterpaper,12pt,titlepage,openright,twoside,final]{book}
 | 
|---|
 | 79 | }{%
 | 
|---|
 | 80 |   \documentclass[letterpaper,12pt,titlepage,oneside,final]{book}
 | 
|---|
 | 81 | }
 | 
|---|
| [29c9b23] | 82 | 
 | 
|---|
| [edc6ea2] | 83 | % Does nothing, ignores \href tags (redefined by hyperref package).
 | 
|---|
| [df24d37] | 84 | \newcommand{\href}[1]{#1}
 | 
|---|
| [f28fdee] | 85 | 
 | 
|---|
| [f17fb7d] | 86 | % For a nomenclature (optional; available from ctan.org)
 | 
|---|
 | 87 | %\usepackage{nomencl}
 | 
|---|
| [1c1c180] | 88 | % Lots of math symbols and environments
 | 
|---|
 | 89 | \usepackage{amsmath,amssymb,amstext}
 | 
|---|
| [6a8208cb] | 90 | % For including graphics (must match graphics driver)
 | 
|---|
 | 91 | \usepackage{epic,eepic}
 | 
|---|
 | 92 | \usepackage{graphicx}
 | 
|---|
| [29c9b23] | 93 | % Removes large sections of the document.
 | 
|---|
 | 94 | \usepackage{comment}
 | 
|---|
| [fadfabf] | 95 | % Adds todo commands.
 | 
|---|
 | 96 | \usepackage{todo}
 | 
|---|
| [df24d37] | 97 | % cfa macros used in the document
 | 
|---|
 | 98 | \usepackage{cfalab}
 | 
|---|
| [403f287] | 99 | % allow global and individual modification of spacing
 | 
|---|
 | 100 | \usepackage{enumitem}
 | 
|---|
| [a049412] | 101 | % Improved reference tools.
 | 
|---|
 | 102 | \usepackage[nospace]{varioref}
 | 
|---|
| [1830a86] | 103 | 
 | 
|---|
| [f28fdee] | 104 | % Hyperlinks make it very easy to navigate an electronic document.
 | 
|---|
| [1c1c180] | 105 | % In addition, this is where you should specify the thesis title and author as
 | 
|---|
 | 106 | % they appear in the properties of the PDF document.
 | 
|---|
| [f28fdee] | 107 | % Use the "hyperref" package
 | 
|---|
 | 108 | % N.B. HYPERREF MUST BE THE LAST PACKAGE LOADED; ADD ADDITIONAL PKGS ABOVE
 | 
|---|
| [6a8208cb] | 109 | \usepackage[pagebackref=true]{hyperref}
 | 
|---|
| [1c1c180] | 110 | % N.B. pagebackref=true provides links back from the References to the body
 | 
|---|
 | 111 | % text. This can cause trouble for printing.
 | 
|---|
| [f28fdee] | 112 | \hypersetup{
 | 
|---|
 | 113 |     plainpages=false,       % needed if Roman numbers in frontpages
 | 
|---|
| [7eb6eb5] | 114 |     unicode=false,          % non-Latin characters in Acrobat's bookmarks
 | 
|---|
 | 115 |     pdftoolbar=true,        % show Acrobat's toolbar?
 | 
|---|
 | 116 |     pdfmenubar=true,        % show Acrobat's menu?
 | 
|---|
| [f28fdee] | 117 |     pdffitwindow=false,     % window fit to page when opened
 | 
|---|
 | 118 |     pdfstartview={FitH},    % fits the width of the page to the window
 | 
|---|
 | 119 |     pdfnewwindow=true,      % links in new window
 | 
|---|
 | 120 |     colorlinks=true,        % false: boxed links; true: colored links
 | 
|---|
 | 121 | }
 | 
|---|
| [f17fb7d] | 122 | \iftoggle{printversion}{
 | 
|---|
 | 123 |   \hypersetup{
 | 
|---|
 | 124 |     citecolor=black,        % colour of links to bibliography
 | 
|---|
 | 125 |     filecolor=black,        % colour of file links
 | 
|---|
 | 126 |     linkcolor=black,        % colour of internal links
 | 
|---|
 | 127 |     urlcolor=black,         % colour of external links
 | 
|---|
 | 128 |   }
 | 
|---|
 | 129 | }{ % Digital Version
 | 
|---|
 | 130 |   \hypersetup{
 | 
|---|
 | 131 |     citecolor=green,
 | 
|---|
 | 132 |     filecolor=magenta,
 | 
|---|
 | 133 |     linkcolor=blue,
 | 
|---|
 | 134 |     urlcolor=cyan,
 | 
|---|
 | 135 |   }
 | 
|---|
 | 136 | }
 | 
|---|
 | 137 | 
 | 
|---|
 | 138 | \hypersetup{
 | 
|---|
 | 139 |   pdftitle={Exception Handling in Cforall},
 | 
|---|
 | 140 |   pdfauthor={Andrew James Beach},
 | 
|---|
 | 141 |   pdfsubject={Computer Science},
 | 
|---|
 | 142 |   pdfkeywords={programming languages} {exceptions}
 | 
|---|
 | 143 |       {language design} {language implementation},
 | 
|---|
 | 144 | }
 | 
|---|
| [f28fdee] | 145 | 
 | 
|---|
| [1c1c180] | 146 | % Exception to the rule of hyperref being the last add-on package
 | 
|---|
| [299b8b28] | 147 | \usepackage[toc,abbreviations]{glossaries-extra}
 | 
|---|
| [1c1c180] | 148 | % If glossaries-extra is not in your LaTeX distribution, get it from CTAN
 | 
|---|
 | 149 | % (http://ctan.org/pkg/glossaries-extra), although it's supposed to be in
 | 
|---|
 | 150 | % both the TeX Live and MikTeX distributions. There are also documentation
 | 
|---|
 | 151 | % and installation instructions there.
 | 
|---|
| [f28fdee] | 152 | 
 | 
|---|
 | 153 | % Setting up the page margins...
 | 
|---|
| [1c1c180] | 154 | \setlength{\textheight}{9in}
 | 
|---|
 | 155 | \setlength{\topmargin}{-0.45in}
 | 
|---|
 | 156 | \setlength{\headsep}{0.25in}
 | 
|---|
 | 157 | % uWaterloo thesis requirements specify a minimum of 1 inch (72pt) margin at
 | 
|---|
 | 158 | % the top, bottom, and outside page edges and a 1.125 in. (81pt) gutter margin
 | 
|---|
 | 159 | % (on binding side). While this is not an issue for electronic viewing, a PDF
 | 
|---|
 | 160 | % may be printed, and so we have the same page layout for both printed and
 | 
|---|
 | 161 | % electronic versions, we leave the gutter margin in. Set margins to minimum
 | 
|---|
 | 162 | % permitted by uWaterloo thesis regulations:
 | 
|---|
| [f28fdee] | 163 | \setlength{\marginparwidth}{0pt} % width of margin notes
 | 
|---|
 | 164 | % N.B. If margin notes are used, you must adjust \textwidth, \marginparwidth
 | 
|---|
 | 165 | % and \marginparsep so that the space left between the margin notes and page
 | 
|---|
 | 166 | % edge is less than 15 mm (0.6 in.)
 | 
|---|
| [1c1c180] | 167 | % width of space between body text and margin notes
 | 
|---|
 | 168 | \setlength{\marginparsep}{0pt}
 | 
|---|
 | 169 | % Adds 1/8 in. to binding side of all
 | 
|---|
| [f28fdee] | 170 | % even-numbered pages when the "twoside" printing option is selected
 | 
|---|
| [1c1c180] | 171 | \setlength{\evensidemargin}{0.125in}
 | 
|---|
 | 172 | % Adds 1/8 in. to the left of all pages when "oneside" printing is selected,
 | 
|---|
 | 173 | % and to the left of all odd-numbered pages when "twoside" printing is selected
 | 
|---|
 | 174 | \setlength{\oddsidemargin}{0.125in}
 | 
|---|
 | 175 | % assuming US letter paper (8.5 in. x 11 in.) and side margins as above
 | 
|---|
 | 176 | \setlength{\textwidth}{6.375in}
 | 
|---|
| [f28fdee] | 177 | \raggedbottom
 | 
|---|
 | 178 | 
 | 
|---|
| [1c1c180] | 179 | % The following statement specifies the amount of space between paragraphs.
 | 
|---|
 | 180 | % Other reasonable specifications are \bigskipamount and \smallskipamount.
 | 
|---|
| [f28fdee] | 181 | \setlength{\parskip}{\medskipamount}
 | 
|---|
 | 182 | 
 | 
|---|
| [1c1c180] | 183 | % The following statement controls the line spacing.
 | 
|---|
 | 184 | % The default spacing corresponds to good typographic conventions and only
 | 
|---|
 | 185 | % slight changes (e.g., perhaps "1.2"), if any, should be made.
 | 
|---|
| [f28fdee] | 186 | \renewcommand{\baselinestretch}{1} % this is the default line space setting
 | 
|---|
 | 187 | 
 | 
|---|
 | 188 | % By default, each chapter will start on a recto (right-hand side) page.
 | 
|---|
| [1c1c180] | 189 | % We also force each section of the front pages to start on a recto page by
 | 
|---|
 | 190 | % inserting \cleardoublepage commands. In many cases, this will require that
 | 
|---|
 | 191 | % the verso (left-hand) page be blank, and while it should be counted, a page
 | 
|---|
 | 192 | % number should not be printed. The following statements ensure a page number
 | 
|---|
 | 193 | % is not printed on an otherwise blank verso page.
 | 
|---|
| [f28fdee] | 194 | \let\origdoublepage\cleardoublepage
 | 
|---|
 | 195 | \newcommand{\clearemptydoublepage}{%
 | 
|---|
 | 196 |   \clearpage{\pagestyle{empty}\origdoublepage}}
 | 
|---|
 | 197 | \let\cleardoublepage\clearemptydoublepage
 | 
|---|
 | 198 | 
 | 
|---|
| [1c1c180] | 199 | % Define Glossary terms (This is properly done here, in the preamble and
 | 
|---|
 | 200 | % could also be \input{} from a separate file...)
 | 
|---|
| [f28fdee] | 201 | \input{glossaries}
 | 
|---|
 | 202 | \makeglossaries
 | 
|---|
 | 203 | 
 | 
|---|
| [887fc79] | 204 | % New commands/options for this document alone:
 | 
|---|
 | 205 | % Code snipits with formating and line-breaks.
 | 
|---|
 | 206 | \newcommand\defaultResumptionHandler{\texttt{default\-Resumption\-Handler}}
 | 
|---|
 | 207 | \newcommand\defaultTerminationHandler{\texttt{default\-Termination\-Handler}}
 | 
|---|
 | 208 | 
 | 
|---|
| [c1136c56] | 209 | % listings package configuation:
 | 
|---|
| [df24d37] | 210 | \lstMakeShortInline@
 | 
|---|
| [c1136c56] | 211 | \lstset{language=CFA,style=cfacommon,basicstyle=\linespread{0.9}\tt}
 | 
|---|
| [29c9b23] | 212 | % Annotations from Peter:
 | 
|---|
| [7eb6eb5] | 213 | \newcommand{\PAB}[1]{{\color{blue}PAB: #1}}
 | 
|---|
| [29c9b23] | 214 | % Change the style of abbreviations:
 | 
|---|
 | 215 | \renewcommand{\abbrevFont}{}
 | 
|---|
| [f28fdee] | 216 | 
 | 
|---|
 | 217 | %======================================================================
 | 
|---|
 | 218 | %   L O G I C A L    D O C U M E N T
 | 
|---|
 | 219 | % The logical document contains the main content of your thesis.
 | 
|---|
| [1c1c180] | 220 | % Being a large document, it is a good idea to divide your thesis into several
 | 
|---|
 | 221 | % files, each one containing one chapter or other significant chunk of content,
 | 
|---|
 | 222 | % so you can easily shuffle things around later if desired.
 | 
|---|
| [f28fdee] | 223 | %======================================================================
 | 
|---|
 | 224 | \begin{document}
 | 
|---|
 | 225 | 
 | 
|---|
 | 226 | %----------------------------------------------------------------------
 | 
|---|
 | 227 | % FRONT MATERIAL
 | 
|---|
 | 228 | % title page,declaration, borrowers' page, abstract, acknowledgements,
 | 
|---|
| [1c1c180] | 229 | % dedication, table of contents, list of tables, list of figures,
 | 
|---|
 | 230 | % nomenclature, etc.
 | 
|---|
| [f28fdee] | 231 | %----------------------------------------------------------------------
 | 
|---|
| [1c1c180] | 232 | \input{uw-ethesis-frontpgs}
 | 
|---|
| [f28fdee] | 233 | 
 | 
|---|
 | 234 | %----------------------------------------------------------------------
 | 
|---|
 | 235 | % MAIN BODY
 | 
|---|
 | 236 | % We suggest using a separate file for each chapter of your thesis.
 | 
|---|
| [1c1c180] | 237 | % Start each chapter file with the \chapter command. Only use \documentclass,
 | 
|---|
 | 238 | % \begin{document} and \end{document} commands in this master document.
 | 
|---|
| [f28fdee] | 239 | % Tip: Putting each sentence on a new line is a way to simplify later editing.
 | 
|---|
 | 240 | %----------------------------------------------------------------------
 | 
|---|
| [e8a7ca2] | 241 | \input{intro}
 | 
|---|
| [f28fdee] | 242 | \input{existing}
 | 
|---|
 | 243 | \input{features}
 | 
|---|
| [7eb6eb5] | 244 | \input{implement}
 | 
|---|
| [dac16a0] | 245 | \input{performance}
 | 
|---|
| [f28fdee] | 246 | \input{future}
 | 
|---|
| [cb6b8cb] | 247 | \input{conclusion}
 | 
|---|
| [f28fdee] | 248 | 
 | 
|---|
 | 249 | %----------------------------------------------------------------------
 | 
|---|
 | 250 | % END MATERIAL
 | 
|---|
 | 251 | % Bibliography, Appendices, Index, etc.
 | 
|---|
 | 252 | %----------------------------------------------------------------------
 | 
|---|
 | 253 | 
 | 
|---|
 | 254 | % Bibliography
 | 
|---|
 | 255 | 
 | 
|---|
| [1c1c180] | 256 | % The following statement selects the style to use for references.
 | 
|---|
 | 257 | % It controls the sort order of the entries in the bibliography and also the
 | 
|---|
 | 258 | % formatting for the in-text labels.
 | 
|---|
| [f28fdee] | 259 | \bibliographystyle{plain}
 | 
|---|
| [1c1c180] | 260 | % This specifies the location of the file containing the bibliographic
 | 
|---|
 | 261 | % information. It assumes you're using BibTeX to manage your references (if
 | 
|---|
 | 262 | % not, why not?).
 | 
|---|
 | 263 | \cleardoublepage % This is needed if the "book" document class is used, to
 | 
|---|
 | 264 | % place the anchor in the correct page, because the bibliography will start
 | 
|---|
 | 265 | % on its own page.
 | 
|---|
 | 266 | % Use \clearpage instead if the document class uses the "oneside" argument.
 | 
|---|
 | 267 | \phantomsection  % With hyperref package, enables hyperlinking from the table
 | 
|---|
 | 268 | % of contents to bibliography.
 | 
|---|
 | 269 | % The following statement causes the title "References" to be used for the
 | 
|---|
 | 270 | % bibliography section:
 | 
|---|
| [f28fdee] | 271 | \renewcommand*{\bibname}{References}
 | 
|---|
 | 272 | 
 | 
|---|
 | 273 | % Add the References to the Table of Contents
 | 
|---|
 | 274 | \addcontentsline{toc}{chapter}{\textbf{References}}
 | 
|---|
 | 275 | 
 | 
|---|
 | 276 | \bibliography{uw-ethesis,pl}
 | 
|---|
| [1c1c180] | 277 | % Tip: You can create multiple .bib files to organize your references. Just
 | 
|---|
 | 278 | % list them all in the \bibliogaphy command, separated by commas (no spaces).
 | 
|---|
| [f28fdee] | 279 | 
 | 
|---|
| [1c1c180] | 280 | % The following statement causes the specified references to be added to the
 | 
|---|
 | 281 | % bibliography even if they were not cited in the text. The asterisk is a
 | 
|---|
 | 282 | % wildcard that causes all entries in the bibliographic database to be
 | 
|---|
 | 283 | % included (optional).
 | 
|---|
| [f28fdee] | 284 | % \nocite{*}
 | 
|---|
 | 285 | %----------------------------------------------------------------------
 | 
|---|
 | 286 | 
 | 
|---|
 | 287 | % Appendices
 | 
|---|
 | 288 | 
 | 
|---|
 | 289 | % The \appendix statement indicates the beginning of the appendices.
 | 
|---|
 | 290 | \appendix
 | 
|---|
| [1c1c180] | 291 | % Add an un-numbered title page before the appendices and a line in the Table
 | 
|---|
 | 292 | % of Contents
 | 
|---|
| [f28fdee] | 293 | % \chapter*{APPENDICES}
 | 
|---|
 | 294 | % \addcontentsline{toc}{chapter}{APPENDICES}
 | 
|---|
| [1c1c180] | 295 | % Appendices are just more chapters, with different labeling (letters instead
 | 
|---|
 | 296 | % of numbers).
 | 
|---|
| [f28fdee] | 297 | % \input{appendix-matlab_plots.tex}
 | 
|---|
 | 298 | 
 | 
|---|
| [1c1c180] | 299 | % GLOSSARIES (Lists of definitions, abbreviations, symbols, etc.
 | 
|---|
 | 300 | % provided by the glossaries-extra package)
 | 
|---|
| [f28fdee] | 301 | % -----------------------------
 | 
|---|
 | 302 | \printglossaries
 | 
|---|
 | 303 | \cleardoublepage
 | 
|---|
 | 304 | \phantomsection         % allows hyperref to link to the correct page
 | 
|---|
 | 305 | 
 | 
|---|
| [fadfabf] | 306 | \todos
 | 
|---|
 | 307 | 
 | 
|---|
| [f28fdee] | 308 | %----------------------------------------------------------------------
 | 
|---|
 | 309 | \end{document} % end of logical document
 | 
|---|