TUHH bachelor's and master's thesis (Institute for Data Engineering)
A KOMA-Script (scrbook) thesis class from TUHH's Institute for Data Engineering, with a proposal option: title page with TUHH and institute logos, supervisors and student ID, a progress checklist, dedication, abstract, preface and acknowledgement, a sample chapter in placeholder text, biblatex references, lists of figures and tables and the declaration.
- Category
- Thesis
- Document class
thesis(thesis.cls) — ships with TeX Live- Workflow
- Thesis / dissertation — submissions and revision rounds
- Author
- Hamburg University of Technology, Institute for Data Engineering
- Source
- Hamburg University of Technology, Institute for Data Engineering
- Licence
- No licence is stated in the files. Hamburg University of Technology, Institute for Data Engineering distributes them for authors preparing a submission.
These are the publisher’s own files. This project starts from Hamburg University of Technology, Institute for Data Engineering’s package for this publication — their manuscript, their thesis.cls, their bibliography style — so what compiles here is what they would have given you.
Hamburg University of Technology, Institute for Data Engineering serves this exact file to Hamburg University of Technology and 1 other title. Check Hamburg University of Technology, Institute for Data Engineering’s author pages for the current instructions.
Where this differs from the publisher’s download.
- Note: Written for theses at the Institute for Data Engineering; check other institutes' requirements.
What you get
thesis/ide-logo.pdf· 9 KBthesis/references.bib· 0 Bthesis/thesis.cls· 13 KBthesis/thesis.tex— the file that is compiled · 1 KBthesis/tuhh-logo.pdf· 1 KB
These become your files. Editing them afterwards changes your project and nothing else — a project owns its files from the moment it is made.
Source
thesis/ide-logo.pdf — binary, 9 KB
thesis/references.bib · 0 B
thesis/thesis.cls · 13 KB
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{thesis}[2022/12/07 Dominik's thesis class]
\newif\ifproposal\proposalfalse
\DeclareOption{proposal}{%
\proposaltrue%
}
\ProcessOptions\relax
\ifproposal
\PassOptionsToClass{openany,chapterprefix=false}{scrbook}%
\else
\PassOptionsToClass{openright,chapterprefix=true}{scrbook}%
\fi
\LoadClass[numbers=noenddot,a4paper,fontsize=11pt,USenglish,headsepline=0.5pt:130mm]{scrbook}
\ifproposal
\def\dedication#1{}
\def\frontmatter{}
\def\mainmatter{}
\def\backmatter{}
\let\orig@subject\subject
\def\subject#1{\orig@subject{#1 Proposal}}
\def\tableofcontents{}
\def\listoffigures{}
\def\listoftables{}
\fi
\PassOptionsToPackage{a4paper, right=40mm, left=20mm, top=40mm, bottom=40mm, headsep=10mm, footskip=20mm, headheight=10mm, nomarginpar, bindingoffset=20mm}{geometry}
\RequirePackage{geometry}
\ifproposal
\else
\setlength{\parskip}{0.25\baselineskip}
\fi
\setlength{\parindent}{1em}
\emergencystretch=1.4em
\setcounter{tocdepth}{1}
\addtokomafont{disposition}{\rmfamily}
\addtokomafont{dedication}{\itshape}
\PassOptionsToPackage{draft=false,headsepline=0.5pt:130mm}{scrlayer-scrpage}
\RequirePackage{scrlayer-scrpage}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage{xpatch}
\RequirePackage{palatino}
\RequirePackage{microtype}
\RequirePackage[USenglish]{babel}
\RequirePackage{csquotes}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{graphicx}
\RequirePackage[rgb,dvipsnames,svgnames,table]{xcolor}
\RequirePackage{booktabs}
\RequirePackage{multirow}
\RequirePackage{calc}
\RequirePackage{forloop}
\RequirePackage{tikz}
\usetikzlibrary{calc}
\definecolor{tuhh}{HTML}{00C1D4}%
\ifproposal
\else
\extratitle{%
\def\@dcm@subject@cmp{Bachelor's Thesis}%
\ifx\@subject\@dcm@subject@cmp%
\else%
\begin{center}%
\@title%
\end{center}%
\fi%
}
\fi
\lowertitleback{
\begin{minipage}{12cm}
\begin{flushleft}
\noindent \textbf{Hamburg University of Technology}\newline
Institute for Data Engineering
\medskip
Am Schwarzenberg-Campus 1\newline
21073 Hamburg\newline
Germany
\bigskip
\noindent\textbf{\@author}\ifx\@studentid\empty\newline\else{\small\newline\@studentid\par}\fi
\textit{\@title}\newline
\@date{}\ifproposal\else\long\def\@dcm@commit@cmp{unknown}\ifx\commit\@dcm@commit@cmp\else~$\cdot $ commit \StrLeft{\commit}{7}\ on branch \branch\fi\fi
\end{flushleft}
\end{minipage}
}
\ifproposal
\else
\usepackage{xstring}
\IfFileExists{../.git/HEAD}{%
\usepackage{catchfile}%
\CatchFileDef{\headfull}{../.git/HEAD}{}%
\StrGobbleRight{\headfull}{1}[\head]%
\StrBehind[2]{\head}{/}[\branch]%
\IfFileExists{../.git/refs/heads/\branch}{%
\CatchFileDef{\commit}{../.git/refs/heads/\branch}{}}{%
\newcommand{\commit}{unknown}}%
}{%
\newcommand{\branch}{unknown}%
\newcommand{\commit}{unknown}%
}
\fi
% Define location field
\def\location#1{\gdef\@location{#1}}
\def\@location{}
% Define studentid field
\def\studentid#1{\gdef\@studentid{#1}}
\def\@studentid{}
% Define supervisors field
\ifproposal
\long\def\@dcm@s#1{\@ifnextchar\and{}{\@ifnextchar\@dcm@end{\@gobble}{\@dcm@s}}}
\long\def\supervisors#1{%
\publishers{\large\raggedright submitted to the Institute for Data Engineering\newline at the Hamburg University of Technology.
\vspace{2cm}
\begin{minipage}[t]{6cm}
\@location, \@date
\end{minipage}\hfill
\begin{minipage}[t]{6cm}\raggedleft
\rule{6cm}{0.5pt} \\
\@author \\[1cm]
\rule{6cm}{0.5pt} \\
\begingroup
\let\@dcm@nl\\
\def\and{\@dcm@nl[1cm]\rule{6cm}{0.5pt}\@dcm@nl}
\def\@dcm@end{}
\long\def\\{\@dcm@s}
#1\@dcm@end
\endgroup
\end{minipage}%
}%
}%
\else
\def\supervisors#1{%
\publishers{\large\raggedright submitted to the Institute for Data Engineering\newline at the Hamburg University of Technology.
\vspace{2cm}
\raggedleft
\begin{minipage}[t]{6cm}
Supervisors:
\end{minipage}\hfill
\begin{minipage}[t]{6cm}\raggedleft
\def\and{\\[1cm]}
#1
\end{minipage}%
}%
}%
\fi
\titlehead{
\begin{tikzpicture}[overlay,remember picture]
\draw [line width=1pt, color=tuhh]
($ (current page.north west) + (2cm,-2cm) $)
rectangle
($ (current page.south east) + (-2cm,2cm) $);
\draw [line width=1pt, color=tuhh]
($ (current page.south west) + (2cm,4cm) $)
--
($ (current page.south east) + (-2cm,4cm) $);
\node[inner sep=0pt,anchor=west] (logo-left) at ($(current page.south west) + (2.5cm,3cm)$)
{\IfFileExists{tuhh-logo.pdf}{\includegraphics[height=1cm]{tuhh-logo}}{}};
\node[inner sep=0pt,anchor=east] (logo-right) at ($(current page.south east) + (-2.5cm,3cm)$)
{\IfFileExists{ide-logo.pdf}{\includegraphics[height=1cm]{ide-logo}}{}};
\node[inner sep=0pt,anchor=center] (bottomtext)
at ($(current page.south) + (0cm,2cm)$)
{\minipage{7cm}\endminipage};
\end{tikzpicture}%
}
% Chapter Headlines
\ifproposal
\RedeclareSectionCommand[style=section]{chapter}
\else
\renewcommand*{\chapterformat}{%
\pagestyle{scrheadings}%
\color{gray} \raggedleft \bfseries\fontsize{120}{0}\selectfont\thechapter \vskip 1cm
}
\renewcommand*{\chapterheadstartvskip}{\vskip 2cm}
\renewcommand*{\chapterheadendvskip}{\vskip 1cm}
\fi
\renewcommand*{\chaptermarkformat}{%
\thechapter\autodot\enskip%
}
% Abstract
\ifproposal
\RequirePackage{comment}
\excludecomment{preface}
\excludecomment{abstract}
\else
\newenvironment{preface}[1]{\markboth{#1}{}%
\chapter*{#1}%
\addcontentsline{toc}{chapter}{#1}}
{\cleardoublepage}
\newenvironment{abstract}{\preface{Abstract}}{\endpreface}
\fi
% Biblatex
\PassOptionsToPackage{style=alphabetic,
maxbibnames=99,
maxcitenames=2,
mincitenames=1,
maxalphanames=4,
minalphanames=3,
date=year,
sorting=nyt,
bibencoding=auto,
backend=biber}{biblatex}
\RequirePackage{biblatex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
%% Fix up bibliography
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
% clear quotes around the title in \citetitle{}, but use italics
\DeclareFieldFormat*{citetitle}{\itshape #1}
\DeclareFieldFormat*{title}{\itshape #1\isdot}
\renewcommand*{\intitlepunct}{\space}
%%%%%
\DeclareFieldFormat[inproceedings]{volume}{Volume #1}
\DeclareFieldFormat*{pages}{pages #1}
%\DeclareFieldFormat*{volume}{Volume #1}
%\DeclareFieldFormat*{number}{\mkbibparens{#1}}
%
%\renewbibmacro*{volume+number+eid}{%
% \setunit{\addcomma\space}
% \printfield{volume}%
% \setunit*{\addnbspace}% NEW (optional); there's also \addnbthinspace
% \printfield{number}%
%}
%\renewbibmacro*{issue+date}{%
% \setunit{\addcomma\space}
% %\printtext[parens]{%
% \iffieldundef{issue}
% {\usebibmacro{date}}
% {\printfield{issue}%
% \setunit*{\addspace}%
% \usebibmacro{date}}%}%
% \newunit}
%%%%%
\AtEveryBibitem{% Clean up the bibtex rather than editing it
% Make a volume number actually be the series number for inproceedings
\ifentrytype{inproceedings}{%
\iffieldundef{series}{}{%
\savefield{volume}{\theoriginalvolume}%
\restorefield{number}{\theoriginalvolume}%
\clearfield{volume}%
}%
}{}%
% and same for book
\ifentrytype{book}{%
\iffieldundef{series}{}{%
\savefield{volume}{\theoriginalvolume}%
\restorefield{number}{\theoriginalvolume}%
\clearfield{volume}%
}%
}{}%
% And remove address, location, and editor
\clearlist{address}%
%\clearfield{date}%
%\clearfield{eprint}%
%\clearfield{isbn}%
%\clearfield{issn}%
\clearlist{location}%
%\clearfield{month}%
%\clearfield{series}%
\ifentrytype{book}{}{% Remove publisher and editor except for books
%\clearlist{publisher}%
\clearname{editor}%
}%
}
\AtEveryCitekey{\UseBibitemHook}
%%%%%
\renewcommand*{\multicitedelim}{\addcomma\space}
\renewcommand{\labelnamepunct}{\addcolon\space}
\renewbibmacro*{issue+date}{%
\setunit{\addcomma\space}
%\printtext[parens]{%
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%}%
\newunit}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\addcomma\space\usebibmacro{date}%
\newunit}
\DeclareFieldFormat*{number}{\mkbibparens{#1}}
\DeclareFieldFormat[inproceedings]{number}{\addcomma\space volume #1\addcomma}
%\DeclareFieldFormat[inproceedings]{number}{\mkbibparens{#1}\addcomma}
\DeclareFieldFormat[incollection]{volume}{\addcomma\space volume #1\addcomma}
\DeclareFieldFormat[article]{volume}{volume #1}
\renewbibmacro*{volume+number+eid}{%
\setunit{\addcomma\space}
\printfield{volume}%
\setunit*{\addnbthinspace}% NEW (optional); there's also \addnbthinspace
\printfield{number}%
}
\xpatchbibdriver{incollection}{%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
}{%
\usebibmacro{maintitle+booktitle}%
\iffieldundef{volume}{
\newunit\newblock
}{
\addcomma\space\newblock
}
}{}{}
%use comma before edition for books
\xpatchbibdriver{book}{%
\newunit\newblock
\printfield{edition}%
}
{%
\setunit{\addcomma\space}\newblock
\printfield{edition}%
}{}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifproposal
\def\insertdeclaration{}
\else
\def\insertdeclaration{
\chapter*{Eidesstattliche Erklärung}
\thispagestyle{empty}
Hiermit versichere ich an Eides statt, dass die vorliegende Arbeit selbstständig verfasst wurde und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt wurden.
\vspace{1.5cm}
\noindent \@location, am \@date \hfill \@author
}
\fi
\newcounter{@checklistcounter}
\def\@checklistTODO#1{
\expandafter\gdef\csname @checklistentry\the@checklistcounter\endcsname{#1}
\stepcounter{@checklistcounter}
}
\def\@checklistDONE#1{\expandafter\gdef\csname @checklistdone\the@checklistcounter\endcsname{}
\@checklistTODO{#1}
}
\newenvironment{checklist}{\let\TODO\@checklistTODO\let\DONE\@checklistDONE}{}
\def\@checklistline#1#2{
\expandafter\gdef\csname @checklistdetail#1\endcsname{#2}
}
\RequirePackage{afterpage}
\uppertitleback{
\afterpage{
\thispagestyle{empty}
\ifnum\the\value{@checklistcounter}>0
\section*{Checklist}
\begin{center}\begin{tabular}{p{1cm}p{11cm}}
\toprule
\makebox[0pt][l]{\textbf{Status}} & \textbf{Task} \\
\midrule
\newcounter{@dcmCLR}
\forloop{@dcmCLR}{0}{\value{@dcmCLR} < \value{@checklistcounter}}{
\ifcsname @checklistdone\the@dcmCLR\endcsname
\makebox[0pt][l]{$\square$}\raisebox{.15ex}{\hspace{0.1em}$\checkmark$}
\else
$\Box$
\fi & \hspace{-0.75cm}\makebox[0.5cm][r]{\the\numexpr\the\value{@dcmCLR}+1\relax}\hspace{0.25cm}\textbf{\csname @checklistentry\the@dcmCLR\endcsname}
\expandafter\ifcsname @checklistdetail\csname @checklistentry\the@dcmCLR\endcsname\endcsname\newline{\small \csname @checklistdetail\csname @checklistentry\the@dcmCLR\endcsname\endcsname}\fi\\\ifnum\value{@dcmCLR}=\the\numexpr\the\value{@checklistcounter} - 1\relax \bottomrule \fi
}
\end{tabular}
Please delete this checklist for the final version of your thesis.
\end{center}
\cleardoublepage
\addtocounter{page}{-2}
\fi
}
}
\@checklistline{Inquire Availability}{Request whether supervision is possible and meet your supervisor to discuss possible topics.}
\@checklistline{Write an Exposé}{Write a 5- to 10-page document using this template to describe your planned work. Motivate the problem, give an overview of relevant related work, describe your planned approach, and give an estimation of your timeline. Propose a title for your thesis.\newline
Your supervisor can provide you with an example if needed.
}
\@checklistline{Register Thesis}{Register your thesis via TUNE, fill out the form and send it to the Examination Office. Your supervisor will fill in the title and the deadline for your thesis after your supervisor receives the form from the Examination Office.
Research projects are \emph{not} registered with the Examination Office but with the Institute for Data Engineering directly.
}
\@checklistline{Work on your Thesis}{For a Bachelor's thesis you have nine weeks of working time. This can be extended up to six months if you have to take compulsory courses in parallel. The duration of a Master's thesis or research project is six months. }
\@checklistline{Print your Thesis}{For Bachelor's and Master's theses: Print two copies of your thesis and bind them. Make sure to include a digital version of your thesis and any implemented software on a suitable media. Sign the statement on the last page of your thesis. Send the PDF of your thesis to your supervisor.\newline
For a research project: Send the PDF to your supervisor. No printout is necessary.
}
\@checklistline{Submit your Thesis}{Submit your thesis to the Examination Office.}
\@checklistline{Plan your Defense}{Make an appointment for your defense with your supervisor.}
\@checklistline{Present your Thesis}{Give a 25-minute talk about your thesis. The talk will be open to all members of the university and should be targeted at the members of the Institute for Data Engineering.}
\@checklistline{Receive your Grade}{You will receive your grade after your defense. The grade will be reported to the Examination Office by the Institute for Data Engineering.}
thesis/thesis.tex — the file that is compiled · 1 KB
%\documentclass[proposal]{thesis} % use for a thesis proposal
\documentclass{thesis}
\usepackage{lipsum}
\subject{Bachelor's Thesis}
\title{Your paper}
\subtitle{Subtitle}
\author{Author}
\studentid{12345}
\date{Date}
\location{Hamburg}
\supervisors{
Supervisor 1\\ Institute for Data Engineering\\ TU Hamburg
\and
Supervisor 2\\ Institute for Data Engineering\\ TU Hamburg
}
% remove the dedication of change it to something meaningful
\dedication{to the reader}
\addbibresource{references.bib}
% remove the checklist before printing
\begin{checklist}
\DONE{Inquire Availability}
\TODO{Write an Exposé}
\TODO{Register Thesis}
\TODO{Work on your Thesis}
\TODO{Print your Thesis}
\TODO{Submit your Thesis}
\TODO{Plan your Defense}
\TODO{Present your Thesis}
\TODO{Receive your Grade}
\end{checklist}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\begin{abstract}
\lipsum[1-2]
\end{abstract}
\begin{preface}{Preface}
\lipsum[3-5]
\end{preface}
\begin{preface}{Acknowledgement}
\lipsum[6]
\end{preface}
\mainmatter
\chapter{Introduction}
\lipsum[7-20]
\backmatter
\printbibliography
\listoffigures
\listoftables
\insertdeclaration
\end{document}
thesis/tuhh-logo.pdf — binary, 1 KB
The first page, as this template compiles today. Click it to enlarge, and again to shrink. Open the file ↗