% Revision: 07-25-2007 % Revision History % 07-10-2008 : Corrected Alignment of signature boxes on Masters/PhD Approval page % 07-25-2007 : Corrected some spelling errors % 05-16-2006 : Added etd option and moved most packages from class file to template % 05-15-2006 : Initial version. % % Known bugs % Having a tiny bit of the abstract spill to second page defeats page number removal. % Workaround: make the abstract a little longer or a little shorter. % % The BYUPhys class is for producing theses and dissertations % in the BYU department of physics and astronomy. You can supply % the following optional arguments in the square brackets to % specify the thesis type: % % senior : Produces the senior thesis preliminary pages (default) % honors : Produces the honors thesis preliminary pages % masters : Produces the masters thesis preliminary pages % phd : Produces the PhD dissertation preliminary pages % % The default format is appropriate for printing, with blank pages % inserted after the preliminary pages in twoside mode so you can % send it directly to a two-sided printer. However, for ETD % submission the blank pages need to be removed from the final output. % The following option does this: % % etd : Produces an electronic copy with no blank pages in the preliminary section % % The rest of the class options are the same as the regular book class. % A few to remember: % % oneside : Produces single sided print layout (recommended for theses less than 50 pages) % twoside : Produces single sided print layout (the default if you remove oneside) % % The BYUPhys class provides the following macros: % % \makepreliminarypages : Makes the preliminary pages % \clearemptydoublepage : same as \cleardoublepage but doesn't put page numbers % on blank intervening pages % \singlespace : switch to single spaced lines % \doublespace : switch to double spaced lines % % ------------------------------------------------------------------------------------------------------ % \NeedsTeXFormat{LaTeX2e} \ProvidesClass{BYUPhys} % ---------------------------- declarations ------------------------- % % These macros are used to declare arguments needed for the % construction of the preliminary pages % The year and month the degree is awarded \newcommand{\University}[1]{\gdef\@University{#1}} \newcommand{\Faculty}[1]{\gdef\@Faculty{#1}} \newcommand{\Chair}[1]{\gdef\@Chair{#1}} \newcommand{\Lab}[1]{\gdef\@Lab{#1}} \newcommand{\GrText}[1]{\gdef\@GrText{#1}} \newcommand{\AcadGroup}[1]{\gdef\@AcadGroup{#1}} \newcommand{\AdvisorText}[1]{\gdef\@AdvisorText{#1}} \newcommand{\ConsultantText}[1]{\gdef\@ConsultantText{#1}} \newcommand{\ApprovalText}[1]{\gdef\@ApprovalText{#1}} \newcommand{\ApprovalAText}[1]{\gdef\@ApprovalAText{#1}} \newcommand{\ApprovalBText}[1]{\gdef\@ApprovalBText{#1}} \newcommand{\DateText}[1]{\gdef\@DateText{#1}} \newcommand{\Year}[1]{\gdef\@Year{#1}} \newcommand{\Month}[1]{\gdef\@Month{#1}} \newcommand{\City}[1]{\gdef\@City{#1}} % The full name of the degree \newcommand{\degree}[1]{\gdef\@degree{#1}} % The name of this document (thesis/dissertation) \newcommand{\docname}[1]{\gdef\@docname{#1}} % First line of title %\newcommand{\TitleTop}[1]{\gdef\@TitleTop{\mbox{\uppercase{#1}}}} \newcommand{\TitleTop}[1]{\gdef\@TitleTop{\mbox{#1}}} \newcommand{\TitleTopEng}[1]{\gdef\@TitleTopEng{\mbox{#1}}} % Second line of title \newcommand{\TitleMiddle}[1]{\gdef\@TitleMiddle{\mbox{#1}}} \newcommand{\TitleMiddleEng}[1]{\gdef\@TitleMiddleEng{\mbox{#1}}} % Third line of title \newcommand{\TitleBottom}[1]{\gdef\@TitleBottom{\mbox{#1}}} \newcommand{\TitleBottomEng}[1]{\gdef\@TitleBottomEng{\mbox{#1}}} % Title page text \newcommand{\TitlePageText}[1]{\gdef\@TitlePageText{#1}} % Abstract text \newcommand{\Abstract}[1]{\gdef\@Abstract{#1}} \newcommand{\AbstractEng}[1]{\gdef\@AbstractEng{#1}} \newcommand{\AbstractText}[1]{\gdef\@AbstractText{#1}} % Acknowledgments text \newcommand{\Acknowledgments}[1]{\gdef\@Acknowledgments{#1}} \newcommand{\AcknowledgmentsText}[1]{\gdef\@AcknowledgmentsText{#1}} % The author's name \newcommand{\AuthorText}[1]{\gdef\@AuthorText{#1}} \newcommand{\Author}[1]{\gdef\@Author{#1}} \newcommand{\AuthorEng}[1]{\gdef\@AuthorEng{#1}} \newcommand{\AuthorGenitiveCase}[1]{\gdef\@AuthorGenitiveCase{#1}} % The name of the advisor \newcommand{\Advisor}[1]{\gdef\@Advisor{#1}} \newcommand{\AdvisorDegree}[1]{\gdef\@AdvisorDegree{#1}} % The name of the consultant \newcommand{\Consultant}[1]{\gdef\@Consultant{#1}} \newcommand{\ConsultantDegree}[1]{\gdef\@ConsultantDegree{#1}} % The name of the committee member 2 \newcommand{\MemberA}[1]{\gdef\@MemberA{#1}} % The name of the committee member 3 \newcommand{\MemberB}[1]{\gdef\@MemberB{#1}} % The name of the committee member 4 \newcommand{\MemberC}[1]{\gdef\@MemberC{#1}} % The name of the committee member 5 \newcommand{\MemberD}[1]{\gdef\@MemberD{#1}} % The name of the department chair \newcommand{\DepRep}[1]{\gdef\@DepRep{#1}} % The title of the department chair (allow for associate chair, etc.) \newcommand{\DepRepTitle}[1]{\gdef\@DepRepTitle{#1}} % The name of the department undergraduate coordinator \newcommand{\UgradCoord}[1]{\gdef\@UgradCoord{#1}} % The name of the dean \newcommand{\Dean}[1]{\gdef\@Dean{#1}} % The title of the dean \newcommand{\DeanTitle}[1]{\gdef\@DeanTitle{#1}} % The name of the honors dean \newcommand{\HonorsDean}[1]{\gdef\@HonorsDean{#1}} % Set default values for fields \University{2010} \Year{2010} \Month{Month} \Author{Author} \TitleTop{Title} % \Abstract{Abstract text goes here.} % \Acknowledgments{Acknowledgment text goes here.} % \degree{Bachelor of Science} \docname{Master Thesis} \Advisor{Advisor} \MemberA{Committee Member A} \MemberB{Committee Member B} \MemberC{Committee Member C} \MemberD{Committee Member D} \DepRep{Department Chair Name} \DepRepTitle{Chair} \Dean{Dean Name} \DeanTitle{Associate Dean} \HonorsDean{Honors Dean Name} \UgradCoord{Department Ugrad Coordinator } % ---------------------------- options ------------------------------ % A command to switch to single spaced lines \newcommand{\singlespace}{\renewcommand{\baselinestretch}{1}\small\normalsize} \newcommand{\oneandhalfspace}{\renewcommand{\baselinestretch}{1.33}\small\normalsize} % A command to switch to double spaced lines \newcommand{\doublespace}{\renewcommand{\baselinestretch}{1.66}\small\normalsize} % A command pirated from chngpage.sty \DeclareRobustCommand{\ch@ngetext}{% \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}% \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}% \if@twocolumn% \advance\columnwidth-\columnsep \divide\columnwidth\tw@% \@firstcolumntrue% \fi% \setlength{\hsize}{\columnwidth}% \setlength{\linewidth}{\hsize}% } % A command to make margins right for the initial single sided business. \newcommand{\preliminarymargins}{% \addtolength{\textwidth}{-0.5in}% \addtolength{\evensidemargin}{0.5in}% \ch@ngetext% } % A command to fix the margins after the initial single sided business. \newcommand{\fixmargins}{% \addtolength{\textwidth}{0.5in} \addtolength{\evensidemargin}{-0.5in} \ch@ngetext% } % Define the preliminary section for a senior thesis. % The senior option is essentially ignored since it is the default \newcommand{\makepreliminarypages}{ \preliminarymargins \titlepage %\copyrightpage %\seniorapprovalpage \abstractpage \fixmargins \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge} } % Define the honors thesis preliminary section if the 'honors' option is specified \DeclareOption{honors}{ \renewcommand{\makepreliminarypages}{ \preliminarymargins \honorstitlepage \copyrightpage \seniorapprovalpage \abstractpage % \acknowledgmentspage \fixmargins \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge} } } % Changes to masters thesis preliminary section if the 'masters' option is specified \DeclareOption{masters}{ \degree{Master of Science} \docname{thesis} \renewcommand{\makepreliminarypages}{ \preliminarymargins \titlepage \copyrightpage \masterapprovalpage \acceptancepage \abstractpage % \acknowledgmentspage \fixmargins \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge} } } % Changes to PhD preliminary section if the 'phd' option is specified \DeclareOption{phd}{ \degree{Doctor of Philosophy} \docname{dissertation} \renewcommand{\makepreliminarypages}{ \preliminarymargins \titlepage \copyrightpage \phdapprovalpage \acceptancepage \abstractpage % \acknowledgmentspage \fixmargins \renewcommand{\clearemptydoublepage}{\cle@remptydoublep@ge} } } % --------------------- Some commands to handle the single sided preliminary pages ------------------ % Define the '\clearemptydoublepage' command to clear pages but not number any blank pages inserted. % This is taken from the BYUThesis.cls file \let\cle@rdoublep@ge\cleardoublepage \newcommand{\cle@remptydoublep@ge}{ \clearpage \if@twoside \ifodd\c@page\else \fi\fi {\pagestyle{empty}\cle@rdoublep@ge}} \newcommand{\clearemptydoublepage}{\cle@remptydoublep@ge} % Create an abstract environment which is single sided, even in a double sided book. % again, this was taken from BYUThesis.cls \def\skip@bstr@ctp@ges{\relax} \def\@@skip@bstr@ctp@ges{% \if@twoside \ifodd\c@page\else \vbox{\vbox to \vsize{}} \clearpage\fi \else \fi \afterpage{\skip@bstr@ctp@ges} } \newenvironment{abstractenv}{ \def\skip@bstr@ctp@ges{\@@skip@bstr@ctp@ges} \afterpage{\skip@bstr@ctp@ges} \pagestyle{empty} } % Redefine above commands if etd option is specified. The blank pages make printing nice, % but they don't want them in the submitted PDF %\DeclareOption{etd}{ % \renewcommand{\clearemptydoublepage}{ \clearpage } % \renewenvironment{abstractenv}{\afterpage{\thispagestyle{empty}}\pagestyle{empty}}{} % } % ------------------------ Load the class and needed packages --------------------------------- % Load the book class \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} \ProcessOptions\relax \LoadClass[a4,12pt]{article} % The afterpage package is required to make single sided formal pages % in a double sided environment \RequirePackage{afterpage} % Note: the hyperref package is required to make an appropriate ETD. % However, we don't require it here since it is supposed to be the last % package loaded and students may want to load other packages in the % main tex file. So that this class file doesn't crash if the student % forgets to load hyperref, we have used the following commands below: % % \providecommand\phantomsection{} % \providecommand\pdfbookmark[3][]{} % % These commands provide dummy versions of the macros, but won't % bother the real versions if the hyperref package is loaded in the % tex file. % ---------------------------- main code ---------------------------- % Set the margins to BYU specifications for the single sided preliminary % pages. At the end of the \makepreliminarypages command we fix the margins % to be appropriate alternating values for double sided printing (if selected). % If the \makepreliminarypages macro is not run, this never gets fixed. \setlength{\marginparwidth}{0pt} \setlength{\marginparsep}{0pt} \setlength{\oddsidemargin}{0.3in} \setlength{\evensidemargin}{0in} \setlength{\textwidth}{6in} \setlength{\topmargin}{0in} \setlength{\headheight}{0.125in} \setlength{\headsep}{0.25in} \setlength{\textheight}{8.625in} \setlength{\footskip}{0.25in} \raggedbottom % Redefine the Table of Contents to deal with some blank page % and bookmarking issues relating to ETD submission %\let\TEMPtableofcontents\tableofcontents %\renewcommand{\tableofcontents}{ % \clearemptydoublepage %\providecommand\phantomsection{} \phantomsection %\addcontentsline{toc}{chapter}{Оглавление} %\TEMPtableofcontents %} % Redefine the List of Figures to deal with some blank page % and bookmarking issues %\let\TEMPlistoffigures\listoffigures %\renewcommand{\listoffigures}{ % \providecommand\phantomsection{} \phantomsection %\addcontentsline{toc}{chapter}{List of Figures} %\TEMPlistoffigures %} % Redefine the Bibliography to deal with a bookmarking issues \let\TEMPbibliography\bibliography \renewcommand{\bibliography}{ \cleardoublepage \phantomsection \TEMPbibliography } %---------------------------- The Preliminary Page Definitions -------------------------- % ============================== Title Page =============================== \renewcommand{\titlepage}{ \begin{center} \thispagestyle{empty} \providecommand\pdfbookmark[3][]{} \pdfbookmark[1]{\@TitlePageText}{bm:Title} \includegraphics[height=4cm,keepaspectratio]{src/assets/msu_title.png}\\[0.1cm] %\vspace*{0.375in} \@University\\ \@Faculty\\ \@Chair\\ \ifdefined\@Lab{\scriptsize \@Lab\\[\baselineskip]}\fi \vspace{2.5cm} {\large \@Author \\[\baselineskip] %\HRule \\[0.4cm] \textbf{\@TitleTop}\\ \ifdefined\@TitleMiddle\textbf{\@TitleMiddle}\\\fi \ifdefined\@TitleBottom\textbf{\@TitleBottom}\\\fi \ifdefined\@TitleTopEng\textbf{\\\@TitleTopEng}\\\fi \ifdefined\@TitleMiddleEng\textbf{\@TitleMiddleEng}\\\fi \ifdefined\@TitleBottomEng\textbf{\@TitleBottomEng}\\\fi} \vspace{1.5cm} \@docname\\ %\HRule \\[1.5cm] \normalsize \vfill \begin{flushright} %\emph{\@AuthorText:\\} %{\small \@GrText~\@AcadGroup\\} %{\large \@Author \\[\baselineskip]} \textbf{\@AdvisorText:\\} {\large ~ \@AdvisorDegree~ \@Advisor\\} \ifdefined\@Consultant \textbf{\\\@ConsultantText:\\} {\large ~ \ifdefined\@ConsultantDegree\@ConsultantDegree\fi~ \@Consultant\\} \fi \end{flushright} \vfill %\vskip0.667in %\@degree \\ \vfill \@City, \@Year \\[\baselineskip] \end{center} \cleardoublepage } % ============================== Honors Title Page ======================== \newcommand{\honorstitlepage}{ \thispagestyle{empty} \begin{center} %\providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Title Page}{bm:Title} \vspace*{0.375in} \@TitleTop\\[\baselineskip] \@TitleBottom\\ \vfill \@Author, \vfill %Submitted to Brigham Young University in partial fulfillment\\[\baselineskip] %of graduation requirements for University Honors\\[2\baselineskip] %Department of Physics and Astronomy\\[\baselineskip] %\@Month~\@Year \@City,~\@Year \vfill \end{center} \parbox[t]{2.75in}{ Advisor: \@Advisor \\[.5\baselineskip] Signature: \hrulefill} \hfill \parbox[t]{2.75in}{ Honors Dean: \@HonorsDean \\[.5\baselineskip] Signature: \hrulefill} \clearemptydoublepage } % ======================== Copyright page =============================== \newcommand{\copyrightpage}{ \thispagestyle{empty} \providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Copyright}{bm:Copyright} \vspace*{\fill} \begin{center} Copyright \copyright\ \@Year~\@Author\\[\baselineskip] All Rights Reserved\\[5\baselineskip] \end{center} \vspace{1in} \vfill \clearemptydoublepage } % =============================== Approval page ======================= \newcommand{\datebox}{ \parbox[t]{1.5in}{ \ \\[2\baselineskip] \rule{1.5in}{0.4pt}\\ \@DateText } } \newcommand{\signaturebox}[1]{ \parbox[t]{3.6in}{ \ \\[2\baselineskip] \rule{3.6in}{0.4pt}\\ #1 } } \newcommand{\phdapprovalpage}{ \thispagestyle{empty} \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Graduate Committee Approval}{bm:ComAp} \vspace*{0.375in} BRIGHAM YOUNG UNIVERSITY\\[3\baselineskip] GRADUATE COMMITTEE APPROVAL\\[5\baselineskip] of a \@docname~submitted by\\[\baselineskip] \@Author\\[2\baselineskip] \end{center} \noindent This dissertation has been read by each member of the following graduate committee and by majority vote has been found to be satisfactory.\\[\baselineskip] \datebox\hfill\signaturebox{\@Advisor, Chair}\\ \datebox\hfill\signaturebox{\@MemberA}\\ \datebox\hfill\signaturebox{\@MemberB}\\ \datebox\hfill\signaturebox{\@MemberC}\\ \datebox\hfill\signaturebox{\@MemberD} \vfill \clearemptydoublepage } \newcommand{\masterapprovalpage}{ \thispagestyle{empty} \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Graduate Committee Approval}{bm:ComAp} \vspace*{0.375in} BRIGHAM YOUNG UNIVERSITY\\[3\baselineskip] GRADUATE COMMITTEE APPROVAL\\[5\baselineskip] of a \@docname~submitted by\\[\baselineskip] \@Author\\[2\baselineskip] \end{center} \noindent This thesis has been read by each member of the following graduate committee and by majority vote has been found to be satisfactory.\\[\baselineskip] \datebox\hfill\signaturebox{\@Advisor, Chair}\\ \datebox\hfill\signaturebox{\@MemberA}\\ \datebox\hfill\signaturebox{\@MemberB}\\ \vfill \clearemptydoublepage } \newcommand{\seniorapprovalpage}{ \thispagestyle{empty} \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Department Approval}{bm:DepAp} \vspace*{0.375in} \@University\\[3\baselineskip] {\bf \@ApprovalText}\\[5\baselineskip] \@docname~\@ApprovalAText\\[\baselineskip] {\em \@AuthorGenitiveCase}\\[2\baselineskip] \@ApprovalBText \\[\baselineskip] \end{center} \datebox\hfill\signaturebox{\@Advisor, \@AdvisorText}\\ %\datebox\hfill\signaturebox{\@UgradCoord, Research Coordinator}\\ %\datebox\hfill\signaturebox{\@DepRep, \@DepRepTitle}\\ \vfill \clearemptydoublepage } % ======================= Acceptance Page ============================ \newcommand{\acceptancepage}{ \thispagestyle{empty}% \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[0]{Acceptance Page}{bm:Accept} \vspace*{0.375in} BRIGHAM YOUNG UNIVERSITY\\[3\baselineskip] \end{center}% \noindent% As chair of the candidate's graduate committee, I have read the \@docname\ of \@Author \ in its final form and have found that (1) its format, citations, and bibliographical style are consistent and acceptable and fulfill university and department style requirements; (2) its illustrative materials including figures, tables, and charts are in place; and (3) the final manuscript is satisfactory to the graduate committee and is ready for submission to the university library.\\[2\baselineskip] \datebox\hfill\signaturebox{\@Advisor\\Chair, Graduate Committee} \vskip 0pt plus 2fill \noindent Accepted for the Department\par\hfill% \signaturebox{\@DepRep, \@DepRepTitle\\Department of Physics and Astronomy }{} \vfill \noindent Accepted for the College\par\hfill \signaturebox{\@Dean, \@DeanTitle \\ College of Physical and Mathematical Sciences} \clearemptydoublepage } % ========================= Abstract =================================== \newcommand{\abstractpage}{ \begin{abstractenv} \ifdefined\@Abstract \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[1]{\@AbstractText}{bm:Abstract} \vspace*{0.375in} {\bf \@AbstractText}\\[1\baselineskip] \@TitleTop \ifdefined\@TitleMiddle\\\@TitleMiddle\fi \ifdefined\@TitleBottom\\\@TitleBottom\fi\\[1\baselineskip] {\em \@Author}\\[\baselineskip] \end{center} \renewcommand{\baselinestretch}{1.33}\small\normalsize \@Abstract \cleardoublepage \fi \ifdefined\@AbstractEng \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[1]{Abstract}{bm:AbstractEng} \vspace*{0.375in} {\bf Abstract}\\[1\baselineskip] \@TitleTopEng \ifdefined\@TitleMiddleEng\\\@TitleMiddleEng\fi \ifdefined\@TitleBottomEng\\\@TitleBottomEng\fi\\[1\baselineskip] {\em \@AuthorEng}\\[\baselineskip] \end{center} \renewcommand{\baselinestretch}{1.33}\small\normalsize \@AbstractEng \cleardoublepage \fi \ifdefined\@Acknowledgments\acknowledgmentspage\fi \end{abstractenv} } % ========================= Acknowledgments ============================== \newcommand{\acknowledgmentspage}{ \begin{center} \providecommand\pdfbookmark[3][]{} \pdfbookmark[1]{\@AcknowledgmentsText}{bm:Acknowledgments} \vspace*{0.375in} {\bf \@AcknowledgmentsText}\\[1\baselineskip] \end{center} \renewcommand{\baselinestretch}{1.33}\small\normalsize \@Acknowledgments \cleardoublepage } \RequirePackage{float} \newfloat{listing}{thp}{lol} \floatname{listing}{\@ListingText} \newcommand{\ListingText}[1]{\gdef\@ListingText{#1}} \RequirePackage{algorithm} \newcommand{\AlgorithmText}[1]{\gdef\@AlgorithmText{#1}} \renewcommand{\ALG@name}{\@AlgorithmText} \RequirePackage{algorithmicx} % Для записи алгоритмов в псевдокоде \RequirePackage[noend]{algpseudocode} \algnewcommand{\IfThenElse}[3]{% \IfThenElse{}{}{} \State \algorithmicif\ #1\ \algorithmicthen\ #2\ \algorithmicelse\ #3} \RequirePackage{titlesec} \RequirePackage[unicode, hidelinks]{hyperref} \hypersetup{colorlinks=false} \RequirePackage{cite} \RequirePackage{bookmark} \newcommand{\PDFTitle}{\@Author~-~\@TitleTop\ifdefined\@TitleMiddle~\@TitleMiddle\fi\ifdefined\@TitleBottom~\@TitleBottom\fi} \newcommand{\PDFAuthor}{\@Author} \emergencystretch 3em