%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%					
%%																		%%
%%						defaultPreamble.sty								%%
%%																		%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%																		%%
%%	Setup a preamble for document class: article						%%
%%	1.Pagesettings: 													%%
%%		- DIN A4 Paper													%%
%%		- Margin: Top 	 = 20mm											%%
%%				  Right  = 20mm											%%
%%				  Bottom = 30mm											%%
%%				  Left 	 = 30mm											%%
%%		- Header Separation = 10mm										%%
%%		- Footer Separation = 10mm										%%
%%		- Paragraph Spacing = 1.5 * line height							%%
%%																		%%
%%	2.Redefine Pagelayout												%%
%%		- Remove printed page numbers on page 1+2.						%%
%%		- Page 1+2 counts for the table of content.						%%
%%		- Print the page numbering like "Seite" a "von" lastpage 		%%
%%		  to the right bottom corner.									%%
%%																		%%
%%	3.Contain Packages 													%%
%%		- geometry	= Set page settings.								%%
%%		- setspace	= Set linespacing, prevent math formula				%%
%%					  streching.										%%
%%		- pageslts	= Get last page number.								%%
%%		- fancyhr	= Set header, footer and page layout.				%%
%%		- babel 	= Set hyphenation rules to [ngerman].				%%
%%		- inputenc	= Set input encoding to UTF-8 (Umlaute etc.).		%%
%%		- fontenc	= Set font encoding to 8bit (support <,=,>,").		%%
%%		- helvet	= Set fontfamily to Helvetica (sans serif).			%%
%%		- xcolor	= Provides support of font colors.					%%
%%		- hyperref	= Provides support of links (pdf anchor), URL.		%%
%%		- graphicx	= Provides support to add images.					%%
%%		- tabularx	= Provides advanced tabular support.				%%
%%		- pdfpages	= Provides support to include pdf pages.			%%
%%		- amsmath	= Provides advanced math typesetting support.		%%
%%		- amsfonts	= Provides advanced font typesetting support.		%%
%%		- amssymb	= Provides advanced symbol typesetting support.		%%
%%		- blindtext	= Provides support to use Lorem Ipsum text.			%%
%%		- biblatex	= Set biblatex for citation and bibliography		%%
%%					  with biber as backend and the 					%%
%%					  bibliography style 'ieee'.						%%
%%		- enumitem	= Provides support change enum type in options.		%%
%%																		%%
%%	4.Defines New Commands												%%
%%		- \includePdf{filename}		= Include a PDF file.				%%
%%		- \bibfilename{file.bib}	= Set bib file. 					%%
%%		- \printbib					= Print bibliography.				%%
%%		- \b{text}					= Set text to bold format.			%%
%%		- \mono{text}				= Set text to monospace.			%%
%%		- \minsep					= Set item spacing to minimum.		%%
%%		- \clear					= Set fontfamily to ClearSans.		%%
%%									  Default fontfamily is Helvetica.	%%
%%																		%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{defaultPreamble}[2019/03/04 v1.4 DefaultPreamble Package from Erik Roemmelt]%
\ProcessOptions\relax%
%%% Packages %%%
% ___Document___
\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom=30mm, headsep=10mm, footskip=10mm]{geometry} % Set page settings
\RequirePackage[nodisplayskipstretch]{setspace} % Set linespacing and prevent math formula streching
\setstretch{1.5} % Change typeset line spacing by multiplicator 1.0
\RequirePackage[pagecontinue=false,alphMult=0,AlphMulti=0,fnsymbolmult=false,romanMult=false,RomanMulti=false]{pageslts} % Get last page number with \lastpageref{LastPage}
\RequirePackage{fancyhdr} % Set header, footer and page layout.
\pagestyle{fancy} % Set the pagestyle to fancyhdr settings
%%% Fancyhdr Settings %%%
\fancyhf{} % Clear all header and footer fields
\fancyfoot[R]{\ifnum\value{page}<1\relax\else{Seite \thepage \hspace{1pt} von \lastpageref{VeryLastPage}}\fi} % Set page numbering "n / last" in the right field of footer
\renewcommand{\headrulewidth}{0pt} % Set header ruler hidden
\renewcommand{\footrulewidth}{0pt} % Set footer ruler hidden
\fancypagestyle{plain}{% Redefine plain style
	\fancyhf{} % Clear all header and footer fields
	\fancyfoot[R]{\ifnum\value{page}<2\relax\else{Seite \thepage \hspace{1pt} von \lastpageref{VeryLastPage}}\fi} % Set page numbering "n / last" in the right field of footer, skip page numbering on page 1+2
	\renewcommand{\headrulewidth}{0pt} % Set header ruler hidden
	\renewcommand{\footrulewidth}{0pt} % Set footer ruler hidden
}%
% ___Font___
\RequirePackage[ngerman]{babel} % Changes hyphenation rules
\RequirePackage[utf8]{inputenc} % Input encoding: Unicode support (Umlaute etc.)
\RequirePackage{ClearSans} 		% Provide fontfamily Clear Sans (sans serif) for title page
\RequirePackage[scaled]{helvet} % Scales fontfamily Helvetica to .95 (sans serif)
\renewcommand{\familydefault}{\sfdefault} % Changes default font to sans serif Helvetica
%\RequirePackage[default]{sourcesanspro}
%\RequirePackage[sfdefault]{FiraSans} % option 'sfdefault' activates Fira Sans as the default text font
%\renewcommand*\oldstylenums[1]{{\firaoldstyle #1}}
%\RequirePackage[sfdefault,light]{roboto}  % Option 'sfdefault' only if the base font of the document is to be sans serif
\RequirePackage[T1]{fontenc}	% Font encoding: (8bit) Accents support (<,=,>,",...)
\RequirePackage[dvipsnames]{xcolor} % Provides font coloring
\definecolor{editorGray}{rgb}{0.95, 0.95, 0.95}	% Defines a new Color: gray
\definecolor{editorOcher}{rgb}{0.8, 0.4, 0} % #CC6600 -> rgb(204, 102, 0) % New Color Ocher
\definecolor{editorGreen}{rgb}{0, 0.5, 0} % #007C00 -> rgb(0, 124, 0) 	% New Color Green
\RequirePackage{upquote}		% Allow quotes in verbatim and lstlisting
\RequirePackage{listings}	% Allow indention and code colering
\lstdefinelanguage{JavaScript}{% Defines Javascript for lstlisting
	morekeywords={typeof,new,true,false,catch,function,return,null,catch,switch,var,if,in,while,do,else,case,break},morecomment=[s]{/*}{*/},morecomment=[l]//,morestring=[b]",morestring=[b]'}%
\lstdefinelanguage{HTML5}{%  Redefines HTML for lstlisting
	language=html,sensitive=true,alsoletter={<>=-},otherkeywords={% HTML tags
		<html>,<head>,<title>,</title>,<meta,/>,</head>,<body>,<canvas,\/canvas>,<script>,</script>,</body>,</html>,<!,html>,<style>,</style>,><},%
	ndkeywords={%
		% General
		=,%
		% HTML attributes
		charset=,id=,width=,height=,%
		% CSS properties
		border:,transform:,-moz-transform:,transition-duration:,transition-property:,transition-timing-function:},%
	morecomment=[s]{<!--}{-->},tag=[s]}%
\newcommand{\lstsetdefault}{%
\lstset{%
	% Basic design
	backgroundcolor=\color{editorGray},basicstyle={\small\ttfamily},frame=single,columns=fullflexible,%
	% Line numbers
	xleftmargin={0.75cm},numbers=left,stepnumber=1,firstnumber=1,numberfirstline=true,%
	% Code design   
	keywordstyle=\color{blue}\bfseries,commentstyle=\color{darkgray}\ttfamily,ndkeywordstyle=\color{editorGreen}\bfseries,stringstyle=\color{editorOcher},%
	% Code
	language=HTML5,alsolanguage=JavaScript,alsodigit={.:;},tabsize=4,showtabs=false,showspaces=false,showstringspaces=false,extendedchars=true,breaklines=true,%        
	% Support for German umlauts
	literate=%
	{Ö}{{\"O}}1%
	{Ä}{{\"A}}1%
	{Ü}{{\"U}}1%
	{ß}{{\ss}}1%
	{ü}{{\"u}}1%
	{ä}{{\"a}}1%
	{ö}{{\"o}}1%
}}%
\lstsetdefault%
% ___Other___
\RequirePackage{float} % Allow fiqures and enviroments to float
\RequirePackage[hidelinks,pdfpagelabels=true]{hyperref} % Add a link to your document
\RequirePackage{graphicx} % Add pictures to your document
\RequirePackage{tabularx} % Advanced tabular support
\RequirePackage{pdfpages} % Allows to include pdf pages
\RequirePackage{amsmath} % Advanced math typesetting
\RequirePackage{amsfonts} % Advanced font typesetting 
\RequirePackage{amssymb} % Advanced symoblic typesetting
\RequirePackage{blindtext} % Blindtext, Lorem Ipsum text
\RequirePackage[shortlabels]{enumitem} % Allows to change enumerate type easily
% __Bibliography___
\RequirePackage[backend=biber,style=ieee,sorting=nyt]{biblatex} % Use biblatex package
%%% New Commands %%%
% New command for closer spacing in list
\newcommand{\minsep}{\topsep=0pt\itemsep=0pt\parsep=0pt\partopsep=0pt}%
% Add new command to include a pdf file
\newcommand*{\@includePdf}{%
	\PackageWarning{defaultPreamble}{PDF-File does not exist}%
	NoN%
}%
\newcommand{\includePdf}[1]{\includepdf[pages=-,fitpaper=true,frame=false,pagecommand=\thispagestyle{plain}]{#1}}% Insert the name of the pdf file
% Add new command to set file name for *.bib file
\newcommand*{\@bibfilename}{%
	\PackageWarning{defaultPreamble}{Bib-File-Name undefined}%
	NoN%
}%
\newcommand{\bibfilename}[1]{\addbibresource{#1}}% Insert the name of the BibLatex file
% Add new command to print the bibliography
\newcommand{\printbib}{\printbibliography[heading=bibintoc]}% Insert the name of the BibLatex file
% Add new commant to shorten text format command: \textbf
\renewcommand{\b}{\textbf}%
% Add new commant to shorten text format command: \texttt
\newcommand{\mono}{\texttt}%
\endinput % Das ist das Ende von dieser .sty Datei