% !TeX program = lualatex
% !BIB program = biber
\ProvidesFile{Main_TeX.tex}[2026-10-06 PurdueThesis template main file]
% COMPILING (read this first)
%
% Compile with LuaLaTeX, not pdfLaTeX, and make the references with
% Biber. The two "% !" lines above tell TeXstudio and TeXworks which
% programs to use. On Overleaf, set Menu > Compiler to LuaLaTeX;
% Overleaf runs Biber by itself. In a desktop editor (MiKTeX or
% TeX Live) run LuaLaTeX, then Biber, then LuaLaTeX twice -- or run
% latexmk -lualatex Main_TeX
% If you run only LuaLaTeX, every citation prints in bold as its key
% instead of a number, because the references were never made. Run
% Biber again whenever you add or change a citation.
%
% This is the template root file for an example thesis (for master's
% degree) or dissertation (for a Ph.D.). From now on "thesis" will
% refer to both of these unless stated otherwise.
%
% LaTeX systems include auxiliary programs to do bibliographies,
% indexes, etc. The latexmk program runs the fewest programs needed
% to update your thesis.
%
% On Overleaf (run LaTeX on the web) clicking 'Recompile' will recompile
% your thesis.
%
% Use this command on Linux to do all the steps needed to compile your thesis.
% For Mark Senn:
% Use
% latexmk -e '$biber="biber --output-safechars"' -f -g -lualatex --shell-escape Main_TeX
% to get extra debugging information printed. Sometimes the `-f -g' can
% be deleted to run faster.
% For everyone else:
% Use
% latexmk -e '$biber="biber --output-safechars"' -f -g -lualatex Main_TeX
% Sometimes the `-f -g' can be deleted to run faster.
% Here is how that command works:
% latexmk
% The latexmk program figures out how to compile
% your thesis in the quickest way.
% -e '$biber="biber --output-safechars"'
% Add the '--output-safechars' option to biber,
% the command that makes your references. This
% command makes accented characters in your references
% work ok.
% -f
% Force latexmk to process your entire thesis, even
% if it contains errors.
% -g
% Force latexmk to process document fully, even under situations
% where latexmk would normally decide that no changes in the
% source files have occurred since the previous run. This option
% is useful, for example, if you change some options and wish to
% reprocess the files.
% -lualatex
% The -lualatex option process your thesis using the LuaLaTeX
% version of LaTeX. LuaLaTeX has the Lua programmng language
% added to make programming LaTeX easier. You won't need to
% learn Lua or do any LaTeX programming for your thesis.
% --shell-escape
% The --shell-escape option allows you to run external programs
% from inside your thesis.
% Main_TeX
% Process your Main_TeX.tex file.
%
%
% NOTE TO SELF
% To count the number of references see
% https://tex.stackexchange.com/questions/66829/count-number-of-references-using-biblate
% See set the \labelnumberwidth see page 316 of
% https://ctan.math.illinois.edu/macros/latex/contrib/biblatex/doc/biblatex.pdf
%
%
% PROGRAM BIBLIOGRAPHY PurdueThesis.cls thesis.tex WORKS
% STYLE RCS rev RCS rev
% Mathematics apa 1.249 1.58 yes
% Mathematics ieee 1.250 1.59 yes
% Electrical and Computer Engineering ieee 1.250 1.60 yes
% Earth, Atmospheric, and Planetary Sciences apa 1.251 1.61 yes
% Mathematics apa 1.252 1.62 yes
% Technology Leadership and Innovation apa 1.253 1.63 yes
% Mathematics numeric ???? ???? ????
% Earth, Atmospheric, and Planetary Sciences apa ???? ???? ????
%
%
% References cited below:
%
% TM2017 is short for Thesis Manual 2017:
% A Manual for the Preparation of Graduate Theses,
% eighth revised edition,
% Thesis and Dissertation Office,
% Purdue University,
% 2017,
% revised August 30, 2017,
% http://www.purdue.edu/gradschool/documents/thesis/graduate-thesis-manual.pdf,
% last retrieved on May, 8, 2021.
%
% In this file, change the example information to your information.
%
% author
% Put your name here.
\newcommand{\ZZauthor}{Your Name}
% campus
% Choose a campus from the following list:
% VALUE COMMENT
% West Lafayette 2026 handbook
% Indianapolis 2026 handbook
% Fort Wayne 2026 handbook
% Hammond 2026 handbook
% Bloomington not on the 2026 handbook's list
% Manoa not on the 2026 handbook's list; don't include
% the macron character here, it will get printed
% automatically
% Reno not on the 2026 handbook's list
% Westville not on the 2026 handbook's list
%
% The August 2026 Purdue Standard Thesis Handbook lists only the first
% four. All of them are printed followed by ", Indiana". The rest are
% kept because theses have been written with them and they still work,
% but if you are depositing at Purdue, use one of the four.
\newcommand{\ZZcampus}{Choose Campus Location}
% \newcommand{\ZZcampus}{Fort Wayne}
% degree
% If you are in `Motorsports Engineering'
% use `Master of Science in Mechanical Engineering'.
%
% These fifteen are the "Choose Degree" list in the August 2026 Purdue
% Standard Thesis Handbook. If one of them fits, use it.
% Doctor of Engineering
% Doctor of Philosophy
% Doctor of Technology
% Master of Arts
% Master of Fine Arts
% Master of Science
% Master of Science in Aeronautical and Astronautical Engineering
% Master of Science in Agricultural and Biological Engineering
% Master of Science in Biomedical Engineering
% Master of Science in Chemical Engineering
% Master of Science in Civil Engineering
% Master of Science in Electrical and Computer Engineering
% Master of Science in Environmental and Ecological Engineering
% Master of Science in Mechanical Engineering
% Master of Science in Nuclear Engineering
%
% These are also accepted. They were on earlier lists and are kept so
% that a thesis already being written does not have to change, but they
% are not on the 2026 handbook's list, so check with the Thesis and
% Dissertation Office before depositing with one.
% Doctor of Audiology
% Doctor of Nursing Practice
% Master of Library Science
% Master of Science in Aeronautics and Astronautics
% Master of Science in Agriculture
% Master of Science in Aviation and Aerospace Management
% Master of Science in Building Construction Management
% Master of Science in Education
% Master of Science in Engineering
% Master of Science in Engineering Technology
% Master of Science in Human Resources Management
% Master of Science in Industrial Engineering
% Master of Science in Industrial Technology
% Master of Science in Materials Engineering
% Ph.D. in Technology
\newcommand{\ZZdegree}{Choose Degree}
% \newcommand{\ZZdegree}{Master of Science}
% document
% Choose a document from the following list:
% A Dissertation
% A Master's Bypass Report
% A Preliminary Report
% A Thesis
\newcommand{\ZZdocument}{A Choose Thesis Type}
% \newcommand{\ZZdocument}{A Thesis}
% graduation
% Choose a month from
% May
% August
% December
% followed by a space, then a year from 2020 to 2099.
%
% The August 2026 handbook offers these five terms:
% August 2026
% December 2026
% May 2027
% August 2027
% December 2027
\newcommand{\ZZgraduation}{Choose Graduation Term}
% institution
% Choose an institution name from the following list:
% VALUE COMMENT
% Purdue University
% University of Hawaii don't include the 'okina character here,
% it will get printed automatically
\newcommand{\ZZinstitution}{Purdue University}
% program
% Choose a program from the following list:
% If you are in `Motorsports Engineering' use `Mechanical Engineering'.
% VALUE
% Aeronautics and Astronautics
% Agricultural and Biological Engineering
% Agricultural Economics
% Agronomy
% American Studies
% Animal Sciences
% Anthropology
% Applied Physics
% Art and Design
% Aviation and Transportation Technology
% Basic Medical Sciences
% Biochemistry
% Biological Sciences
% Biology
% Biomedical Engineering
% Botany and Plant Pathology
% Chemical Engineering
% Chemistry
% Chemistry and Chemical Biology
% Child Development and Family Studies
% Civil and Construction Engineering
% Civil and Mechanical Engineering
% Communication
% Communications
% Comparitive Pathobiology
% Computer and Information Science
% Computer and Information Technology
% Computer Graphics Technology
% Computer Science
% Construction Management Technology
% Consumer Science
% Curriculum and Instruction
% Earth, Atmospheric, and Planetary Sciences
% Economics
% Educational Studies
% Electrical and Computer Engineering
% Engineering Education
% Engineering Technology
% English
% Entomology
% Food Science
% Forensic and Investigative Sciences
% Forestry and Natural Resources
% Health and Kinesiology
% Health Sciences
% History
% History and Philosophy
% Horticulture
% Hospitality and Tourism Management
% Human Development and Family Studies
% Industrial and Physical Pharmacy
% Industrial Engineering
% Interdisciplinary Biomedical Studies Program
% Interdisciplinary Studies (Comparitive Literature)
% Languages and Cultures
% Linguistics
% Management
% Materials Engineering
% Mathematical Sciences
% Mathematics
% Mechanical and Energy Engineering
% Mechanical Engineering
% Mechnical and Civil Engineering
% Medicinal Chemistry and Molecular Pharmacology
% Nuclear Engineering
% Nursing
% Nutrition Science
% Organizational Behavior and Human Resource Management
% Pharmacy Practice
% Philosophy
% Philosophy and Literature
% Physics
% Physics and Astronomy
% Political Science
% Psychological Sciences
% Sociology
% Speech, Language, and Hearing Sciences
% Statistics
% Technology
% Technology Leadership and Innovation
% Theatre
% Veterinary Clinical Sciences
% Youth Development and Agricultural Education
\newcommand{\ZZprogram}{Electrical and Computer Engineering}
% \newcommand{\ZZprogram}{Applied Physics}
% department
%
% Leave this out unless you need it. It is the department name printed
% on the title page, and normally \ZZprogram above supplies it.
%
% You need it when your department is on the "Choose Department" list in
% the August 2026 Purdue Standard Thesis Handbook but not on the list of
% \ZZprogram values above. The handbook names a hundred and thirty-five
% departments across West Lafayette, Indianapolis, Fort Wayne and
% Northwest, and revises the list every year, so this happens.
%
% Set \ZZprogram to the nearest entry that is on the list, which is what
% chooses your citation style, and set \ZZdepartment to the handbook's
% exact wording, which is what gets printed:
%
% \newcommand{\ZZprogram}{Accounting}
% \newcommand{\ZZdepartment}
% {Department of Accounting at Purdue Fort Wayne}
%
% Setting it also relaxes two checks that would otherwise stop the
% compile: \ZZprogram no longer has to be one this class knows, and nor
% does your combination of institution, campus, program and degree.
% Both become warnings, because you have said which department you are
% in.
%
% This file reproduces the handbook's own title page, which is left
% unfilled, so \ZZdepartment is set to the handbook's placeholder. That
% is also what relaxes the combination check here: 'Choose Campus
% Location' and 'Choose Degree' are not a combination this class knows.
% Replace it with your department's exact wording, and see
% \ZZprogram above for the value that chooses your citation style.
%
% \newcommand{\ZZdepartment}{Department of ...}
\newcommand{\ZZdepartment}{Choose Department}
% frontmatterorder
%
% handbook The order of the front matter that the August 2026
% handbook asks for. This is the default. Two things
% differ from how this class used to behave: the list of
% abbreviations comes before the list of symbols, and
% the acknowledgments appear in the table of contents.
% legacy The order this class used before. Use it if you are
% part-way through a thesis and do not want the front
% matter to move. It also turns the out-of-order check
% from an error into a warning.
%
% \newcommand{\ZZfrontmatterorder}{legacy}
% title
% If you need to manually split the title,
% over several lines do, for example,
% \newcommand{\ZZtitle}{%
% This is the First Line\\[-6pt]
% and this is the Second Line%
% }
\newcommand{\ZZtitle}{Title of Thesis}
% showcolophon
% Print the ap-colophon.tex file at the end of the document?
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowcolophon SET TO false.
\newcommand{\ZZshowcolophon}{false}
% showdiagonalline
% Show a diagonal line from lower left to center
% of main printed part of page?
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowdiagonalline SET TO false.
\newcommand{\ZZshowdiagonalline}{false}
% showgridlines
% Show grid lines on main printed part of page
% Vertical and horizontal grid lines are put
% in the normal printed part of the page---this
% includes lines where the margins are.
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowgridlines SET TO false.
\newcommand{\ZZshowgridlines}{false}
% showhandbookintro
% Print the "PURDUE UNIVERSITY STANDARD THESIS HANDBOOK" sheet that
% opens this handbook, ahead of the title page?
%
% That sheet is instruction, not thesis. It is the page the August 2026
% handbook opens with, and it is reproduced here so that this file
% matches the handbook it documents. The class defaults this to false,
% so a thesis never has to think about it. It is set true only in the
% handbook, and it must be false in a submitted thesis.
% VALUE MEANING
% false don't print the handbook introduction sheet
% true print the handbook introduction sheet
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowhandbookintro SET TO false.
\newcommand{\ZZshowhandbookintro}{false}
% showmarginlines
% Show margin lines on the edge of the normal printed part of the page?
% Margin lines show where the margins are.
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowmarginlines SET TO false.
% VALUE MEANING
% false don't show marginlines
% true show marginlines
\newcommand{\ZZshowmarginlines}{false}
% showtimestamp
% Show, for example, a "compiled on 2021-03-02 Tuesday 17:16:24"
% timestamp in the upper right corner of page?
% VALUE MEANING
% false don't show timestamp
% true show timestamp
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowtimestamp SET TO false.
\newcommand{\ZZshowtimestamp}{false}
% showtodonotes
% Set things up for todonotes.
% VALUE MEANING
% false don't put todo notes in PDF file
% true put 0.8 inch wide todo notes in PDF file
% wide put 3.8 inch wide todo notes in PDF file, do not send
% todonotes = wide output to a printer
% THE SUBMITTED COPY OF YOUR THESIS MUST BE RUN WITH ZZshowtodonotes SET TO false.
\newcommand{\ZZshowtodonotes}{false}
% Mark Senn uses an "optional-debugging-code.tex file" but does not
% distribute it. The following line won't do anything if you don't
% have an optional-debugging-code.tex file so you can leave it the
% way it is.
\InputIfFileExists{optional-debugging-code.tex}{}{}
% The \includeonly command can be used to only include some
% files that have \include commands below. This is handy
% to only include some files so your document will LaTeX
% faster or if you're trying to narrow down where an error
% occurs. You can use
% \includeonly{chapters/ch-introduction}
% to only include chapters/ch-introduction.tex, or
% \includeonly{chapters/ch-introduction,chapters/ap-about-appendices}
% to include chapters/ch-introduction.tex and
% chapters/ap-about-appendices.tex.
% More files can be added---just put ',' between the names.
% Comment out the following line before submitting the
% final copy of your thesis.
%\includeonly{chapters/ch-introduction,chapters/ap-about-appendices}
% accessibility
% Purdue requires the thesis you deposit to be an accessible document.
% This setting controls how much work LaTeX does to make one.
% VALUE MEANING
% true Produce a tagged, PDF/UA-2 document. Slower to compile.
% THE COPY YOU DEPOSIT MUST BE RUN WITH true.
% draft Do the tagging work but do not write the structure into
% the PDF. Much faster. Use this while writing.
% false No tagging. How this template behaved before 2026.
%
% Built as it comes, this template passes PDF/UA-2, PDF/A-4f and both
% Well-Tagged PDF profiles under veraPDF 1.30.2.
\newcommand{\ZZaccessibility}{true}
% language
% The language your thesis is written in, as an IETF BCP 47 tag.
% Screen readers use this to choose a pronunciation, so it matters.
% VALUE MEANING
% en-US American English
% en-GB British English
% fr French
\newcommand{\ZZlanguage}{en-US}
% debugpdf
% false Normal. This is the default.
% true Leave the PDF uncompressed so that you can read the
% structure LaTeX built with an ordinary text editor:
%
% grep -a -o "/S */[A-Za-z]*" thesis.pdf \
% | sort | uniq -c
%
% The file is several times larger than normal and is for
% checking only. Never deposit one.
% \newcommand{\ZZdebugpdf}{true}
% This reads the two settings above and tells LaTeX to make a tagged
% PDF. It has to come before \documentclass, which is why it is here
% and not further down with the other packages.
\input{PurdueThesis-metadata}
\documentclass{PurdueThesis}
% I'm not using the silence package to not print LaTeX errors
% and warnings because
% \usepackage{silence}
% caused
% [89] [90] [91] (./z.out) (./z.out^C
% ! Interruption.
% \sl@StoreMessage ...oveGobbletwo #1\sl@Terminator
% \@gobbletwo \sl@Terminator...
%
% l.2 \subsection{Sum of 1 to \(n\) example}
%
% ?
% where ^C indicates I typed a Control-C because LaTeX was 'stuck'.
%
% I do the following when using Overleaf. Check the icon just to the
% right of the 'Recompile' button to see how many errors/warnings there
% are. If that number goes up I look for the details of what has
% changed.
% \usepackage{silence}
%%%% \ExplSyntaxOn %%%% changed 2021-07-27 by mark
%%%% \bool_set_true:N \ZZCenterCaptionB %%%% changed 2021-07-27 by mark
%%%% \ExplSyntaxOff %%%% changed 2021-07-27 by mark
\newcommand{\ZZatinformation}{}
% If you are at the Hammond or Westville campus
% remove the "%" from the begining of the next line.
%\newcommand\ZZatinformation{~at~Purdue~Northwest}
% PurdueThesis.cls loads the rotating package which loads the graphicx
% package. From page 12 of "Packages in the `graphics' bundle", 2021-03-05,
% retrieved 2021-06-16, at https://texdoc.org/serve/grfguide.pdf/0
% \graphicspath{<dir-list>}
%
% This optional declaration may be used to specify a list of
% directories in which to search for graphics files. The
% format is the same as for the LaTeX 2e primitive \input@path.
% A list of directories, each in a {} group (even if there is
% only one in the list). For example:
% \graphicspath{{eps/}{tiff/}}
% would cause the system to look in the subdirectories eps and
% tiff of the current directory. (All modern TeX systems use /
% as the directory separator, even on Windows.)
%
% The default setting of this path is \input@path that is:
% graphics files will be found whereever TeX files are found.
%
% Look in the "graphics" subfolder for graphics files.
% This is done to reduce the number of files in the main thesis folder
% so the ones in there are easier to find.
\graphicspath{{graphics/}}
% Look in the `misc' subfolder for miscellaneous files
% PurdueThesis.cls and thesis.tex need. Look in the `packages'
% subfolder for packages. This is done to reduce the number of files
% in the main thesis folder so the ones in there are easier to find.
%%%%\ExplSyntaxOn
%%%% \seq_set_from_clist:Nn \l_file_search_path_seq {misc,packages}
%%%%\ExplSyntaxOff
\makeatletter
\def\input@path{{misc}{packages}}
\makeatother
% The BibLaTeX bibstyle and citestyle are chosen automatically based
% on your program (e.g., `Mathematics'). For example, if you are in
% the Mathematics program normally you are using the `numeric'
% bibstyle and citestyle.
% the `numeric-comp' (numeric compressed---instead of '[1,2,3]' use
% '[1--3]') citestyle.
% To override the bibstyle and citestyle to `apa' use
% \ZZoverridebibstyle{apa}
% To override the bibstyle to `apa'and the citestyle to `numeric-comp'
% use
% \ZZoverridebibstyle{apa}
% \ZZoverridecitestyle{numeric-comp}
% Any overrides must go before the \ConfigureBibliography.
%%%\ZZoverridebibstyle{apa}
\ConfigureBibliography
% The handbook's REFERENCES section is printed word for word as the
% handbook has it. Each of its entries in all-biblatex.bib is marked
% "keywords = {handbook}" and holds the printed text in its "note"
% field; for those entries the lines below print the note and nothing
% else (no period is added). Every other entry -- all of yours -- is
% formatted automatically in the style \ConfigureBibliography chose.
% Your thesis can keep these lines: they do nothing to entries without
% the handbook keyword.
\makeatletter
\DeclareFieldFormat{ZZhandbooknote}{#1}
\newcommand{\ZZhandbookdriver}[1]
{%
\expandafter\let\csname ZZorig@bbx@#1\expandafter\endcsname
\csname blx@bbx@#1\endcsname
\DeclareBibliographyDriver{#1}
{%
\ifkeyword{handbook}
{%
\begingroup
\printfield[ZZhandbooknote]{note}%
\renewcommand*{\finentrypunct}{}%
\finentry
\endgroup
}
{\csname ZZorig@bbx@#1\endcsname}%
}%
}
\ZZhandbookdriver{online}
\ZZhandbookdriver{book}
\ZZhandbookdriver{misc}
\ZZhandbookdriver{inproceedings}
\makeatother
% \DeclareSourcemap
% {
% \maps[datatype=bibtex]
% {
% % Ignore "urldate = {...}" in .bib files.
% % See the first complete example on page 201 of
% % https://mirrors.rit.edu/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf
% \map
% {
% \step[fieldset=urldate, null]
% }
% % Enter approximate (circa) dates using, for example,
% % "year = c2020" See
% % https://tex.stackexchange.com/questions/224617/what-is-the-correct-way-to-handle-approximate-dates-in-biblatex
% \map[overwrite=false]
% {
% \step[fieldsource=year]
% \step[fieldset=sortyear, origfieldval, final]
% \step[fieldsource=sortyear, match={c}, replace={}]
% }
% }
% }
% ============================================================
% PACKAGES
% ============================================================
%
% Only the packages the handbook's own pages use. Add the ones your
% thesis needs, but check each one first at
% https://latex3.github.io/tagging-project/tagging-status/
% A package that does not support tagging yet is enough to make the
% whole PDF fail its accessibility check.
% The mathtools package
% (see http://mirror.utexas.edu/ctan/macros/latex/required/amsmath/amsmath.pdf)
% loads the amsmath package, which defines the equation, align, gather,
% multline and split environments, and extends it. See
% https://ctan.org/pkg/mathtools
\usepackage{mathtools}
% Define
% \begin{Verbatim} ... \end{Verbatim} program code (chapter 3)
% \begin{VerbatimOut}{filename} ... \end{VerbatimOut}
% \VerbatimInput[options]{filename} the examples in appendix A
% '|verbatim|' as short for \verb|verbatim| is switched on at the end of
% the preamble: TikZ cannot be loaded once | is special.
\usepackage{fancyvrb}
% Define \FloatBarrier.
% \FloatBarrier processes all unprocessed floats (tables, figures, etc.).
\usepackage{placeins}
% The LuaLaTeX system flowchart in chapter 3 and the drawings in the
% GRAPHICS, ELECTRICAL ENGINEERING and PHYSICS appendices use TikZ.
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,shapes.misc}
% 3D drawings, text along a path, and the Kalman filter system model.
\usetikzlibrary{3d,shadows,shapes.symbols,decorations.text,
decorations.pathmorphing,fit,backgrounds}
% For electrical diagrams. circuitikz is short for "circuit TikZ".
\usepackage{circuitikz}
% Define \MyRepeat{what}{repeat}.
% Do "what" "repeat" number of times.
\usepackage{packages/pa-repeat}
% ------------------------------------------------------------
% Packages for the appendices
% ------------------------------------------------------------
%
% The appendices demonstrate these packages. A thesis that does not
% use them can delete them. The pa-... packages are in the packages
% subdirectory, so they are loaded as packages/pa-....
% For \Box.
\usepackage{latexsym}
% For \bm, bold math symbols.
\usepackage{bm}
% For \sfrac, slanted fractions like 1/2 with a small, high 1 and a
% small, low 2.
\usepackage{xfrac}
% For \cancel, a line through a term (see the siunitx manual,
% pages 11--12).
\usepackage{cancel}
% Define \begin{multicols}{number_of_columns} ... \end{multicols}.
% Used in the TEXT appendix.
\usepackage{multicol}
% For lstlisting program listings in the COMPUTER SCIENCE appendix.
\usepackage{listings}
% For the steps of an algorithm, inside \begin{algorithm} ...
% \end{algorithm}. The algorithm float itself comes from the class.
% See the COMPUTER SCIENCE appendix and
% https://ctan.org/pkg/algorithmicx
\usepackage{algpseudocode}
% For cryptography pseudocode, algorithms, and protocols. See
% https://ctan.org/pkg/cryptocode
\usepackage
[
n, % or lambda
advantage,
operators,
sets,
adversary,
landau,
probability,
notions,
logic,
ff,
mm,
primitives,
events,
complexity,
oracles,
asymptotics,
keys,
]
{cryptocode}
% For chemical figures.
\usepackage{chemfig}
% For chemical equations. See
% https://ctan.org/pkg/mhchem
\usepackage[version=4]{mhchem}
% Define "\nitrate" to be the chemical symbol for nitrate.
\newcommand{\nitrate}{\ce{NO3{-}}}
% Define "\pnitrate" (short for "parenthesized nitrate") to be the
% chemical symbol for nitrate surrounded by parentheses.
\newcommand{\pnitrate}{(\nitrate)}
% Define "\vpnitrate" (short for "verbose parenthesized nitrate") to
% be the word "nitrate" followed by a space followed by the chemical
% symbol for nitrate with parentheses around it.
\newcommand{\vpnitrate}{nitrate (\nitrate)}
% Needed for the Feynman diagram in the PHYSICS appendix. tikz-feynman
% requires LuaLaTeX.
\usepackage[compat=1.1.0]{tikz-feynman}
% Define \ditto.
\usepackage{packages/pa-ditto}
% Define \FigureDash.
% \FigureDash is a dash the width of a digit in the current font.
\usepackage{packages/pa-figure-dash}
% For PurdueThesis, PuTh, TeX, LaTeX, METAFONT, METAPOST, ... logos.
\usepackage{packages/pa-logos}
% Follow ISO 80000-2:2019:
% o The e, i, j, and pi constants should be in an upright font.
% o The ordinary derivative operator d should be in an upright font.
\usepackage{packages/pa-mismath}
% For letter in ('e', 'i', 'j'):
% o \MathUp{letter} typesets letter in an upright font from now on.
% Use \mathit{letter} to get a math italic letter
% when Mathup{letter} is active.
% o \MathIt{letter} typesets letter in a math italic font from now on.
% Use \mathup{letter} to get an upright letter
% when MathIt{letter} is active.
%
% \pinumber typesets pi in an upright font from now on.
% Use \itpi to get a math italic pi when \pinumber is active.
%
% \pinormal typesets pi in a math italic font from now on.
% Use \text{\pi} to get an upright pi when \pinormal is active.
%
% Adjust these as needed for your document.
\MathUp{e} \MathUp{i} \MathUp{j} \pinumber
%
% Use \di for the ordinary derivative operator.
% More ISO 80000-2:2019 (these do not depend on pa-mismath):
% o The partial derivative operator should be in an upright font.
% Define "\pa" as the partial derivative operator.
% o Use \mathcal{F} for the Fourier transform.
% o Use \mathcal{L} for the Laplace transform.
\def\pa{\rotatebox[origin=c]{14}{\partial}}
\def\Fourier{\mathcal{F}}
\def\Laplace{\mathcal{L}}
% For typographical conventions including
% \Emph{...} \FirstUsed{...} \Keys{...} \Literal{...}
% \Menu{...} \Place{...} \Shell{...}
% This must be after \usepackage{tikz}.
\usepackage{packages/pa-typographic-conventions}
% The XMP metadata that describes this PDF: who wrote it, what it is
% about, what language it is in. A screen reader announces the title
% when the file is opened, and every accessibility checker looks for it.
%
% Do NOT reach for hyperxmp here. It switches itself off when
% \DocumentMetadata is in use, because the PDF management code writes
% the XMP packet itself.
%
% So set the \ZZ... values and let packages/pa-accessibility.sty put
% them in the PDF. \renewcommand rather than \newcommand because
% PurdueThesis.cls has already given each of these a default. Replace
% them with your own thesis's.
\renewcommand{\ZZkeywords}{Your keywords}
\renewcommand{\ZZsubject}{Your thesis subject}
\renewcommand{\ZZpublisher}{Purdue University}
% Define \I.
% \I1 does \indent once, \I2 does \indent twice, etc.
\newcommand{\I}[1]{\MyRepeat{\indent}{#1}}
% Define \MyI.
% Typeset my input: a listing of the file given, with line numbers.
% The GRAPHICS appendix uses it for the programs in the misc
% subdirectory.
\long\def\MyI#1%
{%
{%
\fontsize{8}{10}\tt
\VerbatimInput
[
firstnumber = 1,
numbers = left,
xleftmargin = 0.33in,
]%
{#1}
}%
}
% The vertical space between a table heading and the table contents
% in a tabular environment.
\newcommand{\tabularspace}{\noalign{\vspace*{2pt}}}
% Define \MyIO.
% Typeset my input and output: what an example in the appendices
% prints, then the LaTeX input that printed it.
%
% Lines longer than about 92 characters run off the right edge of the
% page: fancyvrb does not wrap them. Do not reach for fvextra to get
% line breaking; it wrecks the tagging structure. Keep the source lines
% short instead.
\newcommand{\MyIO}
{%
\input{z.out}
{%
\fontsize{8}{10}\tt
\VerbatimInput
[
firstnumber = 1,
numbers = left,
xleftmargin = 0.33in,
]
{z.out}
}
\FloatBarrier
}
% One row of the wide and lengthy example tables in chapter 2.
\newcommand{\ZZlengthyrow}
{%
Example& Example text& Example text&
Example text, example text, example text, example text, example
text, example text, example text, example text, example text,
example text, example text, example text, example text, example
text, example text, example text, example text, example text,
example text.\\
\hline
}
% So '|verbatim|' will print 'verbatim' in a typewriter font.
% Last, after every package. If you don't want this, put a '%' before
% the next line.
\DefineShortVerb{\|}
\begin{document}
\makeatletter
\renewcommand{\ZZAppendixName}{APPENDIX}
%%%% \renewcommand{\chaptername}{CHAPTER}
% \MakeUppercase, not the \uppercase primitive. \uppercase only knows
% the ASCII letters and does not expand macros, so an accented or
% non-Latin chapter title comes through unchanged, and hyperref gets
% confused when the same text has to become a PDF bookmark. The class
% was corrected for this; this line had been missed.
\def\@@makechapterhead#1{\MakeUppercase{\@chapapp~\thechapter. #1}}
% 4 lists all four subheading levels, down to \subsubsubsection, in the
% table of contents, as the handbook asks.
\setcounter{tocdepth}{4}
\maketitle
% Define front matter
% dedication
% acknowledgments
% preface
% table of contents
% list of tables
% list of figures
% list of symbols
% abbreviations
% nomenclature
% glossary
% abstract
\include{chapters/ch-front}
%
% Put chapter \include commands here.
%
% An introduction chapter (which must be the first chapter) and a
% conclusion chapter (which must be the last chapter) are required.
% ch-example shows each element the handbook asks for; replace it with
% your own chapters, one file each in chapters/.
\include{chapters/ch-introduction}
\include{chapters/ch-example}
\include{chapters/ch-conclusion}
\makeatletter % commented out on 2022-01-26
\defbibenvironment{bibliography}
{%
\list
{%
\printtext[labelnumberwidth]%
{%
\printfield{prefixnumber}%
\printfield{labelnumber}%
}%
}%
{%
\setlength{\bibhang}{1in} %%%%% was 0pt
\setlength{\itemindent}{1in}% -\leftmargin} %%%%% was 0pt
\setlength{\itemsep}{\bibitemsep}%
\setlength{\leftmargin}{0pt}% .22in} % 0.42in}
\setlength{\parsep}{\bibparsep}%
\setlength{\rightmargin}{0.33in}%
}%
}
{\endlist}
{\item}
\makeatother % commented out on 2022-01-26
% \immediate\setlength{\labelnumberwidth}{1.5in} %%%%% was commented out
%
% There used to be a
% \setlength{\labelwidth}{1.5in}
% here. Do not put it back. \labelwidth is one of the few list parameters
% \list does not reset, so setting it at top level like this leaves it in
% force for the rest of the document. book.cls's description environment did
% not care, because it began by zeroing \labelwidth itself, but the tagging
% layer's replacement (latex-lab-testphase-block) does not, and it places the
% label at \itemindent - \labelsep - \labelwidth. Every description label in
% every appendix therefore landed 1.5in to the left, off the paper. It did
% nothing useful either: \PrintBibliography in PurdueThesis.cls sets
% \labelwidth inside the bibliography list itself (\settowidth{\labelwidth}{[12]}
% for the numeric and ieee styles, {12.} for ama), and the author-year styles
% print no label at all.
{%
% Make _ in URLs visible.
% \def\t{\char'137}%
\catcode`*=\active
\def*{\char'137}% \char'137 is _
\PrintBibliography
}
% Publications are optional. They come after REFERENCES and before the
% appendices.
\include{chapters/ap-publications}
% Appendices are optional. Not all theses contain appendices.
% An appendix is used for supplementary illustrative material,
% original data, computer programs, and other material that is not
% necessarily appropriate for inclusion within the text of your
% thesis.
% Reference: TM2017 page 33.
%
% Use ``\appendix'' for one appendix or ``\appendices'' for more than
% one appendix.
\appendices
% My filename conventions:
% FILE THAT START WITH ARE
% ap- appendices
% ch- chapters
% gr- graphics
% pa- packages
% z temporary files
% A. An example appendix. Replace it with your own, one file each
% in chapters/.
\include{chapters/ap-appendix}
% A vita is optional for master's theses
% and required for doctoral dissertations.
\include{chapters/ap-vita}
% LaTeX won't read after the \end{document} command.
% You can put notes to yourself or LaTeX input not
% ready for use after "\end{document}" if you'd like.
\end{document}