2022-08-02 20:09:45 +00:00
(% macro cdate(inp) %)(( inp | formatDate | capitalize | trim ))(% endmacro %)
\documentclass [9pt] { article}
\usepackage { extsizes}
\usepackage { graphicx}
\usepackage [T1] { fontenc}
\usepackage [english,french] { babel}
\usepackage { url,parskip} % other packages for formatting
\usepackage [usenames,dvipsnames] { xcolor}
\usepackage { fullpage}
\usepackage [margin=2.5cm,top=1.5cm] { geometry}
\usepackage { hyperref}
\usepackage { titlesec}
\usepackage { array}
\usepackage { enumitem}
\usepackage { longtable}
\usepackage { etoolbox}
\usepackage { tikz}
\usepackage [skins] { tcolorbox}
\usepackage { fancyhdr}
\usepackage [inkscapepath=./build/latex/inkscape-svg] { svg}
\usepackage { verbatimbox}
\usepackage { stackengine}
\newcommand \svgsize { 10pt}
\definecolor { basecolor} { HTML} { 000066} %BLUE
\definecolor { accentcolor} { HTML} { 318440}
\definecolor { darkGrey} { HTML} { 989898}
\definecolor { light} { HTML} { 828282}
\colorlet { linkcolor} { basecolor}
\colorlet { symbolcolor} { linkcolor!85}
\pagestyle { fancy}
\fancyhf { }
\fancyhfoffset { 0em}
\fancyfoot { }
\fancyfoot [L] { (( misc.updated_ at | format_ date(locale=getLocale()) ))}
\fancyfoot [C] { (( firstName )) (( lastName )) - CV}
\fancyfoot [R] { \thepage }
\newcommand \link [2] { \color { linkcolor} \href { #1} { #2} \color { Black} }
% Remove head rule
\renewcommand { \headrulewidth } { 0pt}
%\fancyfoot[C]{\thepage}
% Configure list
\setlist [itemize,1] { label=-, nosep, leftmargin=2em}
\setlist [itemize,2] { label=-, nosep, leftmargin=1.5em}
% Setup Array : new column type
\newcolumntype { R} [1]{ >{ \hfill } m{ #1} }
%Italian hyphenation for the word: ''corporations''
\hyphenation { im-pre-se}
\newlength { \rightcolumnlength }
\setlength { \rightcolumnlength } { 12.5cm}
\newlength { \leftcolumn }
\setlength { \leftcolumn } { 3cm}
\newcommand { \cvtag } [1]{
\tikz [baseline] \node [anchor=base,draw=darkGrey!70,rounded corners=0.5ex,inner xsep=1ex,inner ysep=0.55ex,text height=1.59ex,text depth=.25ex] { \color { light} #1} ;\hspace { -.5em}
}
% \newcommand{\sectionTitle}[1]{
% \color{accentcolor}\textsc{\Large{#1}}
% \\
% \color{darkGrey}\rule{\textwidth}{0.4pt}
% \color{black}
% }
\titleformat { \section } { \Large \raggedright } { } { 0em} { } [\titlerule ]
\titlespacing { \section } { 0pt} { 2pt} { 2pt}
% \newcommand\sectionTitle[2]{\section{\texorpdfstring{\color{accentcolor}#2\enspace \textsc{#1}}{#1}}}
\newcommand \sectionTitle [1] { \section { \texorpdfstring { \color { accentcolor} \textsc { #1} } { #1} } \vspace { 5px} }
% Define the 'keywords' environment
\newenvironment { keywords} { %
\renewcommand { \arraystretch } { 1.1}
\begin { tabular} { >{ } r>{ } p{ 13cm} }
} { %
\end { tabular}
}
\newcommand \keywordsentry [2] {
\textbf { #1} & #2\\
}
\def \@ photo{ ./public/imgs/profile-512.jpg}
\newcolumntype { E} { >{ \raggedright \arraybackslash } p{ \rightcolumnlength } }
\newenvironment { experiences} { %
\begin { longtable} { R{ \leftcolumn } |E}
} { %
\end { longtable}
}
\newcommand \emptySeparator { \multicolumn { 2} { c} { } \\ }
\newlength \myheight
\newlength \mydepth
\settototalheight \myheight { Xygp}
\settodepth \mydepth { Xygp}
\setlength \fboxsep { 0pt}
\newcommand * \inlinegraphics [1] { %
\settototalheight \myheight { Xygp} %
\settodepth \mydepth { Xygp} %
\raisebox { -\mydepth } { \includesvg [height=\myheight] { public/imgs/#1} } %
}
\newcommand { \sociallink } [3]{ \mbox { \textcolor { symbolcolor} { #1} \hspace { 0.5em} \link { #2} { #3} \hspace { 1em} } }
% \newcommand{\iconwithtext}[2]{\bottominset{\small#1}{\includesvg[width=10pt]{./public/imgs/#2}}{2pt}{26pt}}
\newcommand { \iconwithtext } [2]{ \inlinegraphics { #1} \hspace { 0.3em} #2\hspace { 0.5em} }
\begin { document}
% \section{\color{accentcolor} \textsc{Hello World}}{Hello world}
\begin { minipage} { \dimexpr \linewidth -3cm}
\noindent { \huge { ((firstName)) \textbf { ((lastName))} } }
\vspace { 5px}
\\
\noindent \color { accentcolor} \textbf { \large { (( getDynLocalizedStr(label) ))} } \color { black}
\vspace { 5px} \\
\iconwithtext { icons/map-pin.svg} { (( location.city.name )), (( location.country.name ))}
\\
\iconwithtext { icons/cake.svg} { (( getLocalizedStr('intro.age-raw') | format(age) ))}
\\
% \sociallink{\includesvg[width=10pt,height=9pt]{./public/imgs/icons/robot.svg}}{https://matthieubessat.fr}{matthieubessat.fr}
\iconwithtext { icons/at.svg} { \link { mailto:(( email ))} { (( email ))} }
\iconwithtext { icons/phone.svg} { \link { (( phone | replace({ ' ':''} ) ))} { (( phone ))} }
\\
\iconwithtext { icons/link.svg} { \link { (( website ))} { (( website_ alt ))} }
\iconwithtext { logos/github.svg} { \link { (( links_ by_ ids.github.url ))} { (( links_ by_ ids.github.username ))} }
\iconwithtext { logos/gitlab.svg} { \link { (( links_ by_ ids.gitlab.url ))} { (( links_ by_ ids.gitlab.username ))} }
% Website, Email, Location, Age
% \includesvg[width=\svgsize]{./public/imgs/icons/robot.svg}
\end { minipage}
\begin { minipage} { 3cm}
\tikz \path [fill overzoom image={\@photo}] circle[radius=0.45\linewidth ];
\end { minipage}
\\
\vspace { 8px}
\par { (( getDynLocalizedStr(intro) | raw ))}
\\
% Section: Skills
\sectionTitle { (( getLocalizedStr('skills.title') ))}
\begin { keywords}
(% for skill in skills %)
\keywordsentry { (( getDynLocalizedStr(skill.name) ))} { (% for k in skill.keywords %)(( k ))(% if not loop.last %), (% endif %)(% endfor %)}
(% endfor %)
\end { keywords}
\vspace { .5em}
% Section: Professionals experiences
\sectionTitle { (( getLocalizedStr('experience.pro') ))}
\begin { longtable} { R{ \leftcolumn } |E}
(% for exp in pro_projects %)
\textbf { (( _ self.cdate(exp.to) ))} &
(% if exp.detailled %)
2022-08-02 20:14:23 +00:00
\link { (( website ))/(( getLocale() ))/projects/(( exp.id )).html} { %
2022-08-02 20:09:45 +00:00
(% endif %)
\textbf { (( getDynLocalizedStr(exp.name) ))} (% if exp.detailled %)}(% endif %) \\*
\textbf { (( _ self.cdate(exp.from) ))} & \textsc { (( exp.organization.name ))} (% if exp.organization.location is defined %), (( exp.organization.location ))(% endif %) \\*
& \par { (( getDynLocalizedStr(exp.description) | raw ))} \\
(% if exp.highlights is defined %)
& \begin { minipage} [t]{ \rightcolumnlength }
\begin { itemize}
(% for h in exp.highlights[getLocale()] %)
\item { (( h | raw ))}
(% endfor %)
\end { itemize}
\end { minipage} \\ *
(% endif %)
\vspace { .5em}
& \hspace { -.2em} \footnotesize { (% for t in exp.technologies %)\cvtag{(( t.name ))}(% endfor %)} \\
\emptySeparator
(% endfor %)
\end { longtable}
% Section: Side projects
\sectionTitle { (( getLocalizedStr('projects.side.title') | raw ))}
\par { (( getLocalizedStr('projects.side.description') | raw ))}
\begin { longtable} { l}
(% for exp in side_projects %)
\begin { minipage} [t]{ \dimexpr (\linewidth ) - 1.5em}
(% if exp.detailled %)
2022-08-02 20:14:23 +00:00
\link { (( website ))/(( getLocale() ))/projects/(( exp.id )).html} { %
2022-08-02 20:09:45 +00:00
(% endif %)
\textbf { \textsc { (( getDynLocalizedStr(exp.name) | raw ))} } %
(% if exp.detailled %)}(% endif %)
\hfill \textsc { (( exp.date | format_ date(locale=getLocale(), pattern='YYYY') ))} \smallskip \\
\iconwithtext { (( exp.link_ icon ))} { \link { (( exp.link ))} { (( exp.link_ alt ))} }
\vspace { .4em}
\\
(( getDynLocalizedStr(exp.description) | raw ))\vspace { .4em} \\
\footnotesize { (% for t in exp.technologies %)\cvtag{(( t.name ))}(% endfor %)}\\
\end { minipage}
(% if not loop.last %)
\vspace { .5em}
\\ *
(% endif %)
(% endfor %)
\end { longtable}
% Section: Volunteering experiences
\sectionTitle { (( getLocalizedStr('projects.volunteering.title') ))}
\begin { longtable} { R{ \leftcolumn } |E}
(% for exp in volunteering %)
\textbf { (( _ self.cdate(exp.date) ))} & \textbf { (( getDynLocalizedStr(exp.name) ))} \\ *
& \textsc { (( exp.organization.name ))} \\
& \par { (( getDynLocalizedStr(exp.description) | raw ))} \\
(% if not loop.last %)
\emptySeparator
(% endif %)
(% endfor %)
\end { longtable}
\vspace { 1em}
\pagebreak
% Section: Education
\sectionTitle { (( getLocalizedStr('education.title') ))}
\begin { longtable} { R{ \leftcolumn } |E}
(% for exp in education %)
\textbf { (( _ self.cdate(exp.to) ))} & \textbf { (( getDynLocalizedStr(exp.name) ))} \\ *
\textbf { (( _ self.cdate(exp.from) ))} & \textsc { (( exp.facility.name ))} , (( exp.facility.city )), (( exp.facility.country )) \\ *
% & \begin{minipage}[t]{\rightcolumnlength}
% \begin{itemize}
% \item{hello}
% \item{hello}
% \item{hello}
% \end{itemize}
% \end{minipage} \\
& (% if exp.degree is defined %)(( getLocalizedStr('education.degree-got') | format(exp.degree.name) | raw )) (% if exp.degree.title is defined %) (( getLocalizedStr('education.degree-title') | format(exp.degree.title) | raw ))(% endif %)(% endif %) \\*
(% if not loop.last %)
\emptySeparator
(% endif %)
(% endfor %)
\end { longtable}
\vspace { .5em}
\sectionTitle { (( getLocalizedStr('interests.title') | raw ))}
\begin { itemize}
(% for item in interests %)
\item { \iconwithtext { icons/(( item.icon ))} { (( getDynLocalizedStr(item.name) ))} }
(% endfor %)
\end { itemize}
\vspace { 1.1em}
% Section: Langues
\sectionTitle { (( getLocalizedStr('languages.title') ))}
\begin { keywords}
(% for lang in languages %)
\keywordsentry { (( getLocalizedStr(lang.long) ))} { (( getLocalizedStr('fluency.' ~ lang.level) ))}
(% endfor %)
\end { keywords}
\end { document}