diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/hagenberg-thesis/latex |
Initial commit
Diffstat (limited to 'macros/latex/contrib/hagenberg-thesis/latex')
10 files changed, 1846 insertions, 0 deletions
diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgb.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgb.sty new file mode 100644 index 0000000000..276eba02ed --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgb.sty @@ -0,0 +1,305 @@ +%% hgb.sty +%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses +%% Author: Wilhelm Burger (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\NeedsTeXFormat{LaTeX2e} +\newcommand{\hgbDate}{2019/05/11} % version string +\ProvidesPackage{hgb}[\hgbDate] +\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} + +% 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}} +\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}}% + +%% ------------------------------------------------------ + +\RequirePackage{datetime} +\RequirePackage{upquote} % uses "right" quotes in the verbatim environment +\RequirePackage{eurosym} % provides \euro - conflict with marvosym on \EUR! + +\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 = {0 0 0.8}, % dark blue border for all types of links + breaklinks = true % allow links to break over lines by making links over multiple lines +} %see https://www.tug.org/applications/hyperref/manual.html + +% 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 'SuperPar' has been removed.} +} + +% 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} + + +% 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}}{}% + + +%% Date-related commands ------------------------------------------------------ + +\RequirePackage{datetime} +\showdowfalse % do not show day of week + +% adapted from \newdate in datetime.sty +\newcommand*{\@modifydate}[4]{% +\@namedef{date@#1@d}{#2}% +\@namedef{date@#1@m}{#3}% +\@namedef{date@#1@y}{#4}% +} + +\newdate{hgb@date}{\the\day}{\the\month}{\the\year} +\newcommand{\Date}[3]{% example for use: \Date{16}{5}{2008} + \@modifydate{hgb@date}{#1}{#2}{#3} +} + +\newcommand{\hgb@GetDateDay}{\getdateday{hgb@date}} +\newcommand{\hgb@GetDateMonth}{\getdatemonth{hgb@date}} +\newcommand{\hgb@GetDateYear}{\getdateyear{hgb@date}} +\newcommand{\hgb@DisplayDate}{\displaydate{hgb@date}} + +%% 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] +} + +%% For inserting foreign PDF pages -------------------------------------------- + +\RequirePackage{pdfpages} + +%% 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. + +\newcommand{\subfigure}{% +\PackageError{hgb}{Use of the 'subfigure' package is not supported in this setup, because it is obsolete}{}} + +%% ---------------------------------------------------------------------------- + +\setlength{\fboxsep}{0mm} %globally zero fbox separator diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbabbrev.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgbabbrev.sty new file mode 100644 index 0000000000..85284609fe --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbabbrev.sty @@ -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 (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\ProvidesPackage{hgbabbrev}[2019/05/11] + +\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} diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbalgo.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgbalgo.sty new file mode 100644 index 0000000000..fdf6e52f49 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbalgo.sty @@ -0,0 +1,109 @@ +%% hgbalgo.sty + +%% Toward better looking algorithms ... +%% This package imports and pre-configures the 'algorithmicx'/'algorithmicpseudocode' packages +%% (see https://ctan.org/pkg/algorithmicx), 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 (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\ProvidesPackage{hgbalgo}[2019/05/11] + +\RequirePackage[]{algpseudocode} % imports algpseudocode + algorithmicx (use 'noend' to turn off 'end') +\RequirePackage{calc} % for numeric calculations +\RequirePackage{xcolor} + +% Colors to be used in algorithms (can be redefined locally if desired) +%\definecolor{AlgKeywordColor}{named}{black} +%\definecolor{AlgProcedureColor}{named}{black} +%\definecolor{AlgCommentColor}{named}{black} + +\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}} + +\algrenewcommand\algorithmiccomment[1]{\hfill{\color{AlgCommentColor}\(\triangleright\) #1}}% + +%% algpseudocode assumes that these keywords are non-empty: +%\algrenewcommand\algorithmicprocedure{} % no 'procedure' keyword +%\algrenewcommand\algorithmicfunction{} % no 'function' keyword + +% Use SF font and color for procedure and function names: +\newcommand{\@AlgTextProc}[1]{\textcolor{AlgProcedureColor}{\textsf{#1}}} +\algrenewcommand\textproc{\@AlgTextProc} + +% Redefinitions to remove wrong space when \algorithmicprocedure is empty. +% Inserts an empty () parameter list when no parameters are supplied: +\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}[2]{% + \ifthenelse{\equal{\algorithmicprocedure}{}}% + {}{\algorithmicprocedure\ }% + \textproc{#1}\hskip0.75pt(#2)}% + {\algorithmicend\ \algorithmicprocedure}% + +\algdef{SE}[FUNCTION]{Function}{EndFunction}[2]{% + \ifthenelse{\equal{\algorithmicfunction}{}}% + {}{\algorithmicfunction\ }% + \textproc{#1}\hskip0.75pt(#2)}% + {\algorithmicend\ \algorithmicfunction}% + +%\algrenewcommand\Call[2]{\textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}% +\algrenewcommand\Call[2]{\textproc{#1}\hskip0.75pt(#2)}% + +%% ----------------------------------------------------------------- + +\newlength{\@AlgTmpIndent} + +%% New public macros: + +% \StateLong{<text>} creates numbered statements like algorithmicx's \State command but +% provides consistent indentation on multi-line statements. +% Note that the statement text must be passed as an argument in {...} brackets +\newcommand*{\StateL}[1]{\State \parbox[t]{\linewidth-\ALG@thistlm}{#1\strut}}% + +% \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. +\newcommand{\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>} +\algnewcommand\Output[1]{\StateNN[1]{\textbf{Output:} #1}}% use to describe output values: \Output{<description>} +\algnewcommand\Returns[1]{\StateNN[1]{\textbf{Returns} #1}}% use to describe what a procedure/function returns: \Returns{<description} + + +% '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}}{}% diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbarticle.cls b/macros/latex/contrib/hagenberg-thesis/latex/hgbarticle.cls new file mode 100644 index 0000000000..00797a09d8 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbarticle.cls @@ -0,0 +1,76 @@ +%% 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}[2019/05/11] + +\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{english}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{smartquotes}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption*{\ClassWarning{hgbarticle}{Unknown document option '\CurrentOption'.}} +\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 +\RequirePackage{titling} +\renewcommand{\maketitlehooka}{\sffamily} + +%% Set abstract name to bold (single column format only) +\if@twocolumn% +\else% +\RequirePackage{abstract} +\renewcommand{\abstractnamefont}{\sffamily\small\bfseries} +\fi% + +% Add PDF meta data + +\AtBeginDocument{% + \hypersetup{ + pdftitle={\@title}, + pdfauthor={\@author}, + pdfsubject={}, + pdfcreator={LaTeX using class hgbarticle [\hgbDate]}, + pdfproducer={pdflatex}, + pdfkeywords={} + }% +}% + + +%% Additional Hagenberg packages ---------------------------------------------- + +\RequirePackage{hgbmath} +\RequirePackage{hgbalgo} +\RequirePackage{hgbheadings} +\RequirePackage{hgbabbrev} +\RequirePackage{hgblistings} +\RequirePackage{hgbbib} + +\endinput diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbbib.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgbbib.sty new file mode 100644 index 0000000000..2cb82d3961 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbbib.sty @@ -0,0 +1,177 @@ +%% hgbbib.sty +%% Bibliography Setup +%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses +%% Author: Wilhelm Burger (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\ProvidesPackage{hgbbib}[2019/05/11] + +\usepackage{csquotes} % recommended for biblatex + +%Note: biblatex with bibtex backend is frozen at version 1.7. +\usepackage[style=numeric-comp,backend=biber,bibencoding=auto]{biblatex} +\ExecuteBibliographyOptions{ + bibwarn=true, + sortcites=true, + defernumbers=true, + isbn=false, + doi=false, + backref=true, + backrefstyle=three} + +%% titles of reference section + 3 categories of references: +\newcommand{\@bibtitle}{Quellenverzeichnis} +\newcommand{\@bibtitleLiteratur}{Literatur} +\newcommand{\@bibtitleAvmedia}{Audiovisuelle Medien} +\newcommand{\@bibtitleOnline}{Online-Quellen} +\newcommand{\@bibtitleSoftware}{Software} + +\ifthenelse{\equal{\hgb@MainLanguage}{english}}{% + \renewcommand{\@bibtitle}{References} + \renewcommand{\@bibtitleLiteratur}{Literature} + \renewcommand{\@bibtitleAvmedia}{Audio-visual media} + \renewcommand{\@bibtitleOnline}{Online sources} + \renewcommand{\@bibtitleSoftware}{Software} +}{} + +%% categories for a split bibliography (order of declaration is important!) +\DeclareBibliographyCategory{literature} +\DeclareBibliographyCategory{avmedia} +\DeclareBibliographyCategory{software} +\DeclareBibliographyCategory{online} + +%% headings for the bibliography categories +\defbibheading{literature}{% + \phantomsection% + \section*{\@bibtitleLiteratur}% + \addcontentsline{toc}{section}{\@bibtitleLiteratur}% +} + +\defbibheading{avmedia}{% + \pagebreak[3]% + \phantomsection% + \section*{\@bibtitleAvmedia}% + \addcontentsline{toc}{section}{\@bibtitleAvmedia}% +} + +\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{avmedia}{#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}% +} + +%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} + + +% 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 +% Modified from http://mirrors.ibiblio.org/CTAN/macros/latex/contrib/biblatex-contrib/biblatex-ieee/ieee.cbx +% See also https://tex.stackexchange.com/questions/344861/biblatex-backref-option-per-entry +\DeclareCiteCommand{\citenobr}% + {\usebibmacro{cite:init}% + \bibopenbracket + \backtrackerfalse\usebibmacro{prenote}} + {\usebibmacro{citeindex}% + \usebibmacro{cite:comp}} + {} + {\usebibmacro{cite:dump}% + \usebibmacro{postnote}% + \bibclosebracket + } diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbheadings.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgbheadings.sty new file mode 100644 index 0000000000..7c3120cd5f --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbheadings.sty @@ -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 (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\ProvidesPackage{hgbheadings}[2019/05/11] + +\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} +} + diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty new file mode 100644 index 0000000000..cf4c5cd504 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgblistings.sty @@ -0,0 +1,406 @@ +%% hgblistings.sty +%% This file is part of the Hagenberg Thesis package for creating bachelors's and masters's theses +%% Author: Wilhelm Burger (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: UTF-8 + +\ProvidesPackage{hgblistings}[2019/05/11] + +\RequirePackage{ifthen} +\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={color,background,margin,padding,font,weight,display,position,top,% + left,right,bottom,list,style,border,size,white,space,min,width}, + sensitive=false, + morecomment=[l]{//}, + morecomment=[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, 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}}% +{} + + +% 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}% diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbmath.sty b/macros/latex/contrib/hagenberg-thesis/latex/hgbmath.sty new file mode 100644 index 0000000000..068eb2c553 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbmath.sty @@ -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 (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hgbmath}[2019/05/11] + +\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}}}
\ No newline at end of file diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbreport.cls b/macros/latex/contrib/hagenberg-thesis/latex/hgbreport.cls new file mode 100644 index 0000000000..e53d369b5a --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbreport.cls @@ -0,0 +1,72 @@ +%% 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}[2019/05/11] + +\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{english}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{smartquotes}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption*{\ClassWarning{hgbreport}{Unknown document option '\CurrentOption'.}} +\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 +\RequirePackage{titling} +\renewcommand{\maketitlehooka}{\sffamily} + +%% Set abstract name to bold +\RequirePackage{abstract}% +\renewcommand{\abstractnamefont}{\sffamily\small\bfseries} + + +% Add PDF meta data + +\AtBeginDocument{% + \hypersetup{ + pdftitle={\@title}, + pdfauthor={\@author}, + pdfsubject={}, + pdfcreator={LaTeX using class hgbreport [\hgbDate]}, + pdfproducer={pdflatex}, + pdfkeywords={} + }% +}% + + +%% Additional Hagenberg packages ---------------------------------------------- + +\RequirePackage{hgbmath} +\RequirePackage{hgbalgo} +\RequirePackage{hgbheadings} +\RequirePackage{hgbabbrev} +\RequirePackage{hgblistings} +\RequirePackage{hgbbib} + +\endinput diff --git a/macros/latex/contrib/hagenberg-thesis/latex/hgbthesis.cls b/macros/latex/contrib/hagenberg-thesis/latex/hgbthesis.cls new file mode 100644 index 0000000000..2d99fe7e17 --- /dev/null +++ b/macros/latex/contrib/hagenberg-thesis/latex/hgbthesis.cls @@ -0,0 +1,595 @@ +%% 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 (wilhelm.burger@fh-hagenberg.at) +%% GitHub: https://github.com/Digital-Media/HagenbergThesis +%% File encoding: ASCII + +%% Package Information -------------------------------------------------------- + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{hgbthesis}[2019/05/11] + +\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 + + +\newcommand{\@titlepagefont}{\sffamily} + +%% Handling class options -------------------------------------------------------------- + +\DeclareOption{diplom}{% + \renewcommand{\@maketitlepages}{\@diplomatitlepages} + \ClassWarning{hgbthesis}{Deprecated: Document option '\CurrentOption' is deprecated, use 'diploma' instead.} +} + +\DeclareOption{praktikum}{% + \renewcommand{\@maketitlepages}{\@internshiptitlepages} + \ClassWarning{hgbthesis}{Deprecated: Document option '\CurrentOption' is deprecated, use 'internship' instead.} +} + +\DeclareOption{master}{\renewcommand{\@maketitlepages}{\@mastertitlepages}} +\DeclareOption{diploma}{\renewcommand{\@maketitlepages}{\@diplomatitlepages}} +\DeclareOption{bachelor}{\renewcommand{\@maketitlepages}{\@bachelortitlepages}} +\DeclareOption{internship}{\renewcommand{\@maketitlepages}{\@internshiptitlepages}} + +\DeclareOption{english}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{german}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption{smartquotes}{\PassOptionsToPackage{\CurrentOption}{hgb}} +\DeclareOption*{\ClassWarning{hgbthesis}{Unknown document option '\CurrentOption'.}} +\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{\@programname}{\@MissingArg{Degree program not specified!}} +\newcommand{\studiengang}[1]{% + \renewcommand{\@programname}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\studiengang' is deprecated, use '\string\programname' instead.} +} +\newcommand{\programname}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@programname}{#1}} +} + +\newcommand{\@placeofstudy}{\@MissingArg{Place of study not specified!}} +\newcommand{\studienort}[1]{% + \renewcommand{\@placeofstudy}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\studienort' is deprecated, use '\string\placeofstudy' instead.} +} +\newcommand{\placeofstudy}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@placeofstudy}{#1}} +} + +\newcommand{\@advisor}{\@MissingArg{Advisor not specified!}} +\newcommand{\betreuer}[1]{% + \renewcommand{\@advisor}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\betreuer' is deprecated, use '\string\advisor' instead.} +} +\newcommand{\betreuerin}[1]{% + \renewcommand{\@advisor}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\betreuerin' is deprecated, use '\string\advisor' instead.} +} +\newcommand{\advisor}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@advisor}{#1}} +} + +\newcommand{\@thesisnumber}{\@MissingArg{Thesis number not specified!}} +\newcommand{\nummer}[1]{% + \renewcommand{\@thesisnumber}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\nummer' is deprecated, use '\string\thesisnumber' instead.} +} +\newcommand{\thesisnumber}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@thesisnumber}{#1}} +} + +\newcommand{\@coursetitle}{\@MissingArg{Course not specified!}} +\newcommand{\gegenstand}[1]{% + \renewcommand{\@coursetitle}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\gegenstand' is deprecated, use '\string\coursetitle' instead.} +} +\newcommand{\coursetitle}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@coursetitle}{#1}} +} + +\newcommand{\@semester}{\@MissingArg{Semester not specified!}} +\newcommand{\semester}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@semester}{#1}} +} + +\newcommand{\@logofile}[0]{} +\newcommand{\logofile}[1]{% + \renewcommand{\@logofile}{#1} +} + +\newcommand{\makelogo}[0]{% +\ifthenelse{\equal{\@logofile}{}}% + {\vspace*{30mm}}% + {\includegraphics[height=30mm]{\@logofile}}% +} + +% Submission Commands + +\newcounter{@dayofsubmission} +\newcounter{@monthofsubmission} +\newcounter{@yearofsubmission} + +\setcounter{@dayofsubmission}{\the\day} +\setcounter{@monthofsubmission}{\the\month} +\setcounter{@yearofsubmission}{\the\year} + +\newcommand{\abgabedatum}[3]{% %\abgabedatum{yyyy}{mm}{dd} + \setcounter{@yearofsubmission}{#1} + \setcounter{@monthofsubmission}{#2} + \setcounter{@dayofsubmission}{#3} + \ClassWarning{hgbthesis}{Deprecated: '\string\abgabedatum' is deprecated, use '\string\dateofsubmission{yyyy}{mm}{dd}' instead.} +} +\newcommand{\dateofsubmission}[3]{% %\dateofsubmission{yyyy}{mm}{dd} + \setcounter{@yearofsubmission}{#1} + \setcounter{@monthofsubmission}{#2} + \setcounter{@dayofsubmission}{#3} +} + +\newcommand{\abgabemonat}[1]{% + \ClassWarning{hgbthesis}{Deprecated: '\string\abgabemonat' is deprecated, use '\string\dateofsubmission{yyyy}{mm}{dd}' instead.} +} + +\newcommand{\abgabejahr}[1]{% + \ClassWarning{hgbthesis}{Deprecated: '\string\abgabejahr' is deprecated, use '\string\dateofsubmission{yyyy}{mm}{dd}' instead.} +} + +% Internship Report Commands + +\newcommand{\@companyName}{\@MissingArg{Company not specified!}} +\newcommand{\firma}[1]{% + \renewcommand{\@companyName}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\firma' is deprecated, use '\string\companyName' instead.} +} +\newcommand{\companyName}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyName}{#1}} +} + +\newcommand{\@companyUrl}{\@MissingArg{Company URL not specified!}} +\newcommand{\firmenUrl}[1]{% + \renewcommand{\@companyUrl}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\firmenUrl' is deprecated, use '\string\companyUrl' instead.} +} +\newcommand{\companyUrl}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyUrl}{#1}} +} + +\newcommand{\@companyPhone}{\@MissingArg{Company phone number not specified!}} +\newcommand{\firmenTel}[1]{% + \renewcommand{\@companyPhone}{#1} + \ClassWarning{hgbthesis}{Deprecated: '\string\firmenTel' is deprecated, use '\string\companyPhone' instead.} +} +\newcommand{\companyPhone}[1]{% + \ifthenelse{\isempty{#1}}{}{\renewcommand{\@companyPhone}{#1}} + \renewcommand{\@companyPhone}{#1} +} + +\newcommand{\@license}{\@MissingArg{License information is missing!}} +\newcommand{\license}[1]{% + \renewcommand{\@license}{#1} +} + + +%% Commands for Creating the Title Pages -------------------------------------- + +\newcommand{\titelseite}{% + \maketitle + \ClassWarning{hgbthesis}{Deprecated: '\string\titelseite' is deprecated, use '\string\maketitle' instead.} +} + +%% adds blank space after each letter (http://stackoverflow.com/a/3951837) +\newcommand{\@addspaces}[1]{% + \@tfor\letter:=#1\do{% + \letter\thinspace% %\space + }% +} + +\newcommand{\@bachelortitle}{% +\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{Bachelorarbeit}}}% + \vskip 4mm% + {\large Nr.~\@thesisnumber} + \vskip 4mm% + {\large eingereicht am} \vskip 1mm {Fachhochschul-Bachelorstudiengang}% + \vskip 4mm% + {\large\@programname}% + \vskip 4mm% + {\large in \@placeofstudy}% + \vskip 16mm% + {\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}% + \end{center}% + \vfil% + \end{german} +\end{titlepage}% +} + +\newcommand{\@mastertitle}{% +\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{Masterarbeit}}}% + \vskip 4mm% + {\large eingereicht am} \vskip 1mm {Fachhochschul-Masterstudiengang}% + \vskip 4mm% + {\large\@programname}% + \vskip 4mm% + {\large in \@placeofstudy}% + \vskip 16mm% + {\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}% + \end{center}% + \vfil% + \end{german} +\end{titlepage}% +} + +\newcommand{\@diplomatitle}{% +\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 {Fachhochschul-Diplomstudiengang}% + \vskip 4mm% + {\large\@programname}% + \vskip 4mm% + {\large in \@placeofstudy}% + \vskip 16mm% + {\large im \monthname[\value{@monthofsubmission}] \arabic{@yearofsubmission}}% + \end{center}% + \vfil% + \end{german} +\end{titlepage}% +} + +\newcommand{\@internshiptitle}{% +\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}% + Endbericht zum Berufspraktikum% + } + \vskip 15mm% + {\large\@author}%{\large\scshape\@author}% + \vskip 15mm% + \makelogo% + \vskip 15mm% + {\Large\uppercase{\@addspaces{Bachelorarbeit}}}% + \vskip 4mm% + {\large Nr.~\@thesisnumber} + \vskip 4mm% + {\large eingereicht am} \vskip 1mm {Fachhochschul-Bachelorstudiengang}% + \vskip 4mm% + {\large\@programname}% + \vskip 4mm% + {\large in \@placeofstudy}% + \vskip 16mm% + {\large im \monthname[\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 \@companyPhone} +\\ +{\sf \@companyUrl} +\\ +\vspace{45mm} +{Kontaktperson:} +\\ +\vspace{3mm} +{\Large\sf\@advisor\\ \mbox{}} +\end{center} +} + + +%% Advisor Pages in German and English ---------------------------------------- + +% German + +\newcommand{\@advisorpageDe}{% + \newpage + \setcounter{page}{2} + \thispagestyle{plain} + \rule{0mm}{1mm} + \begin{center} + % + \vspace{40mm} + {Diese Arbeit entstand im Rahmen des Gegenstands}\\ + \vspace{6mm} + {\Large\sf \@coursetitle\\ \mbox{}}\\ + \medskip + im\\ + \bigskip + {\@semester}\\ + % + \vspace{45mm} + {Betreuung:}\\ + \vspace{3mm} + {\Large\sf \@advisor\\ \mbox{}} + \end{center} +} + +% English + +\newcommand{\@advisorpageEn}{% + \newpage + \setcounter{page}{2} + \thispagestyle{plain} + \rule{0mm}{1mm} + \begin{center} + % + \vspace{40mm} + {This thesis was created as part of the course}\\ + \vspace{6mm} + {\Large\sf \@coursetitle\\ \mbox{}}\\ + \medskip + during\\ + \bigskip + {\@semester}\\ + % + \vspace{45mm} + {Advisor:}\\ + \vspace{3mm} + {\Large\sf \@advisor\\ \mbox{}} + \end{center} +} + +\newcommand{\@advisorpage}{% +\ifthenelse{\equal{\hgb@MainLanguage}{german}}% + {\@advisorpageDe}% + {\@advisorpageEn} +} + + +%% 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. + \par + \vspace{10mm} + \noindent + \@placeofstudy, am \formatdate{\value{@dayofsubmission}}{\value{@monthofsubmission}}{\value{@yearofsubmission}} + \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. + \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}}} + \par + \vspace{12mm} + \noindent + \@author + \end{english} +} + +\newcommand{\@declarationpage}{% +\ifthenelse{\equal{\hgb@MainLanguage}{german}}% + {\@declarationpageDe}% + {\@declarationpageEn} +} + + +%% Assembly of title pages ---------------------------------------------------- + +\renewcommand{\@mastertitlepages}{ + \@mastertitle + \@copyrightpage + \@declarationpage +} + +\renewcommand{\@diplomatitlepages}{ + \@diplomatitle + \@copyrightpage + \@declarationpage +} + +\renewcommand{\@bachelortitlepages}{ + \@bachelortitle + \@advisorpage + \@declarationpage +} + +\renewcommand{\@internshiptitlepages}{ + \@internshiptitle + \@companypage + \@declarationpage +} + +% Add PDF meta data and create title pages + +\renewcommand{\maketitle}{ %replace standard LaTeX-command + \hypersetup{ + pdftitle={\@title}, + pdfauthor={\@author}, + pdfsubject={\@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 |