From b6302e0ca624bdd3994f477b60cb1c0e74d33b38 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 31 Jul 2023 09:33:57 +0200 Subject: [PATCH 1/5] Fix empty sections in cv Whenever an empty section was encountered we returned `None` which lead to display artifacts as Quarto tried to interpret what we actually wanted to display. Instead, we simply return an empty string which is to be 'displayed' so nothing will be shown. --- processing/content.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/processing/content.py b/processing/content.py index 0060b89..1d00895 100644 --- a/processing/content.py +++ b/processing/content.py @@ -3,7 +3,7 @@ from typing import Any def summary_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""): if "summary" not in data: - return + return "" md = f"{headline}\n\n {data['summary'][lang]}\n\n" return md @@ -26,7 +26,7 @@ def experience_to_md( subdued_publications: bool = True, ): if "experience" not in data: - return + return "" md = f"{headline}\n\n" md += "\\definecolor{publication}{rgb}{0.5,0.5,0.5}\n\n" @@ -56,7 +56,7 @@ def education_to_md( data: dict[str, Any], lang: str = "en", headline: str = "", thesis: bool = True ): if "education" not in data: - return + return "" md = f"{headline}\n\n" @@ -73,7 +73,7 @@ def education_to_md( def qualifications_to_md(data: dict[str, Any], lang: str = "en", headline: str = ""): if "skills" not in data: - return + return "" md = f"{headline}\n\n" for skillset in data["skills"]: From 16e6234dac9d861ab8d8bfe3789b310d0cb82f1e Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 31 Jul 2023 09:35:04 +0200 Subject: [PATCH 2/5] Add motivation letter template Added motivation letter template, originally from a DIN letter by benedictdudel, slightly adjusted to work with the yaml frontmatter of quarto (e.g. `to` had to be adjusted). --- templates/letter.latex | 645 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 645 insertions(+) create mode 100644 templates/letter.latex diff --git a/templates/letter.latex b/templates/letter.latex new file mode 100644 index 0000000..b96e5a3 --- /dev/null +++ b/templates/letter.latex @@ -0,0 +1,645 @@ +% +% Options for packages loaded elsewhere +% +% taken with gratitude from: +% https://github.com/benedictdudel/pandoc-letter-din5008 +% +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\PassOptionsToPackage{hyphens}{url} +$if(colorlinks)$ +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +$endif$ +$if(CJKmainfont)$ +\PassOptionsToPackage{space}{xeCJK} +$endif$ +% +\documentclass[ +$if(fontsize)$ + $fontsize$, +$endif$ +$if(papersize)$ + $papersize$paper, +$endif$ +$if(beamer)$ + ignorenonframetext, +$if(handout)$ + handout, +$endif$ +$if(aspectratio)$ + aspectratio=$aspectratio$, +$endif$ +$endif$ +$for(classoption)$ + $classoption$$sep$, +$endfor$ +]{scrlttr2} +$if(beamer)$ +$if(background-image)$ +\usebackgroundtemplate{% + \includegraphics[width=\paperwidth]{$background-image$}% +} +$endif$ +\usepackage{pgfpages} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\setbeamercolor{caption name}{fg=normal text.fg} +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ +$for(beameroption)$ +\setbeameroption{$beameroption$} +$endfor$ +% Prevent slide breaks in the middle of a paragraph +\widowpenalties 1 10000 +\raggedbottom +$if(section-titles)$ +\setbeamertemplate{part page}{ + \centering + \begin{beamercolorbox}[sep=16pt,center]{part title} + \usebeamerfont{part title}\insertpart\par + \end{beamercolorbox} +} +\setbeamertemplate{section page}{ + \centering + \begin{beamercolorbox}[sep=12pt,center]{part title} + \usebeamerfont{section title}\insertsection\par + \end{beamercolorbox} +} +\setbeamertemplate{subsection page}{ + \centering + \begin{beamercolorbox}[sep=8pt,center]{part title} + \usebeamerfont{subsection title}\insertsubsection\par + \end{beamercolorbox} +} +\AtBeginPart{ + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \frame{\subsectionpage} +} +$endif$ +$endif$ +$if(beamerarticle)$ +\usepackage{beamerarticle} % needs to be loaded first +$endif$ +\usepackage{amsmath,amssymb} +$if(linestretch)$ +\usepackage{setspace} +$endif$ +\usepackage{iftex} +\ifPDFTeX + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex +$if(mathspec)$ + \ifXeTeX + \usepackage{mathspec} % this also loads fontspec + \else + \usepackage{unicode-math} % this also loads fontspec + \fi +$else$ + \usepackage{unicode-math} % this also loads fontspec +$endif$ + \defaultfontfeatures{Scale=MatchLowercase}$-- must come before Beamer theme + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +\fi +$if(fontfamily)$ +$else$ +$-- Set default font before Beamer theme so the theme can override it +\usepackage{lmodern} +$endif$ +$-- Set Beamer theme before user font settings so they can override theme +$if(beamer)$ +$if(theme)$ +\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} +$endif$ +$if(colortheme)$ +\usecolortheme{$colortheme$} +$endif$ +$if(fonttheme)$ +\usefonttheme{$fonttheme$} +$endif$ +$if(mainfont)$ +\usefonttheme{serif} % use mainfont rather than sansfont for slide text +$endif$ +$if(innertheme)$ +\useinnertheme{$innertheme$} +$endif$ +$if(outertheme)$ +\useoutertheme{$outertheme$} +$endif$ +$endif$ +$-- User font settings (must come after default font and Beamer theme) +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$endif$ +\ifPDFTeX\else + % xetex/luatex font selection +$if(mainfont)$ + \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} +$endif$ +$for(fontfamilies)$ + \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} +$endfor$ +$if(mathfont)$ +$if(mathspec)$ + \ifXeTeX + \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \else + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \fi +$else$ + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} +$endif$ +$endif$ +$if(CJKmainfont)$ + \ifXeTeX + \usepackage{xeCJK} + \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +$if(luatexjapresetoptions)$ + \ifLuaTeX + \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} + \fi +$endif$ +$if(CJKmainfont)$ + \ifLuaTeX + \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} + \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +\fi +$if(zero-width-non-joiner)$ +%% Support for zero-width non-joiner characters. +\makeatletter +\def\zerowidthnonjoiner{% + % Prevent ligatures and adjust kerning, but still support hyphenating. + \texorpdfstring{% + \TextOrMath{\nobreak\discretionary{-}{}{\kern.03em}% + \ifvmode\else\nobreak\hskip\z@skip\fi}{}% + }{}% +} +\makeatother +\ifPDFTeX + \DeclareUnicodeCharacter{200C}{\zerowidthnonjoiner} +\else + \catcode`^^^^200c=\active + \protected\def ^^^^200c{\zerowidthnonjoiner} +\fi +%% End of ZWNJ support +$endif$ +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +$if(indent)$ +$else$ +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother +$endif$ +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ +\usepackage{xcolor} +$if(geometry)$ +$if(beamer)$ +\geometry{$for(geometry)$$geometry$$sep$,$endfor$} +$else$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$endif$ +$if(beamer)$ +\newif\ifbibliography +$endif$ +$if(listings)$ +\usepackage{listings} +\newcommand{\passthrough}[1]{#1} +\lstset{defaultdialect=[5.3]Lua} +\lstset{defaultdialect=[x86masm]Assembler} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs,array} +$if(multirow)$ +\usepackage{multirow} +$endif$ +\usepackage{calc} % for calculating minipage widths +$if(beamer)$ +\usepackage{caption} +% Make caption package work with longtable +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$else$ +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +$endif$ +$endif$ +$if(graphics)$ +\usepackage{graphicx} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +% Set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother +$endif$ +$if(svg)$ +\usepackage{svg} +$endif$ +$if(strikeout)$ +$-- also used for underline +\usepackage{soul} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +$endif$ +$if(beamer)$ +$else$ +$if(block-headings)$ +% Make \paragraph and \subparagraph free-standing +\ifx\paragraph\undefined\else + \let\oldparagraph\paragraph + \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else + \let\oldsubparagraph\subparagraph + \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +$endif$ +$endif$ +$if(pagestyle)$ +\pagestyle{$pagestyle$} +$endif$ +$if(csl-refs)$ +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newlength{\csllabelwidth} +\setlength{\csllabelwidth}{3em} +\newlength{\cslentryspacingunit} % times entry-spacing +\setlength{\cslentryspacingunit}{\parskip} +\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing + {% don't indent paragraphs + \setlength{\parindent}{0pt} + % turn on hanging indent if param 1 is 1 + \ifodd #1 + \let\oldpar\par + \def\par{\hangindent=\cslhangindent\oldpar} + \fi + % set entry spacing + \setlength{\parskip}{#2\cslentryspacingunit} + }% + {} +\usepackage{calc} +\newcommand{\CSLBlock}[1]{#1\hfill\break} +\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} +\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} +\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} +$endif$ +$if(lang)$ +\ifLuaTeX +\usepackage[bidi=basic]{babel} +\else +\usepackage[bidi=default]{babel} +\fi +$if(babel-lang)$ +\babelprovide[main,import]{$babel-lang$} +$endif$ +$for(babel-otherlangs)$ +\babelprovide[import]{$babel-otherlangs$} +$endfor$ +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ +\ifLuaTeX + \usepackage{selnolig} % disable illegal ligatures +\fi +$if(dir)$ +\ifPDFTeX + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$if(natbib)$ +\usepackage[$natbiboptions$]{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(nocite-ids)$ +\nocite{$for(nocite-ids)$$it$$sep$, $endfor$} +$endif$ +$if(csquotes)$ +\usepackage{csquotes} +$endif$ +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\urlstyle{$if(urlstyle)$$urlstyle$$else$same$endif$} +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(verbatim-in-note)$ +\VerbatimFootnotes % allow verbatim text in footnotes +$endif$ +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(subject)$ + pdfsubject={$subject$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor={$if(linkcolor)$$linkcolor$$else$Maroon$endif$}, + filecolor={$if(filecolor)$$filecolor$$else$Maroon$endif$}, + citecolor={$if(citecolor)$$citecolor$$else$Blue$endif$}, + urlcolor={$if(urlcolor)$$urlcolor$$else$Blue$endif$}, +$else$ +$if(boxlinks)$ +$else$ + hidelinks, +$endif$ +$endif$ + pdfcreator={LaTeX via pandoc}} + +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +$if(beamer)$ +$else$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large #1 \par}}{}{} +} +\makeatother +$endif$ +\subtitle{$subtitle$} +$endif$ +\author{$for(author)$$author$$sep$ \and $endfor$} +\date{$date$} +$if(beamer)$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +$if(titlegraphic)$ +\titlegraphic{\includegraphics{$titlegraphic$}} +$endif$ +$if(logo)$ +\logo{\includegraphics{$logo$}} +$endif$ +$endif$ + +% OVERRIDES +\newkomavar{opening} +\newkomavar{closing} + +\KOMAoptions{fromemail=false} +\KOMAoptions{fromfax=false} +\KOMAoptions{fromlogo=false} +\KOMAoptions{frommobilephone=false} +\KOMAoptions{fromphone=false} +\KOMAoptions{fromurl=false} +\KOMAoptions{fromalign=right} + +\setkomavar{opening}{Sehr geehrte Damen und Herren,} +\setkomavar{closing}{Mit freundlichen Grüßen} +\setkomavar*{enclseparator}{Anlagen} + +$for(letteroption)$ +\LoadLetterOption{$letteroption$} +$endfor$ + +$if(addresseeimage)$\setkomavar{addresseeimage}{$addresseeimage$}$endif$ +$if(backaddress)$\setkomavar{backaddress}{$backaddress$}\KOMAoptions{backaddress=true}$endif$ +$if(backaddressseparator)$\setkomavar{backaddressseparator}{$backaddressseparator$}$endif$ +$if(ccseparator)$\setkomavar{ccseparator}{$ccseparator$}$endif$ +$if(customer)$\setkomavar{customer}{$customer$}$endif$ +% $if(date)$\setkomavar{date}{$date$}$endif$ +$if(emailseparator)$\setkomavar{emailseparator}{$emailseparator$}$endif$ +$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$ +$if(faxseparator)$\setkomavar{faxseparator}{$faxseparator$}$endif$ +$if(firstfoot)$\setkomavar{firstfoot}{$firstfoot$}$endif$ +$if(firsthead)$\setkomavar{firsthead}{$firsthead$}$endif$ +$if(fromaddress)$\setkomavar{fromaddress}{$fromaddress$}$endif$ +$if(frombank)$\setkomavar{frombank}{$frombank$}$endif$ +$if(fromemail)$\setkomavar{fromemail}{$fromemail$}\KOMAoptions{fromemail=true}$endif$ +$if(fromfax)$\setkomavar{fromfax}{$fromfax$}\KOMAoptions{fromfax=true}$endif$ +$if(fromlogo)$\setkomavar{fromlogo}{$fromlogo$}\KOMAoptions{fromlogo=true}$endif$ +$if(frommobilephone)$\setkomavar{frommobilephone}{$frommobilephone$}\KOMAoptions{frommobilephone=true}$endif$ +$if(fromname)$\setkomavar{fromname}{$fromname$}$endif$ +$if(fromphone)$\setkomavar{fromphone}{$fromphone$}\KOMAoptions{fromphone=true}$endif$ +$if(fromurl)$\setkomavar{fromurl}{$fromurl$}\KOMAoptions{fromurl=true}$endif$ +$if(fromzipcode)$\setkomavar{fromzipcode}{$fromzipcode$}$endif$ +$if(invoice)$\setkomavar{invoice}{$invoice$}$endif$ +$if(location)$\setkomavar{location}{$location$}$endif$ +$if(myref)$\setkomavar{myref}{$myref$}$endif$ +$if(nextfoot)$\setkomavar{nextfoot}{$nextfoot$}$endif$ +$if(nexthead)$\setkomavar{nexthead}{$nexthead$}$endif$ +$if(phoneseparator)$\setkomavar{phoneseparator}{$phoneseparator$}$endif$ +$if(place)$\setkomavar{place}{$place$}$endif$ +$if(placeseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$ +$if(PPdatamatrix)$\setkomavar{PPdatamatrix}{$PPdatamatrix$}$endif$ +$if(PPcode)$\setkomavar{PPcode}{$PPcode$}$endif$ +$if(signature)$\setkomavar{signature}{$signature$}\renewcommand*{\raggedsignature}{\raggedright}$endif$ +$if(specialmail)$\setkomavar{specialmail}{$specialmail$}$endif$ +$if(subject)$\setkomavar{subject}{$subject$}$endif$ +$if(subjectseparator)$\setkomavar{placeseparator}{$placeseparator$}$endif$ +$if(title)$\setkomavar{title}{$title$}$endif$ +$if(toaddress)$\setkomavar{toaddress}{$toaddress$}\KOMAoptions{toaddress=true}$endif$ +$if(toname)$\setkomavar{toname}{$toname$}\KOMAoptions{toname=true}$endif$ +$if(yourmail)$\setkomavar{yourmail}{$yourmail$}$endif$ +$if(yourref)$\setkomavar{yourref}{$yourref$}$endif$ +$if(zipcodeseparator)$\setkomavar{zipcodeseparator}{$zipcodeseparator$}$endif$ +$if(enclseparator)$\setkomavar{enclseparator}{$enclseparator$}$endif$ +$if(fromalign)$\KOMAoptions{fromalign=$fromalign$}$endif$ +$if(customername)$\setkomavar*{customer}{$customername$}$endif$ +% $if(datename)$\setkomavar*{date}{$datename$}$endif$ +$if(invoicename)$\setkomavar*{invoice}{$invoicename$}$endif$ +$if(myrefname)$\setkomavar*{myref}{$myrefname$}$endif$ +$if(yourmailname)$\setkomavar*{yourmail}{$yourmailname$}$endif$ +$if(yourrefname)$\setkomavar*{yourref}{$yourrefname$}$endif$ +$if(opening)$\setkomavar{opening}{$opening$}$endif$ +$if(closing)$\setkomavar{closing}{$closing$}$endif$ +$if(enclseparator)$\setkomavar*{enclseparator}{$enclseparator$}$endif$ +% END OVERRIDES + +\begin{document} +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +$if(beamer)$ +\frame{\titlepage} +$else$ +\maketitle +$endif$ +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +$if(toc-title)$ +\renewcommand*\contentsname{$toc-title$} +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks] +$if(toc-title)$ + \frametitle{$toc-title$} +$endif$ + \tableofcontents[hideallsubsections] +\end{frame} +$else$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +\tableofcontents +} +$endif$ +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +$if(has-frontmatter)$ +\mainmatter +$endif$ + +% OVERRIDES +\begin{letter}{% +$sendto$ +} +\opening{\usekomavar{opening}} +% END OVERRIDES +$body$ +% OVERRIDES +\closing{\usekomavar{closing}} +$if(ps)$\ps{$ps$}$endif$ +$if(encl)$\encl{$encl$}$endif$ +% END OVERRIDES + +$if(has-frontmatter)$ +\backmatter +$endif$ +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(has-chapters)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue +$endif$ + \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +$if(beamer)$ +\end{frame} +$endif$ + +$endif$ +$endif$ +$if(biblatex)$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue + \printbibliography[heading=none] +\end{frame} +$else$ +\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ +$endif$ + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +% OVERRIDES +$if(cc)$ +\cc{$cc$} +$endif$ +\end{letter} +% END OVERRIDES +\end{document} From c4e7e72ef5035811c894b2e2b50d6221e5e362bd Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 31 Jul 2023 09:36:06 +0200 Subject: [PATCH 3/5] Add letter output to Makefile Added simple creation of motivation letter to make outputs. Uses quarto just like the cv creation, using the letter.qmd file as its base. Will be included in running a general `make` command. --- Makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index b04e044..49166a6 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,13 @@ -.PHONY: all clean +.PHONY: clean -all: cv +all: resume_*.qmd templates/jb2resume.latex letter.qmd templates/letter.latex + poetry run quarto render cv: resume_de.qmd resume_en.qmd templates/jb2resume.latex - poetry run quarto render + poetry run quarto render resume_de.qmd resume_en.qmd + +letter: letter.qmd templates/letter.latex + poetry run quarto render letter.qmd clean: rm -f *CV.aux *CV.bcf *CV.log *CV.out *CV.run.xml *CV.pdf short_CV.tex long_CV.tex *CV.bbl *CV.blg *yaml_CV.md From 73a94bdcea7b5c086903e675a5c64607e293c3a4 Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 31 Jul 2023 09:42:08 +0200 Subject: [PATCH 4/5] Update SPIWORK bulletpoint phrasing Removed redundant bullet point from SPIWORK and rephrased its contents into another. --- content.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content.yml b/content.yml index b75e285..4199387 100644 --- a/content.yml +++ b/content.yml @@ -153,10 +153,10 @@ experience: bullets: - de: Strukturierung und Bearbeitung einzelner Kapitel einer wissenschaftlichen Anthologie en: Structured and edited individual chapters of a scientific anthology - - de: Verwaltung von Referenzen und Einhaltung spezifischer akademischer Stilrichtlinien - en: Managed references and adhered to specified academic style guides - - de: Vorbereitung der Buchstruktur, des Titels und des Anhangs gemäß den Vorgaben des Verlages - en: Prepared book structure, title, and appendix according to publisher's specifications + - de: Verwaltung von Referenzen und Einhaltung spezifischer akademischer Stilrichtlinien und Verlagsvorgaben + en: Managed references and adhered to specified academic style guides and publisher's specifications + - de: Koordinierung eines kleinen internationalen Teams für das jeweilige Kapitel + en: Coordinated small international team for each individual chapter - date: de: 2018--2019 en: 2018--2019 From 23e5e013ccbff961e8db1657435e498ed0230ffc Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Mon, 31 Jul 2023 09:42:41 +0200 Subject: [PATCH 5/5] Add basic letter template Added letter template (containing example letter in english for the time being). --- letter.qmd | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 letter.qmd diff --git a/letter.qmd b/letter.qmd new file mode 100644 index 0000000..6b4078d --- /dev/null +++ b/letter.qmd @@ -0,0 +1,53 @@ +--- +backaddress: Marty Oehme, Körnerstraße 54, 04107 Leipzig +fromname: Marty Oehme +fromaddress: | + Körnerstraße 54 + 04107 Leipzig +fromphone: "0177 / 377 49 49" +place: Leipzig, DAY MONTH YEAR +placeseparator: "‎ " +sendto: | + NAME OF COMPANY + ITS ADDRESS STREET AND NUMBER + LOCATION ZIPCODE +lang: en +subject: Bewerbung für JOBSTELLE +signature: Marty Oehme +opening: Dear CONTACTNAME +closing: Sincerely +format: + pdf: + template: templates/letter.latex +--- + +After two years of cooperation, I recently finished the final in a row of projects undertaken as consultant for UNU-WIDER and the ILO. +I am glad to have happened upon your job posting for the position of project officer as part-time worker with minimum 32 hours, as for me it may allow a more medium term stability than the previous short-term freelance positions did. + +Over the previous two years, I have primarily provided research assistance for three major projects under the helm of the UN, the ILO and Roskilde University: +In addition to the descriptive analysis undertaken for all of these projects, +my consultancy for UNU-WIDER required the creation of a time-series visualization on the basis of empirical analysis over roughly 200.000 observations within the UN's WIID dataset. +The previous work for the ILO and Roskilde University instead consisted of deep research for the creation of wide-ranging scoping reviews, +which necessitated collecting, organizing and cleaning datasets of around 2000 source potentials. +I accomplished both of these tasks more efficiently with the help of Python and its data analysis modules which is also where my primary statistical programming focus lies. + +Additionally, I have long been helping publish academic, particularly empirical, works, +first in the role of academic assistant and later on as editorial consultant. +Perhaps most personally beneficial for the current position was the publication of a large academic anthology under the SPIWORK project: +During this time I worked with clients located internationally, +collaborating directly to create clear and concise manuscripts for each individual topic, +before merging the divergent aspects into a final coherent whole while also fulfilling publisher's formal requirements. +I would love to bring both the analytical and editorial skillsets together in my new work, +to be able to push them forward in tandem. + +Lastly, my skills of communication, especially international communication skills, have been honed throughout this time as I was both participant and leader of small (from 3 people) to medium-sized (up to 8 people) teams. +Collaboration in this way was both exciting and straightforward for me, +and I firmly believe concise and clear communication both engenders easier productivity flows +and is fundamental to the ability to precisely frame topics as complex as energy transition. + +My interactions with processes of both long-term energy planning and renewables-based electrification of end-use sectors primarily stem from research undertaken in Vietnam and Benin under the helm of the Agence française de développement, +where the eventual distributional impact of access to clean water and new energy grids provided the project's focus. +I have, however, both the willingness and curiosity to dive deeper into these topics and their related issues of regulatory frameworks, financing and policy framing. + +I will be happy to hear back from you and am confident that I could be a good match. +Should you agree that my profile is a good fit for the offered position then do not hesitate to contact me and I would be delighted to arrange a meeting.