Files
ru-thesis/ruthesis.sty

355 lines
15 KiB
TeX

%% ---------------------------------------------------------------------------------------------
%% LaTeX Base Package 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@RU.IS
%% Created on 2020-02-03
%% This code is distributed under the MIT license
%% Details at LICENSE.md
%% --------------- Identification ----------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ruthesis}[2025/10/17 RU Thesis Formatting V3.3]
%% --------------- Option Processing--------------------------
%% The forcegraphics option renders graphics even in draft mode
\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
\typeout{ruthesis option: forcegraphics}%
}%
%%% Memoir test: Memoir Manual 21.2 p.367
%% 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 -----------------------------
%% ---------------- Internationalization -----------------------------
% Font setup
% Standardized STIX2 fonts that print well, display on
% e-readers/screens clearly, and have compatible licensing
% requirements
% allows UTF encoding, needed for Icelandic and other accented characters
\RequirePackage{fontspec}
\RequirePackage{unicode-math}% loads STIX and math unicode characters
\setmathfont{STIX Two Math}
\setmainfont{STIX Two Text}[
Extension={.otf},
UprightFont={*-Regular},
BoldFont={*-Bold},
ItalicFont={*-Italic},
BoldItalicFont={*-BoldItalic}]
%% ---------------- Page and Margin Sizes -----------------------------
\setxlvchars{}\setlxvchars{}
\pageaiv{}
\setlrmarginsandblock{25.4mm}{25.4mm}{*}
\setulmarginsandblock{25.4mm}{25.4mm}{*}
\setpagecc{\paperheight}{\paperwidth}{*}%page area on middle center for cutting
\checkandfixthelayout% implement the margins if we weren't using canonic
%% ---------------- Graphics ------------------------------
\RequirePackage{graphicx}
%% GraphicsX converts and includes graphics intelligently which is needed for jpg, png, etc.
%% ---------------- URLs and Paths -----------------------------
\PassOptionsToPackage{obeyspaces,spaces,hyphens,allowmove}{url}
\RequirePackage{xurl}
%% The xurl package typesets \url{} and unix file \path{} nicely.
%% Watch out that you leave a space after a last \ e.g. \path{C:\ }
%% Warning: allowmove makes URLs not-fragile, so they can go in things that move
%% If this breaks you will get very very weird errors
%% ---------------- 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}
%% 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
%% Information about Institution, Author, Degree, and Program
\newcommand{\thesubtitle}{\quad}
\newcommand{\theInstitution}{Reykjav\'{\i}k University}%
\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{\subtitle}[1]{\renewcommand{\thesubtitle}{#1}}
\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{\docdesc@ruthesis}{\theDocumentType{} of \theECTS{} ECTS credits
submitted to the \theSchool{} at \theInstitution{} in partial fulfillment
of the requirements for the degree of \theDegreeLong}
\newcommand{\DocumentDescription}[1]{\renewcommand{\docdesc@ruthesis}{#1}}%nop for now
\newcommand{\pubplaceyear@ruthesis}{Reykjavik, 2025}
\newcommand{\publocation}[1]{\renewcommand{\pubplaceyear@ruthesis}{#1}}
\newcommand{\logo@ruthesis}{graphics/smiley-logo}
\newcommand{\logo}[1]{\renewcommand{\logo@ruthesis}{#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% TITLE PAGE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Memoir titlepage definition and info at p.64
%% \title is ignoring formatting for reasons I don't understand
\renewcommand{\maketitlehooka}{
\begin{center}
\includegraphics[width=0.3\textwidth]{\logo@ruthesis}
\par\end{center}\vspace{0.7cm}
}
%% TODO: investigate why bold isn't working on the title
%\droptitle{}% length moves the title position up and down
\pretitle{\begin{center}\bfseries\Huge}
\posttitle{\par\end{center}\vspace{1.55cm}}
\preauthor{\begin{center}\Large}
\postauthor{\par\end{center}\vfill}
\renewcommand{\maketitlehookc}{\begin{center}\textbf{\Large \theDegreeAbbrv{} \theDocumentType{} in \theProgram}\par\end{center}\vspace{1cm}}
\predate{\begin{center}\large Graduation }
\postdate{\par\end{center}\vspace*{0.4cm}}
\renewcommand{\maketitlehookd}{\begin{center}
\textbf{{\Large \theSchool}}\par\end{center}
}
\aliaspagestyle{title}{empty}
\aliaspagestyle{titlinpage}{empty}
%% ----- Inside Cover is COPYRIGHT page-----------------------------------------------------------------------
\RequirePackage{ccicons}% need for copyright \textcopyright{}
\hyphenation{Non-Com-mercial}
\newcommand{\copyrightpage}[1]{
% actually in books, this is often on the left side
\begin{coverleft}
\begin{vplace}[1.0] % ratio of space above and below
\setlength{\parskip}{\baselineskip}%without indents, we need blank line separators
\raggedright{}
{\Large \thetitle}\\\vspace{\baselineskip}
% Subtitle add later
\textbf{\supervisorheading@ruthesis:} \supervisors@ruthesis\par\\
\textbf{\examinerheading@ruthesis:} \examiners@ruthesis\par\vspace*{1.5cm}
Thesis of \theECTS{} ECTS credits submitted to the \theSchool{} at Reykjavik University
in partial fulfilment of the requirements for the degree of \theDegreeAbbrv{} in \theProgram{}.\par\vspace*{1.5cm}
Copyright \textcopyright{} \the\year{} \theauthor{} \ccbyncnd{}\\
This document is licensed under a Creative Commons Attribution 4.0 (CC BY-NC-SA) (\url{http://creativecommons.org/licenses/by-nc-nd/4.0/}) license.
However, this license does not cover the Reykjavik University logo (word- and figurative mark).
The Reykjavik University logo is a registered trademark and remains the intellectual property of Reykjavik University.
Any reuse, redistribution, or modification of the Reykjavik University logo is strictly prohibited without explicit written permission from Reykjavik University.
You may copy and redistribute the material in any medium or format, provide appropriate credit, link to the license and indicate what changes you made.
You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
You may not use the material for commercial purposes.
If you remix, transform or build upon the material, you may not distribute the modified material.
The images or other third party material in this thesis are included in the book's Creative Commons license, unless indicated otherwise in a credit line to the material.
If material is not included in the book's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
The use of general descriptive names, registered names, trademarks, service marks, etc.
in this publication does not imply, even in the absence of a specific statement that such names are exempt from the relevant protective laws and regulations and therefore free for general use.\par
\pubplaceyear@ruthesis
\end{vplace}
\end{coverleft}
\clearpage
}
% %% names moved to inside cover
% % 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{itemize}[label={}]
% \item \supervisorheading@ruthesis{}:
% \begin{itemize}[label={}]\setlength\itemsep{\baselineskip}
% \supervisors@ruthesis{}
% \end{itemize}
% \end{itemize}
% }\vfill}
%% ---------- Page Styles --------------------------------------------------------------
%% ---------------------------------------------------------------------------------------------
%% Setup the formatting at the beginning of the document (Front material)
%% See Memoir 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
%\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
{ \clearforchapter%
\thispagestyle{cover}%
\disableindents%
\SingleSpacing}%
{%\setlength{\TPMargin}{0mm} %% margins inside the textblock
%% I don't remember why we need to mess with \TPmargin
%% Might be OK to remove --foley
\enableindents{}}%
\newenvironment{coverleft}% material that must be on the even (back) side
{ \cleartoverso%
\thispagestyle{cover}%
\disableindents%
\SingleSpacing}%
{\enableindents{}}%
% \newenvironment{coveranyside}%This is material that can start on even or odd
% { \clearpage%
% \thispagestyle{cover}%
% \disableindents%
% \SingleSpacing}%
% {\enableindents{}}%
%% ----- 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}}
%%% 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}
\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{\frontmatterhead}[1]{{%based upon \chapterhead from memman.pdf p.84
% \clearpage% move to correct page
\disableindents%
\thispagestyle{chapter} % set the page style
\insertchapterspace% space between previous and the title
\chapterheadstart%\beforchapskip space before heading
\printchaptertitle{#1}% title
\addcontentsline{toc}{chapter}{#1}
\afterchaptertitle% \afterchapskip space after title
}}
%%% Section numbering and the Table of Contents
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
\maxsecnumdepth{subsubsection} % default by \mainmatter in preamble
\maxtocdepth{subsubsection} % default by \mainmatter in preamble
%%% 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}
%% Penalties for various text placement issues
%% They can cause strange paragraph spacing on some pages
%% Disabling for now --foley
%\clubpenalty=10000%% orphan lines
%\widowpenalty=10000%% widow lines
%\hfuzz=1pt%% avoid overfilled hboxes
%\vfuzz=5pt%% avoid overfilled vboxes
\raggedbottom{}
%% Vertical justification is the default.
%% This causes problems on some pages with figures or chapter headings
%% Allowing ragged bottoms keeps the spacing consistent between paragraphs
%% Alternatively: \setlength{\parskip}{0pt}
%% 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")
\renewenvironment{abstract}
{\begin{cover}{\centering%
{{\Large \@title}\\}%%
\vspace{\baselineskip}
\theauthor\\%
\vspace{\baselineskip}
\thedate\\%
}%
\enableindents{}
\textbf{Abstract}\par\vspace{1ex}}
{\par\end{cover}\newpage}
%%%%%%%%%% Metadata for pdf file %%%%%%%%%%%%%%%%%%%%%%
\AddToHook{begindocument/before}{%
%% package hyperref needs to be last, so we use a hook
\PassOptionsToPackage{hidelinks}{hyperref}%disable boxes around links
\RequirePackage{hyperref}
\hypersetup{
pdfauthor = {\theauthor{}},
pdftitle = {\thetitle},
%pdfsubject = {Templates},
%pdfkeywords = {\theInstitution{}, Template, Thesis}
}
}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% TeX-engine: luatex
%%% End: