% ------------------------------------------------------------------- % @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}