2026-06-17 10:40:40 +02:00

142 lines
5.7 KiB
TeX

% Colors
\definecolor{pagebackground}{HTML}{FFFFFF}
\definecolor{sidebarbackground}{HTML}{353839}
\definecolor{sidebartitle}{HTML}{FFFFFF}
\definecolor{sidebartext}{HTML}{FFFFFF}
\definecolor{contbackground}{HTML}{DCAE71}
\definecolor{altconttext}{HTML}{353839}
\definecolor{bodytitle}{HTML}{353839}
\definecolor{bodytext}{HTML}{353839}
\definecolor{bulletcolor}{HTML}{353839}
\definecolor{linkcolor}{HTML}{353839}
\definecolor{linecolor}{HTML}{353839}
\definecolor{name}{HTML}{353839}
\definecolor{jobtitle}{HTML}{353839}
\RequirePackage[pagecolor=pagebackground, nopagecolor=pagebackground]{pagecolor}
% Heading styles
\titleformat{\section}
{\color{bodytitle}\fontsize{16pt}{16pt}\sffamily\bfseries\addfontfeature{LetterSpace=2}}
{}{0pt}{}
\titleformat{\subsection}
{\color{sidebartitle}\fontsize{16pt}{16pt}\sffamily\bfseries\addfontfeature{LetterSpace=2}}
{}{0pt}{}
\titleformat{\subsubsection}
{\color{bodytitle}\fontsize{12pt}{12pt}\sffamily\addfontfeature{LetterSpace=2}}
{}{0pt}{}
\titlespacing*{\section}{0pt}{0.5cm}{0.4cm}
\titlespacing*{\subsection}{0pt}{0.5cm}{0.4cm}
\titlespacing*{\subsubsection}{0pt}{0.5cm}{0.1cm}
% Defining font styles
\newcommand{\sname}{\color{name}\fontsize{36pt}{36pt}\sffamily\addfontfeature{LetterSpace=3}\MakeUppercase}
\newcommand{\sjobtitle}{\color{jobtitle}\fontsize{18pt}{18pt}\sffamily\addfontfeature{LetterSpace=5}\MakeUppercase}
% Defining page styles
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhead[C]{%
\begin{tikzpicture}[remember picture,overlay]
\node [rectangle, fill=sidebarbackground, anchor=north west, minimum width=8cm, minimum height=\paperheight+2cm] at ($(current page.north west)-(1cm,-1cm)$) {};
\end{tikzpicture}
}
% Layout for name, job title and sidebar
\setcolumnwidth{5cm,12cm}
\setlength{\columnsep}{1.5cm}
\columncolor{sidebartext}[0]
\columncolor{bodytext}[1]
\newcommand{\makeprofile}{%
\vspace*{-1cm}
{\setstretch{3}
\begin{adjustbox}{padding=6.7cm 0pt 0pt 0pt,minipage=[c][2cm]{12cm}}
{\sname\name}
\end{adjustbox}}
{\setstretch{1.8}
\begin{adjustbox}{padding=6.7cm 0pt 0pt 0pt,minipage=[c][1cm]{12cm}}
{\sjobtitle\jobtitle}
\end{adjustbox}}
\altcontact
\vspace{1.75cm}
\ifthenelse{\equal{\profilepic}{}}{}{%
\begin{tikzpicture}[remember picture,overlay]
\node[circle,minimum width=3.5cm, path picture={
\node at (path picture bounding box.center){\includegraphics[width=3.5cm]{\profilepic}};}] at ($(current page.north west)+(3.5cm,-2.5cm)$) {};
\end{tikzpicture}
}
}
% Contact table
\newcommand{\altcontact}{%
\begin{tikzpicture}[remember picture, overlay]
\node[rectangle, fill=contbackground, anchor=north, minimum height=1.8cm, minimum width=\paperwidth+3cm] at ($(current page.north)-(0cm,4.75cm)$) {%
\renewcommand{\arraystretch}{1.3}
\centering
{\color{altconttext}
\begin{tabularx}{\textwidth}{CCC}
\ifthenelse{\equal{\location}{}}{}{\locicon\quad \location} &
\ifthenelse{\equal{\phone}{}}{}{\phoneicon\quad \phone} &
\ifthenelse{\equal{\mail}{}}{}{\calendaricon\quad \dateofbirth \\}
\ifthenelse{\equal{\mail}{}}{}{\mailicon\quad \href{mailto:\mail}{\mail} &}
\ifthenelse{\equal{\linkedin}{}}{}{\linkedinicon\quad \linkedin &}
\ifthenelse{\equal{\github}{}}{\\}{\githubicon\quad \github \\}
\end{tabularx}
}
};
\end{tikzpicture}
}
% Margins
\RequirePackage[left=1cm, right=1cm, top=1.5cm, bottom=1.5cm, footskip=0.5cm, headheight=0.5cm]{geometry}
% Personal skills bar
\newcommand\perskills[1]{%
\ifthenelse{\equal{#1}{}}{\booltrue{perempty}}{\renewcommand{\perskills}{%
\foreach [count=\i] \x/\y in {#1}{
{\x}\\
\ifthenelse{\equal{\thecolumn}{0}}{
\progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=contbackground, filledcolor=contbackground, borderwidth=1pt, emptycolor=sidebarbackground]{\y}\par\smallskip
}{
\progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
}
}
}}
}
% Professional skills bar
\newcommand\proskills[1]{%
\ifthenelse{\equal{#1}{}}{\booltrue{proempty}}{\renewcommand{\proskills}{%
\foreach [count=\i] \x/\y in {#1}{%
{\x}\\
\ifthenelse{\equal{\thecolumn}{0}}{%
\progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=contbackground, filledcolor=contbackground, borderwidth=1pt, emptycolor=sidebarbackground]{\y}\par\smallskip
}{
\progressbar[width=.9\columnwidth,roundnessa=1pt, ticksheight=0, heightr=1, linecolor=bodytext, filledcolor=bodytext, borderwidth=1pt, emptycolor=pagebackground]{\y}\par\smallskip
}
}
}}
}
% Command for drawing language skill circles
% Adapted from AltaCV Template: https://www.overleaf.com/latex/templates/altacv-template/trgqjpwnmtgv
\newcommand\langskills[1]{%
\ifthenelse{\equal{#1}{}}{\booltrue{langempty}}{\renewcommand{\langskills}{%
\renewcommand{\arraystretch}{1.4}
\foreach [count=\i] \x/\y in {#1}{%
\begin{tabular*}{\columnwidth}{@{}L{.4\columnwidth}L{.6\columnwidth}}
{\x} &
\foreach \z in {1,...,5}{%
{\ifnumgreater{\z}{\y}{\color{bodytext!50}}{\color{contbackground}}\small{\faCircle}}}\\
\end{tabular*}
}
}}
}