diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..13c9cd5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.texpadtmp diff --git a/README.md b/README.md new file mode 100644 index 0000000..1499132 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +## W&M Thesis and Dissertation Template + +### Overview + +This is the SEMERU template of W&M's thesis and dissertation LaTeX template. Since the school does not maintain thier own "official" version of a tempalte, we use this one and try our best to keep it up to date. + +This is the inital commit of this project, but please take some time to add documentation to the README for using the template, or update it if you find errors later on. \ No newline at end of file diff --git a/abstract.tex b/abstract.tex new file mode 100644 index 0000000..b12e4d2 --- /dev/null +++ b/abstract.tex @@ -0,0 +1,15 @@ +\begin{large} +\noindent +\begin{flushleft} +Awesome Abstract paragraph 1. +\end{flushleft} + + +\begin{flushleft} +Awesome Abstract Paragraph 2. +\end{flushleft} + +\begin{flushleft} +Awesome Abstract Paragraph 3. +\end{flushleft} +\end{large} \ No newline at end of file diff --git a/acknowledge.tex b/acknowledge.tex new file mode 100644 index 0000000..d6781eb --- /dev/null +++ b/acknowledge.tex @@ -0,0 +1,18 @@ +\begin{large} +\begin{flushleft} +\noindent First Acknowledgement Paragraph \\ +\end{flushleft} + +\begin{flushleft} +\noindent Second Acknowledgement Paragraph\\ +\end{flushleft} + +\begin{flushleft} +\noindent Third Acknowledgement Paragraph\\ +\end{flushleft} + +\begin{flushleft} +\noindent Fourth Acknowledgement Paragraph\\ +\end{flushleft} + +\end{large} \ No newline at end of file diff --git a/appendixA.tex b/appendixA.tex new file mode 100644 index 0000000..c48f270 --- /dev/null +++ b/appendixA.tex @@ -0,0 +1,10 @@ +\chapter{First Appendix with Awesome Data} +\label{appendixA} + +%----------------------------------- +\section{Awesome Appendix Section} +\label{appendixA:sec1} +%----------------------------------- + + + diff --git a/chapter-introduction.tex b/chapter-introduction.tex new file mode 100644 index 0000000..d013742 --- /dev/null +++ b/chapter-introduction.tex @@ -0,0 +1,24 @@ +%-------------------------------------- +\chapter{Introduction} +\label{chap_intro} +%-------------------------------------- + + +Insert awesome Thesis Introduction here... + + +%-------------------------------------- +\section{Overview} +\label{ch1:sec:overview} +%-------------------------------------- + + +Insert awesome Thesis Overview here... + + +%-------------------------------------- +\subsection{Motivation} +\label{ch1:subsec:motivation} +%-------------------------------------- + +Insert awesome Thesis Motivation here... \ No newline at end of file diff --git a/citesort.sty b/citesort.sty new file mode 100644 index 0000000..de21ebb --- /dev/null +++ b/citesort.sty @@ -0,0 +1,56 @@ +%NAME: citesort.sty +% A replacement for \@citex which sorts citation numbers as well as +% compressing and allowing breaks. Based on cite.sty by Donald +% Arseneau. +% +% for use in LaTeX say, \documentstyle[...,citesort,...]{...} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Allow, but strongly discourage, line breaks within a long +% series of citations. Compress lists of successive numbers +% to one number range, e.g., 5,6,7,8,9 --> 5--9. Compatible +% with versions of \@cite that use exponents. +% -- Donald Arseneau 1989 +% +% Modified to sort the numbers so they come out in increasing order, +% regardless of the way they appear in the source. O(N^2) sort! +% Ian Green, CUED, 10-Dec-1991. Improvements to img@eng.cam.ac.uk +% please. Version 1 + +\newcount\@minsofar +\newcount\@min +\newcount\@cite@temp +\def\@citex[#1]#2{% +\if@filesw \immediate \write \@auxout {\string \citation {#2}}\fi +\@tempcntb\m@ne \let\@h@ld\relax \def\@citea{}% +\@min\m@ne% +\@cite{% + \@for \@citeb:=#2\do {\@ifundefined {b@\@citeb}% + {\@h@ld\@citea\@tempcntb\m@ne{\bf ?}% + \@warning {Citation `\@citeb ' on page \thepage \space undefined}}% +{\@minsofar\z@ \@for \@scan@cites:=#2\do {% + \@ifundefined{b@\@scan@cites}% + {\@cite@temp\m@ne} + {\@cite@temp\number\csname b@\@scan@cites \endcsname \relax}% +\ifnum\@cite@temp > \@min% select the next one to list + \ifnum\@minsofar = \z@ + \@minsofar\number\@cite@temp + \edef\@scan@copy{\@scan@cites}\else + \ifnum\@cite@temp < \@minsofar + \@minsofar\number\@cite@temp + \edef\@scan@copy{\@scan@cites}\fi\fi\fi}\@tempcnta\@min + \ifnum\@minsofar > \z@ % some more + \advance\@tempcnta\@ne + \@min\@minsofar + \ifnum\@tempcnta=\@minsofar % Number follows previous--hold on to it + \ifx\@h@ld\relax + \edef \@h@ld{\@citea\csname b@\@scan@copy\endcsname}% + \else \edef\@h@ld{\ifmmode{-}\else--\fi\csname b@\@scan@copy\endcsname}% + \fi + \else \@h@ld\@citea\csname b@\@scan@copy\endcsname + \let\@h@ld\relax + \fi % no more +\fi}% +\def\@citea{,\penalty\@highpenalty\,}}\@h@ld}{#1}} + +% end of citesort.sty diff --git a/macro.tex b/macro.tex new file mode 100644 index 0000000..1aa7d5e --- /dev/null +++ b/macro.tex @@ -0,0 +1,113 @@ +\makeatletter + +% this is a easy way to add and highlight new text ... +% just comment in/out the \tnew macro .. + +\newcommand{\tnew}[1]{{\bf { #1 }} } +%\newcommand{\tnew}[1]{{ { #1 }} } + +% math and theorem definition + +\newcommand{\ndef}{\stackrel{\rm def}{=}} + +% this is used for draft only + +%\renewcommand{\baselinestretch}{2} + +% just to number pages in the draft + +\useunder{\uline}{\ul}{} + +% nothing i.e., no-numbering final and camera ready + +%\pagestyle{empty} + +\newcommand{\CrashScopesp}{{\textsc CrashScope~}} +\newcommand{\CrashScopes}{{\textsc \small CrashScope's~}} +\newcommand{\CrashDroid}{{\textsc CrashDroid~}} +\newcommand{\CrashScopebf}{{ \textbf{\textsc CrashScope~}}} + +\newcommand{\ReDraw}{{\textsc{\small ReDraw}}\xspace} +\newcommand{\ReDraws}{{\textsc{\small ReDraw's}}\xspace} +\newcommand{\Remaui}{{\textsc{\small Remaui}}\xspace} +\newcommand{\Remauis}{{\textsc{\small Remaui's}}\xspace} +\newcommand{\CrashScope}{{\textsc{\small CrashScope}}\xspace} +\newcommand{\MonkeyLab}{{\textsc{\small MonkeyLab}}\xspace} +\newcommand{\pixcode}{{pix2code}\xspace} + +\newcommand{\GVTsp}{{\textsc{\small Gvt~}}} +\newcommand{\GVT}{{\textsc{\small Gvt}}} +\newcommand{\GVTs}{{\textsc{\small Gvt's~}}} +\newcommand{\dv}{{\textit{DV}}\xspace} +\newcommand{\dvs}{{\textit{DVs}}\xspace} +\newcommand{\gc}{{\textit{GC}}\xspace} +\newcommand{\gcs}{{\textit{GCs}}\xspace} +\newcommand{\mgc}{{\textit{M-GC}}\xspace} +\newcommand{\mgcs}{{\textit{M-GCs}}\xspace} +\newcommand{\igc}{{\textit{I-GC}}\xspace} +\newcommand{\igcs}{{\textit{I-GCs}}\xspace} + + +\newcommand{\ReDrawAbs}{{R}{\ssmall E}{D}{\ssmall RAW}\xspace} + + + + +\newsavebox\CBox +\newlength\CLength +\def\circled#1{\sbox\CBox{#1}% + \ifdim\wd\CBox>\ht\CBox \CLength=\wd\CBox\else\CLength=\ht\CBox\fi + \makebox[1.2\CLength]{\makebox(0,0.9\CLength){\put(0,0){\circle{1.3\CLength}}}% + \makebox(0,1.0\CLength){\put(-.5\wd\CBox,0){#1}}}} + +\def\circledlong#1{\sbox\CBox{#1}% + \ifdim\wd\CBox>\ht\CBox \CLength=\wd\CBox\else\CLength=\ht\CBox\fi + \makebox[1.2\CLength]{\makebox(0,0.6\CLength){\put(0,0){\circle{1.3\CLength}}}% + \makebox(0,0.6\CLength){\put(-.5\wd\CBox,0){#1}}}} + +\lstset{ + basicstyle=\footnotesize\ttfamily, + breaklines=true, + frame=tb, % draw a frame at the top and bottom of the code block + tabsize=4, % tab space width + showstringspaces=false, % don't mark spaces in strings + numbers=left, % display line numbers on the left + commentstyle=\color{Red}, % comment color + keywordstyle=\color{blue}, % keyword color + stringstyle=\color{OliveGreen}, % string color + xleftmargin=.25in %align numbers to left side +} + +\newboolean{showcomments} + + +\setboolean{showcomments}{true} + +\ifthenelse{\boolean{showcomments}} + {\newcommand{\nb}[2]{ + \fbox{\bfseries\sffamily\scriptsize#1} + {\sf\small$\blacktriangleright$\textit{#2}$\blacktriangleleft$} + } + \newcommand{\cvsversion}{\emph{\scriptsize$-$Id: macro.tex,v 1.9 2005/12/09 22:38:33 giulio Exp $}} + } + {\newcommand{\nb}[2]{} + \newcommand{\cvsversion}{} + } + +\newcommand\KEVIN[1]{{\color{blue} \nb{KEVIN}{#1}}} +\newcommand\MICHAEL[1]{{\color{blue} \nb{MICHAEL}{#1}}} +\newcommand\CARLOS[1]{{\color{blue} \nb{CARLOS}{#1}}} +\newcommand\RICHIE[1]{{\color{blue} \nb{RICHIE}{#1}}} +\newcommand\DENYS[1]{{\color{blue} \nb{DENYS}{#1}}} + +\newcommand{\ie}{\textit{i.e.},\xspace} +\newcommand{\eg}{\textit{e.g.},\xspace} +\newcommand{\etc}{\textit{etc.}\xspace} +\newcommand{\etal}{\textit{et al.}\xspace} +\newcommand{\aka}{\textit{a.k.a.}\xspace} + +\newcommand\NEW[1]{\nb{NEW}{#1}} + + + + diff --git a/wm-dissertation.tex b/wm-dissertation.tex new file mode 100644 index 0000000..fc842d0 --- /dev/null +++ b/wm-dissertation.tex @@ -0,0 +1,164 @@ +% W&M PhD Dissertation LaTeX File +\documentclass[cpp,11pt]{wmthesis} +\usepackage[linesnumbered, ruled, vlined]{algorithm2e} +\usepackage{graphicx} +\usepackage{balance} +\usepackage{caption} +\usepackage{moresize} +\usepackage{pbox} +\usepackage{mathtools} +\usepackage[TABBOTCAP]{subfigure} +\setlength{\textfloatsep}{2pt} +\usepackage{paralist} +\usepackage{hyperref} +\usepackage[T1]{fontenc} +\usepackage{balance} +\usepackage[dvipsnames,table,xcdraw]{xcolor} +\usepackage{multirow} +\usepackage{multicol} +\usepackage{amsmath} +\usepackage{listings} +\usepackage{setspace} +\usepackage{verbatim} +\usepackage[all]{nowidow} +\usepackage{float} +\usepackage{xspace} +\usepackage{amssymb} +\usepackage{ifthen} +\usepackage{pifont} +\usepackage{textcomp} +\usepackage{pict2e,picture} +\usepackage{url} +%\usepackage{pstricks} +\usepackage{epsfig} +\usepackage[subfigure]{tocloft} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{latexsym} +\usepackage{booktabs} +\usepackage{tabularx} +\usepackage{rotating} +\usepackage[numbers]{natbib} +\usepackage{mdwlist} +\usepackage{colortbl} +\usepackage[normalem]{ulem} +\renewcommand{\rmdefault}{cmr} % Arial +\renewcommand{\sfdefault}{cmr} % Arial +\renewcommand{\cftchapfont}{\rm } %no bold in toc +\renewcommand{\cftchappagefont}{\rm } %no bold in toc +\usepackage{tikz} +\newcommand*\circled[1]{\tikz[baseline=(char.base)]{ + \node[shape=circle,draw,inner sep=0.5pt] (char) {#1};}} + +\include{macro} + + +% The wmthesis class is based on the latex report class whic +% only indents paragraphs if they immediately follow other paragraphs. The +% dissertation lady says this is wrong. I tend to give more credence +% to Dr. Knuth (author of TeX) on this issue, since the other way looks really +% crappy. If you want the first line of every paragraph indented, +% uncomment the next line to include the indentfirst package. -- rem +% \usepackage{indentfirst} +% Not sure if this is still an option -- Ruth + +\def\BEGINITEMIZE{\begin{itemize}} +\def\ENDITEMIZE{\end{itemize}} + +\def\defaultpenalty{1000} \clubpenalty=\defaultpenalty +\widowpenalty=\defaultpenalty + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% I put all of my specially defined commands in this file to ensure +%% that I maintain consistency since I changed some notation +%% usage between publications. Feel free to delete and/or modify +%% to suit your purpose. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%--Some general purpose macros. +%%---------------------------------------------------------------- +% Usage: +% \inputfig{filename} +% or +% \inputfig[scaling_factor]{filename} +% filename.ps is expected to be in the directory ../figs +% scaling_factor the amount of scaling to be applied +% (a decimal fraction between 0.0 and 1.0 +% +\newcommand{\inputfig}[2][\empty]{ % + \begin{center} % + \ifx\empty#1 \includegraphics{../figs/#2} + \else\scalebox{#1}{\includegraphics{../figs/#2}}\fi + \end{center}} + +% Usage: +% \inputplot{filename} +% filename.ps is expected to be in the directory ../plots/ps +\newcommand{\inputplot}[1]{ + \begin{center}\includegraphics{../plots/ps/#1.ps}\end{center}} + +%%---------------------------------------------------------------- +% Set the title that will be printed on the Contents page +%%---------------------------------------------------------------- +% The negative vspace is used to make sure that only one line is +% between the title and the first line for each of these pages. +\renewcommand{\contentsname}{\begin{center}\Large\normalfont TABLE OF CONTENTS\vspace{-.5in}\end{center}} +\renewcommand\listfigurename{\begin{center}\Large\normalfont LIST OF FIGURES\vspace{-.35in}\end{center}} +\renewcommand\listtablename{\begin{center}\Large\normalfont LIST OF TABLES\vspace{-.35in}\end{center}} + +%%---------------------------------------------------------------- +%%---------------------------------------------------------------- + +\begin{document} +\doublespacing + +%%--Set thesis info. +%%--*IMPORTANT* Title cannot be in ALL CAPS +\thesisTitle{Clever Thesis Title} +\thesisAuthor[Student Full Name]{Student Shortened Name} +\thesisMonth{August} +\thesisYear{2018} +\thesisAdvisor{Associate Professor FirstName LastName} +% location and degrees added +% note that the degree should be spelled out, not abbreviated +\thesisLocation{Hometown, HomeState, HomeCountry} +\thesisDegreeOne{Bachelor of Arts, University Name, 2013} +\thesisDegreeTwo{Master of Science, University Name, 2015} +%\thesisDegreeThree{Master of Science, College of William and Mary, 2015} +\thesisCommittee[Computer Science]{\ThesisAdvisor} +\thesisCommittee[Computer Science]{Associate Professor FirstName LastName} +\thesisCommittee[Computer Science]{Assistant Professor FirstName LastName} +\thesisCommittee[Computer Science]{Assistant Professor FirstName LastName} +\thesisCommittee[Computer Science]{Professor FirstName LastName} + +\thesisDedication{Insert heartfelt dedication here...} + +%%-- Insert contents of acknowledge.tex and abstract.tex. Don't +%%forget to check these files for formatting hints. +\thesisAcknowledge{acknowledge} +\thesisAbstract{abstract} + +%%--Create the dissertation Prolog +\makeThesisProlog + +%%--Include the dissertation chapters. +\include{Chapter-Introduction} + + +% Start calling the chapters Appendices +\appendix +\input{appendixA} +%\input{appendixB} +%\input{appendixC} + + +%--List of references not actually cited in the document. +%\nocite{NDSS04DTLS} + +%--Include the bibliography +\makeThesisBib{references} +%\bibliography{references} +%% I did not include the following in my dissertation, so I have no knowledge +%% of their formatting compliance. -- Ruth +%\makeThesisVita{vita} +%%\makeUMIAbstract{abstract} +\end{document} diff --git a/wmbib.bst b/wmbib.bst new file mode 100644 index 0000000..42430de --- /dev/null +++ b/wmbib.bst @@ -0,0 +1,1107 @@ +% wmbib.bst : modified version of plain.bst. +% Modified by Rance Necaise 07 June 1998. +% +% BibTeX standard bibliography style `plain' + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +FUNCTION {scapify} +{ duplicate$ empty$ + { pop$ "" } + { "{\sc " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names scapify } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " booktitle emphasize * ", " * format.editors * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/wmchapter.sty b/wmchapter.sty new file mode 100644 index 0000000..7234c21 --- /dev/null +++ b/wmchapter.sty @@ -0,0 +1,20 @@ +% to meet the specification of the margin above a +% chapter heading of 2 inches specified in the +% W&M Thesis & Dissertation Guide, it is necessary +% to redefine the vspace value in the following +% macro used by the report class in LaTeX 2e +% Bill Bynum, December 1998 +% +\def\@makechapterhead#1{% + \vspace*{0.5in}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \huge\bfseries \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} + diff --git a/wmthesis.cls b/wmthesis.cls new file mode 100755 index 0000000..be569e1 --- /dev/null +++ b/wmthesis.cls @@ -0,0 +1,643 @@ +%%--------------------------------------------------- +% The commented out commands are not needed for +% the 10/08/12 standards. Other commands have been +% modified to match these standards. -- Ruth +%%--------------------------------------------------- + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{wmthesis} + +%%--------------------------------------------------- +%%-- Load the base class and modify current macros. +%%--------------------------------------------------- + +\newif\if@usecppsyntax \@usecppsyntaxfalse + +\DeclareOption{cpp}{\@usecppsyntaxtrue} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}} +\ProcessOptions +%\PassOptionsToClass{12pt}{report} +\LoadClass{report} + +%%--------------------------------------------------- +%%--Set the section number depth. +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{4} +\setcounter{page}{2} + +%%--------------------------------------------------- +%%--Include some required packages. +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\RequirePackage{setspace} +\RequirePackage{float} +\RequirePackage{citesort} + +%%--------------------------------------------------- +%%--Must change the margin above the Chapter heading to 2 inches +\RequirePackage{wmchapter} + + +%%--------------------------------------------------- +%%--Create a vertical skip for the distance between the title and +%%--the first line of text on the prolog pages. +\newskip\thesisvskip +\thesisvskip 36pt + +%%--------------------------------------------------- +%%--Set the margins. +%\headheight6pt \headsep12pt +%\marginparwidth 1in +%\marginparsep 6pt +\oddsidemargin 0.5in%38pt %36pt +%\evensidemargin 38pt %36pt +\topmargin 0.25in +\rightmargin 0.25pt +\textwidth 5.9 in +\textheight 8.4 in +\footskip 24pt %%check this + +%%--------------------------------------------------- +%%--Set the pagestyle to headings. +\pagestyle{headings} + +%%--------------------------------------------------- +%%--Change the marginpar. +%\reversemarginpar +%\let\old@marginpar=\marginpar +%\def\marginpar#1{ +% \old@marginpar{\def\baselinestretch{1}\em\small #1}} + +%%--------------------------------------------------- +%%--Parameters that can be set by the user. +\def\thesis@listtables{y} +\def\thesis@listfigures{y} + +\newcommand{\notablelist}{\gdef\thesis@listtables{n}} +\newcommand{\nofigurelist}{\gdef\thesis@listfigures{n}} + +%%-------------------------------------------- +%%-- Prolog pages construction. +%%-------------------------------------------- + +%%--Macros used for the construction of the title page. +\newcommand{\thesisTitle}[1]{\gdef\thesis@title{#1}} +\newcommand{\thesisYear}[1]{\gdef\thesis@year{#1}} +\newcommand{\thesisMonth}[1]{\gdef\thesis@month{#1}} +\newcommand{\thesisAbstract}[1]{\gdef\thesis@abstract{#1}} +\newcommand{\thesisAcknowledge}[1]{\gdef\thesis@ack{#1}} +\newcommand{\thesisDedication}[1]{\gdef\thesis@Dedication{#1}} +\newcommand{\thesisVita}[1]{\gdef\thesis@vita{#1}} +\newcommand{\thesisBib}[1]{\gdef\thesis@bib{#1}} +\newcommand{\thesisAdvisor}[1]{\gdef\ThesisAdvisor{#1}} +%Location and Degrees added -- Ruth +\newcommand{\thesisLocation}[1]{\gdef\ThesisLocation{#1}} +\newcommand{\thesisDegreeOne}[1]{\gdef\ThesisDegreeOne{#1}} +\newcommand{\thesisDegreeTwo}[1]{\gdef\ThesisDegreeTwo{#1}} +\newcommand{\thesisDegreeThree}[1]{\gdef\ThesisDegreeThree{#1}} + +% \thesisAuthor macro +% defines two TeX variables (only usable in this file) +% \thesis@author is assumed to be a "short" version of the author's name +% used on the title page +% \thesis@authorx is assumed to be the full name of the author +% used on the approval, the UMI abstract, and the vita pages +% For example +% \thesisAuthor{A. Goode Student} +% sets both \thesis@author and \ thesis@authorx to +% "A. Goode Student" +% \thesisAuthor[Aloysius Goode Student]{A. Goode Student} +% sets \thesis@author to "A. Goode Student" and +% \thesis@authorx to "Aloysius Goode Student" +% +\newcommand{\thesisAuthor}[2][\empty]{ + \gdef\thesis@author{#2} + \ifx#1\empty \let\thesis@authorx\thesis@author + \else \gdef\thesis@authorx{#1}\fi} + +\def\thesis@abstract{\empty} +\def\thesis@ack{\empty} +\def\thesis@vita{\empty} +\def\thesis@bib{\empty} + +%%--Macro used to specify the committee. +\newcounter{thesis@members} +\setcounter{thesis@members}{1} + +\newcommand{\thesisCommittee}[2][\mbox{\hspace*{1ex}}]{ + \edef\thesis@ctr{\romannumeral\value{thesis@members}} + \expandafter\def\csname thesis@member\thesis@ctr\endcsname{#2} + \expandafter\def\csname thesis@position\thesis@ctr\endcsname{#1} + \addtocounter{thesis@members}{1}} + +%%--The prolog pages. +\newcommand{\makeThesisProlog}{ + \bigskip + \setcounter{page}{1} + \renewcommand{\thepage}{\roman{page}} + \pagestyle{plain} + \thispagestyle{empty} + +%%-------------------------------------------- +% Any of these pages can be individually commented +% out for non-final versions if desired -- Ruth +%%-------------------------------------------- +%%-- title page + \maketitlepage +%%-------------------------------------------- +%%-- copright page + \makecopyrightpage +%%-------------------------------------------- +%%-- approval page + \makeapprovalpage +%%-------------------------------------------- +%%-- compliance page + \makecompliancepage +%%-------------------------------------------- +%%-- abstract + \makeabstractpage +%%-------------------------------------------- +%-TOC pages + \newpage + \pagestyle{plain}\setcounter{page}{1} + {\large \tableofcontents } +%%-------------------------------------------- +%%-- acknowledgements + \makeacknowledgepage +%%-------------------------------------------- +%%-- dedication page + \makededicationpage +%%-------------------------------------------- +%%-- List of tables and/or figures. + \maketablesfigurespage +%%-------------------------------------------- +%%-- half-title page + \makehalftitlepage +%%-------------------------------------------- +%%-- end of prolog, start of thesis + \newpage + \pagestyle{plain} + \renewcommand{\thepage}{\arabic{page}} +} + + +%%-------------------------------------------- +%%-- Prolog related commands. +%%-------------------------------------------- + +%%--Page titles. +\def\acknowledgeName{ACKNOWLEDGMENTS} +\def\abstractName{ABSTRACT} +\def\complianceName{COMPLIANCE PAGE} + +%%-------------------------------------------- +%%--The title page. +\newcommand{\maketitlepage}{ + \begin{titlepage}\begin{singlespace} + \begin{center}{\large + \thesis@title \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ %8 lines between title and author name -- Ruth + \thesis@authorx \\ + \hspace{.1in} \\ %1 line between name and hometown -- Ruth + \ThesisLocation \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 4 lines between hometown and prior degrees -- Ruth + \ThesisDegreeOne \\ + \ThesisDegreeTwo \\ +% \ThesisDegreeThree % uncomment if you are more than 2 + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 4 lines between prior degrees and purpose statement -- Ruth + {A Dissertation presented to the Graduate Faculty\\ + of the College of William \& Mary in Candidacy for the Degree of\\ + }\\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 7 lines between purpose statement and department -- Ruth + {Department of Computer Science} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 5 lines between department and college -- Ruth + {College of William \& Mary\\ + \thesis@month\ \thesis@year} + } + \end{center}\end{singlespace} + \end{titlepage} + } + +%%-------------------------------------------- +%%--The copyright page +\newcommand{\makecopyrightpage}{ + \newpage + \begin{titlepage}\begin{singlespace} + \begin{center} + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + \hspace{1in} \\ + + + {\fontsize{12}{5}\selectfont \copyright~Copyright by Student Name 2018} + + \end{center} + \end{singlespace} \end{titlepage} +} + + +%%-------------------------------------------- +%%--The approval page. +\newcommand{\thesisapprovalwidth}{3in} +\newcommand{\makeapprovalpage}{ + \newpage + \pagestyle{empty} % no page number on approval page -- Ruth + \begin{singlespace} + \begin{center} + {\Large APPROVAL PAGE}\\ + {\large \hspace{.1in} } \\ + {\large \hspace{.1in} } \\ + {\large \hspace{.1in} } \\ % 3 lines between title and statement -- Ruth + {\large This Dissertation is submitted in partial fulfillment of \\ + the requirements for the degree of}\\ + \hspace{.1in} \\ % 1 lines between statements + {\large }\\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between statement and signature line -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small \thesis@author}\\ + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signature line and approved -- Ruth + {\large Approved by the Committee, \thesis@month\ \thesis@year}\\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 2 lines between approved and signature line -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small Committee Chair\\ + \thesis@memberi, \thesis@positioni\\ + College of William \& Mary} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signatures -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small\thesis@memberii, \thesis@positionii\\ + College of William \& Mary} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signatures -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small\thesis@memberiii, \thesis@positioniii\\ + College of William \& Mary} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signatures -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small\thesis@memberiv, \thesis@positioniv\\ + College of William \& Mary} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signatures -- Ruth + \underline{\hspace*{\thesisapprovalwidth}}\\ + {\small\thesis@memberv, \thesis@positioniv\\ + The University of Texas at Dallas} + \hspace{.1in} \\ + \hspace{.1in} \\ + \hspace{.1in} \\ % 3 lines between signatures -- Ruth + \end{center}\end{singlespace} + +} + +%%-------------------------------------------- +%%--The Compliance Page +\newcommand{\makecompliancepage}{ + \newpage\pagestyle{empty} % no page number on abstract page -- Ruth + \begin{center} + \Large\complianceName + \vspace{2em} + \end{center} + \begin{singlespace} +\begin{large} +\setlength\parindent{32pt}Research approved by +\vspace{1em} + \begin{center} + \underline{Protection of Human Subjects Committee} + \end{center} +\vspace{4em} + +%----------------------------------------------------- +%----Protocol-Numbers--------------------------------- +Protocol number(s): PHSC-\#\#\#\#-\#\#-\#\#-\#\#\#\#\#-protocol\\ +\vspace{-0.5em} + + +\setlength\parindent{140pt} PHSC-\#\#\#\#-\#\#-\#\#-\#\#\#\#\#-protocol\\ +\vspace{1em} + + + +%----------------------------------------------------- +%----Dates-of-Approval--------------------------------- +\setlength\parindent{32pt}Date(s) of approval: mm/dd/yyyy\\ +\vspace{-0.5em} + +\setlength\parindent{141pt} mm/dd/yyyy\\ + +\end{large} +\end{singlespace} +} + + +%%-------------------------------------------- +%%--The abstract page +\newcommand{\makeabstractpage}{ + \newpage\pagestyle{empty} % no page number on abstract page -- Ruth + \begin{center} + \Large\abstractName + \end{center} + \begin{singlespace} + \input{\thesis@abstract} + \end{singlespace} +} + +%%-------------------------------------------- +%%--The acknowledgement page +\newcommand{\makeacknowledgepage}{ + \newpage + \begin{center} + \addcontentsline{toc}{chapter}{\rm Acknowledgments} + \Large\acknowledgeName + \vspace{-0.4in} + \end{center} + \begin{singlespace} + \input{\thesis@ack} + \end{singlespace} +} + +%%-------------------------------------------- +%%--The dedication page +% This is to be "whole page" justified, so if your dedication is more than +% one line, the amount of vspace will need to be adjusted. -- Ruth +\newcommand{\makededicationpage}{ + \newpage + \begin{center} + \addcontentsline{toc}{chapter}{\rm Dedication} + \vspace*{3in} + {\large \thesis@Dedication} + \end{center} +} + + +%%-------------------------------------------- +%%--The tables and/or figures pages +\newcommand{\maketablesfigurespage}{ + \newpage + \setlength{\cftafterlottitleskip}{2em} + \addcontentsline{toc}{chapter}{\rm List of Tables} + {\large \listoftables} + \newpage + \setlength{\cftafterloftitleskip}{2em} + \addcontentsline{toc}{chapter}{\rm List of Figures} + {\large \listoffigures } +} + +%%-------------------------------------------- +%%--The half-title page +% This page is not necessary. If you do not include it, be sure to +% still include the setcounter command to get the first page +% numbered as such. +\newcommand{\makehalftitlepage}{ + \newpage + \setcounter{page}{1} + \pagestyle{empty} + \begin{center} + \vspace*{3in} + {\Large \thesis@title} + \end{center} +} + +%%-------------------------------------------- +%%-- Bibliography related commands. +%%-------------------------------------------- + + +%%--Set the bib style +\def\thesisBibStyle{wmbib} + +%%--Define a single command for making the bibliography. +\newcommand{\makeThesisBib}[1]{ + \bibliographystyle{\thesisBibStyle} + \bibliography{#1}} + +%%--Redefine the thebibliography environment +\let\wm@thebibliography\thebibliography +\let\wm@endthebibliography\endthebibliography + +\def\thebibliography#1{\begin{spacing}{1}\wm@thebibliography{#1} + \addcontentsline{toc}{chapter}{Bibliography}} +\def\endthebibliography{\wm@endthebibliography\end{spacing}} + +\newcommand{\makeThesisVita}[1]{ + \newpage + \pagestyle{headings}\markright{} + \begin{center} + \addcontentsline{toc}{chapter}{Vita} + \Large VITA + \vskip\thesisvskip + \thesis@authorx + \vskip\thesisvskip + \end{center} + \input{#1} +} + +% I did not write this or use this, so I do not know if it is compliant. -- Ruth +\newcommand{\makeUMIAbstract}[1]{ + \newpage + \pagestyle{empty} +\thispagestyle{empty} + \begin{center} + \Large \thesis@title \\ + \parbox{1in}{ ABSTRACT } \vskip\thesisvskip + \end{center} + \input{#1} + \vfill + \begin{center} + \large \thesis@authorx \\ + Department of Computer Science \\ + The College of William and Mary in Virginia \\ + Advisor: \ThesisAdvisor \\ + \thesis@title + \end{center} +} + +%%-------------------------------------------- +%%-- Definition and Quotation commands. +%%-------------------------------------------- + +\newtheorem{define}{Definition}[chapter] +\newtheorem{theorem}{Theorem}[chapter] +\newtheorem{lemma}{Lemma}[chapter] +\newtheorem{notate}{Notation}[chapter] +\newtheorem{axiom}{Axiom}[chapter] + +\newenvironment{proof}[1][Proof] +{\noindent {\bf #1: }}{\hfill $\blacksquare$} + +%%----------------------------------------------- +%%-- Float related environments and commands. +%%----------------------------------------------- + +%%--Modify behavior of the figure and table environment. +\def\fps@figure{hbt} +\def\fnum@figure{{\bf \figurename~\thefigure}} +\def\fps@table{htb} +\def\fnum@table{{\bf \tablename~\thetable}} + +\def\mathfigure{\thesisfiguretrue\figure} +\def\endmathfigure{\endfigure\thesisfigurefalse} + +%%--Redefine the @makecaption command so \small can be used. +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{{\small #1: #2}}% + \def\baselinestretch{1}\small%\@newbaseline + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + + + +%%--This allows for the correct setting of \arraystrecth in the +%%--math environments when used within a figure. +%\let\old@figure=\figure +%\let\old@endfigure=\endfigure +%\renewenvironment{figure}[1][\empty]{ +% \ifx\empty \begin{old@figure} +%\def\figure{\thesisFiguretrue\old@figure} +%\def\endfigure{\global\thesisFigurefalse\old@endfigure} + + +%%----------------------------------------------- +%%-- Modify the displayed math environments. +%%----------------------------------------------- + +\newif\ifthesisfigure +\thesisfigurefalse + +%%--Set the arraystretch for math display. +\everydisplay{ + \abovedisplayskip \baselinestretch\abovedisplayskip %plus 0.0pt minus 10pt% + \belowdisplayskip \abovedisplayskip% + \abovedisplayshortskip \abovedisplayshortskip% + \belowdisplayshortskip \belowdisplayshortskip% + \ifthesisfigure\def\arraystretch{1}\else\def\arraystretch{0.5}\fi} + +\def\@setsize#1#2#3#4{%\@nomath#1%-KPC + \let\@currsize#1\baselineskip + #2\baselineskip\baselinestretch\baselineskip + \parskip\baselinestretch\parskip + \setbox\strutbox\hbox{\vrule height.7\baselineskip + depth.3\baselineskip width\z@}%-KPC + \normalbaselineskip\baselineskip#3#4} + + + +%%-------------------------------------------- +%%-- Miscellaneous commands. +%%-------------------------------------------- + +%%--Commands to simplify font changing. +\newcommand{\sfup}{\sffamily\mdseries\upshape} +\newcommand{\sfsc}{\ttfamily\mdseries\scshape} +\newcommand{\sfit}{\sffamily\mdseries\itshape} +\newcommand{\rmup}{\rmfamily\mdseries\upshape} +\newcommand{\rmbf}{\rmfamily\bfseries\upshape} +\newcommand{\rmit}{\rmfamily\mdseries\itshape} +\newcommand{\ttup}{\ttfamily\mdseries\upshape} + +\endinput + +%%--The \tableofcontents. +%%%%% code removed REL + +%%--The \listoffigures command. +\renewcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \oldchapter*{\listfigurename + \@mkboth{\uppercase{\listfigurename}}{\uppercase{\listfigurename}}\vspace{-4em}}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi} + +%%--The \listoftables command. +\renewcommand\listoftables{% + \if@twocolumn% + \@restonecoltrue\onecolumn% + \else% + \@restonecolfalse% + \fi% + \oldchapter*{\listtablename% + \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi} + +\usepackage{wmchap} +\endinput