clone
This commit is contained in:
527
DEIThesis.cls
Normal file
527
DEIThesis.cls
Normal file
@@ -0,0 +1,527 @@
|
||||
% -------------------------------------------------------------------
|
||||
% @LaTeX-class-file{
|
||||
% filename = "DEIThesis.cls",
|
||||
% codetable = "ISO/ASCII",
|
||||
% keywords = "LaTeX, UniPD, Padua, Thesis, DEI",
|
||||
% docstring = "Class for a DEI thesis."
|
||||
% --------------------------------------------------------------------
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesClass{DEIThesis}[DEI Thesis Class]
|
||||
|
||||
|
||||
|
||||
% -- GENERAL SETUP --
|
||||
|
||||
% type
|
||||
\LoadClass[12pt, a4paper, twoside, openright]{book}
|
||||
|
||||
% page geometry
|
||||
\RequirePackage[
|
||||
headheight=2cm,
|
||||
top=3.5cm,
|
||||
bottom=3.5cm,
|
||||
footskip=1.5cm,
|
||||
footnotesep=1cm,
|
||||
twoside,
|
||||
a4paper
|
||||
]{geometry}
|
||||
|
||||
% export in PDF/X, PDF/A, etc...
|
||||
\RequirePackage{etoolbox}
|
||||
\RequirePackage{colorprofiles}
|
||||
\RequirePackage[a-2b,mathxmp]{pdfx}[\today]
|
||||
|
||||
% language, font and encodings
|
||||
\RequirePackage{newpxtext,newpxmath}
|
||||
\RequirePackage[T1]{fontenc}
|
||||
\RequirePackage[english]{babel}
|
||||
|
||||
|
||||
|
||||
% -- USEFUL PACKAGES --
|
||||
|
||||
% spacings (\onehalfsize, \doublesize)
|
||||
\RequirePackage{setspace}
|
||||
|
||||
% indent first line of paragraph
|
||||
\RequirePackage{indentfirst}
|
||||
|
||||
% captions
|
||||
\RequirePackage{caption}
|
||||
\RequirePackage{subcaption}
|
||||
|
||||
% footnotes
|
||||
\RequirePackage{footnote}
|
||||
\RequirePackage[bottom]{footmisc}
|
||||
|
||||
% mathematics
|
||||
\RequirePackage{amsmath}
|
||||
|
||||
% links
|
||||
\RequirePackage{hyperref}
|
||||
\RequirePackage{url}
|
||||
|
||||
% colors
|
||||
\RequirePackage{color}
|
||||
|
||||
% graphics
|
||||
\RequirePackage{graphicx}
|
||||
|
||||
% algoritms
|
||||
\RequirePackage{algorithm}
|
||||
\RequirePackage{algorithmic}
|
||||
|
||||
% code snippets
|
||||
\RequirePackage{listings}
|
||||
|
||||
% plots, drawings etc...
|
||||
\RequirePackage{tikz}
|
||||
\usetikzlibrary{shapes.geometric, arrows.meta}
|
||||
|
||||
% references
|
||||
\RequirePackage[autostyle]{csquotes}
|
||||
\RequirePackage[backend=biber]{biblatex}
|
||||
\addbibresource{references.bib}
|
||||
|
||||
\RequirePackage{tabularx}
|
||||
|
||||
% -- DEFINITIONS --
|
||||
|
||||
% university
|
||||
\def\university#1{\gdef\@university{#1}}
|
||||
|
||||
% master name
|
||||
\def\mastername#1{\gdef\@mastername{#1}}
|
||||
|
||||
% academic Year
|
||||
\def\academicYear#1{\gdef\@academicYear{#1}}
|
||||
|
||||
% student ID
|
||||
\def\studentId#1{\gdef\@studentId{#1}}
|
||||
|
||||
% advisor
|
||||
\def\advisor#1{\gdef\@advisor{#1}}
|
||||
|
||||
% co-advisor (if one)
|
||||
\def\coadvisor#1{\gdef\@coadvisor{#1}}
|
||||
\def\coadvisorsUniversity#1{\gdef\@coadvisorsUniversity{#1}}
|
||||
|
||||
% university of Padova color
|
||||
\definecolor{UniPDColor}{RGB}{155, 0, 20}
|
||||
|
||||
|
||||
% -- LINKS SETUP --
|
||||
|
||||
% set all links to black color
|
||||
\hypersetup{
|
||||
colorlinks,
|
||||
citecolor=black,
|
||||
filecolor=black,
|
||||
linkcolor=black,
|
||||
urlcolor=black
|
||||
}
|
||||
|
||||
\usepackage{enumitem}
|
||||
|
||||
|
||||
% -- ITEMS AND ENUMARATIONS --
|
||||
|
||||
% reduce spacing for items and enumerations
|
||||
% \let\saveditemize=\itemize
|
||||
% \let\savedenditemize=\enditemize
|
||||
% \renewenvironment{itemize}
|
||||
% {\begin{spacing}{0.5}\saveditemize}
|
||||
% {\savedenditemize\end{spacing}}
|
||||
|
||||
% \let\savedenumerate=\enumerate
|
||||
% \let\savedendenumerate=\endenumerate
|
||||
% \renewenvironment{enumerate}
|
||||
% {\begin{spacing}{0.5}\savedenumerate}
|
||||
% {\savedendenumerate\end{spacing}}
|
||||
|
||||
% controllo indentazione enumerazioni
|
||||
\setlist[itemize,1]{leftmargin=1em}
|
||||
\setlist[enumerate,1]{leftmargin=1em}
|
||||
|
||||
% italic for quotes
|
||||
\let\savedquote\quote
|
||||
\let\endsavedquote\endquote
|
||||
\renewenvironment{quote}
|
||||
{\itshape\savedquote}
|
||||
{\endsavedquote}
|
||||
|
||||
|
||||
|
||||
% -- HEADERS AND FOOTERS --
|
||||
|
||||
% custom headers and footers
|
||||
\RequirePackage{fancyhdr}
|
||||
|
||||
% custom title style
|
||||
\RequirePackage{titlesec}
|
||||
|
||||
% remove headers and footers in blank pages
|
||||
\RequirePackage{scrextend}
|
||||
|
||||
% box for titles
|
||||
\RequirePackage{adjustbox}
|
||||
|
||||
% style for chapters
|
||||
\titleformat{\chapter}[display]
|
||||
{\Huge\filleft}
|
||||
{
|
||||
\minsizebox{!}{70pt}{\colorbox{UniPDColor}{\color{white} \thechapter}}
|
||||
}
|
||||
{1.2ex}
|
||||
{}
|
||||
|
||||
% style for sections
|
||||
\titleformat{\section}[hang]
|
||||
{\Large}
|
||||
{
|
||||
\colorbox{UniPDColor}{\color{white} \thesection}
|
||||
}
|
||||
{1ex}
|
||||
{\scshape}
|
||||
|
||||
% style for subsections
|
||||
\titleformat{\subsection}[hang]
|
||||
{\large}
|
||||
{
|
||||
\colorbox{UniPDColor}{\color{white} \thesubsection}
|
||||
}
|
||||
{1ex}
|
||||
{\scshape}
|
||||
|
||||
% style for subsubsections
|
||||
\titleformat{\subsubsection}[hang]
|
||||
{\normalsize}
|
||||
{}
|
||||
{0ex}
|
||||
{\bfseries\scshape}
|
||||
|
||||
% remove line headers
|
||||
\renewcommand{\headrulewidth}{0ex}
|
||||
|
||||
% style for headers and footers
|
||||
\newcommand{\setfancyhf} {
|
||||
\fancyhf{}
|
||||
\fancyhead[RO]{{\footnotesize\leftmark}}
|
||||
\fancyhead[LE]{{\footnotesize\rightmark}}
|
||||
\fancyfoot[RE, LO]{}
|
||||
\fancyfoot[C]{\thepage}
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- FRONTMATTER --
|
||||
|
||||
\renewcommand{\frontmatter} {
|
||||
|
||||
% set roman page numbering
|
||||
\pagenumbering{roman}
|
||||
|
||||
% set page style
|
||||
\pagestyle{fancy}
|
||||
|
||||
% create cover
|
||||
\maketitle
|
||||
|
||||
% reset fancy headers
|
||||
\setfancyhf
|
||||
|
||||
% set head witdth
|
||||
\setlength{\headwidth}{\textwidth}
|
||||
|
||||
% custom titles
|
||||
\renewcommand{\listfigurename}{List of Figures}
|
||||
\renewcommand{\listtablename}{List of Tables}
|
||||
\renewcommand{\listalgorithmname}{List of Algorithms}
|
||||
\renewcommand{\lstlistingname}{Code} % Caption name of code snippets
|
||||
\renewcommand{\lstlistlistingname}{List of Code Snippets}
|
||||
\def\listacronymname{List of Acronyms}
|
||||
|
||||
\def\abstractname{Abstract}
|
||||
\def\abstractnameit{Sommario}
|
||||
|
||||
\renewcommand{\bibname}{References}
|
||||
|
||||
\def\acknowledgmentsname{Acknowledgments}
|
||||
|
||||
% insert dedication page
|
||||
\dedicationpage
|
||||
|
||||
% insert abstract
|
||||
\abstractpage
|
||||
|
||||
% insert table of contents
|
||||
\tableofcontents
|
||||
\cleardoublepage
|
||||
|
||||
% insert list of figures
|
||||
\phantomsection
|
||||
\setcounter{page}{11}
|
||||
\addcontentsline{toc}{chapter}{\listfigurename}
|
||||
\listoffigures
|
||||
\cleardoublepage
|
||||
|
||||
% insert list of tables
|
||||
\phantomsection
|
||||
\setcounter{page}{13}
|
||||
\addcontentsline{toc}{chapter}{\listtablename}
|
||||
\listoftables
|
||||
\cleardoublepage
|
||||
|
||||
% insert list of algorithms
|
||||
% \phantomsection
|
||||
% \setcounter{page}{15}
|
||||
% \addcontentsline{toc}{chapter}{\listalgorithmname}
|
||||
% \listofalgorithms
|
||||
|
||||
% insert list of code snippets
|
||||
\phantomsection
|
||||
\setcounter{page}{17}
|
||||
\addcontentsline{toc}{chapter}{\lstlistlistingname}
|
||||
\lstlistoflistings
|
||||
\cleardoublepage
|
||||
|
||||
% insert list of abbreviations/acronyms
|
||||
\setcounter{page}{19}
|
||||
\acronyms
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- TITLE/COVER --
|
||||
|
||||
% insert watermark
|
||||
\RequirePackage{watermark}
|
||||
|
||||
\renewcommand{\maketitle} {
|
||||
%set custom geometry
|
||||
\newgeometry{
|
||||
top=1.5cm,
|
||||
bottom=2cm,
|
||||
inner=2cm,
|
||||
outer=2cm,
|
||||
headheight=3.5cm,
|
||||
includehead,
|
||||
includefoot,
|
||||
}
|
||||
|
||||
% set head witdth
|
||||
\setlength{\headwidth}{\textwidth}
|
||||
|
||||
% set watermark
|
||||
\thiswatermark{
|
||||
\centering
|
||||
\put(-380,-700) {
|
||||
\includegraphics[width=1.4\linewidth]{res/unipdbg}
|
||||
}
|
||||
}
|
||||
|
||||
% set academic year in footer
|
||||
\cfoot{\normalsize\textsc{Academic Year \\ \@academicYear}}
|
||||
|
||||
% set brands in header
|
||||
\lhead{
|
||||
\includegraphics[height=3cm]{res/ltunipd}
|
||||
}
|
||||
\rhead{
|
||||
\includegraphics[height=3cm]{res/dei}
|
||||
}
|
||||
|
||||
% content
|
||||
\begin{center}
|
||||
|
||||
% master name
|
||||
\null \vspace{\stretch{2}}
|
||||
\normalsize\textsc{
|
||||
Master Thesis in \@mastername
|
||||
} \\
|
||||
|
||||
% title
|
||||
\vspace{3ex}
|
||||
\LARGE\textbf{\@title} \\
|
||||
\vspace{\stretch{3}}
|
||||
|
||||
% authors, advisors etc...
|
||||
\doublespacing
|
||||
|
||||
\begin{flushleft}
|
||||
\small
|
||||
\textsc{Master Candidate} \hfill \textsc{Supervisor} \\
|
||||
\large{\textbf{\@author}} \hfill \large{\textbf{\@advisor}} \\
|
||||
\small
|
||||
\textbf{Student ID \@studentId} \hfill \textbf{\@university} \\
|
||||
% insert co-advisor if not empty
|
||||
\ifx\@coadvisor\empty \else
|
||||
\hfill \\
|
||||
\hfill \textsc{Co-supervisor} \\
|
||||
\hfill \large{\textbf{\@coadvisor}} \\
|
||||
\small
|
||||
\hfill \textbf{\@coadvisorsUniversity} \\
|
||||
\fi
|
||||
\end{flushleft}
|
||||
|
||||
\vspace{\stretch{1}} \null
|
||||
\end{center}
|
||||
|
||||
% restore defaults
|
||||
\cleardoublepage
|
||||
\restoregeometry
|
||||
\onehalfspacing
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- DEDICATION --
|
||||
|
||||
\newcommand{\dedicationpage} {
|
||||
% set empty style for this page (no headers and footers)
|
||||
\thispagestyle{empty}
|
||||
|
||||
\phantomsection
|
||||
|
||||
\null \vspace{\stretch{1}}
|
||||
|
||||
\begin{flushright}
|
||||
\input{frontmatter/dedication}
|
||||
\end{flushright}
|
||||
|
||||
\vspace{\stretch{4}} \null
|
||||
|
||||
% insert pages for alignment
|
||||
\cleardoublepage
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- ACRONYMS/ABBREVIATIONS --
|
||||
|
||||
\RequirePackage{acronym}
|
||||
|
||||
% custom style for acronyms
|
||||
\newcommand{\acronyms}{
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{chapter}{\listacronymname}
|
||||
\chapter*{\listacronymname}
|
||||
\input{frontmatter/glossary}
|
||||
\cleardoublepage
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- ABSTRACT --
|
||||
|
||||
\newenvironment{abstract}[1][en] {
|
||||
% get argument (en/it)
|
||||
\def\it{it}
|
||||
\def\arg{#1}
|
||||
|
||||
\null \vfill
|
||||
\begin{center}
|
||||
\bfseries
|
||||
|
||||
% set title in english or italian
|
||||
\ifx\arg\it
|
||||
\abstractnameit
|
||||
\else
|
||||
\abstractname
|
||||
\fi
|
||||
\end{center}
|
||||
} {
|
||||
\vfill \null
|
||||
}
|
||||
|
||||
\newcommand{\abstractpage} {
|
||||
% set empty style for this page (no headers and footers)
|
||||
\thispagestyle{empty}
|
||||
|
||||
% english version
|
||||
\input{frontmatter/abstract}
|
||||
|
||||
% italian version
|
||||
\cleardoublepage
|
||||
\thispagestyle{empty}
|
||||
\input{frontmatter/sommario}
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- MAIN MATTER --
|
||||
|
||||
\renewcommand{\mainmatter} {
|
||||
\cleardoublepage
|
||||
|
||||
% reset page counter
|
||||
\setcounter{page}{1}
|
||||
|
||||
% set arabic page numbering
|
||||
\pagenumbering{arabic}
|
||||
|
||||
% reset chapter counter
|
||||
\setcounter{chapter}{0}
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- BACKMATTER --
|
||||
|
||||
\renewcommand{\backmatter}{
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
|
||||
% add references
|
||||
\addcontentsline{toc}{chapter}{\bibname}
|
||||
\printbibliography
|
||||
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
|
||||
% add acknowledgments
|
||||
\addcontentsline{toc}{chapter}{\acknowledgmentsname}
|
||||
\acknowledgments
|
||||
}
|
||||
|
||||
|
||||
|
||||
% -- ACKNOWLEDGMENTS --
|
||||
\newcommand{\acknowledgments} {
|
||||
\phantomsection
|
||||
\chapter*{\acknowledgmentsname}
|
||||
\input{frontmatter/thanks}
|
||||
}
|
||||
|
||||
|
||||
% -- CODE SNIPPETS --
|
||||
|
||||
% Colors for code snippets highlights
|
||||
\definecolor{commentsColor}{RGB}{36, 161, 156}
|
||||
\definecolor{numColor}{RGB}{71, 96, 114}
|
||||
\definecolor{stringColor}{RGB}{205, 63, 62}
|
||||
\definecolor{kwColor}{RGB}{248, 6, 204}
|
||||
\definecolor{bgCodeColor}{RGB}{255, 249, 249}
|
||||
|
||||
% Style of code snippets
|
||||
\lstdefinestyle{codeSnippet} {
|
||||
backgroundcolor=\color{bgCodeColor},
|
||||
commentstyle=\color{commentsColor},
|
||||
keywordstyle=\color{kwColor},
|
||||
numberstyle=\tiny\color{numColor},
|
||||
stringstyle=\color{stringColor},
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
breakatwhitespace=false,
|
||||
breaklines=true,
|
||||
captionpos=b,
|
||||
keepspaces=true,
|
||||
numbers=left,
|
||||
numbersep=5pt,
|
||||
showspaces=false,
|
||||
showstringspaces=false,
|
||||
showtabs=false,
|
||||
tabsize=2
|
||||
}
|
||||
|
||||
\lstset{style=codeSnippet}
|
||||
Reference in New Issue
Block a user