summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/milog/201605.csv33
-rw-r--r--Master/texmf-dist/doc/latex/milog/201605.dat40
-rw-r--r--Master/texmf-dist/doc/latex/milog/README.md23
-rw-r--r--Master/texmf-dist/doc/latex/milog/makefile68
-rw-r--r--Master/texmf-dist/doc/latex/milog/manifest.txt19
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog93
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog-example.pdfbin0 -> 176038 bytes
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog-example.tex38
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog-formular.pdfbin0 -> 169243 bytes
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog-formular.tex38
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog.cfg32
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog.dtx1180
-rw-r--r--Master/texmf-dist/doc/latex/milog/milog.pdfbin0 -> 132309 bytes
-rw-r--r--Master/texmf-dist/tex/latex/milog/milog.cls243
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/collection-langgerman.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/milog.tlpsrc0
17 files changed, 1809 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/milog/201605.csv b/Master/texmf-dist/doc/latex/milog/201605.csv
new file mode 100644
index 00000000000..9849dde4b68
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/201605.csv
@@ -0,0 +1,33 @@
+tag beginn pause ende dauer bemerkung
+1 {} {} {} {} Ruhetag
+2 6:20 {} 12:15 5:55 {}
+3 6:20 {} 12:05 5:45 {}
+4 6:20 1:00 13:15 5:55 Arztbesuch
+5 {} {} {} {} Feiertag
+6 {} {} {} {} Urlaub
+7 {} {} {} {} Ruhetag
+8 {} {} {} {} Ruhetag
+9 6:20 {} 12:25 6:05 {}
+10 6:20 {} 12:10 5:50 {}
+11 6:20 {} 12:25 6:05 {}
+12 6:20 {} 12:20 6:00 {}
+13 6:20 {} 12:10 5:50 {}
+14 {} {} {} {} Ruhetag
+15 {} {} {} {} Ruhetag
+16 {} {} {} {} Feiertag
+17 6:20 {} 12:05 5:45 {}
+18 6:20 {} 12:10 5:50 {}
+19 6:20 {} 12:20 6:00 {}
+20 6:20 {} 12:00 5:40 {}
+21 {} {} {} {} Ruhetag
+22 {} {} {} {} Ruhetag
+23 6:20 {} 12:05 5:45 {}
+24 6:20 {} 12:10 5:50 {}
+25 6:20 {} 13:10 6:50 {}
+26 {} {} {} {} Feiertag
+27 {} {} {} {} Urlaub
+28 {} {} {} {} Ruhetag
+29 {} {} {} {} Ruhetag
+30 6:20 {} 12:05 5:45 {}
+31 6:20 {} 12:05 5:45 {}
+nan nan nan nan 100:35 nan
diff --git a/Master/texmf-dist/doc/latex/milog/201605.dat b/Master/texmf-dist/doc/latex/milog/201605.dat
new file mode 100644
index 00000000000..3f9e5871950
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/201605.dat
@@ -0,0 +1,40 @@
+Arbeitszeiten von Max Mustermann;;;;; Mai 2016;;;;TeX Satz GmbH
+
+;;1. Schicht;;;;Arbeitszeit;;Arbeitszeit;
+Tag;Datum;von;bis;von;bis;Brutto;Pausen;Netto;Visum
+So.;1;Ruhetag;Ruhetag;;;;;;;;
+Mo.;2;6:20;12:15;;;5:55;0:00;5:55;;;
+Di.;3;6:20;12:05;;;5:45;0:00;5:45;;;
+Mi.;4;6:20;13:15;;;6:55;1:00;5:55;;;
+Do.;5;Feiertag;Feiertag;;;;;;;;
+Fr.;6;Ferien/Urlaub;Ferien/Urlaub;;;;;;;;
+Sa.;7;Ruhetag;Ruhetag;;;;;;;;
+So.;8;Ruhetag;Ruhetag;;;;;;;;
+Mo.;9;6:20;12:25;;;6:05;0:00;6:05;;;
+Di.;10;6:20;12:10;;;5:50;0:00;5:50;;;
+Mi.;11;6:20;12:25;;;6:05;0:00;6:05;;;
+Do.;12;6:20;12:20;;;6:00;0:00;6:00;;;
+Fr.;13;6:20;12:10;;;5:50;0:00;5:50;;;
+Sa.;14;Ruhetag;Ruhetag;;;;;;;;
+So.;15;Ruhetag;Ruhetag;;;;;;;;
+Mo.;16;Feiertag;Feiertag;;;;;;;;
+Di.;17;6:20;12:05;;;5:45;0:00;5:45;;;
+Mi.;18;6:20;12:10;;;5:50;0:00;5:50;;;
+Do.;19;6:20;12:20;;;6:00;0:00;6:00;;;
+Fr.;20;6:20;12:00;;;5:40;0:00;5:40;;;
+Sa.;21;Ruhetag;Ruhetag;;;;;;;;
+So.;22;Ruhetag;Ruhetag;;;;;;;;
+Mo.;23;6:20;12:05;;;5:45;0:00;5:45;;;
+Di.;24;6:20;12:10;;;5:50;0:00;5:50;;;
+Mi.;25;6:20;13:10;;;6:50;0:00;6:50;;;
+Do.;26;Feiertag;Feiertag;;;;;;;;
+Fr.;27;Ferien/Urlaub;Ferien/Urlaub;;;;;;;;
+Sa.;28;Ruhetag;Ruhetag;;;;;;;;
+So.;29;Ruhetag;Ruhetag;;;;;;;;
+Mo.;30;6:20;12:05;;;5:45;0:00;5:45;;;
+Di.;31;6:20;12:05;;;5:45;0:00;5:45;;;
+;;;;;Total;;;100:35
+;;;;;Saldo aktueller Monat;;;100:35
+;;;;;S. Vormonat;;;0:00
+;;;;;Bezahlte Überstunden;;;0:00
+;;;;;Saldo per 31.05.2016;;;100:35
diff --git a/Master/texmf-dist/doc/latex/milog/README.md b/Master/texmf-dist/doc/latex/milog/README.md
new file mode 100644
index 00000000000..6619f0e9bd3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/README.md
@@ -0,0 +1,23 @@
+# README #
+
+Seit dem 1. Januar 2015 gilt in Deutschland grundsätzlich für alle Arbeitnehmer
+ein flächendeckender gesetzlicher Mindestlohn in Höhe von
+derzeit 8,50€ pro Stunde. Mit Wirkung ab 1. August 2015 wurden die
+Dokumentations- und Aufzeichnungspflichten gelockert. Nach §17 MiLoG,
+muss Beginn, Ende und Dauer der täglichen Arbeitszeit der in §22 MiLoG
+definierten Arbeitnehmern (formlos) aufgezeichnet werden. Zusätzlich
+ermöglicht `milog.cls` aus praktischen Gründen die Aufzeichnug von unbezahlten
+Pausen und Bemerkungen (Ruhetag, Urlaub, Krank, ...).
+
+Die Erfassung der Arbeitszeiten erfolgt in einer simplen CSV-Datei, aus
+der die Klasse automatisch einen Arbeitszeitnachweis erstellt. Alternativ
+können die Daten auch durch einen CSV-Export — mit eventueller Nachbearbeitung
+— einer geeigneteten App erhoben werden.
+
+The `milog.cls` class provides means to fulfill the documentation duties
+by the German minimum wage law MiLoG. The recording of working hours
+is carried out in a simple CSV file from which the class will automatically
+create a time sheet. Alternatively, data can also be collected by a CSV
+export of a suitable app.
+
+License: LPPL
diff --git a/Master/texmf-dist/doc/latex/milog/makefile b/Master/texmf-dist/doc/latex/milog/makefile
new file mode 100644
index 00000000000..f099041b0b7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/makefile
@@ -0,0 +1,68 @@
+TEXMF = $(shell kpsewhich -var-value TEXMFLOCAL)
+RM = rm -f
+PKGNAME = milog
+
+all: package doc example
+
+doc: git example
+ pdflatex $(PKGNAME).dtx
+ bibtex $(PKGNAME)
+ makeindex -s gind.ist $(PKGNAME).idx
+ makeindex -s gglo.ist $(PKGNAME).glo -o $(PKGNAME).gls
+ pdflatex $(PKGNAME).dtx
+ bibtex $(PKGNAME)
+ makeindex -s gind.ist $(PKGNAME).idx
+ makeindex -s gglo.ist $(PKGNAME).glo -o $(PKGNAME).gls
+ pdflatex $(PKGNAME).dtx
+ bibtex $(PKGNAME)
+ makeindex -s gind.ist $(PKGNAME).idx
+ makeindex -s gglo.ist $(PKGNAME).glo -o $(PKGNAME).gls
+ sed -i -e '17,27d' $(PKGNAME).ind
+ pdflatex $(PKGNAME).dtx
+
+package:
+ pdftex $(PKGNAME).dtx
+ mv milog.sh milog
+ mv README.md ./../README.md
+
+example:
+ pdflatex $(PKGNAME)-example
+ pdflatex $(PKGNAME)-example
+ pdflatex $(PKGNAME)-formular
+ pdflatex $(PKGNAME)-formular
+
+
+install: doc
+ mkdir -p ${TEXMF}/doc/latex/${PKGNAME}
+ cp README.md ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.txt ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.tex ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.cfg ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.dat ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.csv ${TEXMF}/doc/latex/${PKGNAME}/
+ cp *.pdf ${TEXMF}/doc/latex/${PKGNAME}/
+ mkdir -p ${TEXMF}/tex/latex/${PKGNAME}
+ cp *.cls ${TEXMF}/tex/latex/${PKGNAME}/
+ texhash
+
+uninstall:
+ rm -rf ${TEXMF}/doc/latex/${PKGNAME}
+ rm -rf ${TEXMF}/tex/latex/${PKGNAME}
+ texhash
+
+git: package
+ cp *.cls ./../tex/latex/${PKGNAME}
+
+ctan: git
+ ./copyCTAN
+
+clean:
+ $(RM) *.aux *.fdb_latexmk *.fls *.ind *.idx *.ilg *.glo *.gls \
+ *.log *.lol *.m *.out *.tmp *.toc *.sh *.hd mlgdoc.csv \
+ *.bbl *.blg *.ins *.bib *.sty
+
+cleanall: clean
+ $(RM) $(PKGNAME).pdf $(PKGNAME)-example.pdf $(PKGNAME)-formular.pdf \
+ $(PKGNAME) README.md *.cfg *.csv *.dat *.tex *.txt *.cls
+
+.PHONY: all doc package example install uninstall git ctan clean cleanall
diff --git a/Master/texmf-dist/doc/latex/milog/manifest.txt b/Master/texmf-dist/doc/latex/milog/manifest.txt
new file mode 100644
index 00000000000..61701be15ad
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/manifest.txt
@@ -0,0 +1,19 @@
+This work consists of the following files:
+
+milog.dtx
+milog.pdf
+milog-example.pdf
+milog-formular.pdf
+README.md
+makefile
+
+Files packaged in milog.dtx:
+
+milog.cls
+milog.cfg
+milog
+milog-example.tex
+milog-formular.tex
+201605.dat
+201605.csv
+manifest.txt
diff --git a/Master/texmf-dist/doc/latex/milog/milog b/Master/texmf-dist/doc/latex/milog/milog
new file mode 100644
index 00000000000..21f00748d38
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog
@@ -0,0 +1,93 @@
+#!/bin/bash
+#
+VERSION="v1.0 (C) Josef Kleber (LPPL)"
+INPUT=""
+OUTPUT="_milog_.csv"
+DATE=""
+PDF="milog"
+CSV="true"
+LATEX="true"
+#
+while getopts "i:o:d:p:cl" flag
+do
+ case "$flag" in
+ i) INPUT="$OPTARG";;
+ o) OUTPUT="$OPTARG";;
+ p) PDF="$OPTARG";;
+ d) DATE="$OPTARG";;
+ c) LATEX="false";;
+ l) CSV="false";;
+ esac
+done
+#
+if [ "$DATE" = "" ]
+then
+ regex='^[0-9]{6}$'
+ YEARMONTH=`echo "$INPUT" | cut -d'.' -f1`
+ if [[ "$YEARMONTH" =~ $regex ]]
+ then
+ YEAR=`echo "$YEARMONTH" | cut -c1-4`
+ MONTH=`echo "$YEARMONTH" | cut -c5-6`
+ DATE="$MONTH/$YEAR"
+ fi
+fi
+#
+if [ "$CSV" = "true" ]
+then
+ echo "reading $INPUT"
+ cat "$INPUT" | \
+ # delete first 3 lines
+ head -n -4 | \
+ # delete last 3 lines
+ tail -n +4 | \
+ # deal with "empty" lines
+ sed -e 's/;;;;;;;;;$/{};{};{};{};{};{};{};{};{}/' | \
+ # delete some columns we don't need
+ cut -d ';' -f 2-4,8-10 | \
+ # replace the last ';' with ';{}'
+ sed -e 's/;$/;{}/' | \
+ # replace header keys
+ sed -e 's/Datum/tag/' -e 's/von/beginn/' -e 's/bis/ende/' -e 's/Pausen/pause/' -e 's/Netto/dauer/' -e 's/Visum/bemerkung/' | \
+ # change 'Ruhetag' lines
+ sed -e 's/\(.*\);Ruhetag;Ruhetag;.*/\1;{};{};{};{};Ruhetag/' | \
+ # change 'Ferien/Urlaub' lines
+ sed -e 's#\(.*\);Ferien/Urlaub;Ferien/Urlaub;.*#\1;{};{};{};{};Urlaub#' | \
+ # change 'Krank' lines
+ sed -e 's/\(.*\);Krank;Krank;.*/\1;{};{};{};{};Krank/' | \
+ # change 'Feiertag' lines
+ sed -e 's/\(.*\);Feiertag;Feiertag;.*/\1;{};{};{};{};Feiertag/' | \
+ # change last line with total hours
+ sed -e 's/^;;;;\(.*\)/nan;nan;nan;nan;\1;nan/' | \
+ # replace '0:00' with '{}'
+ sed -e 's/0:00/{}/g' | \
+ # change order of columns and field seperator (';' -> '\t')
+ awk 'BEGIN { OFS="\t"; FS=";" } { print $1, $2, $4, $3, $5, $6 }' >"$OUTPUT"
+ echo "writing $OUTPUT"
+fi
+#
+if [ "$LATEX" = "true" ]
+then
+ if [ "$CSV" = "false" ]
+ then
+ if [ -z "$INPUT" ]
+ then
+ OUTPUT="_milog_.csv"
+ else
+ OUTPUT="$INPUT"
+ fi
+ fi
+ cat >"$PDF.tex" <<EOF
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[month={$DATE}]{$OUTPUT}
+\end{document}
+EOF
+ echo "creating $PDF.pdf"
+ pdflatex "$PDF" 2>&1 >/dev/null
+ rm "$PDF".tex "$PDF".aux "$PDF".log
+fi
+#
+exit 0
diff --git a/Master/texmf-dist/doc/latex/milog/milog-example.pdf b/Master/texmf-dist/doc/latex/milog/milog-example.pdf
new file mode 100644
index 00000000000..b7f259adc7d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog-example.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/milog/milog-example.tex b/Master/texmf-dist/doc/latex/milog/milog-example.tex
new file mode 100644
index 00000000000..92d7b1dda20
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog-example.tex
@@ -0,0 +1,38 @@
+%%
+%% This is file `milog-example',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% milog.dtx (with options: `examplefile')
+%%
+%% Copyright (C) 2016 by:
+%% Josef Kleber
+%% <josef.kleber@gmx.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Josef Kleber.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[month={05/2016},cc=true]{201605.csv}
+\end{document}
+\endinput
+%%
+%% End of file `milog-example'.
diff --git a/Master/texmf-dist/doc/latex/milog/milog-formular.pdf b/Master/texmf-dist/doc/latex/milog/milog-formular.pdf
new file mode 100644
index 00000000000..26c675fabaa
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog-formular.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/milog/milog-formular.tex b/Master/texmf-dist/doc/latex/milog/milog-formular.tex
new file mode 100644
index 00000000000..526126ad775
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog-formular.tex
@@ -0,0 +1,38 @@
+%%
+%% This is file `milog-formular',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% milog.dtx (with options: `exform')
+%%
+%% Copyright (C) 2016 by:
+%% Josef Kleber
+%% <josef.kleber@gmx.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Josef Kleber.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[company={},name={},id={\space}]{\Formular}
+\end{document}
+\endinput
+%%
+%% End of file `milog-formular'.
diff --git a/Master/texmf-dist/doc/latex/milog/milog.cfg b/Master/texmf-dist/doc/latex/milog/milog.cfg
new file mode 100644
index 00000000000..848be8d30f1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog.cfg
@@ -0,0 +1,32 @@
+%%
+%% This is file `milog.cfg',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% milog.dtx (with options: `milogcfg')
+%%
+%% Copyright (C) 2016 by:
+%% Josef Kleber
+%% <josef.kleber@gmx.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Josef Kleber.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+\milogsetup{company={\TeX\ Satz GmbH},name={Mustermann, Max},id={01.01.1970/0815}}
+\endinput
+%%
+%% End of file `milog.cfg'.
diff --git a/Master/texmf-dist/doc/latex/milog/milog.dtx b/Master/texmf-dist/doc/latex/milog/milog.dtx
new file mode 100644
index 00000000000..3309c39a805
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog.dtx
@@ -0,0 +1,1180 @@
+% \iffalse meta-comment
+% !TEX program = pdfLaTeX
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+# README #
+
+Seit dem 1. Januar 2015 gilt in Deutschland grundsätzlich für alle Arbeitnehmer
+ein flächendeckender gesetzlicher Mindestlohn in Höhe von
+derzeit 8,50€ pro Stunde. Mit Wirkung ab 1. August 2015 wurden die
+Dokumentations- und Aufzeichnungspflichten gelockert. Nach §17 MiLoG,
+muss Beginn, Ende und Dauer der täglichen Arbeitszeit der in §22 MiLoG
+definierten Arbeitnehmern (formlos) aufgezeichnet werden. Zusätzlich
+ermöglicht `milog.cls` aus praktischen Gründen die Aufzeichnug von unbezahlten
+Pausen und Bemerkungen (Ruhetag, Urlaub, Krank, ...).
+
+Die Erfassung der Arbeitszeiten erfolgt in einer simplen CSV-Datei, aus
+der die Klasse automatisch einen Arbeitszeitnachweis erstellt. Alternativ
+können die Daten auch durch einen CSV-Export — mit eventueller Nachbearbeitung
+— einer geeigneteten App erhoben werden.
+
+
+The `milog.cls` class provides means to fulfill the documentation duties
+by the German minimum wage law MiLoG. The recording of working hours
+is carried out in a simple CSV file from which the class will automatically
+create a time sheet. Alternatively, data can also be collected by a CSV
+export of a suitable app.
+
+License: LPPL
+%</readme>
+%<*milogcfg>
+\milogsetup{company={\TeX\ Satz GmbH},name={Mustermann, Max},id={01.01.1970/0815}}
+%</milogcfg>
+%<*csvdoc>
+tag beginn pause ende dauer bemerkung
+01 06:20 \{\} 12:00 05:40 \{\}
+02 \{\} \{\} \{\} \{\} Ruhetag
+03 \{\} \{\} \{\} \{\} Ruhetag
+04 06:20 \{\} 12:00 05:40 \{\}
+05 06:20 \{\} 12:00 05:40 \{\}
+06 06:20 \{\} 12:05 05:45 \{\}
+07 06:20 \{\} 12:10 05:50 \{\}
+08 06:20 \{\} 12:05 05:45 \{\}
+09 \{\} \{\} \{\} \{\} Ruhetag
+10 \{\} \{\} \{\} \{\} Ruhetag
+nan nan nan nan 32:20 nan
+%</csvdoc>
+%<*exdat>
+Arbeitszeiten von Max Mustermann;;;;; Mai 2016;;;;TeX Satz GmbH
+
+;;1. Schicht;;;;Arbeitszeit;;Arbeitszeit;
+Tag;Datum;von;bis;von;bis;Brutto;Pausen;Netto;Visum
+So.;1;Ruhetag;Ruhetag;;;;;;;;
+Mo.;2;6:20;12:15;;;5:55;0:00;5:55;;;
+Di.;3;6:20;12:05;;;5:45;0:00;5:45;;;
+Mi.;4;6:20;13:15;;;6:55;1:00;5:55;;;
+Do.;5;Feiertag;Feiertag;;;;;;;;
+Fr.;6;Ferien/Urlaub;Ferien/Urlaub;;;;;;;;
+Sa.;7;Ruhetag;Ruhetag;;;;;;;;
+So.;8;Ruhetag;Ruhetag;;;;;;;;
+Mo.;9;6:20;12:25;;;6:05;0:00;6:05;;;
+Di.;10;6:20;12:10;;;5:50;0:00;5:50;;;
+Mi.;11;6:20;12:25;;;6:05;0:00;6:05;;;
+Do.;12;6:20;12:20;;;6:00;0:00;6:00;;;
+Fr.;13;6:20;12:10;;;5:50;0:00;5:50;;;
+Sa.;14;Ruhetag;Ruhetag;;;;;;;;
+So.;15;Ruhetag;Ruhetag;;;;;;;;
+Mo.;16;Feiertag;Feiertag;;;;;;;;
+Di.;17;6:20;12:05;;;5:45;0:00;5:45;;;
+Mi.;18;6:20;12:10;;;5:50;0:00;5:50;;;
+Do.;19;6:20;12:20;;;6:00;0:00;6:00;;;
+Fr.;20;6:20;12:00;;;5:40;0:00;5:40;;;
+Sa.;21;Ruhetag;Ruhetag;;;;;;;;
+So.;22;Ruhetag;Ruhetag;;;;;;;;
+Mo.;23;6:20;12:05;;;5:45;0:00;5:45;;;
+Di.;24;6:20;12:10;;;5:50;0:00;5:50;;;
+Mi.;25;6:20;13:10;;;6:50;0:00;6:50;;;
+Do.;26;Feiertag;Feiertag;;;;;;;;
+Fr.;27;Ferien/Urlaub;Ferien/Urlaub;;;;;;;;
+Sa.;28;Ruhetag;Ruhetag;;;;;;;;
+So.;29;Ruhetag;Ruhetag;;;;;;;;
+Mo.;30;6:20;12:05;;;5:45;0:00;5:45;;;
+Di.;31;6:20;12:05;;;5:45;0:00;5:45;;;
+;;;;;Total;;;100:35
+;;;;;Saldo aktueller Monat;;;100:35
+;;;;;S. Vormonat;;;0:00
+;;;;;Bezahlte Überstunden;;;0:00
+;;;;;Saldo per 31.05.2016;;;100:35
+%</exdat>
+%<*excsv>
+tag beginn pause ende dauer bemerkung
+1 {} {} {} {} Ruhetag
+2 6:20 {} 12:15 5:55 {}
+3 6:20 {} 12:05 5:45 {}
+4 6:20 1:00 13:15 5:55 Arztbesuch
+5 {} {} {} {} Feiertag
+6 {} {} {} {} Urlaub
+7 {} {} {} {} Ruhetag
+8 {} {} {} {} Ruhetag
+9 6:20 {} 12:25 6:05 {}
+10 6:20 {} 12:10 5:50 {}
+11 6:20 {} 12:25 6:05 {}
+12 6:20 {} 12:20 6:00 {}
+13 6:20 {} 12:10 5:50 {}
+14 {} {} {} {} Ruhetag
+15 {} {} {} {} Ruhetag
+16 {} {} {} {} Feiertag
+17 6:20 {} 12:05 5:45 {}
+18 6:20 {} 12:10 5:50 {}
+19 6:20 {} 12:20 6:00 {}
+20 6:20 {} 12:00 5:40 {}
+21 {} {} {} {} Ruhetag
+22 {} {} {} {} Ruhetag
+23 6:20 {} 12:05 5:45 {}
+24 6:20 {} 12:10 5:50 {}
+25 6:20 {} 13:10 6:50 {}
+26 {} {} {} {} Feiertag
+27 {} {} {} {} Urlaub
+28 {} {} {} {} Ruhetag
+29 {} {} {} {} Ruhetag
+30 6:20 {} 12:05 5:45 {}
+31 6:20 {} 12:05 5:45 {}
+nan nan nan nan 100:35 nan
+%</excsv>
+%<*bibfile>
+@misc{bib:pgfplotstable,
+ author = {Dr. Christian Feuersänger},
+ note = {\href{http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplotstable.pdf}{http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplotstable.pdf}},
+ title = {{Manual for Package pgfplotstable}},
+ year = {2016},
+ }
+
+@misc{bib:xkeyval,
+ author = {Hendri Adriaens},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/xkeyval/xkeyval.pdf}{http://mirrors.ctan.org/macros/latex/contrib/xkeyval/xkeyval.pdf}},
+ title = {{The xkeyval package}},
+ year = {2014},
+ }
+
+@misc{bib:geometry,
+ author = {Hideo Umeki},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/geometry/geometry.pdf}{http://mirrors.ctan.org/macros/latex/contrib/geometry/geometry.pdf}},
+ title = {{The geometry package}},
+ year = {2010},
+ }
+
+@misc{bib:tabularx,
+ author = {David Carlisle},
+ note = {\href{http://mirrors.ctan.org/macros/latex/required/tools/tabularx.pdf}{http://mirrors.ctan.org/macros/latex/required/tools/tabularx.pdf}},
+ title = {{The tabularx package}},
+ year = {2014},
+ }
+
+@misc{bib:booktabs,
+ author = {Simon Fear},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/booktabs/booktabs.pdf}{http://mirrors.ctan.org/macros/latex/contrib/booktabs/booktabs.pdf}},
+ title = {{Publication quality tables in \LaTeX}},
+ year = {2005},
+ }
+
+@misc{bib:colortbl,
+ author = {David Carlisle},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/colortbl/colortbl.pdf}{http://mirrors.ctan.org/macros/latex/contrib/colortbl/colortbl.pdf}},
+ title = {{The colortbl package}},
+ year = {2012},
+ }
+
+@misc{bib:xifthen,
+ author = {Josselin Noirel},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/xifthen/xifthen.pdf}{http://mirrors.ctan.org/macros/latex/contrib/xifthen/xifthen.pdf}},
+ title = {{The xifthen package}},
+ year = {2015},
+ }
+
+@misc{bib:background,
+ author = {Gonzalo Medina},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/background/background.pdf}{http://mirrors.ctan.org/macros/latex/contrib/background/background.pdf}},
+ title = {{The background package}},
+ year = {2014},
+ }
+
+@misc{bib:transparent,
+ author = {Heiko Oberdiek},
+ note = {\href{http://mirrors.ctan.org/macros/latex/contrib/oberdiek/transparent.pdf}{http://mirrors.ctan.org/macros/latex/contrib/oberdiek/transparent.pdf}},
+ title = {{The transparent package}},
+ year = {2016},
+ }
+
+@misc{bib:milog,
+ author = {{Bundesministerium der Justiz und für Verbraucherschutz (in Zusammenarbeit mit der juris GmbH)}},
+ note = {\href{https://www.gesetze-im-internet.de/bundesrecht/milog/gesamt.pdf}{https://www.gesetze-im-internet.de/bundesrecht/milog/gesamt.pdf}},
+ title = {{Gesetz zur Regelung eines allgemeinen Mindestlohns (Mindestlohngesetz - MiLoG)}},
+ year = {2014},
+ }
+
+@misc{app:arbeitszeiterfassung,
+ author = {{askanimus}},
+ note = {\newline\href{https://play.google.com/store/apps/details?id=askanimus.arbeitszeiterfassung}{https://play.google.com/store/apps/details?id=askanimus.arbeitszeiterfassung}},
+ title = {{Arbeitszeiterfassung}},
+ year = {2016},
+ }
+%</bibfile>
+%<*examplefile>
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[month={05/2016},cc=true]{201605.csv}
+\end{document}
+%</examplefile>
+%<*exform>
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[company={},name={},id={\space}]{\Formular}
+\end{document}
+%</exform>
+%<*manifest>
+This work consists of the following files:
+
+milog.dtx
+milog.pdf
+milog-example.pdf
+milog-formular.pdf
+README.md
+makefile
+
+Files packaged in milog.dtx:
+
+milog.cls
+milog.cfg
+milog
+milog-example.tex
+milog-formular.tex
+201605.dat
+201605.csv
+manifest.txt
+%</manifest>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+Copyright (C) 2016 by:
+Josef Kleber
+<josef.kleber@gmx.de>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3 of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.3 or later is part of all distributions of LaTeX version
+2003/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer of this work is Josef Kleber.
+
+This work consists of all files listed in manifest.txt.
+
+\endpreamble
+
+\usedir{tex/latex/milog}
+\generate{
+ \file{\jobname.cls}{\from{\jobname.dtx}{class}}
+}
+\generate{
+ \file{\jobname-example}{\from{\jobname.dtx}{examplefile}}
+}
+\generate{
+ \file{\jobname-formular}{\from{\jobname.dtx}{exform}}
+}
+\generate{
+ \file{\jobname.cfg}{\from{\jobname.dtx}{milogcfg}}
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\nopreamble\nopostamble
+\usedir{doc/latex/milog}
+\generate{
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+}
+\generate{
+ \file{manifest.txt}{\from{\jobname.dtx}{manifest}}
+}
+\generate{
+ \file{\jobname.bib}{\from{\jobname.dtx}{bibfile}}
+}
+\generate{
+ \file{mlgdoc.csv}{\from{\jobname.dtx}{csvdoc}}
+}
+\generate{
+ \file{milog.sh}{\from{\jobname.dtx}{milogsh}}
+}
+\generate{
+ \file{201605.dat}{\from{\jobname.dtx}{exdat}}
+}
+\generate{
+ \file{201605.csv}{\from{\jobname.dtx}{excsv}}
+}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%<*driver>
+\documentclass[a4paper]{ltxdoc}%
+\usepackage[ngerman]{babel}%
+\usepackage[utf8]{inputenc}%
+\usepackage[T1]{fontenc}%
+\usepackage{textcomp}%
+\usepackage{lmodern}%
+\usepackage{bera}%
+\usepackage{microtype}%
+\usepackage{cite}%
+\usepackage{csquotes}%
+\usepackage{marginnote}%
+\usepackage[svgnames,rgb]{xcolor}%
+\usepackage{listings}%
+\usepackage{makeidx}
+\usepackage{eurosym}
+\usepackage{tocstyle}
+\usetocstyle{standard}
+\usepackage[numbered]{hypdoc}
+\usepackage{ragged2e}%
+\usepackage{url}%
+\usepackage[automark,nouppercase]{scrpage2}
+\usepackage{tikz}
+\usetikzlibrary{calc}%
+% turn off idiotic tikz error in doc generation
+\makeatletter
+\global\let\tikz@ensure@dollar@catcode=\relax
+\makeatother
+\usepackage{alltt}%
+\usepackage{hyperref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\makeatletter
+\setlength{\headheight}{1.1\baselineskip}%
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {-2.5ex\@plus -1ex \@minus -.25ex}%
+ {1.25ex \@plus .25ex}%
+ {\normalfont\normalsize\bfseries}}
+\setcounter{secnumdepth}{5}
+\setcounter{tocdepth}{5}
+\hypersetup{colorlinks=true,urlcolor=NavyBlue,linkcolor=NavyBlue,citecolor=CornflowerBlue}%
+\lstset{literate=%
+ {Ö}{{\"O}}1
+ {Ä}{{\"A}}1
+ {Ü}{{\"U}}1
+ {ß}{{\ss}}1
+ {ü}{{\"u}}1
+ {ä}{{\"a}}1
+ {ö}{{\"o}}1
+ {~}{{\textasciitilde}}1
+}
+\lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny, basicstyle=\ttfamily, aboveskip=\baselineskip, frame=single, backgroundcolor=\color{LightGoldenrodYellow}, keywordstyle=\color{Blue},
+emph={}}
+\renewcommand{\maketitle}%
+{%
+ \thispagestyle{empty}%
+ \pagecolor{Ivory}%
+ \begin{titlepage}%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \node[yshift=-2cm] at (current page.north west)%
+ {%
+ \begin{tikzpicture}[remember picture, overlay]%
+ \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle%
+ (\paperwidth,2cm);%
+ \draw[anchor=west,yshift=-4cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\RaggedRight\Huge\sffamily\textbf{\@title}}};%
+ \draw[anchor=west,yshift=-6cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\huge\sffamily\textbf{\@fileversion}}};%
+ \draw[anchor=west,yshift=-9cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\RaggedRight\huge\sffamily\textbf{\@subtitle}}};%
+ \draw[anchor=west,yshift=-18cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\huge\sffamily\textbf{\@date}}};%
+ \draw[anchor=west,yshift=-20cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\Large\sffamily{\@authorline\\\textbf{\@author}}}};%
+ \end{tikzpicture}%
+ };%
+ \node[yshift=0cm] at (current page.south west)%
+ {%
+ \begin{tikzpicture}[remember picture, overlay]%
+ \draw[fill=NavyBlue,color=NavyBlue,yshift=6cm,xshift=2cm] (0,0) rectangle (0.2cm,19cm);%
+ \draw[fill=CornflowerBlue,color=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);%
+ \draw[anchor=west,yshift=1cm,xshift=3cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\large\sffamily{\@refline}}};%
+ \end{tikzpicture}%
+ };%
+ \end{tikzpicture}%
+ \end{titlepage}%
+ \pagecolor{white}%
+}%
+%
+\newcommand*{\@tikzhead}[1]%
+{%
+ \begin{tikzpicture}[remember picture,overlay]%
+ \node[yshift=-2cm] at (current page.north west)%
+ {%
+ \begin{tikzpicture}[remember picture, overlay]%
+ \draw[fill=CornflowerBlue] (0,0) rectangle (\paperwidth,2cm);%
+ \draw[anchor=west,yshift=1cm,xshift=1.5cm,color=NavyBlue] (0,0) node%
+ {\parbox{15cm}{\LARGE\sffamily\textbf{\@title}}};%
+ \node[anchor=east,xshift=.9\paperwidth,rectangle,%
+ rounded corners=15pt,inner sep=11pt,fill=NavyBlue]%
+ {\color{white}\textsc{#1}};%
+ \end{tikzpicture}%
+ };%
+ \end{tikzpicture}%
+}%
+\clearscrheadings%
+\ihead{\@tikzhead{\headmark}}%
+\cfoot{\upshape\thepage}%
+\pagestyle{scrheadings}%
+%
+\newcommand*{\Headline}[1]{\@mkboth{#1}{#1}\markright{#1}}%
+%
+\renewcommand{\headfont}{\normalfont\mdseries\scshape}
+%
+\gdef\@subtitle{}%
+\providecommand*{\Subtitle}[1]{\gdef\@subtitle{#1}}%
+\gdef\@fileversion{}%
+\providecommand*{\Fileversion}[1]{\gdef\@fileversion{#1}}%
+\gdef\@author{}%
+\providecommand*{\Author}[1]{\gdef\@author{#1}}%
+\gdef\@authorline{Package author:}%
+\providecommand*{\Authorline}[1]{\gdef\@authorline{#1}}%
+\gdef\@refline{}%
+\providecommand*{\Refline}[1]{\gdef\@refline{#1}}%
+\gdef\and{\unskip{}, }%
+\newcommand\doubledash{-\kern0.5pt-}
+\def\enoteformat{\rightskip\z@ \leftskip\z@ \parindent=1em\leavevmode\llap{\makeenmark}}
+\def\XeLaTeX{Xe\LaTeX}%
+%
+\newenvironment{optionlist}
+{\begin{trivlist}\setlength\leftskip{2em}}
+{\end{trivlist}}
+\newcommand\optitem[3]{\item [\texttt{\textbf{\textcolor{DodgerBlue}{#1}} \lbrack\textcolor{Crimson}{#2}\rbrack}] #3}
+\renewcommand\tableofcontents%
+{%
+ %\section*{\contentsname}%
+ %\@mkboth{%
+ %\MakeUppercase\contentsname}{\MakeUppercase\contentsname}%
+ \Headline{\MakeUppercase\contentsname}
+ \@starttoc{toc}%
+}%
+%
+%\newcommand\env[1]{\texttt{#1}}%
+\newcommand\layer[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (PGF layer)}%
+ \SortIndex{PGF layer>#1}{\texttt{#1}}}%
+\newcommand\styleoption[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (Style option)}%
+ \SortIndex{Style option>#1}{\texttt{#1}}}%
+\newcommand\envoption[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (Puzzle option)}%
+ \SortIndex{Puzzle option>#1}{\texttt{#1}}}%
+\newcommand\stylename[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (Style file)}%
+ \SortIndex{Style file>#1}{\texttt{#1}}}%
+\newcommand\package[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (Package)}%
+ \SortIndex{Package>#1}{\texttt{#1}}}%
+\newcommand\class[1]{\texttt{#1}\SortIndex{#1}{\texttt{#1} (Class)}%
+ \SortIndex{Class>#1}{\texttt{#1}}}%
+\newcommand*\margcs[1]{\marginnote{\hbadness=10000\RaggedLeft\scriptsize #1}}%
+\def\PrintIndex{\clearpage\Headline{\thechapter Index}\@input@{\jobname.ind}%
+ \global\let\PrintIndex\@empty}
+ \renewenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+\def\see##1##2{\textit{See} ##1}%
+\def\seealso##1##2{\textit{See also} ##1}%
+\long\def\cmd##1{\cs{\expandafter\cmd@to@cs\string##1}}%
+\def\@url##1{\url@break\ttt{##1}\endgroup}%
+\def\ttt{\begingroup\@sanitize\ttfamily\@ttt}%
+\def\@ttt##1{##1\endgroup}%
+\mathchardef\save@secnumdepth\c@secnumdepth
+\c@secnumdepth\m@ne
+ \phantomsection%
+ \twocolumn%[\section{\indexname}]%
+ \refstepcounter{section}
+ \addcontentsline{toc}{section}{\protect\numberline{\thesection}Index}%
+\c@secnumdepth\save@secnumdepth
+ %\thispagestyle{plain}
+ \parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\setlength\parindent{0pt}%
+\newcommand*\myref[1]{(siehe Abschnitt \ref{#1} auf Seite \pageref{#1})}
+\makeatother
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{\jobname.cls}
+% \def\filename{milog.cls}
+% \def\filedate{2016/07/01}
+% \def\fileversion{v1.0}
+% \hypersetup{pdfauthor={Josef Kleber},pdftitle={Eine LaTeX-Klasse zur Erfüllung der Dokumentationspflichten nach dem Mindestlohngesetz (MiLoG)},pdfsubject={Dokumentation der LaTeX-Klasse \filename}}%
+% \lstset{language=[LaTeX]TeX,numbers=left,numberstyle=\tiny, basicstyle=\ttfamily, aboveskip=\baselineskip, frame=single, backgroundcolor=\color{LightGoldenrodYellow}, keywordstyle=\color{Blue},
+% emph={milog},emphstyle=\color{Tomato},
+% emph={[2]color,companyname,company,namename,name,idname,id,monthname,month,heading},emphstyle={[2]\color{OliveDrab}},
+% morekeywords={milog}}
+% \DoNotIndex{\(,\),\1,\t,\,,\\,\begin,\end,\begingroup,\endgroup,\csname,\def,\else,\endcsname,\equal,\expandafter,
+% \fi,\gdef,\ifnum,\ifthenelse,\immediate,\MessageBreak,\NeedsTeXFormat,\newcommand,\renewcommand,\newif,
+% \PackageInfo,\PackageError,\ProcessOptionsX,\ProvidesPackage,\relax,\RequirePackage,
+% \space,\errmessage,\ExecuteOptionsX,}
+%
+% \bibliographystyle{plain}
+% \title{\filename}%
+% \Subtitle{Eine \LaTeX -Klasse zur Erfüllung der Dokumentationspflichten nach dem Mindestlohngesetz (MiLoG)}%
+% \author{Josef Kleber}
+% \Fileversion{\fileversion}
+% \date{\filedate}
+% \Refline{\href{mailto:milog@jklatex.de}{\texttt{milog@jklatex.de}}\\\href{http://milog.jklatex.de/}{\texttt{http://milog.jklatex.de/}}}
+% \maketitle
+% \stepcounter{page}
+% \tableofcontents
+% \clearpage
+% \setlength\parskip{6pt}%
+%
+%
+%\StopEventually{^^A
+% {
+% \clearpage
+% \raggedright
+% \nocite{*}
+% \bibliography{\jobname}
+% }
+% \clearpage
+% \PrintChanges
+% \PrintIndex
+%}
+%
+% \Headline{Zusammenfassung}
+% \begin{abstract}
+% Seit dem 1. Januar 2015 gilt in Deutschland grundsätzlich für alle Arbeitnehmer ein flächendeckender gesetzlicher Mindestlohn in Höhe von derzeit 8,50\,\euro\ pro Stunde.
+% Mit Wirkung ab 1. August 2015 wurden die Dokumentations- und Aufzeichnungspflichten gelockert.
+% Nach \S 17 MiLoG, muss Beginn, Ende und Dauer der täglichen Arbeitszeit der in \S 22 MiLoG definierten Arbeitnehmern (formlos) aufgezeichnet werden.
+% Zusätzlich ermöglicht \class{milog.cls} aus praktischen Gründen die Aufzeichnug von unbezahlten Pausen und Bemerkungen (Ruhetag, Urlaub, Krank, ...).
+%
+% Die Erfassung der Arbeitszeiten erfolgt in einer simplen CSV-Datei, aus der die Klasse automatisch einen Arbeitszeitnachweis erstellt.
+% Alternativ können die Daten auch durch einen CSV-Export --- mit eventueller Nachbearbeitung --- einer geeigneteten App erhoben werden.
+%
+% \vspace{1cm}
+%
+% The \class{milog.cls} class provides means to fulfill the documentation duties by the German minimum wage law MiLoG.
+% The recording of working hours is carried out in a simple \texttt{CSV} file from which the class will automatically create a time sheet.
+% Alternatively, data can also be collected by a CSV export of a suitable app.
+% \end{abstract}
+% \clearpage
+% \tableofcontents
+% \Headline{Klassenoptionen}
+%
+% \clearpage
+%
+% \Headline{Klassenoptionen}
+%
+% \section{Klassenoptionen}
+% \Headline{Klassenoptionen}
+% Grundsätzlich handelt es sich bei \class{milog.cls} um eine Wrapper-Klasse um \class{article.cls}, d.\,h. es können grundsätzlich die \enquote{normalen} Klassenoptionen vergewendet werden.
+% Dies sollte jedoch nicht nötig sein, da diese Klasse ein bestimmtes Formulardesign umsetzt! Sie bietet daher die folgenden Optionen, die auch mit lokaler Wirkung im \cmd\milog\ Makro angewendet werden können:
+% \begin{optionlist}
+% \optitem{heading}{Arbeitszeitnachweis nach dem Mindestlohngesetz (\S 17 MiLoG)}{Überschrift}
+% \optitem{cc}{false}{erstellt -- falls auf \texttt{true} gesetzt -- einen Durchschlag mit dem Wasserzeichen \enquote{Kopie}}
+% \optitem{companyname}{Firma}{Bezeichnung der Arbeitgeberorganisation}
+% \optitem{company}{}{Firmenname}
+% \optitem{namename}{Name, Vorname}{Bezeichnung der Personenidentifikation}
+% \optitem{name}{}{Name}
+% \optitem{idname}{Geburtsdatum, Personalnummer}{Bezeichnung einer zusätzlichen Personenidentifikation}
+% \optitem{id}{}{Zusatz-Id}
+% \optitem{monthname}{Monat/Jahr}{Bezeichnung der Aufzeichnungsperiode}
+% \optitem{month}{}{Aufzeichnungsperiode}
+% \optitem{color}{gray!40}{Farbvariation der Aufzeichnungsliste}
+% \end{optionlist}
+% \section{Die Konfigurationsdatei \texttt{milog.cfg}}
+% \label{sec:milogcfg}
+% Falls vorhanden, wird die Konfigurationsdatei \texttt{milog.cfg} eingebunden. Darin können etwa das Festlegen neuer Defaults für die oben angegebenen Optionen \myref{sec:milogsetup} oder auch
+% Redefinitionen des Layouts ausgelagert werden. Dies kann sowohl systemweit in einem (lokalen) \TeX-Tree erfolgen oder auch lokal im aktuellen Arbeitsverzeichnis!
+% \section{Das CSV-Datenformat}
+% \label{sec:csvformat}
+% Das folgende Beispiel zeigt den Aufbau der CSV-Dateien für den Arbeitszeitnachweis. Die einzelnen Spalten sind dabei durch Spaces oder Tabulatoren zu trennen.
+% Dadurch müssen \enquote{leere} Spalten durch die speziellen Marker \texttt{\{\}} bzw. \texttt{nan} gekennzeichnet werden. Diese werden in der ausgegebenen Tabelle
+% durch \enquote{--} bzw. \enquote{\cmd\space} ersetzt.
+%
+% \begin{center}
+% \begin{alltt}\input{mlgdoc.csv}\end{alltt}
+% \end{center}
+%
+% Eine Besonderheit stellt die letzte Zeile dar, in der die Gesamtarbeitszeit angegeben werden kann. Die Abschlusslinie der Tabelle wird \textbf{vor} der letzten Zeile gesetzt.
+% Es muss daher eine letzte Zeile mit \texttt{nan}-Einträgen vorhanden sein, falls die Ausgabe der Gesamtarbeitszeit nicht gewünscht sein sollte.
+% \section{Befehle}
+% \subsection{\textbackslash{}milog}
+% Das \cmd\milog{}\marginnote{\cmd\milog\\\oarg{Optionen}\marg{CSV-Datei}} Makro liest die \marg{CSV-Datei} ein und erstellt daraus
+% automatisch den gewünschten Arbeitszeitnachweis.
+% \subsection{\textbackslash{}Formular}
+% \label{sec:Formular}
+% Das \cmd\Formular{}\marginnote{\cmd\Formular} Makro stellt ein Blankoformular in Form einer \enquote{inline table} zur Verfügung.
+% Es kann anstatt einer \texttt{CSV}-Datei im \cmd\milog\ Makro verwendet werden.
+% \subsection{\textbackslash{}milogsetup}
+% \label{sec:milogsetup}
+% Das \cmd\milogsetup{}\marginnote{\cmd\milogsetup\marg{Optionen}} Makro dient dem erneuten Setzen der globalen Optionen.
+% Insbesonders in Verbindung mit der Konfigurationsdatei \texttt{milog.cfg} \myref{sec:milogcfg} zum Setzen systemweiter oder auf das aktuelle Verzeichnis bezogene Defaults.
+% \section{Beispiel}
+% Im folgenden Beispiel setzen wir die persönlichen Angaben in der Konfigurationsdatei \texttt{milog.cfg}.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\milogsetup{company={\TeX\ Satz GmbH},name={Mustermann, Max},
+ id={01.01.1970/0815}}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Anstatt in der Konfigurationsdatei könnten die persönlichen Angaben auch als Klassenoptionen gesetzt werden.
+% Den Zeitraum des Arbeitszeitnachweises setzen wir als lokale Option im \cmd\milog\ Makro.
+% Außerdem erzwingen wir durch Setzen der Option \texttt{cc} einen Durchschlag.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[month={05/2016},cc=true]{201605.csv}
+\end{document}
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \section{An app a day keeps the work away}
+% Abschließend möchte ich noch eine Möglichkeit zur weitestgehend automatischen Erstellung des Arbeitszeitnachweises aus dem
+% \texttt{CSV}-Export einer Arbeitszeit-App aufzeigen. Exemplarisch nutzen wir hierzu die Android-App \enquote{Arbeitszeiterfassung}\cite{app:arbeitszeiterfassung}.
+% Dazu wandeln wir den \texttt{CSV}-Export der App mit Hilfe des \texttt{milog} Bash-Scripts \myref{sec:milogimpl} in das von
+% \class{milog.cls} benötigte \texttt{CSV}-Format \myref{sec:csvformat}.
+% Grundsätzlich ermöglicht die App das Erfassen von zwei Schichten. Zur Vereinfachung wertet das Skript jedoch nur die erste Schicht aus.
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+$ milog -i 201605.dat
+reading 201605.dat
+writing _milog_.csv
+creating milog.pdf
+
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% Insbesonders verwenden wir für den Namen der \texttt{CSV}-Exportdatei das Format \texttt{YYYYMM}. Das Script setzt damit
+% die \texttt{month} Option automatisch. Die Angaben zur Person setzen wir mit Hilfe des \cmd\milogsetup\ Makros \myref{sec:milogsetup}
+% in der Konfigurationsdatei \texttt{milog.cfg} \myref{sec:milogcfg}. Alternativ wäre auch eine Anpassung der \texttt{HERE}-Datei
+% innerhalb des Scripts möglich. Die Verwendung der Konfigurationsdatei im jeweiligen Arbeitsverzeichnis ermöglicht jedoch
+% die Erstellung eines Arbeitszeitnachweises für unterschiedliche Personen mit demselben Script.
+%
+% Falls Anpassungen der \texttt{CSV}-Datei --- etwa in der Spalte \texttt{bemerkung} --- nötig sein sollten, kann die Erstellung
+% der \texttt{PDF}-Datei in zwei Schritten erfolgen!
+% \iffalse
+%<*example>
+% \fi
+\begin{lstlisting}
+$ milog -i 201605.dat -o 201605.csv -c
+reading 201605.dat
+writing 201605.csv
+
+[ ... Bearbeitung der CSV-Datei ... ]
+
+$ milog -i 201605.csv -p 201605 -l
+creating 201605.pdf
+
+\end{lstlisting}
+% \iffalse
+%</example>
+% \fi
+% \section{Implementierung}
+% \subsection{milog.cls}
+% \changes{v0.1}{2016/05/07}{initial version}
+% \changes{v1.0}{2016/07/01}{IPO CTAN}
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+% Zunächst stellen wir die \LaTeX\ Klasse \class{milog.cls} bereit.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesClass{milog}[2016/07/01 class for MiLoG documentation v1.0]%
+% \end{macrocode}
+% Wir laden die Pakete \package{xkeyval} und \package{xkvlxp} um geschweifte Klammern und etwas mehr in den globalen Klassenoptionen zu erlauben.
+% \begin{macrocode}
+\RequirePackage{xkeyval}%
+\RequirePackage{xkvltxp}%
+% \end{macrocode}
+% Wir stellen das Makro \cmd\MLG@JK@define@key zur Verfügung, das die Klassenoptionen mit globaler Wirkung%
+% und Optionen für das \cmd\milog\ Makro mit lokaler Wirkung definiert. Es bietet vier Argumente \marg{prefix},%
+% \marg{class},\marg{option} and \marg{default}.
+% \begin{macrocode}
+\newcommand*\MLG@JK@define@key[4]%
+{%
+ \expandafter\gdef\csname#1@#3\endcsname{#4}%
+ \define@key{#2.cls}{#3}[#4]%
+ {%
+ \expandafter\gdef\csname#1@#3\endcsname{##1}%
+ }%
+ \define@key{#2}{#3}%
+ {%
+ \expandafter\def\csname#1@#3\endcsname{##1}%
+ }%
+}%
+% \end{macrocode}
+% Damit können wir nun unsere Optionen definieren.
+% \changes{v0.5}{2016/06/03}{changed \texttt{color} default to \texttt{gray\string!40}}
+% \changes{v0.5}{2016/06/03}{added option \texttt{cc}}
+% \begin{macrocode}
+\MLG@JK@define@key{MLG@JK}{milog}{color}{gray!40}%
+\MLG@JK@define@key{MLG@JK}{milog}{companyname}{Firma}%
+\MLG@JK@define@key{MLG@JK}{milog}{company}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{namename}{Name, Vorname}%
+\MLG@JK@define@key{MLG@JK}{milog}{name}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{idname}{Geburtsdatum/Personalnummer}%
+\MLG@JK@define@key{MLG@JK}{milog}{id}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{monthname}{Monat/Jahr}%
+\MLG@JK@define@key{MLG@JK}{milog}{month}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{heading}{Arbeitszeitnachweis nach %
+dem Mindestlohngesetz (\S 17 MiLoG)}%
+\MLG@JK@define@key{MLG@JK}{milog}{cc}{false}%
+% \end{macrocode}
+% Jetzt wenden wir die Klassenoptionen an und setzen damit die Optionsmakros mit den Default-Werten.
+% \begin{macrocode}
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}%
+\ExecuteOptionsX{color,companyname,company,namename,name,idname,id,%
+ monthname,month,heading,cc}%
+\ProcessOptionsX*\relax%
+% \end{macrocode}
+% Wir laden die \class{article.cls} Klasse und müssen daher nichts weiter definieren.
+% \begin{macrocode}
+\LoadClass{article}%
+% \end{macrocode}
+% Wir laden weitere benötigte Pakete.
+% \begin{macrocode}
+\RequirePackage[margin={2cm,2cm}]{geometry}%
+\RequirePackage{tabularx}%
+\RequirePackage{booktabs}%
+\RequirePackage{colortbl}%
+\RequirePackage{xifthen}%
+\RequirePackage[pages=some]{background}%
+\RequirePackage{transparent}%
+\RequirePackage{pgfplotstable}%
+% \end{macrocode}
+% Für unser \enquote{Formular} benötigen wir keinen Absatzeinzug und keine Seitenzahlen.
+% \begin{macrocode}
+\setlength{\parindent}{0pt}%
+\pagestyle{empty}%
+% \end{macrocode}
+% Definitionen: Überschrift
+% \begin{macrocode}
+\newcommand*\MLG@JK@heading@font@size{\Large}%
+\newcommand*\MLG@JK@heading@font@style{\bfseries}%
+% \end{macrocode}
+% Definitionen: Abstände der Formularelemente
+%
+% Durch die Verwendung von \cmd\vfill\ wird der verbleibende Abstand gleichmäßig verteilt,
+% insbesonders bei unterschiedlich langen Monaten. Bei kürzeren Zeitabschnitten (wöchentlich) evtl. auf feste Abstände umdefinieren.
+% \begin{macrocode}
+\newcommand*\MLG@JK@idtab@topskip{\vfill}%
+\newcommand*\MLG@JK@csvtab@topskip{\vfill}%
+\newcommand*\MLG@JK@signaturebox@topskip{\vfill\vfill}%
+% \end{macrocode}
+% Definitionen: Tabelle (persönliche Daten)
+% \begin{macrocode}
+\newcommand*\MLG@JK@idtab@width{13cm}%
+\newcommand*\MLG@JK@idtab@as{1.3}%
+% \end{macrocode}
+% Definitionen: Tabelle (Arbeitszeitnachweis aus csv)
+% \begin{macrocode}
+\newcommand*\MLG@JK@csvtab@as{1.15}%
+\newcommand*\MLG@JK@csvtab@opacity{0.5}%
+% \end{macrocode}
+% Definitionen: cc (Optionen für \cmd\backgroundsetup)
+% \begin{macrocode}
+\newcommand*\MLG@JK@bgopt@contents{Kopie}%
+\newcommand*\MLG@JK@bgopt@color{gray!30}%
+\newcommand*\MLG@JK@bgopt@opacity{0.5}%
+\newcommand*\MLG@JK@bgopt@scale{25}%
+% \end{macrocode}
+% Definitionen: Unterschriftenabschnitt
+% \begin{macrocode}
+\newcommand*\MLG@JK@signaturebox@space{3cm}%
+% \end{macrocode}
+% Definitionen: Unterschrift
+% \begin{macrocode}
+\newcommand*\MLG@JK@signature@width{6cm}%
+\newcommand*\MLG@JK@signature@labelskip{2ex}%
+\newcommand*\MLG@JK@signature@employee{Arbeitnehmer}%
+\newcommand*\MLG@JK@signature@employer{Arbeitgeber}%
+% \end{macrocode}
+% Wir definieren die Ausgestaltung der Tabelle (csv). Insbesonders definieren wir die Ersetzungen \enquote{\texttt{nan}} $\rightarrow$ \enquote{\cmd\space} und \enquote{empty cells} $\rightarrow$ \enquote{--}.
+% \begin{macrocode}
+\pgfplotstableset%
+{%
+ columns/tag/.style={string type,%
+ column name={Tag},%
+ string replace={nan}{\space}},%
+ columns/beginn/.style={string type,%
+ column name={Arbeitsbeginn},%
+ string replace={nan}{\space}},%
+ columns/pause/.style={string type,%
+ column name={Unbezahlte Pause},%
+ string replace={nan}{\space}},%
+ columns/ende/.style={string type,%
+ column name={Arbeitsende},%
+ string replace={nan}{\space}},%
+ columns/dauer/.style={string type,%
+ column name={Arbeitsdauer},%
+ string replace={nan}{\space}},%
+ columns/bemerkung/.style={string type,%
+ column name={Bemerkung},%
+ string replace={nan}{\space}},%
+ empty cells with={--},%
+ every head row/.style={before row=\toprule,after row=\midrule},%
+ every even row/.style={before row={\rowcolor{\MLG@JK@color}}},%
+% \end{macrocode}
+% Wir helfen uns hier mit einem \enquote{dirty trick}! Die Abschlusslinie der Tabelle setzen wir \textbf{vor} der letzten Zeile!
+% Damit kann und \textbf{muss} die letzte Zeile die Gesamtzahl der geleisteten Arbeitstunden bzw. \enquote{nan} enthalten.
+% \begin{macrocode}
+ every last row/.style={before row=\bottomrule}%
+}%
+% \end{macrocode}
+% \changes{v0.5}{2016/06/03}{made \enquote{\texttt{colortbl}} transparent}
+% Wir definieren ein Makro, das ein \package{colortbl}-Makro ändert um Transparenz in farbigen Tabellenzeilen zu erlauben.
+%
+% Siehe: \href{https://tex.stackexchange.com/questions/56424/alpha-channel-in-colortbl}{https://tex.stackexchange.com/questions/56424/alpha-channel-in-colortbl}
+% \begin{macrocode}
+\newcommand*\MLG@JK@colortbl@transparent%
+{%
+ \def\CT@@do@color%
+ {%
+ \global\let\CT@do@color\relax%
+ \@tempdima\wd\z@%
+ \advance\@tempdima\@tempdimb%
+ \advance\@tempdima\@tempdimc%
+ \kern-\@tempdimb%
+ \transparent{\MLG@JK@csvtab@opacity}%
+ \leaders\vrule%
+ \hskip\@tempdima\@plus 1fill%
+ \kern-\@tempdimc%
+ \hskip-\wd\z@ \@plus -1fill%
+ }%
+}%
+% \end{macrocode}
+% \changes{v0.4}{2016/05/26}{added \cmd\Formular}
+% \begin{macro}{\Formular}
+% Das Makro \cmd\Formular\ erlaubt das Setzen eines Blankoformulars für die Arbeitszeiterfassung.
+%
+% \cs{Formular}
+% \begin{macrocode}
+\pgfplotstableread{%
+tag beginn pause ende dauer bemerkung
+1 nan nan nan nan nan
+2 nan nan nan nan nan
+3 nan nan nan nan nan
+4 nan nan nan nan nan
+5 nan nan nan nan nan
+6 nan nan nan nan nan
+7 nan nan nan nan nan
+8 nan nan nan nan nan
+9 nan nan nan nan nan
+10 nan nan nan nan nan
+11 nan nan nan nan nan
+12 nan nan nan nan nan
+13 nan nan nan nan nan
+14 nan nan nan nan nan
+15 nan nan nan nan nan
+16 nan nan nan nan nan
+17 nan nan nan nan nan
+18 nan nan nan nan nan
+19 nan nan nan nan nan
+20 nan nan nan nan nan
+21 nan nan nan nan nan
+22 nan nan nan nan nan
+23 nan nan nan nan nan
+24 nan nan nan nan nan
+25 nan nan nan nan nan
+26 nan nan nan nan nan
+27 nan nan nan nan nan
+28 nan nan nan nan nan
+29 nan nan nan nan nan
+30 nan nan nan nan nan
+31 nan nan nan nan nan
+nan nan nan nan nan nan
+}\Formular%
+% \end{macrocode}
+% \end{macro}
+% Wir laden --- falls vorhanden --- die Datei \texttt{milog.cfg}
+% \changes{v0.2}{2016/05/20}{added loading of milog.cfg}
+% \begin{macrocode}
+\AtBeginDocument%
+{%
+ \IfFileExists{milog.cfg}%
+ {%
+ \input{milog.cfg}%
+ }{}%
+}%
+% \end{macrocode}
+% Wir setzen die persönlichen Daten innerhalb einer Tabelle mit erhöhtem Zeilenabstand.
+% \changes{v0.4}{2016/05/26}{made \texttt{id} optional in idtab}
+% \begin{macrocode}
+\newcommand*\MLG@JK@idtab%
+{%
+ \MLG@JK@idtab@topskip%
+ \renewcommand{\arraystretch}{\MLG@JK@idtab@as}%
+ \begin{tabularx}{\MLG@JK@idtab@width}{>{\bfseries}r<{:}X}%
+ \MLG@JK@companyname & \MLG@JK@company \\%
+ \MLG@JK@namename & \MLG@JK@name \\%
+ \ifthenelse{\equal{\MLG@JK@id}{}}%
+ {}%
+ {\MLG@JK@idname & \MLG@JK@id \\}%
+ \MLG@JK@monthname & \MLG@JK@month%
+ \end{tabularx}%
+}%
+% \end{macrocode}
+% Wir setzen die Arbeitszeiten (csv) innerhalb einer Tabelle mit leicht erhöhtem Zeilenabstand.
+% \begin{macrocode}
+\newcommand*\MLG@JK@csvtab[1]%
+{%
+ \MLG@JK@csvtab@topskip%
+ \renewcommand{\arraystretch}{\MLG@JK@csvtab@as}%
+ \pgfplotstabletypeset{#1}%
+}%
+% \end{macrocode}
+% Wir setzen Unterschriftslinien mit zentriertem Label.
+% \begin{macrocode}
+\newcommand*\MLG@JK@signature[1]%
+{%
+ \parbox{\MLG@JK@signature@width}%
+ {%
+ \dotfill\\[\MLG@JK@signature@labelskip]%
+ \centering\footnotesize Datum, Unterschrift (#1)%
+ }%
+}%
+% \end{macrocode}
+% Wir setzen ein Unterschriftenblock für Arbeitnehmer und Arbeitgeber.
+% \begin{macrocode}
+\newcommand*\MLG@JK@signaturebox%
+{%
+ \MLG@JK@signaturebox@topskip%
+ \MLG@JK@signature{\MLG@JK@signature@employee}%
+ \hspace{\MLG@JK@signaturebox@space}%
+ \MLG@JK@signature{\MLG@JK@signature@employer}%
+}%
+% \end{macrocode}
+% Wir definieren ein Makro für den Aufbau des Arbeitszeitnachweises.
+% \begin{macrocode}
+\newcommand*\MLG@JK@doc@body[1]%
+{%
+ {\MLG@JK@heading@font@size\MLG@JK@heading@font@style\MLG@JK@heading}%
+ \MLG@JK@idtab%
+ \MLG@JK@csvtab{#1}%
+ \MLG@JK@signaturebox%
+}%
+% \end{macrocode}
+% \changes{v0.2}{2016/05/20}{added \cmd\milogsetup}
+% \begin{macro}{\milogsetup}
+% Das Makro \cmd\milogsetup\ ermöglicht das erneute Setzen der globalen Optionen, z. B. in der Datei \texttt{milog.cfg}.
+%
+% \cs{milogsetup}\marg{Optionen}
+% \begin{macrocode}
+\newcommand*\milogsetup[1]%
+{%
+ \setkeys{milog.cls}{#1}%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\milog}
+% Nun können wir das Usermakro \cmd\milog\ definieren
+%
+% \cs{milog}\oarg{Optionen}\marg{CSV-Datei}
+% \begin{macrocode}
+\newcommand\milog[2][]%
+{%
+% \end{macrocode}
+% Zunächst setzen die die Optionen für das Paket \package{background}.
+% Wir starten eine Gruppe um die Wirkung der Optionen lokal zu halten und
+% setzen abschließend die verschiedenen Formularabschnitte.
+% Falls ein cc (Carbon copy/Kopie) gewünscht wird, setzen wir den Dokumentbody erneut auf einer neuen Seite
+% und setzen auch das entsprechende Wasserzeichen im Hintergrund.
+% \begin{macrocode}
+ \centering%
+ \backgroundsetup%
+ {%
+ contents=\MLG@JK@bgopt@contents,%
+ color=\MLG@JK@bgopt@color,%
+ opacity=\MLG@JK@bgopt@opacity,%
+ scale=\MLG@JK@bgopt@scale%
+ }%
+ \begingroup%
+ \setkeys{milog}{#1}%
+ \MLG@JK@colortbl@transparent%
+ \MLG@JK@doc@body{#2}%
+ \ifthenelse{\equal{\MLG@JK@cc}{true}}%
+ {%
+ \newpage%
+ \BgThispage%
+ \MLG@JK@doc@body{#2}%
+ }%
+ {}%
+ \endgroup%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+% \begin{macrocode}
+%<*milogsh>
+% \end{macrocode}
+% \subsection{milog}
+% \label{sec:milogimpl}
+% \changes{v0.3}{2016/05/22}{added milog bash script}
+% Das folgende \texttt{milog} Bash-Script zeigt beispielhaft eine mögliche Implementierung zur automatischen Auswertung eines \texttt{CSV}-Exports
+% aus einer Arbeitszeiterfassungs"=App am Beispiel \enquote{Arbeitszeiterfassung}\cite{app:arbeitszeiterfassung}.
+% \begin{macrocode}
+#!/bin/bash
+#
+VERSION="v1.0 (C) Josef Kleber (LPPL)"
+% \end{macrocode}
+% Zunächst definieren wir einige Defaults, insbesondere für die \texttt{CSV}- und \texttt{PDF}-Ausgabedatei, sowie \enquote{boolsche} Schalter für die \enquote{CSV} und \enquote{LATEX} Durchgänge.
+% \begin{macrocode}
+INPUT=""
+OUTPUT="_milog_.csv"
+DATE=""
+PDF="milog"
+CSV="true"
+LATEX="true"
+#
+% \end{macrocode}
+% Nun können wir die Kommandozeilen-Argumente auswerten:
+%
+% \begin{description}
+% \item[-i] \texttt{CSV}-Eingabedatei
+% \item[-o] \texttt{CSV}-Ausgabedatei
+% \item[-p] \texttt{PDF}-Ausgabedatei
+% \item[-d] Datum/Zeitspanne, üblicherwiese im Format MM/YYYY
+% \item[-c] CSV only $\rightarrow$ \texttt{LATEX="false"}
+% \item[-l] LATEX only
+% \end{description}
+% \begin{macrocode}
+while getopts "i:o:d:p:cl" flag
+do
+ case "$flag" in
+ i) INPUT="$OPTARG";;
+ o) OUTPUT="$OPTARG";;
+ p) PDF="$OPTARG";;
+ d) DATE="$OPTARG";;
+ c) LATEX="false";;
+ l) CSV="false";;
+ esac
+done
+#
+% \end{macrocode}
+% Falls kein Datum übergeben wurde, versuchen wir den Namen der \texttt{CSV}-Eingabedatei im Format YYYYMM auszuwerten.
+% \begin{macrocode}
+if [ "$DATE" = "" ]
+then
+% \end{macrocode}
+% Zunächst definieren wir eine \enquote{regular expression} für eine sechsstellige Zahl und besorgen uns den Namen der \texttt{CSV}-Eingabedatei ohne Dateiendung.
+% \begin{macrocode}
+ regex='^[0-9]{6}$'
+ YEARMONTH=`echo "$INPUT" | cut -d'.' -f1`
+% \end{macrocode}
+% Gelingt ein \enquote{Match}, belegen wir \texttt{DATE} entsprechend im Format \texttt{MM/YYYY}.
+% \begin{macrocode}
+ if [[ "$YEARMONTH" =~ $regex ]]
+ then
+ YEAR=`echo "$YEARMONTH" | cut -c1-4`
+ MONTH=`echo "$YEARMONTH" | cut -c5-6`
+ DATE="$MONTH/$YEAR"
+ fi
+fi
+#
+% \end{macrocode}
+% Im \texttt{CSV}-Durchgang lesen wir zunächst die \texttt{CSV}-Eingabedatei ein, transformieren sie in das von \class{milog.cls} benötigte Format und schreiben sie in die \texttt{CSV}-Ausgabedatei.
+% \begin{macrocode}
+if [ "$CSV" = "true" ]
+then
+ echo "reading $INPUT"
+ cat "$INPUT" | \
+ # delete first 3 lines
+ head -n -4 | \
+ # delete last 3 lines
+ tail -n +4 | \
+ # deal with "empty" lines
+ sed -e 's/;;;;;;;;;$/{};{};{};{};{};{};{};{};{}/' | \
+ # delete some columns we don't need
+ cut -d ';' -f 2-4,8-10 | \
+ # replace the last ';' with ';{}'
+ sed -e 's/;$/;{}/' | \
+ # replace header keys
+ sed -e 's/Datum/tag/' -e 's/von/beginn/' -e 's/bis/ende/' -e 's/Pausen/pause/' -e 's/Netto/dauer/' -e 's/Visum/bemerkung/' | \
+ # change 'Ruhetag' lines
+ sed -e 's/\(.*\);Ruhetag;Ruhetag;.*/\1;{};{};{};{};Ruhetag/' | \
+ # change 'Ferien/Urlaub' lines
+ sed -e 's#\(.*\);Ferien/Urlaub;Ferien/Urlaub;.*#\1;{};{};{};{};Urlaub#' | \
+ # change 'Krank' lines
+ sed -e 's/\(.*\);Krank;Krank;.*/\1;{};{};{};{};Krank/' | \
+ # change 'Feiertag' lines
+ sed -e 's/\(.*\);Feiertag;Feiertag;.*/\1;{};{};{};{};Feiertag/' | \
+ # change last line with total hours
+ sed -e 's/^;;;;\(.*\)/nan;nan;nan;nan;\1;nan/' | \
+ # replace '0:00' with '{}'
+ sed -e 's/0:00/{}/g' | \
+ # change order of columns and field seperator (';' -> '\t')
+ awk 'BEGIN { OFS="\t"; FS=";" } { print $1, $2, $4, $3, $5, $6 }' >"$OUTPUT"
+ echo "writing $OUTPUT"
+fi
+#
+% \end{macrocode}
+% Im \texttt{LATEX}-Durchgang prüfen wir zuerst auf \enquote{\texttt{LATEX} only} und passen die \texttt{CSV}-Ausgabedatei entsprechend an.
+% \begin{macrocode}
+if [ "$LATEX" = "true" ]
+then
+ if [ "$CSV" = "false" ]
+ then
+ if [ -z "$INPUT" ]
+ then
+ OUTPUT="_milog_.csv"
+ else
+ OUTPUT="$INPUT"
+ fi
+ fi
+% \end{macrocode}
+% Wir definieren eine \texttt{HERE}-\LaTeX-Datei ...
+% \begin{macrocode}
+ cat >"$PDF.tex" <<EOF
+\documentclass{milog}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{libertine}
+\begin{document}
+\milog[month={$DATE}]{$OUTPUT}
+\end{document}
+EOF
+ echo "creating $PDF.pdf"
+% \end{macrocode}
+% und erzeugen damit unsere \texttt{PDF}-Datei.
+% \begin{macrocode}
+ pdflatex "$PDF" 2>&1 >/dev/null
+ rm "$PDF".tex "$PDF".aux "$PDF".log
+fi
+#
+exit 0
+% \end{macrocode}
+% \begin{macrocode}
+%</milogsh>
+% \end{macrocode}
+%\Finale \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/milog/milog.pdf b/Master/texmf-dist/doc/latex/milog/milog.pdf
new file mode 100644
index 00000000000..667715d7154
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/milog/milog.pdf
Binary files differ
diff --git a/Master/texmf-dist/tex/latex/milog/milog.cls b/Master/texmf-dist/tex/latex/milog/milog.cls
new file mode 100644
index 00000000000..b600dd289bc
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/milog/milog.cls
@@ -0,0 +1,243 @@
+%%
+%% This is file `milog.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% milog.dtx (with options: `class')
+%%
+%% Copyright (C) 2016 by:
+%% Josef Kleber
+%% <josef.kleber@gmx.de>
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Josef Kleber.
+%%
+%% This work consists of all files listed in manifest.txt.
+%%
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesClass{milog}[2016/07/01 class for MiLoG documentation v1.0]%
+\RequirePackage{xkeyval}%
+\RequirePackage{xkvltxp}%
+\newcommand*\MLG@JK@define@key[4]%
+{%
+ \expandafter\gdef\csname#1@#3\endcsname{#4}%
+ \define@key{#2.cls}{#3}[#4]%
+ {%
+ \expandafter\gdef\csname#1@#3\endcsname{##1}%
+ }%
+ \define@key{#2}{#3}%
+ {%
+ \expandafter\def\csname#1@#3\endcsname{##1}%
+ }%
+}%
+\MLG@JK@define@key{MLG@JK}{milog}{color}{gray!40}%
+\MLG@JK@define@key{MLG@JK}{milog}{companyname}{Firma}%
+\MLG@JK@define@key{MLG@JK}{milog}{company}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{namename}{Name, Vorname}%
+\MLG@JK@define@key{MLG@JK}{milog}{name}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{idname}{Geburtsdatum/Personalnummer}%
+\MLG@JK@define@key{MLG@JK}{milog}{id}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{monthname}{Monat/Jahr}%
+\MLG@JK@define@key{MLG@JK}{milog}{month}{}%
+\MLG@JK@define@key{MLG@JK}{milog}{heading}{Arbeitszeitnachweis nach %
+dem Mindestlohngesetz (\S 17 MiLoG)}%
+\MLG@JK@define@key{MLG@JK}{milog}{cc}{false}%
+\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}%
+\ExecuteOptionsX{color,companyname,company,namename,name,idname,id,%
+ monthname,month,heading,cc}%
+\ProcessOptionsX*\relax%
+\LoadClass{article}%
+\RequirePackage[margin={2cm,2cm}]{geometry}%
+\RequirePackage{tabularx}%
+\RequirePackage{booktabs}%
+\RequirePackage{colortbl}%
+\RequirePackage{xifthen}%
+\RequirePackage[pages=some]{background}%
+\RequirePackage{transparent}%
+\RequirePackage{pgfplotstable}%
+\setlength{\parindent}{0pt}%
+\pagestyle{empty}%
+\newcommand*\MLG@JK@heading@font@size{\Large}%
+\newcommand*\MLG@JK@heading@font@style{\bfseries}%
+\newcommand*\MLG@JK@idtab@topskip{\vfill}%
+\newcommand*\MLG@JK@csvtab@topskip{\vfill}%
+\newcommand*\MLG@JK@signaturebox@topskip{\vfill\vfill}%
+\newcommand*\MLG@JK@idtab@width{13cm}%
+\newcommand*\MLG@JK@idtab@as{1.3}%
+\newcommand*\MLG@JK@csvtab@as{1.15}%
+\newcommand*\MLG@JK@csvtab@opacity{0.5}%
+\newcommand*\MLG@JK@bgopt@contents{Kopie}%
+\newcommand*\MLG@JK@bgopt@color{gray!30}%
+\newcommand*\MLG@JK@bgopt@opacity{0.5}%
+\newcommand*\MLG@JK@bgopt@scale{25}%
+\newcommand*\MLG@JK@signaturebox@space{3cm}%
+\newcommand*\MLG@JK@signature@width{6cm}%
+\newcommand*\MLG@JK@signature@labelskip{2ex}%
+\newcommand*\MLG@JK@signature@employee{Arbeitnehmer}%
+\newcommand*\MLG@JK@signature@employer{Arbeitgeber}%
+\pgfplotstableset%
+{%
+ columns/tag/.style={string type,%
+ column name={Tag},%
+ string replace={nan}{\space}},%
+ columns/beginn/.style={string type,%
+ column name={Arbeitsbeginn},%
+ string replace={nan}{\space}},%
+ columns/pause/.style={string type,%
+ column name={Unbezahlte Pause},%
+ string replace={nan}{\space}},%
+ columns/ende/.style={string type,%
+ column name={Arbeitsende},%
+ string replace={nan}{\space}},%
+ columns/dauer/.style={string type,%
+ column name={Arbeitsdauer},%
+ string replace={nan}{\space}},%
+ columns/bemerkung/.style={string type,%
+ column name={Bemerkung},%
+ string replace={nan}{\space}},%
+ empty cells with={--},%
+ every head row/.style={before row=\toprule,after row=\midrule},%
+ every even row/.style={before row={\rowcolor{\MLG@JK@color}}},%
+ every last row/.style={before row=\bottomrule}%
+}%
+\newcommand*\MLG@JK@colortbl@transparent%
+{%
+ \def\CT@@do@color%
+ {%
+ \global\let\CT@do@color\relax%
+ \@tempdima\wd\z@%
+ \advance\@tempdima\@tempdimb%
+ \advance\@tempdima\@tempdimc%
+ \kern-\@tempdimb%
+ \transparent{\MLG@JK@csvtab@opacity}%
+ \leaders\vrule%
+ \hskip\@tempdima\@plus 1fill%
+ \kern-\@tempdimc%
+ \hskip-\wd\z@ \@plus -1fill%
+ }%
+}%
+\pgfplotstableread{%
+tag beginn pause ende dauer bemerkung
+1 nan nan nan nan nan
+2 nan nan nan nan nan
+3 nan nan nan nan nan
+4 nan nan nan nan nan
+5 nan nan nan nan nan
+6 nan nan nan nan nan
+7 nan nan nan nan nan
+8 nan nan nan nan nan
+9 nan nan nan nan nan
+10 nan nan nan nan nan
+11 nan nan nan nan nan
+12 nan nan nan nan nan
+13 nan nan nan nan nan
+14 nan nan nan nan nan
+15 nan nan nan nan nan
+16 nan nan nan nan nan
+17 nan nan nan nan nan
+18 nan nan nan nan nan
+19 nan nan nan nan nan
+20 nan nan nan nan nan
+21 nan nan nan nan nan
+22 nan nan nan nan nan
+23 nan nan nan nan nan
+24 nan nan nan nan nan
+25 nan nan nan nan nan
+26 nan nan nan nan nan
+27 nan nan nan nan nan
+28 nan nan nan nan nan
+29 nan nan nan nan nan
+30 nan nan nan nan nan
+31 nan nan nan nan nan
+nan nan nan nan nan nan
+}\Formular%
+\AtBeginDocument%
+{%
+ \IfFileExists{milog.cfg}%
+ {%
+ \input{milog.cfg}%
+ }{}%
+}%
+\newcommand*\MLG@JK@idtab%
+{%
+ \MLG@JK@idtab@topskip%
+ \renewcommand{\arraystretch}{\MLG@JK@idtab@as}%
+ \begin{tabularx}{\MLG@JK@idtab@width}{>{\bfseries}r<{:}X}%
+ \MLG@JK@companyname & \MLG@JK@company \\%
+ \MLG@JK@namename & \MLG@JK@name \\%
+ \ifthenelse{\equal{\MLG@JK@id}{}}%
+ {}%
+ {\MLG@JK@idname & \MLG@JK@id \\}%
+ \MLG@JK@monthname & \MLG@JK@month%
+ \end{tabularx}%
+}%
+\newcommand*\MLG@JK@csvtab[1]%
+{%
+ \MLG@JK@csvtab@topskip%
+ \renewcommand{\arraystretch}{\MLG@JK@csvtab@as}%
+ \pgfplotstabletypeset{#1}%
+}%
+\newcommand*\MLG@JK@signature[1]%
+{%
+ \parbox{\MLG@JK@signature@width}%
+ {%
+ \dotfill\\[\MLG@JK@signature@labelskip]%
+ \centering\footnotesize Datum, Unterschrift (#1)%
+ }%
+}%
+\newcommand*\MLG@JK@signaturebox%
+{%
+ \MLG@JK@signaturebox@topskip%
+ \MLG@JK@signature{\MLG@JK@signature@employee}%
+ \hspace{\MLG@JK@signaturebox@space}%
+ \MLG@JK@signature{\MLG@JK@signature@employer}%
+}%
+\newcommand*\MLG@JK@doc@body[1]%
+{%
+ {\MLG@JK@heading@font@size\MLG@JK@heading@font@style\MLG@JK@heading}%
+ \MLG@JK@idtab%
+ \MLG@JK@csvtab{#1}%
+ \MLG@JK@signaturebox%
+}%
+\newcommand*\milogsetup[1]%
+{%
+ \setkeys{milog.cls}{#1}%
+}%
+\newcommand\milog[2][]%
+{%
+ \centering%
+ \backgroundsetup%
+ {%
+ contents=\MLG@JK@bgopt@contents,%
+ color=\MLG@JK@bgopt@color,%
+ opacity=\MLG@JK@bgopt@opacity,%
+ scale=\MLG@JK@bgopt@scale%
+ }%
+ \begingroup%
+ \setkeys{milog}{#1}%
+ \MLG@JK@colortbl@transparent%
+ \MLG@JK@doc@body{#2}%
+ \ifthenelse{\equal{\MLG@JK@cc}{true}}%
+ {%
+ \newpage%
+ \BgThispage%
+ \MLG@JK@doc@body{#2}%
+ }%
+ {}%
+ \endgroup%
+}%
+\endinput
+%%
+%% End of file `milog.cls'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 58615692644..dea6228057e 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -392,7 +392,7 @@ my @TLP_working = qw(
metapost-examples metatex metatype1 metauml
method metre metrix
mf2pt1 mfirstuc mflogo mflogo-font mfnfss mfpic mfpic4ode mftinc mhchem
- mhequ miama microtype microtype-de midnight midpage mil3 miller
+ mhequ miama microtype microtype-de midnight midpage mil3 miller milog
minibox minifp minipage-marginpar miniplot minitoc minorrevision
minted mintspirit minutes
mkgrkindex mkjobtexmf mkpattern mkpic
diff --git a/Master/tlpkg/tlpsrc/collection-langgerman.tlpsrc b/Master/tlpkg/tlpsrc/collection-langgerman.tlpsrc
index f9ee6ca4252..92c82a93128 100644
--- a/Master/tlpkg/tlpsrc/collection-langgerman.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-langgerman.tlpsrc
@@ -32,6 +32,7 @@ depend latexcheat-de
depend lshort-german
depend lualatex-doc-de
depend microtype-de
+depend milog
depend presentations
depend r_und_s
depend templates-fenn
diff --git a/Master/tlpkg/tlpsrc/milog.tlpsrc b/Master/tlpkg/tlpsrc/milog.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/milog.tlpsrc