diff --git a/LuaUUThesis.cls b/LuaUUThesis.cls new file mode 100644 index 0000000..f077a9c --- /dev/null +++ b/LuaUUThesis.cls @@ -0,0 +1,431 @@ +\ProvidesClass{LuaUUThesis} +\NeedsTeXFormat{LaTeX2e} + +% The thesis template is based on the standard class book +\LoadClass{book} + + +% ============================================ +% Basic adjustments +% ============================================ + +% disabled for now /TA +% \renewcommand{\bibname}{\refname} + +% Prevent widows and orphans by setting a very large penalty +\widowpenalty=\@M +\clubpenalty=\@M + +% Set spacing around paragraphs and displays +\setlength{\parindent}{\baselineskip} +\providecommand{\mathindent}{\baselineskip plus 3pt minus 3pt} +\renewcommand{\mathindent}{\baselineskip} +\setlength{\parskip}{0pt} +\setlength{\belowdisplayskip}{10pt plus 3pt minus 3pt} +\setlength{\abovedisplayskip}{10pt plus 3pt minus 3pt} +\setlength{\belowdisplayshortskip}{10pt plus 3pt minus 3pt} +\setlength{\abovedisplayshortskip}{10pt plus 3pt minus 3pt} + +% No indentation of footnotes +\renewcommand\@makefntext[1]{% + \parindent 1em% + \noindent% + \hb@xt@0.4em{\hss\@makefnmark}#1% +} + +\renewcommand\footnoterule{{\leftskip 0pt\noindent\rule{26mm}{.5pt}\vspace{3pt}\par}} + +% Remove default spacing between items in lists +\renewcommand{\labelitemi}{\textbullet}% +\renewcommand{\labelitemii}{\textendash}% +\renewcommand{\labelitemiii}{\textasteriskcentered}% +\renewcommand{\labelenumi}{\arabic{enumi}.}% +\renewcommand{\labelenumii}{\alph{enumii})}% +\renewcommand{\labelenumiii}{\roman{enumiii}.}% +\setlength{\labelsep}{0.4em} +\settowidth{\leftmargini}{\@Roman 8.\hspace{\labelsep}} + +\renewcommand{\@listI}{% + \setlength\leftmargin\leftmargini% + \setlength\parsep{0\p@}% + \setlength\topsep{0\p@}% + \setlength\itemsep{0\p@}% + \setlength{\partopsep}{0pt}% +} +\let\@listi\@listI +\renewcommand{\@listii}{% + \setlength\leftmargin\leftmarginii% +} +\renewcommand{\@listiii}{% + \setlength\leftmargin\leftmarginiii% +} +\renewcommand{\@listiv}{% + \setlength\leftmargin\leftmarginiv% +} +\renewcommand{\@listv}{% + \setlength\leftmargin\leftmarginv% +} + +\newlength{\UU@tmplen} +\newlength{\UU@listindent} +\newcounter{UU@tmpcounter} +\providecommand{\setlistmargin}[1][]{ + \def\tmp{#1} + \ifx\tmp\@empty + \settowidth{\UU@tmplen}{\@itemlabel\hspace{\labelsep}} + \else + \ifx\@listctr\@undefined + \settowidth{\UU@tmplen}{\@itemlabel\hspace{\labelsep}} + \else + \setcounter{UU@tmpcounter}{\value{\@listctr}} + \setcounter{\@listctr}{#1} + \settowidth{\UU@tmplen}{\@itemlabel\hspace{\labelsep}} + \setlength{\labelwidth}{\UU@tmplen} + \setcounter{\@listctr}{\value{UU@tmpcounter}} + \fi + \fi + \advance\UU@tmplen-\leftmargin + \advance\UU@tmplen\UU@listindent + \advance\leftskip\UU@tmplen + \advance\leftmargin\UU@tmplen + \advance\@totalleftmargin\UU@tmplen + \setlength\linewidth\textwidth + \advance\linewidth-\@totalleftmargin +} + + +% ============================================ +% Dispositional Settings +% ============================================ + +% Default to not using numbering for headings +\setcounter{secnumdepth}{-1} + +% Set numbering valid only withing the main matter +\newcounter{secnumdepthmainmatter} +\AtBeginDocument{\setcounter{secnumdepthmainmatter}{\c@secnumdepth}} + + +% ============================================ +% Headings +% ============================================ + +% Provides a readable command to set numbering of headings +\providecommand{\toclevel@part}{-1} +\providecommand{\toclevel@appendix}{0}% +\providecommand{\toclevel@chapter}{0}% +\providecommand{\toclevel@section}{1}% +\providecommand{\toclevel@subsection}{2}% +\providecommand{\toclevel@subsubsection}{3}% +\providecommand{\toclevel@paragraph}{4}% +\providecommand{\toclevel@subparagraph}{5}% + +\providecommand{\numberingdepth}[1]{% + \setcounter{secnumdepth}{\csname toclevel@#1\endcsname}% +} + + +% ============================================ +% Package fixes +% ============================================ + +% Prevents raggedright from creating bad line breaks +\@ifpackageloaded{ragged2e}{ + \providecommand{\UU@RaggedRight}{\RaggedRight} +}{% + \providecommand{\UU@RaggedRight}{\raggedright\parfillskip\fill}% +} + + +% ============================================ +% Table of contents +% ============================================ + +% Provides a readable command to set the level of detail in toc +\providecommand{\contentsdepth}[1]{% + \setcounter{tocdepth}{\csname toclevel@#1\endcsname}% +} + + +% ============================================ +% List of papers +% ============================================ + +% disabled for now /TA +%\renewcommand{\bibname}{\refname} +\providecommand{\listofpapersname}{List of papers} +\providecommand{\continuednextpage}{Continued on next page} +\providecommand{\keywordsname}{Keywords} + +\providecommand{\listofpapersintro}[1]{\gdef\@listofpapersintro{#1}} +\providecommand{\listofpapersoutro}[1]{\gdef\@listofpapersoutro{#1}} +\listofpapersintro{This thesis is based on the following papers, which are referred to in the text by their roman numerals.}% +\listofpapersoutro{Reprints were made with permission from the publishers.} + +\providecommand{\pgs@language@swedish}{% + \renewcommand{\bibname}{\refname}% + \renewcommand{\listofpapersname}{Lista \"over delarbeten}% + \listofpapersintro{Denna avhandling \"ar baserad p\r{a} f\"oljande artiklar, vilka i texten h\"anvisas till med romerska siffror.}% + \listofpapersoutro{Reproduktion med tillst\aa nd fr\aa n respektive utgivare.}% + \renewcommand{\continuednextpage}{Fortsatt p\r{a} n\"a{}sta sida}% + \renewcommand{\keywordsname}{Nyckelord}% +} + +\providecommand{\pgs@language@english}{% + \renewcommand{\bibname}{\refname}% + \renewcommand{\listofpapersname}{List of papers}% + \listofpapersintro{This thesis is based on the following papers, which are referred to in the text by their Roman numerals.}% + \listofpapersoutro{Reprints were made with permission from the publishers.}% + \renewcommand{\continuednextpage}{Continued on next page}% + \renewcommand{\keywordsname}{Keywords}% +} + +\AtBeginDocument{% + \@ifpackageloaded{babel}{% + \addto\captionsswedish{% + \pgs@language@swedish + }% + \addto\captionsenglish{% + \pgs@language@english + }% + }{}% + \@ifpackageloaded{polyglossia}{% + \renewcommand{\xpg@hook@setlanguage}{\csname pgs@language@\languagename \endcsname} + \xpg@hook@setlanguage% + }{}% +} + +\newcounter{listofpapersc} +\renewcommand{\thelistofpapersc}{\Roman{listofpapersc}} +\newenvironment{listofpapers}{% + \cleardoublepage% + \@ifundefined{pdfbookmark}{}{\pdfbookmark[0]{\listofpapersname}{lop}}% + \chapter*{\listofpapersname}% + \noindent {\@listofpapersintro}\vspace{1\baselineskip}% + \setcounter{listofpapersc}{0}% + \begin{list}{\Roman{listofpapersc}}{% + \def\@currentlabel{\Roman{listofpapersc}}% + \UU@RaggedRight% + \hyphenpenalty=10000% + \usecounter{listofpapersc}% + \setlength{\leftmargin}{2,5em}% + \setlength{\labelsep}{1em}% + \setlength{\itemsep}{1em plus 0.2em minus 0.2em}% + \setlength{\parsep}{0mm}% + \setlength{\topsep}{0mm}}% +}{% + \end{list}\nopagebreak% + \vspace{1\baselineskip}\noindent {\@listofpapersoutro}% +} + + +% ============================================ +% Dummy pages +% ============================================ + +\providecommand{\keywordsname}[1]{Keywords} +\providecommand{\authorshort}[1]{\gdef\@authorshort{#1}} +\providecommand{\address}[1]{\gdef\@address{#1}} +\providecommand{\publisher}[1]{\gdef\@publisher{#1}} +\providecommand{\subtitle}[1]{\gdef\@subtitle{#1}} +\providecommand{\series}[1]{\gdef\@series{#1}} +\providecommand{\serialnumber}[1]{\gdef\@serialnumber{#1}} +\providecommand{\pagecount}[1]{\write\@auxout{\string\gdef\string\@pagecount{#1}}\gdef\@pagecount{#1}\gdef\pagecount##1{}} +\providecommand{\URN}[1]{\gdef\@URN{#1}} +\providecommand{\ISBN}[1]{\gdef\@ISBN{#1}} +\providecommand{\ISSN}[1]{\gdef\@ISSN{#1}} +\providecommand{\keywords}[1]{\gdef\@keywords{#1}} +\providecommand{\titlepagelogo}[1]{\gdef\@titlepagelogo{#1}}% +\let\@publisher\relax +\let\@series\relax +\let\@serialnumber\relax +\let\@authorshort\relax +\let\@address\relax +\let\@titlepagelogo\relax +\providecommand{\@pagecount}{??} +\let\@keywords\relax +\let\@ISSN\relax +\let\@ISBN\relax +\let\@URN\relax + +\title{Title Page Dummy} +\providecommand{\@subtitle}{This Page will be Replaced before Printing} +\author{ } +\titlepagelogo{assets/images/UU_logo_sv_42} +\providecommand{\makehalftitle}{% + \begin{center}% + \ifx\@publisher\relax\ifx\@series\relax Half Title Dummy Page\par \fi\fi% + \MakeUppercase{\@publisher}\par% + \@series\par% + \@serialnumber\par% + \end{center}% +} + +\renewenvironment{titlepage}{% + \cleardoublepage% +}{% + \clearpage% +} + +\renewcommand{\maketitle}{% + \providecommand{\titlepagelogo}{assets/images/UU_logo_sv_42}% + \begin {titlepage}% + \def\first##1{##1}% + \def\last##1{##1}% + \def\I##1{##1}% + \vspace*{40mm}% + \begin{center}% + {\Large \@author\par}% + \vspace{6mm}% + \Huge{\@title}\par% + \vspace{6mm}% + {\fontsize{14}{16}\fontshape{it}\selectfont \@subtitle}% + \end{center}% + \begin{figure}[b]% + \begin{center}% + \immediate\openin0 =\@titlepagelogo\space% + \ifeof 0\relax\null% + %\ClassWarning{UUThesisTemplate warning: Image \@titlepagelogo does not exist, placeholder used.}\null + \framebox(120,120)[c]{Title page logo}% + \else% + \ifx\includegraphics\undefined% + \framebox(120,120)[c]{Title page logo}% + \else% + \includegraphics{\@titlepagelogo}% + \fi% + \fi% + \immediate\closein0% + \end{center}% + \end{figure}% + \end{titlepage}% + \global \let \title \relax % + \global \let \author \relax % + \global \let \and \relax% +} + +\newcommand{\dedicationfont}[1]{\gdef\@dedicationfont{#1}} +\newcommand{\@dedicationfont}{\textit} +\newcommand{\dedication}[1]{% + \cleardoublepage% + \vspace*{\stretch{3}}% + \begin{flushright}% + {\@dedicationfont\Large\selectfont\emph{#1}}% + \end{flushright}% + \vspace*{\stretch{1}}% +} + +\providecommand{\abstracthead}{} +\providecommand{\abstractfoot}{} +\providecommand{\abstractsection}{\vskip\baselineskip\noindent\textbf{Abstract}\par\noindent\ignorespaces} +\providecommand{\abstractpreamble}{\clearpage\thispagestyle{empty}} +\providecommand{\abstractfont}{\fontsize{9}{11}\fontshape{rm}\selectfont} + +\newenvironment{abstract}{% + \abstractfont\abstractpreamble % + \abstracthead% + \abstractsection % +}{% +\abstractfoot% +} + +\providecommand{\abstractdummy}[1]{\gdef\@abstractdummy{#1}} +\abstractdummy{\clearpage\vspace*{\stretch{1}}\hfill Abstract Dummy Page. \hfill\vspace*{\stretch{1}}\clearpage} + +\newcommand{\frontmatterCS}{\maketitle\@abstractdummy} + +\AtEndDocument{ + \pagecount{\the\c@page} +} + + +% ============================================ +% Compability and short-hands +% ============================================ + +\newenvironment{numberedlist}{ + \begin{enumerate} + \setlistmargin[5] +}{\end{enumerate}} + +\newenvironment{numberedlist-indent}{ + \setlength{\UU@listindent}{1cm} + \addtolength{\leftmargini}{\UU@listindent} + \begin{enumerate} + \setlistmargin[5] +}{\end{enumerate}} + +\newenvironment{enumerate-indent}{ + \setlength{\UU@listindent}{1cm} + \addtolength{\leftmargini}{\UU@listindent} + \begin{enumerate} + \setlistmargin[5] +}{\end{enumerate}} + +\newenvironment{bulletlist}{ + \begin{itemize} + \setlistmargin +}{\end{itemize}} + +\newenvironment{bulletlist-indent}{ + \setlength{\UU@listindent}{1cm} + \addtolength{\leftmargini}{\UU@listindent} + \begin{itemize} + \setlistmargin +}{\end{itemize}} + +\newenvironment{itemize-indent}{ + \setlength{\UU@listindent}{1cm} + \addtolength{\leftmargini}{\UU@listindent} + \begin{itemize} + \setlistmargin +}{\end{itemize}} + +\newenvironment{romanlist}{ + \renewcommand{\labelenumi}{\Roman{enumi}.} + \renewcommand{\labelenumii}{\roman{enumii}.} + \begin{enumerate} + \setlistmargin[8] +}{\end{enumerate}} + +\newenvironment{romanlist-indent}{ + \setlength{\UU@listindent}{1cm} + \addtolength{\leftmargini}{\UU@listindent} + \begin{romanlist} +}{\end{romanlist}} + +\newenvironment{simplelist}{ + \begin{list}{}{ + \setlength{\leftmargin}{0mm} + \setlength{\itemsep}{0mm} + \setlength{\parsep}{0mm} + \setlength{\topsep}{0mm} +}}{\end{list}} + +\newenvironment{simplelist-indent}{ + \begin{list}{}{ + \setlength{\leftmargin}{1cm} + \setlength{\itemsep}{0mm} + \setlength{\parsep}{0mm} + \setlength{\topsep}{0mm} +}}{\end{list}} + +\newenvironment{definitionlist}[1][]{ + \@afterindenttrue\par\parindent -1em\advance\leftskip-\parindent\renewcommand{\item}[1]{\par{\it #1 ##1} -- \ignorespaces} +}{\par} + +\newenvironment{definitionlist-indent}[1][]{ + \leftskip 1cm\begin{definitionlist}[#1] +}{\end{definitionlist}} + +\newcommand{\code}[1]{{\small\texttt{#1}}} +\newcommand\listheading[1]{% + \if@noskipsec\leavevmode\fi % + \par\@tempskipa 13pt \@plus 2pt \@minus 3pt\relax\@afterindentfalse% + \if@nobreak% + \everypar{}% + \else% + \addpenalty\@secpenalty\addvspace\@tempskipa% + \fi% + \noindent\textit{#1}% +} +