753 lines
29 KiB
TeX
753 lines
29 KiB
TeX
%% ---------------------------------------------------------------------------------------------
|
|
%% LaTeX Base Class Reykjavík University Theses/Dissertations/Books,
|
|
%% ---------------------------------------------------------------------------------------------
|
|
%% Original Author: Bjórn Þór Jónsson (bjorn AT ru.is)
|
|
%% Refactored/Simplified on 2020-02-03: Joseph Timothy Foley <foley AT ru.is>
|
|
%% Questions, comments, complaints: latex-help@LIST.RU.IS
|
|
%% Created on 2020-02-03
|
|
%% This code is distributed under the MIT license
|
|
%% Details at LICENSE.md
|
|
|
|
%%% WARNING: This does not work without ruthesis.cls!!!
|
|
|
|
%% --------------- Identification ----------------------------
|
|
\newcommand{\fileversion@ruthesis}{$Revision: 361 $}
|
|
\newcommand{\filedate@ruthesis}{2020/02/03}% must be YYYY/MM/DD!
|
|
\newcommand{\fileauthor@ruthesis}{Joseph Timothy Foley, foley at RU.IS}
|
|
\ProvidesPackage{ruthesis}[\filedate@ruthesis by \fileauthor@ruthesis]
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\typeout{Thesis Class for Reykjavik University \fileversion@ruthesis <\filedate@ruthesis>, by \fileauthor@ruthesis}
|
|
|
|
%% ---------------- Critical packages -----------------------------
|
|
% Toolbox of many many macros that make a lot of latex code smarter and more robust
|
|
% Incl: \newbool, \ifbool, etc.
|
|
% http://texdoc.net/texmf-dist/doc/latex/etoolbox/etoolbox.pdf
|
|
\RequirePackage{etoolbox}
|
|
|
|
% xparse: LateX3 Advanced Argument and macro definition
|
|
% http://ctan.uib.no/macros/latex/contrib/l3packages/xparse.pdf
|
|
\RequirePackage{xparse}
|
|
|
|
%% ---------------- Boolean switches -----------------------------
|
|
%% Booleans make it easy to enable and disable parts of the template
|
|
\newbool{debug}
|
|
\newbool{draftbool}
|
|
\newbool{online}
|
|
\newbool{IS}
|
|
\newbool{proof}
|
|
|
|
|
|
%% ---------------- Declaration of Package Options--------------------
|
|
%% Remember that we have \AtEndOfPackage{}
|
|
%% \AtBeginDocument{}, \AtEndDocument{}
|
|
%% If you want execution conditional on file existence
|
|
%% \IfFileExists{filename}{true}{false}
|
|
%% \InputIfFileExists{filename}{true}{false}
|
|
%% For error reporting
|
|
%% \PackageError{class-name}{error-text}{help-text}
|
|
|
|
% Generalized settings
|
|
\DeclareOption{debug}{%
|
|
\booltrue{debug}
|
|
\typeout{ruthesis option: debug}%
|
|
\typeout{DEBUG MODE ENABLED! PREPARE FOR VERBOSITY!}}
|
|
|
|
\DeclareOption{draft}{\booltrue{draftbool}}
|
|
|
|
\DeclareOption{IS}{\booltrue{IS}}
|
|
|
|
\DeclareOption{online}{
|
|
\setbool{online}{true}
|
|
\typeout{ruthesis option: online}
|
|
}
|
|
|
|
\DeclareOption{forcegraphics}{%
|
|
\PassOptionsToPackage{final}{graphicx}
|
|
\PassOptionsToPackage{final}{pdfpages}
|
|
\PassOptionsToPackage{final}{hyperref}
|
|
%% add any other elements that should be included in draft
|
|
\finalifforcegraphics{graphicx}%We have to catch graphicx early
|
|
\setbool{forcegraphics}{true}\typeout{ruthesis option: forcegraphics}%
|
|
}%
|
|
|
|
%%% Memoir test: Memoir Manual 21.2 p.367
|
|
%% Only works with the memoir class!!!!!!!!!!!!!!!
|
|
%% Only works with the memoir class!!!!!!!!!!!!!!!
|
|
\@ifclassloaded{memoir}{\let\endruthesis\relax}{\let\endruthesis\endinput
|
|
\PackageError{ruthesis}{The ruthesis package only works with the memoir class}%
|
|
{\@ehd}}
|
|
\endruthesis
|
|
%%---------------- Execution of Options -----------------------------
|
|
\ProcessOptions\relax% this stops searching for a * in \ProcessOptions*
|
|
%% Read page 20 of http://latex-project.org/guides/clsguide.pdf
|
|
%% carefully before modifying any of the execution and previous section.
|
|
%% ---------------- Package Loading -----------------------------
|
|
|
|
\ifbool{online}
|
|
{\ExecuteOptions{openany}}%% Online format does not have right-vs-left
|
|
{\ExecuteOptions{openright}}%% All of our printed formats are going to be opening to the right
|
|
|
|
%% Now to print the status of all the booleans if debug boolean is set
|
|
%% Any boolean testing must be after the \LoadClass otherwise the Option execution
|
|
%% has not completed.
|
|
\ifbool{debug}{%
|
|
\ifbool{online}{\typeout{ruthesis bool: online}}{}
|
|
\ifbool{forcegraphics}{\typeout{ruthesis bool: forcegraphics}}{}
|
|
\ifbool{proof}{\typeout{ruthesis bool: proof}}{}
|
|
\ifbool{debug}{\typeout{ruthesis bool: debug}}{}
|
|
}{}
|
|
|
|
%% ---------------- Internationalization -----------------------------
|
|
%% Unicode setup
|
|
\RequirePackage[T1]{fontenc}
|
|
\RequirePackage[utf8]{inputenc}
|
|
% allows UTF encoding, needed for Icelandic and other accented characters
|
|
|
|
\ifbool{IS}
|
|
{\RequirePackage[english,icelandic]{babel}}%%Icelandic main language
|
|
{\RequirePackage[icelandic,english]{babel}}%%English main language
|
|
|
|
\usepackage[useregional]{datetime2}
|
|
%% Smart manipulation of dates
|
|
\renewcommand{\date}[3]{\newcommand{\thedate}{\DTMdisplaydate{#1}{#2}{#3}{-1}}}
|
|
|
|
% \RequirePackage[autostyle,strict]{csquotes}
|
|
%% http://mirrors.concertpass.com/tex-archive/macros/latex/contrib/csquotes/csquotes.pdf
|
|
%% You invoke with \enquote{} and \blockquote{}
|
|
%% csquotes must be loaded before babel for AUCTeX
|
|
%% autostyle: update style as language changes in document
|
|
%% strict: any warnings become errors
|
|
%% Don't forget to load Babel!
|
|
|
|
%% Babel allows various automatic text to be in selected languages
|
|
%% But to use the options, you have to always load it, even for english
|
|
%% The languages must be specified in order.
|
|
|
|
%% ---------------- Graphics ------------------------------
|
|
\RequirePackage{graphicx}
|
|
%% GraphicsX converts and includes graphics intelligently
|
|
|
|
\graphicspath{{graphics/}{Graphics/}{./}}
|
|
%% This is a list of folders to search for graphics files to include
|
|
%% Each path should be in a {}.
|
|
%% Make sure that the upper/lowercase of the letters matches the folder or
|
|
%% you may have weird problems with partners using OSX or Linux.
|
|
%% Note that you don't have to put the folder where the .tex file is, it is
|
|
%% included automatically, though it is bad practice to put your
|
|
%% graphics there
|
|
%% LaTeX will search from left to right in the list, so you can put "cropped" versions
|
|
%% in the first directory and it will grab them first. e.g.
|
|
%\graphicspath{{graphics-cropped/}{graphics/}{Graphics/}{./}}
|
|
%%
|
|
%% If you put a // at the end of the path, it will recursively search for graphics
|
|
%% files on unix-based (OSX, Linux, etc.) platforms.
|
|
|
|
|
|
%% ---------------- URLs and Paths -----------------------------
|
|
\PassOptionsToPackage{obeyspaces,spaces,hyphens,allowmove}{url}
|
|
\RequirePackage{url}
|
|
%% The url package typesets url's and unix file paths nicely when they
|
|
%% become long. \url{}
|
|
%% Also defines \path{} which works with filepaths including windows paths.
|
|
%% Watch out that you leave a space after a last \ e.g. \path{C:\ }
|
|
%% You need another verbatim environment to make those typeset properly.
|
|
%% Also defines the \path{} command for paths
|
|
%% Option: obeyspace to deal with spaces in a path/url
|
|
%% Option: spaces to do linebreaks at the spaces.
|
|
%% Option: hyphens to do linebreaks at hyphens.
|
|
%% Option: allowmove makes URLs not-fragile, so they can go in things that move
|
|
%% WARNING: If this breaks you will get very very weird errors
|
|
|
|
%% ---------------- Miscellaneous Packages ----------------------
|
|
\RequirePackage{booktabs}
|
|
%% Format tables properly as in a book
|
|
%% \toprule,\midrule,\bottomrule
|
|
|
|
%% ---------------- Fonts -----------------------------
|
|
%%% For help, read http://latex-project.org/guides/fntguide.pdf
|
|
%%
|
|
% save the current font size
|
|
\newlength{\normaltextsize}
|
|
\setlength{\normaltextsize}{\f@size pt}
|
|
|
|
%% Font guide at
|
|
%% http://latex-project.org/guides/fntguide.pdf
|
|
|
|
% set the font defaults (if they need to be further adjusted)
|
|
%\renewcommand{\encodingdefault}{t1}
|
|
|
|
%\renewcommand{\rmdefault}{ptm} % adobe times
|
|
%\renewcommand{\sfdefault}{phv} % adobe helvetica
|
|
%\renewcommand{\ttdefault}{pcr} % adobe courier
|
|
%% cmr : computer modern roman
|
|
%% cmss : computer modern sans oblique
|
|
%% cmm : computer modern math
|
|
%% ptm : (postscript) Adobe Times
|
|
%% phv : (postscript) Adobe Helvetica
|
|
%% pcr : (postscript) Adobe Courier
|
|
|
|
%\renewcommand{\familydefault}{\sfdefault} % switch to \sfdefault if you want to force sanserif
|
|
%% \familydefault should be one of the short letter codes such as "lm" or "ptm"
|
|
%\renewcommand{\familydefault}{\rmdefault}
|
|
|
|
%\renewcommand{\seriesdefault}{m}
|
|
%% m : medium
|
|
%% b : bold
|
|
%% bx : bold extended
|
|
%% sb : semi bold
|
|
%% c : condensed
|
|
|
|
%\renewcommand{\shapedefault}{n}
|
|
%% n : upshape (normal)
|
|
%% it : italics
|
|
%% sl : slanted
|
|
%% sc : small caps
|
|
|
|
%%\fontsize{12pt}{14pt} % args: fontsize, baselineskip (font+space)
|
|
%% normal sequence of increasing sizes: 5,7,8,9,10,12,14.4,17.28,20.74,24.88
|
|
|
|
%% Specific fonts
|
|
%% Note that you can leave off elements and it will use the last value set (or default??)
|
|
% \def\myfont{\fontencoding{T1}\fontfamily{lm}\fontseries{m}\fontshape{n}\fontsize{14pt}{16pt}\selectfont}
|
|
% \fontsize{SIZE}{BASELINESKIP}
|
|
\def\titletitlefont{\fontseries{b}\fontsize{17pt}{20pt}\selectfont}
|
|
\def\titletextfont{\fontsize{14pt}{16pt}\selectfont}
|
|
\def\titleinfofont{\fontsize{12}{14}\selectfont}
|
|
\def\sigtextfont{\fontsize{12pt}{14pt}\selectfont}
|
|
\def\warningfont{\fontseries{b}\fontsize{24pt}{28pt}\selectfont}
|
|
|
|
%% Outside PhD cover we hardcode for consistency
|
|
\def\covertitlefont{\fontfamily{phv}\fontseries{b}\fontshape{n}\fontsize{20.74}{24}\selectfont}
|
|
\def\covertextfont{\fontfamily{phv}\fontseries{m}\fontshape{n}\fontsize{14.4}{16}\selectfont}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%% Colors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
|
|
%% Setting colors in text
|
|
%% Usage:
|
|
%% \textcolor{rured}{Some text.}
|
|
%% {\color{rured}Some text.}
|
|
\RequirePackage{xcolor}
|
|
\definecolor{rugray}{rgb}{0.2,0.2,0.2}
|
|
\definecolor{rured}{rgb}{0.84,0.10,0.13}
|
|
|
|
%% ---------------- Main Code -----------------------------
|
|
%% Remember that we can declare commands (to make fragile things safe)
|
|
%% The * form is for ``short'' commands, not longer than a paragraph
|
|
%% \DeclareRobustCommand{cmd}[num][default]{definition}
|
|
%% \DeclareRobustCommand*{cmd}[num][default]{definition}
|
|
%% For checking if commands are redefined
|
|
%% \CheckCommand{cmd}[num][default]{definition}
|
|
|
|
|
|
%% Spacing modes from the memoir class
|
|
%\SingleSpacing{} % single spacing
|
|
%\OnehalfSpacing{} % one and a half
|
|
%\DoubleSpacing{} % Double spacing, very ugly.
|
|
|
|
%% The official guidelines say to put the page in the middle bottom, but
|
|
%% that was clearly written for the MS Word users. We follow proper book setup.
|
|
|
|
%% Comprehensive list of styles for memoir is in 7.2 (page 106)
|
|
%% If you need to adjust the style on the chapters, modify chapter
|
|
%% predefined styles:
|
|
%% empty: no header nor footer
|
|
%% plain: page num in bot center
|
|
%% simple: pagenum and marks on top outer edges
|
|
%\makeoddhead{chapter}{}{}{} %to change only one side
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%%%%%%%%%%%%%%%%%%%%%% TITLE PAGE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Memoir titlepage definition and info at p.64
|
|
|
|
|
|
%% Some may need a different front logo
|
|
\newcommand{\frontlogo@ruthesis}{ru-logo}
|
|
\newcommand{\frontlogo}[1]{\renewcommand{\frontlogo@ruthesis}{#1}}
|
|
|
|
\renewcommand{\maketitlehooka}{\begin{centering}\includegraphics[width=4cm]{\frontlogo@ruthesis}\par\end{centering}\vspace{2mm}}%
|
|
\renewcommand{\pretitle}{\begin{center}\titletitlefont}%
|
|
\renewcommand{\posttitle}{\par\end{center}}
|
|
|
|
% \renewcommand{\maketitlehookb}{\begin{center}\titletextfont{}by\end{center}\vspace{1mm}}
|
|
% 1mm adjustment to center the "by". I've disabled it because I think the "by" looks unprofessional.
|
|
|
|
\renewcommand{\preauthor}{\titletextfont\begin{center}\large\par}
|
|
\renewcommand{\postauthor}{\par\end{center}}
|
|
\newcommand{\titledetails}[1]{\renewcommand{\maketitlehookc}{#1}}
|
|
\renewcommand{\predate}{\begin{center}\large}
|
|
\renewcommand{\postdate}{\par\end{center}}
|
|
\aliaspagestyle{title}{empty}
|
|
%% ----- COPYRIGHT PAGE -----------------------------------------------------------------------
|
|
\newcommand{\copyrightpage}{
|
|
% actually in books, this is often on the left side
|
|
\begin{coverleft}
|
|
\begin{vplace}[1.0] % ratio of space above and below
|
|
\centering
|
|
\OnehalfSpacing%
|
|
\iflanguage{icelandic}{Höfundarréttur}{Copyright}\\
|
|
\theauthor\\
|
|
\thedate\\
|
|
\end{vplace}
|
|
\end{coverleft}
|
|
}
|
|
|
|
%% ---------- Page Styles --------------------------------------------------------------
|
|
%% ---------------------------------------------------------------------------------------------
|
|
%% Setup the formatting at the beginning of the document (Front material)
|
|
%% TODO: use the memoir \frontmatter \mainmatter \backmatter
|
|
%% See documentation, page 73
|
|
|
|
%%%%%%%%% PARAGRAPH ADJUSTMENTS %%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\newlength{\savedparindent}
|
|
\newcommand{\disableindents}{\setlength{\parindent}{0pt}}
|
|
\newcommand{\enableindents}{\setlength{\parindent}{\savedparindent}}
|
|
|
|
\AtBeginDocument{
|
|
\frontmatter
|
|
\setlength{\savedparindent}{\parindent} % save the current parindent
|
|
\SingleSpacing%
|
|
}
|
|
|
|
%% Disable clearforchapter on formats that do not need blank pages
|
|
\ifbool{online}{\renewcommand{\clearforchapter}{\newpage}}{}
|
|
\ifbool{draftbool}{\renewcommand{\clearforchapter}{\newpage}}
|
|
% waste less blank pages in draft mode
|
|
% see p123 http://ctan.uib.no/macros/latex/contrib/memoir/memman.pdf
|
|
|
|
\newenvironment{cover}% commonalities for the cover material
|
|
{\thispagestyle{cover}%
|
|
\pagestyle{cover}%
|
|
\clearforchapter% clear to chapter setting if note online
|
|
\disableindents%
|
|
\titletextfont\SingleSpacing}%
|
|
{%\setlength{\TPMargin}{0mm} %% margins inside the textblock
|
|
\enableindents{}\newpage}%
|
|
|
|
|
|
\newenvironment{coverleft}%This is material that is OK being on the
|
|
%backside
|
|
{\thispagestyle{cover}%
|
|
\pagestyle{cover}%
|
|
\cleartoverso%
|
|
%\clearforchapter% clear to chapter setting
|
|
\disableindents%
|
|
\titletextfont\SingleSpacing}%
|
|
{%\setlength{\TPMargin}{0mm} %% margins inside the textblock
|
|
%% I don't remember why we need to mess with \TPmargin --foley
|
|
\enableindents{}\newpage}%
|
|
|
|
|
|
|
|
%% ----- DEDICATIONS ---------- ---------------------------------------------------------------
|
|
\newenvironment{dedications}{\begin{cover}\begin{vplace}[0.33]% ratio of space above and below
|
|
\begin{center}\em}
|
|
{\end{center}\normalfont\end{vplace}\end{cover}}
|
|
|
|
%%%%%%%%%%%% DRAFT AND PROOF MARKS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\newcommand{\draftmark}{}
|
|
\newcommand{\draftbigmark}{}
|
|
|
|
\ifbool{proof}{\renewcommand{\draftmark}{{\color{blue}\textsc{Proof}}}%
|
|
\renewcommand{\draftbigmark}{{\color{blue}\warningfont{}*** \draftmark{} *** \\PLEASE DO NOT DISTRIBUTE\\}}}{}
|
|
\ifbool{draftbool}{\renewcommand{\draftmark}{{\color{red}\textsc{Draft}}}%
|
|
\renewcommand{\draftbigmark}{{\color{red}\warningfont{}*** \draftmark{} *** \\PLEASE DO NOT DISTRIBUTE\\}}}{}%
|
|
%%% Page styles Memoir Manual ch7.2 p109
|
|
\aliaspagestyle{book}{simple}
|
|
\aliaspagestyle{chapter}{plain}%At the beginning we want page numbers on chapters
|
|
\aliaspagestyle{cleared}{simple}
|
|
\aliaspagestyle{part}{empty}
|
|
\aliaspagestyle{title}{simple}
|
|
\aliaspagestyle{titlinpage}{empty}
|
|
|
|
% \ifboolexpr{bool {draftbool} or bool {proof}}{
|
|
% \makeoddfoot{cover}{}{\thepage}{\draftmark}
|
|
% \makeevenfoot{cover}{\draftmark}{\thepage}{}
|
|
% %\makeoddfoot{plain}{}{\thepage}{\draftmark}
|
|
% %\makeevenfoot{plain}{\draftmark}{\thepage}{}
|
|
% \makeoddfoot{simple}{}{}{\draftmark}
|
|
% \makeevenfoot{simple}{\draftmark}{}{}
|
|
% }{}
|
|
|
|
\makepagestyle{plain}% Just page numbers in corners
|
|
\makeevenhead{plain}{\thepage}{}{}
|
|
\makeoddhead{plain}{}{}{\thepage}
|
|
|
|
\makepagestyle{cover}% The cover pages have no page numbers
|
|
\makeoddfoot{cover}{}{}{}
|
|
\makeevenfoot{cover}{}{}{}
|
|
|
|
\newcommand{\coverchapter}[1]{\clearforchapter\pagestyle{cover}\chapter{#1}\thispagestyle{cover}}
|
|
|
|
|
|
%%% Section numbering and the Table of Contents
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
|
|
\maxsecnumdepth{subsubsection} % default by \mainmatter in preamble
|
|
%\setsecnumdepth{subsubsection} % can be changed later
|
|
\maxtocdepth{subsubsection} % default by \mainmatter in preamble
|
|
%\settocdepth{subsubsection} % can be changed later
|
|
|
|
%%% Code to include files if they exist
|
|
\newcommand{\InputIfExists}[1]{\IfFileExists{#1}{\input{#1}}{}}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% TWEAKS
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%
|
|
%% Some adjustments to float placement
|
|
\setcounter{topnumber}{5} \def\topfraction{1} \setcounter{bottomnumber}{4}
|
|
\def\bottomfraction{1} \setcounter{totalnumber}{10} \def\textfraction{0}
|
|
\def\floatpagefraction{.5}
|
|
|
|
%\def\@makefnmark{\rlap{\@textsuperscript{\@thefnmark}}}
|
|
%% Not sure why there was a footnote adjustment on the cover
|
|
%% Disabling for now.
|
|
|
|
%% Penalties for various text placement issues
|
|
\clubpenalty=10000%% orphan lines
|
|
\widowpenalty=10000%% widow lines
|
|
\hfuzz=1pt%% avoid overfilled hboxes
|
|
\vfuzz=5pt%% avoid overfilled vboxes
|
|
%\newcommand{\draftnote}[1]{\ifdraft{{\color{gray}#1}}}
|
|
|
|
%%%%%%%%%%%%%%%%%%%% Addional Font Adjustments%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% Note that you can leave off elements and it will use the last value set (or default??)
|
|
% \def\myfont{\fontencoding{T1}\fontfamily{lm}\fontseries{m}\fontshape{n}\fontsize{14pt}{16pt}\selectfont}
|
|
% \fontsize{SIZE}{BASELINESKIP}
|
|
|
|
%% Default font is halfway between Times and Latin Modern
|
|
\RequirePackage{newtxtext}
|
|
\RequirePackage{newtxmath}
|
|
|
|
|
|
%% We need the paralist and dashrule package in order to format the signature pages
|
|
\RequirePackage{paralist}
|
|
\RequirePackage{dashrule}
|
|
|
|
%% Information about Institution, Author, Degree, and Program
|
|
\newcommand{\theInstitution}{Reykjav\'{\i}k University}%
|
|
\newcommand{\theInstitutionAddress}{Menntavegur 1\\102 Reykjavík, Iceland}
|
|
\newcommand{\theInstitutionPhone}{+354 599 6200}
|
|
\newcommand{\theInstitutionURL}{www.ru.is}%
|
|
|
|
\newcommand{\theDocumentType}{Dissertation}
|
|
\newcommand{\theDegreeAbbrv}{Ph.D.}
|
|
\newcommand{\theDegreeLong}{Doctorate}
|
|
\newcommand{\theProgram}{\LaTeX{} Magic}
|
|
\newcommand{\theECTS}{30}
|
|
\newcommand{\theSchool}{School of Awesomeness}
|
|
\newcommand{\DocumentInfo}[6]{
|
|
\renewcommand{\theDocumentType}{#1}
|
|
\renewcommand{\theDegreeAbbrv}{#2}
|
|
\renewcommand{\theDegreeLong}{#3}
|
|
\renewcommand{\theProgram}{#4}
|
|
\renewcommand{\theECTS}{#5}
|
|
% ECTS Only applicable on BSc. and MSc.
|
|
% Leave blank
|
|
\renewcommand{\theSchool}{#6}
|
|
}
|
|
\newcommand{\theDegreeAndDepartment}{\theDegreeLong (\theDegreeAbbrv) in \theProgram{}}
|
|
|
|
|
|
|
|
\newcommand{\supervisors@ruthesis}{\item No Advisor}
|
|
\newcommand{\Supervisors}[1]{\renewcommand{\supervisors@ruthesis}[1]{#1}}
|
|
\newcommand{\supervisorheading@ruthesis}{Supervisor}
|
|
\newcommand{\SupervisorHeading}[1]{\renewcommand{\supervisorheading@ruthesis}{#1}}
|
|
|
|
\newcommand{\examiners@ruthesis}{\item No Examiner}
|
|
\newcommand{\Examiners}[1]{\renewcommand{\examiners@ruthesis}[1]{#1}}
|
|
\newcommand{\examinerheading@ruthesis}{Examiner}
|
|
\newcommand{\ExaminerHeading}[1]{\renewcommand{\examinerheading@ruthesis}{#1}}
|
|
|
|
\newcommand{\personinfo}[5]{
|
|
\item[] #1, #2\\#3, #4, #5 %Stub to be customized later
|
|
}
|
|
|
|
\newenvironment{peoplelist}
|
|
{\begin{compactitem}[\hspace{10mm}]}
|
|
{\end{compactitem}}
|
|
|
|
\newenvironment{rolelist}
|
|
{\begin{compactitem}[\hspace{10mm}]}
|
|
{\end{compactitem}}
|
|
|
|
%% Setup Bilingual titles
|
|
%\newcommand{\thetitle}{**Title in English**}
|
|
\newcommand{\thetitleIS}{**Title in Icelandic**}
|
|
%\renewcommand{\title}[2]{\renewcommand{\thetitle}{#1}\renewcommand{\thetitleIS}{#2}}
|
|
\newcommand{\titleIS}[1]{\renewcommand{\thetitleIS}{#1}}
|
|
|
|
%% LaTeX3 attempt at smarter titles
|
|
%% Still a work in progress --foley 2022-2-3
|
|
%\% NewDocumentCommand\thesistitle{O{#2} m}
|
|
% % ARGS: [optional use #2], {mandatory}
|
|
% {
|
|
% \NewDocumentCommand\theenglishtitle{}{#2}%babel naming convetion?
|
|
% \NewDocumentCommand\theicelandictitle{}{#1}
|
|
% \iflanguage{icelandic}
|
|
% {\title{\theicelandictitle}}
|
|
% {\title{\theenglishtitle}}
|
|
% }
|
|
|
|
|
|
%% Clean up some formatting for the text
|
|
\renewcommand{\thepage}{\roman{page}}
|
|
|
|
%% Footnote adjustments. These are mostly unnecessary
|
|
% \let\footnoterule\relax \null % Turn off the footnote rule line
|
|
%\renewcommand{\thefootnote}{\scriptsize\arabic{footnote}} %to fix large footnote text errors in some documents
|
|
|
|
\renewcommand{\bibname}{Bibliography} %Renaming the bibliography section (if omitted it will be named "references")
|
|
|
|
%%%%%%%%%%%%%%%% MARGINS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% WARNING: memoir class has its own margin macros
|
|
%% Do not use the geometry package!!!!
|
|
|
|
%% The MS word template uses even 25.4mm margins which works poorly as a bound book
|
|
%% We will only do this for the online version
|
|
|
|
\semiisopage{}
|
|
%Print version: iso geometry on an a4 looks best when bound
|
|
\ifbool{online}
|
|
{%Online version: symmetric margins
|
|
\setlrmarginsandblock{25.4mm}{25.4mm}{*}% {left}{right}{ratio} * for calculate
|
|
\setulmarginsandblock{25.4mm}{25.4mm}{*}% {upper}{lower}{ratio} * for calculate
|
|
}{}
|
|
\checkandfixthelayout% implement the margins
|
|
|
|
%% Some debugging code to check length calculation.
|
|
\newcommand{\showlengths@ruthesis}{
|
|
\uselengthunit{mm} % showlen package
|
|
Lengths: (with round off error from floats)\\
|
|
pagecenterx:\printlength{\pagecenterx}\\
|
|
pagecentery:\printlength{\pagecentery}\\
|
|
}
|
|
|
|
%% ----- PRINTED FRONT COVER (PHD) ----------------------------------------------------------
|
|
%% This cover will be on the outside (not with window)
|
|
%% Needs textpos package!
|
|
\RequirePackage{calc}%arithmetic on lengths
|
|
|
|
\RequirePackage{printlen}% display lengths in arbitrary units
|
|
\ifbool{debug}{\PassOptionsToPackage{showboxes}{textpos}}
|
|
\RequirePackage[absolute, verbose]{textpos}%
|
|
|
|
%% These commands set the units in \begin{textblock} when not
|
|
%% directly specified
|
|
%% We set them to the page sizes so we can align from them
|
|
\setlength{\TPHorizModule}{\paperwidth}
|
|
\setlength{\TPVertModule}{\paperheight}
|
|
\setlength{\TPMargin}{2mm}%% margins inside the textblock*
|
|
\textblockorigin{0mm}{0mm}% start everything near the top-left corner
|
|
\newlength{\pagecenterx}%
|
|
\setlength{\pagecenterx}{0.5\stockwidth}
|
|
\newlength{\pagecentery}
|
|
\setlength{\pagecentery}{0.5\stockheight}
|
|
|
|
|
|
\newcommand{\printedcover}[2]{
|
|
\thispagestyle{empty}
|
|
\setlength{\TPMargin}{0mm} %% margins inside the textblock*
|
|
\sffamily
|
|
\begin{textblock*}{\textwidth}[0.5,0.5](\pagecenterx,68mm)%
|
|
{\centering\includegraphics[width=55mm]{\frontlogo@ruthesis}\\}%
|
|
\end{textblock*}
|
|
\setSingleSpace{1.8}\SingleSpacing%
|
|
\begin{textblock*}{\textwidth}[0,0](30mm,120mm)%
|
|
\textcolor{rugray}{\covertitlefont#1}\par%
|
|
%% Originally title was forced uppercase, but no-one seems to have
|
|
%% noticed, so I'm removing it.
|
|
\end{textblock*}%
|
|
%
|
|
\setSingleSpace{1.5}\SingleSpacing%
|
|
\begin{textblock*}{\textwidth}[0,0](30mm,222mm)%
|
|
\begin{minipage}{\textwidth}
|
|
\textcolor{rugray}{
|
|
\covertextfont{}\noident
|
|
\textbf{\theauthor}\\%
|
|
\theDegreeLong\\%
|
|
\thedate\\%
|
|
\theSchool\\%
|
|
\theInstitution%
|
|
}\par
|
|
\vspace*{5mm}
|
|
\textcolor{rured}{
|
|
\covertitlefont{}\noindent
|
|
\theDocumentType
|
|
}\par
|
|
\vspace*{3mm}
|
|
{\scriptsize\color{rugray}#2}%
|
|
\end{minipage}
|
|
\end{textblock*}
|
|
\setSingleSpace{1.0}
|
|
% \end{covernonum}
|
|
\newpage\quad%% I am not sure why we must put this to ensure that the covers don't overlap
|
|
\newpage % without this, page numbers show up. Weird.
|
|
%% TODO: isolate font and spacing changes from the rest of the document
|
|
}
|
|
|
|
%% ----- INTERNAL TITLE PAGE WITH COMMITTEE ---------------------------------------------------
|
|
%% TODO: make counter for supervisors in the very rare case that there
|
|
%% is only one supervisor
|
|
\newcommand{\DocumentDescription}[1]{\renewcommand{\maketitlehookc}{{\titletextfont\begin{center}#1\par\end{center}}}}
|
|
|
|
%% maketitlehookd is after the date
|
|
\renewcommand{\maketitlehookd}{{\titletextfont%
|
|
\vspace{2\baselineskip}
|
|
% change \personinfo to make the entries needed
|
|
% Because this is inside a command, we escape the #1 as ##1
|
|
\renewcommand{\personinfo}[5]{\item[] ##1, ##2\\##3, ##4, ##5}
|
|
\setlength{\pltopsep}{0.5\baselineskip} % first/top space
|
|
\setlength{\plparsep}{0.5\baselineskip} % space between entries
|
|
\setlength{\plitemsep}{0.5\baselineskip} % space between lines
|
|
\begin{rolelist}
|
|
\item \supervisorheading@ruthesis{}:
|
|
\begin{peoplelist}
|
|
\supervisors@ruthesis{}
|
|
\end{peoplelist}
|
|
\end{rolelist}
|
|
}\vfill}
|
|
|
|
|
|
%% ----- SIGNATURE PAGE, ONLY THESIS -----------------------------------------------------
|
|
\newlength{\signaturey}
|
|
\setlength{\signaturey}{8mm}
|
|
\newlength{\signaturex}
|
|
\setlength{\signaturex}{100mm}
|
|
|
|
\newcommand{\signaturepage}{
|
|
\begin{cover}
|
|
The undersigned hereby certify that they recommend to the
|
|
\theSchool{} at \theInstitution{} for acceptance this
|
|
\theDocumentType{} entitled \textbf{\thetitle}
|
|
submitted by \textbf{\theauthor} in partial fulfillment
|
|
of the requirements for the degree of \textbf{\theDegreeAndDepartment}%
|
|
\vspace*{2\baselineskip}
|
|
|
|
\newcommand{\signline}[2]{\item \hdashrule{##2}{1pt}{1pt}\\##1}
|
|
\renewcommand{\personinfo}[5]{\item\hdashrule{\signaturex}{1pt}{1pt}\\##1, ##2\\##3, ##4, ##5\\\vspace{\signaturey}\\}
|
|
\setlength{\pltopsep}{2\baselineskip} % first/top space
|
|
\setlength{\plparsep}{2\baselineskip} % space between entries
|
|
\setlength{\plitemsep}{0.5\baselineskip} % space between lines
|
|
{\sigtextfont%
|
|
% change \personinfo to make the entries needed
|
|
% Because this is inside a command, we escape the #1 as ##1
|
|
\renewcommand{\personinfo}[5]{&\hdashrule{\signaturex}{1pt}{1pt}\\&##1\\\vspace{\signaturey}\\}
|
|
\begin{compactitem}[]
|
|
\signline{date}{50mm}
|
|
\end{compactitem}
|
|
\begin{tabular}{lll}
|
|
Student:\\
|
|
\personinfo{\theauthor}{}{}{}{}\\
|
|
\supervisorheading@ruthesis:\\
|
|
\supervisors@ruthesis{}\\
|
|
%\examinerheading@ruthesis:\\%% MSc old template
|
|
%\examiners@ruthesis{}
|
|
\end{tabular}
|
|
}% end sigtextfont
|
|
\end{cover}
|
|
}
|
|
|
|
|
|
%% ----- ARCHIVAL SIGNATURE, ONLY THESIS ----------------------------------------------------
|
|
\newcommand{\archivesigpage}{
|
|
\begin{cover}
|
|
\enableindents{}
|
|
The undersigned hereby grants permission to
|
|
the \theInstitution{} Library to reproduce single
|
|
copies of this \theDocumentType{} entitled \textbf{\thetitle}
|
|
and to lend or sell such copies for private, scholarly or
|
|
scientific research purposes only.
|
|
|
|
The author reserves all other publication and
|
|
other rights in association with the copyright in the
|
|
\theDocumentType{}, and
|
|
except as herein before provided, neither the
|
|
\theDocumentType{} nor
|
|
any substantial portion thereof may be printed or otherwise
|
|
reproduced in any material form whatsoever without the
|
|
author's prior written permission.
|
|
|
|
\vspace*{2\baselineskip}
|
|
\newcommand{\signline}[2]{\item \hdashrule{##2}{1pt}{1pt}\\##1}
|
|
\setlength{\pltopsep}{2\baselineskip} % first/top space
|
|
\setlength{\plparsep}{2\baselineskip} % space between entries
|
|
\setlength{\plitemsep}{0.5\baselineskip} % space between lines
|
|
\begin{compactitem}[]
|
|
\signline{Date}{50mm}
|
|
\signline{\theauthor\\\theDegreeLong}{0.75\textwidth}
|
|
\end{compactitem}
|
|
\end{cover}
|
|
}
|
|
|
|
|
|
\renewenvironment{abstract}
|
|
{\begin{otherlanguage}{english}\begin{coverleft}{\centering%
|
|
{\titletitlefont\thetitle\\}%%
|
|
\vspace{\baselineskip}
|
|
\theauthor\\%
|
|
\vspace{\baselineskip}
|
|
\thedate\\%
|
|
}%
|
|
\setlength{\parskip}{\baselineskip}%
|
|
\par\vspace*{2\baselineskip}%
|
|
\textbf{Abstract}\par\vspace{1ex}}
|
|
{\par\end{coverleft}\end{otherlanguage}\newpage}
|
|
|
|
\newenvironment{abstractIS}
|
|
{\begin{otherlanguage}{icelandic}\begin{coverleft}{\centering%
|
|
{\titletitlefont\thetitleIS\\}%%
|
|
\vspace{\baselineskip}
|
|
\theauthor\\%
|
|
\vspace{\baselineskip}
|
|
\thedate\\%
|
|
}%
|
|
\setlength{\parskip}{\baselineskip}%
|
|
\par\vspace*{2\baselineskip}%
|
|
\textbf{Útdráttur}\par\vspace{1ex}}
|
|
{\par\end{coverleft}\end{otherlanguage}\newpage}
|
|
|
|
|
|
%% ----- END OF FRONT MATERIALS ---------------------------------------------------------------
|
|
%\RequirePackage{stackengine}%% not sure why this is here
|
|
%% ---------------------------------------------------------------------------------------------
|
|
%% This command makes the back-cover materials
|
|
\newcommand{\backcover}{%
|
|
\thispagestyle{empty}%
|
|
\pagestyle{empty}%
|
|
\cleartoevenpage{}% clear to chapter setting
|
|
\disableindents%
|
|
\titletextfont\SingleSpacing%
|
|
\vplace[0.8]{
|
|
{\centering
|
|
\belowbaseline[-\normaltextsize]{
|
|
\includegraphics[width=4cm]{\frontlogo@ruthesis}
|
|
}
|
|
\quad
|
|
\begin{minipage}[t]{10cm}%
|
|
{\titletextfont\textcolor{rugray}{%
|
|
\School\\
|
|
\Institution\\
|
|
\InstitutionAddress\\
|
|
\InstitutionPhone\\
|
|
\InstitutionURL\\ %% NO \\, it is in the ID macro
|
|
\Bookidnumber%
|
|
}
|
|
}
|
|
\end{minipage}\\%
|
|
}
|
|
}
|
|
\setlength{\TPMargin}{0mm}%% margins inside the textblock
|
|
\enableindents{}%
|
|
}
|
|
|
|
%% ----- END OF BACK MATERIALS ---------------------------------------------------------------
|
|
|
|
|
|
%%% from the old cs template, if so desired
|
|
%\makepagestyle{oldstyle}
|
|
%\makeoddhead{oldstyle}{\footnotesize{\authorHeader@ruthesis}}{}{\footnotesize{\thepage}}
|
|
%\makeevenhead{oldstyle}{\footnotesize{\thepage}}{}{\footnotesize{\thetitle}}
|
|
|