\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{UiO_profile/UiO_profile}[2023/01/01 Package that tries to follow the UiO profile]

% Required packages
\RequirePackage[T1]{fontenc}
\RequirePackage{xcolor}

% Options
\DeclareOption{binding}{\def \uiop@bind {24pt}}
\DeclareOption{font=cmr}{\def \uiop@font {\RequirePackage{lmodern}
    \RequirePackage[scaled]{helvet}}}
\DeclareOption{font=garamond}{\def \uiop@font {\RequirePackage[garamond]{mathdesign}
    \RequirePackage[scaled]{helvet}}}
\DeclareOption{font=times}{\RequirePackage{txfonts}}

\def \uiop@bind {0pt}
\def \uiop@base {report}

% UiO Brand colors
% Blue
\definecolor{UiOBlue}{RGB}{67, 101, 226}
\definecolor{UiODarkBlue}{RGB}{124, 155, 206}
\definecolor{UiOLightBlue}{RGB}{223, 231, 243}
% Red
\definecolor{UiORed}{RGB}{182, 0, 0}
\definecolor{UiODarkRed}{RGB}{251, 102, 102}
\definecolor{UiOLightRed}{RGB}{253, 224, 225}
% Green
\definecolor{UiOGreen}{RGB}{182, 0, 0}
\definecolor{UiODarkGreen}{RGB}{116, 198, 165}
\definecolor{UiOLightGreen}{RGB}{197, 228, 207}

\definecolor{UiOFrontpageBackground}{RGB}{255, 255, 255}
\definecolor{UiOFrontpagePrimary}{RGB}{220, 221, 223}
\DeclareOption{red}{
  \colorlet{UiOFrontpagePrimary}{UiODarkRed}
  \colorlet{UiOFrontpageBackground}{UiOLightRed}
}
\DeclareOption{blue}{
  \colorlet{UiOFrontpagePrimary}{UiODarkBlue}
  \colorlet{UiOFrontpageBackground}{UiOLightBlue}
}
\DeclareOption{green}{
  \colorlet{UiOFrontpagePrimary}{UiODarkGreen}
  \colorlet{UiOFrontpageBackground}{UiOLightGreen}
}


\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\uiop@base}}

\ExecuteOptions{font=cmr}

\ProcessOptions\relax

\LoadClass[a4paper,11pt,twoside,openright]{report}

% Margins
\RequirePackage[vmargin=3cm,bindingoffset=\uiop@bind]{geometry}

% Adjustements
\pretolerance = 3000
\tolerance = 6000   \hbadness = \tolerance
\setlength{\parskip}{0cm plus 1mm}

% Font
\uiop@font
\renewcommand*\familydefault{\sfdefault} 

% Other required packages for frontpage and stuff
\RequirePackage{titling}

%% Chapter and section headers:
%% (mainly to use \sf for these):
\RequirePackage{titlesec}
\titleformat{\part}[display]
  {\centering\sf\bfseries\Huge}{%
    \partname~\thepart}{15pt}{\Huge\sf\bfseries}
\titleformat{\chapter}[display]
  {\sf\huge\bfseries}{\chaptertitlename\ \thechapter}{15pt}{\Huge\sf\bfseries}
\titlespacing*{\chapter} {0pt}{50pt}{40pt}
\titleformat{\section}
  {\sf\Large\bfseries}{\thesection}{1em}{}
\titlespacing*{\section} {0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\titleformat{\subsection}
  {\sf\large\bfseries}{\thesubsection}{1em}{}
\titlespacing*{\subsection} {0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titleformat{\subsubsection}
  {\sf\normalsize\bfseries}{\thesubsubsection}{1em}{}
\titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
\titleformat{\paragraph}[runin]
  {\sf\normalsize\bfseries}{\theparagraph}{1em}{}
\titlespacing*{\paragraph} {0pt}{3.25ex plus 1ex minus .2ex}{1em}
\titleformat{\subparagraph}[runin]
  {\sf\normalsize\bfseries}{\thesubparagraph}{1em}{}
\titlespacing*{\subparagraph} {\parindent}{3.25ex plus 1ex minus .2ex}{1em}

%% Redefine the table of contents and lists of figures and tables:
\RequirePackage{titletoc}
\contentsmargin{0.9cm}
\titlecontents{part}[0.0em]{\addvspace{2.25em plus 1pt}\large\sf\bfseries}{}{}
  {\hfill\contentspage}
\titlecontents{chapter}[2.5em]{\sf}{\contentslabel{2.5em}}{\hspace*{-2.5em}}
  {\titlerule*[1pc]{.}\contentspage}
\titlecontents{section}[5.5em]{\sf}{\contentslabel{3.0em}}{\hspace*{-3.0em}}
  {\titlerule*[1pc]{.}\contentspage}
\titlecontents{subsection}[9.0em]{\sf}{\contentslabel{3.5em}}{\hspace*{-3.5em}}
  {\titlerule*[1pc]{.}\contentspage}
\titlecontents{subsubsection}[13.0em]{\sf}{\contentslabel{4.0em}}{\hspace*{-4.0em}}
  {\titlerule*[1pc]{.}\contentspage}
\titlecontents{figure}[3.0em]{\sf}{\contentslabel{3.0em}}{\hspace*{-3.0em}}
  {\titlerule*[1pc]{.}\contentspage}
\titlecontents{table}[3.0em]{\sf}{\contentslabel{3.0em}}{\hspace*{-3.0em}}
  {\titlerule*[1pc]{.}\contentspage}

%% Redefine \begin{abstract}...\end{abstract} and
%% define \begin{xabstract}[heading] ... \end{xabstract}
% First, we need a modified quotation environment
% with no indentation of the first line:
\newenvironment{uiom@noindent@quotation}
  {\list{}{%
     \listparindent = 1.5em\relax
     \rightmargin = \leftmargin
     \parsep \z@ \@plus\p@}%
     \item\relax}
  {\endlist}
% Then, we need an environment for formatting the abstract:
\newenvironment{uiom@abstract}[1][\abstractname]
  {\begin{center}\small\textsf{\textbf{#1}}\end{center}\uiom@noindent@quotation}
  {\enduiom@noindent@quotation}             
\renewenvironment{abstract}[1][\abstractname]
  {\cleardoublepage \pagestyle{empty}\vspace*{5\baselineskip}
    \uiom@abstract[#1]}
  {\enduiom@abstract}
% We also define an environment for a second abstract:
\newenvironment{xabstract}[1][\abstractname]
  {\par\vspace{3\baselineskip}\uiom@abstract[#1]}
  {\enduiom@abstract}


%% Define \begin{preface}
\newenvironment{preface}{%
  \chapter*{\prefacename}
  \markboth{\prefacename}{}
  }
  {}

%% Headers and footers:
\RequirePackage{fancyhdr}
\fancyhead{}
\setlength{\headheight}{15pt}
\fancyhead[LE]{\textsf{\small \nouppercase{\leftmark}}}
\fancyhead[RO]{\textsf{\small \nouppercase{\rightmark}}}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot{}
\fancyfoot[LE,RO]{\textsf{\thepage}}
\renewcommand{\footrulewidth}{0pt}
\pagestyle{fancy}
\fancypagestyle{plain}{\fancyhead{}}

%% Figurer og tabeller
\RequirePackage[labelfont=sf,font=small]{caption}

%% Document parts:
\newcommand{\frontmatter}{\cleardoublepage \pagenumbering{roman}}
\newcommand{\mainmatter}{\cleardoublepage \pagenumbering{arabic}}
\newcommand{\backmatter}{\cleardoublepage}

\providecommand{\preface}{\chapter*{}\markboth{}{}}
\providecommand{\endpreface}{}

\endinput

