From 9cb813bf4184e2ba9fe22b8e5c9fb1fbceda861c Mon Sep 17 00:00:00 2001
From: Phan Huy Tran
Date: Wed, 11 Jun 2025 12:24:18 +0200
Subject: [PATCH 01/16] docs: add docs
---
projektdokumentation/.gitignore | 131 +
projektdokumentation/.project | 17 +
projektdokumentation/.texlipse | 13 +
projektdokumentation/Abkuerzungen.tex | 35 +
projektdokumentation/Allgemein/Befehle.tex | 85 +
projektdokumentation/Allgemein/Packages.tex | 196 ++
projektdokumentation/Allgemein/Seitenstil.tex | 83 +
.../Allgemein/Silbentrennung.tex | 3 +
projektdokumentation/Allgemein/natdin.bst | 2234 +++++++++++++++++
projektdokumentation/Anhang.tex | 78 +
.../Anhang/AnhangBenutzerDoku.tex | 15 +
projektdokumentation/Anhang/AnhangDoc.tex | 7 +
.../Anhang/AnhangEntwuerfe.tex | 19 +
.../Anhang/AnhangLastenheft.tex | 22 +
.../Anhang/AnhangPflichtenheft.tex | 52 +
.../Anhang/AnhangRessourcen.tex | 28 +
.../Anhang/AnhangScreenshots.tex | 14 +
projektdokumentation/Anhang/AnhangTest.tex | 9 +
projektdokumentation/Befehle.tex | 4 +
projektdokumentation/Bibliographie.bib | 92 +
.../Bilder/CC-Attribution.pdf | 68 +
projektdokumentation/Bilder/CC-Logo.pdf | Bin 0 -> 3696 bytes
projektdokumentation/Bilder/CC-ShareAlike.pdf | 68 +
projektdokumentation/Bilder/DeckblattIHK.pdf | Bin 0 -> 10388 bytes
.../Bilder/DeckblattIHK_neu.pdf | Bin 0 -> 507627 bytes
projektdokumentation/Bilder/ERDiagramm.pdf | Bin 0 -> 18210 bytes
.../Bilder/Entwicklungsprozess.pdf | Bin 0 -> 315352 bytes
.../Bilder/Klassendiagramm.pdf | Bin 0 -> 31360 bytes
projektdokumentation/Bilder/LogoBetrieb.pdf | Bin 0 -> 224918 bytes
projektdokumentation/Bilder/LogoIHK.pdf | Bin 0 -> 1494 bytes
projektdokumentation/Bilder/MockupModul.pdf | Bin 0 -> 102493 bytes
projektdokumentation/Bilder/MockupModules.pdf | Bin 0 -> 163519 bytes
projektdokumentation/Bilder/MockupTag.pdf | Bin 0 -> 141588 bytes
projektdokumentation/Bilder/UseCase.pdf | Bin 0 -> 56758 bytes
.../Bilder/amortisationgrafik.png | Bin 0 -> 66733 bytes
projektdokumentation/Bilder/database.pdf | Bin 0 -> 24675 bytes
projektdokumentation/Bilder/doc.pdf | Bin 0 -> 50195 bytes
projektdokumentation/Bilder/modulimport.pdf | Bin 0 -> 260623 bytes
projektdokumentation/Bilder/modulliste.pdf | Bin 0 -> 508157 bytes
projektdokumentation/Bilder/neusta-sd_RGB.svg | 1 +
projektdokumentation/Bilder/tagliste.pdf | Bin 0 -> 397645 bytes
projektdokumentation/Bilder/testcase.jpg | Bin 0 -> 117837 bytes
projektdokumentation/Bilder/unterschrift.PNG | Bin 0 -> 95338 bytes
.../Bilder/weather-clear-night.png | Bin 0 -> 1060 bytes
projektdokumentation/Bilder/weather-clear.png | Bin 0 -> 952 bytes
.../Bilder/weather-few-clouds-night.png | Bin 0 -> 1211 bytes
.../Bilder/weather-few-clouds.png | Bin 0 -> 1191 bytes
projektdokumentation/Bilder/weather-storm.png | Bin 0 -> 1593 bytes
projektdokumentation/Deckblatt.tex | 27 +
projektdokumentation/Inhalt.tex | 2 +
projektdokumentation/Inhalt/Abnahmephase.tex | 11 +
projektdokumentation/Inhalt/Analysephase.tex | 105 +
projektdokumentation/Inhalt/Dokumentation.tex | 7 +
.../Inhalt/Einfuehrungsphase.tex | 12 +
projektdokumentation/Inhalt/Einleitung.tex | 55 +
projektdokumentation/Inhalt/Entwurfsphase.tex | 73 +
projektdokumentation/Inhalt/Fazit.tex | 38 +
.../Inhalt/Implementierungsphase.tex | 82 +
.../Inhalt/Projektplanung.tex | 48 +
projektdokumentation/LICENSE.md | 98 +
projektdokumentation/Listings/Connection.php | 139 +
.../Listings/CustomerConnection.php | 33 +
.../Listings/CustomerDataController.php | 28 +
projektdokumentation/Listings/Factory.php | 27 +
projektdokumentation/Listings/InstallData.xml | 28 +
projektdokumentation/Listings/UnitTest.php | 39 +
projektdokumentation/Listings/composer.json | 21 +
projektdokumentation/Listings/tests.php | 33 +
projektdokumentation/Meta.tex | 14 +
projektdokumentation/Projektdokumentation.pdf | Bin 0 -> 477931 bytes
projektdokumentation/Projektdokumentation.tex | 69 +
projektdokumentation/README.md | 12 +
.../Tabellen/Kostenaufstellung.tex | 11 +
projektdokumentation/Tabellen/Nutzwert.tex | 11 +
.../Tabellen/Zeitersparnis.tex | 9 +
projektdokumentation/Tabellen/Zeitnachher.tex | 13 +
.../Tabellen/ZeitplanungKomplett.tex | 48 +
.../Tabellen/ZeitplanungKurz.tex | 12 +
projektdokumentation/Vorlage.tex | 97 +
projektdokumentation/natbib.cfg | 14 +
80 files changed, 4490 insertions(+)
create mode 100644 projektdokumentation/.gitignore
create mode 100644 projektdokumentation/.project
create mode 100644 projektdokumentation/.texlipse
create mode 100644 projektdokumentation/Abkuerzungen.tex
create mode 100644 projektdokumentation/Allgemein/Befehle.tex
create mode 100644 projektdokumentation/Allgemein/Packages.tex
create mode 100644 projektdokumentation/Allgemein/Seitenstil.tex
create mode 100644 projektdokumentation/Allgemein/Silbentrennung.tex
create mode 100644 projektdokumentation/Allgemein/natdin.bst
create mode 100644 projektdokumentation/Anhang.tex
create mode 100644 projektdokumentation/Anhang/AnhangBenutzerDoku.tex
create mode 100644 projektdokumentation/Anhang/AnhangDoc.tex
create mode 100644 projektdokumentation/Anhang/AnhangEntwuerfe.tex
create mode 100644 projektdokumentation/Anhang/AnhangLastenheft.tex
create mode 100644 projektdokumentation/Anhang/AnhangPflichtenheft.tex
create mode 100644 projektdokumentation/Anhang/AnhangRessourcen.tex
create mode 100644 projektdokumentation/Anhang/AnhangScreenshots.tex
create mode 100644 projektdokumentation/Anhang/AnhangTest.tex
create mode 100644 projektdokumentation/Befehle.tex
create mode 100644 projektdokumentation/Bibliographie.bib
create mode 100644 projektdokumentation/Bilder/CC-Attribution.pdf
create mode 100644 projektdokumentation/Bilder/CC-Logo.pdf
create mode 100644 projektdokumentation/Bilder/CC-ShareAlike.pdf
create mode 100644 projektdokumentation/Bilder/DeckblattIHK.pdf
create mode 100644 projektdokumentation/Bilder/DeckblattIHK_neu.pdf
create mode 100644 projektdokumentation/Bilder/ERDiagramm.pdf
create mode 100644 projektdokumentation/Bilder/Entwicklungsprozess.pdf
create mode 100644 projektdokumentation/Bilder/Klassendiagramm.pdf
create mode 100644 projektdokumentation/Bilder/LogoBetrieb.pdf
create mode 100644 projektdokumentation/Bilder/LogoIHK.pdf
create mode 100644 projektdokumentation/Bilder/MockupModul.pdf
create mode 100644 projektdokumentation/Bilder/MockupModules.pdf
create mode 100644 projektdokumentation/Bilder/MockupTag.pdf
create mode 100644 projektdokumentation/Bilder/UseCase.pdf
create mode 100644 projektdokumentation/Bilder/amortisationgrafik.png
create mode 100644 projektdokumentation/Bilder/database.pdf
create mode 100644 projektdokumentation/Bilder/doc.pdf
create mode 100644 projektdokumentation/Bilder/modulimport.pdf
create mode 100644 projektdokumentation/Bilder/modulliste.pdf
create mode 100644 projektdokumentation/Bilder/neusta-sd_RGB.svg
create mode 100644 projektdokumentation/Bilder/tagliste.pdf
create mode 100644 projektdokumentation/Bilder/testcase.jpg
create mode 100644 projektdokumentation/Bilder/unterschrift.PNG
create mode 100644 projektdokumentation/Bilder/weather-clear-night.png
create mode 100644 projektdokumentation/Bilder/weather-clear.png
create mode 100644 projektdokumentation/Bilder/weather-few-clouds-night.png
create mode 100644 projektdokumentation/Bilder/weather-few-clouds.png
create mode 100644 projektdokumentation/Bilder/weather-storm.png
create mode 100644 projektdokumentation/Deckblatt.tex
create mode 100644 projektdokumentation/Inhalt.tex
create mode 100644 projektdokumentation/Inhalt/Abnahmephase.tex
create mode 100644 projektdokumentation/Inhalt/Analysephase.tex
create mode 100644 projektdokumentation/Inhalt/Dokumentation.tex
create mode 100644 projektdokumentation/Inhalt/Einfuehrungsphase.tex
create mode 100644 projektdokumentation/Inhalt/Einleitung.tex
create mode 100644 projektdokumentation/Inhalt/Entwurfsphase.tex
create mode 100644 projektdokumentation/Inhalt/Fazit.tex
create mode 100644 projektdokumentation/Inhalt/Implementierungsphase.tex
create mode 100644 projektdokumentation/Inhalt/Projektplanung.tex
create mode 100644 projektdokumentation/LICENSE.md
create mode 100644 projektdokumentation/Listings/Connection.php
create mode 100644 projektdokumentation/Listings/CustomerConnection.php
create mode 100644 projektdokumentation/Listings/CustomerDataController.php
create mode 100644 projektdokumentation/Listings/Factory.php
create mode 100644 projektdokumentation/Listings/InstallData.xml
create mode 100644 projektdokumentation/Listings/UnitTest.php
create mode 100644 projektdokumentation/Listings/composer.json
create mode 100644 projektdokumentation/Listings/tests.php
create mode 100644 projektdokumentation/Meta.tex
create mode 100644 projektdokumentation/Projektdokumentation.pdf
create mode 100644 projektdokumentation/Projektdokumentation.tex
create mode 100644 projektdokumentation/README.md
create mode 100644 projektdokumentation/Tabellen/Kostenaufstellung.tex
create mode 100644 projektdokumentation/Tabellen/Nutzwert.tex
create mode 100644 projektdokumentation/Tabellen/Zeitersparnis.tex
create mode 100644 projektdokumentation/Tabellen/Zeitnachher.tex
create mode 100644 projektdokumentation/Tabellen/ZeitplanungKomplett.tex
create mode 100644 projektdokumentation/Tabellen/ZeitplanungKurz.tex
create mode 100644 projektdokumentation/Vorlage.tex
create mode 100644 projektdokumentation/natbib.cfg
diff --git a/projektdokumentation/.gitignore b/projektdokumentation/.gitignore
new file mode 100644
index 0000000..c4ae676
--- /dev/null
+++ b/projektdokumentation/.gitignore
@@ -0,0 +1,131 @@
+## Core latex/pdflatex auxiliary files:
+*.aux
+*.lof
+*.log
+*.lot
+*.fls
+*.out
+*.toc
+
+## Intermediate documents:
+*.dvi
+*-converted-to.*
+# these rules might exclude image files for figures etc.
+# *.ps
+# *.eps
+# *.pdf
+
+## Bibliography auxiliary files (bibtex/biblatex/biber):
+*.bbl
+*.bcf
+*.blg
+*-blx.aux
+*-blx.bib
+*.brf
+*.run.xml
+
+## Build tool auxiliary files:
+*.fdb_latexmk
+*.synctex
+*.synctex.gz
+*.synctex.gz(busy)
+*.pdfsync
+
+## Auxiliary and intermediate files from other packages:
+
+# algorithms
+*.alg
+*.loa
+
+# achemso
+acs-*.bib
+
+# amsthm
+*.thm
+
+# beamer
+*.nav
+*.snm
+*.vrb
+
+#(e)ledmac/(e)ledpar
+*.end
+*.[1-9]
+*.[1-9][0-9]
+*.[1-9][0-9][0-9]
+*.[1-9]R
+*.[1-9][0-9]R
+*.[1-9][0-9][0-9]R
+*.eledsec[1-9]
+*.eledsec[1-9]R
+*.eledsec[1-9][0-9]
+*.eledsec[1-9][0-9]R
+*.eledsec[1-9][0-9][0-9]
+*.eledsec[1-9][0-9][0-9]R
+
+# glossaries
+*.acn
+*.acr
+*.glg
+*.glo
+*.gls
+
+# gnuplottex
+*-gnuplottex-*
+
+# hyperref
+*.brf
+
+# knitr
+*-concordance.tex
+*.tikz
+*-tikzDictionary
+
+# listings
+*.lol
+
+# makeidx
+*.idx
+*.ilg
+*.ind
+*.ist
+
+# minitoc
+*.maf
+*.mtc
+*.mtc0
+
+# minted
+_minted*
+*.pyg
+
+# morewrites
+*.mw
+
+# nomencl
+*.nlo
+
+# sagetex
+*.sagetex.sage
+*.sagetex.py
+*.sagetex.scmd
+
+# sympy
+*.sout
+*.sympy
+sympy-plots-for-*.tex/
+
+# todonotes
+*.tdo
+
+# xindy
+*.xdy
+
+# WinEdt
+*.bak
+*.sav
+/tmp/
+
+# idea
+.idea/
+
diff --git a/projektdokumentation/.project b/projektdokumentation/.project
new file mode 100644
index 0000000..f9bd2d8
--- /dev/null
+++ b/projektdokumentation/.project
@@ -0,0 +1,17 @@
+
+
+ VorlageFachinformatiker
+
+
+
+
+
+ net.sourceforge.texlipse.builder.TexlipseBuilder
+
+
+
+
+
+ net.sourceforge.texlipse.builder.TexlipseNature
+
+
diff --git a/projektdokumentation/.texlipse b/projektdokumentation/.texlipse
new file mode 100644
index 0000000..f5943d9
--- /dev/null
+++ b/projektdokumentation/.texlipse
@@ -0,0 +1,13 @@
+#TeXlipse project settings
+#Fri Jan 27 09:15:16 CET 2012
+builderNum=2
+outputDir=
+makeIndSty=
+bibrefDir=
+outputFormat=pdf
+tempDir=tmp
+mainTexFile=Projektdokumentation.tex
+outputFile=Projektdokumentation.pdf
+langSpell=de
+markDer=true
+srcDir=
diff --git a/projektdokumentation/Abkuerzungen.tex b/projektdokumentation/Abkuerzungen.tex
new file mode 100644
index 0000000..ce8cfc6
--- /dev/null
+++ b/projektdokumentation/Abkuerzungen.tex
@@ -0,0 +1,35 @@
+% !TEX root = Projektdokumentation.tex
+
+% Es werden nur die Abkürzungen aufgelistet, die mit \ac definiert und auch benutzt wurden.
+%
+% \acro{VERSIS}{Versicherungsinformationssystem\acroextra{ (Bestandsführungssystem)}}
+% Ergibt in der Liste: VERSIS Versicherungsinformationssystem (Bestandsführungssystem)
+% Im Text aber: \ac{VERSIS} -> Versicherungsinformationssystem (VERSIS)
+
+% Hinweis: allgemein bekannte Abkürzungen wie z.B. bzw. u.a. müssen nicht ins Abkürzungsverzeichnis aufgenommen werden
+% Hinweis: allgemein bekannte IT-Begriffe wie Datenbank oder Programmiersprache müssen nicht erläutert werden,
+% aber ggfs. Fachbegriffe aus der Domäne des Prüflings (z.B. Versicherung)
+
+% Die Option (in den eckigen Klammern) enthält das längste Label oder
+% einen Platzhalter der die Breite der linken Spalte bestimmt.
+\begin{acronym}[WWWWW]
+ %\acro{API}{Application Programming Interface}
+ \acro{CLI}{Command Line Interface}
+ \acro{CRM}{Customer Relationship Management}
+ \acro{CRON}{Vorgangsausführung gemäß geplanten Zeitabläufen für UNIX Programme}
+ \acro{eCommerce}{Electronic Commerce}
+ \acro{ERM}{Entity-Relationship-Model}
+ \acro{GUI}{Graphical User Interface}
+ \acro{HTTP}{Hypertext Transfer Protocol}
+ \acro{IDE}{Integrated Development Environment}
+ \acro{IX}{Intex Fusion Pro Omnichannel CRM}
+ \acro{JSON}{JavaScript Object Notation}
+ \acro{M2}{\textsc{Magento 2} eCommerce Platform}
+ \acro{NSD}{\textsc{neusta software development} GmbH}
+ \acro{NXP}{\textsc{neusta experience} GmbH}
+ \acro{PHP}{Hypertext Preprocessor}\acused{PHP}
+ \acro{SQL}{Structured Query Language}
+ \acro{URL}{Uniform Resource Locator}\acused{URL}
+ \acro{VM}{Virtual Machine}
+ \acro{XML}{Extensible Markup Language}
+\end{acronym}
diff --git a/projektdokumentation/Allgemein/Befehle.tex b/projektdokumentation/Allgemein/Befehle.tex
new file mode 100644
index 0000000..3bb2025
--- /dev/null
+++ b/projektdokumentation/Allgemein/Befehle.tex
@@ -0,0 +1,85 @@
+% !TEX root = ../Projektdokumentation.tex
+
+% Abkürzungen, ggfs. mit korrektem Leerraum
+\newcommand{\bs}{$\backslash$\xspace}
+\newcommand{\bspw}{bspw.\xspace}
+\newcommand{\bzw}{bzw.\xspace}
+\newcommand{\ca}{ca.\xspace}
+\newcommand{\dahe}{\mbox{d.\,h.}\xspace}
+\newcommand{\etc}{etc.\xspace}
+\newcommand{\eur}[1]{\mbox{#1\,\texteuro}\xspace}
+\newcommand{\evtl}{evtl.\xspace}
+\newcommand{\ggfs}{ggfs.\xspace}
+\newcommand{\Ggfs}{Ggfs.\xspace}
+\newcommand{\gqq}[1]{\glqq{}#1\grqq{}}
+\newcommand{\inkl}{inkl.\xspace}
+\newcommand{\insb}{insb.\xspace}
+\newcommand{\ua}{\mbox{u.\,a.}\xspace}
+\newcommand{\usw}{usw.\xspace}
+\newcommand{\Vgl}{Vgl.\xspace}
+\newcommand{\zB}{\mbox{z.\,B.}\xspace}
+
+% Befehle für häufig anfallende Aufgaben
+\newcommand{\Abbildung}[1]{\autoref{fig:#1}}
+\newcommand{\Anhang}[1]{\appendixname{}~\ref{#1}: \nameref{#1} \vpageref{#1}}
+\newcommand{\includegraphicsKeepAspectRatio}[2]{\includegraphics[width=#2\textwidth,height=#2\textheight,keepaspectratio]{#1}}
+\newcommand{\Zitat}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\citep{#2}}{\citep[#1]{#2}}}
+\newcommand{\Autor}[1]{\textsc{#1}} % zum Ausgeben von Autoren
+\newcommand{\itemd}[2]{\item{\textbf{#1}}\\{#2}} % erzeugt ein Listenelement mit fetter Überschrift
+
+% fügt Tabellen aus einer TEX-Datei ein
+\newcommand{\tabelle}[3] % Parameter: caption, label, file
+{\begin{table}[htbp]
+\centering
+\singlespacing
+\input{Tabellen/#3}
+\caption{#1}
+\label{#2}
+\end{table}}
+
+\newcommand{\tabelleAnhang}[1] % Parameter: file
+{\begin{center}
+\singlespacing
+\input{Tabellen/#1}
+\end{center}}
+
+% einfaches Wechseln der Schrift, z.B.: \changefont{cmss}{sbc}{n}
+\newcommand{\changefont}[3]{\fontfamily{#1} \fontseries{#2} \fontshape{#3} \selectfont}
+
+% Verwendung analog zu \includegraphics
+\newlength{\myx} % Variable zum Speichern der Bildbreite
+\newlength{\myy} % Variable zum Speichern der Bildhöhe
+\newcommand\includegraphicstotab[2][\relax]{%
+% Abspeichern der Bildabmessungen
+\settowidth{\myx}{\includegraphics[{#1}]{#2}}%
+\settoheight{\myy}{\includegraphics[{#1}]{#2}}%
+% das eigentliche Einfügen
+\parbox[c][1.1\myy][c]{\myx}{%
+\includegraphics[{#1}]{#2}}%
+}
+
+\definecolor{AOBlau}{rgb}{0, 0.28, 0.56}
+
+% verschiedene Befehle um Wörter semantisch auszuzeichnen ----------------------
+\newcommand{\Index}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\index{#2}#2}{\index{#1}#2}}
+\newcommand{\Fachbegriff}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\textit{\Index{#2}}}{\textit{\Index[#1]{#2}}}}
+\newcommand{\NeuerBegriff}[2][\empty]{\ifthenelse{\equal{#1}{\empty}}{\textbf{\Index{#2}}}{\textbf{\Index[#1]{#2}}}}
+
+\newcommand{\Ausgabe}[1]{\texttt{#1}}
+\newcommand{\Eingabe}[1]{\texttt{#1}}
+\newcommand{\Code}[1]{\texttt{#1}}
+\newcommand{\Datei}[1]{\texttt{#1}}
+
+\newcommand{\Assembly}[1]{\textsf{#1}}
+\newcommand{\Klasse}[1]{\textsf{#1}}
+\newcommand{\Methode}[1]{\textsf{#1}}
+\newcommand{\Attribut}[1]{\textsf{#1}}
+
+\newcommand{\Datentyp}[1]{\textsf{#1}}
+\newcommand{\XMLElement}[1]{\textsf{#1}}
+\newcommand{\Webservice}[1]{\textsf{#1}}
+
+\newcommand{\Refactoring}[1]{\Fachbegriff{#1}}
+\newcommand{\CodeSmell}[1]{\Fachbegriff{#1}}
+\newcommand{\Metrik}[1]{\Fachbegriff{#1}}
+\newcommand{\DesignPattern}[1]{\Fachbegriff{#1}}
diff --git a/projektdokumentation/Allgemein/Packages.tex b/projektdokumentation/Allgemein/Packages.tex
new file mode 100644
index 0000000..318cc14
--- /dev/null
+++ b/projektdokumentation/Allgemein/Packages.tex
@@ -0,0 +1,196 @@
+% !TEX root = ../Projektdokumentation.tex
+
+% Anpassung an Landessprache ---------------------------------------------------
+\usepackage{babel}
+
+% Umlaute ----------------------------------------------------------------------
+% Umlaute/Sonderzeichen wie äüöß direkt im Quelltext verwenden (CodePage).
+% Erlaubt automatische Trennung von Worten mit Umlauten.
+% ------------------------------------------------------------------------------
+\usepackage[T1]{fontenc}
+\usepackage{textcomp} % Euro-Zeichen etc.
+
+% Schrift ----------------------------------------------------------------------
+\usepackage{lmodern} % bessere Fonts
+\usepackage{relsize} % Schriftgröße relativ festlegen
+
+% Tabellen ---------------------------------------------------------------------
+\PassOptionsToPackage{table}{xcolor}
+\usepackage{tabularx}
+% für lange Tabellen
+\usepackage{longtable}
+\usepackage{array}
+\usepackage{ragged2e}
+\usepackage{lscape}
+\newcolumntype{w}[1]{>{\raggedleft\hspace{0pt}}p{#1}} % Spaltendefinition rechtsbündig mit definierter Breite
+
+% Grafiken ---------------------------------------------------------------------
+\usepackage[dvips,final]{graphicx} % Einbinden von JPG-Grafiken ermöglichen
+\usepackage{graphics} % keepaspectratio
+\usepackage{floatflt} % zum Umfließen von Bildern
+\graphicspath{{Bilder/}} % hier liegen die Bilder des Dokuments
+
+% Sonstiges --------------------------------------------------------------------
+\usepackage[titles]{tocloft} % Inhaltsverzeichnis DIN 5008 gerecht einrücken
+
+% Explicitly set German titles for ToC, LoF, LoT
+\renewcommand{\contentsname}{Inhaltsverzeichnis}
+\renewcommand{\listfigurename}{Abbildungsverzeichnis}
+\renewcommand{\listtablename}{Tabellenverzeichnis}
+
+\usepackage{amsmath,amsfonts} % Befehle aus AMSTeX für mathematische Symbole
+\usepackage{enumitem} % anpassbare Enumerates/Itemizes
+\usepackage{xspace} % sorgt dafür, dass Leerzeichen hinter parameterlosen Makros nicht als Makroendezeichen interpretiert werden
+
+\usepackage{makeidx} % für Index-Ausgabe mit \printindex
+\usepackage[printonlyused]{acronym} % es werden nur benutzte Definitionen aufgelistet
+
+% Einfache Definition der Zeilenabstände und Seitenränder etc.
+\usepackage{setspace}
+\usepackage{geometry}
+
+% Symbolverzeichnis
+\usepackage[intoc]{nomencl}
+\let\abbrev\nomenclature
+\renewcommand{\nomname}{Abkürzungsverzeichnis}
+\setlength{\nomlabelwidth}{.25\hsize}
+\renewcommand{\nomlabel}[1]{#1 \dotfill}
+\setlength{\nomitemsep}{-\parsep}
+
+\usepackage{varioref} % Elegantere Verweise. „auf der nächsten Seite“
+\usepackage{url} % URL verlinken, lange URLs umbrechen etc.
+
+\usepackage{chngcntr} % fortlaufendes Durchnummerieren der Fußnoten
+% \usepackage[perpage]{footmisc} % Alternative: Nummerierung der Fußnoten auf jeder Seite neu
+
+\usepackage{ifthen} % bei der Definition eigener Befehle benötigt
+\usepackage{todonotes} % definiert u.a. die Befehle \todo und \listoftodos
+\usepackage[square]{natbib} % wichtig für korrekte Zitierweise
+
+% PDF-Optionen -----------------------------------------------------------------
+\usepackage{pdfpages}
+\pdfminorversion=5 % erlaubt das Einfügen von pdf-Dateien bis Version 1.7, ohne eine Fehlermeldung zu werfen (keine Garantie für fehlerfreies Einbetten!)
+\usepackage[
+ bookmarks,
+ bookmarksnumbered,
+ bookmarksopen=true,
+ bookmarksopenlevel=1,
+ colorlinks=true,
+% diese Farbdefinitionen zeichnen Links im PDF farblich aus
+ linkcolor=AOBlau, % einfache interne Verknüpfungen
+ anchorcolor=AOBlau,% Ankertext
+ citecolor=AOBlau, % Verweise auf Literaturverzeichniseinträge im Text
+ filecolor=AOBlau, % Verknüpfungen, die lokale Dateien öffnen
+ menucolor=AOBlau, % Acrobat-Menüpunkte
+ urlcolor=AOBlau,
+% diese Farbdefinitionen sollten für den Druck verwendet werden (alles schwarz)
+ %linkcolor=black, % einfache interne Verknüpfungen
+ %anchorcolor=black, % Ankertext
+ %citecolor=black, % Verweise auf Literaturverzeichniseinträge im Text
+ %filecolor=black, % Verknüpfungen, die lokale Dateien öffnen
+ %menucolor=black, % Acrobat-Menüpunkte
+ %urlcolor=black,
+%
+ %backref, % Quellen werden zurück auf ihre Zitate verlinkt
+ pdftex,
+ plainpages=false, % zur korrekten Erstellung der Bookmarks
+ pdfpagelabels=true, % zur korrekten Erstellung der Bookmarks
+ hypertexnames=false, % zur korrekten Erstellung der Bookmarks
+ linktocpage % Seitenzahlen anstatt Text im Inhaltsverzeichnis verlinken
+]{hyperref}
+% Befehle, die Umlaute ausgeben, führen zu Fehlern, wenn sie hyperref als Optionen übergeben werden
+\hypersetup{
+ pdftitle={\titel -- \untertitel},
+ pdfauthor={\autorName},
+ pdfcreator={\autorName},
+ pdfsubject={\titel -- \untertitel},
+ pdfkeywords={\titel -- \untertitel},
+}
+
+
+% zum Einbinden von Programmcode -----------------------------------------------
+\usepackage{listings}
+% Explicitly set German title for LoL
+\renewcommand{\lstlistlistingname}{Codeverzeichnis} % For list of listings
+\usepackage{xcolor}
+\definecolor{hellgelb}{rgb}{1,1,0.9}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{0,0.5,0}
+\definecolor{colString}{rgb}{1,0,0}
+\lstset{
+ float=hbp,
+ basicstyle=\footnotesize,
+ identifierstyle=\color{colIdentifier},
+ keywordstyle=\color{colKeys},
+ stringstyle=\color{colString},
+ commentstyle=\color{colComments},
+ backgroundcolor=\color{hellgelb},
+ columns=flexible,
+ tabsize=2,
+ frame=single,
+ extendedchars=true,
+ showspaces=false,
+ showstringspaces=false,
+ numbers=left,
+ numberstyle=\tiny,
+ breaklines=true,
+ breakautoindent=true,
+ captionpos=b,
+}
+\lstdefinelanguage{cs}{
+ sensitive=false,
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+ morestring=[b]",
+ morekeywords={
+ abstract,event,new,struct,as,explicit,null,switch
+ base,extern,object,this,bool,false,operator,throw,
+ break,finally,out,true,byte,fixed,override,try,
+ case,float,params,typeof,catch,for,private,uint,
+ char,foreach,protected,ulong,checked,goto,public,unchecked,
+ class,if,readonly,unsafe,const,implicit,ref,ushort,
+ continue,in,return,using,decimal,int,sbyte,virtual,
+ default,interface,sealed,volatile,delegate,internal,short,void,
+ do,is,sizeof,while,double,lock,stackalloc,
+ else,long,static,enum,namespace,string},
+}
+\lstdefinelanguage{natural}{
+ sensitive=false,
+ morecomment=[l]{/*},
+ morestring=[b]",
+ morestring=[b]',
+ alsodigit={-,*},
+ morekeywords={
+ DEFINE,DATA,LOCAL,END-DEFINE,WRITE,CALLNAT,PARAMETER,USING,
+ IF,NOT,END-IF,ON,*ERROR-NR,ERROR,END-ERROR,ESCAPE,ROUTINE,
+ PERFORM,SUBROUTINE,END-SUBROUTINE,CONST,END-FOR,END,FOR,RESIZE,
+ ARRAY,TO,BY,VALUE,RESET,COMPRESS,INTO,EQ},
+}
+\lstdefinelanguage{php}{
+ sensitive=false,
+ morecomment=[l]{/*},
+ morestring=[b]",
+ morestring=[b]',
+ alsodigit={-,*},
+ morekeywords={
+ abstract,and,array,as,break,case,catch,cfunction,class,clone,const,
+ continue,declare,default,do,else,elseif,enddeclare,endfor,endforeach,
+ endif,endswitch,endwhile,extends,final,for,foreach,function,global,
+ goto,if,implements,interface,instanceof,namespace,new,old_function,or,
+ private,protected,public,static,switch,throw,try,use,var,while,xor
+ die,echo,empty,exit,eval,include,include_once,isset,list,require,
+ require_once,return,print,unset},
+}
+\lstdefinelanguage{json}{
+ basicstyle=\ttfamily\small,
+ showstringspaces=false,
+ breaklines=true,
+ commentstyle=\color{green!50!black},
+ stringstyle=\color{red},
+ keywords={true, false, null},
+ keywordstyle=\color{blue}\bfseries,
+ morestring=[s]{"}{"},
+ morecomment=[l]{//},
+ morecomment=[s]{/*}{*/},
+}
diff --git a/projektdokumentation/Allgemein/Seitenstil.tex b/projektdokumentation/Allgemein/Seitenstil.tex
new file mode 100644
index 0000000..fdf284b
--- /dev/null
+++ b/projektdokumentation/Allgemein/Seitenstil.tex
@@ -0,0 +1,83 @@
+% !TEX root = ../Projektdokumentation.tex
+
+% Seitenränder -----------------------------------------------------------------
+\setlength{\topskip}{\ht\strutbox} % behebt Warnung von geometry
+\geometry{a4paper,left=25mm,right=25mm,top=33mm,bottom=33mm,head=53.14769pt}
+\deffootnote{1em}{1em}{\textsuperscript{\thefootnotemark}\fontsize{9pt}{11pt}\selectfont}
+
+\usepackage[
+ automark, % Kapitelangaben in Kopfzeile automatisch erstellen
+ headsepline, % Trennlinie unter Kopfzeile
+ ilines % Trennlinie linksbündig ausrichten
+]{scrlayer-scrpage}
+
+% Kopf- und Fußzeilen ----------------------------------------------------------
+\pagestyle{scrheadings}
+% chapterpagestyle gibt es nicht in scrartcl
+%\renewcommand{\chapterpagestyle}{scrheadings}
+\clearpairofpagestyles
+
+% Kopfzeile
+\renewcommand{\headfont}{\normalfont} % Schriftform der Kopfzeile
+\ihead{\large{\textsc{\titel}}\\ \small{\untertitel} \\[2ex] \textit{\headmark}}
+\chead{}
+\ohead{\includegraphics[scale=0.09]{\betriebLogo}}
+%\setheadwidth[0pt]{textwithmarginpar} % Kopfzeile über den Text hinaus verbreitern (falls Logo den Text überdeckt)
+
+% Fußzeile
+\cfoot{}
+\ofoot{\pagemark}
+
+
+% Überschriften nach DIN 5008 in einer Fluchtlinie
+% ------------------------------------------------------------------------------
+
+% Abstand zwischen Nummerierung und Überschrift definieren
+% > Schön wäre hier die dynamische Berechnung des Abstandes in Abhängigkeit
+% > der Verschachtelungstiefe des Inhaltsverzeichnisses
+\newcommand{\headingSpace}{1.5cm}
+
+% Abschnittsüberschriften im selben Stil wie beim Inhaltsverzeichnis einrücken
+\renewcommand*{\othersectionlevelsformat}[3]{
+ \makebox[\headingSpace][l]{#3\autodot}
+}
+
+% Für die Einrückung wird das Paket tocloft benötigt
+%\cftsetindents{chapter}{0.0cm}{\headingSpace}
+\cftsetindents{section}{0.0cm}{\headingSpace}
+\cftsetindents{subsection}{0.0cm}{\headingSpace}
+\cftsetindents{subsubsection}{0.0cm}{\headingSpace}
+\cftsetindents{figure}{0.0cm}{\headingSpace}
+\cftsetindents{table}{0.0cm}{\headingSpace}
+
+
+% Allgemeines
+% ------------------------------------------------------------------------------
+
+\setstretch{1.15} % Zeilenabstand 1.15 Zeilen
+\frenchspacing % erzeugt ein wenig mehr Platz hinter einem Punkt
+
+\renewcommand{\rmdefault}{phv} % Arial als Std Schriftart
+\renewcommand{\sfdefault}{phv}
+
+% Schusterjungen und Hurenkinder vermeiden
+\clubpenalty = 10000
+\widowpenalty = 10000
+\displaywidowpenalty = 10000
+
+% Quellcode-Ausgabe formatieren
+\lstset{numbers=left, numberstyle=\tiny, numbersep=5pt, breaklines=true}
+\lstset{emph={square}, emphstyle=\color{red}, emph={[2]root,base}, emphstyle={[2]\color{blue}}}
+
+\counterwithout{footnote}{section} % Fußnoten fortlaufend durchnummerieren
+\setcounter{tocdepth}{3} % im Inhaltsverzeichnis werden die Kapitel bis zum Level der subsubsection übernommen
+\setcounter{secnumdepth}{3} % Kapitel bis zum Level der subsubsection werden nummeriert
+
+% Aufzählungen anpassen
+\renewcommand{\labelenumi}{\arabic{enumi}.}
+\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}.}
+\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}}
+
+% Tabellenfärbung:
+\definecolor{heading}{rgb}{0.64,0.78,0.86}
+\definecolor{odd}{rgb}{0.9,0.9,0.9}
diff --git a/projektdokumentation/Allgemein/Silbentrennung.tex b/projektdokumentation/Allgemein/Silbentrennung.tex
new file mode 100644
index 0000000..a6375b1
--- /dev/null
+++ b/projektdokumentation/Allgemein/Silbentrennung.tex
@@ -0,0 +1,3 @@
+% Trennvorschläge im Text werden mit \" angegeben
+% untrennbare Wörter und Ausnahmen von der normalen Trennung können in dieser
+% Datei mittels \hyphenation definiert werden
diff --git a/projektdokumentation/Allgemein/natdin.bst b/projektdokumentation/Allgemein/natdin.bst
new file mode 100644
index 0000000..18a3744
--- /dev/null
+++ b/projektdokumentation/Allgemein/natdin.bst
@@ -0,0 +1,2234 @@
+%% natdin.bst Vers. [3.1] 2006-01-02 mit PWD cite-multimode
+%%
+%% Aenderungen seit Vers. [3.0bx]:
+%% a) Funktions-Zusaetze bei Autoren sind nun moeglich
+%% b) Internetquellen ohne Zusatz "Online--Ressource" !
+%% c) verbesserte INPROCEEDINGS, PROCEEDINGS-Funktionen
+%% d) neue TECHREPORT und MANUAL-Funktionen
+%% e) neue format.pages.book-Funktion
+%% f) neue format.online.lastchecked-Funktion
+%%
+%%
+%% K.F.Lorenzen (Copyright 1994-2006) email: lorenzen.marxen@t-online.de
+%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%% Mit diesem BibTex-style werden Literaturverzeichnisse nach dem deutschen
+%% Standard DIN 1505, Teil 2 und 3 formatiert. Die label im Quellen-/
+%% Literaturverzeichnis sind vom Typ 'Verfasser - Jahr' und
+%% entsprechen den Zitatformen im Text. Es koennen alle von
+%% Patrick W. Daly im natbib-Paket implementierten Zitierbefehle
+%% genutzt werden. Eine Kurzbeschreibung liegt als Datei natnotes.pdf zusammen
+%% mit der im Aufbau befindlichen Beschreibung des natdin-Stils
+%% unter der URL http://www.haw-hamburg.de/pers/Lorenzen/bibtex.
+%% Eine Anleitung zur Anwendung der Norm DIN 1505 findet sich unter der
+%% URL http://www.bui.haw-hamburg.de/pers/klaus.lorenzen/ASP/litverz.pdf
+%%
+%% Es werden nun auch Elektronische Online / Offline Ressourcen wie
+%% Internetquellen, CD-ROM usw. verarbeitet. Dazu kommen spezielle
+%% Publikationsformen wie Patente, Normen, Karten, Fernsehaufzeichnungen,
+%% Gesetzesstellen, Spiele u.a.
+%
+%% NATDIN.BST muss zusammen mit NATBIB.STY von Patrick W. Daly und der in
+%% dieser Verteilung modifizierten Konfiguration NATBIB.CFG aufgerufen
+%% werden. NATDIN.BST ist vorzugsweise in den ...\bibtex\bst - Pfad zu
+%% stellen. Die jeweils individuelle Konfiguration NATBIB.CFG wird am
+%% besten in das Verzeichnis der LaTex-Quelle selbst gelegt.
+%%
+%% Eine Muster-Konfiguration wird auf Vorschlag von Helge Baumann eingefuegt:
+% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+% NATBIB.CFG in Verbindung mit natbib.sty Lorenzen, 2005-05-31
+% diese Konfigurationsdatei wird zuletzt eingelesen und
+% enthaelt die lokal gewuenschten Einstellungen fuer den
+% Bibliographie-- und Zitierstil
+%
+% \newcommand{\bibstyle@natdin}%
+% {\bibpunct{(}{)}{;}{a}{}{,~}
+% \gdef\NAT@biblabelnum##1{\textbf{##1}\\}} %% \\ bewirkt Zeilenumbruch
+% %% nach label-Ausgabe
+%
+% \bibstyle@natdin
+%
+% % Einzug der Belege nach der Einordnungsmarke
+% \setlength{\bibhang}{7mm}
+%
+%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%%
+%% Zur Gewaehrleistung der Allgemeingueltigkeit von bib-files gelten
+%% in den DIN-styles mit einer einzigen Ausnahme die in der Tex-Literatur
+%% veroeffentlichten originalen Definitionen und Regeln fuer die
+%% Publikationstypen (entry-types) und die bibliographischen Felder (fields).
+%% Die Ausnahme bezieht sich auf den entry-type PROCEEDINGS und das Feld
+%% address, fuer das Oren Patashnik dort die Sonderbedeutung "Konferenzort"
+%% gewaehlt hatte. In den DIN-Stilen behaelt address auch hier seine normale
+%% Bedeutung als "Verlagsort" bei!
+%% In einigen entry-types werden zu Gunsten bibliographischer Vollstaendigkeit
+%% mehr optionale Felder verwendet als seinerzeit von Patashnik angegeben.
+%% Treten "Schoenheitsfehler" im fertig gesetzten output auf,
+%% lassen sich diese so gut wie immer durch eine veraenderte
+%% Erfassung im bib-inputfile beseitigen. Oren Patashnik empfiehlt, die
+%% Definition der Felder weit auszulegen. Last but not least koennen
+%% Sie im output-file < *.bbl > noch letzte Hand zur Korrektur ansetzen.
+%% Wegen der meist langen Internetadressen kann es zu "unschoenen" Luecken
+%% im Belegtext kommen. Dann muss mit \underfull hbox.... gekaempft werden.
+%%
+%% Die Darstellung von Internetadressen wird durch das Zusatzpaket
+%% url.sty ver 3.1, 15-Mar-2004 von Donald Arseneau erheblich verbessert und
+%% wird sehr empfohlen.
+%%
+%% HYPERREF-Paket: wird dieses Paket zusaetzlich geladen, werden im output
+%% aktivierbare externe (URLs usw.) und interne (Dokumentbezogene) Links
+%% gesetzt. Sehr gute Zusammenarbeit mit PDFLaTex u.a.
+%
+%% WARN- UND FEHLERMELDUNGEN
+%% Ursache von Warnmeldungen sind meistens ausgelassene Felder oder
+%% Erfassungs-"Fehler". Letztere haengen teilweise mit den gegenueber US-
+%% Gepflogenheiten andersartigen bibliographischen Regeln nach DIN 1505
+%% zusammen. Sie sind also in Wahrheit keine "Fehler" und duerfen fast immer
+%% ignoriert werden. Dennoch pruefen Sie diese Warnungen, um heraus zu finden,
+%% ob Publikationstyp (=entry-type) und "fields" eventuell unzulaessig
+%% kombiniert worden sind.
+%% Echte Fehler ("errors") duerften nur noch bei bibliographisch falscher
+%% Erfassung auftreten. Pruefen Sie die Syntax, den entry-type und die fields.
+%% Zu guter letzt: Qualitaetsmasstab ist einzig der DIN-konforme output!
+%%
+%% DANKSAGUNG
+%% Hartmut Lueddecke, HAW Hamburg, hat viele Verbesserungsvorschlaege
+%% in die frueheren Versionen eingebracht. Ihm danke ich herzlich.
+%% Patrick W. Daly, dem Entwickler des Natbib-Stils, verdanke ich viele
+%% Anregungen und den steten Ansporn, die DIN-Stile zu verbessern.
+%% Helge Baumann hatte mit seiner Weiterentwicklung meines alten natdin.bst
+%% zu dinat.bst (Vers. 2001) die volle Zitierkapazitaet des natbib-Pakets
+%% eingefuehrt. Damit war ein deutlicher Zugewinn erreicht. Von ihm stammt
+%% der in der vorliegenden natdin.bst-Version 3.0x neu eingefuehrte Befehl
+%% \dinatlabel unter seinem von H. Baumann vergebenen Namen.
+%% Viele an dieser Stelle ungenannt bleibende Anwender haben mich in
+%% den vergangenen Jahren auf Fehler oder Verbesserungsmoeglichkeiten
+%% aufmerksam gemacht und so diesen Stil mitentwickelt. Ihnen gilt mein
+%% besonderer Dank. Ihr Feedback ist immer willkommen und eine Ermunterung.
+%%
+%% Klaus F. Lorenzen
+%%
+%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%% version 0.99c for BibTeX versions 0.99c or later, LaTeX2e version
+%% Copyright (C) 1985, all rights reserved.
+%% Copying of this file is authorized only if either
+%% (1) you make absolutely no changes to your copy, including name, or
+%% (2) if you do make changes, you name it something other than
+%% natdin.bst, natbib.sty
+%% This restriction helps ensure that all standard styles are identical.
+%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%%
+%% NEUE FELDER
+%% Zur Erfassung von Internetquellen, E-mail u.a. gibt es folgende
+%% neue Felder: doi, lastchecked (nach Gray), url, urn
+%% Internetquellen (z.B. auch E-mail) werden vorzugsweise mit dem
+%% BOOKLET-Typ erfasst.
+%% Normen, Patente, Schutzrechte, Gesetzesstellen sind mit dem MISC-Typ
+%% zu erfassen.
+%%
+
+
+ENTRY
+ { address %% Verlagsort (immer!)
+ author %% persoenlicher Urheber eines Werkes oder am Zustandekommen
+ %% beteiligte Personen(=Mitarbeiter, Uebersetzer, Redakteur u.a.)
+ booktitle %% a) Gesamttitel eines mehrbaendigen Werkes
+% %% b) Titel des Sammelwerks, das einzelne selbstaendige
+% %% Beitraege mit eigenem Titel enthaelt ->incollection
+ chapter %% Kapitel in einem Buch (Monographie)
+ doi %%% Digital Object Identifier ->article
+ edition %% a) Auflagevermerk
+% %% b) bei selbst. elektron. Quellen == Version ->booklet
+ editor %% Persoenl.Herausgeber oder Koerperschaftlicher Herausgeber
+ howpublished %% beliebiger Verlegervermerk: veroeffentlicht "von wem, wo"
+ institution %% Institution, die e.verlagsfreie Veroeffentlichung betreibt
+ isbn %% Standardnr fuer Buecher
+ issn %% - " - : Zeitschriften u. Serien
+ journal %% Titel einer Zeitschrift
+ key %% Zusaetzlich vergebener Sortierschluessel, mitunter notwend.
+ lastchecked %% neues Feld fuer das Datum des Online-Abrufs
+% %% einer Internetquelle (n. GRAY )
+ month %% naehere Bestimmung des Erscheinungsjahres -> macro 's
+ note %% freies Eingabefeld fuer zusaetzliche Informationen z. Quelle
+ number %% Versch. Bedeutungen in Abhaengigkeit vom Eingabetyp:
+% %% a) Bandnummer einer gezaehlten Reihe (series)
+% %% b) Heftnummer einer Zeitschrift ->article
+% %% c) Nummer eines Forschungsberichts ->techreport
+ organization %% a) Name der Organisation/des Organisators e. Tagung,Konferenz
+% %% b) Name einer Firma/Gesellschaft, die ein ->manual herausgab
+ pages %% Umfangsangaben, meist Seitenzahlen
+ publisher %% Verlag
+ school %% Hochschule/Universitaet, die eine Dipl.-Arb./Dissertation veroeff.
+ series %% Titel e.Reihe, in der ein best. Buchtitel erschienen ist
+ title %% Titel einer (namentlich gekennzeichneten) Veroeffentlichung
+ type %% Zusatzfeld z.Kennzeichnung e.besonderen Publikationstyps
+ url %% neues Feld URL ( Uniform Resource Locator ):
+% %% Serveradresse einer Internetquelle
+ urn %% neues Feld URN ( Uniform Resource Name ):
+% %% Persistent Identifier einer Internetquelle
+ volume %% a) Zaehlung bei einem mehrbaendigen Werk ->book/->proceedings
+% %% b) Jahrgang einer Zeitschrift ->article
+ year %% Erscheinungsjahr
+ }
+ {}
+ { label extra.label sort.label short.list dinat.label}
+
+%%%----------------------------------------------------------------------------
+% Einige Standardvorgaben, die vom Benutzer veraendert werden koennen.
+%%%----------------------------------------------------------------------------
+
+% Abkuerzung ("... und andere") bei Mehrverfasserquellen:
+
+FUNCTION { ua.etal } { " u.\,a." } %% evtl. auch in eckigen Klammern " [u.\,a.]"
+
+%% oder lateinisch: FUNCTION { ua.etal } { " et~al." }
+
+FUNCTION { und } { " und " }
+
+%% oder ausgeschrieben: FUNCTION { und } { " und " }
+
+
+% Einige elektronische Medien erhalten nach DIN 1505 eine "Ergaenzende Angabe"
+% zusaetzlich zum materiellen Typ, z.B. CD ROM oder DVD u.a.:
+
+FUNCTION { eress } { "Elektronische Ressource" }
+%%%-----------------------------------------------------------------------------------
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { after.firstblock }
+
+INTEGERS { colon.after period.dash }
+
+INTEGERS { zahl lang }
+
+INTEGERS { len }
+
+INTEGERS { longest.label.width last.extra.num number.label }
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { ptr collation collrest }
+
+STRINGS { longest.label last.label next.extra }
+
+STRINGS { h s t u v w }
+
+STRINGS { fkt }
+
+%%---------------------------
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+ #4 'colon.after :=
+ #5 'period.dash :=
+ #6 'after.firstblock :=
+}
+
+
+
+FUNCTION {set.period.dash} %% Wenn ein ". - " die Satzteile trennen soll.!
+{ output.state before.all =
+ 'skip$
+ { period.dash 'output.state := }
+ if$
+}
+
+
+FUNCTION {set.period.dash.check}
+{ empty$
+ 'skip$
+ 'set.period.dash
+ if$
+}
+
+FUNCTION {set.colon.after} %%$$$ Wenn ein ": " d. Satzteile trennen soll!
+{ output.state before.all =
+ 'skip$
+ { colon.after 'output.state := }
+ if$
+}
+
+%% Wenn ein " " die Satzteile trennen soll.!
+FUNCTION {new.sentence}
+{ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+}
+
+%% neu 17/2/94 Wenn ein ", " die Satzteile trennen soll.!
+FUNCTION { part.of.sentence }
+{ output.state before.all =
+ 'skip$
+ { mid.sentence 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ { write$ }
+ { output.state colon.after =
+ { ": " * write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state period.dash =
+ { ". -- " * write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.sentence =
+ { " " * write$ }
+ { output.state after.firstblock =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { write$
+ newline$
+ "\newblock " write$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ after.block 'output.state :=
+ }
+ if$
+ s
+ }
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * warning$
+ pop$ "" }
+ 'skip$
+ if$
+ month empty$
+ 'skip$
+ { type$ "book" =
+ type$ "inbook" =
+ OR
+ 'skip$
+ { month " " * swap$ * }
+ if$
+ }
+ if$
+%% ohne Extrabuchstabe beim Erscheinungsjahr
+}
+
+FUNCTION {format.edition.or.date}
+{ edition empty$ year empty$ and
+ { "" }
+ { edition empty$
+ { type empty$ NOT
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ { " gesendet: " "-- " type * swap$ *
+ format.date *
+ }
+ { "\,Version:\,"
+ format.date *
+ }
+ if$
+ }
+ { "\,Version:\,"
+ format.date *
+ }
+ if$
+ }
+ { year empty$
+ { "\,Version:\," edition * }
+ { "\,Version:\," edition * ", " *
+ format.date *
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.online.lastcheck}
+{ lastchecked empty$
+ { url empty$ doi empty$ urn empty$ and and
+ { skip$ }
+ { "" output }
+ if$
+ }
+ { url empty$ doi empty$ urn empty$ and and
+ { "there's a lastchecked date but no url, urn or doi in "
+ cite$ * warning$
+ }
+ { part.of.sentence
+ lastchecked "Abruf: " swap$ * output
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.maillist.lastcheck}
+ { type empty$ NOT
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ { format.online.lastcheck }
+ 'skip$
+ if$
+ }
+ 'skip$
+ if$
+ }
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\url{http://dx.doi.org/" doi * "}" *
+ %% { new.block "\url{http://dx.medra.org/" doi * "}" *
+ }
+ if$
+}
+
+FUNCTION {format.url}
+{ urn missing$
+ { doi missing$
+ { url empty$
+ { "" }
+ { type empty$ NOT
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ { type$ "incollection" =
+ { "" }
+ { "\,Absenderadresse: \url{" url * "}" * }
+ if$
+ }
+ { "\url{" url * "}" * }%% evtl. "URL" oder "<...>"
+ if$
+ }
+ { "\url{" url * "}" * } %% evtl. "URL" oder "<...>"
+ if$
+ }
+ if$
+ }
+ { format.doi }
+ if$
+ }
+ { "\url{http://nbn-resolving.de/urn/resolver.pl?urn=" urn * "}" *
+ }
+ if$
+}
+
+FUNCTION {format.maillist.url}
+ { url empty$
+ { "" }
+ { type empty$
+ { "" }
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ { "\url{" url * "}" * }
+ { "" }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+
+
+FUNCTION {format.full.names}
+{'s :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { ua.etal * }
+ { und * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.full}
+{ author empty$
+ { editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.full}
+{ author empty$
+ { "" }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.full}
+{ editor empty$
+ { "" }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.full
+ { type$ "proceedings" =
+ 'editor.full
+ 'author.full
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[\scshape{}" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ "\dinatlabel{\upshape{}" dinat.label * "} " * %% Zeilenumbruch steht in NATBIB.CFG!
+ write$
+ ""
+ before.all 'output.state :=
+}
+
+
+FUNCTION {fin.entry}
+{ write$
+ newline$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION { capitalize }
+ { duplicate$ empty$
+ { pop$ "" }
+ { "\textsc{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION {article.in.journal}
+{ duplicate$ empty$
+ { pop$ "" }
+ { author missing$ title missing$ and
+ { emphasize }
+ { emphasize "{In: }" swap$ * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.names}
+{ 's :=
+ "" 'u :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ s nameptr "{ll}" format.name$ 't :=
+ t capitalize 't :=
+ s nameptr "{ jj}" format.name$ 'w :=
+ s nameptr "{, ff}{ vv}{ jj}" format.name$ 'u :=
+ u text.length$ 'lang :=
+ #1 'zahl :=
+ "" 'v :=
+ { zahl lang < }
+ { u zahl #1 substring$ "~" =
+ { v "" =
+ { u #1 zahl #1 - substring$ 'v := }
+ 'skip$
+ if$
+ v u zahl #2 substring$ * "." * w * 'v :=
+ }
+ 'skip$
+ if$
+ zahl #1 + 'zahl := }
+ while$
+ v "" =
+ { u 'v := }
+ 'skip$
+ if$
+ t v * fkt * 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { " ; " * t * }
+ { numnames #2 >
+ { " " * }
+ 'skip$
+ if$
+ t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or
+ { ua.etal * }
+ { " ; " * t * }
+ if$
+ }
+ if$ %% Ende der namesleft-Pruefung
+ }
+ 't
+ if$ %% Ende der nameptr-Pruefung
+
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$ %% Ende von { namesleft #0 > } ganz oben
+ "" 'fkt := %% fkt wird zurueckgesetzt
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { author empty$
+ { "empty author and editor in " cite$ * warning$ "" }
+ 'skip$
+ if$
+ }
+ { author empty$
+ { " (Hrsg.)" 'fkt :=
+ editor format.names
+ }
+ { " (Hrsg.)" 'fkt :=
+ " ; " * editor format.names *
+ }
+ if$
+ }
+ if$
+ }
+
+%% 2005-11-11
+FUNCTION { format.authors.organization }
+{ type$ "misc" =
+ { organization empty$
+ { author empty$
+ { "" }
+ { author format.names " (Erfinder)" * }
+ if$
+ }
+ { author empty$
+ { organization }
+ { author format.names " (Erfinder); " *
+ organization * " (Anmelder)" *
+ }
+ if$
+ }
+ if$
+ }
+ { type$ "manual" =
+ { organization empty$
+ { format.authors }
+ { author empty$
+ { organization capitalize " (Hrsg.)" * }
+ { author format.names }
+ if$
+ }
+ if$
+ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors.organization }
+{ organization empty$
+ 'skip$
+ { type$ "misc" =
+ { organization }
+ { * " ; " * organization " (Veranst.)" *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.tr.institution }
+{ institution empty$
+ 'skip$
+ { institution capitalize }
+ if$
+}
+
+FUNCTION {format.ed.incoll}
+{ editor empty$
+ { "" }
+ { " (Hrsg.)" 'fkt :=
+ editor format.names
+ format.editors.organization
+ }
+ if$
+}
+
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title } %% Text so wie er dasteht im Feld title
+ if$
+}
+
+FUNCTION {format.number}
+{ number empty$
+ { "" }
+ { number " " * } %% Text so wie er im Feld number steht plus " "
+ if$
+}
+
+FUNCTION {format.digital.type}
+{ type empty$
+ { "" }
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ { "" }
+ { type } %% Typ einer digitalen Ressource in Form einer
+ %% "Ergaenzenden Angabe", so wie er dasteht;
+ %% Alternativ kann dieser Text auch in NOTE erfasst werden.
+ if$
+ }
+ if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+%% Auflagenvermerke gibt man komplett, einschliesslich Abkuerzungen in
+%% das Feld edition ein: ---> EDITION= { 3., erw. und verb. Aufl. }
+%% oder fremdsprachlich: EDITION= { 2nd edition }
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { edition }
+ if$
+}
+
+FUNCTION {format.version.url}
+{ url empty$ doi empty$ urn empty$ and and
+ { type$ "techreport" =
+ { format.edition }
+ { "" }
+ if$
+ }
+ { format.edition.or.date output format.url }
+ if$
+}
+
+FUNCTION {format.edition.or.version}
+{ url empty$ doi empty$ urn empty$ and and
+ { format.edition }
+ { format.edition.or.date }
+ if$
+}
+
+FUNCTION {format.address.publisher.year}
+{ publisher empty$
+ { address empty$
+ { year empty$
+ { "" }
+ { year }
+ if$
+ }
+ { "there's an address but no publisher in " cite$ * warning$
+ address ", " * format.date *
+ }
+ if$
+ }
+ { address empty$
+ { year empty$
+ { "neither address nor publication date in " cite$ * warning$
+ publisher
+ }
+ { publisher ", " * format.date * }
+ if$
+ }
+ { year empty$
+ { address " : " * publisher * }
+ { address " : " * publisher * ", " * format.date * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.howpublished}
+{ url missing$ urn missing$ doi missing$ AND AND
+ { howpublished empty$
+ { address empty$
+ { type empty$
+ { "" }
+ { type #-1 #4 substring$ "mail" =
+ { "(gesendet: " new.sentence
+ format.date * ")" *
+ }
+ { "" }
+ if$
+ }
+ if$
+ format.date *
+ }
+ { address ", " * format.date * }
+ if$
+ }
+ { address empty$
+ { howpublished ", " * format.date * }
+ { address " : " * howpublished * ", " * format.date * }
+ if$
+ }
+ if$
+ }
+ { howpublished empty$
+ { "" }
+ { howpublished }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {format.btitle.vol}
+{ number empty$
+ { series empty$
+ { volume empty$
+ { title emphasize }
+ { title emphasize ". Bd." * volume tie.or.space.connect }
+ if$
+ }
+ { volume empty$
+ { title emphasize }%% ein Buch, das zusaetzl. SERIES=Reihentitel besitzt
+ %% jetzt kommt d. Fall des mehrbaendigen Werkes mit Gesamttitel=SERIES
+ %% Zaehlung=VOLUME und Bandtitel=TITLE;
+ { series emphasize ". Bd." * volume tie.or.space.connect
+ ": " * "{\emph{" * title * "}}" * }
+ if$
+ }
+ if$%% series-test
+ }
+ { title emphasize }%% wenn number ex., dann immer title-Feld
+ if$%% Ende number-test
+}
+
+FUNCTION {format.series.number.din}
+{ volume empty$
+ { number empty$
+ { series empty$
+ { "" }
+ { "(" series * ")" * } %% d. Seriennr koennte auch gleich hier
+ %% im SERIES-Feld miterfasst werden
+ if$
+ }
+ { series empty$
+ { "(" number tie.or.space.connect ")" *
+ "there's a number but no series in " cite$ * warning$
+ }
+ { "(" series * number tie.or.space.connect ")" * }
+ if$
+ }
+ if$
+ }
+ { series empty$
+ { "" }
+ { type$ "proceedings" = %% Sonderfall, es darf VOLUME und NUMBER ex. !
+ type$ "inproceedings" = OR
+ { number empty$
+ { "(" series * ")" * }
+ { "(" series * number tie.or.space.connect ")" * }
+ if$
+ }
+ { "" }%% Ausstieg mit Nullstring, s. Kommentar
+ if$
+ }%% bei gezaehlten Reihen MUSS die Reihennr. im Feld NUMBER stehen!
+ if$ %% wenn also d. Feld VOLUME nicht leer ist, dann liegt ausser bei
+ %% Typ PROCEEDINGS/INPROCEEDINGS falsche
+ } %% Erfassung vor und es erfolgt d. Ausstieg mit d. Nullstring!
+ if$
+}
+
+FUNCTION {format.tr.series.or.number}
+{ number empty$
+ { series empty$
+ { "" }
+ { "(" series * ")" * }
+ if$
+ }
+ { series empty$
+ { "(" number * ")" * }
+ { "(" series * number tie.or.space.connect ")" * }
+ if$
+ }
+ if$
+ }
+
+FUNCTION {format.misc.series}
+{ series empty$
+ { "" }
+ { "(" series * ")" * }
+ if$
+}
+
+FUNCTION { format.doi.urn }
+{ urn empty$
+ { doi empty$
+ { "" }
+ { "DOI" doi n.dashify tie.or.space.connect }
+ if$
+ }
+ { "URN" urn n.dashify tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.isbn.issn }
+{ isbn empty$
+ { issn empty$
+ { "" }
+ { "ISSN" issn n.dashify tie.or.space.connect }
+ if$
+ }
+ { "ISBN" isbn n.dashify tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { url empty$
+ { "S." pages n.dashify tie.or.space.connect }
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pages.book}
+{ pages empty$
+ { "" }
+ { note empty$ isbn empty$ AND
+ { "" pages n.dashify tie.or.space.connect " S" *
+ add.period$
+ }
+ { "" pages n.dashify tie.or.space.connect " S" *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pages.bkcollation}
+{ pages empty$
+ { "" }
+ { "" pages n.dashify tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.bkpages.collat.check}
+{ 's :=
+ #1 'ptr :=
+ s text.length$ 'collation :=
+ collation #1 =
+ { format.pages.book }
+ {
+ collation 'collrest :=
+ { collrest #0 > }
+ { s ptr #2 substring$ 't :=
+ t "S." =
+ { format.pages.bkcollation
+ #0 'collrest := }
+ { ptr #1 + 'ptr :=
+ collrest #1 - 'collrest :=
+ #1 collrest =
+ { format.pages.book }
+ { skip$ }
+ if$
+ }
+ if$
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION {format.vol.year.num.pages}
+{ volume field.or.null
+ year empty$
+ { "there's no year in " cite$ * warning$ }
+ { " (" year * ")" * * }
+ if$
+ month empty$
+ 'skip$
+ { ", " month * * }
+ if$
+ number empty$
+ 'skip$
+ { ", Nr. " number * * }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ "" }
+ { title missing$
+ { ", " pages format.bkpages.collat.check * *}
+ { ", " format.pages * *}
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.inbook}
+{ duplicate$ empty$
+ { pop$ "empty chapter in " cite$ * warning$ }
+ { type empty$
+ { "\emph{Kapitel\/} " swap$ tie.or.space.connect }
+ { type " " * swap$ * }%% wenn keine bes. Abschnittsform gen. werden soll,
+ %% koennte e. kl. Zwischenraum gewaehlt werden, z.B. " \, "
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "Kapitel " }
+ { url empty$
+ { type }
+ { "Kapitel " }
+ if$
+ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle.din}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { volume empty$
+ { "{In: }" booktitle emphasize * }%% n. Belieben fettes In:
+ { "{In: }" booktitle emphasize * %% - " -
+ " Bd." volume tie.or.space.connect *
+ }
+ if$
+ }
+ { volume empty$
+ { "{In: }" format.ed.incoll * ": " * booktitle emphasize * }
+ { "{In: }" format.ed.incoll * ": " * booktitle emphasize *
+ " Bd." volume tie.or.space.connect *
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.tr.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type
+ }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "{In: }{\emph " journal * "}" * }%% n. Belieben fettes In:
+ if$
+ }
+ { "{In: }" key * }%% s.o. fettes In:
+ if$
+ " {\textbf{\citep{" * crossref * "}" * "}" * "}" * ", " * format.pages *
+}
+
+FUNCTION {format.crossref.editor}
+%vorher,Lue { editor #1 "{vv~}{ll}" format.name$ " (Hrsg.)" *
+ { editor #1 "{ll}" format.name$ " (Hrsg.)" *
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ ua.etal * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { ua.etal * }
+ { " ; " * editor #2 "{vv~}{ll}" format.name$ * " (Hrsg.)" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.inbk.vol.title}
+{ volume empty$
+ { " In: " }
+ { title empty$
+ { " In: Bd." volume tie.or.space.connect
+ " von " *
+ }
+ { "In: Bd." volume tie.or.space.connect ": " * title emphasize *
+ " (" * year * ") in " *
+ }
+ if$
+ }
+ if$
+ }
+
+FUNCTION {format.book.crossref}
+{ type$ "inbook" =
+ { format.inbk.vol.title }
+ { volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ " "
+ }
+ { ". -- Bd." volume tie.or.space.connect
+ " von " *
+ }
+ if$
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "" * }%% dadurch kommt nach der Band Nr. gleich das label 2/6/99
+%% { "{\emph{" * series * "}} {\textbf{siehe}} " * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { "" * }
+ if$
+ "{\textbf{\citep{" * crossref * "}" * "}" * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "{In: }{\emph " booktitle * "}" * }%%
+ if$
+ }
+ { "{In: }" }
+ if$
+ }
+ { "{In: }" }
+ if$
+ "{\textbf{\citep{" * crossref * "}" * "}" * "}" * %% ", " * format.pages *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ set.colon.after
+ format.title "title" output.check
+ crossref missing$
+ { journal article.in.journal output.nonnull
+ new.sentence
+ format.vol.year.num.pages output
+ format.url output
+ }
+ { format.article.crossref output.nonnull }
+ if$
+ format.online.lastcheck
+ doi set.period.dash.check
+ urn set.period.dash.check
+ format.doi.urn output
+ issn set.period.dash.check
+ format.isbn.issn output
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors format.editors output.nonnull }
+ if$
+ set.colon.after
+ crossref missing$
+ { format.btitle.vol "title" output.check }
+ { format.btitle "title" output.check }
+ if$
+ format.edition output
+ format.address.publisher.year "publisher" output.check
+ new.sentence
+ crossref missing$
+ { format.series.number.din output }
+ { format.book.crossref output.nonnull }
+ if$
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ format.doi output
+ format.url output
+ new.block
+ isbn set.period.dash.check
+ format.isbn.issn output
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors format.editors output.nonnull }
+ if$
+ set.colon.after
+ format.btitle "title" output.check
+ format.edition.or.version output
+ format.url output
+ format.online.lastcheck
+ format.howpublished output
+ series new.sentence.checka
+ format.series.number.din output
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ type set.period.dash.check
+ format.digital.type output
+ doi set.period.dash.check
+ urn set.period.dash.check
+ format.doi.urn output
+ note set.period.dash.check
+ note output
+ format.isbn.issn output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ chapter format.chapter.inbook output.nonnull
+ crossref missing$
+ { author empty$
+ { format.editors "\,{In:\,}" swap$ * "author and editor" output.check }
+ { format.authors "\,{In:\,}" swap$ * output.nonnull }
+ if$
+ author empty$ editor empty$ AND
+ { before.all 'output.state := }
+ { set.colon.after }
+ if$
+ format.btitle.vol "title" output.check
+ format.edition output
+ format.address.publisher.year "publisher" output.check
+ new.sentence
+ format.series.number.din output
+ isbn set.period.dash.check
+ format.isbn.issn output
+ }
+ { format.book.crossref output.nonnull
+ }
+ if$
+ part.of.sentence
+ format.pages output
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ set.colon.after
+ format.title "title" output.check
+ format.version.url output
+ type empty$ NOT
+ { type #-1 #4 substring$ "mail" =
+ type #1 #4 substring$ "Mail" =
+ OR
+ 'skip$
+ { format.online.lastcheck }
+ if$
+ }
+ { format.online.lastcheck }
+ if$
+ crossref missing$
+ { format.in.ed.booktitle.din "booktitle" output.check
+ format.edition output
+ format.address.publisher.year "publisher" output.check
+ format.maillist.url output
+ format.maillist.lastcheck
+ new.sentence
+ format.series.number.din output
+ doi set.period.dash.check
+ urn set.period.dash.check
+ format.doi.urn output
+ isbn set.period.dash.check
+ issn set.period.dash.check
+ format.isbn.issn output
+ }
+ { format.incoll.inproc.crossref output.nonnull }
+ if$
+ part.of.sentence
+ format.chapter.pages "pages" output.check
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ set.colon.after
+ format.title "title" output.check
+ crossref missing$
+ { format.in.ed.booktitle.din "booktitle" output.check
+ address empty$
+ { organization new.sentence.checka
+ organization output
+ part.of.sentence
+ format.address.publisher.year output
+ }
+ { format.address.publisher.year "publisher" output.check }
+ if$
+ new.sentence
+ format.series.number.din output
+ isbn set.period.dash.check
+ issn set.period.dash.check
+ format.isbn.issn output
+ }
+ { format.incoll.inproc.crossref output.nonnull }
+ if$
+ part.of.sentence
+ format.pages output
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }%% nach Patashnik, wg US-Kompatibilitaet
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ { title empty$
+ 'skip$
+ {format.btitle "title" output.check }
+ if$
+ }
+ 'skip$
+ if$
+ }
+ 'skip$
+ if$
+ format.authors.organization output.nonnull
+ set.colon.after
+ format.btitle "title" output.check
+ format.edition "edition" output.check
+ author empty$ organization empty$ AND
+ { address "address" output.check
+ part.of.sentence
+ }
+ { organization empty$
+ { address "address" output.check
+ part.of.sentence
+ }
+ { address ": " * organization * output
+ part.of.sentence
+ }
+ if$
+ }
+ if$
+ format.date output
+ number empty$
+ 'skip$
+ { "(" number * ") " * output }
+ if$
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ format.doi output
+ format.url output
+ format.online.lastcheck
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+%% Standard ist "Diplomarbeit", anderes mit TYPE="anderer Typ" erfassen!
+%% z.B. TYPE={Hausarbeit}, TYPE={Diss.}, TYPE={Habil.}, TYPE={Magisterarb.}
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ set.colon.after
+ format.btitle "title" output.check
+ address output
+ part.of.sentence
+ school "school" output.check
+ part.of.sentence
+ "Diplomarbeit" format.thesis.tr.type output.nonnull
+ part.of.sentence
+ format.date "year" output.check
+ format.url output
+ format.online.lastcheck
+ doi set.period.dash.check
+ urn set.period.dash.check
+ format.doi.urn output
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis} %% {mastersthesis}% ist identisch bis auf Standardwert, s.o.
+{ output.bibitem
+ format.authors "author" output.check
+ set.colon.after
+ format.btitle "title" output.check
+ address output
+ part.of.sentence
+ school "school" output.check
+ part.of.sentence
+ "Diss." format.thesis.tr.type output.nonnull % koennte auch `Dissertation' sein
+ part.of.sentence
+ format.date "year" output.check
+ format.url output
+ format.online.lastcheck
+ doi set.period.dash.check
+ urn set.period.dash.check
+ format.doi.urn output
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+
+%% Normen, Vornormen, Schutzrechte (Patente) werden hiermit erfasst;
+%% E-mail, (auch Internetressourcen moeglich; besser --> booklet-Fkt!)
+%% das type-Feld uebernimmt eine wichtige Steuerfunktion:
+FUNCTION {misc}
+{ output.bibitem
+ type missing$ not
+ { type duplicate$ #1 #4 substring$ "Norm" =
+ type #1 #4 substring$ "Vorn" = OR
+ { " " *
+ format.number * output
+ new.sentence
+ format.date output
+ title empty$
+ { skip$ }
+ { add.period$ new.sentence }
+ if$
+ format.btitle "title" output.check
+ note set.period.dash.check
+ note output
+ }
+ { duplicate$ #1 #6 substring$ "Schutz" =
+ { " " * format.number * output
+ new.sentence
+ "(" * format.date ")" * output
+ add.period$ new.sentence
+ format.authors.organization add.period$ output
+ note output
+ }
+ %% wenn irgendein anderer Typ eingetragen ist
+ { pop$ pop$ ""
+ title empty$
+ { note empty$
+ { url empty$
+ { "there's no relevant field in " cite$ warning$
+ pop$ ""
+ }
+ { format.url output }%%%
+ if$
+ }
+ { note " " * output.nonnull }
+ if$
+ }
+ { author empty$
+ { editor empty$
+ { organization empty$
+ { skip$ }
+ { format.editors.organization output.nonnull
+ set.colon.after
+ }
+ if$
+ }
+ { format.editors format.editors.organization
+ output.nonnull set.colon.after
+ }
+ if$
+ }
+ { format.authors format.editors output.nonnull
+ set.colon.after
+ }
+ if$
+ format.btitle output.nonnull
+ url empty$
+ { format.edition output
+ format.howpublished output}
+ { format.howpublished output
+ format.edition.or.version output
+ format.url output
+ }
+ if$
+ format.online.lastcheck
+ new.sentence
+ format.misc.series output
+ note set.period.dash.check
+ note output
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ %% wenn es keinen type gibt
+ { title empty$
+ { note empty$
+ { url empty$
+ { "there's no relevant field in " cite$ warning$
+ pop$ ""
+ }
+ { format.url output }%%% das waere e. reine URL
+ if$
+ }
+ { note " " * output.nonnull
+ }
+ if$
+ }
+ { author empty$
+ { editor empty$
+ { organization empty$
+ 'skip$
+ { format.editors.organization output.nonnull
+ set.colon.after
+ }
+ if$
+ }
+ { format.editors format.editors.organization
+ output.nonnull set.colon.after
+ }
+ if$
+ }
+ { format.authors format.editors output.nonnull
+ set.colon.after
+ }
+ if$
+ format.btitle output.nonnull
+ url empty$
+ { format.edition output
+ format.howpublished output}
+ { format.howpublished output
+ format.url output
+ format.edition.or.date output
+ format.online.lastcheck
+ }
+ if$
+ new.sentence
+ format.misc.series output
+ note set.period.dash.check
+ note output
+ }
+ if$
+ }
+ if$
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization empty$
+ { "empty organization and editor in " cite$ * warning$ }
+ { organization " (Veranst.)" * output }
+ if$
+ }
+ { format.editors format.editors.organization output.nonnull }
+ if$
+ set.colon.after
+ format.btitle "title" output.check
+ volume empty$
+ 'skip$
+ { "{\textnormal{Bd.}}" volume tie.or.space.connect emphasize "volume" output.check }
+ if$
+ format.address.publisher.year "publisher" output.check
+ new.sentence
+ format.series.number.din output.nonnull
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ isbn set.period.dash.check
+ issn set.period.dash.check
+ format.isbn.issn output
+ note set.period.dash.check
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ format.tr.institution output.nonnull }
+ { format.authors format.editors output.nonnull }
+ if$
+ set.colon.after
+ format.title "title" output.check
+ institution empty$
+ 'skip$
+ { author empty$ editor empty$ AND
+ 'skip$
+ { institution new.sentence.checka
+ "/ " institution * output.nonnull
+ }
+ if$
+ }
+ if$
+ format.version.url output
+ format.online.lastcheck
+ format.address.publisher.year output
+ number new.sentence.checka
+ format.tr.series.or.number "number" output.check
+ "Forschungsbericht" format.thesis.tr.type set.period.dash.check
+ "Forschungsbericht" format.thesis.tr.type output
+ pages empty$
+ { skip$ }
+ { pages set.period.dash.check
+ pages format.bkpages.collat.check output
+ }
+ if$
+ isbn set.period.dash.check
+ issn set.period.dash.check
+ format.isbn.issn output
+ note set.period.dash.check
+ note "note" output.check
+ fin.entry
+}
+
+
+FUNCTION {unpublished} {misc}%% author, title, note muessen sein! howpublished
+%% %% entfaellt natuerlich
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Januar"}
+
+MACRO {feb} {"Februar"}
+
+MACRO {mar} {"M{\^^b a}rz"}
+
+MACRO {apr} {"April"}
+
+MACRO {mai} {"Mai"}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {okt} {"Oktober"}
+
+MACRO {oct} {"Oktober"}
+
+MACRO {nov} {"November"}
+
+MACRO {dez} {"Dezember"}
+
+MACRO {dec} {"Dezember"}
+
+%%$$$ stillgelegte Beispiele fuer den Gebrauch von Kuerzeln (hier Zs-Titel).
+
+%%MACRO {acmcs} {"ACM Computing Surveys"}
+
+%%MACRO {acta} {"Acta Informatica"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ ua.etal * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { ua.etal * }
+ { und * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { year empty$
+ 'key
+ { editor format.lab.names }
+ if$
+ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #4 text.prefix$ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { key empty$%% das key-feld soll zwangsweise das label machen!
+ { editor format.lab.names }
+ { key }%%das ganze label
+ if$
+ }
+ if$
+}
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "booklet" =
+ type$ "inbook" =
+ or or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+%% year duplicate$ empty$
+%% short.list key field.or.null = or
+%% { pop$ "" }
+%% 'skip$
+%% if$
+ year field.or.null purify$ #1 #4 substring$
+ *
+ 'label :=
+ short.list " " *
+ year field.or.null purify$ #1 #4 substring$ * 'dinat.label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { ua.etal * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "Der " #4
+ "Die " #4
+ "Das " #4
+ "Ein " #4
+ "Eine " #5
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ chop.word
+ chop.word
+ chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort.PWD}%% so war es in plainnat
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}%%das key-Feld soll z. Sortieren ben. werden
+{ key empty$
+ { editor empty$
+ { organization empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { key sortify }
+ if$
+}
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "booklet" =
+ type$ "inbook" =
+ or or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+ dinat.label extra.label * 'dinat.label :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$ newline$
+ "% this bibliography is generated by nd24.bst [3.0c2] from 2005-12-21"
+ write$ newline$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\makeatletter"
+ write$ newline$
+ "\newcommand{\dinatlabel}[1]%"
+ write$ newline$
+ "{\ifNAT@numbers\else\NAT@biblabelnum{#1}\fi}"
+ write$ newline$
+ "\makeatother"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/projektdokumentation/Anhang.tex b/projektdokumentation/Anhang.tex
new file mode 100644
index 0000000..11b27aa
--- /dev/null
+++ b/projektdokumentation/Anhang.tex
@@ -0,0 +1,78 @@
+% !TEX root = Projektdokumentation.tex
+\section{Anhang}
+\subsection{Detaillierte Zeitplanung}
+\label{app:Zeitplanung}
+
+\tabelleAnhang{ZeitplanungKomplett}
+
+\input{Anhang/AnhangLastenheft.tex}
+
+\clearpage
+
+\input{Anhang/AnhangRessourcen.tex}
+
+\clearpage
+
+\subsection{Use Case-Diagramm}
+\label{app:UseCase}
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{UseCase.pdf}{1.3}
+\caption{Use Case-Diagramm}
+\end{figure}
+
+\clearpage
+
+\subsection{Amortisation}
+\label{app:Amortisation}
+Der Zeitpunkt der Amortisation wird als Schnittpunkt der beiden Geraden angegeben.
+
+\begin{figure}[htb]
+ \centering
+ \includegraphicsKeepAspectRatio{amortisationgrafik.png}{1}
+ \caption{Grafische Darstellung der Amortisation}
+\end{figure}
+
+\clearpage
+
+\subsection{composer.json Konfiguration für neusta-m2-intex-client}
+\label{app:ComposerJson}
+\lstinputlisting[language=json, caption={Konfiguration für neusta-m2-intex-client}]{Listings/composer.json}
+
+\clearpage
+
+\subsection{Deklaration zur Anlage einer SQL Tabelle im Magento 2 Umfeld}
+\label{app:InstallData}
+\lstinputlisting[language=xml, caption={Deklaration zur Anlage einer SQL Tabelle im Magento 2 Umfeld}]{Listings/InstallData.xml}
+
+\clearpage
+
+\subsection{Klasse: Factory}
+\label{app:Factory}
+\lstinputlisting[language=php, caption={Klasse: Factory}]{Listings/Factory.php}
+
+\clearpage
+
+\subsection{Klasse: CustomerConnection}
+\label{app:CustomerConnection}
+\lstinputlisting[language=php, caption={Klasse: CustomerConnection}]{Listings/CustomerConnection.php}
+
+\clearpage
+
+\subsection{Klasse: Connection}
+\label{app:Connection}
+\lstinputlisting[language=php, caption={Abstrakte Klasse: Connection}]{Listings/Connection.php}
+
+\clearpage
+
+\subsection{Klasse: CustomerDataController}
+\label{app:CustomerDataController}
+\lstinputlisting[language=php, caption={Klasse: CustomerDataController}]{Listings/CustomerDataController.php}
+
+\clearpage
+
+\subsection{UnitTest: FactoryTest}
+\label{app:UnitTest}
+\lstinputlisting[language=php, caption={Unit Test der Klasse: Factory}]{Listings/UnitTest.php}
+
+\clearpage
diff --git a/projektdokumentation/Anhang/AnhangBenutzerDoku.tex b/projektdokumentation/Anhang/AnhangBenutzerDoku.tex
new file mode 100644
index 0000000..f6e2892
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangBenutzerDoku.tex
@@ -0,0 +1,15 @@
+\subsection{Benutzerdokumentation}
+\label{app:BenutzerDoku}
+Ausschnitt aus der Benutzerdokumentation:
+
+\begin{table}[htb]
+\begin{tabularx}{\textwidth}{cXX}
+\rowcolor{heading}\textbf{Symbol} & \textbf{Bedeutung global} & \textbf{Bedeutung einzeln} \\
+\includegraphicstotab[]{weather-clear.png} & Alle Module weisen den gleichen Stand auf. & Das Modul ist auf dem gleichen Stand wie das Modul auf der vorherigen Umgebung. \\
+\rowcolor{odd}\includegraphicstotab[]{weather-clear-night.png} & Es existieren keine Module (fachlich nicht möglich). & Weder auf der aktuellen noch auf der vorherigen Umgebung sind Module angelegt. Es kann also auch nichts übertragen werden. \\
+\includegraphicstotab[]{weather-few-clouds-night.png} & Ein Modul muss durch das Übertragen von der vorherigen Umgebung erstellt werden. & Das Modul der vorherigen Umgebung kann übertragen werden, auf dieser Umgebung ist noch kein Modul vorhanden. \\
+\rowcolor{odd}\includegraphicstotab[]{weather-few-clouds.png} & Auf einer vorherigen Umgebung gibt es ein Modul, welches übertragen werden kann, um das nächste zu aktualisieren. & Das Modul der vorherigen Umgebung kann übertragen werden um dieses zu aktualisieren. \\
+\includegraphicstotab[]{weather-storm.png} & Ein Modul auf einer Umgebung wurde entgegen des Entwicklungsprozesses gespeichert. & Das aktuelle Modul ist neuer als das Modul auf der vorherigen Umgebung oder die vorherige Umgebung wurde übersprungen. \\
+\end{tabularx}
+\end{table}
+
diff --git a/projektdokumentation/Anhang/AnhangDoc.tex b/projektdokumentation/Anhang/AnhangDoc.tex
new file mode 100644
index 0000000..e0a46ba
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangDoc.tex
@@ -0,0 +1,7 @@
+\subsection{Entwicklerdokumentation}
+\label{app:Doc}
+\begin{center}
+\includegraphics[page=1, width=0.9\textwidth]{doc.pdf}
+
+\includegraphics[page=2, width=0.9\textwidth]{doc.pdf}
+\end{center}
diff --git a/projektdokumentation/Anhang/AnhangEntwuerfe.tex b/projektdokumentation/Anhang/AnhangEntwuerfe.tex
new file mode 100644
index 0000000..d9b26df
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangEntwuerfe.tex
@@ -0,0 +1,19 @@
+\subsection{Oberflächenentwürfe}
+\label{app:Entwuerfe}
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{MockupModules.pdf}{0.7}
+\caption{Liste der Module mit Filtermöglichkeiten}
+\end{figure}
+
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{MockupModul.pdf}{0.7}
+\caption{Anzeige der Übersichtsseite einzelner Module}
+\end{figure}
+
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{MockupTag.pdf}{0.7}
+\caption{Anzeige und Filterung der Module nach Tags}
+\end{figure}
diff --git a/projektdokumentation/Anhang/AnhangLastenheft.tex b/projektdokumentation/Anhang/AnhangLastenheft.tex
new file mode 100644
index 0000000..2452331
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangLastenheft.tex
@@ -0,0 +1,22 @@
+\subsection{Lastenheft (Auszug)}
+\label{app:Lastenheft}
+Im folgenden Auszug des Lastenheftes werden die Anforderungen definiert, die an die neu entwickelte Anwendung gestellt werden.
+
+Die Anwendung muss folgende Anforderungen erfüllen:
+\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
+\item Verarbeitung der empfangenen Daten von \ac{IX}
+ \begin{enumerate}
+ \item Die Anwendung muss Produkt- und Nutzerdaten von der \ac{IX}-\ac{API} abrufen können.
+ \item Die geholten Daten sollen temporär zwischengespeichert werden, um den Import zu \ac{M2} von der Datenbeschaffung abzukapseln
+ \item Die gespeicherten Daten werden getrennt von der \ac{IX}-\ac{API} an die \ac{M2} Import-Funktionen gegeben und so in das \ac{M2} System integriert
+ \end{enumerate}
+\item Sonstige Anforderungen
+ \begin{enumerate}
+ \item Die Anwendung muss ohne das Installieren einer zusätzlichen Software über das Terminal erreichbar sein.
+ \item Die Import der Daten muss jede Nacht \bzw nach jedem Fehlschlag automatisch aktualisiert werden.
+ \item Die Anwendung soll jederzeit erreichbar sein.
+ \item Da sich die Entwickler auf die Anwendung verlassen, muss diese korrekte Daten liefern und darf keinen Interpretationsspielraum lassen.
+ \item Die Anwendung muss so flexibel sein, dass sie bei Änderungen im Entwicklungsprozess einfach angepasst werden kann.
+ \end{enumerate}
+\end{enumerate}
+
diff --git a/projektdokumentation/Anhang/AnhangPflichtenheft.tex b/projektdokumentation/Anhang/AnhangPflichtenheft.tex
new file mode 100644
index 0000000..2875f3e
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangPflichtenheft.tex
@@ -0,0 +1,52 @@
+\subsection{Pflichtenheft (Auszug)}
+\label{app:Pflichtenheft}
+
+\subsubsection*{Zielbestimmung}
+
+\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
+\item Musskriterien % Wikipedia: für das Produkt unabdingbare Leistungen, die in jedem Fall erfüllt werden müssen
+ \begin{enumerate}
+ \item Modul-Liste: Zeigt eine filterbare Liste der Module mit den dazugehörigen Kerninformationen sowie Symbolen zur Einhaltung des Entwicklungsprozesses an
+ \begin{itemize}
+ \item In der Liste wird der Name, die Bibliothek und Daten zum Source und Kompilat eines Moduls angezeigt.
+ \item Ebenfalls wird der Status des Moduls hinsichtlich Source und Kompilat angezeigt. Dazu gibt es unterschiedliche Status-Zeichen, welche symbolisieren in wie weit der Entwicklungsprozess eingehalten wurde \bzw welche Schritte als nächstes getan werden müssen. So gibt es \zB Zeichen für das Einhalten oder Verletzen des Prozesses oder den Hinweis auf den nächsten zu tätigenden Schritt.
+ \item Weiterhin werden die Benutzer und Zeitpunkte der aktuellen Version der Sourcen und Kompilate angezeigt. Dazu kann vorher ausgewählt werden, von welcher Umgebung diese Daten gelesen werden sollen.
+ \item Es kann eine Filterung nach allen angezeigten Daten vorgenommen werden. Die Daten zu den Sourcen sind historisiert. Durch die Filterung ist es möglich, auch Module zu finden, die in der Zwischenzeit schon von einem anderen Benutzer editiert wurden.
+ \end{itemize}
+ \item Tag-Liste: Bietet die Möglichkeit die Module anhand von Tags zu filtern.
+ \begin{itemize}
+ \item Es sollen die Tags angezeigt werden, nach denen bereits gefiltert wird und die, die noch der Filterung hinzugefügt werden könnten, ohne dass die Ergebnisliste leer wird.
+ \item Zusätzlich sollen die Module angezeigt werden, die den Filterkriterien entsprechen. Sollten die Filterkriterien leer sein, werden nur die Module angezeigt, welche mit einem Tag versehen sind.
+ \end{itemize}
+ \item Import der Moduldaten aus einer bereitgestellten \acs{CSV}-Datei
+ \begin{itemize}
+ \item Es wird täglich eine Datei mit den Daten der aktuellen Module erstellt. Diese Datei wird (durch einen Cronjob) automatisch nachts importiert.
+ \item Dabei wird für jedes importierte Modul ein Zeitstempel aktualisiert, damit festgestellt werden kann, wenn ein Modul gelöscht wurde.
+ \item Die Datei enthält die Namen der Umgebung, der Bibliothek und des Moduls, den Programmtyp, den Benutzer und Zeitpunkt des Sourcecodes sowie des Kompilats und den Hash des Sourcecodes.
+ \item Sollte sich ein Modul verändert haben, werden die entsprechenden Daten in der Datenbank aktualisiert. Die Veränderungen am Source werden dabei aber nicht ersetzt, sondern historisiert.
+ \end{itemize}
+ \item Import der Informationen aus \ac{SVN}. Durch einen \gqq{post-commit-hook} wird nach jedem Einchecken eines Moduls ein \acs{PHP}-Script auf der Konsole aufgerufen, welches die Informationen, die vom \ac{SVN}-Kommandozeilentool geliefert werden, an \acs{NatInfo} übergibt.
+ \item Parsen der Sourcen
+ \begin{itemize}
+ \item Die Sourcen der Entwicklungsumgebung werden nach Tags, Links zu Artikeln im Wiki und Programmbeschreibungen durchsucht.
+ \item Diese Daten werden dann entsprechend angelegt, aktualisiert oder nicht mehr gesetzte Tags/Wikiartikel entfernt.
+ \end{itemize}
+ \item Sonstiges
+ \begin{itemize}
+ \item Das Programm läuft als Webanwendung im Intranet.
+ \item Die Anwendung soll möglichst leicht erweiterbar sein und auch von anderen Entwicklungsprozessen ausgehen können.
+ \item Eine Konfiguration soll möglichst in zentralen Konfigurationsdateien erfolgen.
+ \end{itemize}
+ \end{enumerate}
+\end{enumerate}
+
+\subsubsection*{Produkteinsatz}
+
+\begin{enumerate}[itemsep=0em,partopsep=0em,parsep=0em,topsep=0em]
+\item{Anwendungsbereiche\\
+Die Webanwendung dient als Anlaufstelle für die Entwicklung. Dort sind alle Informationen für die Module an einer Stelle gesammelt. Vorher getrennte Anwendungen werden ersetzt \bzw verlinkt.}
+\item{Zielgruppen\\
+\NI wird lediglich von den \ac{Natural}-Entwicklern in der EDV-Abteilung genutzt.}
+\item{Betriebsbedingungen\\ % Wikipedia: physikalische Umgebung des Systems, tägliche Betriebszeit, ständige Beobachtung des Systems durch Bediener oder unbeaufsichtigter Betrieb
+Die nötigen Betriebsbedingungen, also der Webserver, die Datenbank, die Versionsverwaltung, das Wiki und der nächtliche Export sind bereits vorhanden und konfiguriert. Durch einen täglichen Cronjob werden entsprechende Daten aktualisiert, die Webanwendung ist jederzeit aus dem Intranet heraus erreichbar.}
+\end{enumerate}
diff --git a/projektdokumentation/Anhang/AnhangRessourcen.tex b/projektdokumentation/Anhang/AnhangRessourcen.tex
new file mode 100644
index 0000000..12cb409
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangRessourcen.tex
@@ -0,0 +1,28 @@
+\subsection{Verwendete Ressourcen}
+\label{app:Ressourcen}
+ Hardware
+\begin{itemize}
+ \item Büroarbeitsplatz (Schreibtisch, ergonomischer Stuhl)
+ \item Fujitsu Lifebook U-Series - Notebook
+ \item Peripheriegeräte für Notebook (Tastatur, Maus)
+\end{itemize}
+
+Software
+\begin{itemize}
+ \item Debian Derivat Ubuntu 18.04 - Betriebssystem
+ \item JetBrains PHPStorm - Entwicklungsumgebung \ac{PHP}
+ \item git - Verteilte Versionsverwaltung
+ \item Docker - Open Source Management von virtuellen Maschinen (Containerbasiert)
+ \item mySQL - Open Source relationelles Datenbank Management System
+ \item Composer - Open Source Package Management System auf Anwendungsebene für \ac{PHP}
+ \item Magento 2 Community Edition - Open Source \ac{eCommerce} Platform
+ \item TeXify IDEA - Open Source Plugin für PHPStorm als Distribution des Textsatzsystems TeX
+ \item PHPUnit - Framework zur Durchführung von Unit-Tests
+ \item LaTeX-Vorlage zur IHK-Projektdokumentation für Fachinformatiker Anwendungsentwicklung von Stefan Macke - \url{http://fiae.link/LaTeXVorlageFIAE}
+\end{itemize}
+
+Personal
+\begin{itemize}
+ \item Mitarbeiter Softwareentwicklung der \ac{NSD} - Festlegung der Anforderungen, Abnahme des Projektes \& Review des Codes
+ \item Auszubildender Fachinformatiker als Entwickler - Umsetzung des Projektes
+\end{itemize}
diff --git a/projektdokumentation/Anhang/AnhangScreenshots.tex b/projektdokumentation/Anhang/AnhangScreenshots.tex
new file mode 100644
index 0000000..7c5ddcb
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangScreenshots.tex
@@ -0,0 +1,14 @@
+\subsection{Screenshots der Anwendung}
+\label{Screenshots}
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{tagliste.pdf}{1}
+\caption{Anzeige und Filterung der Module nach Tags}
+\end{figure}
+\clearpage
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{modulliste.pdf}{1}
+\caption{Liste der Module mit Filtermöglichkeiten}
+\end{figure}
+\clearpage
diff --git a/projektdokumentation/Anhang/AnhangTest.tex b/projektdokumentation/Anhang/AnhangTest.tex
new file mode 100644
index 0000000..ffea696
--- /dev/null
+++ b/projektdokumentation/Anhang/AnhangTest.tex
@@ -0,0 +1,9 @@
+\subsection{Testfall und sein Aufruf auf der Konsole}
+\label{app:Test}
+\lstinputlisting[language=php, caption={Testfall in PHP}]{Listings/tests.php}
+\clearpage
+\begin{figure}[htb]
+\centering
+\includegraphicsKeepAspectRatio{testcase.jpg}{1}
+\caption{Aufruf des Testfalls auf der Konsole}
+\end{figure}
diff --git a/projektdokumentation/Befehle.tex b/projektdokumentation/Befehle.tex
new file mode 100644
index 0000000..701af75
--- /dev/null
+++ b/projektdokumentation/Befehle.tex
@@ -0,0 +1,4 @@
+% Abkürzungen
+\newcommand{\Versis}{\textsc{Versis}\xspace}
+\newcommand{\NI}{NatInfo\xspace}
+\newcommand{\AO}{\textsc{Alte Oldenburger} Krankenversicherung\xspace}
diff --git a/projektdokumentation/Bibliographie.bib b/projektdokumentation/Bibliographie.bib
new file mode 100644
index 0000000..6dd2db6
--- /dev/null
+++ b/projektdokumentation/Bibliographie.bib
@@ -0,0 +1,92 @@
+% This file was created with JabRef 2.4.2.
+% Encoding: UTF8
+
+@book{Rohrer2011,
+ address = {Solingen},
+ edition = {5.},
+ title = {Clevere Tipps für die Projektarbeit - {IT-Berufe:} Abschlussprüfung Teil A},
+ isbn = {3882347538},
+ url = {http://fiae.link/ClevereTippsFuerDieProjektarbeit},
+ publisher = {{U-Form-Verlag}},
+ author = {Rohrer, Anselm and Sedlacek, Ramona},
+ year = {2011}
+}
+
+@misc{Bundesgesetzblatt48,
+ title = {Verordnung über die Berufsausbildung im Bereich der Informations- und Telekommunikationstechnik},
+ url = {http://fiae.link/VerordnungITBerufe},
+ author = {{Regierung der Bundesrepublik Deutschland}},
+ month = jul,
+ year = {1997},
+ pages = {1741--1799}
+}
+
+@techreport{BMBF2000,
+ address = {Bonn},
+ type = {Abschlussbericht},
+ title = {Umsetzungshilfen für die neue Prüfungsstruktur der {IT-Berufe}},
+ shorttitle = {{BMBF2000}},
+ url = {http://fiae.link/UmsetzungshilfenITBerufe},
+ author = {{Bundesministerium für Bildung und Forschung}},
+ institution = {{Bundesministerium für Bildung und Forschung}},
+ month = jul,
+ year = {2000},
+ pages = {476}
+}
+
+@techreport{Grashorn2010,
+ address = {Vechta},
+ type = {Dokumentation zur Projektarbeit},
+ title = {Entwicklung von NatInfo -- Webbasiertes Tool zur Unterstützung der Entwickler},
+ author = {Dirk Grashorn},
+ institution = {{Alte Oldenburger Krankenversicherung AG}},
+ month = apr,
+ year = {2010},
+}
+
+@misc{MerkblattIHK,
+ address = {Oldenburg},
+ title = {Merkblatt zur Abschlussprüfung der IT-Berufe},
+ author = {{IHK Oldenburg}},
+ institution = {{Oldenburgische Industrie- und Handelskammer}},
+ month = may,
+ year = {2006},
+ url = {http://fiae.link/MerkblattDokuOldenburg},
+}
+
+@misc{BewertungsmatrikIHK,
+ address = {Darmstadt},
+ title = {Bewertungsmatrix für Fachinformatiker/innen Anwendungsentwicklung},
+ author = {{IHK Darmstadt}},
+ institution = {{IHK Darmstadt Rhein Main Neckar}},
+ month = mar,
+ year = {2011},
+ url = {http://fiae.link/BewertungsmatrixDokuDarmstadt},
+}
+
+@misc{ISO9126,
+ title = {{Software-Engineering} – Qualität von {Software-Produkten} – Teil 1: Qualitätsmodell},
+ author = {{ISO/IEC 9126-1}},
+ month = jun,
+ year = {2001}
+}
+
+@BOOKLET{phpDoc,
+ title = {{phpDocumentor-Website}},
+ author = {{phpdoc.org}},
+ lastchecked = {20.04.2010},
+ year = {2010},
+ owner = {grashorn},
+ timestamp = {2010.04.22},
+ url = {http://www.phpdoc.org/}
+}
+
+@BOOKLET{Symfony,
+ title = {Symfony - Open-Source PHP Web Framework},
+ author = {{Sensio Labs}},
+ lastchecked = {20.04.2010},
+ year = {2010},
+ owner = {grashorn},
+ timestamp = {2010.04.22},
+ url = {http://www.symfony-project.org/}
+}
diff --git a/projektdokumentation/Bilder/CC-Attribution.pdf b/projektdokumentation/Bilder/CC-Attribution.pdf
new file mode 100644
index 0000000..f0a1639
--- /dev/null
+++ b/projektdokumentation/Bilder/CC-Attribution.pdf
@@ -0,0 +1,68 @@
+%PDF-1.5
+%
+3 0 obj
+<< /Length 4 0 R
+ /Filter /FlateDecode
+>>
+stream
+xmM19E,L;YώS
|Os~=^Tܘjk˭ԉ:}}Xwuf1GA=HMlݛn,4.UmMΙ>
+ >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 51.200001 51.200001 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 5 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.10.2 (http://cairographics.org))
+ /Producer (cairo 1.10.2 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000812 00000 n
+0000000528 00000 n
+0000000015 00000 n
+0000000506 00000 n
+0000000600 00000 n
+0000000877 00000 n
+0000001004 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1056
+%%EOF
diff --git a/projektdokumentation/Bilder/CC-Logo.pdf b/projektdokumentation/Bilder/CC-Logo.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..58fe219034b27ad26dde80ebd5780d23a27e919f
GIT binary patch
literal 3696
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
+stream
+xmRI0z#nZ'f09$?"v[%eYJ~~ѲUIL,^Ѵ<]m NfpD|wD5+ʆf^TpuaHǺ#gzW4[(l}#zq\f
+vny[6v>
+ >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 51.200001 51.200001 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 5 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.10.2 (http://cairographics.org))
+ /Producer (cairo 1.10.2 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000845 00000 n
+0000000561 00000 n
+0000000015 00000 n
+0000000539 00000 n
+0000000633 00000 n
+0000000910 00000 n
+0000001037 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1089
+%%EOF
diff --git a/projektdokumentation/Bilder/DeckblattIHK.pdf b/projektdokumentation/Bilder/DeckblattIHK.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f84aeeaa6e4d2d78a5b206bc9cab5e82d7dfe3b3
GIT binary patch
literal 10388
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
F{{Un*-QxfN
literal 0
HcmV?d00001
diff --git a/projektdokumentation/Bilder/DeckblattIHK_neu.pdf b/projektdokumentation/Bilder/DeckblattIHK_neu.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..61c71a44478db711e46b501889ae11f8bb6cd216
GIT binary patch
literal 507627
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