%====================================================================== % University of Waterloo Thesis Template for LaTeX % Last Updated August 2022 % by IST Client Services, % University of Waterloo, 200 University Ave. W., Waterloo, Ontario, Canada % FOR ASSISTANCE, please send mail to helpdesk@uwaterloo.ca % DISCLAIMER % To the best of our knowledge, this template satisfies the current uWaterloo thesis requirements. % However, it is your responsibility to assure that you have met all requirements of the University and your particular department. % Many thanks for the feedback from many graduates who assisted the development of this template. % Also note that there are explanatory comments and tips throughout this template. %====================================================================== % Some important notes on using this template and making it your own... % The University of Waterloo has required electronic thesis submission since October 2006. % See the uWaterloo thesis regulations at % https://uwaterloo.ca/graduate-studies/thesis. % This thesis template is geared towards generating a PDF version optimized for viewing on an electronic display, including hyperlinks within the PDF. % DON'T FORGET TO ADD YOUR OWN NAME AND TITLE in the "hyperref" package configuration below. % Search for: PDFTITLE, PDFAUTHOR, PDFSUBJECT, and PDFKEYWORDS. % THIS INFORMATION GETS EMBEDDED IN THE FINAL PDF DOCUMENT. % You can view the information if you view properties of the PDF document. % Many faculties/departments also require one or more printed copies. % This template attempts to satisfy both types of output. % See additional notes below. % It is based on the standard "book" document class which provides all necessary sectioning structures and allows multi-part theses. % If you are using this template in Overleaf (cloud-based collaboration service), then it is automatically processed and previewed for you as you edit. % For people who prefer to install their own LaTeX distributions on their own computers, and process the source files manually, the following notes provide the sequence of tasks: % E.g. to process a thesis called "mythesis.tex" based on this template, run: % pdflatex mythesis -- first pass of the pdflatex processor % bibtex mythesis -- generates bibliography from .bib data file(s) % makeindex -- should be run only if an index is used % pdflatex mythesis -- fixes numbering in cross-references, bibliographic references, glossaries, index, etc. % pdflatex mythesis -- it takes a couple of passes to completely process all cross-references % If you use the recommended LaTeX editor, Texmaker, you would open the mythesis.tex file, then click the PDFLaTeX button. Then run BibTeX (under the Tools menu). % Then click the PDFLaTeX button two more times. % If you have an index as well,you'll need to run MakeIndex from the Tools menu as well, before running pdflatex % the last two times. % N.B. The "pdftex" program allows graphics in the following formats to be included with the "\includegraphics" command: PNG, PDF, JPEG, TIFF % Tip: Generate your figures and photos in the size you want them to appear in your thesis, rather than scaling them with \includegraphics options. % Tip: Any drawings you do should be in scalable vector graphic formats: SVG, PNG, WMF, EPS and then converted to PNG or PDF, so they are scalable in the final PDF as well. % Tip: Photographs should be cropped and compressed so as not to be too large. % To create a PDF output that is optimized for double-sided printing: % 1) comment-out the \documentclass statement in the preamble below, and un-comment the second \documentclass line. % 2) change the value assigned below to the boolean variable "PrintVersion" from " false" to "true". %====================================================================== % D O C U M E N T P R E A M B L E % Specify the document class, default style attributes, and page dimensions, etc. % For hyperlinked PDF, suitable for viewing on a computer, use this: \documentclass[letterpaper,12pt,titlepage,oneside,final]{book} \usepackage[T1]{fontenc} % Latin-1 => 256-bit characters, => | not dash, <> not Spanish question marks % For PDF, suitable for double-sided printing, change the PrintVersion variable below to "true" and use this \documentclass line instead of the one above: %\documentclass[letterpaper,12pt,titlepage,openright,twoside,final]{book} % Some LaTeX commands I define for my own nomenclature. % If you have to, it's easier to make changes to nomenclature once here than in a million places throughout your thesis! \newcommand{\package}[1]{\textbf{#1}} % package names in bold text \newcommand{\cmmd}[1]{\textbackslash\texttt{#1}} % command name in tt font \newcommand{\href}[1]{#1} % does nothing, but defines the command so the print-optimized version will ignore \href tags (redefined by hyperref pkg). %\newcommand{\texorpdfstring}[2]{#1} % does nothing, but defines the command % Anything defined here may be redefined by packages added below... % This package allows if-then-else control structures. \usepackage{ifthen} \newboolean{PrintVersion} \setboolean{PrintVersion}{false} % CHANGE THIS VALUE TO "true" as necessary, to improve printed results for hard copies by overriding some options of the hyperref package, called below. %\usepackage{nomencl} % For a nomenclature (optional; available from ctan.org) \usepackage{amsmath,amssymb,amstext} % Lots of math symbols and environments \usepackage{fullpage,times,comment} \usepackage{xcolor} \usepackage{epic,eepic} \usepackage{graphicx} \usepackage{tabularx} \usepackage{pifont} \usepackage[labelformat=simple,aboveskip=0pt,farskip=0pt,font=normalsize]{subfig} \renewcommand\thesubfigure{(\alph{subfigure})} \graphicspath{{pictures/}} % picture directory %\usepackage{algorithm} %\usepackage{algpseudocode} \usepackage{pbox} \makeatletter \newcommand{\lstinput}[3][]{\lstinputlisting[#1,linerange={#2},xleftmargin=\parindentlnth,escapechar={\$},moredelim={**[is][\color{red}]{@}{@}}]{#3}} \makeatother % cfa macros used in the document \input{common} %\usepackage{common} \CFAStyle % CFA code-style \lstset{language=cfa,belowskip=-1pt} % set default language to CFA \lstnewenvironment{c++}[1][]{\lstset{language=[GNU]C++,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{} \lstnewenvironment{pascal}[1][]{\lstset{language=pascal,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{} \lstnewenvironment{java}[1][]{\lstset{language=java,escapechar=\$,moredelim=**[is][\color{red}]{@}{@},}\lstset{#1}}{} \lstset{inputpath={programs}} \lstset{xleftmargin=1\parindentlnth} \newcommand{\uCpp}{$\mu$\CC} \newcommand{\PAB}[1]{{\color{red}PAB: #1}} % Hyperlinks make it very easy to navigate an electronic document. % In addition, this is where you should specify the thesis title and author as they appear in the properties of the PDF document. % Use the "hyperref" package % N.B. HYPERREF MUST BE THE LAST PACKAGE LOADED; ADD ADDITIONAL PKGS ABOVE \usepackage{url} \usepackage[pagebackref=true]{hyperref} % with basic options %\usepackage[pdftex,pagebackref=true]{hyperref} % N.B. pagebackref=true provides links back from the References to the body text. This can cause trouble for printing. \hypersetup{ plainpages=false, % needed if Roman numbers in frontpages unicode=false, % non-Latin characters in Acrobat's bookmarks pdftoolbar=true, % show Acrobat's toolbar? pdfmenubar=true, % show Acrobat's menu? pdffitwindow=false, % window fit to page when opened pdfstartview={FitH}, % fits the width of the page to the window pdftitle={\CFA Container Library}, % title: CHANGE THIS TEXT! pdfauthor={Mike Brooks}, % author: CHANGE THIS TEXT! and uncomment this line pdfsubject={Cforall}, % subject: CHANGE THIS TEXT! and uncomment this line pdfkeywords={Cforall} {container library} {C language}, % optional list of keywords pdfnewwindow=true, % links in new window colorlinks=true, % false: boxed links; true: colored links linkcolor=blue, % color of internal links citecolor=blue, % color of links to bibliography filecolor=magenta, % color of file links urlcolor=blue, % color of external links breaklinks=true } \ifthenelse{\boolean{PrintVersion}}{ % for improved print quality, change some hyperref options \hypersetup{ % override some previously defined hyperref options % colorlinks,% citecolor=black,% filecolor=black,% linkcolor=black,% urlcolor=black} }{} % end of ifthenelse (no else) \usepackage{breakurl} \urlstyle{sf} %\usepackage[automake,toc,abbreviations]{glossaries-extra} % Exception to the rule of hyperref being the last add-on package % If glossaries-extra is not in your LaTeX distribution, get it from CTAN (http://ctan.org/pkg/glossaries-extra), % although it's supposed to be in both the TeX Live and MikTeX distributions. There are also documentation and % installation instructions there. % Customizing tabularx \newcolumntype{Y}{>{\centering\arraybackslash}X} % Setting up the page margins... %\setlength{\textheight}{9in} %\setlength{\topmargin}{-0.45in} %\setlength{\headsep}{0.25in} % uWaterloo thesis requirements specify a minimum of 1 inch (72pt) margin at the % top, bottom, and outside page edges and a 1.125 in. (81pt) gutter margin (on binding side). % While this is not an issue for electronic viewing, a PDF may be printed, and so we have the same page layout for both printed and electronic versions, we leave the gutter margin in. % Set margins to minimum permitted by uWaterloo thesis regulations: \setlength{\marginparwidth}{0pt} % width of margin notes % N.B. If margin notes are used, you must adjust \textwidth, \marginparwidth % and \marginparsep so that the space left between the margin notes and page % edge is less than 15 mm (0.6 in.) \setlength{\marginparsep}{0pt} % width of space between body text and margin notes \setlength{\evensidemargin}{0.125in} % Adds 1/8 in. to binding side of all % even-numbered pages when the "twoside" printing option is selected \setlength{\oddsidemargin}{0.125in} % Adds 1/8 in. to the left of all pages when "oneside" printing is selected, and to the left of all odd-numbered pages when "twoside" printing is selected \setlength{\textwidth}{6.375in} % assuming US letter paper (8.5 in. x 11 in.) and side margins as above \raggedbottom % The following statement specifies the amount of space between paragraphs. Other reasonable specifications are \bigskipamount and \smallskipamount. \setlength{\parskip}{\medskipamount} % The following statement controls the line spacing. % The default spacing corresponds to good typographic conventions and only slight changes (e.g., perhaps "1.2"), if any, should be made. \renewcommand{\baselinestretch}{1} % this is the default line space setting % By default, each chapter will start on a recto (right-hand side) page. % We also force each section of the front pages to start on a recto page by inserting \cleardoublepage commands. % In many cases, this will require that the verso (left-hand) page be blank, and while it should be counted, a page number should not be printed. % The following statements ensure a page number is not printed on an otherwise blank verso page. \let\origdoublepage\cleardoublepage \newcommand{\clearemptydoublepage}{% \clearpage{\pagestyle{empty}\origdoublepage}} \let\cleardoublepage\clearemptydoublepage % Define Glossary terms (This is properly done here, in the preamble and could also be \input{} from a separate file...) %\input{glossaries} %\makeglossaries %====================================================================== % L O G I C A L D O C U M E N T % The logical document contains the main content of your thesis. % Being a large document, it is a good idea to divide your thesis into several files, each one containing one chapter or other significant chunk of content, so you can easily shuffle things around later if desired. %====================================================================== \begin{document} %---------------------------------------------------------------------- % FRONT MATERIAL % title page,declaration, borrowers' page, abstract, acknowledgements, % dedication, table of contents, list of tables, list of figures, nomenclature, etc. %---------------------------------------------------------------------- \input{uw-ethesis-frontpgs} %---------------------------------------------------------------------- % MAIN BODY % We suggest using a separate file for each chapter of your thesis. % Start each chapter file with the \chapter command. % Only use \documentclass or \begin{document} and \end{document} commands in this master document. % Tip: Putting each sentence on a new line is a way to simplify later editing. %---------------------------------------------------------------------- \input{intro} \input{background} \input{array} \input{list} \input{string} \input{conclusion} %---------------------------------------------------------------------- % END MATERIAL % Bibliography, Appendices, Index, etc. %---------------------------------------------------------------------- % Bibliography % The following statement selects the style to use for references. % It controls the sort order of the entries in the bibliography and also the formatting for the in-text labels. \bibliographystyle{plain} % This specifies the location of the file containing the bibliographic information. % It assumes you're using BibTeX to manage your references (if not, why not?). \cleardoublepage % This is needed if the "book" document class is used, to place the anchor in the correct page, because the bibliography will start on its own page. % Use \clearpage instead if the document class uses the "oneside" argument \phantomsection % With hyperref package, enables hyperlinking from the table of contents to bibliography % The following statement causes the title "References" to be used for the bibliography section: \renewcommand*{\bibname}{References} % Add the References to the Table of Contents \addcontentsline{toc}{chapter}{\textbf{References}} \bibliography{pl,uw-ethesis} % Tip: You can create multiple .bib files to organize your references. % Just list them all in the \bibliogaphy command, separated by commas (no spaces). % The following statement causes the specified references to be added to the bibliography even if they were not cited in the text. % The asterisk is a wildcard that causes all entries in the bibliographic database to be included (optional). % \nocite{*} %---------------------------------------------------------------------- % Appendices % The \appendix statement indicates the beginning of the appendices. \appendix % Add an un-numbered title page before the appendices and a line in the Table of Contents % \chapter*{APPENDICES} % \addcontentsline{toc}{chapter}{APPENDICES} % Appendices are just more chapters, with different labeling (letters instead of numbers). % \input{appendix-matlab_plots.tex} % GLOSSARIES (Lists of definitions, abbreviations, symbols, etc. provided by the glossaries-extra package) % ----------------------------- %\printglossaries %\cleardoublepage %\phantomsection % allows hyperref to link to the correct page %---------------------------------------------------------------------- \end{document} % end of logical document