source: doc/theses/andrew_beach_MMath/uw-ethesis.tex @ f17fb7d

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since f17fb7d was f17fb7d, checked in by Andrew Beach <ajbeach@…>, 3 years ago

Cleaned up the PrintVersion? code in the thesis template.

  • Property mode set to 100644
File size: 14.2 KB
Line 
1%======================================================================
2% University of Waterloo Thesis Template for LaTeX
3% Last Updated November, 2020
4% by Stephen Carr, IST Client Services,
5% University of Waterloo, 200 University Ave. W., Waterloo, Ontario, Canada
6% FOR ASSISTANCE, please send mail to request@uwaterloo.ca
7
8% DISCLAIMER
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.
12
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.
16%======================================================================
17% Some important notes on using this template and making it your own...
18
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.
24
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.
28
29% Many faculties/departments also require one or more printed copies.
30% This template attempts to satisfy both types of output.
31% See additional notes below.
32% It is based on the standard "book" document class which provides all
33% necessary sectioning structures and allows multi-part theses.
34
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:
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)
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.
66% Tip: Photographs should be cropped and compressed so as not to be too large.
67
68% To create a PDF output that is optimized for double-sided printing:
69% 1) comment-out the \documentclass statement in the preamble below, and
70%    un-comment the second \documentclass line.
71% 2) change the value assigned below to the boolean variable "PrintVersion"
72%    from "false" to "true".
73
74% ======================================================================
75%   D O C U M E N T   P R E A M B L E
76\RequirePackage{etoolbox}
77
78% Control if this for print (set true) or will stay digital (default).
79% Print is two sided, digital uses more colours.
80\newtoggle{printversion}
81%\toggletrue{printversion}
82
83\iftoggle{printversion}{%
84  \documentclass[letterpaper,12pt,titlepage,openright,twoside,final]{book}
85}{%
86  \documentclass[letterpaper,12pt,titlepage,oneside,final]{book}
87}
88
89% Some LaTeX commands I define for my own nomenclature.
90% If you have to, it's easier to make changes to nomenclature once here than
91% in a million places throughout your thesis!
92\newcommand{\package}[1]{\textbf{#1}} % package names in bold text
93\newcommand{\cmmd}[1]{\textbackslash\texttt{#1}} % command name in tt font
94\newcommand{\href}[1]{#1} % does nothing, but defines the command so the
95% print-optimized version will ignore \href tags (redefined by hyperref pkg).
96% Anything defined here may be redefined by packages added below...
97
98% For a nomenclature (optional; available from ctan.org)
99%\usepackage{nomencl}
100% Lots of math symbols and environments
101\usepackage{amsmath,amssymb,amstext}
102% For including graphics N.B. pdftex graphics driver
103\usepackage[pdftex]{graphicx}
104% Removes large sections of the document.
105\usepackage{comment}
106% Adds todos (Must be included after comment.)
107\usepackage{todonotes}
108
109% Hyperlinks make it very easy to navigate an electronic document.
110% In addition, this is where you should specify the thesis title and author as
111% they appear in the properties of the PDF document.
112% Use the "hyperref" package
113% N.B. HYPERREF MUST BE THE LAST PACKAGE LOADED; ADD ADDITIONAL PKGS ABOVE
114\usepackage[pdftex,pagebackref=true]{hyperref}
115% N.B. pagebackref=true provides links back from the References to the body
116% text. This can cause trouble for printing.
117\hypersetup{
118    plainpages=false,       % needed if Roman numbers in frontpages
119    unicode=false,          % non-Latin characters in Acrobat's bookmarks
120    pdftoolbar=true,        % show Acrobat's toolbar?
121    pdfmenubar=true,        % show Acrobat's menu?
122    pdffitwindow=false,     % window fit to page when opened
123    pdfstartview={FitH},    % fits the width of the page to the window
124    pdfnewwindow=true,      % links in new window
125    colorlinks=true,        % false: boxed links; true: colored links
126}
127\iftoggle{printversion}{
128  \hypersetup{
129    citecolor=black,        % colour of links to bibliography
130    filecolor=black,        % colour of file links
131    linkcolor=black,        % colour of internal links
132    urlcolor=black,         % colour of external links
133  }
134}{ % Digital Version
135  \hypersetup{
136    citecolor=green,
137    filecolor=magenta,
138    linkcolor=blue,
139    urlcolor=cyan,
140  }
141}
142
143\hypersetup{
144  pdftitle={Exception Handling in Cforall},
145  pdfauthor={Andrew James Beach},
146  pdfsubject={Computer Science},
147  pdfkeywords={programming languages} {exceptions}
148      {language design} {language implementation},
149}
150
151% Exception to the rule of hyperref being the last add-on package
152\usepackage[automake,toc,abbreviations]{glossaries-extra}
153% If glossaries-extra is not in your LaTeX distribution, get it from CTAN
154% (http://ctan.org/pkg/glossaries-extra), although it's supposed to be in
155% both the TeX Live and MikTeX distributions. There are also documentation
156% and installation instructions there.
157
158% Setting up the page margins...
159\setlength{\textheight}{9in}
160\setlength{\topmargin}{-0.45in}
161\setlength{\headsep}{0.25in}
162% uWaterloo thesis requirements specify a minimum of 1 inch (72pt) margin at
163% the top, bottom, and outside page edges and a 1.125 in. (81pt) gutter margin
164% (on binding side). While this is not an issue for electronic viewing, a PDF
165% may be printed, and so we have the same page layout for both printed and
166% electronic versions, we leave the gutter margin in. Set margins to minimum
167% permitted by uWaterloo thesis regulations:
168\setlength{\marginparwidth}{0pt} % width of margin notes
169% N.B. If margin notes are used, you must adjust \textwidth, \marginparwidth
170% and \marginparsep so that the space left between the margin notes and page
171% edge is less than 15 mm (0.6 in.)
172% width of space between body text and margin notes
173\setlength{\marginparsep}{0pt}
174% Adds 1/8 in. to binding side of all
175% even-numbered pages when the "twoside" printing option is selected
176\setlength{\evensidemargin}{0.125in}
177% Adds 1/8 in. to the left of all pages when "oneside" printing is selected,
178% and to the left of all odd-numbered pages when "twoside" printing is selected
179\setlength{\oddsidemargin}{0.125in}
180% assuming US letter paper (8.5 in. x 11 in.) and side margins as above
181\setlength{\textwidth}{6.375in}
182\raggedbottom
183
184% The following statement specifies the amount of space between paragraphs.
185% Other reasonable specifications are \bigskipamount and \smallskipamount.
186\setlength{\parskip}{\medskipamount}
187
188% The following statement controls the line spacing.
189% The default spacing corresponds to good typographic conventions and only
190% slight changes (e.g., perhaps "1.2"), if any, should be made.
191\renewcommand{\baselinestretch}{1} % this is the default line space setting
192
193% By default, each chapter will start on a recto (right-hand side) page.
194% We also force each section of the front pages to start on a recto page by
195% inserting \cleardoublepage commands. In many cases, this will require that
196% the verso (left-hand) page be blank, and while it should be counted, a page
197% number should not be printed. The following statements ensure a page number
198% is not printed on an otherwise blank verso page.
199\let\origdoublepage\cleardoublepage
200\newcommand{\clearemptydoublepage}{%
201  \clearpage{\pagestyle{empty}\origdoublepage}}
202\let\cleardoublepage\clearemptydoublepage
203
204% Define Glossary terms (This is properly done here, in the preamble and
205% could also be \input{} from a separate file...)
206\input{glossaries}
207\makeglossaries
208
209% cfa macros used in the document
210%\usepackage{cfalab}
211% I'm going to bring back eventually.
212\makeatletter
213% Combines all \CC* commands:
214\newrobustcmd*\Cpp[1][\xspace]{\cfalab@Cpp#1}
215\newcommand\cfalab@Cpp{C\kern-.1em\hbox{+\kern-.25em+}}
216% Optional arguments do not work with pdf string. (Some fix-up required.)
217\pdfstringdefDisableCommands{\def\Cpp{C++}}
218
219% Wrappers for inline code snippits.
220\newrobustcmd*\codeCFA[1]{\lstinline[language=CFA]{#1}}
221\newrobustcmd*\codeC[1]{\lstinline[language=C]{#1}}
222\newrobustcmd*\codeCpp[1]{\lstinline[language=C++]{#1}}
223\newrobustcmd*\codePy[1]{\lstinline[language=Python]{#1}}
224
225% Colour text, formatted in LaTeX style instead of TeX style.
226\newcommand*\colour[2]{{\color{#1}#2}}
227\makeatother
228
229\input{common}
230% CFA code-style for all languages
231\CFAStyle
232% CFA default lnaguage
233\lstset{language=CFA,basicstyle=\linespread{0.9}\tt}
234% Annotations from Peter:
235\newcommand{\PAB}[1]{{\color{blue}PAB: #1}}
236% Change the style of abbreviations:
237\renewcommand{\abbrevFont}{}
238
239%======================================================================
240%   L O G I C A L    D O C U M E N T
241% The logical document contains the main content of your thesis.
242% Being a large document, it is a good idea to divide your thesis into several
243% files, each one containing one chapter or other significant chunk of content,
244% so you can easily shuffle things around later if desired.
245%======================================================================
246\begin{document}
247
248%----------------------------------------------------------------------
249% FRONT MATERIAL
250% title page,declaration, borrowers' page, abstract, acknowledgements,
251% dedication, table of contents, list of tables, list of figures,
252% nomenclature, etc.
253%----------------------------------------------------------------------
254\input{uw-ethesis-frontpgs}
255
256%----------------------------------------------------------------------
257% MAIN BODY
258% We suggest using a separate file for each chapter of your thesis.
259% Start each chapter file with the \chapter command. Only use \documentclass,
260% \begin{document} and \end{document} commands in this master document.
261% Tip: Putting each sentence on a new line is a way to simplify later editing.
262%----------------------------------------------------------------------
263\input{existing}
264\input{features}
265\input{implement}
266%\input{unwinding}
267\input{future}
268
269%----------------------------------------------------------------------
270% END MATERIAL
271% Bibliography, Appendices, Index, etc.
272%----------------------------------------------------------------------
273
274% Bibliography
275
276% The following statement selects the style to use for references.
277% It controls the sort order of the entries in the bibliography and also the
278% formatting for the in-text labels.
279\bibliographystyle{plain}
280% This specifies the location of the file containing the bibliographic
281% information. It assumes you're using BibTeX to manage your references (if
282% not, why not?).
283\cleardoublepage % This is needed if the "book" document class is used, to
284% place the anchor in the correct page, because the bibliography will start
285% on its own page.
286% Use \clearpage instead if the document class uses the "oneside" argument.
287\phantomsection  % With hyperref package, enables hyperlinking from the table
288% of contents to bibliography.
289% The following statement causes the title "References" to be used for the
290% bibliography section:
291\renewcommand*{\bibname}{References}
292
293% Add the References to the Table of Contents
294\addcontentsline{toc}{chapter}{\textbf{References}}
295
296\bibliography{uw-ethesis,pl}
297% Tip: You can create multiple .bib files to organize your references. Just
298% list them all in the \bibliogaphy command, separated by commas (no spaces).
299
300% The following statement causes the specified references to be added to the
301% bibliography even if they were not cited in the text. The asterisk is a
302% wildcard that causes all entries in the bibliographic database to be
303% included (optional).
304% \nocite{*}
305%----------------------------------------------------------------------
306
307% Appendices
308
309% The \appendix statement indicates the beginning of the appendices.
310\appendix
311% Add an un-numbered title page before the appendices and a line in the Table
312% of Contents
313% \chapter*{APPENDICES}
314% \addcontentsline{toc}{chapter}{APPENDICES}
315% Appendices are just more chapters, with different labeling (letters instead
316% of numbers).
317% \input{appendix-matlab_plots.tex}
318
319% GLOSSARIES (Lists of definitions, abbreviations, symbols, etc.
320% provided by the glossaries-extra package)
321% -----------------------------
322\printglossaries
323\cleardoublepage
324\phantomsection         % allows hyperref to link to the correct page
325
326%----------------------------------------------------------------------
327\end{document} % end of logical document
Note: See TracBrowser for help on using the repository browser.