\documentclass[a4paper]{ltxdoc} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[english,ngerman]{babel} \usepackage{xparse,xargs} \usepackage{newfloat} \usepackage[usenames,dvipsnames,svgnames,table]{xcolor} \definecolor{blau}{rgb}{0,0,0.75} \definecolor{orange}{rgb}{0.8,0.3,0} \usepackage{filecontents} \begin{filecontents}{bewerbung.bib} @electronic{komacv, author = "Salome Södergan", month = {Aug}, year = "2014", title = "komacv", subtitle = "Typesetting a beuatiful CV with various style options", url = {http://www.ctan.org/pkg/komacv}, urldate = {2015-07-09}, } @electronic{scrlttr2, author = "Markus Kohm", month = {Jul}, year = "2015", title = "scrlttr2", subtitle = "Koma-Script ‘letter’ class", url = {http://www.ctan.org/pkg/scrlttr2}, urldate = {2015-07-09}, } @electronic{datatool, author = "Nicola Talbot", year = "2014", title = "datatool", subtitle = "Tools to load and manipulate data", url = {http://www.ctan.org/pkg/datatool}, urldate = {2015-07-09}, } @electronic{pdfpages, author = "Andreas Matthias", year = "2015", title = "pdfpages", subtitle = "Include PDF documents in LaTeX", url = {http://www.ctan.org/pkg/pdfpages}, urldate = {2015-07-09}, } \end{filecontents} \usepackage[% backend=biber, sortlocale=de_DE, style=authoryear, bibencoding=UTF8, block=space, autocite=inline, language=ngerman, ]{biblatex} \addglobalbib{bewerbung.bib} \renewcommand*{\mkbibnamelast}{\textsc} \DeclareCiteCommand{\citeauthorfull} {% \boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\ifciteindex% {\indexnames{labelname}} {}% \printnames[first-last]{author}} {\multicitedelim} {\usebibmacro{postnote}} \usepackage{hyperref} \hypersetup{% pdftitle = {\LaTeX-classes and -packages for typesetting nice applications and % tables of applications - \LaTeX-Klassen und -Pakete zum Setzen schöner % Bewerbungsmappen und einer Übersichtstabelle zur Dokumentation der % Bewerbungsversuche}, % pdfsubject = {}, % pdfkeywords = {LaTeX,CTAN,applications,bewerbungen,cv,lebenslauf,arge,Agentur für Arbeit}, % pdfauthor = {Andr\'e Hilbig}, % colorlinks = true, % hypertexnames = true, % linkcolor=blau, % filecolor=orange, % citecolor=blau, % menucolor=orange, % urlcolor=orange, % breaklinks=true % } \usepackage{graphics,graphicx,textcomp} \usepackage{placeins,float,caption,prettyref} \usepackage{pdfpages,listings,xspace} \usepackage{amssymb,multicol,pdflscape} \usepackage[german=guillemets]{csquotes} \newrefformat{sec}{Abschnitt\,\ref{#1}, S.\,\pageref{#1}} \newrefformat{paket}{Paket~\ref{#1}, S.\,\pageref{#1}} \newrefformat{klasse}{Klasse~\ref{#1}, S.\,\pageref{#1}} \newrefformat{fig}{Abb.\,\ref{#1}} \newrefformat{tab}{Tab.\,\ref{#1}} \newrefformat{bsp}{Bsp.\,\ref{#1}, S.\,\pageref{#1}} \newcommand{\refMacro}[1]{Makro \texttt{\textbackslash#1}, S.\,\pageref{#1}} \DeclareFloatingEnvironment[name={Bsp.}, listname={Beispielverzeichnis}, within=section]{example} \floatstyle{ruled} \restylefloat{example} \NewDocumentEnvironment{beispiel}{o o m}{ \begin{example}[ht!] \centering \vspace{0.2cm} \IfNoValueTF{#2}{ \caption{#3} }{ \caption[#2]{#3} } }{ \IfNoValueTF{#1}{ \label{\theexample} }{ \label{#1} } \vspace{0.2cm} \end{example} } \DisableCrossrefs \makeatletter \makeatother \lstset{ % language=[LaTeX]TeX, basicstyle=\small, numbers=left, numberstyle=\footnotesize, stepnumber=1, numbersep=5pt, backgroundcolor=\color{Peach!30!white}, showspaces=false, showstringspaces=false, showtabs=false, frame=single, tabsize=2, resetmargins=true, captionpos=b, title={}, caption={}, breaklines=true, breakautoindent=true, prebreak=\mbox{ $\curvearrowright$}, postbreak=\mbox{$\rightsquigarrow$ }, linewidth=\columnwidth, breakatwhitespace=true, numberstyle=\tiny\color{gray}, keywordstyle=\color{OliveGreen}\textbf, commentstyle=\color{gray}\itshape, stringstyle=\color{mauve}, morekeywords={ minisec, subsection, glqq, grqq, euro, Name, Vorname, Street, Plz, Stadt, MeinBeruf, EMail, Tel, Mobile, Sta, GebDatum, ID, Anhang, includepdf, includepdfmerge, cventry, cvlistitem, cvlanguage, definecolor, maketitle, makePerson, cp, ln, mkdir, todayOrt, todayDatum, }, literate=% {Ö}{{\"O}}1 {Ä}{{\"A}}1 {Ü}{{\"U}}1 {ß}{\ss}2 {ü}{{\"u}}1 {ä}{{\"a}}1 {ö}{{\"o}}1 {»}{{\frqq}}4 {«}{{\flqq}}4 {~}{$\sim$}1 } \xspaceaddexceptions{\guillemotright,\guillemotleft} \CheckSum{0} \begin{document} \title{\LaTeX-classes and -packages for typesetting nice applications and tables of applications\newline\ \newline \LaTeX-Klassen und -Pakete zum Setzen schöner Bewerbungsmappen und einer Übersichtstabelle zur Dokumentation der Bewerbungsversuche} \author{Andr\'e Hilbig \\ \texttt{mail@andrehilbig.de} \\ \url{https://git.andrehilbig.de/ahilbig/vorlagebewerbung}} \date{2022-01-17} \maketitle \begin{abstract} \foreignlanguage{english}{ This project has the aim to provide packages and classes for typesetting an application with titlepage, letter, cv and additional documents in just one document. Also there is a class for printing a table with the latest applications that can be shown to the german authorities. The data of the applications can be edited in a simple csv file. } Dieses Projekt hat das Ziel, Pakete und Klassen zum Setzen von Bewerbungsmappen mit Titelseite, Brief, Lebenslauf und zusätzlichen Dokumenten bereitzustellen. Außerdem gibt es eine Klasse zum Setzen einer Tabelle mit den aktuellen Bewerbungsversuchen, die der Agentur für Arbeit vorgelegt werden kann. Die Daten der Bewerbungsversuche werden in einer simplen csv-Datei verwaltet. \end{abstract} \begin{multicols}{2} \tableofcontents \end{multicols} \vrule \begin{multicols}{2} \listofexample \end{multicols} \clearpage \begingroup \selectlanguage{english} \section{Introduction} There are a lot of great projects for writing documents of an application in \LaTeX. But they all got two problems you will have to find a workaround for. A normal application has a titlepage, a letter, a cv and some additional documents like your diploma. There is a package or class in \LaTeX\ for every part -- but in the end your application is split up in at least three documents you'll have to merge. Also you'll have to put the data of yourself and the company you're writing to in every document in a different way. It's a little bit complicated to merge the functionality of all the different projects into one document on \TeX-level, because you can not load different classes at one time. So I thought of rewriting some of the packages. Mainly I want to thank \citeauthorfull{komacv} for his great work. I simply copied his class and packages and rewrote the class to use it as a package. So all the credit for the cv belongs to him. If you loose your job in germany, you'll have to report to the authorities every application you wrote to get the small charity. Otherwise the charity gets smaller. I wanted to have a document that \enquote{knows} all your latest applications and throws out a table for that issue. Of course that is a job for the great \citetitle{datatool} project of \citeauthorfull{datatool}. Last but not least there is the great \citetitle{scrlttr2} class for writing letters by \citeauthorfull{scrlttr2}. I use it to print the letter within the document and added the possibility to show a titlepage. \subsection{Thanks} Of course without the \verb|CTAN|-project none of this could have happened. Special thanks goes to these three people for their awesome work: \begin{itemize} \item \citeauthorfull{scrlttr2} \autocite{scrlttr2}, \item \citeauthorfull{komacv} \autocite{komacv} and \item \citeauthorfull{datatool} \autocite{datatool}. \end{itemize} \subsection{Hint} This documentation is mainly written in german, because the package itself provides only german macros. Aside from that it was designed to get applications and documentation for the german authorities working together. Maybe the work could be usefull for non german too. Then someone should write a wrapper for my macros -- in fact I did not touch so much of the koma-internals of \verb|scrlttr2| or \verb|komacv|, perhaps it is not that bigger work. I think the authorities in Germany demand very much work of a person potentially not responsible for her/his situation. You get only a very small charity. So you have to write a huge amount of applications -- even to jobs you and the companies don't care about you applying for. And of course you can not be trusted to really write applications like hell. Because of that you'll have to show a documentation of all your applications to get your money. I thought we'd need a \LaTeX-package to automate this stuff and so I made it. \endgroup \selectlanguage{ngerman} \section{Änderungen} \begin{description} \item[v1.0] Veröffentlichung \item[v1.1] \begin{itemize} \item Leerzeichen in Anrede hinzugefügt \item Kodierungs- und Spracheinstellungen aus der Klasse entfernt \item Leerzeichenproblematiken entfernt \item Satz in der Dokumentation überarbeitet \item Kontaktdaten in den READMEs korrigiert \end{itemize} \end{description} \section{Installation} \subsection{Automatische Installation} Die Pakete sind über \verb|CTAN| verfügbar und können so über den \verb|tlmgr| bzw. die Paketverwaltung des Betriebssystems\footnote{Leider halten viele Distributionen ihre \LaTeX-Installationen nicht aktuell. Daher wird empfohlen die direkten Quellen, etwa von |texlive|, zu verwenden.} abgerufen werden. \subsection{Manuelle Installation} Falls eine automatisierte Installation nicht möglich ist, können die Pakete auch manuell installiert werden. Es wird jedoch empfohlen, eine aktuelle Distribution zu verwenden, etwa \verb|texlive2015|. Für Versionen davor kann keine Kompatibilität gewährleistet werden. Zur Installation werden die Dateien \verb|bewerbung.ins| und \verb|bewerbung.dtx| benötigt. Ergänzend können die Beispieldateien \verb|bewerbung.tex|, \verb|argetabelle.tex| und \verb|Foto.pdf| sinnvoll sein. \begin{itemize} \item Erzeugung der Paket- und Klassendateien \begin{lstlisting}[gobble=9,numbers=none,language=bash,% linewidth=0.7\textwidth,resetmargins=false] latex bewerbung.dtx \end{lstlisting} \item Die erzeugten Paket- (*.sty) und Klassendateien (*.cls) und die Datei \verb|titlepage.inc| müssen in einem für \TeX\ lesbarem Verzeichnis platziert werden. Für eine lokale Installation bietet sich dafür \verb|~/texmf/tex/latex/bewerbung/| an. \item Außerdem wird die Datei \verb|config.inc| erzeugt. Diese Datei stellt die Konfiguration der jeweiligen Bewerbung dar. Daher sollte diese Datei immer in das jeweils aktuelle Verzeichnis kopiert werden (vgl. \prettyref{sec:struktur}). \item Aktualisieren der \TeX-Distribution \begin{lstlisting}[gobble=9,numbers=none,language=bash,% linewidth=0.7\textwidth,resetmargins=false] texhash \end{lstlisting} \item Erzeugen der Dokumentation \begin{lstlisting}[gobble=9,numbers=none,language=bash,% linewidth=0.7\textwidth,resetmargins=false] latexmk -pdf bewerbung.dtx \end{lstlisting} \end{itemize} \section{Benutzung}\label{sec:benutzung} \subsection{Konfigurationen}\label{sec:konfiguration} \subsubsection{Eigene Person}\label{sec:eigeneperson} Bei der Erstellung wurde die Datei \verb|config.inc| erzeugt. In dieser Datei werden die persönlichen Informationen konfiguriert. Die Datei wird beim Erstellen einer Bewerbungsmappe (vgl. \prettyref{sec:bewerbungsmappe}) automatisch eingebunden und ist notwendig. Die folgenden Makros definieren für eine \textit{konkrete} Bewerbung die persönlichen Informationen. Als jeweils kleingeschriebenes Makro existiert ein Befehl, der im Dokument verwendet werden kann, um diese Information zu drucken. Z.\,B. könnte |\name| zu \enquote{Hilbig} führen. \DescribeMacro{\Vorname} \DescribeMacro{\Name} \DescribeMacro{\fullname} Durch |\Vorname|\marg{Vorname} und |\Name|\marg{Vorname} können Vor- und Nachname festgelegt werden. Das Makro |\fullname|\oarg{Reihenfolge} wird aus |\Name| und |\Vorname| erstellt und gibt bei Verwendung ohne Argument den vollen Namen inklusive des Vornamens aus, z.\,B. \enquote{André Hilbig}. Soll die Reihenfolge von Vor- und Nachname durch ein Komma getrennt ausgegeben werden, so sollte |\fullname[verkehrt]| gewählt werden: \enquote{Hilbig, André}. \DescribeMacro{\Street} \DescribeMacro{\Plz} \DescribeMacro{\Stadt} Über |\Street|\marg{Straße Hnr.} kann die Straße mit Hausnummer festgelegt werden.\footnote{Mit Absicht wurde hier aus Kompatibilitätsgründen die englische Schreibweise für das Makro gewählt, da \textit{Straße} bzw. \textit{Strasse} zu Kompatibilitätsproblemen führten.} Mit |\Plz|\marg{Postleitzahl} und |\Stadt|\marg{Stadt} können Postleitzahl und Ort festgelegt werden. \DescribeMacro{\anschrift} Aus |\Street|, |\Plz| und |\Stadt| wird die Anschrift zusammengesetzt und bei Angabe von |\anschrift|\oarg{Umbruch} ohne optionalem Argument mit einem Umbruch nach der Straße ausgegeben. Wird |\anschrift[none]| gewählt, wird die Straße durch ein Komma vom Ort getrennt. \DescribeMacro{\MeinBeruf} Über |\MeinBeruf|\marg{Berufsbezeichnung} kann die eigene Berufsbezeichnung festgelegt werden. Diese wird etwa im Lebenslauf und auf der Titelseite verwendet. Sie stellt jedoch nicht die Bezeichnung der zu bewerbenden Stelle dar. Diese wird gesondert (vgl. \prettyref{sec:bewerbung}) angegeben. \DescribeMacro{\Tel} \DescribeMacro{\Mobile} \DescribeMacro{\EMail} Über \noindent|\Tel|\marg{Telefonnummer}, \noindent|\Mobile|\marg{Mobiltelefonnummer} und \noindent|\EMail|\marg{E-Mail} können Telefonnumer, zusätzliche Mobilnummer und eine E"~Mailadresse angegeben werden. \DescribeMacro{\Sta} \DescribeMacro{\GebDatum} Der Befehl |\Sta|\marg{Staatsangehörigkeit} legt die Staatsangehörigkeit fest und |\GebDatum|\marg{Geburtsdatum} definiert das Geburtsdatum. \DescribeMacro{\LebenslaufTitel} Der Befehl |\LebenslaufTitel|\marg{Titel} ändert den Titel des Lebenslauf. Standardmäßig wird \textit{Curriculum Vitae} verwendet. So kann bspw. auch \textit{Lebenslauf} als Titel gesetzt werden. \DescribeMacro{\ID} Durch das Makro |\ID|\marg{Identifikation} wird die Nummer der aktuellen Bewerbung angegeben. Damit werden die Daten der aktuellen Bewerbung aus einer Datei ausgelesen. Diese Datei enthält pro Zeile eine Bewerbung, die durch einen Eintrag \textit{ID} identifiziert wird. Die mit dem Makro eingegebene Identifikation stellt entweder die gemeinte \textbf{Zeile} oder die Bewerbung mit der entsprechenden \textbf{ID} (vgl. \prettyref{sec:bewerbung}) dar. Der Klasse |bewerbung| kann die Option |idPlain| übergeben werden. Dann wird nach der exakten Übereinstimmung der hier notierten Identifikation mit dem Feld ID gesucht. Dies muss keine Zahl sein. Wird keine Option übergeben wird die notierte Zahl als Zeilennummer startend bei 0 interpretiert. \DescribeMacro{\Anhang}\label{Anhang} An zwei Stellen in einer Bewerbung werden angehangene Dokumente ausgewiesen: Titelseite und Anschreiben. Dabei handelt es sich um Anschreiben und Lebenslauf bzw. nur den Lebenslauf. Werden zusätzliche Dokumente angehangen sollten diese mit |\Anhang|\marg{Liste}\marg{Aufzählung} hinzugefügt werden. Allerdings müssen die Dokumente im Makro doppelt angegeben werden. Zuerst werden sie in einer Liste mit einem Punkt endend und getrennt durch |\newline| notiert. Danach als Aufzählung mit einem vorangestellten |\item|. So wird die korrekte Darstellung in Titelseite und Anschreiben sichergestellt (vgl. \prettyref{bsp:konfiguration}). \textit{Hinweis:} Die hier angegebenen Dokumente werden nicht automatisch eingebunden, sondern sollten manuell hinzugefügt werden. Es werden lediglich die angegebenen Bezeichnungen als Text eingefügt. \DescribeMacro{\todayOrt} \DescribeMacro{\todayDatum} Der Lebenslauf wird typischerweise unter Ausweisung eines Ortes und Datums unterschrieben. Im Anschreiben wird ebenfalls das aktuelle Datum ausgewiesen. Um den Ort und dieses Datum zu konfigurieren stehen die Makros |\todayOrt|\marg{Ort} und |\today|Datum\marg{Datum} zur Verfügung. Werden diese Werte nicht gesetzt, so wird automatisch |\stadt| als Ort und |\today| als Datum verwendet. \begin{beispiel}[bsp:konfiguration][Konfiguration der persönlichen Informationen]{% Beispiel einer möglichen Konfiguration der persönlichen Informationen} \begin{lstlisting}[gobble=15,caption={}] \Name{Musterfrau} \Vorname{Maja} \Street{Musterstraße 9} \Plz{45878} \Stadt{Musterstadt} \MeinBeruf{Dipl.-Pädagogin (Univ.)} \EMail{mail@email.com} \Tel{03131~465488} \Mobile{01534~6324524353} \Sta{deutsch} \GebDatum{31.02.1990} \todayOrt{Musterstadt} \todayDatum{12.12.2012} \ID{47} \Anhang{Abiturzeugnis.\newline Diplomzeugnis.}{% \item Abiturzeugnis \item Diplomzeugnis } \end{lstlisting} \end{beispiel} \subsubsection[Bewerbungen]{Bewerbungsversuche}\label{sec:bewerbung} Sämtliche zu verwaltenden Bewerbungen werden in einer csv-Datei abgespeichert. Vor allem die Tabelle zur Dokumentation (vgl. \prettyref{sec:dokutabelle}) verwendet sämtliche Einträge. Jedoch wird auch die jeweilige Anschrift etc. der Firma in der Bewerbungsmappe (vgl. \prettyref{sec:bewerbungsmappe}) daraus ausgelesen. Die Syntax dieser Datei muss der im folgenden beschriebenen entsprechen. Die Datei enthält in der ersten Zeile die Bezeichner aller Spalten jeweils getrennt durch ein Komma. Es ist die hier aufgeführte Schreibweise \textit{exakt} genauso zu verwenden: \begin{lstlisting}[% numbers=none,gobble=11,% language=bash,% keywordstyle=\color{black},% basicstyle={\tiny}% ] ID,KW,Datum,Firma,FirmaAnrede,FirmaName,Str,PLZ,Ort,Stelle,Rueckmeldung,Sonstiges \end{lstlisting} \paragraph{Erläuterung der Spalten:} \DescribeMacro{ID} Jede Bewerbung wird in einer Zeile notiert. Dabei erhält jede Bewerbung zusätzlich einen Identifikationsbezeichner, der jedoch leer gelassen werden kann. In der Bewerbungsmappe erfolgt die Zuordnung einer konkreten Bewerbung entweder über die Zeile oder der hier hinterlegten Identifikation. \DescribeMacro{KW} \DescribeMacro{Datum} Die Kalendarwoche muss angegeben werden, um die Dokumentationstabelle zur Vorlage bei der Agentur für Arbeit zu formatieren. Das Datum der Bewerbung wird sowohl in der Tabelle als auch der Bewerbungsmappe benutzt. \DescribeMacro{Firma} \DescribeMacro{FirmaAnrede} \DescribeMacro{FirmaName} Im Anschreiben setzt sich die Anschrift und Anrede jeweils aus |FirmaAnrede| und |FirmaName| zusammen. Dabei kann die Anrede mit Herr oder Frau erfolgen. Theoretisch sind auch beliebige Werte möglich. Dann sollte jedoch die automatische Konfiguration der Anrede im Anschreiben angepasst werden (vgl. \prettyref{sec:anschreiben}). Im Feld |Firma| kann die Bezeichnung der Firma hinterlegt werden. \DescribeMacro{Str} \DescribeMacro{PLZ} \DescribeMacro{Ort} Die Postanschrift der Bewerbung kann über |Str|, |PLZ| und |Ort| konfiguriert werden. \DescribeMacro{Stelle} Die meisten Bewerbungen haben eine konkrete Stellenbezeichnung, die unter Umständen von der eigenen Berufsbezeichnung abweicht. In |Stelle| kann die Bezeichnung angegeben werden. \DescribeMacro{Rueckmeldung} Für die Agentur für Arbeit muss ausgewiesen werden, welche Art von Rückmeldung auf die geschriebene Bewerbung durch den Arbeitgeber erfolgt ist. Dies ist vor allem bei Stellen, die von der Agentur für Arbeit vermittelt wurden, wichtig, da hier die Arbeitgeber teilweise überprüft werden. Sinnvolle Werte könnten \enquote{keine Rückmeldung}, \enquote{Absage}, \enquote{Einladung} usw. sein. \DescribeMacro{Sonstiges} Ein zusätzliches Feld, das in der Dokumentationstabelle aufgeführt wird, kann hier mit zusätzlichen Hinweisen an die Agentur für Arbeit gefüllt werden. \begin{beispiel}[bsp:anschrift][Auflistung der Bewerbungsversuche]{% Beispiel für eine mögliche Auflistung der Bewerbungsversuche} \begin{lstlisting}[language=bash,gobble=13,caption={},stepnumber=1] ID,KW,Datum,Firma,FirmaAnrede,FirmaName,Str,PLZ,Ort,Stelle, Rueckmeldung,Sonstiges 2,13,26.09.15,Packisbar GmbH,Frau,Nauti,Traumstraße 19,59888,Traumort,Traumberuf,n,n 1,12,14.09.15,Packbar GmbH,Herr,Nubil,Traumstraße 4,59888,Traumort,Traumberuf,n,n \end{lstlisting} \end{beispiel} \paragraph{Zusätzliche Hinweise} \begin{description} \item[Datei] Die Datei sollte als |anschrift.csv| benannt werden. Wird ein anderer Dateiname gewünscht, so kann dies über die Option |anschrift| der Klasse |bewerbung| übergeben werden. Sie sollte im selben Verzeichnis wie die zu setzende Bewerbungsmappe platziert werden. Hier kann ein entsprechender logischer Link nützlich sein. \item[Kodierung] Die Datei sollte als |UTF-8| kodiert werden, um Umlaute usw. korrekt darzustellen. Zusätzlich können einzelne Einträge mit doppelten Anführungszeichen markiert werden. \item[GUI] Selbstverständlich können graphische Programme, etwa |libreoffice|, zur Verwaltung dieser Datei verwendet werden. Es zeigte sich jedoch, dass hierbei häufig Kodierungsprobleme entstehen. Daher sollte bei Fehlern die Kodierung per Hand kontrolliert werden. \item[Feldtrenner] Die Spalten bzw. Felder werden standardmäßig über ein Komma getrennt. Entsprechend den Befehlen aus \cite{datatool} ist es sicherlich möglich den Feldtrenner manuell zu ändern. Hier sei auf die entsprechende Dokumentation verwiesen. \end{description} \subsubsection{Struktur}\label{sec:struktur} Prinzipiell ist es nicht notwendig eine besondere Verzeichnisstruktur einzuhalten. Allerdings erleichtert es die Arbeit deutlich, wenn einige Dateien und Verzeichnisse am selben Ort liegen. Die folgenden Erläuterungen stellen eine beispielhafte Beschreibung einer sinnvollen Struktur dar. \begin{lstlisting}[numbers=none,gobble=9,language=bash] Bewerbungen: | +-----Anhang: |-diplom.pdf |-zeugnis.pdf | +-----bewerbung-Traumjob: |-Anhang -> ../Anhang |-Foto.pdf -> ../Foto.pdf |-anschrift.csv -> ../anschrift.csv |-bewerbung-Traumjob.tex |-config.inc |-Foto.pdf |-anschrift.csv |-argetabelle.tex |-bewerbung.tex |-config.inc \end{lstlisting} Durch die symbolischen Links ist es möglich, die globalen Dateien |Foto.pdf| und |anschrift.csv| sowie die Dateien im |Anhang/| praktisch vorzuhalten und Änderungen entsprechend global vornehmen zu können. So kann beispielsweise |argetabelle.tex| immer aktuell gesetzt werden -- dennoch blähen nicht viele einzelne Bewerbungen mit zugehörigen Konfigurationsdateien das Verzeichnis auf. \paragraph{Anlegen einer neuen Bewerbung} Sofern exakt diese Struktur gewählt wird, kann ein einfaches Script das Anlegen erleichtern. \begin{lstlisting}[gobble=9,language=bash,title={Datei: \texttt{neueBewerbung.sh}}] #!/bin/bash mkdir -v $1 cp -v bewerbung.tex $1/bewerbung-$1.tex cp -v config.inc $1 cd $1 ln -sv ../Anhang ./Anhang ln -sv ../Foto.jpg ./Foto.jpg ln -sv ../Foto.pdf ./Foto.pdf ln -sv ../anschrift.csv ./anschrift.csv cd .. \end{lstlisting} Das Script erwartet als Argument einen eindeutigen Bezeichner für die neue Bewerbung. \textit{Vorsicht:} Bereits existierende Dateien werden überschrieben. \begin{lstlisting}[gobble=9,language=bash,numbers=none] ./neueBewerbung bewerbung-LatexCompany \end{lstlisting} \noindent So würde automatisch ein neues Verzeichnis |bewerbung-LatexCompany| mit allen notwendigen Links angelegt. Außerdem werden aus dem Stammverzeichnis die Dateien |bewerbung.tex| und |config.inc| kopiert und entsprechend umbenannt. Somit können diese im Stammverzeichnis als eine Art Vorlage verwendet werden. In der Konfiguration müssen nun nur noch die |ID| der aktuellen Bewerbung und in der |anschrift.csv| der entsprechende Eintrag eingetragen werden. Das Script gehört zum Umfang dieses Pakets und kann somit auch über |CTAN| bezogen werden. \subsection[Bewerbungsmappe]{Erstellung einer Bewerbungsmappe}\label{sec:bewerbungsmappe} Um eine neue Bewerbungsmappe anzulegen, wird eine \TeX-Datei mit der Klasse |bewerbung| angelegt. Der Klasse können folgende Optionen übergeben werden: \begin{description} \item{|anschrift|} Hier kann eine alternative Datei zur Angabe der Bewerbungsversuche |anschrift.csv| (vgl. \prettyref{sec:bewerbung}) angegeben werden, z.\,B. |anschrift=versuche.csv|. \item{|lebenslaufColor|} Hier wird das Farbthema des Lebenslaufs festgesetzt. Die verfügbaren Themen entsprechen denen der |komacv|-Klasse \autocite{komacv}. Der Lebenslauf wurde für |light-gray| optimiert. \item{|lebenslaufStyle|} Hier kann der Stil des Lebenslaufs angegeben werde. Standardmäßig wird |classic| verwendet. Dieser Stil wurde leicht an den aus |komacv| angepasst. Außerdem wurden die Stile |casual| und |old-style| aus |komacv| ohne Bearbeitung importiert \autocite[vgl.][]{komacv}. \item{|idPlain|} In der Datei |anschrift| müssen bereits die aktuellen Daten zu dieser Bewerbung vorliegen. Über den Befehl |\ID|\marg{Identifikation} kann die zu verwendende Bewerbung angegeben werden (vgl. \prettyref{sec:konfiguration}). Durch die Angabe der Option |idPlain| kann erzwungen werden, dass nach dem exakten Eintrag in \textbf{ID} zur Verknüpfung gesucht werden soll (vgl. \prettyref{sec:bewerbung}). Ansonsten wird die angegebene Nummer als Zeilennummer interpretiert. Dabei wird die erste Zeile als 0 gewertet. \end{description} \begin{beispiel}[bsp:documentclass][Laden der Klasse \texttt{bewerbung}]{% Beispiel für die Angabe der Klasse bewerbung} \begin{lstlisting}[gobble=11] \documentclass[% lebenslaufColor=light-gray,% lebenslaufStyle=classic,% idPlain% ]{bewerbung} \end{lstlisting} \begin{minipage}{\textwidth} Sinnvoll sind gerade für den Einsatz im deutschen Sprachraum folgende Pakete, die in Version v1.1 aus der Klasse entfernt wurden, um eine breitere Unterstützung bzgl. Sprach- und Kodierungswahl zu ermöglichen (Dank an \textsc{Kohm} für die Hinweise). \end{minipage} \begin{lstlisting}[gobble=11] \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[ngerman]{babel} \end{lstlisting} \end{beispiel} Im selben Verzeichnis sollten eine |config.inc| (vgl. \prettyref{sec:eigeneperson}) und eine |anschrift.csv| (vgl. \prettyref{sec:bewerbung}) platziert werden -- ggfs. als Link. Außerdem wird die Datei |Foto.pdf| als einzubindendes Bild in der Titelseite verwendet. Entsprechende Bilder in anderen Formaten müssen demnach umgewandelt werden, z.\,B. mit dem Tool ImageMagick\footnote{\url{http://imagemagick.org/script/index.php} [zuletzt besucht 2015-07-09]}: \begin{lstlisting}[numbers=none,gobble=9,language=bash] convert Bild.jpg Foto.pdf \end{lstlisting} \subsubsection{Titelseite}\label{sec:titelseite} Die Titelseite wird automatisch konfiguriert und eingefügt. Sämtliche notwendigen Definitionen werden geladen. \begin{beispiel}[bsp:titelseite]{Beispiel für eine Titelseite} \fbox{\includegraphics[page=1,scale=0.35]{bewerbung-example.pdf}} \end{beispiel} \subsubsection{Anschreiben}\label{sec:anschreiben} Das Anschreiben einer Bewerbung stellt einen Brief an den potentiellen Arbeitgeber dar. Je ordentlicher dieser Brief gesetzt ist, desto angenehmer fällt der Personalchefin das Lesen und desto eher fallen wichtige Inhalte auf. \DescribeEnv{anschreiben} Innerhalb der Umgebung |{anschreiben}|\oarg{Anrede}\oarg{Enlarge} wird das Anschreiben notiert. Die gedruckte Anrede wird automatisch aus den Inhalten der Felder |firmaAnrede| |firmaName| generiert. Die Anpassung an den Genus der Anrede erfolgt über die Wahl von \enquote{Frau} oder \enquote{Mann} in |firmaAnrede|. Alternativ kann das erste optionale Argument mit dem richtigen Terminus von \enquote{geehrt} gesetzt werden. Dies kann hilfreich sein, wenn die Anrede beispielsweise aus \enquote{Herr Dr.} besteht. Als Faustregel für ein gutes Anschreiben wird häufig genannt, dass nicht mehr als eine DinA4 Seite verwendet werden sollte. Manchmal wird für einen einzelnen Satz eine neue Seite angefangen, obwohl noch genügend leerer Platz zur Verfügung stünde. Hier versucht \LaTeX\ einen Fließtext zu optimieren. Um dem entgegenzuwirken kann als zweites optionales Argument eine Größeneinheit, z.\,B. |2em|, angegeben werden. Dann wird \LaTeX\ versuchen das Anschreiben um die angegebene Länge zu strecken. Alle Optionen an |\documentclass{bewerbung}|, die nicht an diese Klasse gerichtet sind, werden automatisch an |scrlttr2| \autocite[vgl.][]{scrlttr2} weitergereicht. Ansonsten werden standardmäßig folgende Optionen geladen: \begin{lstlisting}[gobble=9] DIN, pagenumber=botright, backaddress=true, parskip=half, fromalign=left, fromemail=true, fromfax=true, fromphone=true, fromurl=false, fromalign=right, fromlogo=false, fromrule=true, foldmarks=true, paper=a4, fontsize=10pt,enlargefirstpage=true, firstfoot=false \end{lstlisting} Dadurch werden automatisch die deutschen DIN-Normen inklusive Schnittkanten gewählt. Als Betreff wird »Bewerbung als |\meinBeruf|« gewählt. Über das Makro |\setkomavar{subject}|\marg{Betreffstext} kann die Betreffszeile geändert werden, sofern hier ein anderer Betreff gewünscht wird. Sollten zusätzlich zum Lebenslauf weitere Anhänge angehangen werden, können diese mit dem \refMacro{Anhang} in |config.inc| ausgewiesen werden. \begin{beispiel}[bsp:anschreiben][Anschreiben]{Beispiel für ein Anschreiben} \begin{lstlisting}[gobble=11] \begin{anschreiben} Hier kommt das Anschreiben hin \end{anschreiben} \end{lstlisting} \fbox{\includegraphics[page=2,scale=0.4]{bewerbung-example.pdf}} \end{beispiel} \FloatBarrier \subsubsection{Lebenslauf}\label{sec:lebenslauf} Jedem guten Bewerbungsschreiben sollte ein tabellarischer Lebenslauf angefügt werden. Innerhalb dieses Dokuments wird nicht erläutert, welche Inhalte dort hinein gehören. Die technische Realisierung basiert nahezu vollkommen auf der Arbeit von \citeauthorfull{komacv} in \citetitle{komacv}. Einige Anpassungen und Ergänzungen wurden allerdings vor allem für das Thema |classic| vorgenommen. Die hier aufgeführten Erklärungen beziehen sich nur auf einen kleinen Teil der Möglichkeiten von |komacv|. Alle Makros und Umgebungen wurden vollständig portiert und sind verfügbar. Damit ist das Importieren eines Dokumentes mit der Klasse |komacv| (evtl. unter Verwendung von |standalone|) möglich. In jedem Fall sollte bei tiefergehenden Fragen die entsprechende Dokumentation konsultiert werden \autocite[vgl.][]{komacv}. \DescribeEnv{lebenslauf} Die Umgebung |{lebenslauf}|\oarg{Listensymbol}\oarg{Addendum} erstellt einen Bereich in dem sämtliche Befehle aus der Klasse |komacv| benutzt werden können. Über das erste optionale Argument kann bei Bedarf das Listensymbol bei der Aufzählung von Einträgen durch Angabe von |none| ausgeschaltet werden. Im zweiten optionalen Argument kann ein Addendum nach der Unterschrift auf einer neuen Seite dem Lebenslauf angehangen werden. \textit{Achtung:} Um die Register von \TeX\ nicht zu sprengen, dürfen hier zwar Sektionen und alle Befehle aus |komacv| benutzt werden, jedoch dürfen keine Leerzeilen (im Zweifel auskommentieren) und erzwungene Umbrüche mit |\\| (im Zweifel |\newline| verwenden) angegeben werden. \DescribeMacro{\maktitle} Das Makro |\maketitle| wurde angepasst und sollte zu Beginn des Lebenslaufs aufgerufen werden, um den Titelkopf aus |komacv| aufzurufen. \DescribeMacro{\makePerson} Aus der Konfigurationsdatei werden die notwendigen Daten herausgelesen und ein passender Eintrag für die eigene Person über |\makePerson| erzeugt. Dazu wird die Sektion \enquote{Persönliche Angaben} mit |cvitem|s zu Name, Anschrift, Staatsangehörigkeit, Geburtstdatum und eigenem Beruf angelegt. Der Befehl führt zu keinem erzwungenen Umbruch. Somit kann die Sektion beliebig erweitert werden. \DescribeMacro{\cventry} Mit |\cventry|\marg{Monat/Jahr}\marg{Bezeichnung}\marg{Ergänzung}\marg{Inhalt} kann ein zeitlicher Eintrag nach |komacv| angelegt werden. \DescribeMacro{\cvlistitem} Um in einer Sektion eine Aufzählung zu führen, kann |\cvlistitem|\marg{Eintrag} verwendet werden. Die letzten beiden Beschreibungen sollten ausführlicher den entsprechenden Dokumentationen zu |komacv| entnommen werden. \DescribeMacro{\cvlanguage} \DescribeMacro{\cvitemwithcomment} Der normalen |komacv|-Klasse fehlt eine Möglichkeit Sprachkenntnisse anzugeben. Mit dem Wrapper |\cvlanguage|\marg{Sprache}\marg{Kenntnisse}\marg{Kommentar} kann dies erledigt werden. Letztlich wird dadurch ein |\cvitemwithcomment| nach selber Syntax erzeugt, der auch für andere kommentierte Aufzählungen bzw. Einträge verwendet werden kann. \begin{beispiel}[bsp:lebenslauf][Lebenslauf]{Beispiel für einen Lebenslauf} \begin{lstlisting}[gobble=11] \begin{lebenslauf}[none][] \maketitle \makePerson \section{Studium} \cventry{03/13}{Abschluss: Dipl.-Pädagogin (Univ.)}{}{}{}{} \section{Führerschein} \cvlistitem{Klasse B (eigener PKW)} \section{Sprachen} \cvlanguage{Deutsch}{Muttersprache}{} \cvlanguage{Englisch}{gut}{} \end{lebenslauf} \end{lstlisting} \fbox{\includegraphics[page=3,scale=0.4]{bewerbung-example.pdf}} \end{beispiel} \FloatBarrier \subsubsection{Anhang}\label{sec:anhang} Gerade bei Bewerbungen per E"~Mail ist es häufig notwendig digitale Kopien von Zeugnissen, Zertifikaten usw. mitzuschicken. In jedem Fall sollten entsprechende Anhänge bei einer schriftlichen Einreichung als Anhang auf dem Deckblatt und dem Anschreiben ausgewiesen werden. \DescribeMacro{\Anhang} Dazu sollte das Makro |\Anhang| verwendet werden (vgl. \refMacro{Anhang}). Um Anhänge nicht händisch an das PDF anzufügen, kann dies mit dem Paket \citetitle{pdfpages} von \citeauthorfull{pdfpages} sehr elegant innerhalb des \TeX-Dokuments geschehen. Hier werden dazu nur kleine Ausschnitte dieses mächtigen Werkzeugs dargestellt. Prinzipiell ist damit jede nur erdenkliche Einbindung von Dateien im PDF"~Format möglich \autocite[vgl.][]{pdfpages}. \DescribeMacro{\includepdf} Mit dem Befehl |\includepdf|\oarg{Optionen}\marg{Dateien} können PDF-Dateien beliebigen Formats und Länge eingebunden werden. Bei Angabe ohne Optionen wird automatisch die erste Seite im \textit{Vollbildmodus} über eine gesamte Seite in die Bewerbungsmappe integriert. Um etwa ein mehrseitiges Diplomzeugnis einzubinden, ist der Aufruf \begin{lstlisting}[gobble=9,numbers=none] \includepdf[pages=-]{diplomzeugnis.pdf} \end{lstlisting} sinnvoll. Die Option |pages=-| weist |includepdf| dabei an, alle Seiten der Datei |diplomzeugnis.pdf| zu verwenden. Hier wäre auch eine beliebige alphanumerische Angabe, etwa |2-9|, möglich. Das Format aller Seiten wird automatisch auf das gewählte Format (DinA4) der Mappe skaliert. Über die Option |scale=0.5| kann dies bei Bedarf angepasst werden. \DescribeMacro{\includepdfmerge} Sofern die anzuhängenden Seiten in einem Querformat vorliegen, kann über die Option |landscape| automatisch gedreht werden. Zusätzlich kann über die Option |angle=270| auch die Datei selbst vor dem Einbinden um einen beliebigen Winkel gedreht werden. Mehrere Dateien können mit den selben Optionen in einem Aufruf über |\includepdfmerge| eingefügt werden: \begin{lstlisting}[gobble=9,numbers=none] \includepdfmerge[pages=-,landscape,angle=270]% {Abiturzeugnis1.pdf,Abiturzeugnis2.pdf} \end{lstlisting} Eventuell kann auch die Option |nup=XxY| hilfreich sein. Dadurch werden jeweils mehrere Seiten eines mehrseitigen Dokumentes zusammen auf einer Seite mit |X|"~Seiten pro Länge und |Y|"~Seiten pro Höhe dargestellt. Für weitere Informationen sei auf die Paketdokumentation verwiesen \autocite[vgl.][]{pdfpages}. \begin{beispiel}[bsp:bewerbungsmappe][Vollständige Bewerbungsmappe]{% Beispiel für den Quellcode einer vollständigen Bewerbungsmappe} \begin{lstlisting}[gobble=11,multicols=2,title={Datei: \texttt{bewerbung.tex}},% xleftmargin=5pt,linewidth=0.95\columnwidth] \documentclass[% lebenslaufColor=light-gray,% %lebenslaufStyle=classic, idPlain% ]{bewerbung} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[ngerman]{babel} % zusätzliche % Farbdefinitionen: \definecolor{light-gray}% {gray}{0.6} \definecolor{titlecolor}% {gray}{0.62} \definecolor{addresscolor}% {gray}{0.45} \begin{document} \begin{anschreiben} Hier kommt das Anschreiben hin \end{anschreiben} \begin{lebenslauf}[none][] \maketitle \makePerson \section{Studium} \cventry{03/13}{% Abschluss: % Dipl.-Pädagogin % (Univ.)% }{}{}{}{} \section{Führerschein} \cvlistitem{% Klasse B % (eigener PKW)} \section{Sprachen} \cvlanguage{Deutsch}{% Muttersprache}{} \cvlanguage{Englisch}{% gut}{} \end{lebenslauf} \ end{document} \end{lstlisting} \begin{lstlisting}[gobble=11,multicols=2,title={Datei: \texttt{config.inc}},% xleftmargin=5pt,linewidth=0.95\columnwidth] \Name{Musterfrau} \Vorname{Maja} \Street{Musterstraße 9} \Plz{45878} \Stadt{Musterstadt} \MeinBeruf{Dipl.-Pädagogin% (Univ.)} \EMail{mail@email.com} \Tel{03131~465488} \Mobile{01534~6324524353} \Sta{deutsch} \GebDatum{31.02.1990} \ID{47} \Anhang{% Abiturzeugnis.\newline Diplomzeugnis. }{% \item Abiturzeugnis \item Diplomzeugnis } \end{lstlisting} \begin{lstlisting}[gobble=11,language=bash,title={Datei: \texttt{anschrift.csv}}] ID,KW,Datum,Firma,FirmaAnrede,FirmaName,Str,PLZ,Ort,Stelle, Rueckmeldung,Sonstiges 2,13,26.09.15,Packisbar GmbH,Frau,Nauti,Traumstraße 19,59888,Traumort,Traumberuf,n,n 1,12,14.09.15,Packbar GmbH,Herr,Nubil,Traumstraße 4,59888,Traumort,Traumberuf,n,n \end{lstlisting} \end{beispiel} \begin{landscape} \begin{beispiel}[bsp:bewerbungsmappepdf][Ergebnis einer vollständigen Mappe]{% Ergebnis des Quellcodes aus \prettyref{bsp:bewerbungsmappe}} \begin{minipage}{0.5\textwidth} \fbox{\includegraphics[page=1,width=\textwidth]{bewerbung-example.pdf}} \end{minipage}\quad\ \begin{minipage}{0.5\textwidth} \fbox{\includegraphics[page=2,width=\textwidth]{bewerbung-example.pdf}} \end{minipage}\quad\ \begin{minipage}{0.5\textwidth} \fbox{\includegraphics[page=3,width=\textwidth]{bewerbung-example.pdf}} \end{minipage} \end{beispiel} \end{landscape} \FloatBarrier \subsection[Dokumentationstabelle]{Erstellung einer Dokumentationstabelle} \label{sec:dokutabelle} Die Agentur für Arbeit verlangt von ihren \textit{Kunden} typischerweise den Nachweis über die Vertragstreue. Im Klartext heißt dies, dass Menschen eine Vorgabe an Bewerbungen pro Woche oder Monat und die Bindung an das Bewerben auf jede von der Agentur für Arbeit vorgeschlagene Stelle unterschreiben müssen, um den Almosen Grundsicherung, auch HartzIV genannt, zu erhalten. Wird gegen diese Auflagen verstoßen ist mit Abzügen der Grundsicherung zu rechnen. Da Kunden typischerweise nicht zu trauen ist, müssen diese über ihre Bewerbungsversuche detailliert Aufschluss geben. Um sich bei dieser oftmals lästigen Dokumentationsarbeit Zeit zu sparen, entstand die Grundidee zu dieser Zusammenstellung. Dafür wird eine Tabelle automatisiert erstellt, indem eine csv-Datei (vgl. \prettyref{sec:bewerbung}) ausgewertet wird. Die Klasse |argetabelle| ermöglicht das Setzen solch einer Tabelle auch über mehrere Seiten hinweg. Der Klasse können dabei Optionen an |scrartcl| weiter gereicht werden. Allerdings ist es nicht ratsam die Dimensionen inkl. Ausrichtung der Seite zu ändern, da die Skalierung der Tabelle \DescribeMacro{\argetballe} (noch) absolut ist. Die Tabelle wird über den Aufruf des Makros |\argetabelle|\oarg{Datei} gesetzt. Sofern die Datei mit den Anschriften zu den Bewerbungen nicht als |anschrift.csv| benannt wurde, kann diese im optionalen Argument angegeben werden. \textit{Hinweis:} Die Tabelle wird immer in der Reihenfolge der Zeilen in der angegebenen csv"~Datei gesetzt. Das Feld ID ist hierbei irrelevant. \begin{beispiel}[bsp:dokutabelle]{Beispiel für das Setzen der Dokumentationstabelle} \begin{lstlisting}[gobble=9,title={Datei: \texttt{argetabelle.tex}}] \documentclass[11pt,a4paper]{argetabelle} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[ngerman]{babel} \begin{document} \argetabelle \ end{document} \end{lstlisting} \begin{lstlisting}[gobble=9,language=bash,title={Datei: \texttt{anschrift.csv}}] ID,KW,Datum,Firma,FirmaAnrede,FirmaName,Str,PLZ,Ort,Stelle, Rueckmeldung,Sonstiges 2,13,26.09.15,Packisbar GmbH,Frau,Nauti,Traumstraße 19,59888,Traumort,Traumberuf,n,n 1,12,14.09.15,Packbar GmbH,Herr,Nubil,Traumstraße 4,59888,Traumort,Traumberuf,n,n \end{lstlisting} \fbox{\includegraphics[width=0.95\textwidth,page=1,viewport=52.815022 610 542.460991 771.024000]{argetabelle-example.pdf}} \vspace{1.4em} \end{beispiel} \clearpage \addcontentsline{toc}{section}{Literatur} \printbibliography \end{document}