added thesis structure
Some checks are pending
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.10) (push) Waiting to run
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, 1.6) (push) Waiting to run
CI / Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} (x64, ubuntu-latest, pre) (push) Waiting to run

This commit is contained in:
Daniel 2025-01-04 10:38:27 +01:00
parent 8d129dbfcc
commit 9702fe2343
30 changed files with 3101 additions and 0 deletions

303
.gitignore vendored
View File

@ -525,3 +525,306 @@ fabric.properties
*.cubin
*.fatbin
# ---> LaTeX
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bbl-SAVE-ERROR
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*.rubbercache
rubber.cache
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplot
*.gnuplot
*.table
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.glog
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hypdoc
*.hd
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# newpax
*.newpax
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# svg
svg-inkscape/
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# titletoc
*.ptc
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# xwatermark package
*.xwm

View File

@ -0,0 +1,2 @@
CUDA
GPGPU

View File

@ -0,0 +1,5 @@
\chapter{Technical Details}
\label{app:TechnicalDetails}

View File

@ -0,0 +1,31 @@
\chapter{Supplementary Materials}
\label{app:materials}
List of supplementary data submitted to the degree-granting institution for archival storage
(in ZIP format).
% Use this as an example only, adapt the structure to your requirements!
\section{PDF Files}
\begin{FileList}{/}
\fitem{thesis.pdf} Master/Bachelor thesis (complete document)
\end{FileList}
\section{Media Files}
\begin{FileList}{/media}
\fitem{*.ai, *.pdf} Adobe Illustrator files
\fitem{*.jpg, *.png} raster images
\fitem{*.mp3} audio files
\fitem{*.mp4} video files
\end{FileList}
\section{Online Sources (PDF Captures)}
\begin{FileList}{/online-sources}
\fitem{Reliquienschrein-Wikipedia.pdf} {\backtrackerfalse\parencite{WikiReliquienschrein2023}}
\end{FileList}

View File

@ -0,0 +1,7 @@
\chapter{Questionnaire}
\label{app:Questionnaire}

View File

@ -0,0 +1,3 @@
\chapter{\latex Source Code}
\label{app:SourceCode}

15
thesis/back/printbox.tex Normal file
View File

@ -0,0 +1,15 @@
\chapter*{Check Final Print Size}
\begin{center}
{\Large --- Check final print size! ---}
\bigskip
\calibrationbox{100}{50} % width/height of box in mm
\bigskip
{\Large --- Remove this page after printing! ---}
\end{center}

View File

@ -0,0 +1,33 @@
\chapter{Concept and Design}
\label{cha:conceptdesign}
introduction to what needs to be done. also clarify terms "Host" and "Device" here
\section[Requirements]{Requirements and Data}
short section.
Multiple expressions; vars for all expressions; params unique to expression; operators that need to be supported
\section{Interpreter}
as introduction to this section talk about what "interpreter" means in this context. so "gpu parses expr and calculates"
\subsection{Architecture}
talk about the coarse grained architecture on how the interpreter will work. (.5 to 1 page probably)
\subsection{Host}
talk about the steps taken to prepare for GPU interpretation
\subsection{Device}
talk about how the actual interpreter will be implemented
\section{Transpiler}
as introduction to this section talk about what "transpiler" means in this context. so "cpu takes expressions and generates ptx for gpu execution"
\subsection{Architecture}
talk about the coarse grained architecture on how the transpiler will work. (.5 to 1 page probably)
\subsection{Host}
talk about how the transpiler is implemented
\subsection{Device}
talk about what the GPU does. short section since the gpu does not do much

View File

@ -0,0 +1,7 @@
\chapter[Conclusion]{Conclusion and Future Work}
\label{cha:conclusion}
Summarise the results
\section{Future Work}
talk about what can be improved

View File

@ -0,0 +1,14 @@
\chapter{Evaluation}
\label{cha:evaluation}
\section{Test environment}
Explain the hardware used, as well as the actual data (how many expressions, variables etc.)
\section{Results}
talk about what we will see now (results only for interpreter, then transpiler and then compared with each other and a CPU interpreter)
\subsection{Interpreter}
Results only for Interpreter
\subsection{Transpiler}
Results only for Transpiler
\subsection{Comparison}
Comparison of Interpreter and Transpiler as well as Comparing the two with CPU interpreter

View File

@ -0,0 +1,13 @@
\chapter{Implementation}
\label{cha:implementation}
\section{Technologies}
Short section; CUDA, PTX, Julia, CUDA.jl
Probably reference the performance evaluation papers for Julia and CUDA.jl
\section{Interpreter}
Talk about how the interpreter has been developed.
\section{Transpiler}
Talk about how the transpiler has been developed

View File

@ -0,0 +1,10 @@
\chapter{Introduction}
\label{cha:Introduction}
Introduction into topic and why someone would want to evaluate expressions on the GPU. Also include "Non-Goals"
\section[Research Question]{Research Question and Methodology}
What are the research questions and how they will be answered
\section{Overview}
Will give an overview of the chapters and what to expect

View File

@ -0,0 +1,19 @@
\chapter{Fundamentals and Related Work}
\label{cha:relwork}
\section{Equation learning}
Section describing what equation learning is and why it is relevant for the thesis
\section[GPGPU]{General Purpose Computation on Graphics Processing Units}
Describe what GPGPU is and how it differs from classical programming. talk about architecture (SIMD) and some scientific papers on how they use GPUs to accelerate tasks
\subsection[PTX]{Parallel Thread Execution}
Describe what PTX is to get a common ground for the implementation chapter. Probably a short section
\section{GPU Interpretation}
Different sources on how to do interpretation on the gpu (and maybe interpretation in general too?)
\section{Transpiler}
talk about what transpilers are and how to implement them. If possible also gpu specific transpilation. Also talk about compilation and register management. and probably find a better title

View File

@ -0,0 +1,5 @@
\chapter{Abstract}
This should be a 1-page (maximum) summary of your work in English.

View File

@ -0,0 +1,7 @@
\chapter{Kurzfassung}
\begin{german}
An dieser Stelle steht eine Zusammenfassung der Arbeit, Umfang
max.\ 1 Seite.
...
\end{german}

351
thesis/hgb.sty Normal file
View File

@ -0,0 +1,351 @@
%% hgb.sty
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hgb}[2023/11/06]%%AUTO
\typeout{******************* hgb.sty (options=\@nameuse{opt@hgb.sty}) ***********************}
% Create a default/fallback main language so it is set no matter what
\providecommand{\hgb@MainLanguage}{german}
\RequirePackage{xifthen}
\newboolean{hgb@SmartQuotesOn}
\setboolean{hgb@SmartQuotesOn}{false} % smart quotes are turned off by default
\newboolean{hgb@noUpdateCheck}
\setboolean{hgb@noUpdateCheck}{false} % update check is perfomed by default
% Handle package options passed from the class file
\DeclareOption{english}{\renewcommand{\hgb@MainLanguage}{english}}
\DeclareOption{german}{\renewcommand{\hgb@MainLanguage}{german}}
\DeclareOption{ngerman}{\renewcommand{\hgb@MainLanguage}{german}}
\DeclareOption{smartquotes}{\setboolean{hgb@SmartQuotesOn}{true}}
\DeclareOption{noUpdateCheck}{\setboolean{hgb@noUpdateCheck}{true}}
\DeclareOption*{\ClassWarning{hgb}{Unknown option '\CurrentOption'.}}
\ProcessOptions*
%% Required Packages ----------------------------------------------------------
\RequirePackage{lmodern} % use Latin Modern Fonts
\RequirePackage{cmap} % make generated PDF files "searchable and copyable"
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc} % T1 font encoding for improved hyphenation
% Set main language by selectively loading babel with the 'main' parameter (babel 3.9+)
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{\RequirePackage[english,main=ngerman]{babel}}{}
\ifthenelse{\equal{\hgb@MainLanguage}{english}}%
{\RequirePackage[main=english,ngerman]{babel}}{}
%% Setup for smart quotes (csquotes package) -- experimental! ----------------------------------
\ifthenelse{\boolean{hgb@SmartQuotesOn}}{
\languageshorthands{none}% %% turn off babel's shorthands (permanently)
\usepackage[autostyle=true,german=quotes]{csquotes}%
\MakeOuterQuote{"}%
\EnableQuotes}{}
%% Language environments ------------------------------------------------------
% Switch from German to English (babel)
\newenvironment{english}%
{\begin{otherlanguage}{english}%
\ifthenelse{\boolean{hgb@SmartQuotesOn}}{\EnableQuotes}{}}%
{\end{otherlanguage}\ignorespacesafterend}%
% Switch from English to German (babel)
\newenvironment{german}%
{\begin{otherlanguage}{ngerman}%
\ifthenelse{\boolean{hgb@SmartQuotesOn}}{\EnableQuotes}{}}%
{\end{otherlanguage}}%
%% Date-related stuff ---------------------------------------------------------
\edef\hgbDate{\csname ver@hgb.sty\endcsname} % get this package's build date
\RequirePackage{xstring} % for string operations
\RequirePackage[english,ngerman,calc,useregional,showdow=false]{datetime2} % replaces obsolete 'datetime' package
% https://tex.stackexchange.com/questions/316253/latex-convert-date-string-format-from-mm-dd-yyyyy-to-dd-mm-yyyy/316257#316257
\newcommand{\PackageToDTMdate}[2]{% converts date in 'YYYY/MM/DD' format to DTMdate and saves to #2
\StrLeft{#1}{4}[\myYear]%
\StrRight{#1}{2}[\myDay]%
\StrMid{#1}{6}{7}[\myMonth]%
\DTMsavenoparsedate{#2}{\myYear}{\myMonth}{\myDay}{-1}%
%\DTMdate{\myYear-\myMonth-\myDay}%
}
\PackageToDTMdate{\hgbDate}{hgbPackageDate} % converts package date to DTM format: \DTMusedate{hgbPackageDate}
\DTMsavenoparsedate{hgbToday}{\the\year}{\the\month}{\the\day}{-1} % today's date in DTM format: \DTMusedate{hgbToday}
\newcounter{hgbAgeLimit}\setcounter{hgbAgeLimit}{365} % warn if package is older than 1 year
\newcount\hgbAge
\DTMsaveddatediff{hgbToday}{hgbPackageDate}{\hgbAge}
\newcommand{\hgbWarnOldPackage}[1]{\PackageWarning{hagenberg-thesis}{%
^^J****************************************************************
^^JNOTE: 'hagenberg-thesis' is #1 days old - pls. check for updates
^^Jat https://github.com/Digital-Media/HagenbergThesis
^^J****************************************************************
^^J} % https://tex.stackexchange.com/questions/6529/newline-linebreak-in-message
}
\ifthenelse{\hgbAge>\value{hgbAgeLimit} \AND \NOT \boolean{hgb@noUpdateCheck}}%
{\hgbWarnOldPackage{\the\hgbAge}}{}
%% ------------------------------------------------------
\RequirePackage{upquote} % uses "right" quotes in the verbatim environment
\RequirePackage{marvosym}
\providecommand{\euro}[0]{\EUR\xspace} % for compatibility with 'eurosym' macro
\RequirePackage{graphicx}
\RequirePackage[percent]{overpic} % to allow text/graphics overlays on pictures
\RequirePackage{pict2e} % extends the LaTeX 'picture' environment
\RequirePackage{xcolor}
\newcommand{\@MissingArg}[1]{\textcolor{red}{#1}}
\RequirePackage[T1,hyphens,obeyspaces,spaces,lowtilde]{url}
\urlstyle{sf}
\RequirePackage{verbatim}
\RequirePackage{moreverb}
\def\verbatimtabsize{2\relax}
\RequirePackage{ifpdf}
\ifpdf % LaTeX is in native PDF mode (pdflatex)
\RequirePackage{epstopdf} % converting EPS to PDF for pdflatex
% \pdfcompresslevel=0 % 0 = no compression, 9 = max. compression
% \pdfimageresolution=300
\else % LaTeX is in emulation mode (DVI-PS-PDF)
\RequirePackage[hyphenbreaks]{breakurl} % allows line breaks in URLs without pdflatex (DIV, PS, PDF)
\fi
%% hyperref Setup -------------------------------------------------------------
\RequirePackage[unicode]{hyperref} % utf8-change
\hypersetup{
linktocpage=true, % make page number, not text, be link on TOC, LOF and LOT
colorlinks=false, % don't uses colored links (because this shows up in printing!)
pdfborder={0 0 0.5}, % use a thinner (0.5pt) border around all PDF links
allbordercolors={blue}, % this only works with a named color, any effect?
%breaklinks = true % allow links to break over lines by making links over multiple lines (obsolete)
}
% Redefine certain commands for bookmarks and meta-data
\let\oldand\and
\pdfstringdefDisableCommands{%
\def\\{}%
\def\url#1{<#1>}%
\def\and{\texorpdfstring{\oldand}{, }}%
}
\RequirePackage[figure,table,table*]{hypcap} % do not redefine figure* for use in article (without captions)
%% Miscellaneous Utility Commands ---------------------------------------------
\newcommand\trennstrich{%
\nopagebreak[4]
\vskip 1.5ex %
% \nopagebreak[4]
\noindent\makebox[\textwidth]{\rule{4cm}{0.4pt}}
\vskip 2.5ex}
\newcommand{\SuperPar}[0]{%
\PackageWarning{hgb}{Due to frequent misuse, macro \protect\SuperPar\space has been removed.}
}
\newcommand{\email}[1]{%
\texorpdfstring{\href{mailto:#1}{\nolinkurl{#1}}}{<#1>}%
}
% Test box for print proofing
\newcommand{\calibrationbox}[2]{% parameters: #1=width, #2=height
\setlength{\unitlength}{1.0mm}%
\begin{picture}(#1,#2)%
\linethickness{0.05mm}%
\put(0,0){\dashbox{0.2}(#1,#2)%
{\parbox{#1mm}{%
\centering\footnotesize
width $ = #1 \textrm{mm}$\\
height $ = #2 \textrm{mm}$
}}}\end{picture}
}
% Test box for print proofing (obsolete - use \calibrationbox)
\newcommand{\Messbox}[2]{
\calibrationbox{#1}{#2}
}
\newcommand{\ShowParameter}[1]{\the#1\showthe#1} % to display TeX parameters
%Beispiel: clubpenalty = \ShowParameter{\clubpenalty}
%% Layout Settings ------------------------------------------------------------
\frenchspacing % creates normal spacing between sentences
\setlength{\parskip}{0pt plus 0.1pt}
\raggedbottom %\flushbottom
\RequirePackage{float}
\floatstyle{plain}
% Captions with font size "small" and additional margin spacing
\RequirePackage[small,bf]{caption}
\DeclareCaptionStyle{ruled}{labelfont=bf,labelsep=colon}
\setlength{\captionmargin}{5mm}
\setlength{\abovecaptionskip}{10pt}
\setlength{\belowcaptionskip}{10pt}
%% Disable \footnote in captions:
\newcommand{\@WarnFootnoteInCaption}{%
\GenericError{}{Package hgb Error: footnotes in captions are disabled}%
{How to fix: do not place footnotes in captions!}{}}%
\DeclareCaptionTextFormat{nofootnotes}{%
\renewcommand{\footnote}[1]{\@WarnFootnoteInCaption\relax}#1}
\captionsetup{textformat=nofootnotes}
% Make float placement easier
\renewcommand{\floatpagefraction}{.9} % previously: .5
\renewcommand{\textfraction}{.1} % previously: .2
\renewcommand{\topfraction}{.9} % previously: .7
\renewcommand{\bottomfraction}{.7} % previously: .3
\setcounter{topnumber}{3} % previously: 2
\setcounter{bottomnumber}{2} % previously: 1
\setcounter{totalnumber}{5} % previously: 3
\RequirePackage{enumitem} % fix excessive vertical spacing in lists
\setlist{%
partopsep = .0ex plus .1ex,
topsep = .6ex plus .3ex,
itemsep = .0ex plus .1ex,
parsep = .4ex plus .2ex
}
\newenvironment{nowidows}%
{\clubpenalty=10000%
\widowpenalty=10000%
\displaywidowpenalty=10000}%
{}
%Example:
% \begin{nowidows}
% Any text where no widows are allowed
% \end{nowidows}
\RequirePackage{lengthconvert} % for showing the current textwidth in mm
% Setup for Table of Contents (ToC)
%\RequirePackage[tocgraduated,tocbreaksstrict]{tocstyle}% %% Note: tocstyle is unsupported!
%\usetocstyle{classic}%
\RequirePackage{tocbasic}% %% tocbasic is part of koma script
\DeclareTOCStyleEntry[entryformat=\bfseries\textsf]{tocline}{chapter}%
%% Program environments ----------------------------------------
% Define the program float environment:
\@ifundefined{chapter}%
{\newfloat{program}{tbp}{lop}}%
{\newfloat{program}{tbp}{lop}[chapter]}
\floatstyle{plain}
\restylefloat*{program}
\ifthenelse{\equal{\bbl@main@language}{german} \or \equal{\bbl@main@language}{ngerman}}%
{\floatname{program}{Programm}}{}%
\ifthenelse{\equal{\bbl@main@language}{english}}%
{\floatname{program}{Program}}{}%
%% Experimental items ---------------------------------------------------------
\newenvironment{NarrowList}%
{\begin{list}{}%
{\setlength{\leftmargin}{2.5em}
\setlength{\labelwidth}{1em}
\setlength{\labelsep}{0.5em}
\setlength{\itemsep}{0.5ex}
\setlength{\parsep}{0ex}
\setlength{\topsep}{0ex}
\raggedright
}}%
{\end{list}}
\providecommand{\hgb@PathName}{Pfad}
\newenvironment{FileList}[1]%
{%\paragraph{Pfad:} \url{#1}
\ifthenelse{\equal{\hgb@MainLanguage}{german}}
{\renewcommand{\hgb@PathName}{Pfad}}%
{\renewcommand{\hgb@PathName}{Path}}%
\paragraph{\hgb@PathName: \nolinkurl{#1}}
\begin{list}{}%
{\setlength{\leftmargin}{5cm}
\setlength{\labelwidth}{4cm}
\setlength{\labelsep}{0.25cm}
\setlength{\rightmargin}{0cm}
\setlength{\itemindent}{0cm}
\setlength{\itemsep}{0.5ex}
\setlength{\parsep}{0ex}
\setlength{\topsep}{1ex}
\raggedright
}}%
{\end{list}}
\def\widedotfill{\leaders\hbox to 8pt{\hfil.\hfil}\hfill}
\newcommand{\fitem}[1]{%
\item[\nolinkurl{#1}\widedotfill]
}
% A generic environment that does nothing, e.g., for temporary variable settings:
% \begin{block}
% \setlength{\tabcolsep}{10pt}
% \renewcommand{\arraystretch}{1.50}
% ...
% \end{block}
\newenvironment{block}{}{}
% Gives access to the most recent label assigned (used in longtable example):
\newcommand{\getcurrentlabel}{\@currentlabel}
%% For inserting foreign PDF pages --------------------------------------------
\RequirePackage{pdfpages}
%% Tables ---------------------------------------------------------------------
\RequirePackage{booktabs}
\RequirePackage{longtable}
\RequirePackage{multirow}
%% Prevent subfigure package from being loaded -------------------------------
% The subfigure package is DEPRECATED (see https://ctan.org/pkg/subfigure)!
% We strongly advise against its use since it creates poor output which is not
% compatible with our quality standards. Loading this package is therefore blocked
% by default. We recommend to use the 'tabular' environment instead.
\AtBeginDocument{%
\@ifpackageloaded{subfigure}{%
\PackageError{hgb}{Use of the 'subfigure' package is not supported in this setup, because it is obsolete}{}
\let\subfigure\undefined% just to make sure ...
}%
}%
%% ----------------------------------------------------------------------------
\setlength{\fboxsep}{0mm} %globally zero fbox separator

50
thesis/hgbabbrev.sty Normal file
View File

@ -0,0 +1,50 @@
%% hgbabbrev.sty
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\ProvidesPackage{hgbabbrev}[2023/11/06]%%AUTO
\newcommand{\latex}{La\-TeX\xspace} % no ornamental LaTeX anymore
\newcommand{\tex}{TeX\xspace} % no ornamental LaTeX anymore
\newcommand{\bs}{\textbackslash} % backslash character
\newcommand{\obnh}{\hskip 0pt } %optional break without hyphen: e.g. PlugIn{\obnh}Filter
%\newcommand{\optbreaknh}{\hskip 0pt } %obsolete, replaced by above
% Miscellaneous abbreviations (in dependance on Jochen Kuepper, jkthesis):
\RequirePackage{xspace}
%% German abbreviations:
\newcommand{\bzgl}{bzgl.\@\xspace}
\newcommand{\bzw}{bzw.\@\xspace}
\newcommand{\ca}{ca.\@\xspace}
\newcommand{\dah}{d.\thinspace{}h.\@\xspace}
\newcommand{\Dah}{D.\thinspace{}h.\@\xspace}
\newcommand{\ds}{d.\thinspace{}sind\@\xspace}
\newcommand{\etc}{etc.\@\xspace}
\newcommand{\evtl}{evtl.\@\xspace}
\newcommand{\ia}{i.\thinspace{}Allg.\@\xspace}
\newcommand{\sa}{s.\ auch\@\xspace}
\newcommand{\so}{s.\ oben\xspace}
\newcommand{\su}{s.\ unten\@\xspace}
\newcommand{\ua}{u.\thinspace{}a.\@\xspace}
\newcommand{\Ua}{U.\thinspace{}a.\@\xspace}
\newcommand{\uae}{u.\thinspace{}\"A.\@\xspace}
\newcommand{\usw}{usw.\@\xspace}
\newcommand{\uva}{u.\thinspace{}v.\thinspace{}a.\@\xspace}
\newcommand{\uvm}{u.\thinspace{}v.\thinspace{}m.\@\xspace}
\newcommand{\va}{vor allem\@\xspace}
\newcommand{\vgl}{vgl.\@\xspace}
\newcommand{\zB}{z.\thinspace{}B.\@\xspace}
\newcommand{\ZB}{Zum Beispiel\xspace}
%% English abbreviations:
\newcommand{\ie}{i.e.\@\xspace}
\newcommand{\eg}{e.g.\@\xspace}
\newcommand{\Eg}{E.g.\@\xspace}
%\newcommand{\etc}{etc.\@\xspace}
\newcommand{\wrt}{w.r.t.\@\xspace}

89
thesis/hgbalgo.sty Normal file
View File

@ -0,0 +1,89 @@
%% hgbalgo.sty
%% Toward better looking algorithms ...
%% This package imports and pre-configures the 'algorithmicx'/'algpseudocodex' packages
%% (see https://ctan.org/pkg/algpseudocodex), fixes some problems and adds new functionality
%% and colors. It relies on the 'algorithm' package for typesetting float-type algorithms
%% with captions.
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\ProvidesPackage{hgbalgo}[2023/11/06]%%AUTO
\RequirePackage[noEnd=true,indLines=true,italicComments=false]{algpseudocodex} % https://ctan.org/pkg/algpseudocodex
\RequirePackage{calc} % for numeric calculations
\RequirePackage{xcolor}
% Colors to be used in algorithms (can be redefined locally if desired)
\definecolor{AlgKeywordColor}{rgb}{0.00, 0.00, 0.666} % = Dark Blue
\definecolor{AlgProcedureColor}{rgb}{0.00, 0.5, 0.20} % = Dark Green
%\definecolor{AlgCommentColor}{gray}{0.40} % = Gray (40% black)
\algrenewcommand\algorithmicend{\textbf{\color{AlgKeywordColor}end}}
\algrenewcommand\algorithmicdo{\textbf{\color{AlgKeywordColor}do}}
\algrenewcommand\algorithmicwhile{\textbf{\color{AlgKeywordColor}while}}
\algrenewcommand\algorithmicfor{\textbf{\color{AlgKeywordColor}for}}
\algrenewcommand\algorithmicforall{\textbf{\color{AlgKeywordColor}for all}}
\algrenewcommand\algorithmicloop{\textbf{\color{AlgKeywordColor}loop}}
\algrenewcommand\algorithmicrepeat{\textbf{\color{AlgKeywordColor}repeat}}
\algrenewcommand\algorithmicuntil{\textbf{\color{AlgKeywordColor}until}}
\algrenewcommand\algorithmicprocedure{\textbf{\color{AlgKeywordColor}procedure}}
\algrenewcommand\algorithmicfunction{\textbf{\color{AlgKeywordColor}function}}
\algrenewcommand\algorithmicif{\textbf{\color{AlgKeywordColor}if}}
\algrenewcommand\algorithmicthen{\textbf{\color{AlgKeywordColor}then}}
\algrenewcommand\algorithmicelse{\textbf{\color{AlgKeywordColor}else}}
\algrenewcommand\algorithmicrequire{\textbf{\color{AlgKeywordColor}Require:}}
\algrenewcommand\algorithmicensure{\textbf{\color{AlgKeywordColor}Ensure:}}
\algrenewcommand\algorithmicreturn{\textbf{\color{AlgKeywordColor}return}}
% Use SF font and color for procedure and function names:
\newcommand{\@AlgTextProc}[1]{\textcolor{AlgProcedureColor}{\textsf{#1}}}
\algrenewcommand\textproc{\@AlgTextProc}
\algrenewcommand\Call[2]{\textproc{#1}\hskip0.75pt(#2)}%
%% -----------------------------------------------------------------
\newlength{\@AlgTmpIndent}
%% Additional public macros:
% This macro is obsolete and will eventually dissappear:
\algnewcommand{\StateL}[1]{\State #1%
\PackageWarning{hgbalgo}{Macro \protect\StateL\space is obsolete, use \protect\State\space instead}}%
% \StateNN[<nesting>]{<text>} creates non-numbered statements like algorithmicx's \Statex
% command but provides consistent indentation inside nested constructs and over multiple lines.
% The optional integer argument [<nesting>] can be used to specify the nesting depth
% to counteract a bug in algorithmicx (nesting level is not set properly before the first \State
% command inside a nested construct.
\algnewcommand{\StateNN}[2][\numexpr\theALG@nested-1]{% default indentation = nesting - 1
\setlength\@AlgTmpIndent{\algorithmicindent*#1}% requires calc package
\Statex\hskip\@AlgTmpIndent\parbox[t]{\linewidth-\@AlgTmpIndent}{#2\strut}%
}%
% Macros for describing input and output of procedures and functions:
\algnewcommand\Input[1]{\StateNN[1]{\textbf{Input:} #1}}% use to describe input parameters: \Input{<description>}
\algrenewcommand\Output[1]{\StateNN[1]{\textbf{Output:} #1}}% use to describe output values: \Output{<description>} (already defined in algpseudocodex.sty)
\algnewcommand\Returns[1]{\StateNN[1]{\textbf{Returns} #1}}% use to describe what a procedure/function returns: \Returns{<description}
% The following macros insert additional vertical space after a statement.
% They only work in horizontal mode and are supposed
% to be used inside (at the end of) statements, e.g.,
% \State $x \gets x + 1$ \algsmallskip
\algnewcommand{\algsmallskip}[0]{\raisebox{-3pt}{\strut}}
\algnewcommand{\algmedskip}[0]{\raisebox{-6pt}{\strut}}
\algnewcommand{\algbigskip}[0]{\raisebox{-12pt}{\strut}}
% 'algorithm' creates a floating environment for algorithms: \begin{algorithm}...\end{algorithm}
\@ifundefined{chapter}%
{\RequirePackage[ruled]{algorithm}}%
{\RequirePackage[ruled,chapter]{algorithm}}
\ifthenelse{\equal{\bbl@main@language}{german} \or \equal{\bbl@main@language}{ngerman}}%
{\floatname{algorithm}{Algorithmus}}{}%
\ifthenelse{\equal{\bbl@main@language}{english}}%
{\floatname{algorithm}{Algorithm}}{}%

70
thesis/hgbarticle.cls Normal file
View File

@ -0,0 +1,70 @@
%% hgbarticle.cls
%% LaTeX class for creating lab and term reports as well as other forms of academic documentation.
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wolfgang Hochleitner (wolfgang.hochleitner@fh-hagenberg.at)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
%% Package Information --------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{hgbarticle}[2023/11/06]%%AUTO
\RequirePackage{xifthen}
\RequirePackage{ifpdf} % for checking PDF mode
\ifpdf{}% \typeout{hgbarticle: *** LaTeX in PDF mode ***}
\else{\errmessage{hgbarticle: *** LaTeX NOT running in PDF mode ***}}
\fi
%% Handling class options --------------------------------------------------------------
\DeclareOption{twocolumn}{\PassOptionsToClass{\CurrentOption}{article}}
\DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
% pass all other options to hgb.sty
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{hgb}}
\ProcessOptions*
%% Paper options and style file -----------------------------------------------
\LoadClass[a4paper,11pt]{article}
%Adjust margins only in single-column mode
\if@twocolumn%
\else%
\RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
\fi%
\RequirePackage{hgb} % load style file hgb.sty with options registered above
%% Set title font to SF and inject PDF meta-data
\RequirePackage{titling}
\renewcommand{\maketitlehooka}{%
\sffamily%
\hypersetup{
pdftitle={\@title},
pdfauthor={\@author},
pdfsubject={},
pdfcreator={LaTeX using class hgbreport [\hgbDate]},
pdfproducer={pdflatex},
pdfkeywords={}
}%
}
%% Set abstract name to bold (single column format only)
\if@twocolumn%
\else%
\RequirePackage{abstract}
\renewcommand{\abstractnamefont}{\sffamily\small\bfseries}
\fi%
%% Additional Hagenberg packages ----------------------------------------------
\RequirePackage{hgbmath}
\RequirePackage{hgbalgo}
\RequirePackage{hgbheadings}
\RequirePackage{hgbabbrev}
\RequirePackage{hgblistings}
\RequirePackage{hgbbib}
\endinput

246
thesis/hgbbib.sty Normal file
View File

@ -0,0 +1,246 @@
%% hgbbib.sty
%% Bibliography Setup
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\ProvidesPackage{hgbbib}[2023/11/06]%%AUTO
\newcommand{\@bibstyle}{numeric-comp} %% default bibliography style is 'numeric-comp'
\DeclareOption{apa}{\renewcommand{\@bibstyle}{apa}}
\ProcessOptions\relax
\RequirePackage{xifthen}
%\usepackage[style=numeric-comp,backend=biber,bibencoding=auto]{biblatex}
\usepackage[style=\@bibstyle,backend=biber]{biblatex}
\ExecuteBibliographyOptions{
bibencoding=auto,
bibwarn=true,
sortcites=true,
defernumbers=true,
isbn=false,
doi=true,
backref=true,
backrefstyle=three}
\RequirePackage{csquotes} % recommended for biblatex
%% titles of reference section + 3 categories of references:
\newcommand{\@bibtitle}{Quellenverzeichnis}
\newcommand{\@bibtitleLiteratur}{Literatur}
\newcommand{\@bibtitleMedia}{Medien}
\newcommand{\@bibtitleOnline}{Online-Quellen}
\newcommand{\@bibtitleSoftware}{Software}
\ifthenelse{\equal{\hgb@MainLanguage}{english}}{%
\renewcommand{\@bibtitle}{References}
\renewcommand{\@bibtitleLiteratur}{Literature}
\renewcommand{\@bibtitleMedia}{Media}
\renewcommand{\@bibtitleOnline}{Online sources}
\renewcommand{\@bibtitleSoftware}{Software}
}{}
%% categories for a split bibliography (order of declaration is important!)
\DeclareBibliographyCategory{literature}
\DeclareBibliographyCategory{media}
\DeclareBibliographyCategory{software}
\DeclareBibliographyCategory{online}
%% headings for the bibliography categories
\defbibheading{literature}{%
\phantomsection%
\section*{\@bibtitleLiteratur}%
\addcontentsline{toc}{section}{\@bibtitleLiteratur}%
}
\defbibheading{media}{%
\pagebreak[3]%
\phantomsection%
\section*{\@bibtitleMedia}%
\addcontentsline{toc}{section}{\@bibtitleMedia}%
}
\defbibheading{online}{%
\pagebreak[3]%
\phantomsection%
\section*{\@bibtitleOnline}%
\addcontentsline{toc}{section}{\@bibtitleOnline}%
}
\defbibheading{software}{%
\pagebreak[3]%
\phantomsection%
\section*{\@bibtitleSoftware}%
\addcontentsline{toc}{section}{\@bibtitleSoftware}%
}
\defbibheading{noheader}[]{} % 'none' should be defined but isn't
%Assign a given bibliography entry to one of the defined categories.
\newcommand{\@AssignToBibCategory}[1]% argument 1: entry key
{\ifthenelse{%
\ifentrytype{online}\OR
\ifentrytype{www}}
{\addtocategory{online}{#1}}%
{\ifthenelse{%
\ifentrytype{movie}\OR
\ifentrytype{video}\OR
\ifentrytype{music}\OR
\ifentrytype{audio}\OR
\ifentrytype{image}}
{\addtocategory{media}{#1}}%
{\ifthenelse{%
\ifentrytype{software}\OR
\ifentrytype{electronic}}
{\addtocategory{software}{#1}}%
{\addtocategory{literature}{#1}}% else (default)
}}}
%Hook provided by biblatex.
\AtEveryCitekey{\@AssignToBibCategory{\thefield{entrykey}}}
%This is only a wrapper to \addbibresource to allow the use
%of the classic bibtex-workflow in the future.
\newcommand{\AddBibFile}[1]{
\addbibresource{#1}%
}
% Declare a source map so the sorting in \cite commands works across the bib categories
% The maps need to correspond to the entry types in the bib categories (which can't unfortunately used)
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{ % All entry types except for media, software and online
\pernottype{movie}
\pernottype{video}
\pernottype{music}
\pernottype{audio}
\pernottype{image}
\pernottype{software}
\pernottype{electronic}
\pernottype{online}
\pernottype{www}
\step[fieldset=presort, fieldvalue = {A}]
}
\map{ % media entry types
\pertype{movie}
\pertype{video}
\pertype{music}
\pertype{audio}
\pertype{image}
\step[fieldset=presort, fieldvalue = {B}]
}
\map{ % software entry types
\pertype{software}
\pertype{electronic}
\step[fieldset=presort, fieldvalue = {C}]
}
\map{ % online entry types
\pertype{online}
\pertype{www}
\step[fieldset=presort, fieldvalue = {D}]
}
}
}
%See http://www.jr-x.de/publikationen/latex/tipps/zeilenumbruch.html
\newenvironment{bibhyphenation}%
{\hyphenpenalty=2% (default 50)
\tolerance=9999% (default 200)
\exhyphenpenalty=2% (default 50)
\linepenalty=1% (default 10)
\setlength{\emergencystretch}{3em}%
% allow URL hyphenation at any character (definitions in biblatex.def)
\setcounter{biburlnumpenalty}{1}%
\setcounter{biburlucpenalty}{1}%
\setcounter{biburllcpenalty}{1}%
\biburlsetup}%
{}
% Currently the only public macro:
% \MakeBibliography ... creates a reference section split subsections (default)
% \MakeBibliography[nosplit] ... creates a one-piece reference section
\newcommand{\MakeBibliography}[1][]{
% opt. arg (#1): optional argument "nosplit" to get a 1-piece bibliography
%\clearpage
\ifthenelse{\equal{#1}{nosplit}}%
{% create a single bibliography with all entries:
\printbibheading[heading=bibintoc,title={\@bibtitle}]
\begin{bibhyphenation}
\printbibliography[heading=noheader]
\end{bibhyphenation}
}
{% split the bibliography using the predefined categories:
\printbibheading[heading=bibintoc,title={\@bibtitle}]
\begin{bibhyphenation}
\bibbycategory
\end{bibhyphenation}
}%
}
% Suppress unusual "In:" within journal article references.
% see http://tex.stackexchange.com/questions/10682/suppress-in-biblatex
\renewbibmacro{in:}{%
\ifentrytype{article}{}{%
\printtext{\bibstring{in}\intitlepunct}}}
% To suppress warnings related to missing biblatex "drivers":
\DeclareBibliographyAlias{video}{misc}
\DeclareBibliographyAlias{movie}{misc}
\DeclareBibliographyAlias{audio}{misc}
\DeclareBibliographyAlias{software}{misc}
\DeclareBibliographyAlias{electronic}{misc}
\DeclareBibliographyAlias{image}{misc}
\DeclareBibliographyAlias{standard}{misc}
\DeclareBibliographyAlias{legislation}{misc}
% Remove the contents of the url field if a doi field is present
% To avoid duplicate DOI URLs
\AtEveryBibitem{
\iffieldundef{doi}{}{\clearfield{url}}
}
% Use a semicolon between multiple entries in \cites
%\renewcommand*{\multicitedelim}{\addsemicolon\space} %% abandoned, affects regular \cite{a,b,c,..} entries too
% New command for multiple citations with supplementary texts
% usage: \mcite[text1]{key1}[text2]{key2}...[textN]{keyN}
% see https://tex.stackexchange.com/a/132981
\DeclareMultiCiteCommand{\mcite}[\mkbibbrackets]{\cite}{\addsemicolon\space}
% Macro to produce cites with no backref entries
% NOTE: \citenobr is DEPRECATED, use ... {\backtrackerfalse\cite{...}} instead!
\ifthenelse{\equal{\@bibstyle}{apa}}
{
\DeclareCiteCommand{\citenobr}% version for APA
{\PackageWarning{hgb}{Macro \protect\citenobr\space is deprecated, use \protect\backtrackerfalse\space instead!}
\backtrackerfalse%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}%
{\multicitedelim}
{\usebibmacro{postnote}}
}
{
\DeclareCiteCommand{\citenobr}% version for numeric-comp et al.
{\PackageWarning{hgb}{Macro \protect\citenobr\space is deprecated, use \protect\backtrackerfalse\space instead!}
\usebibmacro{cite:init}%
\bibopenbracket%
\backtrackerfalse%
\usebibmacro{prenote}%
}
{\usebibmacro{citeindex}%
\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}%
\usebibmacro{postnote}%
\bibclosebracket}
}

36
thesis/hgbheadings.sty Normal file
View File

@ -0,0 +1,36 @@
%% hgbheadings.sty
%% Headings setup
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\ProvidesPackage{hgbheadings}[2023/11/06]%%AUTO
\RequirePackage{fancyhdr}
\pagestyle{fancy}
\RequirePackage[sf,raggedright]{titlesec} % use sans serif for chapter/section headings
\@ifundefined{chapter}%
{}%
{\renewcommand{\chaptermark}[1]{%
\ifthenelse{\value{chapter} < 1}%
{\markboth{#1}{}}%
{\markboth{\thechapter.\ #1}{}}
}}
\addtolength{\headheight}{\baselineskip}
\renewcommand{\headrulewidth}{0pt} % thin line under header
\renewcommand{\footrulewidth}{0pt}
\fancyhf{} % clear all fields.
\fancyhead[R]{\sffamily\thepage} %{\bf \rightmark}
\fancyhead[L]{\sffamily\nouppercase{\leftmark}} %{\slshape \leftmark}
\fancypagestyle{plain}{%
\fancyhf{} % clear all header and footer fields
\fancyfoot[C]{\sffamily\thepage} % except the center
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
}

453
thesis/hgblistings.sty Normal file
View File

@ -0,0 +1,453 @@
%% hgblistings.sty
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: UTF-8
\ProvidesPackage{hgblistings}[2023/11/06]%%AUTO
\RequirePackage{xifthen}
\RequirePackage{textcomp} %% required for upquote option
\RequirePackage{xcolor}
\definecolor{ListingsBackgroundColor}{gray}{0.95}
\RequirePackage{listingsutf8}
\lstset{
inputencoding=utf8,
extendedchars=true,
basicstyle=\ttfamily\footnotesize,%
keywordstyle=,%\ttfamily,%\bfseries,
identifierstyle=,%\sffamily, %\bfseries
commentstyle=\normalfont\itshape,%
stringstyle=\ttfamily,%
showstringspaces=false,%
columns = flexible,% fixed,
breaklines=true,%
tabsize=2, %
backgroundcolor=\color{ListingsBackgroundColor},
xleftmargin=6mm,%
frame=none,
framexleftmargin=6mm,
numbers=left,%
numbersep=5pt,%
numberstyle=\normalfont\scriptsize,%
stepnumber=1,%
numberfirstline=true,%
numberblanklines=true,%
texcl=false,% %important: read program comments as Latex content
mathescape=false, %no mathescape by default
upquote=true,%
keepspaces=true,%
}
\RequirePackage[utf8]{inputenc}
\lstset{literate=% to allow Umlauts etc. in listed code % utf8-change
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
{ß}{{\ss}}2
}
%% Code Environments ----------------------------------------------------------
% Code Environment for C (ANSI)
\lstnewenvironment{CCode}[1][]
{\lstset{%
language=[ANSI]C,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for C++ (ISO)
\lstnewenvironment{CppCode}[1][]
{\lstset{%
language=[ISO]C++,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for C#
\lstnewenvironment{CsCode}[1][]
{\lstset{%
language=[Sharp]C,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Language Definition and Code Environment for CSS
\lstdefinelanguage{CSS}
{ morekeywords={accelerator,azimuth,background,background-attachment,%
background-color,background-image,background-position,%
background-position-x,background-position-y,background-repeat,%
behavior,border,border-bottom,border-bottom-color,%
border-bottom-style,border-bottom-width,border-collapse,%
border-color,border-left,border-left-color,border-left-style,%
border-left-width,border-right,border-right-color,%
border-right-style,border-right-width,border-spacing,%
border-style,border-top,border-top-color,border-top-style,%
border-top-width,border-width,bottom,caption-side,clear,%
clip,color,content,counter-increment,counter-reset,cue,%
cue-after,cue-before,cursor,direction,display,elevation,%
empty-cells,filter,float,font,font-family,font-size,%
font-size-adjust,font-stretch,font-style,font-variant,%
font-weight,height,ime-mode,include-source,%
layer-background-color,layer-background-image,layout-flow,%
layout-grid,layout-grid-char,layout-grid-char-spacing,%
layout-grid-line,layout-grid-mode,layout-grid-type,left,%
letter-spacing,line-break,line-height,list-style,%
list-style-image,list-style-position,list-style-type,margin,%
margin-bottom,margin-left,margin-right,margin-top,%
marker-offset,marks,max-height,max-width,min-height,%
min-width,orphans,outline,outline-color,outline-style,%
outline-width,overflow,overflow-X,overflow-Y,padding,%
padding-bottom,padding-left,adding-right,padding-top,%
page,page-break-after,page-break-before,page-break-inside,%
pause,pause-after,pause-before,pitch,pitch-range,%
play-during,position,quotes,-replace,richness,right,%
ruby-align,ruby-overhang,ruby-position,-set-link-source,%
size,speak,speak-header,speak-numeral,speak-punctuation,%
speech-rate,stress,scrollbar-arrow-color,scrollbar-base-color,%
scrollbar-dark-shadow-color,scrollbar-face-color,%
scrollbar-highlight-color,scrollbar-shadow-color,%
scrollbar-3d-light-color,scrollbar-track-color,table-layout,%
text-align,text-align-last,text-decoration,text-indent,%
text-justify,text-overflow,text-shadow,text-transform,%
text-autospace,text-kashida-space,text-underline-position,top,%
unicode-bidi,-use-link-source,vertical-align,visibility,%
voice-family,volume,white-space,widows,width,word-break,%
word-spacing,word-wrap,writing-mode,z-index,zoom},%
sensitive=false,
morecomment=[s]{/*}{*/},
morestring=[s]{:}{;},
morestring=[b]"
}
\lstnewenvironment{CssCode}[1][]
{\lstset{%
language=CSS,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Enivornmente for Generic Code
\lstnewenvironment{GenericCode}[1][]
{\lstset{%
language={},
keepspaces=true,
commentstyle={},
texcl=false,
escapechar={},
escapeinside={},
#1}}
{}
% Code Enivornmente for HTML
\lstnewenvironment{HtmlCode}[1][]
{\lstset{%
language=HTML,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Enivornmente for Java
\lstnewenvironment{JavaCode}[1][]
{\lstset{%
language=Java,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Language Definition and Code Environment for JavaScript
\lstdefinelanguage{JavaScript}{
alsoletter={.},
keywords={arguments, async, await, break, case, catch, class, const, continue, debugger,%
default, delete, do, else, enum, eval, export, extends, false, finally, for,%
function, if, implements, import, in, instanceof, interface, let, new, null,%
package, private, protected, public, return, static, super, switch, this,%
throw, true, try, typeof, var, void, while, with, yield}, % JavaScript ES6 keywords
morekeywords={add, apply, args, Array, Array.from, Array.isArray, Array.of,%
Array.prototype, ArrayBuffer, bind, Boolean, call, charAt, charCodeAt, clear,%
codePointAt, concat, constructor, copyWithin, DataView, Date, Date.now,%
Date.parse, Date.prototype, Date.UTC, decodeURI, decodeURIComponent, encodeURI,%
encodeURIComponent, endsWith, entries, Error, Error.prototype, EvalError, every,%
false, fill, filter, find, findIndex, Float32Array, Float64Array, forEach,%
FulfillPromise, Function, Function.length, get, getDate, getDay, getFullYear,%
getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime,%
getTimezoneOffset, getUTCDate, getUTCDay, getUTCFullYear, getUTCHours,%
getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, has,hasInstance,%
hasOwnProperty, ignoreCase, includes, indexOf, indexOf, Infinity, Int8Array,%
Int16Array, Int32Array, isConcatSpreadable, isFinite, isNaN, IsPromise,%
isPrototypeOf, Iterable, iterator, join, JSON, JSON.parse, JSON.stringify, keys,%
lastIndexOf, lastIndexOf, length, localeCompare, map, Map, match, match, Math,%
Math.abs , Math.acos, Math.acosh, Math.asin, Math.asinh, Math.atan, Math.atan2,%
Math.atanh, Math.cbrt, Math.ceil, Math.clz32, Math.cos, Math.cosh, Math.E,%
Math.exp, Math.expm1, Math.floor, Math.fround, Math.hypot, Math.imul, Math.LN2,%
Math.LN10, Math.log, Math.log1p, Math.log2, Math.LOG2E, Math.log10, Math.LOG10E,%
Math.max, Math.min, Math.PI, Math.pow, Math.random, Math.round, Math.sign,%
Math.sin, Math.sinh, Math.sqrt, Math.SQRT1_2, Math.SQRT2, Math.tan, Math.tanh,%
Math.trunc, message, multiline, name, NaN, NewPromiseCapability, next, normalize,%
null, Number, Number.EPSILON, Number.isFinite, Number.isInteger, Number.isNaN,%
Number.isSafeInteger, Number.MAX_SAFE_INTEGER, Number.MAX_VALUE,%
Number.MIN_SAFE_INTEGER, Number.MIN_VALUE, Number.NaN, Number.NEGATIVE_INFINITY,%
Number.parseFloat, Number.parseInt, Number.POSITIVE_INFINITY, Number.prototype,%
Object, Object, Object.assign, Object.create, Object.defineProperties,%
Object.defineProperty, Object.freeze, Object.getOwnPropertyDescriptor,%
Object.getOwnPropertyNames, Object.getOwnPropertySymbols, Object.getPrototypeOf,%
Object.is, Object.isExtensible, Object.isFrozen, Object.isSealed, Object.keys,%
Object.preventExtensions, Object.prototype, Object.seal, Object.setPrototypeOf,%
of, parseFloat, parseInt, pop, Promise, Promise.all , Promise.race,%
Promise.reject, Promise.resolve, PromiseReactionJob, propertyIsEnumerable,%
prototype, Proxy, Proxy.revocable , push, RangeError, reduce, reduceRight,%
ReferenceError, Reflect, Reflect.apply, Reflect.construct,%
Reflect.defineProperty, Reflect.deleteProperty, Reflect.enumerate, Reflect.get,%
Reflect.getOwnPropertyDescriptor, Reflect.getPrototypeOf, Reflect.has,%
Reflect.isExtensible, Reflect.ownKeys, Reflect.preventExtensions, Reflect.set,%
Reflect.setPrototypeOf, Reflection, RegExp, RegExp, RegExp.prototype, repeat,%
replace, replace, reverse, search, search, Set, set, setDate, setFullYear,%
setHours, setMilliseconds, setMinutes, setMonth, setSeconds, setTime, setUTCDate,%
setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth,%
setUTCSeconds, shift, slice, slice, some, sort, species, splice, split, split,%
startsWith, String, String.fromCharCode, String.fromCodePoint, String.raw,%
substring, Symbol, Symbol.for, Symbol.hasInstance, Symbol.isConcatSpreadable,%
Symbol.iterator, Symbol.keyFor, Symbol.match, Symbol.prototype, Symbol.replace,%
Symbol.replace, Symbol.search, Symbol.species, Symbol.split, Symbol.toPrimitive,%
Symbol.toStringTag, Symbol.unscopables, SyntaxError, then, toDateString,%
toExponential, toFixed, toISOString, toJSON, toLocaleDateString,%
toLocaleLowerCase, toLocaleString, toLocaleString, toLocaleString, toLocaleString,%
toLocaleTimeString, toLocaleUpperCase, toLowerCase, toPrecision, toPrimitive,%
toString, toStringTag, toTimeString, toUpperCase, toUTCString,%
TriggerPromiseReactions, trim, true, TypeError, Uint8Array, Uint8ClampedArray,%
Uint16Array, Uint32Array, undefined, unscopables, unshift, URIError, valueOf,%
WeakMap, WeakSet}, % JavaScript extended keywords
morekeywords={app.all, app.delete, app.disable, app.disabled, app.enable, app.enabled,%
app.engine, app.get, app.listen, app.locals, app.METHOD, app.mountpath, app.param,%
app.path, app.post, app.put, app.render, app.route, app.set, app.use, express,%
express.Router, express.static, req.acceptLanguages, req.accepts,%
req.acceptsCharsets, req.acceptsEncodings, req.app, req.baseUrl, req.body,%
req.cookies, req.fresh, req.get, req.hostname, req.ip, req.ips, req.is,%
req.method, req.originalUrl, req.param, req.params, req.path, req.protocol,%
req.query, req.range, req.route, req.secure, req.signedCookies, req.stale,%
req.subdomains, req.xhr, res.app, res.append, res.attachment, res.clearCookie,%
res.cookies, res.download, res.end, res.format, res.get, res.headersSent,%
res.json, res.jsonp, res.links, res.locals, res.location, res.redirect,%
res.render, res.sendFile, res.sendStatus, res.set, res.status, res.type, res.vary,%
router.all, router.METHOD, router.param, router.route, router.use}, % express keywords
morekeywords={agent.createConnection, agent.destroy, agent.freeSockets, agent.getName,%
agent.maxFreeSockets, agent.maxSockets, agent.requests, agent.sockets,%
certificate.exportChallenge, certificate.exportPublicKey, certificate.verifySpkac,%
child.channel, child.connected, child.disconnect, child.kill, child.pid,%
child.send, child.stderr, child.stdin, child.stdio, child.stdout,%
child_process.exec, child_process.execFile, child_process.execFileSync,%
child_process.execSync, child_process.fork, child_process.spawn,%
child_process.spawnSync, cipher.final, cipher.getAuthTag, cipher.setAAD,%
cipher.setAutoPadding, cipher.update, clearImmediate, clearImmediate,%
clearInterval, clearInterval, clearTimeout, clearTimeout, console, console.assert,%
console.dir, console.error, console.info, console.log, console.time,%
console.timeEnd, console.trace, console.warn, decipher.final, decipher.setAAD,%
decipher.setAuthTag, decipher.setAutoPadding, decipher.update, dgram.createSocket,%
dgram.createSocket, diffieHellman.computeSecret, diffieHellman.generateKeys,%
diffieHellman.getGenerator, diffieHellman.getPrime, diffieHellman.getPrivateKey,%
diffieHellman.getPublicKey, diffieHellman.setPrivateKey,%
diffieHellman.setPublicKey, diffieHellman.verifyError, dns.getServers,%
dns.getServers, dns.lookup, dns.lookup, dns.lookupService, dns.resolve,%
dns.resolve4, dns.resolve6, dns.resolveCname, dns.resolveMx, dns.resolveNaptr,%
dns.resolveNs, dns.resolvePtr, dns.resolveSoa, dns.resolveSrv, dns.resolveTxt,%
dns.reverse, dns.setServers, ecdh.computeSecret, ecdh.generateKeys,%
ecdh.getPrivateKey, ecdh.getPublicKey, ecdh.setPrivateKey, ecdh.setPublicKey,%
error.address, error.code, error.errno, error.message, error.path, error.port,%
error.stack, error.syscall, exports, fs.access, fs.accessSync, fs.appendFile,%
fs.appendFileSync, fs.chmod, fs.chmodSync, fs.chown, fs.chownSync, fs.close,%
fs.closeSync, fs.constants, fs.createReadStream, fs.createWriteStream,%
fs.exists, global, http.createServer, http.get, http.globalAgent,%
http.request, https.createServer, https.get, https.globalAgent, https.request,%
message.destroy, message.headers, message.httpVersion, message.method,%
message.rawHeaders, message.rawTrailers, message.setTimeout, message.socket,%
message.statusCode, message.statusMessage, message.trailers, message.url,%
module, module.children, module.exports, module.filename, module.id,%
module.loaded, module.parent, module.require, os.arch, os.constants,%
os.cpus, os.endianness, os.EOL, os.freemem, os.homedir, os.hostname,%
os.loadavg, os.networkInterfaces, os.platform, os.release, os.tmpdir,%
os.totalmem, os.type, os.uptime, os.userInfo, path.basename, path.delimiter,%
path.dirname, path.extname, path.format, path.isAbsolute, path.join,%
path.normalize, path.parse, path.posix, path.relative, path.resolve,%
path.sep, path.win32, process, process.abort, process.arch, process.argv,%
process.argv0, process.channel, process.chdir, process.config,%
process.connected, process.cpuUsage, process.cwd, process.disconnect,%
process.emitWarning, process.env, process.execArgv, process.execPath,%
process.exit, process.exitCode, process.getegid, process.geteuid,%
process.getgid, process.getgroups, process.getuid, process.hrtime,%
process.initgroups, process.kill, process.mainModule, process.memoryUsage,%
process.nextTick, process.pid, process.platform, process.release,%
process.send, process.setegid, process.seteuid, process.setgid,%
process.setgroups, process.setuid, process.stderr, process.stdin,%
process.stdout, process.title, process.umask, process.uptime,%
process.version, process.versions, querystring.escape, querystring.parse,%
querystring.stringify, querystring.unescape, r.clearLine, readable.pause,%
readable.pipe, readable.push, readable.push, readable.read, readable.read,%
readable.resume, readable.setEncoding, readable.unpipe, readable.unshift,%
readable.wrap, readable._read, readStream.bytesRead, readStream.isRaw,%
readStream.path, readStream.setRawMode, repl.start, request.abort,%
request.aborted, request.end, request.flushHeaders, request.setNoDelay,%
request.setSocketKeepAlive, request.setTimeout, request.write, require,%
require.cache, require.extensions, response.addTrailers, response.end,%
response.finished, response.getHeader, response.getHeaderNames,%
response.getHeaders, response.hasHeader, response.headersSent,%
response.removeHeader, response.sendDate, response.setHeader,%
response.setTimeout, response.statusCode, response.statusMessage,%
response.write, response.writeContinue, response.writeHead,%
rl.clearScreenDown, rl.close, rl.createInterface, rl.cursorTo,%
rl.emitKeypressEvents, rl.moveCursor, rl.pause, rl.prompt, rl.question,%
rl.resume, rl.setPrompt, rl.write, script.runInNewContext,%
script.runInThisContext, server.addContext, server.address,%
server.address, server.close, server.close, server.connections,%
server.getTicketKeys, server.listen, server.listen, server.setTicketKeys,%
server.setTimeout, server.setTimeout, server.timeout, server.timeout,%
setImmediate, setInterval, setTimeout, socket.addMembership,%
socket.address, socket.bind, socket.bind, socket.close,%
socket.dropMembership, socket.ref, socket.send, socket.setBroadcast,%
socket.setMulticastLoopback, socket.setMulticastTTL, socket.setTTL,%
socket.unref, stream.Readable, stringDecoder.end, stringDecoder.write,%
timeout.ref, timeout.unref, tls.connect, tls.createSecureContext,%
tls.createServer, tls.getCiphers, tlsSocket.address,%
tlsSocket.authorizationError, tlsSocket.authorized, tlsSocket.encrypted,%
tlsSocket.getCipher, tlsSocket.getEphemeralKeyInfo,%
tlsSocket.getPeerCertificate, tlsSocket.getProtocol, tlsSocket.getSession,%
tlsSocket.getTLSTicket, tlsSocket.localAddress, tlsSocket.localPort,%
tlsSocket.remoteAddress, tlsSocket.remoteFamily, tlsSocket.remotePort,%
tlsSocket.renegotiate, tlsSocket.setMaxSendFragment, transform._flush,%
transform._transform, util.debuglog, util.deprecate, util.format,%
util.inherits, util.inspect, v8.getHeapStatistics, v8.setFlagsFromString,%
vm.createContext, vm.isContext, vm.runInContext, vm.runInDebugContext,%
vm.runInNewContext, vm.runInThisContext, watcher.close, worker.disconnect,%
worker.exitedAfterDisconnect, worker.id, worker.isConnected,%
worker.isDead, worker.kill, worker.process, worker.send, worker.suicide,%
writable.cork, writable.end, writable.setDefaultEncoding, writable.write,%
writeStream.bytesWritten, writeStream.columns, writeStream.path,%
writeStream.rows, zlib, zlib.createGunzip, zlib.createGzip, zlib.createInflate,%
zlib.createInflateRaw, zlib.createUnzip, zlib.deflate, zlib.deflateRaw,%
zlib.deflateRawSync, zlib.deflateSync, zlib.gunzip, zlib.gunzipSync,%
zlib.gzip, zlib.gzipSync, zlib.inflate, zlib.inflateRaw, zlib.inflateRawSync,%
zlib.inflateSync, zlib.unzip, zlib.unzipSync, __dirname, __filename}, % Node.js keywords
morekeywords={assert, assert.deepEqual, assert.deepStrictEqual,%
assert.doesNotThrow, assert.equal, assert.fail, assert.ifError,%
assert.notDeepEqual, assert.notDeepStrictEqual, assert.notEqual,%
assert.notStrictEqual, assert.ok, assert.strictEqual, assert.throws, describe,%
toBe, it, xdescribe, beforeEach, afterEach, beforeAll, afterAll, expect, it,%
xit, xdiscribe, pending, and.callThrough, and.returnValue, and.returnValues,%
and.callFake, and.throwError, and.stub, .not, .calls.any, .calls.count,%
.calls.argsFor, .calls.allArgs, .calls.all, .calls.mostRecent, .calls.first,%
.calls.reset, jasmine.createSpy, jasmine.createSpyObj, jasmine.any,%
jasmine.anything, jasmine.objectContaining, jasmine.arrayContaining,%
jasmine.stringMatching, asymmetricMatch, jasmine.clock, .not.toBeTruthy,%
.toBeTruthy, .not.toBeFalsy, .toBeFalsy, .not.toBeDefined .toBeDefined,%
.not.toBeNull .toBeNull, .not.toEqual .toEqual, .not.toBeCloseTo .toBeCloseTo,%
.not.toContain, .toContain, .not.toMatch, .toMatch, .not.toBeGreaterThan,%
.toBeGreaterThan, .not.toBeLessThan, .toBeLessThan, .toThrow, .not.toThrow,%
.toBeNull, .not.toBeNull, .toBeDefined, .not.toBeDefined}, % Node.js Assert, Jasmine, ... keywords
sensitive=true,
morestring=[b]",
morestring=[d]',
morestring=[s]{`}{`},
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morecomment=[s]{/**}{*/}
}
\lstnewenvironment{JsCode}[1][]
{\lstset{%
language=JavaScript,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for LaTeX
\lstnewenvironment{LaTeXCode}[1][] % code environment for Latex
{\lstset{%
language=[LaTeX]TeX,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for Objective-C
\lstnewenvironment{ObjCCode}[1][]
{\lstset{%
language=[Objective]C,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for PHP
\lstnewenvironment{PhpCode}[1][]
{\lstset{%
language=PHP,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for Python
\lstnewenvironment{PythonCode}[1][]
{\lstset{%
language=Python,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Language Definition and Code Environment for Swift
\lstdefinelanguage{Swift}
{ keywords=[1]{typealias,true, false,catch,private,internal,public,func,protocol,%
optional,return,nil,catch,switch,let,as,var,if,in,for,while,where,do,else,case,%
break,import,class,struct,enum,override,super,required,designated,convenience},
keywords=[2]{String,Int,Double,Float},
sensitive=true,
morecomment=[l]{//},
morecomment=[s]{/*}{*/},
morestring=[b]',
morestring=[b]"
}
\lstnewenvironment{SwiftCode}[1][]
{\lstset{%
language=Swift,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Code Environment for XML
\lstnewenvironment{XmlCode}[1][]
{\lstset{%
language=XML,
escapeinside={/+}{+/}, % makes "/+" and "+/" available for Latex escapes (labels etc.)
#1}}%
{}
% Disable the lstlisting environment (due to popular abuse)
\newcommand{\@WarnLstlisting}{
\GenericError{}{Package hgblistings Error: The 'lstlisting' environment is disabled}%
{See the error note inserted in the document output for details.}{}%
\begin{quote}
\color{red}\textbf{NOTE:} The \texttt{lstlisting} environment has been deliberately disabled in this setup.
Use \emph{inline code} (breakable and \emph{without} a caption) or create a \emph{float container} with
\texttt{{\textbackslash}begin\{program\} \ldots {\textbackslash}end\{program\}} instead!
See the \texttt{hgbthesis} tutorial for examples.
\end{quote}%
}
\renewenvironment{lstlisting}[0]%
{\@WarnLstlisting\expandafter\comment}%
{\expandafter\endcomment}%

20
thesis/hgbmath.sty Normal file
View File

@ -0,0 +1,20 @@
%% hgbmath.sty
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hgbmath}[2023/11/06]%%AUTO
\RequirePackage{amsmath,amsfonts,amssymb,amsbsy}
\RequirePackage{subdepth} % for positioning of sub and super scripts
\RequirePackage{exscale} % correct scaling of math mode output in every environment
% Commands for real, complex, etc. numbers (AMS Blackboard)
\newcommand{\R}{\ensuremath{\mathbb{R}}}
\newcommand{\Z}{\ensuremath{\mathbb{Z}}}
\newcommand{\N}{\ensuremath{\mathbb{N}}}
%\newcommand{\C}{\mathbb{C}} % utf8-change (problem with T1 encoding)
\newcommand{\Cpx}{\ensuremath{\mathbb{C}}} % utf8-change
\newcommand{\Q}{\ensuremath{\mathbb{Q}}}

24
thesis/hgbpdfa.sty Normal file
View File

@ -0,0 +1,24 @@
%% hgbpdfa.sty
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{hgbpdfa}[2023/11/06]%%AUTO
%% Setup for producing PDF/A-2B compliant output using the new LaTeX-internal
%% PDF metadata management features
%% (see https://ctan.org/tex-archive/macros/latex/contrib/pdfmanagement-testphase).
%% NOTE: This package must be loaded before the \documentclass statement!
\pdfmajorversion=1
\pdfminorversion=7 % PDF Version 1.7 (Acrobat 8.x)
\RequirePackage{pdfmanagement-testphase} % only needed before LaTeX 2022-06-01
\IfPackageAtLeastTF{pdfmanagement-testphase}{2022-09-26}% (Version 0.95s)
{}%
{\PackageWarning{hgbpdfa}{Package 'pdfmanagement-testphase' 0.95s or higher required, output may not be PDF/A!}}
\DocumentMetadata{pdfstandard=A-2b}
%% Specification of color profiles may follow here!

67
thesis/hgbreport.cls Normal file
View File

@ -0,0 +1,67 @@
%% hgbreport.cls
%% LaTeX template for creating lab and term reports as well as other forms of academic documentation
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wolfgang Hochleitner (wolfgang.hochleitner@fh-hagenberg.at)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
%% Package Information --------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{hgbreport}[2023/11/06]%%AUTO
\typeout{****************** hgbreport.cls (options=\@nameuse{opt@hgbreport.cls}) ***********************}
\RequirePackage{xifthen}
\RequirePackage{ifpdf} % for checking PDF mode
\ifpdf{}% \typeout{hgbreport: *** LaTeX in PDF mode ***}
\else{\errmessage{hgbreport: *** LaTeX NOT running in PDF mode ***}}
\fi
%% Handling class options --------------------------------------------------------------
\DeclareOption{notitlepage}{\PassOptionsToClass{\CurrentOption}{report}}
\DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
% pass all other options to hgb.sty
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{hgb}}
\ProcessOptions*
%% Paper options and style file -----------------------------------------------
\LoadClass[a4paper,11pt,onecolumn]{report}
\RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
\RequirePackage{hgb} % load style file hgb.sty with options registered above
%% Set title font to SF and inject PDF meta-data
\RequirePackage{titling}
\renewcommand{\maketitlehooka}{%
\sffamily%
\hypersetup{
pdftitle={\@title},
pdfauthor={\@author},
pdfsubject={},
pdfcreator={LaTeX using class hgbreport [\hgbDate]},
pdfproducer={pdflatex},
pdfkeywords={}
}%
}
%% Set abstract name to bold
\RequirePackage{abstract}%
\renewcommand{\abstractnamefont}{\sffamily\small\bfseries}
%% Additional Hagenberg packages ----------------------------------------------
\RequirePackage{hgbmath}
\RequirePackage{hgbalgo}
\RequirePackage{hgbheadings}
\RequirePackage{hgbabbrev}
\RequirePackage{hgblistings}
\RequirePackage{hgbbib}
\endinput

585
thesis/hgbthesis.cls Normal file
View File

@ -0,0 +1,585 @@
%% hgbthesis.cls
%% LaTeX template for creating diploma theses, masters's theses, bachelor's theses and other term papers.
%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses
%% Author: Wilhelm Burger (wilbur@ieee.org)
%% GitHub: https://github.com/Digital-Media/HagenbergThesis
%% File encoding: ASCII
%% Package Information --------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{hgbthesis}[2023/11/06]%%AUTO
\RequirePackage{xifthen}
\RequirePackage{ifpdf} % for checking PDF mode
\ifpdf{}% \typeout{hgbthesis: *** LaTeX in PDF mode ***}
\else{\errmessage{hgbthesis: *** LaTeX NOT running in PDF mode ***}}
\fi
%% Commands for Title Pages (used in class options) ---------------------------
\newcommand{\hgb@MainLanguage}{german} % also referenced in hgb.sty
\newcommand{\@mastertitlepages}{}
\newcommand{\@diplomatitlepages}{}
\newcommand{\@bachelortitlepages}{}
\newcommand{\@internshiptitlepages}{}
\newcommand{\@maketitlepages}{\@mastertitlepages} %Default: Master's thesis
\newboolean{hgb@isProposal}
\setboolean{hgb@isProposal}{false}
\newcommand{\@titlepagefont}{\sffamily}
%% Handling class options --------------------------------------------------------------
\DeclareOption{bachelor}{\renewcommand{\@maketitlepages}{\@bachelortitlepages}}
\DeclareOption{master}{\renewcommand{\@maketitlepages}{\@mastertitlepages}}
\DeclareOption{diploma}{\renewcommand{\@maketitlepages}{\@diplomatitlepages}}
\DeclareOption{internship}{\renewcommand{\@maketitlepages}{\@internshiptitlepages}}
\DeclareOption{apa}{\PassOptionsToPackage{\CurrentOption}{hgbbib}}
\DeclareOption{proposal}{\setboolean{hgb@isProposal}{true}} % use with 'bachelor' or 'master' option
% pass all other options to hgb.sty
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{hgb}}
\ProcessOptions*
%% Paper Options and Style File -----------------------------------------------
\LoadClass[a4paper,11pt,oneside]{book}
\RequirePackage[top=36mm,bottom=40mm,left=32mm,right=32mm]{geometry} %showframe
\RequirePackage{hgb} % load style file hgb.sty with options registered above
%% Setup for Pages in the Front Matter ----------------------------------------
% General Commands
\newcommand{\@programtype}{\@MissingArg{Type of degree program not specified!}}
\newcommand{\programtype}[1]{%
\ifthenelse{\isempty{#1}}{}{\renewcommand{\@programtype}{#1}}
}
\newcommand{\@programname}{\@MissingArg{Name of degree program not specified!}}
\newcommand{\programname}[1]{%
\ifthenelse{\isempty{#1}}{}{\renewcommand{\@programname}{#1}}
}
\newcommand{\@placeofstudy}{\@MissingArg{Place of study not specified!}}
\newcommand{\placeofstudy}[1]{%
\ifthenelse{\isempty{#1}}{}{\renewcommand{\@placeofstudy}{#1}}
}
\newcommand{\@advisor}{} % empty by default
\newcommand{\advisor}[1]{%
\renewcommand{\@advisor}{#1}
}
\newcommand{\thesisnumber}[1]{%
\ClassWarning{hgbthesis}{command '\protect\thesisnumber' is not supported any longer.}
}
\newcommand{\coursetitle}[1]{%
\ClassWarning{hgbthesis}{command '\protect\coursetitle' is not supported any longer.}
}
\newcommand{\semester}[1]{%
\ClassWarning{hgbthesis}{command '\protect\semester' is not supported any longer.}
}
\newcommand{\@logofile}[0]{}
\newcommand{\logofile}[1]{%
\renewcommand{\@logofile}{#1}
}
\newcommand{\makelogo}[0]{%
\ifthenelse{\equal{\@logofile}{}}%
{\vspace*{30mm}}%
{\includegraphics[height=30mm]{\@logofile}}%
}
% Special sectioning setup for thesis proposals (called in \@bachelortitlepages):
\newcommand{\@proposalsetup}[0]{%
% remove "Kapitel 1" (titlesec):
\titleformat{\chapter}[display]{\sffamily}{}{0pt}{\Huge}
% define an empty entry format for the TOC chapter numbering (tocbasic)
\newcommand\noentrynumber[1]{}
% set empty number and remove indentation for chapter numbering in TOC (tocbasic)
\DeclareTOCStyleEntry[entrynumberformat=\noentrynumber,numwidth=0pt]{tocline}{chapter}
% remove chapter number from sections and figures (basic LaTeX):
\counterwithout{section}{chapter}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
\counterwithout{equation}{chapter}
\counterwithout{program}{chapter}
\counterwithout{algorithm}{chapter}
% remove chapter number from header (fancyhdr):
\renewcommand{\chaptermark}[1]{\markboth{##1}{}}
}
% Submission Commands
\newcounter{@dayofsubmission}
\newcounter{@monthofsubmission}
\newcounter{@yearofsubmission}
\setcounter{@dayofsubmission}{\the\day}
\setcounter{@monthofsubmission}{\the\month}
\setcounter{@yearofsubmission}{\the\year}
\newcommand{\dateofsubmission}[3]{% %\dateofsubmission{yyyy}{mm}{dd}
\setcounter{@yearofsubmission}{#1}
\setcounter{@monthofsubmission}{#2}
\setcounter{@dayofsubmission}{#3}
}
% Internship Report Commands
\newcommand{\@companyName}{\@MissingArg{Company not specified!}}
\newcommand{\companyName}[1]{%
\ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyName}{#1}}
}
\newcommand{\@companyUrl}{\@MissingArg{Company URL not specified!}}
\newcommand{\companyUrl}[1]{%
\ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyUrl}{#1}}
}
\newcommand{\companyPhone}[1]{%
\ClassWarning{hgbthesis}{command '\protect\companyPhone' is not supported any longer.}
}
%% ----------------------------------------------------------------------------
\newcommand{\@license}{\@MissingArg{License information is missing!}}
\newcommand{\license}[1]{%
\renewcommand{\@license}{#1}
}
%% Commands for Creating the Title Pages --------------------------------------
%% dirty trick: adds blank space after each letter (https://stackoverflow.com/a/3951837)
\newcommand{\@addspaces}[1]{%
\@tfor\letter:=#1\do{%
\letter\thinspace% %\space
}\negthinspace%
}
\newcommand{\@bachelortitlefinal}{
% use language switch to add english term
\@addspaces{BACHELORARBEIT}%
}
\newcommand{\@bachelortitleproposal}{
% use language switch to add english term
\@addspaces{BACHELORARBEIT} \space (\@addspaces{EXPOS{É}})%
}
\newcommand{\@makebachelortitle}{%
\begin{titlepage}%
\begin{german}
\rule{0mm}{1mm}%
\vspace*{0mm}%
\begin{center}%
\@titlepagefont%
\setlength{\unitlength}{1cm}%
\parbox[c][5cm][c]{12cm}{%
\centering\LARGE\bfseries%
\setlength{\baselineskip}{25pt}%
\@title%
}
\vskip 15mm%
{\large\@author}%
\vskip 15mm%
\makelogo%
\vskip 15mm%
%
\ifthenelse{\boolean{hgb@isProposal}}%
{\Large{\@bachelortitleproposal}}%
{\Large{\@bachelortitlefinal}}%
\vskip 4mm%
%
{\large eingereicht am} \vskip 1mm {\@programtype}%
\vskip 4mm%
{\large\@programname}%
\vskip 4mm%
{\large in \@placeofstudy}%
\vskip 16mm%
{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
\end{center}%
\vfil%
\end{german}
\end{titlepage}%
}
\newcommand{\@mastertitlefinal}{
% use language switch to add english term
\@addspaces{MASTERARBEIT}%
}
\newcommand{\@mastertitleproposal}{
% use language switch to add english term
\@addspaces{MASTERARBEIT} \space (\@addspaces{EXPOS{É}})%
}
\newcommand{\@makemastertitle}{%
\begin{titlepage}%
\begin{german}
\rule{0mm}{1mm}%
\vspace*{0mm}%
\begin{center}%
\@titlepagefont %\normalfont
\setlength{\unitlength}{1cm}%
\parbox[c][5cm][c]{12cm}{%
\centering\LARGE\bfseries%%
\setlength{\baselineskip}{25pt}%
\@title%
}
\vskip 15mm%
{\large\@author}%{\large\scshape\@author}%
\vskip 15mm%
\makelogo%
\vskip 15mm%
%
\ifthenelse{\boolean{hgb@isProposal}}%
{\Large{\@mastertitleproposal}}%
{\Large{\@mastertitlefinal}}%
%
\vskip 4mm%
{\large eingereicht am} \vskip 1mm {\@programtype}%
\vskip 4mm%
{\large\@programname}%
\vskip 4mm%
{\large in \@placeofstudy}%
\vskip 16mm%
%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
\end{center}%
\vfil%
\end{german}
\end{titlepage}%
}
\newcommand{\@makediplomatitle}{%
\begin{titlepage}%
\begin{german}
\rule{0mm}{1mm}
\vspace*{0mm}
\begin{center}%
\@titlepagefont %\normalfont
\setlength{\unitlength}{1cm}
\parbox[c][5cm][c]{12cm}{%
\centering\LARGE\bfseries%
\setlength{\baselineskip}{25pt}%
\@title%
}
\vskip 15mm%
{\large\@author}%{\large\scshape\@author}%
\vskip 15mm%
\makelogo%
\vskip 15mm%
{\Large\uppercase{\@addspaces{Diplomarbeit}}}%
\vskip 4mm%
{\large eingereicht am} \vskip 1mm {\@programtype}%
\vskip 4mm%
{\large\@programname}%
\vskip 4mm%
{\large in \@placeofstudy}%
\vskip 16mm%
%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
\end{center}%
\vfil%
\end{german}
\end{titlepage}%
}
\newcommand{\@makeinternshiptitle}{%
\begin{titlepage}%
\begin{german}
\rule{0mm}{1mm}
\vspace*{0mm}
\begin{center}%
\@titlepagefont %\normalfont
\setlength{\unitlength}{1cm}
\parbox[c][5cm][c]{12cm}{%
\centering\LARGE\bfseries%
\setlength{\baselineskip}{25pt}%
\@title%
}
\vskip 15mm%
{\large\@author}%{\large\scshape\@author}%
\vskip 15mm%
\makelogo%
\vskip 15mm%
{\Large\uppercase{\@addspaces{Praktikumsbericht}}}%
\vskip 4mm%
%{\large Nr.~\@thesisnumber}
%\vskip 4mm%
{\large eingereicht am} \vskip 1mm {\@programtype}%
\vskip 4mm%
{\large\@programname}%
\vskip 4mm%
{\large in \@placeofstudy}%
\vskip 16mm%
%{\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}%
{\large im \DTMgermanmonthname{\value{@monthofsubmission}} \arabic{@yearofsubmission}}%
\end{center}%
\vfil%
\end{german}
\end{titlepage}%
}
% Copyright and License Page --------------------------------------------------
\newcommand{\strictlicense}{%
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{\license{Alle Rechte vorbehalten}}%
{\license{All Rights Reserved}}
}
\newcommand{\@ccLicenseAt}{%
Diese Arbeit wird unter den Bedingungen der
\textsf{Creative Commons Lizenz}
\emph{Attribution-NonCommercial-NoDerivatives 4.0 International}
(CC BY-NC-ND 4.0) ver\"offentlicht --
siehe \url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.}
\newcommand{\@ccLicenseEn}{%
This work is published under the conditions of the
\textsf{Creative Commons License}
\emph{Attribution-NonCommercial-NoDerivatives 4.0 International}
(CC BY-NC-ND 4.0)---see
\url{https://creativecommons.org/licenses/by-nc-nd/4.0/}.}
\newcommand{\cclicense}{%
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{\license{\@ccLicenseAt}} % german CC license text
{\license{\@ccLicenseEn}} % english CC license text (default)
}
\cclicense % Creative Commons License (default)
\newcommand{\@makelicense}{
\sbox\@tempboxa{\@license}%
\ifdim \wd\@tempboxa >\hsize
\begin{sloppypar}\noindent\@license\end{sloppypar}
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
}
\newcommand{\@copyrightpage}{%
\newpage
%\setcounter{page}{2}
\thispagestyle{plain}
\rule{0mm}{1mm}
\vspace*{75mm}
\begin{center}
\textsf{\copyright\ Copyright\ \arabic{@yearofsubmission}\ \@author}
\end{center}
\vspace{8mm}
\@makelicense
}
%% Company Page for Internship Report -----------------------------------------
\newcommand{\@companypage}{%
\newpage
\setcounter{page}{2}
\thispagestyle{plain}
\rule{0mm}{1mm}
\begin{center}
\vspace{25mm}
{Praktikumsstelle:}
\\
\vspace{3mm}
{\Large\sf\@companyName\\ \mbox{}}
\\
{\sf \@companyUrl}
\\
\vspace{45mm}
{Kontaktperson:}
\\
\vspace{3mm}
{\Large\sf\@advisor\\ \mbox{}}
\end{center}
}
%% Advisor Page ----------------------------------------
\newcommand{\@advisorheaderfinal}{
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{Betreuung}%
{Advisor}%
}
\newcommand{\@advisorheaderproposal}{
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{Betreuung (Vorschlag)}%
{Proposed Advisor}%
}
\newcommand{\@advisorpage}{%
\ifthenelse{\equal{\@advisor}{}}% does nothing if advisor not defined
{}{%
\newpage
\setcounter{page}{2}
\thispagestyle{plain}
\rule{0mm}{1mm}
\vspace{90mm}
\begin{center}
\ifthenelse{\boolean{hgb@isProposal}}%
{\@advisorheaderproposal:}%
{\@advisorheaderfinal:}%
\\
\vspace{3mm}
{\Large\sf \@advisor\\ \mbox{}}
\end{center}
}
}
%% Declaration Pages in German and English ------------------------------------
% German
\newcommand{\@declarationpageDe}{%
\begin{german}
\chapter{Erkl\"arung}
\noindent
%Standardfassung der FH-OOe ab 04.04.2012:
Ich erkl\"are eidesstattlich, dass ich die vorliegende Arbeit selbstst\"andig und ohne fremde Hilfe verfasst,
andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als
solche gekennzeichnet habe. Die Arbeit wurde bisher in gleicher oder \"ahnlicher Form keiner anderen
Pr\"ufungsbeh\"orde vorgelegt.
Die vorliegende, gedruckte Arbeit ist mit dem elektronisch \"ubermittelten Textdokument identisch.
\par
\vspace{10mm}
\noindent
%\@placeofstudy, am \formatdate{\value{@dayofsubmission}}{\value{@monthofsubmission}}{\value{@yearofsubmission}}
\@placeofstudy, am \DTMdate{\value{@yearofsubmission}-\value{@monthofsubmission}-\value{@dayofsubmission}}
\par
\vspace{12mm}
\noindent
\@author
\end{german}
}
% English
\newcommand{\leadingzero}[1]{\ifnum #1<10 0\the#1\else\the#1\fi}
\newcommand{\@declarationpageEn}{%
\begin{english}
\chapter{Declaration}
\noindent
I hereby declare and confirm that this thesis is entirely the result of my own original work.
Where other sources of information have been used, they have been indicated as such and properly
acknowledged. I further declare that this or similar work has not been submitted for credit elsewhere.
This printed copy is identical to the submitted electronic version.
\par
\vspace{10mm}
\noindent
%\@placeofstudy, \the\year-\leadingzero{\month}-\leadingzero{\day} %http://de.wikibooks.org/wiki/LaTeX-W%F6rterbuch:_today
%\@placeofstudy, {\usdate\formatdate{\value{@dayofsubmission}}{\value{@monthofsubmission}}{\value{@yearofsubmission}}}
\@placeofstudy, \DTMdate{\value{@yearofsubmission}-\value{@monthofsubmission}-\value{@dayofsubmission}}
\par
\vspace{12mm}
\noindent
\@author
\end{english}
}
\newcommand{\@declarationpage}{%
\ifthenelse{\equal{\hgb@MainLanguage}{german}}%
{\@declarationpageDe}%
{\@declarationpageEn}
}
%% Assembly of title pages ----------------------------------------------------
\renewcommand{\@bachelortitlepages}{
\@makebachelortitle%
\ifthenelse{\boolean{hgb@isProposal}}%
{% thesis proposal:
\@proposalsetup%
\@advisorpage%
%no copyright page for proposals
%no declaration page for proposals
}%
{% final thesis:
\@advisorpage%
\@copyrightpage%
\@declarationpage%
}%
}
\renewcommand{\@mastertitlepages}{
\@makemastertitle
\ifthenelse{\boolean{hgb@isProposal}}%
{% thesis proposal:
\@proposalsetup%
\@advisorpage%
%no copyright page for proposals
%no declaration page for proposals
}%
{% final thesis:
\@advisorpage%
\@copyrightpage%
\@declarationpage%
}%
}
\renewcommand{\@diplomatitlepages}{
\@makediplomatitle
%\ifthenelse{\equal{\@advisor}{}}%
%{}{\@advisorpage}%
\@advisorpage
\@copyrightpage
\@declarationpage
}
\renewcommand{\@internshiptitlepages}{
\@makeinternshiptitle
\@companypage
\@copyrightpage
\@declarationpage
}
\newcommand{\@warnmultipleauthors}%
{\PackageWarning{hagenberg-thesis}{Multiple authors are not supported ('\@backslashchar and' is ignored)!}}%
% Add PDF meta data and create title pages
\renewcommand{\maketitle}{ %replace standard LaTeX-command
\def\and{\@warnmultipleauthors}% suppress \and inside \author{..}
\renewcommand{\thanks}[1]{}% suppress \thanks{..} inside \author{..}
\hypersetup{
pdftitle={\@title},
pdfauthor={\@author},
pdfsubject={\@programtype~\@programname,~\@placeofstudy},
pdfcreator={LaTeX using class hgbthesis [\hgbDate]},
pdfproducer={pdflatex},
pdfkeywords={},
pageanchor=false % disable hyperref page anchors in frontmatter pages
}%
\@maketitlepages
\hypersetup{pageanchor=true} % enable hyperref page anchors in the main document
}
%% Additional Hagenberg packages ----------------------------------------------
\RequirePackage{hgbmath}
\RequirePackage{hgbalgo}
\RequirePackage{hgbheadings}
\RequirePackage{hgbabbrev}
\RequirePackage{hgblistings}
\RequirePackage{hgbbib}
\endinput

BIN
thesis/images/logo.pdf Normal file

Binary file not shown.

BIN
thesis/main.pdf Normal file

Binary file not shown.

92
thesis/main.tex Normal file
View File

@ -0,0 +1,92 @@
%%% File encoding: UTF-8
%%% äöüÄÖÜß <-- no German umlauts here? Use an UTF-8 compatible editor!
%%% Magic comments for setting the correct parameters in compatible IDEs
% !TeX encoding = utf8
% !TeX program = pdflatex
% !TeX spellcheck = de_DE
% !BIB program = biber
\RequirePackage[utf8]{inputenc} % Remove when using lualatex or xelatex!
\RequirePackage{hgbpdfa} % Creates a PDF/A-2b compliant document
\documentclass[master,english,smartquotes,apa]{hgbthesis}
% Valid options in [..]:
% Type of work: 'diploma', 'master' (default), 'bachelor', 'internship'
% Additionally for a thesis exposé: 'proposal (for 'bachelor' and 'master')
% Main language: 'german' (default), 'english'
% Turn on smart quote handling: 'smartquotes'
% APA bibliography style: 'apa'
%%%-----------------------------------------------------------------------------
\graphicspath{{images/}} % Location of images and graphics
\logofile{logo} % Logo file: images/logo.pdf (no logo: \logofile{})
\bibliography{references} % Biblatex bibliography file (references.bib)
%%%-----------------------------------------------------------------------------
\begin{document}
%%%-----------------------------------------------------------------------------
%%%-----------------------------------------------------------------------------
% Title page entries
%%%-----------------------------------------------------------------------------
\title{Interpreter and Transpiler for simple expressions on Nvidia GPUs using Julia}
\author{Daniel Wiplinger}
\programname{Software Engineering}
%\programtype{Fachhochschul-Bachelorstudiengang} % select/edit
\programtype{Fachhochschul-Masterstudiengang}
\placeofstudy{Hagenberg}
\dateofsubmission{2025}{01}{01} % {YYYY}{MM}{DD}
\advisor{DI Dr. Gabriel Kronberger} % optional
%\strictlicense % restrictive license instead of Creative Commons (discouraged!)
%%%-----------------------------------------------------------------------------
\frontmatter % Front part (roman page numbers)
%%%-----------------------------------------------------------------------------
\maketitle
\tableofcontents
\include{front/abstract}
\include{front/kurzfassung}
%%%-----------------------------------------------------------------------------
\mainmatter % Main part (arabic page numbers)
%%%-----------------------------------------------------------------------------
\include{chapters/introduction}
\include{chapters/relwork}
\include{chapters/conceptdesign}
\include{chapters/implementation}
\include{chapters/evaluation}
\include{chapters/conclusion}
%%%-----------------------------------------------------------------------------
\appendix % Appendix
%%%-----------------------------------------------------------------------------
% \include{back/appendix_a} % Technical supplements
% \include{back/appendix_b} % Contents of the CD-ROM/DVD
% \include{back/appendix_c} % Chronological list of changes
% \include{back/appendix_d} % Source text of this document
%%%-----------------------------------------------------------------------------
\backmatter % Back part (bibliography, glossary, etc.)
%%%-----------------------------------------------------------------------------
\MakeBibliography % References
%%%-----------------------------------------------------------------------------
% Special page for checking print size
%%%-----------------------------------------------------------------------------
\include{back/printbox}
%%%-----------------------------------------------------------------------------
\end{document}
%%%-----------------------------------------------------------------------------

544
thesis/references.bib Normal file
View File

@ -0,0 +1,544 @@
%%% Biber accepts '%' for marking comments
@book{BachBWV988,
author={Bach, Johann Sebastian},
title={Goldberg-Variationen für Streichquartett, BWV 988},
editor={Anka, Dana},
publisher={Musikverlag Hans Sikorski},
location={Hamburg},
date={2017},
langid={ngerman}
}
@thesis{Bacher2004,
author={Bacher, Florian},
title={Interaktionsmöglichkeiten mit Bildschirmen und großflächigen Projektionen},
type={bathesis},
date={2004-06},
institution={University of Applied Sciences Upper Austria, Medientechnik und {-design}},
location={Hagenberg, Austria},
langid={ngerman}
}
@manual{Bezos2023,
author={Bezos, Javier and Braams, Johannes L.},
title={Babel},
subtitle={Localization and internationalization},
date={2023-10-25},
version={3.96},
url={http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf},
langid={english}
}
@incollection{BurgeBurger1999,
author={Burge, Mark and Burger, Wilhelm},
title={Ear Biometrics},
booktitle={Biometrics},
booksubtitle={Personal Identification in Networked Society},
publisher={Kluwer Academic Publishers},
date={1999},
location={Boston},
editor={Jain, Anil K. and Bolle, Ruud and Pankanti, Sharath},
chapter={13},
pages={273-285},
doi={10.1007/0-306-47044-6_13},
langid={english}
}
@inproceedings{Burger1987,
author={Burger, Wilhelm and Bhanu, Bir},
title={Qualitative Motion Understanding},
booktitle={Proceedings of the Tenth International Joint Conference on Artificial Intelligence},
date={1987-08},
editor={McDermott, John P.},
eventdate={1987-08-23/1987-08-28},
venue={Milano},
publisher={Morgan Kaufmann Publishers},
location={San Francisco},
pages={819-821},
doi={10.1007/978-1-4615-3566-9},
langid={english}
}
@book{BurgerBurge2022,
author={Burger, Wilhelm and Burge, Mark James},
title={Digital Image Processing},
subtitle={An Algorithmic Introduction},
publisher={Springer},
location={Cham},
edition={3},
date={2022},
doi={10.1007/978-3-031-05744-1},
langid={english}
}
@manual{Carlisle2021,
author={Carlisle, David P.},
title={Packages in the {`graphics'} bundle},
date={2021-03-05},
url={http://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf},
langid={english}
}
@image{CocaCola1940,
author={Wolcott, Marion Post},
title={Natchez, Miss.},
note={Library of Congress Prints and Photographs Division Washington, Farm Security Administration/Office of War Information Color Photographs},
date={1940-08},
url={https://www.loc.gov/pictures/item/2017877479/},
langid={english}
}
@unpublished{Dai2016,
author={Dai, Jifeng and Li,Yi and He, Kaiming and Sun, Jian},
title={{R-FCN:} Object Detection via Region-Based Fully Convolutional Networks},
date={2016},
pubstate={prepublished},
doi={10.48550/arXiv.1605.06409},
langid={english}
}
@manual{Daniel2018,
author={Daniel, Marco and Gundlach, Patrick and Schmidt, Walter and Knappen, Jörg and Partl, Hubert and Hyna, Irene},
title={\LaTeX2e-Kurzbeschreibung},
date={2018-04-08},
version={3.0c},
url={http://mirrors.ctan.org/info/lshort/german/l2kurz.pdf},
langid={ngerman}
}
@report{Drake1948,
author={Drake, Hubert M. and McLaughlin, Milton D. and Goodman, Harold R.},
title={Results obtained during accelerated transonic tests of the {Bell} {XS-1} airplane in flights to a {MACH} number of 0.92},
type={techreport},
institution={NASA Dryden Flight Research Center},
date={1948-01},
location={Edwards, CA},
number={NACA-RM-L8A05A},
url={https://www.nasa.gov/centers/dryden/pdf/87528main_RM-L8A05A.pdf},
langid={english}
}
@book{Duden1997,
author={Friedrich, Christoph},
title={Schriftliche Arbeiten im technisch-natur\-wissen\-schaft\-lichen Studium},
subtitle={Ein Leitfaden zur effektiven Erstellung und zum Einsatz moderner Arbeitsmethoden},
publisher={Bibliographisches Institut},
series={Duden Taschenbücher},
volume={27},
location={Mannheim},
date={1997},
langid={ngerman}
}
@thesis{Eberl1987,
author={Eberl, Gerhard},
title={Automatischer Landeanflug durch Rechnersehen},
type={phdthesis},
date={1987-08},
institution={Universität der Bundeswehr, Fakultät für Raum- und Luftfahrttechnik},
location={München},
langid={ngerman}
}
@legislation{EuRichtlinie2000,
author={{Europäische Union}},
title={Richtline 2000/14/EG des Europäischen Parlaments und des Rates vom 8.\ Mai 2000 zur
Angleichung der Rechtsvorschriften der Mitgliedstaaten über umweltbelastende Geräuschemissionen
von zur Verwendung im Freien vorgesehenen Geräten und Maschinen},
howpublished={Amtsblatt der Europäischen Gemeinschaften, L 162},
date={2000-05-08},
url={https://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CONSLEG:2000L0014:20051227:de:PDF},
langid={ngerman}
}
@manual{Fear2020,
author={Fear, Simon},
title={Publication quality tables in \LaTeX},
date={2020-01-14},
version={v1.61803398},
url={http://mirrors.ctan.org/macros/latex/contrib/booktabs/booktabs.pdf},
langid={english}
}
@book{Faires1934,
author={Faires, Virgil Moring},
title={Design of Machine Elements},
publisher={The Macmillan Company},
date={1934},
origdate={1920},
note={Originalausgabe 1920},
langid={english}
}
@online{Feder2006,
author={Feder, Alexander},
title={{BibTeX.org}},
date={2006},
url={https://www.bibtex.org/},
urldate={2023-11-06},
langid={english}
}
@legislation{FhStG1993,
title={Bundesgesetz über Fachhochschulen},
titleaddon={Fachhochschulgesetz FHG},
howpublished={BGBl.\ Nr.\ 340/1993, zuletzt geändert mit Bundesgesetz BGBl.\ I Nr.\ 177/2021},
date={1993-05-28},
url={https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10009895},
langid={ngerman}
}
@video{Futurama1999,
author={Groening, Matt},
title={Futurama},
titleaddon={Season 1 Collection},
howpublished={DVD},
date={2002-02},
organization={Twentieth Century Fox Home Entertainment},
langid={english}
}
@incollection{GershwinSummertime,
author={Gershwin, George and Heyward, DuBose},
title={Summertime},
booktitle={The Greatest Songs of George Gershwin},
publisher={Chappel Music},
location={London},
pages={40-43},
date={1979},
langid={english}
}
@book{HaydnCelloConcerto2,
author={Haydn, Josef},
title={Konzert für Violoncello No.\ 2 in D-Dur, Hob.VIIb:2},
editor={Soldan,Kurt},
publisher={C. F. Peters},
location={Leipzig},
date={1920},
langid={ngerman}
}
@book{Hemleben1969,
author={Hemleben, Johannes},
title={Galilei, Galileo},
publisher={rororo},
date={1969},
edition={20},
langid={ngerman}
}
@book{Higham2020,
author={Higham, Nicholas J.},
title={Handbook of Writing for the Mathematical Sciences},
publisher={Society for Industrial and Applied Mathematics (SIAM)},
location={Philadelphia},
edition={3},
date={2020},
url={https://www.maths.manchester.ac.uk/~higham/hwms/},
langid={english}
}
@video{HistoryOfComputers2008,
title={History of Computers},
date={2008-09-24},
url={https://www.youtube.com/watch?v=LvKxJ3bQRKE},
langid={english}
}
@online{IBM360,
author={IBM},
title={System 360},
subtitle={From Computers to Computer Systems},
date={2012-03-07},
url={https://www.ibm.com/ibm/history/ibm100/us/en/icons/system360/impacts/},
urldate={2023-11-06},
langid={english}
}
@manual{Kime2023,
author={Kime, Philip and Wemheuer, Moritz and Lehman, Philipp},
title={The \texttt{biblatex} Package},
subtitle={Programmable Bibliographies and Citations},
date={2023-03-05},
version={3.19},
url={http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf},
langid={english}
}
@book{Kopka2003,
author={Kopka, Helmut and Daly, Patrick William},
title={Guide to \LaTeX},
series={Tools and Techniques for Computer Typesetting},
publisher={Addison-Wesley},
location={Reading, MA},
date={2003},
edition={4},
langid={english}
}
@book{Lamport1994,
author={Lamport, Leslie},
title={{LaTeX}, A Document Preparation System},
subtitle={User's Guide and Reference Manual},
publisher={Addison-Wesley},
location={Reading, MA},
date={1994},
edition={2},
langid={english}
}
@book{Lamport1995,
author={Lamport, Leslie},
title={Das {LaTeX}-Handbuch},
publisher={Addison-Wesley},
location={Reading, MA},
date={1995},
edition={3},
langid={ngerman}
}
@software{LegendOfZelda1998,
author={Miyamoto, Shigeru and Aonuma, Eiji and Koizumi, Yoshiaki},
title={The Legend of Zelda: Ocarina of Time},
howpublished={N64 Cartridge},
publisher={Nintendo},
date={1998-11},
langid={english}
}
@thesis{Loimayr2019,
author={Loimayr, Nora},
title={Utilization of GPU-Based Smoothed Particle Hydrodynamics for Immersive Audiovisal Experiences},
type={mathesis},
date={2019-11-26},
institution={University of Applied Sciences Upper Austria, Interactive Media},
location={Hagenberg, Austria},
url={https://theses.fh-hagenberg.at/thesis/Loimayr19},
langid={english}
}
@article{Mermin1989,
author={Mermin, Nathaniel David},
title={What's Wrong with these Equations?},
journaltitle={Physics Today},
volume={42},
number={10},
date={1989},
pages={9-11},
doi={10.1063/1.2811173},
langid={english}
}
@manual{Mittelbach2023,
author={Mittelbach, Frank and Schöpf, Rainer and Downes, Michael and Jones, David M. and Carlisle, David},
title={The \texttt{amsmath} package},
date={2023-05-13},
version={2.17o},
url={http://mirrors.ctan.org/macros/latex/required/amsmath/amsmath.pdf},
langid={english}
}
@movie{Nosferatu1922,
title={Nosferatu -- A Symphony of Horrors},
howpublished={Film},
date={1922},
note={Drehbuch/Regie: F.\ W.\ Murnau. Mit Max Schreck, Gustav von Wangenheim, Greta Schröder.},
langid={english}
}
@manual{Oetiker2021,
author={Oetiker, Tobias and Partl, Hubert and Hyna, Irene and Schlegl, Elisabeth},
title={The Not So Short Introduction to \LaTeXe},
subtitle={Or \LaTeXe in 139 minutes},
date={2021-03-09},
version={6.4},
url={http://mirrors.ctan.org/info/lshort/english/lshort.pdf},
langid={english}
}
@legislation{OoeRaumordnungsgesetz1994,
title={Landesgesetz vom 6. Oktober 1993 über die Raumordnung im Land Oberösterreich},
titleaddon={Oö. Raumordnungsgesetz 1994 - Oö. ROG 1994},
howpublished={LGBl.Nr. 114/1993 zuletzt geändert durch LGBl.Nr. 125/2020},
date={1993-12-23},
url={https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=LrOO&Gesetzesnummer=10000370},
langid={ngerman}
}
@manual{Oostrum2022,
author={Oostrum, {Pieter van}},
title={The \textrm{fancyhdr} and \textrm{extramarks} packages},
date={2022-11-09},
version={4.1},
url={http://mirrors.ctan.org/macros/latex/contrib/fancyhdr/fancyhdr.pdf},
langid={english}
}
@manual{Pakin2021,
author={Pakin, Scott},
title={The Comprehensive {\LaTeX} Symbol List},
date={2021-05-05},
url={http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf},
langid={english}
}
@manual{Patashnik1988,
author={Patashnik, Oren},
title={{BiBTeXing}},
date={1988-02-08},
url={http://mirrors.ctan.org/biblio/bibtex/base/btxdoc.pdf},
langid={english}
}
@patent{Pike2008,
author={Pike, Dion},
title={Master-slave communications system and method for a network element},
type={US Patent},
holder={Alcatel-Lucent SAS},
number={7,460,482},
date={2008-12-02},
url={https://patents.google.com/patent/US7460482},
langid={english}
}
@movie{Psycho1960,
title={Psycho},
howpublished={Film},
date={1960},
note={Regie: Alfred Hitchcock,
Drehbuch: Joseph Stefano.
Nach dem Roman von Robert Bloch.
Mit Anthony Perkins, Vera Miles, Janet Leigh.},
langid={english}
}
@book{Sedgewick2011,
author={Sedgewick, Robert and Wayne, Kevin},
title={Algorithms},
publisher={Addison-Wesley},
location={Reading, MA},
date={2011},
edition={4},
langid={english}
}
@book{ShostakovichOp110,
author={Shostakovich, Dimitri},
title={Streichquartett Nr.\ 8 in c-Moll, Op.\ 110},
editor={Hans Sikorski},
publisher={G. Schirmer},
location={New York},
date={1960},
langid={ngerman}
}
@manual{Sommerfeldt2023,
author={Sommerfeldt, Axel},
title={Customizing captions of floating environments},
date={2023-07-10},
version={3.6},
url={http://mirrors.ctan.org/macros/latex/contrib/caption/caption.pdf},
langid={english}
}
@software{SpringFramework,
title={Spring Framework},
url={https://github.com/spring-projects/spring-framework},
langid={english}
}
@article{Vardavoulia2001,
author={Vardavoulia, Maria I. and Andreadis, Ioannis and Tsalides, Phillipos},
title={A new vector median filter for colour image processing},
journaltitle={Pattern Recognition Letters},
volume={22},
number={6-7},
pages={675-689},
date={2001},
doi={10.1016/S0167-8655(00)00141-0},
langid={english}
}
@manual{Voss2014,
author={Voß, Herbert},
title={Math mode},
date={2014-01-30},
version={2.47},
url={http://mirrors.ctan.org/obsolete/info/math/voss/mathmode/Mathmode.pdf},
langid={english}
}
@standard{WHATWGHTMLLivingStandard,
author={{Web Hypertext Application Technology Working Group}},
shortauthor={WHATWG},
title={HTML},
titleaddon={Living Standard},
date={2023-11-06},
url={https://html.spec.whatwg.org/multipage/},
langid={english}
}
@online{WikiReliquienschrein2023,
title={Reliquienschrein},
url={https://de.wikipedia.org/wiki/Reliquienschrein},
date={2023-09-22},
urldate={2023-11-06},
langid={ngerman}
}
@online{WikibooksLaTeXLengths2018,
title={LaTeX/Lengths},
url={https://en.wikibooks.org/wiki/LaTeX/Lengths},
date={2018-08-04},
urldate={2023-11-06},
langid={english}
}
@audio{Zappa1995,
author={Zappa, Frank},
title={Freak Out!},
type={audiocd},
date={1995-05},
organization={Rykodisc, New York},
langid={english}
}
%% used in thesis proposal example:
@inproceedings{Finke2008,
author={Finke, Matthias and Tang, Anthony and Leung, Rock and Blackstock, Michael},
title={Lessons Learned: Game Design for Large Public Displays},
booktitle={Proceedings of the 3rd International Conference on Digital Interactive Media in Entertainment and Arts},
series={DIMEA '08},
pages={26-33},
date={2008},
publisher={ACM},
location={New York, NY, USA},
doi={10.1145/1413634.1413644},
langid={english}
}
@inproceedings{Hochleitner2013,
author={Hochleitner, Wolfgang and Lankes, Michael and Diephuis, Jeremiah and Hochleitner, Christina},
title={Limelight -- Fostering Sociability in a Co-located Game},
booktitle={Proceedings of the CHI 2013 Workshop on Designing and Evaluating Sociability in Online Video Games},
series={CHI '13},
pages={23-28},
date={2013},
location={Paris, France},
langid={english}
}
@book{Schell2019,
author={Schell, Jesse},
title={The Art of Game Design},
subtitle={A Book of Lenses},
publisher={CRC Press},
date={2019},
edition={3},
location={Boca Raton, FL, USA},
doi={10.1201/b22101},
langid={english}
}