summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mitthesis
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-19 03:02:28 +0000
committerNorbert Preining <norbert@preining.info>2023-06-19 03:02:28 +0000
commit0622b5d465a30f417f9c5372cd05a931a407380c (patch)
tree0007872c586bbdf271937367d23bb2396bf60a1a /macros/latex/contrib/mitthesis
parent560cff4babb98ab81103bfe3f966c4111f31b0b0 (diff)
CTAN sync 202306190302
Diffstat (limited to 'macros/latex/contrib/mitthesis')
-rw-r--r--macros/latex/contrib/mitthesis/MIT-Thesis.pdfbin0 -> 491417 bytes
-rw-r--r--macros/latex/contrib/mitthesis/MIT-Thesis.tex294
-rw-r--r--macros/latex/contrib/mitthesis/README.md78
-rw-r--r--macros/latex/contrib/mitthesis/abstract.tex11
-rw-r--r--macros/latex/contrib/mitthesis/acknowledgments.tex11
-rw-r--r--macros/latex/contrib/mitthesis/appendixa.tex63
-rw-r--r--macros/latex/contrib/mitthesis/biography.tex10
-rw-r--r--macros/latex/contrib/mitthesis/chapter1.tex162
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/No_CC_license.pdfbin0 -> 491015 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdfbin0 -> 491029 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdfbin0 -> 491225 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdfbin0 -> 491396 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdfbin0 -> 530027 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdfbin0 -> 491225 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Fira-newtxsf.pdfbin0 -> 320593 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdfbin0 -> 153171 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdfbin0 -> 184276 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdfbin0 -> 171947 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdfbin0 -> 277225 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdfbin0 -> 317273 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdfbin0 -> 161311 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Termes-Stix2.pdfbin0 -> 163517 bytes
-rw-r--r--macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdfbin0 -> 159652 bytes
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/defaultfonts.tex20
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/fira-newtxsf.tex22
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/heros-stix2.tex68
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/libertine.tex60
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/lucida.tex151
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/newtx-sans-text.tex25
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/newtx.tex22
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/stix2.tex61
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/termes-stix2.tex66
-rw-r--r--macros/latex/contrib/mitthesis/fontsets/termes.tex57
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdfbin0 -> 81056 bytes
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex449
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis-sample.bib325
-rw-r--r--macros/latex/contrib/mitthesis/mitthesis.cls631
-rw-r--r--macros/latex/contrib/mitthesis/mydesign.tex58
38 files changed, 2644 insertions, 0 deletions
diff --git a/macros/latex/contrib/mitthesis/MIT-Thesis.pdf b/macros/latex/contrib/mitthesis/MIT-Thesis.pdf
new file mode 100644
index 0000000000..853523ebd2
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/MIT-Thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/MIT-Thesis.tex b/macros/latex/contrib/mitthesis/MIT-Thesis.tex
new file mode 100644
index 0000000000..a604955e4e
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/MIT-Thesis.tex
@@ -0,0 +1,294 @@
+% !TEX encoding = UTF-8 Unicode
+% !BIB TS-program = biber
+% !BIB program = biber
+
+% This file is MIT-Thesis.tex, a template for producing MIT theses with the mitthesis class.
+% Version: 1.00, 2023/06/17
+% Author: John H. Lienhard (c) 2023. Reuse under the MIT license: https://ctan.org/license/mit
+
+% Documentation: https://ctan.org/pkg/mitthesis
+
+%% Don't modify the \DocumentMetadata command unless you know what it does.
+%% If this command throws an "undefined" error, your latex system is out of date: try commenting this command out.
+\DocumentMetadata
+{
+ pdfstandard = a-2b,
+ pdfversion = 1.7,
+ lang = en-US,
+% debug = {xmp-export}, % output xmpi file to directly examine metadata
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[twoside,fontset=defaultfonts,mydesign]{mitthesis}
+%
+% option [twoside] gives facing-page behavior for printing; omitting it will eliminate even-numbered blank pages.
+% option [lineno] provides line numbers, as for editing
+% option [mydesign] loads titlesec, enumitem, caption, subcaption - you may edit the mydesign.tex file as you like it.
+% option [fontset] is a keyvalue which can be:
+% pdftex or unicode engines: defaultfonts, libertine, lucida
+% pdftex only: fira-newtxsf, newtx, newtx-sans-text
+% unicode engines (luatex): heros-stix2, stix2, termes, termes-stix2
+% if no key value is given, fonts default to CMR (pdftex) or LMR (unicode), i.e., "the latex font".
+% You can edit the fontset files or you can write your own, myfonts.tex, and do [fontset=myfonts].
+% If you are using multiple languages, load the babel package in your fontset file, before the fonts.
+
+%%%%%%%%% Packages used in sample chapters (not otherwise required) %%%%%%%
+
+%% Package for code listing in Appendix A.
+\usepackage{listings}
+
+%% Set chemical formulas nicely
+\usepackage[version=4]{mhchem}
+
+%% Latin filler used in Chapter 1, with a test for package version date
+\usepackage{lipsum}
+\IfPackageAtLeastTF{lipsum}{2021/09/20}{\setlipsum{auto-lang=false}}{}
+
+
+%%%%%%%%% Graphics path (to figure files) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Can set graphicspath to point to specific directories containing figures (the current directory is searched automatically)
+%% For instance, to search a subdirectory of the current directory called "figures" and a parallel directory called "art", set:
+
+% \graphicspath{ {figures/} {../art/} }% For details see: https://latexref.xyz/dev/latex2e.html#g_t_005cgraphicspath
+
+
+%%%%%%%%% Representative set-up for biblatex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage[style=ext-numeric-comp,giveninits=true,maxbibnames=10,sorting=none,articlein=false,]{biblatex}
+
+\addbibresource{mitthesis-sample.bib}%% <== change to YOUR bib file <=================
+
+%% These two commands enable line breaks in long URLs in the bibliography (delete if you don't want that)
+\setcounter{biburllcpenalty}{7000}
+\setcounter{biburlucpenalty}{8000}
+
+% biblatex is very powerful, and you can customize most aspects the reference list and citations.
+
+
+%%%%%%%%%% Option to use natbib %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\RequirePackage[numbers,sort&compress]{natbib}
+
+%%% add bibliography to table of contents
+%\apptocmd{\bibliography}{\addcontentsline{toc}{chapter}{\protect\textbf{\bibname}}}{}{}
+
+%%% You can use this to rename the bibliography section
+%\renewcommand{\bibname}{References}
+
+%%% Can adjust space between bibliography items (change 4pt to something else; don't drop last two lengths, they are stretchable "glue")
+%\setlength\bibsep{4pt plus 1pt minus 1pt}
+
+
+%%%%%%%%%% Table related packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage{booktabs}% better quality tables
+\usepackage{array}% additional options for table columns
+
+%\usepackage{tabularx}
+
+%\usepackage{dcolumn} % alignment on decimal places
+%\newcolumntype{d}[1]{D{.}{.}{#1}}
+
+
+%%%%%%%%%% Option for "double spacing" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Back in the typewriter era, double spaced lines were convenient for editing with a pencil.
+%% In typography, the separation between lines is called "leading", and it is usually set in
+%% proportion to the font size (i.e., when the font is loaded). If you really feel the need
+%% to change the line separation, the most attractive results will be obtained by changing the
+%% leading in proportion to the the current font size, rather than just doubling the space.
+
+%% The setspace package provides a tool for changing line separation (use these here)
+%
+%\usepackage{setspace}
+%\setstretch{1.1}% you can choose some other value for the stretch of space between lines
+%
+%% Use the these commands AFTER the frontmatter
+%
+%\onehalfspacing
+%\doublespacing
+%\singlespacing % will turn these effects off (you can use these anywhere in the document)
+
+%% The best result may be to stay with leading selected by the typographer who set up the font.
+
+
+%%%%%%%%%%% Hyperref setting and metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\def\YourName{John H. Lienhard}% <====== CHANGE TO YOUR NAME !!!
+
+\hypersetup{%
+%
+% Be sure to change the following to your own information! <======== !!!
+%
+ pdftitle={MIT thesis template},
+ pdfkeywords={\YourName, Massachusetts Institute of Technology, MIT},
+ pdfauthor={\YourName},
+ pdfauthortitle={Professor of Mechanical Engineering},
+ pdfcaptionwriter={\YourName},
+% pdfcaptionwriter={{John H. Lienhard, V}},% if you have a comma in your name, surround by {..}
+ pdfurl={https://lienhard.mit.edu},
+ pdfcontactemail={lienhard@mit.edu},
+ pdfcontactaddress={77 Massachusetts Avenue, Room 3-166},
+ pdfcontactcity={Cambridge, MA},
+ pdfcontactpostcode={02139},
+ pdfcontactcountry={USA},
+ pdfcontacturl={https://lienhard.mit.edu},
+%
+ pdfsubject={Template for writing MIT theses with the mitthesis class},% briefly state what this document is about
+%
+ colorlinks=true,
+ linkcolor=blue,
+ citecolor=blue,
+ urlcolor=violet,
+ filecolor=red,
+% anchorcolor=yellow,% not all pdf viewers recognize this field (Firefox does)
+% colorscheme=phelype,% overrides link, cite, url, file colors with a preset scheme, through \DocumentMetadata
+%
+ pdfborder={0 0 0},
+ bookmarksnumbered=true,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+% pdfpagemode=UseNone,% this option means don't open bookmarks panel
+ pdfpagelayout=SinglePage,
+ pdfdisplaydoctitle=true,
+ pdfstartview=Fit,
+ pdfnewwindow=true,
+%
+ pdfcopyright={Copyright © \DegreeYear\ by \YourName. \PDFRightsText},% definitions made by class file, don't change
+ pdflicenseurl={\CCurl},% definition made by class file, don't change
+}
+
+%%%%%%%%%%%%%% End preamble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{document}
+
+
+%%% edit the following commands to match your thesis %%%%%%%%%%
+
+\title{The Atomic Theory as Applied To Gases, with Some Experiments on the Viscosity of Air}
+
+% \Author{Author full name}{Author department}[Author's first PREVIOUS degree][Author's second PREVIOUS degree][...
+% Note that third, fourth, fifth, and sixth arguments are optional [] and may be omitted
+
+% note on names: most of the following names are made up; Silas Holman was a professor at MIT in the 19th century.
+
+\Author{Silas W. Holman}{Department of Physics}%[B.S. Physics, MIT, 1876]
+%\Author{Luisa Hernández}{Department of Research}[B.S. Mechanical Engineering, UCLA, 2018][M.S. Stellar Interiors, Vulcan Science Academy, 2020][MBA, Ferengi School of Management, 2022]
+
+% Use once for each degree fulfilled by thesis
+\Degree{Bachelor of Science in Physics}{Department of Physics}
+%\Degree{Bachelor of Science in Mechanical Engineering}{Department of Mechanical Engineering}
+
+% If there is more than one supervisor, use the \Supervisor command for each.
+\Supervisor{Edward C. Pickering}{Professor of Physics}
+%\Supervisor{Secunda Castor}{Department of Mechanical Engineering}
+
+% Professor who formally accepts theses for your department (e.g., the Graduate Officer, Professor Sméagol,...)
+% If more than one department, use more than once
+\Acceptor{Primus Castor}{Professor of Wetlands Engineering}{Graduate Officer, First Degree Department}
+%\Acceptor{Tertius Castor}{Professor of Log Dams}{Graduate Officer, Second Degree Department}
+
+% If your title page is overflowing (from too many names, degrees, etc.), you can scale
+% down the Signature block at the bottom with this command, or use another creative solution...
+%\SignatureBlockSize{\small}
+
+% Usage: \DegreeDate{Month}{year}
+% Valid degree months are September, February, or June.
+\DegreeDate{June}{1876}
+
+% Date that final thesis is submitted to department
+\ThesisDate{May 18, 1876}
+
+
+%%%%%% Choose whether to have a CREATIVE COMMONS License %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% If you are using a cc license, put details of your cc license here.
+% Omit this command if you are not using a cc license.
+%
+\CClicense{CC BY-NC-ND 4.0}{https://creativecommons.org/licenses/by-nc-nd/4.0/}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Titlepage
+\maketitle
+ \cleardoublepage% for two-sided printing, this puts abstract on a right-hand (odd) page, possibly inserting a blank page
+ % if the the class option [twoside] is omitted, the command just begins a new page
+
+
+%%%%%%%%% Contents that you need to write follows %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% \includeonly{acknowledgments,biography,chapter1,chapter2,...,appendixa,...}
+% for usage, see https://latexref.xyz/dev/latex2e.html#g_t_005cinclude-_0026-_005cincludeonly
+
+%%% Frontmatter (write this material in the mentioned files) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% The abstract environment creates all the required headers and footnote.
+% You only need to add the text of the abstract itself in the file abstract.tex
+\begin{abstract}
+ \input{abstract.tex}% in this case, use \input rather than \include because you are inside an environment
+\end{abstract}
+ \cleardoublepage
+
+\include{acknowledgments.tex}%
+ \cleardoublepage
+
+\include{biography.tex}% optional, see MIT Libraries https://libraries.mit.edu/distinctive-collections/thesis-specs/#format
+ \cleardoublepage
+
+
+%%% Table of contents and lists of stuff (edit only if you want different lists) %%%%%%%%%%%%%%%%
+
+ \pdfbookmark[0]{Table of Contents}{toc}%
+\tableofcontents
+ \cleardoublepage
+
+ \phantomsection
+\listoffigures
+ \addcontentsline{toc}{chapter}{\protect\textbf{\listfigurename}}%
+ \cleardoublepage
+
+ \phantomsection
+\listoftables
+ \addcontentsline{toc}{chapter}{\protect\textbf{\listtablename}}%
+ \cleardoublepage
+
+
+%%% Chapters of thesis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% If you really feel the need to engage in "double spacing", you can start here...
+
+\include{chapter1.tex}
+%\include{chapter2.tex}
+%\include{chapter3.tex}
+
+
+%%% Appendicies of thesis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\appendix
+\include{appendixa.tex}
+
+
+%%% Bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\raggedright% to avoid stretched white space and split urls; DELETE if you prefer justified text
+%
+\printbibliography[title={References},heading=bibintoc]
+}
+% biblatex also supports chapter-by-chapter bibliography, https://tex.stackexchange.com/a/296502/119566
+% see the biblatex manual, section 3.14.3
+
+
+%%%% Option for natbib %%%%%%%%%%%%%
+%% use an appropriate style (.bst) and your own .bib file[s]
+
+%\bibliographystyle{plainnat}
+%\bibliography{mitthesis-sample.bib}
+
+\end{document}
+ \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/README.md b/macros/latex/contrib/mitthesis/README.md
new file mode 100644
index 0000000000..40c6674bb4
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/README.md
@@ -0,0 +1,78 @@
+
+ #mitthesis --- A LaTeX template for MIT theses#
+
+ v1.00 dated 2023/06/17.
+
+ ####Overview####
+ This class provides a LaTeX template for MIT theses formatted according to
+ the requirements of the Massachusetts Institute of Technology Libraries (as posted in 2023):
+
+ [https://libraries.mit.edu/distinctive-collections/thesis-specs/](https://libraries.mit.edu/distinctive-collections/thesis-specs/)
+
+ This template is appropriate for MIT theses of all types.
+
+ This template works with either pdfLaTeX or unicode engines such as luaLaTeX.
+ The bibliography can be prepared with either biblatex (default) or natbib/bibtex.
+ The class is based on current LaTeX distributions, ideally 11/2022 or later, but
+ compatible with distributions back to 2020. This template replaces the older
+ version of mitthesis.cls, which was first composed in the 1980s.
+
+ The files in this distribution are:
+
+ README.md -- this file
+ mitthesis.cls -- the class file
+ MIT-Thesis.tex -- a latex template for this class
+ mydesign.tex -- a file that loads packages for color and document design
+ MIT-Thesis.pdf -- a sample thesis from the template, using default fonts
+ mitthesis-sample.bib -- a sample bibliography file with many examples
+ fontsets/ -- a directory of input files that load optional fonts
+ *
+ abstract.tex -- put your abstract in this file
+ acknowledgments.tex -- put your acknowledgments in this file
+ biosketch.tex -- put your biosketch in this file (optional)
+ chapter1.tex -- put your first chapter in this file (etc.)
+ appendixa.tex -- put your first appendix in this file (etc.)
+ *
+ mitthesis-doc/ -- documentation for usage and options
+ examples/font_samples/
+ -- sample theses in different fonts
+ examples/cover_page_samples/
+ -- sample theses for one or more authors and degrees
+
+
+ ####Author####
+
+ John H. Lienhard V
+
+ Department of Mechanical Engineering
+
+ Massachusetts Institute of Technology
+
+ Cambridge, MA 02139-4307 USA
+
+
+ ---
+
+ ####Change log####
+ v1.00 (17 June 2023): Initial release
+
+ ---
+
+ ####License####
+
+ Copyright (c) 2023 John H. Lienhard
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+ subject to the following two conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ The software is provided "as is", without warranty of any kind, express or implied, including but
+ not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement.
+ In no event shall the authors or copyright holders be liable for any claim, damages or other liability,
+ whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
+ software or the use or other dealings in the software.
diff --git a/macros/latex/contrib/mitthesis/abstract.tex b/macros/latex/contrib/mitthesis/abstract.tex
new file mode 100644
index 0000000000..34447aefb4
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/abstract.tex
@@ -0,0 +1,11 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+%
+% The abstract environment creates all the required headers and footnote.
+% You only need to add the text of the abstract itself.
+%
+% Approximately 500 words or less; try not to use formulas or special characters
+% If you don't want an initial indentation, do \noindent at the start of the abstract
+
+The developments of the ``kinetic theory'' of gases made within the last ten years have enabled it to account satisfactorily for many of the laws of gases. The mathematical deductions of Clausius, Maxwell and others, based upon the hypothesis of a gas composed of molecules acting upon each other at impact like perfectly elastic spheres, have furnished expressions for the laws of its elasticity, viscosity, conductivity for heat, diffusive power and other properties. For some of these laws we have experimental data of value in testing the validity of these deductions and assumptions. Next to the elasticity, perhaps the phenomena of the viscosity of gases are best adapted to investigation\footnote{Text from Holman (1876): \doi{10.2307/25138434}.}.
diff --git a/macros/latex/contrib/mitthesis/acknowledgments.tex b/macros/latex/contrib/mitthesis/acknowledgments.tex
new file mode 100644
index 0000000000..3e41684a12
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/acknowledgments.tex
@@ -0,0 +1,11 @@
+%% acknowledgments.tex
+
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+\chapter*{Acknowledgments}
+\addcontentsline{toc}{chapter}{\protect\textbf{Acknowledgments}}
+
+Write your acknowledgments here.
diff --git a/macros/latex/contrib/mitthesis/appendixa.tex b/macros/latex/contrib/mitthesis/appendixa.tex
new file mode 100644
index 0000000000..07a90bce08
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/appendixa.tex
@@ -0,0 +1,63 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+\chapter{Code listing}
+
+\lstdefinestyle{mystyle}{
+ backgroundcolor=\color{CadetBlue!15!white},
+ commentstyle=\color{Red3},
+ numberstyle=\tiny\color{gray},
+ stringstyle=\color{Blue3},
+ basicstyle=\small\ttfamily,
+ breakatwhitespace=false,
+ breaklines=true,
+ numbers=left,
+ numbersep=5pt,
+ showspaces=false,
+ showstringspaces=false,
+ showtabs=false,
+ tabsize=2
+}%
+\lstset{language=[5.3]Lua,style={mystyle}}%
+
+\begin{lstlisting}
+function print_rate(kappa,xMin,xMax,npoints,option)
+ local c = 1-kappa*kappa
+ local croot = (1-kappa*kappa)^(1/2)
+ local logx = math.log(xMin)
+ local psi = 0
+
+ local xstep = (math.log(xMax)-math.log(xMin))/(npoints-1)
+
+ arg0 = math.sqrt(xMin/c)
+ psi0 = (1/c)*math.exp((kappa*arg0)^2)*(erfc(kappa*arg0)-erfc(arg0))
+
+ if option~=[[]] then
+ tex.sprint("\\addplot+["..option.."] coordinates{")
+ -- addplot+ for color cycle to work
+ else
+ tex.sprint("\\addplot+ coordinates{")
+ end
+ tex.sprint("("..xMin..","..psi0..")")
+
+ for i=1, (npoints-1) do
+ x = math.exp(logx + xstep)
+ arg = math.sqrt(x/c)
+ karg = kappa*arg
+ if karg<5 then
+ -- this break compensates for exp(karg^2), which multiplies the error in the erf approximation...
+ logpsi = -math.log(croot) + karg^2 + math.log(erfc(karg)-erfc(arg))
+ psi = math.exp(logpsi)
+ else
+ psi = (1/(karg) - 1/(2*(karg^3)) + 3/(4*(arg^5)) )/(1.77245385*croot)
+ -- this is the large x asymptote of the reaction rate
+ end
+ logx = math.log(x)
+ tex.sprint("("..x..","..psi..")")
+ end
+ tex.sprint("}")
+end
+\end{luacode*}
+\end{lstlisting}
diff --git a/macros/latex/contrib/mitthesis/biography.tex b/macros/latex/contrib/mitthesis/biography.tex
new file mode 100644
index 0000000000..27c63e067c
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/biography.tex
@@ -0,0 +1,10 @@
+%% This section is optional
+
+\chapter*{Biographical Sketch}
+\addcontentsline{toc}{chapter}{\protect\textbf{Biographical Sketch}}
+
+Silas Whitcomb Holman was born in Harvard, Massachusetts on January 20, 1856. He received his S.B. degree in Physics from MIT in 1876, and then joined the MIT Department of Physics as an Assistant. He became Instructor in Physics in 1880, Assistant Professor in 1882, Associate Professor in 1885, and Full Professor in 1893. Throughout this period, he struggled with increasingly severe rheumatoid arthritis. At length, he was defeated, becoming Professor Emeritus in 1897 and dying on April 1, 1900.
+
+Holman's light burned brilliantly before his tragic and untimely death. He published extensively in thermal physics, and authored textbooks on precision measurement, fundamental mechanics, and other subjects. He established the original Heat Measurements Laboratory. Holman was a much admired teacher among both his students and his colleagues. The reports of his department and of the Institute itself refer to him frequently in the 1880's and 1890's, in tones that gradually shift from the greatest respect to the deepest sympathy.
+
+Holman was a student of Professor Edward C. Pickering, then head of the Physics department. Holman himself became second in command of Physics, under Professor Charles R. Cross, some years later. Among Holman's students, several went on to distinguish themselves, including: the astronomer George E. Hale ('90) who organized the Yerkes and Mt. Wilson observatories and who designed the 200 inch telescope on Mt. Palomar; Charles G. Abbot ('94), also an astrophysicist and later Secretary of the Smithsonian Institution; and George K. Burgess ('96), later Director of the Bureau of Standards. \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/chapter1.tex b/macros/latex/contrib/mitthesis/chapter1.tex
new file mode 100644
index 0000000000..0bba9a74e0
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/chapter1.tex
@@ -0,0 +1,162 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+\chapter{Introduction}
+
+\lipsum[1-2] Postremo aliquos futuros suspicor, qui me ad alias litteras vocent, genus hoc scribendi, etsi sit elegans, personae tamen et dignitatis esse negent~\cite{DKE1969,ww1920,kirk2288a,churchill1948,gibbs1863}.
+
+\section[A section discussing the first issue: \(\psi/\textrm{J}\)]{A section discussing the first issue: \ifpdftex\(\bm{\psi}/\bm{J}\)\else{\(\symbfup{\psi/J}\)}\fi}
+
+
+We begin with some ideas from the literature \cite{Fong2015,sharpe1}.
+\begin{equation}
+\frac{\partial}{\partial t}\left[\rho\bigl(e + \lvert\vec{u}\rvert^2\big/2\bigr)\right] + \nabla\cdot\left[\rho\bigl(h + \lvert\vec{u}\rvert^2\big/2 \bigr)\vec{u}\right]
+ ={}-\nabla \cdot \vec{q} + \rho \vec{u}\cdot\vec{g}+ \frac{\partial}{\partial x_j}\bigl(d_{ji}u_i\bigr)
+\end{equation}
+ \lipsum[3]
+
+\lipsum[4] And more citations~\cite{sharpe1,GSL}. Then we write some more and include our citations~\cite{Swaminathan2017IDABRO,dlmf,amsmath}. The configuration is shown in Fig.~\ref{fig:golden2}.
+
+%%%%%%%%%%%%%%%%% begin full width figure %%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{figure*}[t]
+\begin{subfigure}[c]{0.495\textwidth}
+\centering{\includegraphics[width=0.99\textwidth]{example-image-c}}%
+\subcaption{\label{fig:golden}}
+\end{subfigure}
+%%%%%%%% don't leave a break here
+\begin{subfigure}[c]{0.495\textwidth}
+\centering{\includegraphics[width=0.99\textwidth]{example-image-c}}%
+\subcaption{\label{fig:golden2}}%
+\end{subfigure}%
+\caption{A figure with two subfigures: (a) first subfigure; (b) second subfigure.\label{fig:4}}
+\end{figure*}
+%%%%%%%%%%%%%%%%%%% end full width figure %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\lipsum[4]
+
+\subsection{Subsection~eqn.~\eqref{eqn:WT1}}
+\lipsum[5-6]
+
+\subsubsection{A subsubsection}
+\lipsum[7]
+
+{\small
+\begin{equation}\label{eqn:WT1}
+\begin{Vmatrix}
+\dfrac\varphi{(\varphi_1,\varepsilon_1)} & 0 & \hdotsfor{4} & 0 & \\[4\jot]
+\dfrac{\varphi k_{21}}{(\varphi_2,\varepsilon_1)} & \dfrac\varphi{(\varphi_2,\varepsilon_2)} & 0 & \hdotsfor{3} & 0 \\[4\jot]
+\dfrac{\varphi k_{31}}{(\varphi_3,\varepsilon_1)} &\dfrac{\varphi k_{32}}{(\varphi_3,\varepsilon_2)} & \dfrac\varphi{(\varphi_3,\varepsilon_3)}& 0 & \hdotsfor{2} & 0 \\[\jot]
+\vdots & & & \smash{\rotatebox{15}{$\ddots$}} & & & \vdots \\[\jot]
+\dfrac{\varphi k_{n-2\, 1}}{(\varphi_{n-2},\varepsilon_1)} &
+\dfrac{\varphi k_{n-2\, 2}}{(\varphi_{n-2},\varepsilon_2)} &\hdotsfor{1} & \dfrac{\varphi k_{n-2\,n-3}}{(\varphi_{n-2},\varepsilon_{n-3})} & \dfrac\varphi{(\varphi_{n-2},\varepsilon_{n-2})}& 0& 0 \\[4\jot]
+\dfrac{\varphi k_{n-1\, 1}}{(\varphi_{n-1},\varepsilon_1)} & \dfrac{\varphi k_{n-1\, 2}}{(\varphi_{n-1},\varepsilon_2)} &\hdotsfor{2} &
+\dfrac{\varphi k_{n-1\,n-2}}{(\varphi_{n-1},\varepsilon_{n-2})}& \dfrac{\varphi}{(\varphi_{n-1},\varepsilon_{n-1})} & 0 \\[4\jot]
+\dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)} & \dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)} & \hdotsfor{3} &
+\dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})} & \dfrac{\varphi}{(\varphi_n,\varepsilon_n)}
+\end{Vmatrix}
+\end{equation}
+}%
+
+\section{Description our paradigm~\cite{GSL}}\label{ch1:theidea}
+
+\lipsum[8] No dissertation is complete without footnotes\footnote{First footnote. See section~\ref{sec:stratified-flow}.}\footnote{Another interesting detail.}\footnote{And another really important idea to have in mind~\cite{reynolds1958,clauser56,lienhard2020,johnson1980,johnson1965,mpl}.}.
+
+\begin{figure}[t]
+%\includegraphics[width=6cm]{example-image-a}
+%\includegraphics[width=3cm]{example-image-golden}
+%\includegraphics[width=3cm]{example-grid-100x100pt}
+\centering\includegraphics[height=5cm]{example-image-b}
+%\includegraphics[scale=0.5]{example-image-c}
+%\includegraphics[width=3cm]{example-image}
+\caption{Caption text\label{mantissa-format}}
+\end{figure}
+
+
+\subsection{Conversion to a metaheuristic}
+
+\lipsum[11-12] This concept is discussed further in section~\ref{sec:stratified-flow}, and Refs.~\cite{euler1740,fourier1822}.
+
+
+
+\section{Other generalizations}
+
+\subsection{The most general case}
+
+\lipsum[7] And another citation, so that our sources will be unambiguous~\cite{montijano2014}.
+\begin{gather}
+\ce{x Na(NH4)HPO4 ->[\Delta] (NaPO3)_x + x NH3 ^ + x H2O} \\[0.5em]
+\ce{^234_90Th -> ^0_-1$\beta${} + ^234_91Pa} \\[0.5em]
+\ce{SO4^2- + Ba^2+ -> BaSO4 v} \\[0.5em]
+\ce{Zn^2+
+<=>[+ 2OH-][+ 2H+]
+$\underset{\text{amphoteric hydroxide}}{\ce{Zn(OH)2 v}}$
+<=>[+ 2OH-][+ 2H+]
+$\underset{\text{tetrahydroxozincate}}{\ce{[Zn(OH)4]^2-}}$
+}
+\end{gather}
+These examples of chemical formul\ae\ are copied directly from the documentation of the \texttt{mhchem} package, which was used to typeset them.
+
+\section{Baroclinic generation of vorticity\label{sec:stratified-flow}}
+
+Substitution of the particle acceleration and application Stokes theorem leads to the \textit{Kelvin-Bjerknes circulation theorem}, for
+$\rho \neq \text{fn}(p)$:
+\begin{align}
+\frac{d\Gamma}{dt} &{}= \frac{d}{dt} \int_{\mathcal{C}} \mathbf{u} \cdot d\mathbf{r}\\
+ &{}= \int_{\mathcal{C}} \frac{D\mathbf{u}}{Dt} \cdot d\mathbf{r} + \underbrace{\int_{\mathcal{C}} \mathbf{u}\cdot d\biggl( \frac{d\mathbf{r}}{dt}\Biggr)}_{=\, 0} \\[-2pt]
+ &{}= \iint_{\mathcal{S}} \nabla \times \frac{D\mathbf{u}}{Dt} \cdot d\mathbf{A}\\
+ &{}= \iint_{\mathcal{S}} \nabla p \times \nabla \left( \frac{1}{\rho}\right) \cdot d\mathbf{A}
+\end{align}
+
+Baroclinic generation of vorticity accounts for the sea breeze and various other atmospheric currents in which temperature, rather than pressure, creates density gradients. Further, this phenomenon accounts for ocean currents in straits joining more and less saline seas, with surface currents flowing from the fresher to the saltier water and with bottom current going oppositely.
+
+%%%%%%%%%%%%%%%% end full width table %%%%%%%%%%%%%%%%%%%
+
+%% Nomenclature list is optional
+%
+% This environment takes three optional arguments:
+% [1] adjust space between symbol and definition
+% [2] name (heading) of the nomenclature list
+% [3] level - can be "section" or "chapter" depending on whether you
+% have one nomenclature list for whole thesis or one for each
+% chapter.
+\begin{nomenclature}[2em][Nomenclature for Chapter~1][section]
+\EntryHeading{Roman letters}
+\entry{$\mathcal{C}$}{material curve}
+\entry{$\mathbf{r}$}{material position [m]}
+\entry{$\mathbf{u}$}{velocity [m s$^{-1}$]}
+\EntryHeading{Greek letters}
+\entry{$\Gamma$}{circulation [m$^2$ s$^{-1}$]}
+\entry{$\rho$}{mass density [kg m$^{-3}$]}
+\end{nomenclature}
+
+%%%%%%%%%%%%%%% begin full width table %%%%%%%%%%%%%%%%%%
+\begin{table*}[t]
+\caption{The error function and complementary error function}\label{tab:1}%
+\centering{%
+\begin{tabular*}{0.8\textwidth}{@{\hspace*{1.5em}}@{\extracolsep{\fill}}ccc!{\hspace*{3.em}}ccc@{\hspace*{1.5em}}}
+\toprule
+\multicolumn{1}{@{\hspace*{1.5em}}c}{$x$\rule{0pt}{8pt}} &
+\multicolumn{1}{c}{$\text{erf}(x)$} &
+\multicolumn{1}{c!{\hspace*{3.em}}}{$\text{erfc}(x)$} &
+\multicolumn{1}{c}{$x$} &
+\multicolumn{1}{c}{$\text{erf}(x)$} &
+\multicolumn{1}{c@{\hspace*{1.5em}}}{$\text{erfc}(x)$} \\ \midrule
+0.00 & 0.00000 & 1.00000 & 1.10 & 0.88021 & 0.11980 \\
+0.05 & 0.05637 & 0.94363 & 1.20 & 0.91031 & 0.08969 \\
+0.10 & 0.11246 & 0.88754 & 1.30 & 0.93401 & 0.06599 \\
+0.15 & 0.16800 & 0.83200 & 1.40 & 0.95229 & 0.04771 \\
+0.20 & 0.22270 & 0.77730 & 1.50 & 0.96611 & 0.03389 \\
+0.30 & 0.32863 & 0.67137 & 1.60 & 0.97635 & 0.02365 \\
+0.40 & 0.42839 & 0.57161 & 1.70 & 0.98379 & 0.01621 \\
+0.50 & 0.52050 & 0.47950 & 1.80 & 0.98909 & 0.01091 \\
+0.60 & 0.60386 & 0.39614 & 1.82\makebox[0pt][l]{14} & 0.99000 & 0.01000 \\
+0.70 & 0.67780 & 0.32220 & 1.90 & 0.99279 & 0.00721 \\
+0.80 & 0.74210 & 0.25790 & 2.00 & 0.99532 & 0.00468 \\
+0.90 & 0.79691 & 0.20309 & 2.50 & 0.99959 & 0.00041 \\
+1.00 & 0.84270 & 0.15730 & 3.00 & 0.99998 & 0.00002 \\
+\bottomrule
+\end{tabular*}
+}%
+\end{table*}
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_CC_license.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_CC_license.pdf
new file mode 100644
index 0000000000..790738f762
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/No_CC_license.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf
new file mode 100644
index 0000000000..dbd2be9562
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_one_degree.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf
new file mode 100644
index 0000000000..362b417cf8
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/One_author_two_degrees.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf
new file mode 100644
index 0000000000..8f4e014a63
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_one_degree.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf
new file mode 100644
index 0000000000..96e96ba54d
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/cover_page_samples/Two_authors_two_degrees.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
new file mode 100644
index 0000000000..f2bc9f2a7e
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Defaultfonts.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Fira-newtxsf.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Fira-newtxsf.pdf
new file mode 100644
index 0000000000..45c1769bee
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Fira-newtxsf.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
new file mode 100644
index 0000000000..10b658fc9d
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Heros-Stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
new file mode 100644
index 0000000000..b4a118e17f
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Libertine.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
new file mode 100644
index 0000000000..78a2027168
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Lucida.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
new file mode 100644
index 0000000000..2efd9fefe6
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx-sans-text.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
new file mode 100644
index 0000000000..c448aa1159
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Newtx.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
new file mode 100644
index 0000000000..8ff17c4a24
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Termes-Stix2.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Termes-Stix2.pdf
new file mode 100644
index 0000000000..b118214e28
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Termes-Stix2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf b/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
new file mode 100644
index 0000000000..edd2ef9d6f
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/examples/font_samples/Termes.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/fontsets/defaultfonts.tex b/macros/latex/contrib/mitthesis/fontsets/defaultfonts.tex
new file mode 100644
index 0000000000..675014a0cb
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/defaultfonts.tex
@@ -0,0 +1,20 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% Default fonts
+%
+\ifpdftex
+ \typeout{^^JLoading Computer Modern text and math fonts (default for pdftex).^^J}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{bm}
+\else
+ \typeout{^^JLoading Latin Modern text and math fonts (default for unicode engines).^^J}
+ %
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math.
+ % Unicode-math loads the fontspec package, but the default fonts are not selected by fontspec, so
+ % you cannot use \addfontfeatures to alter the fonts. The command is used on titlepage, so defeat it:
+ \def\addfontfeature#1#2{\ignorespaces}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/fira-newtxsf.tex b/macros/latex/contrib/mitthesis/fontsets/fira-newtxsf.tex
new file mode 100644
index 0000000000..42a64334f9
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/fira-newtxsf.tex
@@ -0,0 +1,22 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% Fira Sans text font with newtx sans serif math font and Inconsolata typewriter font
+%
+\ifpdftex
+ \typeout{^^JLoading Fira sans text font with newtx sans serif math font and Inconsolata typewriter^^J}
+ \RequirePackage[sfdefault]{FiraSans} % sans serif text package %,scaled=.85
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[varqu,varl,,scaled=1.12]{zi4} % inconsolata font for typewriter
+ \RequirePackage[cmintegrals,scaled=1.12]{newtxsf} % sans serif math
+ \RequirePackage{bm}
+\else
+ \ClassWarning{mitnewthesis}{The newtx font set requires pdflatex. Defaulting to LMR fonts}
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math.
+ % Unicode-math loads the fontspec package, but the default fonts are not selected by fontspec, so
+ % you cannot use \addfontfeatures to alter the fonts. The command is used on titlepage, so defeat it:
+ \def\addfontfeature#1#2{\ignorespaces}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/heros-stix2.tex b/macros/latex/contrib/mitthesis/fontsets/heros-stix2.tex
new file mode 100644
index 0000000000..943fe6a84b
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/heros-stix2.tex
@@ -0,0 +1,68 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% TeX Gyre Heros (sans serif) text font with STIX Two Math font and Inconsolata monospaced font
+%
+% These fonts are available at:
+% http://www.gust.org.pl/projects/e-foundry/tex-gyre
+% https://github.com/stipub/stixfonts
+% https://ctan.org/tex-archive/fonts/inconsolata
+% Install these as system fonts on your computer
+%
+\ifpdftex
+ \ClassWarning{mitnewthesis}{The heros-stix2 fontset requires a unicode engine. Defaulting to CMR fonts.}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{bm}
+\else
+ \typeout{^^JTeX Gyre Heros (sans serif) text font with STIX2 math font and Inconsolata monospaced font.^^J}
+ %
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
+
+ \setmainfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,
+ ]
+ \setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,
+ ]
+ \setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package and is in CTAN https://ctan.org/tex-archive/fonts/inconsolata
+ Scale=1.05,
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Regular,% has no italic face
+ BoldFont = *-Bold,
+ BoldItalicFont = *-Bold,% has no bold italic face
+ RawFeature = {+ss01,+ss02,+ss03},
+ ]
+ \setmathfont{STIXTwoMath-Regular}[% nice glyphs, but \mkern sometimes needed %% https://github.com/stipub/stixfonts
+ Scale=MatchUppercase,
+ Extension = .otf,
+ BoldFont = *,% STIX Two Math has no bold face
+% Color=NavyBlue,
+ RawFeature = {+ss01, -ss02, -ss08},
+ ]
+ % ss01 -- switch calligraphic to script; +ss02 -- variants of g, u, v, w, z; +ss08 -- upright integrals
+ %
+ \setmathfontface\mathbf{STIXTwoText-Bold.otf}[]% to not get Heros bold, https://github.com/stipub/stixfonts
+ \setmathfontface\mathit{STIXTwoText-Italic.otf}[]
+ \setmathfontface\mathrm{STIXTwoText-Regular.otf}[]% to get roman letters from STIX Two
+ %
+ \newcommand*{\FRAC}[1]{{\addfontfeature{Fractions=On}#1}}% use OpenType feature for fractions, \FRAC{1/2}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/libertine.tex b/macros/latex/contrib/mitthesis/fontsets/libertine.tex
new file mode 100644
index 0000000000..81d33bff72
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/libertine.tex
@@ -0,0 +1,60 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+%% Linux Libertine (serif) text font with newtxmath[libertine] (pdftex) or Libertinus (unicode) math font
+%
+% These fonts are available here https://ctan.org/tex-archive/fonts/libertine/opentype
+% and here https://github.com/alerque/libertinus
+% install these as system fonts on your computer
+%
+\ifpdftex
+ \typeout{^^JLoading newtx-libertine text and math fonts with insolata typewriter font^^J}
+ \usepackage[lining,semibold]{libertine}
+ \usepackage[T1]{fontenc}
+ \usepackage[varqu,varl]{inconsolata}% typewriter
+% \usepackage{amsthm}% must be loaded before newtxmath
+ \usepackage[libertine,vvarbb]{newtxmath}
+ \usepackage{bm}% load after all math to give access to bold math
+\else
+ \typeout{^^JLoading Linux Libertine (serif) text font with Libertinus math font^^J}
+ %
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode math loads the fontspec package
+ %
+ \setmainfont{LinLibertine}[% Linux Libertine O
+ Extension = .otf,
+ UprightFont = *_R,
+ ItalicFont = *_RI,
+ BoldFont = *_RZ, % Libertine O Semibold
+ BoldItalicFont = *_RZI, % Libertine O Semibold Italic
+ % Ligatures=Rare,% TeX
+ % Numbers=OldStyle,%
+ RawFeature={+ss05},% +ss02 would change J, K, R; +ss05 changes W
+ ]
+ \setmonofont{LinLibertine}[% Linux Libertine Mono O
+ Scale=0.9,
+ Extension = .otf,
+ UprightFont = *_M,
+ ItalicFont = *_MO,% oblique
+ BoldFont = *_MB,
+ BoldItalicFont = *_MBO,% oblique
+ ]
+ \setsansfont{LinBiolinum}[% Linux Biolinum O
+ Extension = .otf,
+ UprightFont = *_R,
+ ItalicFont = *_RI,
+ BoldFont = *_RB,
+ BoldItalicFont = *_RBO,% oblique
+ Scale=MatchUppercase]
+ %
+ %% a Libertine-style math font
+ \setmathfont{libertinusmath-regular}[%
+ Extension = .otf,
+ Scale=MatchUppercase,
+ BoldFont = *,% This font lacks a bold version
+ RawFeature={+ss08},% +ss08 gives slanted integrals (no other features)
+ ]
+ \newcommand*{\FRAC}[1]{{\addfontfeature{Fractions=On}#1}}% use OpenType feature for fractions, \FRAC{1/2}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/lucida.tex b/macros/latex/contrib/mitthesis/fontsets/lucida.tex
new file mode 100644
index 0000000000..a6689059d5
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/lucida.tex
@@ -0,0 +1,151 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% Lucida Bright and Lucida Bright Math fonts (available from the TeX Users Group)
+
+\typeout{^^JLucida Bright and Lucida Bright Math fonts^^J}
+
+\ifpdftex
+ \RequirePackage[LY1]{fontenc}
+ \RequirePackage[expert,vargreek,altbullet,seriftt]{lucidabr} % switch text and math fonts
+ \RequirePackage{bm}
+\else
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
+
+ % FEATURE DESCRIPTION DEFAULT
+ % dlig discretionary ligatures (f-ligatures in typewriter fnt) off
+ % liga standard ligatures (f-ligatures, not monospaced fonts) on
+ % onum old style numbers (Lucida Bright only) off
+ % smcp small caps (Lucida Bright, upright only) off
+ % zero slashed zero (sans and monospaced fonts) off
+ % locl script/language specific (localized) forms on
+ %
+ % FEATURE FONT DESCRIPTION
+ % ss01 Lucida Sans & Typewriter use dotted zero: 𝟶 vs. default 0.
+ % ss01 use Lucida-standard shapes:
+ % Lucida Grande Mono ØOQ vs. default 0OQ;
+ % Lucida Console ØOQ vs. default 0OQ.
+
+ \setmainfont{LucidaBrightOT}[% main rm
+ Ligatures=TeX,
+ Extension=.otf,
+ UprightFont=*,
+ ItalicFont=*-Italic,
+ BoldFont=*-Demi,
+ BoldItalicFont=*-DemiItalic,
+ BoldItalicFeatures={Color=Purple4},
+ % UprightFeatures={Color=Salmon3},
+ Scale=0.92,
+ % Numbers ={OldStyle},
+ ]
+ %
+ \setsansfont{LucidaSansOT}[% main sans
+ Ligatures=TeX,
+ Extension=.otf,
+ UprightFont=*,
+ ItalicFont=*-Italic,
+ BoldFont=*-Demi,
+ BoldItalicFont=*-DemiItalic,
+ Scale=MatchUppercase,
+ ]
+ %
+ \setmonofont{LucidaSansTypewriterOT}[% main typewriter
+ Ligatures=TeX,
+ Extension=.otf,
+ UprightFont=*,
+ ItalicFont=*-Oblique,
+ BoldFont=*-Bold,
+ BoldItalicFont=*-BoldOblique,
+ Scale=MatchUppercase,
+ ]
+
+ %% MATH FONTS
+ %
+ % ss01 alternate Latin lower case math italic identical to text italic. This option is not recommended as Greek 𝜈 (nu) and Latin 𝑣 (vee) become too similar
+ % ss02 smaller arrows (original Type 1 size): ⇑ vs. default ⇑.
+ % ss03 attempt to imitate Type 1 fonts
+ % ss04 calligraphic alternative (similar to the Type 1 design) to the math script alphabet
+ % ss05 use a slashed-zero style for the empty set character (U+2205): Ø vs. default ∅
+ % ss08 emphasize right and bottom edges of the d’Alembertian operator (U+29E0, \laplac), to follow the design of the Laplace operator (U+2206, \increment, Δ); the default design emphasizes the left and upper edges. Also available in the bold math font.
+ %
+ \setmathfont{LucidaBrightMathOT}[% main math
+ Scale=MatchUppercase,
+ Extension=.otf,
+ BoldFont=LucidaBrightMathOT-Demi.otf,
+% BoldFeatures={Color=Chartreuse4},
+ RawFeature ={+ss04,+ss08}, %
+ ]
+
+%% LucidaMath-OT contains a *serif* typerwriter font. If you prefer a sans serif typerwriter font, you can use the following two settings.
+%
+% \setmathfont{LucidaSansTypewriterOT}[% <== NB: setting a text font where math font should go.
+% Scale=MatchUppercase,
+% range=tt,
+% Color=NavyBlue,
+% Extension=.otf,
+% script-features = {},
+% sscript-features = {},
+% BoldFont=LucidaSansTypewriterOT-Bold.otf,
+% BoldFeatures={Color=Salmon3},
+% ]
+% %
+% \setmathfontface\mathtt{LucidaSansTypewriterOT-Bold}[% bold upright typewriter font in boldmath.
+% version=bold,
+% Scale=MatchUppercase,
+% Extension=.otf,
+% ]
+ %
+ \setmathfont{LucidaBrightMathOT}[%
+ range={scr},% to make scr differ from cal
+ RawFeature={-ss04},
+ Scale=MatchUppercase,
+ Extension=.otf,
+ BoldFont=LucidaBrightMathOT-Demi.otf,% could be overridden by bold separate version
+ ]
+ \setmathfont{LucidaBrightMathOT}[% -Demi .. sufficient this way, since bold set above.
+ range={bfscr},% need to call \symbfscr manually - bug in unicode-math version & range interaction
+ RawFeature={-ss04},
+ Scale=MatchUppercase,
+ Extension=.otf,
+ BoldFont=LucidaBrightMathOT-Demi.otf,
+ ]
+ %% Fix unicode-math operator font not set up for bold face (default \mathrm). See https://github.com/wspr/unicode-math/issues/468
+ \setoperatorfont\normalfont
+ %
+ % note \mathbfit = \symbfit
+
+ % The specialized one-off Lucida fonts:
+ \newfontface\LucidaBlackletter{LucidaBlackletterOT}[%
+ Scale=0.95,% <== NB
+ Extension=.otf,
+ ]
+ \newfontface\LucidaCalligraphy{LucidaCalligraphyOT}[%
+ Scale=MatchUppercase,
+ Extension=.otf,
+ ]
+ \newfontface\LucidaHandwriting{LucidaHandwritingOT}[%
+ Scale=MatchUppercase,
+ Extension=.otf,
+ ]
+ % GrandeMono and Console fonts:
+ \newfontface\LucidaGrandeMonoDK{LucidaGrandeMonoDK}[%
+ Scale=MatchUppercase,
+ Extension=.otf,
+ UprightFont=*,
+ ItalicFont=*-Italic,
+ BoldFont=*-Bold,
+ BoldItalicFont=*-BoldItalic,
+ ]
+ \newfontface\LucidaConsole{LucidaConsoleDK}[%
+ Scale=MatchLowercase,% <=== NB
+ Extension=.otf,
+ UprightFont=*,
+ ItalicFont=*-Italic,
+ BoldFont=*-Bold,
+ BoldItalicFont=*-BoldItalic,
+ ]
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/newtx-sans-text.tex b/macros/latex/contrib/mitthesis/fontsets/newtx-sans-text.tex
new file mode 100644
index 0000000000..6e09c92569
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/newtx-sans-text.tex
@@ -0,0 +1,25 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% newtx package with sans-serif text (Helvetica-like text with Times-like math)
+%
+\ifpdftex
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[subscriptcorrection,varvw,helvratio=0.91,defaultsups]{newtx}% upint for upright integrals
+ \renewcommand{\familydefault}{\sfdefault}% use sans for main text
+% these two commands enable hyphenation of the typewriter font - https://tex.stackexchange.com/a/204421/119566
+% \input{t1ntxtt.fd}
+% \DeclareFontFamily{\encodingdefault}{\ttdefault}{\hyphenchar\font=`\-} %
+ \RequirePackage{bm}% bold math
+\else
+ \ClassWarning{mitnewthesis}{The newtx font set requires pdflatex. Defaulting to LMR fonts}
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math.
+ % Unicode-math loads the fontspec package, but the default fonts are not selected by fontspec, so
+ % you cannot use \addfontfeatures to alter the fonts. The command is used on titlepage, so defeat it:
+ \def\addfontfeature#1#2{\ignorespaces}
+\fi
+
+ \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/fontsets/newtx.tex b/macros/latex/contrib/mitthesis/fontsets/newtx.tex
new file mode 100644
index 0000000000..f59c916a58
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/newtx.tex
@@ -0,0 +1,22 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+\ifpdftex
+ \typeout{^^JLoading newtx fonts with inconsolata typewriter^^J}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage[subscriptcorrection,varvw,helvratio=0.91]{newtx}% stix2, upint
+ \RequirePackage[varl,varqu,hyphenate,mono]{inconsolata}% sans typewriter font; mono = fixed word spacing, hyphenate = allow hyphenation
+ \RequirePackage{bm}
+ \let\textsuperscript\textsu% newtx changes the default superiors font; this is needed to get commas aligned in sequential footnotes
+\else
+ \ClassWarning{mitnewthesis}{The newtx font set requires pdflatex. Defaulting to LMR fonts}
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math.
+ % Unicode-math loads the fontspec package, but the default fonts are not selected by fontspec, so
+ % you cannot use \addfontfeatures to alter the fonts. The command is used on titlepage, so defeat it:
+ \def\addfontfeature#1#2{\ignorespaces}
+\fi
+
+ \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/fontsets/stix2.tex b/macros/latex/contrib/mitthesis/fontsets/stix2.tex
new file mode 100644
index 0000000000..25945f7e96
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/stix2.tex
@@ -0,0 +1,61 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% STIX Two text and math fonts with Heros sans serif font and Inconsolata monospaced font
+%
+% These fonts are available at:
+% https://github.com/stipub/stixfonts
+% http://www.gust.org.pl/projects/e-foundry/tex-gyre
+% https://ctan.org/tex-archive/fonts/inconsolata
+% Install these as system fonts on your computer
+%
+\ifpdftex
+ \ClassWarning{mitnewthesis}{The stix2 fontset requires a unicode engine. Defaulting to CMR fonts.}
+ \RequirePackage{bm}
+\else
+ \typeout{^^JLoading STIX Two text and math fonts with Heros sans serif font and Inconsolata monospaced font.^^J}
+ %
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
+ %
+ \setmainfont{STIXTwoText}[% Presumes these are system fonts!
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+ SlantedFont = *-Italic,
+ ]
+ \setsansfont{texgyreheros}[% Presumes these are system fonts!
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,%
+ ]
+ \setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live)
+ Scale=1.05,%
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Regular,% has no italic face
+ BoldFont = *-Bold,
+ BoldItalicFont = *-Bold,% has no bold italic face
+ RawFeature = {+ss01,+ss02,+ss03},
+ ]
+ \setmathfont{STIXTwoMath-Regular}[% nice glyphs, but \mkern sometimes needed
+ Scale=MatchUppercase,
+ Extension = .otf,
+ BoldFont = *,% STIX Two Math has no bold face
+% Color=NavyBlue,
+ RawFeature = {+ss01, -ss02, -ss08},
+ ]
+ % ss01 -- switch calligraphic to script; +ss02 -- variants of g, u, v, w, z; +ss08 -- upright integrals
+ %
+ \newcommand*{\FRAC}[1]{{\addfontfeature{Fractions=On}#1}}% use OpenType feature for fractions, \FRAC{1/2}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/termes-stix2.tex b/macros/latex/contrib/mitthesis/fontsets/termes-stix2.tex
new file mode 100644
index 0000000000..fe475b13fe
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/termes-stix2.tex
@@ -0,0 +1,66 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% TeX Gyre Termes text font and Heros sans serif font with STIX2 math font and Inconsolata monospaced font
+%
+% These fonts are available at:
+% http://www.gust.org.pl/projects/e-foundry/tex-gyre
+% https://github.com/stipub/stixfonts
+% https://ctan.org/tex-archive/fonts/inconsolata
+% Install these as system fonts on your computer
+%
+\ifpdftex
+ \ClassWarning{mitnewthesis}{The termes-stix2 fontset requires a unicode engine. Defaulting to CMR fonts.}
+\else
+ \typeout{^^JLoading TeX Gyre Termes text font with STIX2 math font, Heros sans serif font, and Inconsolata monospaced font.^^J}
+ %
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
+ %
+ \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+ SlantedFont = *-Italic,
+ Numbers = Lining,
+ ]
+ \setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,% same as for newtx; former value 0.9 too small 2022/01/15
+ ]
+ \setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live)
+ Scale=1.05,% rescaled from 1, 22/03/10
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Regular,% has no italic face
+ BoldFont = *-Bold,
+ BoldItalicFont = *-Bold,% has no bold italic face
+ RawFeature = {+ss01,+ss02,+ss03},
+ ]
+ \setmathfont{STIXTwoMath-Regular}[% nice glyphs, but \mkern sometimes needed %% https://github.com/stipub/stixfonts
+ Scale=MatchUppercase,
+ Extension = .otf,
+ BoldFont = *,% STIX Two Math has no bold face
+% Color=NavyBlue,
+ RawFeature = {+ss01, -ss02, -ss08},
+ ]
+ % ss01 -- switch calligraphic to script; +ss02 -- variants of g, u, v, w, z; +ss08 -- upright integrals
+ %
+ \setmathfontface\mathbf{STIXTwoText-Bold.otf}[]% to not get Termes bold, https://github.com/stipub/stixfonts
+ \setmathfontface\mathit{STIXTwoText-Italic.otf}[]
+ \setmathfontface\mathrm{STIXTwoText-Regular.otf}[]% to get roman letters from STIX, not Termes
+ %
+ \newcommand*{\FRAC}[1]{{\addfontfeature{Fractions=On}#1}}% use OpenType feature for fractions, \FRAC{1/2}
+\fi
diff --git a/macros/latex/contrib/mitthesis/fontsets/termes.tex b/macros/latex/contrib/mitthesis/fontsets/termes.tex
new file mode 100644
index 0000000000..89f4c2a52c
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/fontsets/termes.tex
@@ -0,0 +1,57 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%% TeX Gyre Termes (Times-like) text font with Termes math font and Heros sans serif font and Cursor monospaced font
+%
+% These fonts are available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+% install these as system fonts on your computer
+%
+\ifpdftex
+ \ClassWarning{mitnewthesis}{The termes fontset requires a unicode engine. Defaulting to CMR fonts.}
+ \RequirePackage{bm}
+\else
+ \typeout{^^JLoading TeX Gyre Termes text and math fonts, Heros sans serif font, and Cursor monospaced font^^J}
+ \usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
+ %
+ \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+ SlantedFont = *-Italic,
+ Numbers = Lining,
+ ]
+ \setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,% same as for newtx; former value 0.9 too small 2022/01/15
+ ]
+ \setmonofont{texgyrecursor}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ Scale=0.97,
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+% BoldFeatures = { Color = VioletRed3 },
+ ]
+ \setmathfont{texgyretermes-math}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ Scale=MatchUppercase,
+ Extension = .otf,
+ BoldFont = *, % termes-math does not have a bold version
+% Color=Red3,
+ ]
+ %
+ \newcommand*{\FRAC}[1]{{\addfontfeature{Fractions=On}#1}}% use OpenType feature for fractions, \FRAC{1/2}
+\fi
diff --git a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf
new file mode 100644
index 0000000000..78ab55992d
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
new file mode 100644
index 0000000000..cbf62939fd
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/mitthesis-doc/mitthesis-doc.tex
@@ -0,0 +1,449 @@
+% !TEX TS-program = lualatex
+% !TEX encoding = UTF-8 Unicode
+
+% Version date: 17 June 2023
+
+\DocumentMetadata
+{
+ pdfstandard = a-2b,%a-3u,%a-4,%
+ pdfversion = 1.7, %2.0,
+ lang = en-US,
+% debug = {xmp-export}, % note that subject entries are all fine in dc format of outputted xmpi file.
+}
+
+%%%%%%%%%%%%%%%
+
+\documentclass[11pt]{article}
+
+\usepackage[letterpaper,margin=1in,footskip=0.5in]{geometry}
+\usepackage{metalogo}
+\usepackage{hologo}
+\newcommand*\pdfTeX{\hologo{pdfTeX}}
+
+\usepackage[x11names,svgnames,dvipsnames,table]{xcolor}
+\usepackage{luacolor} % load AFTER xcolor
+
+\usepackage[en-US]{datetime2} %% change default date format
+\makeatletter
+\newcommand{\daymonthyeardate}{%
+ \DTMenglishordinal{\@dtm@day}\space\DTMenglishmonthname{\@dtm@month} \@dtm@year
+}
+\makeatother
+
+\usepackage{booktabs}
+
+%%% Create an optional argument for unnumbered sections and set pdf bookmark (thru \addcontentsline).
+%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
+%%% errors when macros are in section titles.
+\let\svsection\section
+\RenewDocumentCommand{\section}{s o m}{%
+ \IfBooleanTF {#1}
+ {\svsection*{#3}\phantomsection%
+ {\IfNoValueTF {#2}
+ {\addcontentsline{toc}{section}{#3}}
+ {\addcontentsline{toc}{section}{#2}}% removed trailing space 2020/02/28
+ }%
+ }%
+ {\IfNoValueTF {#2}
+ {\svsection{#3}}
+ {\svsection[#2]{#3}}%
+ }%
+}
+
+%%% Create an optional argument for unnumbered SUBsections and set pdf bookmark (thru \addcontentsline).
+%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref
+%%% errors when macros are in section titles.
+\let\svsubsection\subsection
+\RenewDocumentCommand{\subsection}{s o m}{%
+ \IfBooleanTF {#1}
+ {\svsubsection*{#3}\phantomsection%
+ {\IfNoValueTF {#2}
+ {\addcontentsline{toc}{subsection}{#3}}
+ {\addcontentsline{toc}{subsection}{#2}}
+ }%
+ }%
+ {\IfNoValueTF {#2}
+ {\svsubsection{#3}}
+ {\svssubection[#2]{#3}}%
+ }%
+}
+
+%%%%%%%%% Set up text and math fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+% unicode math loads the fontspec package
+
+\setmainfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,% same as for newtx
+ ]
+\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ BoldFont = *-bold,
+ BoldItalicFont = *-bolditalic,
+ Numbers = Lining,
+ Scale=0.91,% same as for newtx
+ ]
+\setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live)
+ Scale=1.05,%
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Regular,% has no italic face
+ BoldFont = *-Bold,
+ BoldItalicFont = *-Bold,% has no bold italic face
+ RawFeature = {+ss01,+ss02,+ss03},
+ ]
+\setmathfont{STIXTwoMath-Regular}[% nice glyphs, but kerning requires fixes %% https://github.com/stipub/stixfonts.
+ Scale=MatchUppercase,
+ Extension = .otf,
+% Color=NavyBlue,
+ RawFeature = {+ss01, -ss02, -ss08},
+]% ss01 -- switch calligraphic to script; +ss02 -- variants of g, u, v, w, z; +ss08 -- upright integrals
+
+\setmathfontface\mathbf{STIXTwoText-Bold.otf}% to not get text font's sans bold ... could change other text-math faces, if desired
+
+
+%%%%%%%%%%% Hyperref related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\usepackage[psdextra]{hyperref}
+
+\hypersetup{%
+ unicode,%
+% pdftex,%
+ pdfborder={0 0 0},%
+ bookmarksnumbered=true,%
+ bookmarksopen=true,%
+ bookmarksopenlevel=2,%
+ colorlinks=true,
+ linkcolor=blue,
+ citecolor=blue,
+ urlcolor=violet,
+ filecolor=red,
+% anchorcolor=yellow,% not all pdf viewers recognize this field (Firefox does)
+% colorscheme=phelype,% overrides link, cite, url, file colors with a preset scheme, through \DocumentMetadata
+ pdfpagelayout=SinglePage,
+ pdfdisplaydoctitle=true,%
+ pdfstartview=Fit,
+ pdfmetalang={en},
+ pdftitle={Documentation for the MIT thesis template},%
+ pdfkeywords={John Lienhard, Massachusetts Institute of Technology, MIT, thesis, dissertation, template, latex},%
+ pdfnewwindow=true,%
+ pdfauthor={John H. Lienhard},
+ pdfauthortitle={Professor of Mechanical Engineering},
+ pdfcaptionwriter={{John H. Lienhard, V}}, %{\xmpquote{John H. Lienhard\xmpcomma\ V}},
+ pdfurl={https://lienhard.mit.edu},
+ pdfcontactemail={lienhard@mit.edu},
+ pdfcontactaddress={77 Massachusetts Avenue, Room 3-166},
+ pdfcontactcity={Cambridge, MA},
+ pdfcontactpostcode={02139},
+ pdfcontactcountry={USA},
+ pdfcontacturl={https://lienhard.mit.edu},
+ pdfcopyright={Copyright © \the\year\ by John H. Lienhard. Reuse under the MIT license},
+ pdfsubject={Documentation for the MIT thesis class and template},
+ pdflicenseurl={https://ctan.org/license/mit},
+ }
+
+% Directly add the xmp property that shows work is copyrighted. See l3pdfmeta.pdf.
+% This is not automatic with \DocumentMetadata. "True" must be capitalized.
+\ExplSyntaxOn
+ \cs_if_exist:NTF \pdfmeta_xmp_add:n {\pdfmeta_xmp_add:n{<xmpRights:Marked>True</xmpRights:Marked>}}{}
+\ExplSyntaxOff
+
+\urlstyle{same} % this changes font for \url to the current text font, but it is not recognized by \href.
+\RequirePackage{bookmark}% improves handling of pdf bookmarks
+
+%\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code
+
+
+%%%%%%% A nomenclature environment, if needed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\providecommand{\nomname}{Nomenclature}
+\newlength\nomenwidth
+\newlength\savitemsep
+
+\makeatletter
+\NewDocumentCommand\entry{m m}{%
+ \ifblank{#2}{%
+ \ClassWarning{\ClassName}{The command \protect\entry requires two arguments. To obtain a subheading, use \protect\EntryHeading}
+ \itemsep3\p@ plus 1\p@ minus 1\p@%
+ \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+ }{%
+ \item[#1\hfill]#2%
+ \@itempenalty=-\@lowpenalty%
+ }%
+}
+% A separate command command for nomenclature subheadings
+\NewDocumentCommand\EntryHeading{m}{%
+ \itemsep3\p@ plus 1\p@ minus 1\p@%
+ \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+}
+\makeatother
+%
+% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
+% Second optional argument can be used to rename the environment, e.g., to List of Symbols.
+\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
+ \setlength\columnsep{2em}
+ \setlength{\nomenwidth}{#1}
+ \csname #3\endcsname *{#2}% this level will probably vary amongst users! add to toc, as well.
+% \phantomsection\addcontentsline{toc}{#3}{#2}% removed for this example.
+ \raggedright
+ \begin{list}{}{%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{\itemsep}%
+ \setlength{\labelsep}{1em}%
+ \setlength{\labelwidth}{\nomenwidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \setlength\savitemsep\itemsep%
+ }%
+}{\end{list}\ignorespacesafterend}
+
+
+%%%%%%%%%%%%% End preamble %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\title{The \textit{new} MIT thesis template}
+\author{John H. Lienhard \\ Department of Mechanical Engineering \\ Massachusetts Institute of Technology}
+\date{\daymonthyeardate}
+
+\begin{document}
+
+\maketitle
+
+\section*{The MIT thesis template}
+
+\LaTeX\ has changed tremendously since the original MIT thesis template was written in the 1980s. \LaTeX\ 2.09 was replaced by \LaTeX2e\ in the 1994. Many packages and fonts were developed to accompany the original platform, particularly after 2000; and major updates to the \LaTeX\ kernel began in 2018. Further, the MIT Libraries changed the required format several times, especially as electronic thesis submission became the norm. The original template served MIT well, but by the early 2020's, it was substantially out of date.
+
+This \textit{new} MIT thesis template was developed in 2023 at the request of the MIT Libraries. The title and abstract pages strictly follow the current requirements of the Libraries. The underlying code is entirely new.
+
+
+\subsection*{System requirements}
+The new \texttt{mitthesis} class uses the features of \LaTeX\ as of 2022, with limited backward compatibility. An up-to-date \LaTeX\ system is therefore necessary when using this template.
+
+\LaTeX\ is a free, open source system. The entire system is distributed through the \TeX\ Live platform (\url{https://www.tug.org/texlive/}), including the basic format, packages, and user interfaces. The system operates on Windows, MacOS, and Unix/Linux. \TeX\ Live is formally updated each year in the spring, and the associated utility package allows users download the most current codes more frequently if they desire. (At the time of this writing, the commercial platform Overleaf.com provides similar functionality.)
+
+If you are missing a package or documentation, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}).
+
+
+\subsection*{\LaTeX\ engine}
+The template works with either \pdfTeX\ or unicode engines such as \LuaLaTeX. With the latter, fonts that you install in your operating system can be configured for use in your thesis. \LuaLaTeX\ also enables the direct use of lua code in your \texttt{.tex} file.
+
+
+\subsection*{File structure}
+The new MIT thesis template consists of: \texttt{mitthesis.cls}; a root file \texttt{MIT-Thesis.tex}; a file to load the abstract, \texttt{abstract.tex}; a file for design options, \texttt{mydesign.tex}; and an optional file to change the fonts (see the subdirectory, \texttt{fontset}). You should change the name of the root file to something more descriptive of your own work (e.g., \texttt{JohnsThesis.tex}, \texttt{MagnumOpusScientiae.tex},\ldots). In addition, files must be loaded for acknowledgments, an optional biosketch, chapters, and optional appendices.
+
+\section*{Information you need to complete}
+Various fields and commands must be changed to your own information in the preamble of \texttt{MIT-Thesis.tex} and immediately after the \verb|\begin{document}| command. This information includes the title, author, degree and other essential information. With the comments in \texttt{MIT-Thesis.tex}, this step should be self-explanatory. Nevertheless some comments follow.
+
+In the \verb|\hypersetup{..}| command, change the sample file to match your own information (name, title, keywords, etc.). These commands generate metadata that are incorporated into the pdf file.
+
+If your title page overflows (from too many authors, degrees, etc.), you can scale down the signature block at the bottom by issuing this command: \verb|\SignatureBlockSize{\small}|.
+
+The remaining commands are listed below.
+\begin{itemize}
+\item \verb|\title{the title of your thesis}|
+
+\item \verb|\Author{author full name}{author department}[1st PREVIOUS degree][2nd...| \linebreak
+Note that third, fourth, fifth, and sixth arguments are optional [..] and may be omitted. Use once for each author.
+
+\item \verb|\Degree{name of degree}{department giving degree}|. Use once for each degree fulfilled by thesis
+
+\item \verb|\Supervisor{supervisor name}{supervisor department}|. Use once for each supervisor.
+
+\item \verb|\Acceptor{acceptor name}{acceptor title}{thesis related position}|. Professor who accepts theses for your department (e.g., the Graduate Officer). Use once for each department.
+
+\item \verb|\DegreeDate{Month}{year}|. Date degree is awarded (February, June, or September).
+
+\item \verb|\ThesisDate{date}|. Date that your final thesis is submitted to the department.
+
+\end{itemize}
+
+\subsection*{Copyright license}
+If you wish to make your thesis available under a Creative Commons License, issue the following command between
+\verb|\begin{document}| and \verb|\maketitle|: \verb|\CClicense{license type}{license url}|. For example,
+
+\vskip 5pt
+\noindent\quad\verb|\CClicense{CC BY-NC-ND 4.0}{https://creativecommons.org/licenses/by-nc-nd/4.0/}|.
+
+
+\section*{Package options}
+Package options may be specified for \verb|\documentclass{mitthesis}[..]|. These options are described in Table~\ref{tab:1} and the subsections that follow.
+
+
+\begin{table}[ht]
+\caption{Options to the document class\label{tab:1}}
+\smallskip\setlength\extrarowheight{3pt}%
+\centering{%
+\small
+\begin{tabular}{>{\ttfamily}l<{} >{\raggedright\arraybackslash}p{42em} }
+\toprule
+\textrm{Package option} & Effect \\
+\midrule
+fontset & is a keyvalue, \texttt{fontset = <\textit{name}>}, which selects the set of fonts used for the thesis. See description below. \\
+lineno & this option loads the \texttt{\hrefurl{https://ctan.org/pkg/lineno}{lineno}} package, which provides line numbers, as for editing. The \texttt{\hrefurl{https://ctan.org/pkg/lineno}{lineno}} package provides additional commands to control line numbering. \\
+mydesign & this option loads the file \texttt{mydesign.tex}, which in turn loads the packages \texttt{\hrefurl{https://ctan.org/pkg/xcolor}{xcolor}}, \texttt{\hrefurl{https://ctan.org/pkg/titlesec}{titlesec}}, \texttt{\hrefurl{https://ctan.org/pkg/enumitem}{enumitem}}, \texttt{\hrefurl{https://ctan.org/pkg/caption}{caption}}, \texttt{\hrefurl{https://ctan.org/pkg/subcaption}{subcaption}}, and anything else that affects document design. You may edit \texttt{mydesign.tex}
+as you prefer.\\
+twoside & gives facing-page behavior for two-sided printing; omitting it will eliminate the even-numbered blank pages.\\[\jot]
+\bottomrule
+\end{tabular}}%
+\end{table}
+
+\subsection*{Font loading}
+By default, \texttt{mitthesis.cls} will load the traditional \LaTeX\ fonts, computer modern (\pdfTeX) or latin modern (unicode engines). By using the key value \texttt{fontset=$\cdots$} in the \verb|\documentclass| command, you can select a different set of fonts.
+
+Ten fontsets are predefined, including the default set (see Table~\ref{tab:2}). Three work only with \pdfTeX, four work only with unicode engines, and three work with either. These options include a mixture of serif or sans serif text and math fonts, as shown in the table.
+
+Among these fonts, Termes and NewTX are serifed fonts similar to the digital font Times New Roman. STIX Two is more similar to the original metal-type Times font. Linux Libertine is a serif font inspired by 19\textsuperscript{th} century book type. Lucida is a serifed font designed for high legibility at small size or on low resolution devices. This font is excellent for mathematics and includes a complete bold-face math font, but it is not free. Heros and NewTX-sans are sans-serif text fonts similar to Helvetica. NewTXsf is a sans-serif math font which draws upon glyphs from the STIX font. Fira is a humanist sans-serif text font designed in association with the Firefox browser. Finally, Computer Modern (and its extension Latin Modern)---the traditional ``\LaTeX\ font''---is a Didone font, with high contrast between thick and thin elements.
+
+You may also write your own fontset file, say \texttt{Myfontset.tex}, and then load it with
+
+\vskip10pt
+\hfill\verb|\documentclass[fontset=Myfontset]{mitthesis}|\hfill\hbox{}
+
+\begin{table}[tbh]
+\caption{Predefined font sets\label{tab:2}}
+\smallskip
+\centering{%
+\small
+\begin{tabular}{>{\ttfamily}l<{}l l p{3em} p{3em} >{\raggedright\arraybackslash}p{22em} }
+\toprule
+fontset & \pdfTeX & unicode & text font & math font & details \\
+\midrule
+fira-newtxsf & yes & no & sans & sans & included in \TeX\ Live \\
+newtx & yes & no & serif & serif & included in \TeX\ Live \\
+newtx-sans-text & yes & no & sans & serif & included in \TeX\ Live \\[1em]
+default & yes & yes & serif & serif & CM \& LM fonts are included in \TeX\ Live \\
+libertine & yes & yes & serif & serif & in \TeX\ Live for \pdfTeX. For unicode, OpenType text fonts freely available here
+\linebreak \url{https://sourceforge.net/projects/linuxlibertine/}\linebreak and the math font here
+\linebreak \url{https://github.com/alerque/libertinus} \\
+lucida & yes & yes & serif & serif & the lucida fonts are available from the \TeX\ User's Group,
+\url{https://tug.org/store/lucida} \\[2em]
+heros-stix2 & no & yes & sans & serif & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} \linebreak\url{https://github.com/stipub/stixfonts} \linebreak both fonts are free \\
+stix2 & no & yes & serif & serif & \url{https://github.com/stipub/stixfonts}, fonts are free\\
+termes & no & yes & serif & serif & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} fonts are free\\
+termes-stix2 & no & yes & serif & serif & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} \linebreak\url{https://github.com/stipub/stixfonts}\linebreak both fonts are free\\
+\midrule
+\multicolumn{5}{l}{Typewriter (monospaced) fonts are also loaded for unicode} & Inconsolata (sans serif): \url{https://ctan.org/tex-archive/fonts/inconsolata} Cursor (serif): \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} \\
+\bottomrule
+\end{tabular}}%
+\end{table}
+
+\subsection*{Design options}
+The thesis will follow the default styles of the \LaTeX\ report class for sections headings, captions, and lists. If you prefer different styles you can edit the file \texttt{mydesign.tex}. \textit{If you are happy with the default styles, you do not need to edit this file!}
+
+With \texttt{mydesign.tex}, you can set options for packages that manage color, e.g.\ \texttt{\hrefurl{https://ctan.org/pkg/xcolor}{xcolor}}, that change the margins, or that change the design of titles, captions, and lists: \texttt{\hrefurl{https://ctan.org/pkg/titlesec}{titlesec}}, \texttt{\hrefurl{https://ctan.org/pkg/caption}{caption}}, or \texttt{\hrefurl{https://ctan.org/pkg/enumitem}{enumitem}}. You can also load other packages. The \texttt{mitthesis} class will insert these commands at the appropriate point (prior to loading \texttt{\hrefurl{https://ctan.org/pkg/babel}{babel}}, fonts, or \texttt{\hrefurl{https://ctan.org/pkg/hyperref}{hyperref}}). You should not need to edit the class file.
+
+\subsection*{Single-sided vs.\ double-sided layout}
+The sample template uses the option \texttt{[twosided]}, which starts major sections (abstract, table of contents, chapters, etc.) on odd-numbered pages. This arrangement is suitable for two-sided printing, but can lead to empty even-numbered pages. If you do not wish to have this behavior, omit that option. By default, even and odd page margins are the same; this can be changed in the \texttt{mydesign.tex} file if necessary.
+
+\section*{PDF/A compatibility}
+PDF/A-2b compliance will be automatic if the \verb|\DocumentMetadata{..}| command is issued before the \verb|\documentclass{..}| command and \textit{provided that your graphics are also compliant}. This command was added to \LaTeX\ in June 2022. For older versions of \LaTeX, the \texttt{mitthesis} class will fall back to loading \texttt{hyperxmp} to support pdf metadata, but PDF/A compliance will require post-processing (for example, by using the PreFlight function of Adobe Acrobat). An up-to-date \LaTeX\ installation is preferred.
+
+Current \LaTeX\ development (ca.~2023) is working toward fully accessible PDF/A out of the box (e.g., PDF/A-2a). Unicode compliance (e.g., PDF/A-2u) depends greatly on your fonts and figures.
+
+
+\section*{Packages loaded by the class and by the user}
+See Table~\ref{tab:3}. The documentation for these packages is available at CTAN, \url{https://ctan.org}. Alternatively, if you have \hrefurl{https://www.tug.org/texlive/}{\TeX\ Live} installed, you can open a terminal window and type \texttt{\%\ texdoc package-name}.
+
+\begin{table}[t]
+\caption{Packages called. For documentation, visit CTAN, \url{https://ctan.org}.\label{tab:3}}
+\vskip5pt
+\centering{\small%
+\setlength\extrarowheight{3pt}
+\begin{tabular}{>{\ttfamily}l<{}p{18em} p{18em} }
+\toprule
+Package & Class & User \\
+\midrule
+bookmarks& is loaded automatically under the new pdf-management system & --- \\
+doi & support for hyperlinking DOIs & hyperlink a doi number: \verb|\doi{..}| \\
+etoolbox & extend or modify other macros & can use in preamble if needed \\
+iftex & check which \LaTeX\ engine is running& macros to check engine \\
+ifthen & streamlined conditionals & can use in preamble if needed \\
+geometry & set page size and margins & ---\\
+graphicsx& support for inserting images & use to include graphics\\
+hyperref & support for hyperlinks and metadata & must complete setup in preamble\\
+hyperxmp & fallback if no \verb|\DocumentMetadata{..}|& ---\\
+kvoptions& key values for systems pre 2022/11/01 & ---\\
+mathtools& loads and extends \texttt{amsmath} & \textbf{many useful math macros available}. See documentation for \texttt{amsmath} and \texttt{mathtools} \\
+xparse & for systems older than 2020/10/01 & macros to define new commands\\[0.7em]
+\midrule
+lineno & option for the class & keyvalue \texttt{lineno} will give line numbers; \texttt{lineno} package has additional commands that control line numbering\\[3em]
+\midrule
+caption & loaded by \texttt{mydesign.tex} & support for caption styling \\
+subcaption & loaded by \texttt{mydesign.tex} & support for subfigures within figures \\
+titlesec & loaded by \texttt{mydesign.tex} & support for styling section headings \\
+xcolor & loaded by \texttt{mydesign.tex} & support for colors, including colored fonts \\[0.7em]
+\midrule
+babel & --- & if you use multiple languages, load \texttt{babel} in a fontset file before loading fonts \\
+biblatex & --- & sample template uses this bibliography tool. Change to \texttt{natbib} if you prefer\\
+fontenc & --- & load this in a fontset file if you use \pdfTeX\\
+fontspec & --- & load this in a fontset file if you are using a unicode engine (note that \texttt{unicode-math} loads \texttt{fontspec} by default)\\
+lipsum & --- & create filler text (see sample template, Chapter~1) \\
+listings & --- & to list computer code (see sample template, Appendix~A) \\
+mhchem & --- & to format chemical formul\ae\ (see sample template, Chapter~1) \\
+setspace & --- & can change the default line spacing with the commands of this package\\
+unicode-math & --- & load in a fontset file if you are using a unicode engine\\
+\bottomrule
+\end{tabular}}%
+\end{table}
+
+\section*{Packages for math, chemistry, code listings, and more}
+The \texttt{mitthesis} class loads the \texttt{amsmath} package and its extension \texttt{mathttools}. These packages provide many useful macros for typesetting equations and symbols, such as: environments for aligning and splitting equations or groups of equations; tools for matrices; a wide variety of operators and symbols; tools to define new math operators and paired delimiters; and much, much more. If you are including equations, look at the documentation for these packages: \url{https://ctan.org/pkg/amsmath} and \url{https://ctan.org/pkg/mathtools}.\looseness=1
+
+Specialized packages for many disciplines can be found in \hrefurl{https://ctan.org}{CTAN}. These include subjects like \hrefurl{https://ctan.org/topic/chemistry}{chemistry}, \hrefurl{https://ctan.org/topic/linguistic}{linguistics}, and \hrefurl{https://ctan.org/topic/physics}{physics}. As examples of such packages, the sample thesis template uses the package \texttt{\hrefurl{https://ctan.org/pkg/mhchem}{mhchem}} to set chemical equations and the package \texttt{\hrefurl{https://ctan.org/pkg/listings}{listings}} to list computer code.
+
+When selecting a package to use, check that it is currently maintained (with relatively recent updates), and compare it to other packages that perform similar functions. Some packages are better than others, and some obsolete packages remain online.
+
+\section*{Nomenclature}
+An optional nomenclature environment is provided by the class. This environment can support either chapter-by-chapter nomenclature (at the section level) or a single nomenclature for the entire thesis (at the chapter level). The environment has three optional arguments: [1] adjust space between symbol and definition; [2] name (heading) of the nomenclature list; and [3] level, which can be ``section'' or ``chapter'' depending on whether you
+have one nomenclature list for whole thesis or one for each chapter.
+
+For example, the following code
+\begin{center}
+\begin{minipage}{0.8\textwidth}
+\begin{verbatim}
+\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
+\EntryHeading{Roman letters}
+\entry{$A$}{the letter A}
+\entry{$\mathbf{r}$}{material position}
+\entry{$\mathbf{u}$}{velocity}
+\EntryHeading{Greek letters}
+\entry{$\Gamma$}{circulation}
+\entry{$\rho$}{mass density}
+\end{nomenclature}
+\end{verbatim}
+\end{minipage}
+\end{center}
+produces the nomenclature list below
+\begin{center}
+\begin{minipage}{0.8\textwidth}
+\begin{nomenclature}[2em][Nomenclature for Chapter 1][section]
+\EntryHeading{Roman letters}
+\entry{$A$}{the letter A}
+\entry{$\mathbf{r}$}{material position}
+\entry{$\mathbf{u}$}{velocity}
+\EntryHeading{Greek letters}
+\entry{$\Gamma$}{circulation}
+\entry{$\rho$}{mass density}
+\end{nomenclature}
+\end{minipage}
+\end{center}
+\section*{Resources for \LaTeX}
+\LaTeX\ documentation is easy to find online. A few useful resources, among many, are these:
+\begin{description}
+\item[\LaTeX\ Wikibook.] \url{https://en.wikibooks.org/wiki/LaTeX}. An online tutorial book.
+\item[\LaTeX 2e: An unofficial reference manual.] \url{https://latexref.xyz/dev/latex2e.html}. A comprehensive explanation of each \LaTeX\ command, from the \TeX\ User's Group.
+\item[\TeX\ Stack-Exchange.]\ \url{https://tex.stackexchange.com/}. More than 250,000 answered questions, and you can ask your own!
+\end{description}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/mitthesis-sample.bib b/macros/latex/contrib/mitthesis/mitthesis-sample.bib
new file mode 100644
index 0000000000..87828e0351
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/mitthesis-sample.bib
@@ -0,0 +1,325 @@
+%% Sample bibliography file for mitthesis.cls
+%%
+%% Revised: 13 June 2023
+%% Copyright John H. Lienhard, MIT
+%% Offered under the MIT license: https://ctan.org/license/mit
+
+%% REFER TO biblatex documentation for details about possible fields
+%% bibtex support depends on the bibtex style (.bst) and is usually more limited
+
+@article{DKE1969,
+ author = {Donald K. Edwards},
+ year = {1969},
+ title = {Radiative Transfer Characteristics of Materials},
+ journal = {{ASME} J. Heat Transfer},
+ volume = 91,
+ number = 1,
+ pages = {1--15},
+ doi = {10.1115/1.3580108},
+ month = feb,
+}
+%% @article requires these fields: author, title, journaltitle, year/date
+%%
+%% Optional fields in biblatex: translator, annotator, commentator, subtitle,
+%% titleaddon, editor, editora, editorb, editorc, journalsubtitle,
+%% journaltitleaddon, issuetitle, issuesubtitle,
+%% issuetitleaddon, language, origlanguage, series, volume,
+%% number, eid, issue, month, pages, version, note, issn, addendum,
+%% pubstate, doi, eprint, eprintclass, eprinttype, url, urldate
+
+@book{ww1920,
+ author = {Edwin Taylor Whittaker and George Neville Watson},
+ year = {1920},
+ title = {A Course of Modern Analysis},
+ edition = {3},
+ publisher = {Cambridge University Press},
+ address = {Cambridge, UK},
+ url = {https://archive.org/details/courseofmodernan00whit},
+}
+%% @book requires these fields: author, title, year/date
+%%
+%% Optional fields: editor, editora, editorb, editorc, translator,
+%% annotator, commentator, introduction, foreword, afterword,
+%% subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon,
+%% language, origlanguage, volume, part, edition, volumes, series,
+%% number, note, publisher, location, isbn, eid, chapter, pages,
+%% pagetotal, addendum, pubstate, doi, eprint, eprintclass,
+%% eprinttype, url, urldate
+
+@inproceedings{Swaminathan2017IDABRO,
+ author = {Swaminathan, Jaichander and Stover, Richard L. and Tow, Emily W. and Warsinger, David M. and Lienhard, John H.},
+ booktitle = {Proceedings of IDA World Congress on Desalination and Water Reuse},
+ title = {Effect of Practical Losses on Optimal Design of Batch {RO} Systems},
+ year = {2017},
+ month = oct,
+ publisher = {International Desalination Association},
+ venue = {S{\~a}o Paulo, Brazil},
+ eventdate = {2017-10-15/2017-10-20},
+ eprinttype= {hdl},
+ eprint = {1721.1/111971},
+ number = {IDA17WC-58334},
+}
+%% @inproceedings requires these fields: author, title, booktitle, year/date
+%%
+%% Optional fields: editor, subtitle, titleaddon, maintitle,
+%% mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon,
+%% eventtitle, eventtitleaddon, eventdate, venue, language,
+%% volume, part, volumes, series, number, note, organization,
+%% publisher, location, month, isbn, eid, chapter, pages, addendum,
+%% pubstate, doi, eprint, eprintclass, eprinttype, url, urldate
+
+@report{reynolds1958,
+ author = {William C. Reynolds and William M. Kays and Stephen J. Kline},
+ title = {Heat transfer in the Incompressible Turbulent Boundary Layer. {I}---Constant Wall Temperature},
+ type = {NASA Technical Memorandum No.},
+ number = {12-1-58W},
+ institution = {National Aeronautics and Space Administration},
+ address = {Washington, DC},
+ year = {1958},
+ eprinttype= {hdl},
+ eprint = {2060/19980228020},
+ month = dec,
+}
+%% Equivalent links for this case: url = {https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19980228020.pdf},
+%% url = {https://hdl.handle.net/2060/19980228020},
+%%
+%% @report requires these fields: author, title, type, institution, year/date
+%%
+%% Optional fields: subtitle, titleaddon, language, number, version,
+%% note, location, month, isrn, eid, chapter, pages, pagetotal,
+%% addendum, pubstate, doi, eprint, eprintclass, eprinttype, url,urldate
+
+@incollection{clauser56,
+ author = {Francis H. Clauser},
+ year = {1956},
+ title = {The Turbulent Boundary Layer},
+ booktitle = {Advances in Applied Mechanics},
+ editor = {H. L. Dryden and Th. von K\'arm\'an},
+ volume = {4},
+ publisher = {Elsevier},
+ address = {Amsterdam, The Netherlands},
+ pages = {1--51},
+ doi = {10.1016/S0065-2156(08)70370-3},
+}
+%% This case is an article in series of edited books where the series title is the same for all volumes.
+%%
+%% incollection requires these fields: author, title, editor, booktitle, year/date
+%%
+%% Optional fields: editor, editora, editorb, editorc, translator,
+%% annotator, commentator, introduction, foreword, afterword,
+%% subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon,
+%% booksubtitle, booktitleaddon, language, origlanguage, volume,
+%% part, edition, volumes, series, number, note, publisher,
+%% location, isbn, eid, chapter, pages, addendum, pubstate, doi,
+%% eprint, eprintclass, eprinttype, url, urldate
+
+@thesis{gibbs1863,
+ author = {Joisah Willard Gibbs},
+ year = {1863},
+ title = {On the Form of the Teeth of Wheels in Spur Gearing},
+ type = {Ph.{D}. dissertation},
+ school = {Yale University},
+ address = {New Haven, CT},
+}
+%% phdthesis requires these fields: author, title, type, institution, year/date
+%%
+%% Optional fields: subtitle, titleaddon, language, note, location,
+%% month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate,
+%% doi, eprint, eprintclass, eprinttype, url, urldate
+%%
+%% Use the type field to specify the type of thesis. type = {},
+
+@proceedings{johnson1965,
+ editor = {Howard W. Johnson},
+ title = {The Title of the Proceedings},
+ year = 1965,
+ volume = 2,
+ organization = {Organization},
+ venue = {City, State},
+ eventdate = {1965-04-27/1965-04-28},
+ url = {https://news.mit.edu/2009/obit-johnson},
+}
+%% @proceedings requires these fields: title, year/date
+%%
+%% Optional fields: editor, subtitle, titleaddon, maintitle,
+%% mainsubtitle, maintitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series,
+%% number, note, organization, publisher, location, month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint,
+%% eprintclass, eprinttype, url, urldate
+
+@manual{GSL,
+ title = {{GNU} Scientific Library},
+ author = {Mark Galassi
+ and Jim Davies
+ and James Theiler
+ and Brian Gough
+ and Gerard Jungman
+ and Patrick Alken
+ and Michael Booth
+ and Fabrice Rossi
+ and Rhys Ulerich},
+ version = {2.4},
+ organization = {Free Software Foundation},
+ address = {Boston, MA},
+ year = 2017,
+ url = {https://www.gnu.org/software/gsl/},
+ urldate = {2018-12-12},
+}
+%% @manual requires these fields: author/editor, title, year/date
+%%
+%% Optional fields: subtitle, titleaddon, language, edition, type,
+%% series, number, version, note, organization, publisher,
+%% location, isbn, eid, chapter, pages, pagetotal, addendum,
+%% pubstate, doi, eprint, eprintclass, eprinttype, url, urldate
+
+@online{sharpe1,
+ author = {Michael Sharpe},
+ year = {2022},
+ month = mar,
+ title = {New {TX} Font Package},
+ version = {1.71},
+ organization = {Comprehensive \TeX\ Archive Network},
+ url = {https://ctan.org/pkg/newtx},
+ urldate = {2023-05-29},
+}
+%% @online requires these fields: author/editor, title, year/date, doi/eprint/url
+%%
+%% Optional fields: subtitle, titleaddon, language, version, note,
+%% organization, month, addendum, pubstate, eprintclass, eprinttype, urldate
+
+@misc{Fong2015,
+ title = {Analytical Methods for Squaring the Disc},
+ year = {2015},
+ author = {Chamberlain Fong},
+ howpublished = {{\itshape ArXiv e-prints}},
+ eprint = {1509.06344},
+ eprinttype= {arxiv},
+ month = sep,
+}
+%% @misc requires these fields: author/editor, title, year/date
+%%
+%% Optional fields: subtitle, titleaddon, language, howpublished, type, version, note,
+%% organization, location, month, addendum, pubstate, doi, eprint, eprintclass,
+%% eprinttype, url, urldate
+
+@BOOK{kirk2288a,
+ author = {James Tiberius Kirk},
+ year = {2288},
+ title = {Decline and Fall of the Romulan Empire},
+ edition = 7,
+ series = {Humankind's Greatest Writings},
+ number = {23},
+ publisher = {Vulcan Free Press},
+ address = {T'Paal},
+ addendum = {To appear.},
+}
+%% One book in a series of books
+%% Under bibtex, replace addendum by note
+
+@bookinbook{churchill1948,
+ author = {Winston S. Churchill},
+ year = {1948},
+ title = {The Gathering Storm},
+ series = {The Second World War},
+ volume = {1},
+ chapter = {5, {``The Locust Years''}},
+ pages = {66--89},
+ url = {https://www.worldcat.org/oclc/3025315},
+ publisher = {Houghton Mifflin Co.},
+ address = {Boston},
+}
+%% one book in a multivolume book written by a single author
+%% with bibtex, revert to "inbook"
+
+@BOOK{johnson1980,
+ editor = {Howard Johnson},
+ year = {1980},
+ title = {Title of Edited Book},
+ publisher = {John Wiley and Sons, Inc.},
+ address = {New York, NY},
+}
+%% edited book
+
+@book{fourier1822,
+ author = {Jean Baptiste Joseph Fourier},
+ year = {1822},
+ title = {Th\'{e}orie Analytique de la Chaleur},
+ publisher = {Firmin Didot, P\`{e}re et Fils},
+ address = {Paris},
+ url = {https://archive.org/details/analyticaltheory00fourrich},
+}
+%% old book, not much difference
+
+@online{dlmf,
+ title = {{NIST} {D}igital Library of Mathematical Functions},
+ version = {1.1.19},
+ year = {2023},
+ month = mar,
+ editor = {F. W. J. Olver and A. B. {Olde Daalhuis} and D. W. Lozier and B. I. Schneider and
+ R. F. Boisvert and C. W. Clark and B. R. Miller and B. V. Saunders},
+ organization = {National Institute of Standards and Technology},
+ address = {Gaithersburg, MD},
+ url = {https://dlmf.nist.gov/},
+ urldate = {2023-05-29},
+}
+
+@article{lienhard2020,
+ author = {Lienhard, John H.},
+ title = {Heat Transfer in Flat-Plate Boundary Layers: A Correlation for Laminar, Transitional, and Turbulent Flow},
+ journal = {{ASME} J. Heat Transfer},
+ volume = {142},
+ number = {6},
+ eid = {061805},
+ year = {2020},
+ month = jun,
+ doi = {10.1115/1.4046795 },
+}
+%% note use of: eid in place of pages
+%% url = {https://doi.org/10.1115/1.4055833},
+
+@manual{amsmath,
+ author = {{American Mathematical Society} and {The \LaTeX\ Project}},
+ year = {2020},
+ month = feb,
+ title = {User's Guide for the \textsf{amsmath} Package },
+ version = {2.1},
+ organization = {Comprehensive \TeX\ Archive Network},
+ url = {https://ctan.org/tex-archive/macros/latex/required/amsmath/amsldoc.pdf},
+ urldate = {2023-05-29},
+}
+
+@article{euler1740,
+ author = {Leonard Euler},
+ year = 1740,
+ title = {De Summis Serierum Reciprocarum},
+ journal = {Commentarii Acad\-emiae Scientiarum Petropolitanae},
+ volume = 7,
+ pages = {123--134},
+ eprinttype= {arxiv},
+ eprint = {math/0506415},
+ addendum = {First communicated to Daniel Bernoulli in 1734 and read before the St.\ Petersburg Academy in December 1735},
+}
+% with bibtex, change addendum to note.
+
+@article{montijano2014,
+ title = {Numerical Methods With LuaLaTeX},
+ author = {Juan I. Montijano and Mario P{\'{e}}rez and Luis R{\'{a}}ndez and Juan Luis Varona},
+ year = 2014,
+ volume = 35,
+ month = jan,
+ number = {1},
+ pages = {51--56},
+ journal = {TUGboat},
+ url = {https://tug.org/TUGboat/tb35-1/tb109montijano.pdf},
+}
+
+@online{mpl,
+ title = {mpl Colormaps},
+ author = {St{\'e}fan {van der Walt} and Nathaniel Smith},
+ url = {https://bids.github.io/colormap/},
+ urldate = {2018-08-26},
+ year = 2015,
+ organization = {GitHub},
+ address = {San Francisco, CA},
+ month = sep,
+}
+ \ No newline at end of file
diff --git a/macros/latex/contrib/mitthesis/mitthesis.cls b/macros/latex/contrib/mitthesis/mitthesis.cls
new file mode 100644
index 0000000000..250369020b
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/mitthesis.cls
@@ -0,0 +1,631 @@
+% MIT thesis class
+
+% !TEX encoding = UTF-8 Unicode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This file provides the mitthesis LaTeX class for formatting theses according to
+%% MIT Libraries' requirements as of 2023.
+%%
+%% This file's version and date:
+ \def\versionno{1.00}
+ \def\versiondate{2023/06/17\space}
+%%
+%% Author: John H. Lienhard, V
+%% Department of Mechanical Engineering
+%% Massachusetts Institute of Technology
+%% Cambridge, MA 02139-4307 USA
+%%
+%% This class is compatible with either pdfLaTeX or LuaTeX.
+%%
+%% Use an up-to-date LaTeX distribution: TeX Live 2023 or later is strongly recommended!
+%% All packages required by the class are in TeX Live and available on CTAN (https://ctan.org/).
+%%
+%%
+% =========================================================
+%%
+%% LICENSE:
+%%
+%% Copyright (c) 2023 John H. Lienhard
+%%
+%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+%% associated documentation files (the "Software"), to deal in the Software without restriction,
+%% including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+%% and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+%% subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all copies or
+%% substantial portions of the Software.
+%%
+%% The software is provided "as is", without warranty of any kind, express or implied, including but
+%% not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement.
+%% In no event shall the authors or copyright holders be liable for any claim, damages or other liability,
+%% whether in an action of contract, tort or otherwise, arising from, out of or in connection with the
+%% software or the use or other dealings in the software.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{mitthesis}[\versiondate MIT Thesis Template (JHL)]
+
+\LoadClass[12pt]{report}% [twoside] option can be issued in the .tex file; point size must be set here.
+
+\RequirePackage{etoolbox}% provides \ifblank, \patchcmd, \apptocmd, etc.
+\RequirePackage{ifthen} % provides \whiledo, etc.
+
+\def\ClassName{mitthesis}
+
+%%%%%%%%%%%%% Some compatibility for older latex distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date
+\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date
+
+\ifdefined\NewDocumentCommand\else
+ \RequirePackage{xparse}% enable pre-10/2020 formats to access essential macros later moved into LaTeX kernel
+\fi
+
+\IfFormatAtLeastTF{2020/02/25}{%
+ \typeout{^^JYour LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results^^J}
+ }{%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2022/11/01 or later are recommended for this class. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now...}%
+}
+
+\IfFileExists{iftex.sty}{%
+ \RequirePackage{iftex}% check whether pdftex or another engine is used
+ }{%
+ \ClassWarning{\ClassName}{This class requires the missing package iftex.sty---trying a work-around.}
+ % Code copied from iftex package written by the LaTeX3 Project (used under LPPL).
+ % \csname and \let construct useful for hiding \ifzzz tokens from outer level \if tests.
+ \def\IFTEX@let#1#2{%
+ \expandafter\let\csname if#1\expandafter\endcsname
+ \csname if#2\endcsname}
+ % pdftex (including in dvi mode)
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname pdftexversion\endcsname\relax
+ \IFTEX@let{pdftex}{false}
+ \else
+ \IFTEX@let{pdftex}{true}
+ \fi
+ \IFTEX@let{PDFTeX}{pdftex}
+ }
+
+% check whether pdfmanagement (\DocumentMetadata) has been loaded (to fallback on hyperxmp)
+\newif\ifmit@pdfmanagement
+% As of 2021/07/23 we could instead do:\IfPDFManagementActiveTF{\mit@pdfmanagementtrue}{\mit@pdfmanagementfalse}
+\ExplSyntaxOn
+ \IfFormatAtLeastTF{2020/02/25}{%
+ \bool_if:nTF
+ {
+ \bool_lazy_and_p:nn
+ {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
+ }
+ {
+ \mit@pdfmanagementtrue
+ }
+ {
+ \mit@pdfmanagementfalse
+ }
+ }{\mit@pdfmanagementfalse}
+\ExplSyntaxOff
+
+%% Old installations may want textcomp load, but we only require this character:
+\ifdefined\textcopyright\else\def\textcopyright{©}\fi
+
+%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\IfFormatAtLeastTF{2022/11/01}{%
+% \typeout{^^JUsing native keyvalue support^^J}% diagnostic info
+ \DeclareKeys{
+ fontset .store = \mit@fontset ,
+ fontset .usage = load ,
+ lineno .if = mit@lineno ,
+ lineno .usage = load ,
+ mydesign .if = mit@mydesign,
+ mydesign .usage = load ,
+ }
+ \SetKeys[\ClassName]{fontset=defaultfonts}%
+ \DeclareUnknownKeyHandler[\ClassName]{\relax}% suppress warning about unused keys
+ \ProcessKeyOptions
+}{%
+ \RequirePackage{kvoptions}
+ \SetupKeyvalOptions{
+ family=\ClassName,
+ prefix=mit@,
+ setkeys=\kvsetkeys,
+ }
+ % set key [fontset] for font selection
+ \DeclareStringOption[defaultfonts]{fontset}[]
+ %
+ \ProcessKeyvalOptions{\ClassName}
+ %
+ %% Turn off these keys now that we're done with them
+ \def\@KeyFamily{\ClassName}
+ \NewDocumentCommand\mit@DisableOption{m}{%
+ \DisableKeyvalOption[%
+ action=ignore,%
+ class=\ClassName%
+ ]{#1}{\@KeyFamily}%
+ }
+ \NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\mit@DisableOption}}
+ %
+ \@DisableKeys{fontset;}%
+
+
+ %%%%%%%% more options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ %%% option to obtain line numbers [lineno]
+ \newif\ifmit@lineno\mit@linenofalse
+ \DeclareOption{lineno}{\mit@linenotrue}
+
+ %%% option for to load packages that customize the design [mydesign] (caption, subcaption, titlesec, itemenum)
+ \newif\ifmit@mydesign\mit@mydesignfalse
+ \DeclareOption{mydesign}{\mit@mydesigntrue}
+
+ %% Suppress warnings about unused global options
+ \DeclareOption*{}
+
+ \ProcessOptions \relax
+}
+
+%%%%%%%%%%%%% Line numbering (class option) %%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Adjustments when lineno option is used
+\ifmit@lineno
+ \RequirePackage[mathlines]{lineno}
+ \renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}
+ \AtBeginDocument{\linenumbers}
+\fi
+
+%%% Enable dropping lineno option without trashing .aux file
+\providecommand{\@LN@col}[1]{\relax}
+\providecommand{\@LN}[2]{\relax}
+
+
+%%%%%%%%%%%%% Geometry, mathtools, design, graphics, bibliography, hyperrefs, bookmarks %%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in]{geometry}
+
+\RequirePackage{mathtools}% loads and extends amsmath; must load before hyperref and unicode-math
+%
+% To free \eqref from the normal font (i.e., for use section headings)
+\renewcommand{\eqref}[1]{\textup{\hbox{\m@th{(\ignorespaces\ref{#1}\unskip\@@italiccorr)}}}}
+%
+% amsmath def: \newcommand{\eqref}[1]{\textup{\tagform@{\ref{#1}}}}
+% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
+% \def\maketag@@@#1{\hbox{\m@th\normalfont#1}}
+
+% the packages in mydesign should come before babel (which may be loaded by fontset) and hyperref
+\ifmit@mydesign\input{mydesign.tex}\fi
+
+%% Font loading
+\typeout{^^JFontset key is \mit@fontset^^J}
+\input{fontsets/\mit@fontset.tex}
+
+\RequirePackage{graphicx}
+
+\ifmit@pdfmanagement
+ \ClassInfo{\ClassName}{pdfmanagement is defined. Will not load hyperxmp}%
+\else
+ \ClassInfo{\ClassName}{pdfmanagement is not defined. Will load hyperxmp}%
+ \RequirePackage{hyperxmp}
+\fi
+
+\RequirePackage[psdextra]{hyperref}
+% the new pdf-management scheme loads the bookmarks package internally.
+% authors should use hypersetup to set details, in root .tex file
+
+\urlstyle{same} % this changes font for \url to the current text font
+\providecommand\hrefurl[2]{\href{#1}{#2}}% in case new pdf management has not been loaded
+\RequirePackage{doi} % create macro for hyperlinking doi numbers
+
+% Directly add the xmp property that shows work is copyrighted. See l3pdfmeta.pdf.
+% This is not automatic with \DocumentMetadata. "True" must be capitalized.
+\ExplSyntaxOn
+ \cs_if_exist:NTF \pdfmeta_xmp_add:n {\pdfmeta_xmp_add:n{<xmpRights:Marked>True</xmpRights:Marked>}}{}
+\ExplSyntaxOff
+
+
+%%%%%%%%%%%%% Stuff related to PDF bookmarks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% Since \bm may be useful in headings, this fix will reduce frequency with which
+%%% alternate pdfstrings must be given in revised section command as \section[pdfstring]{texstring}
+\pdfstringdefDisableCommands{%
+ \def\bm#1#{\relax}%
+}
+%
+%%% Let's disable \( and \) in pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \def\({\relax}%
+ \def\){\relax}%
+}
+%
+%%% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \let\NoCaseChange\relax%
+}
+%
+%%% Let's just remove citations from pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \def\cite{\@gobble}%
+}
+%
+%%% Let's fix \eqref in pdf bookmarks
+\pdfstringdefDisableCommands{%
+ \def\eqref#1{(\ref{#1})}%
+%
+%%% Let's make sure footnotes in section headings don't break pdf bookmarks.
+\robustify{\footnote}
+% \patchcmd{\section}{\sectionmark}{\let\footnote\@gobble\sectionmark}{}{}% <== not needed unless you implement running heads
+\pdfstringdefDisableCommands{%
+ \def\footnote#1{}%
+}
+}
+
+\let\oldfootnote\footnote
+\renewcommand\footnote[1]{%
+ \oldfootnote{#1}\futurelet\nextToken\isOtherfnote}
+
+\newcommand\isOtherfnote{%
+ \ifx\footnote\nextToken\textsuperscript{\mdseries,}%
+ \fi%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% MACROS FOR HANDLING TITLE AND ABSTRACT PAGES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%% Dates %%%%%%%%%%%%%%%
+
+\ExplSyntaxOn
+\NewExpandableDocumentCommand\MonthCheck{mm}{%
+ \str_case_e:nnF {#1}{ {June}{} {September}{} {February}{}
+ {\space June}{} {\space September}{} {\space February}{}
+ {June\space}{} {September\space}{} { February\space}{}
+ {\space June\space}{} {\space September\space}{} {\space February\space}{}
+ }{#2}
+}
+\ExplSyntaxOff
+
+\NewDocumentCommand\DegreeDate{mm}{%
+ \def\@DegreeMonth{\ignorespaces#1}%
+ \def\@@DegreeMonth{#1}%
+ \def\@DegreeYear{\ignorespaces#2}%
+ \def\DegreeYear{\ignorespaces#2}%
+}
+
+\NewDocumentCommand\ThesisDate{m}{%
+ \def\@ThesisDate{\ignorespaces#1}%
+}
+
+%%%%%%%%%%%%%% Author, supervisor, acceptor, titles, and departments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcounter{authorcnt}
+\setcounter{authorcnt}{0}% this counter's final value is used repeatedly.
+
+\NewDocumentCommand\Author{m m oooo}{%
+ \ifblank{#1}{%
+ \ClassError{\ClassName}{Missing author name, check for blank in Author command}{%
+ You MUST provide an author name using the \Author{name}{department} command.}%
+ }{%
+ \addtocounter{authorcnt}{1}%
+ \expandafter\xdef\csname aut@\theauthorcnt\endcsname{\ignorespaces#1}%
+ \expandafter\xdef\csname autdep@\theauthorcnt\endcsname{\ignorespaces#2}%
+ \IfNoValueF{#3}{\expandafter\xdef\csname prevdegree@\theauthorcnt\endcsname{\ignorespaces#3}}%
+ \IfNoValueF{#4}{\expandafter\xdef\csname secondprevdegree@\theauthorcnt\endcsname{\ignorespaces#4}}%
+ \IfNoValueF{#5}{\expandafter\xdef\csname thirdprevdegree@\theauthorcnt\endcsname{\ignorespaces#5}}%
+ \IfNoValueF{#6}{\expandafter\xdef\csname fourthprevdegree@\theauthorcnt\endcsname{\ignorespaces#6}}%
+ }%
+ \ifblank{#2}{\ClassWarning{\ClassName}{Missing author department, check for blank in Author command}}{}%
+}% defines \aut@authorcnt as Name #1 and \autdep@authorcnt as Name #1's department
+
+\newcounter{authorno}
+\setcounter{authorno}{0}
+
+\NewDocumentCommand\@AuthorBlock{}{%
+ \setcounter{authorno}{1}%
+ \ifnum\value{authorcnt}=0
+ \ClassError{\ClassName}{Missing author! You must issue the \Author{name}{department} command}{%
+ You MUST issue the \Author{name}{department} command after \begin{document} and before \maketitle.}%
+ \fi
+ {by\par
+ \whiledo{\value{authorno}<\value{authorcnt}}{%
+ \ignorespaces\csname aut@\theauthorno\endcsname\par
+ \ifcsundef{prevdegree@\theauthorno}{\relax}{\normalsize\csname prevdegree@\theauthorno\endcsname}%
+ \ifcsundef{secondprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname secondprevdegree@\theauthorno\endcsname}%
+ \ifcsundef{thirdprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname thirdprevdegree@\theauthorno\endcsname}%
+ \ifcsundef{fourthprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname fourthprevdegree@\theauthorno\endcsname}%
+ \par and\par
+ \addtocounter{authorno}{1}%
+ }%
+ \ignorespaces\csname aut@\theauthorno\endcsname
+ \ifcsundef{prevdegree@\theauthorno}{\relax}{\par\normalsize\csname prevdegree@\theauthorno\endcsname}%
+ \ifcsundef{secondprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname secondprevdegree@\theauthorno\endcsname}%
+ \ifcsundef{thirdprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname thirdprevdegree@\theauthorno\endcsname}%
+ \ifcsundef{fourthprevdegree@\theauthorno}{\relax}{\\ \normalsize\csname fourthprevdegree@\theauthorno\endcsname}%
+ \\[1em]%
+ }%
+}
+
+\newcounter{autcrcnt}
+\setcounter{autcrcnt}{1}
+
+\NewDocumentCommand\@CopyrightAuthor{}{%
+ \csname aut@\theautcrcnt\endcsname
+ \addtocounter{autcrcnt}{1}%
+ \whiledo{\value{autcrcnt}<\value{authorcnt}}{%
+ , \ignorespaces\csname aut@\theautcrcnt\endcsname
+ \addtocounter{autcrcnt}{1}%
+ }%
+ \ifnum\value{autcrcnt}=\value{authorcnt}%
+ \space and\space\csname aut@\theauthorcnt\endcsname\ignorespaces
+ \fi
+ \setcounter{autcrcnt}{1}% reset so we can use this command more than once
+}
+
+\newcounter{degcnt}
+\setcounter{degcnt}{0}
+
+\NewDocumentCommand\Degree{mm}{%
+ \ifblank{#1}{%
+ \ClassError{\ClassName}{Missing degree name, check for blank \Degree{name}{department} command}{%
+ Check for blank name \Degree{name}{department} command.}%
+ }{%
+ \addtocounter{degcnt}{1}%
+ \expandafter\xdef\csname deg@\thedegcnt\endcsname{\ignorespaces#1}%
+ \expandafter\xdef\csname degdep@\thedegcnt\endcsname{\ignorespaces#2}%
+ }%
+ \ifblank{#2}{\ClassError{\ClassName}{Missing degree department, check for blank in \Degree{name}{department} command}{%
+ Check for blank department \Degree{name}{department} command.}}{}%
+}% defines \deg@degcnt as Name #1 and \degdep@degcnt as associated dept.
+
+\newcounter{degno}
+\newcounter{depno}
+
+\NewDocumentCommand\@DegreeBlock{}{%
+ \ifnum\value{degcnt}=0
+ \ClassError{\ClassName}{Missing degree! You must issue the \Degree{name}{department} command}{%
+ You MUST issue the \Degree{name}{department} command after \begin{document} and before \maketitle. You do want the degree, don't you?}%
+ \fi
+ \setcounter{degno}{1}
+ \setcounter{depno}{1}
+ Submitted to the%
+ \whiledo{\value{depno}<\value{degcnt}}{%
+ \space\csname degdep@\thedegno\endcsname{} and the%
+ \addtocounter{depno}{1}%
+ }%
+ \space\csname degdep@\thedepno\endcsname\space
+ in partial fulfillment of the requirements for the\space
+ \ifnum\value{degcnt}>1 degrees\else degree\fi\space of%
+ \par
+ \whiledo{\value{degno}<\value{degcnt}}{%
+ \MakeUppercase{\ignorespaces\csname deg@\thedegno\endcsname}\par and\par
+ \addtocounter{degno}{1}%
+ }%
+ \MakeUppercase{\ignorespaces\csname deg@\thedegno\endcsname}\par
+}
+
+\newcounter{supcnt}
+\setcounter{supcnt}{0}
+\newcounter{supno}
+\setcounter{supno}{0}
+
+\NewDocumentCommand\Supervisor{mm}{%
+ \ifblank{#1}{%
+ \ClassError{\ClassName}{Missing supervisor name, check for blank in \Supervisor{name}{department} command}{
+ Check for blank in \Supervisor{name}{department} command.}%
+ }{%
+ \addtocounter{supcnt}{1}%
+ \expandafter\xdef\csname sup@\thesupcnt\endcsname{#1}%
+ \expandafter\xdef\csname supdep@\thesupcnt\endcsname{#2}%
+ }%
+ \ifblank{#2}{\ClassError{\ClassName}{Missing supervisor department, check for blank in \Supervisor{name}{department} command}{%
+ check for blank in \Supervisor{name}{department} command.}}{}%
+}% defines \sup@supcnt as Name #1 and \supdep@supcnt as associated dept.
+
+\newcounter{acccnt}
+\setcounter{acccnt}{0}
+\newcounter{accno}
+\setcounter{accno}{0}
+\NewDocumentCommand\Acceptor{mmm}{%
+ \ifblank{#1}{%
+ \ClassWarning{\ClassName}{Missing acceptor name, check for blank \Acceptor{name}{department} command}%
+ }{%
+ \addtocounter{acccnt}{1}%
+ \expandafter\xdef\csname acc@\theacccnt\endcsname{#1}%
+ \expandafter\xdef\csname accdep@\theacccnt\endcsname{#2}%
+ \expandafter\xdef\csname acctitle@\theacccnt\endcsname{#3}%
+ }%
+ \ifblank{#2}{\ClassWarning{\ClassName}{Missing acceptor department, check for blank in \Acceptor{name}{department}{title} command.}}{}%
+ \ifblank{#3}{\ClassWarning{\ClassName}{Missing acceptor title, check for blank in \Acceptor{name}{department}{title} command.}}{}%
+}% defines \acc@acccnt as Name #1, \accdep@accccnt as associated dept, and \acctitle@acccnt as title of acceptor
+
+\def\@SigSize{\relax}
+\NewDocumentCommand\SignatureBlockSize{m}{\let\@SigSize\ignorespaces#1}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NewDocumentCommand\@SetSignatureBlock{}{%
+ \ifnum\value{supcnt}=0
+ \ClassError{\ClassName}{Missing supervisor! You must issue the \Supervisor{name}{department} command}{%
+ You MUST issue the \Supervisor{name}{department} command after \begin{document} and before \maketitle.}%
+ \fi
+ \ifnum\value{acccnt}=0
+ \ClassError{\ClassName}{Missing acceptor! You must issue the \Acceptor{name}{department} command}{%
+ You MUST issue the \Acceptor{name}{department} command after \begin{document} and before \maketitle.}%
+ \fi
+ \ifdefined\@ThesisDate\else\ClassError{\ClassName}{Missing thesis date!}{%
+ You must issue the \ThesisDate{Date thesis is submitted} command between \begin{document} and \maketitle.}%
+ \fi
+ \setcounter{authorno}{0}%
+ \setcounter{supno}{0}%
+ \setcounter{accno}{0}%
+ \@SigSize
+ \begin{tabbing}
+ \hspace{1.35in}\=\hspace{1in}\kill
+ \whiledo{\value{authorno}<\value{authorcnt}}{% starting with authorno = 0 ensures we reach authorcnt with +1
+ \addtocounter{authorno}{1}%
+ Authored by: \> \csname aut@\theauthorno\endcsname\ignorespaces \\
+ \> \csname autdep@\theauthorno\endcsname\ignorespaces \\
+ \> \@ThesisDate \\[1em]
+ }% end whiledo
+ \whiledo{\value{supno}<\value{supcnt}}{%
+ \addtocounter{supno}{1}%
+ Certified by: \> \csname sup@\thesupno\endcsname\ignorespaces \\
+ \> \csname supdep@\thesupno\endcsname\ignorespaces, Thesis Supervisor\\[1em]
+ }% end whiledo
+ \whiledo{\value{accno}<\value{acccnt}}{%
+ \addtocounter{accno}{1}%
+ Accepted by: \> \csname acc@\theaccno\endcsname\ignorespaces \\
+ \> \csname accdep@\theaccno\endcsname\ignorespaces \\
+ \> \csname acctitle@\theaccno\endcsname\ignorespaces \\[1em]
+ }% end whiledo
+ \end{tabbing}
+}
+\NewDocumentCommand\@SetAbstractSupervisorBlock{}{%
+ \setcounter{supno}{1}
+% \\[1em]% dislikes a trailing blank line in abstract
+ \par\bigskip\noindent
+ \whiledo{\value{supno}<\value{supcnt}}{%
+ Thesis supervisor: \csname sup@\thesupno\endcsname\ignorespaces\\
+ Title: \csname supdep@\thesupno\endcsname\ignorespaces\\[1em]
+ \addtocounter{supno}{1}%
+ }% end whiledo
+ Thesis supervisor: \csname sup@\thesupno\endcsname\ignorespaces\\
+ Title: \csname supdep@\thesupno\endcsname\ignorespaces
+}
+
+%%%%%%%%%%%%%%%%%%% Copyright related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\CCurl{}% empty by default
+\newif\ifmit@cclicense\mit@cclicensefalse
+\NewDocumentCommand\CClicense{m m}{%
+ \def\CClicensetext{\hrefurl{#2}{\ignorespaces#1}}% #1 - text, #2 - url
+ \def\CCname{#1}
+ \def\CCurl{#2}% for use in metadata
+ \mit@cclicensetrue
+}
+
+
+%%%%%%%%%%%%%%%%%%% Create titlepage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\MIT{MASSACHUSETTS INSTITUTE OF TECHNOLOGY}
+
+\RenewDocumentCommand\maketitle{}{%
+%
+ \ifdefined\@DegreeMonth\else\ClassError{\ClassName}{Missing degree date!}{%
+ You must issue the \DegreeDate{month}{year} command between \begin{document} and \maketitle}%
+ \fi
+%
+ \ifmit@cclicense
+ \def\CopyrightLicense{This work is licensed under a \CClicensetext\ license.\par\MITpermission}
+ \typeout{^^JUsing Creative Commons License \CCname^^J}
+ \def\PDFRightsText{This work is licensed under a \CCname\ license. \MITpermission}% for use in metadata
+ \else
+ \def\CopyrightLicense{All rights reserved.\par\MITpermission}
+ \def\PDFRightsText{All rights reserved. \MITpermission}% for use in metadata
+ \fi
+ \ifnum\value{authorcnt}>1
+ \def\CRWords{The authors hereby grant}\else\def\CRWords{The author hereby grants}
+ \fi
+ \def\MITpermissionLast{to MIT a nonexclusive, worldwide, irrevocable, royalty-free license to exercise any and all rights under copyright, including to reproduce, preserve, distribute and publicly display copies of the thesis, or release the thesis under an open-access license.}%
+ \def\MITpermission{\CRWords\space\MITpermissionLast}%
+%
+ \clearpage
+ \thispagestyle{empty}%
+ \phantomsection\addcontentsline{toc}{chapter}{\protect\textbf{Title page}}%
+ {\centering\vbox to \vsize{% vbox to prevent signature block from breaking across page. Remove if necessary.
+ %\ifmit@lineno\internallinenumbers\fi % lineno does not work in tabbing environment, as in signature block
+ \setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt}\setlength{\parindent}{0pt}%
+ {\Large\textbf{\@title}\par}%
+ \@AuthorBlock
+ \par
+ \@DegreeBlock
+ at the\par
+ \MIT\par
+ \@DegreeMonth\space\@DegreeYear
+ \MonthCheck{\@@DegreeMonth}{%
+ \ClassError{\ClassName}{Acceptable months for the degree date are February, June, and September}{Change %
+ the month of your degree date to one of February, June, or September.}%
+ }%
+ \par
+ \copyright\space\@DegreeYear\space\@CopyrightAuthor. \CopyrightLicense
+ \par
+ \vskip 1.5\baselineskip
+ %
+ \@SetSignatureBlock
+ \vfill
+ }}%
+ \newpage
+}
+
+%%%%%%%%%%%%%%%%%%% Create abstract page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RenewDocumentEnvironment{abstract}{+b}{%
+ \newpage
+ \phantomsection\addcontentsline{toc}{chapter}{\protect\textbf{Abstract}}%
+ \begin{center}
+ {\large{\textbf{\@title}}\par}
+ \setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt}
+ \@AuthorBlock
+ \par
+ \@DegreeBlock
+ \end{center}
+ \vskip\baselineskip
+ \textbf{ABSTRACT}\par\vskip0.5em
+ \ignorespaces#1\ignorespaces
+ \ifblank{#1}{\typeout{Missing abstract!} MISSING ABSTRACT!}{\relax}
+}{%
+ \@SetAbstractSupervisorBlock
+ \newpage
+ \ignorespacesafterend
+}
+
+%%%%%%% A nomenclature environment, if needed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\providecommand{\nomname}{Nomenclature}
+\newlength\nomenwidth
+\newlength\savitemsep
+
+\makeatletter
+\NewDocumentCommand\entry{m m}{%
+ \ifblank{#2}{%
+ \ClassWarning{\ClassName}{The command \protect\entry requires two arguments. To obtain a subheading, use \protect\EntryHeading}
+ \itemsep3\p@ plus 1\p@ minus 1\p@%
+ \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+ }{%
+ \item[#1\hfill]#2%
+ \@itempenalty=-\@lowpenalty%
+ }%
+}
+% A separate command command for nomenclature subheadings
+\NewDocumentCommand\EntryHeading{m}{%
+ \itemsep3\p@ plus 1\p@ minus 1\p@%
+ \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+}
+\makeatother
+%
+% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
+% Second optional argument can be used to rename the environment, e.g., to List of Symbols.
+\NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{%
+ \setlength\columnsep{2em}
+ \setlength{\nomenwidth}{#1}
+ \csname #3\endcsname *{#2}% this level will vary amongst users!
+ \phantomsection\addcontentsline{toc}{#3}{#2}%
+ \raggedright
+ \begin{list}{}{%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{\itemsep}%
+ \setlength{\labelsep}{1em}%
+ \setlength{\labelwidth}{\nomenwidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \setlength\savitemsep\itemsep%
+ }%
+}{\end{list}\ignorespacesafterend}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+%%
+%% End of file `mitthesis.cls'.
diff --git a/macros/latex/contrib/mitthesis/mydesign.tex b/macros/latex/contrib/mitthesis/mydesign.tex
new file mode 100644
index 0000000000..535f2fbb0e
--- /dev/null
+++ b/macros/latex/contrib/mitthesis/mydesign.tex
@@ -0,0 +1,58 @@
+% From mitthesis package
+% Version: 1.00, 2023/06/17
+% Documentation: https://ctan.org/pkg/mitthesis
+
+
+%%%%%%%%%% Color support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Color package: xcolor.
+%% Change this if you prefer something else
+
+%% Options for xcolor
+\ifpdftex\def\MyColorOption{fixpdftex}\else\ifluatex\def\MyColorOption{luatex}\else\ifxetex\def\MyColorOption{xetex}\else\def\MyColorOption{}\fi\fi\fi
+
+\usepackage[hyperref,\MyColorOption,dvipsnames,svgnames,x11names]{xcolor}
+%% can add option [table] to xcolor to use color in tables (see xcolor documentation)
+
+
+%%%%%%%%% Caption support %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% see documentation for details of how to customize captions
+
+\RequirePackage{caption}
+\RequirePackage{subcaption}
+
+
+%%%%%%%%% Customize list environments %%%%%%%%%%%%%%%%%%%%
+%
+% see documentation for details of how to customize lists
+
+%\RequirePackage{enumitem}
+
+
+%%%%%%%%% Customize titles and section headings %%%%%%%%%%
+%
+% see documentation for details of how to customize headings
+
+\RequirePackage{titlesec}
+
+% these titlesec commands just automate the bold math in some headings (rest follows default styles)
+\titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection }{1em}{}
+\titleformat{\subsection}{\mathversion{bold}\normalfont\large\bfseries}{\thesubsection}{1em}{}
+\titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
+
+% ==> NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <==
+
+
+%%%%%%%%% Change page margins %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% The default thesis margin is 1 inch all around. You may want different margins (e.g., to add a gutter for binding),
+% in which case you can use the \newgeometry command from the geometry package. Refer to the package documentation
+% for details.
+%
+% mitthesis defaults: [top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in]
+%
+% The following tells the geometry package to use a two-sided layout with a 1 cm binding offset on the inside
+% and 1 inch margins all around, reducing textwidth slightly (by 0.7 cm). See geometry documentation, Section 8.2.
+%
+%\newgeometry{twoside, bindingoffset=1cm,margin=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in}