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
				
			
		
			
				
	
	
		
			352 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			352 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
%% 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
 |