@ -0,0 +1,416 @@
|
||||
% scale
|
||||
\newcommand\cvscale{1}
|
||||
|
||||
% font
|
||||
\newcommand\cvfont{ppl}
|
||||
\newcommand\cvheadertitlefontscale{2.25}
|
||||
\newcommand\cvheadersubtitlefontscale{1.5}
|
||||
\newcommand\cvsectionfontscale{1.75}
|
||||
\newcommand\cvnamefontscale{1.25}
|
||||
\newcommand\cvdescriptionfontscale{1}
|
||||
|
||||
% margin
|
||||
\newcommand\cvheadermargin{5}
|
||||
\newcommand\cvtopmargin{10}
|
||||
\newcommand\cvbottommargin{10}
|
||||
\newcommand\cvleftmargin{20}
|
||||
\newcommand\cvrightmargin{10}
|
||||
|
||||
% header
|
||||
\newcommand\cvavatarradius{25}
|
||||
\newcommand\cvavatarborderwidth{1}
|
||||
\newcommand\cvheaderoffset{5}
|
||||
|
||||
% timelline
|
||||
\newcommand\cvtimelineoffset{12}
|
||||
\newcommand\cvtimelinewidth{0.5}
|
||||
|
||||
% miain
|
||||
\newcommand\cvmainspace{3}
|
||||
\newcommand\cvmainbubbleradius{6}
|
||||
\newcommand\cvmainbubbleborderwidth{1}
|
||||
|
||||
% event
|
||||
\newcommand\cveventdatewidth{20}
|
||||
\newcommand\cveventbubbleradius{2.75}
|
||||
\newcommand\cveventbubbleborderwidth{1}
|
||||
|
||||
% sidebar
|
||||
\newcommand\cvsidebarspace{3}
|
||||
\newcommand\cvsidebarbubbleradius{6}
|
||||
\newcommand\cvsidebarbubbleborderwidth{1}
|
||||
\newcommand\cvsidebaroffset{2}
|
||||
\newcommand\cvseparatorscale{1}
|
||||
|
||||
% column
|
||||
\newcommand\cvcolumnratio{0.4}
|
||||
\newcommand\cvspacebetweencolumns{12}
|
||||
|
||||
|
||||
% color
|
||||
\usepackage{xcolor}
|
||||
\definecolor{cvcolor}{RGB}{20, 20, 20}
|
||||
\definecolor{cviconcolor}{RGB}{255, 255, 255}
|
||||
\definecolor{cvbordercolor}{RGB}{255, 255, 255}
|
||||
\definecolor{cvavatarbordercolor}{RGB}{255, 255, 255}
|
||||
\definecolor{cvtimelinecolor}{RGB}{0, 0, 0}
|
||||
\definecolor{cvlightcolor}{RGB}{245, 245, 245}
|
||||
|
||||
|
||||
% rescale
|
||||
\usepackage{fp}
|
||||
\FPeval{\cvavatarradius}{\cvscale*\cvavatarradius}
|
||||
\FPeval{\cvavatarborderwidth}{\cvscale*\cvavatarborderwidth}
|
||||
\FPeval{\cvmainspace}{\cvscale*\cvmainspace}
|
||||
\FPeval{\cvmainbubbleradius}{\cvscale*\cvmainbubbleradius}
|
||||
\FPeval{\cvmainbubbleborderwidth}{\cvscale*\cvmainbubbleborderwidth}
|
||||
\FPeval{\cveventdatewidth}{\cvscale*\cveventdatewidth}
|
||||
\FPeval{\cveventbubbleradius}{\cvscale*\cveventbubbleradius}
|
||||
\FPeval{\cveventbubbleborderwidth}{\cvscale*\cveventbubbleborderwidth}
|
||||
\FPeval{\cvsidebarspace}{\cvscale*\cvsidebarspace}
|
||||
\FPeval{\cvsidebarbubbleradius}{\cvscale*\cvsidebarbubbleradius}
|
||||
\FPeval{\cvsidebarbubbleborderwidth}{\cvscale*\cvsidebarbubbleborderwidth}
|
||||
\FPeval{\cvseparatorscale}{\cvscale*\cvseparatorscale}
|
||||
|
||||
%settings]
|
||||
\newcommand\packagename{bubblecv}
|
||||
|
||||
\usepackage[a4paper]{geometry}
|
||||
\geometry{top=\cvtopmargin mm, bottom=\cvbottommargin mm, left=\cvleftmargin mm, right=\cvrightmargin mm}
|
||||
|
||||
\setlength{\topskip}{0mm}
|
||||
\setlength{\parindent}{0mm}
|
||||
\pagenumbering{gobble}
|
||||
|
||||
\usepackage{enumitem}
|
||||
\setlist[itemize]{noitemsep, nolistsep, leftmargin=*}
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage{xparse}
|
||||
\usepackage{ifthen}
|
||||
\usepackage{tabularx}
|
||||
\usepackage{hyperref}
|
||||
|
||||
\usepackage{paracol}
|
||||
\setlength{\columnsep}{\cvspacebetweencolumns mm}
|
||||
\newcommand\iscvsidebar{0}
|
||||
|
||||
\usepackage{relsize}
|
||||
\usepackage{fontawesome}
|
||||
|
||||
\DeclareFontFamily{U}{fontawesomeOne}{}
|
||||
\DeclareFontShape{U}{fontawesomeOne}{m}{n}{<-> FontAwesome--fontawesomeone}{}
|
||||
\DeclareRobustCommand\FAone{\fontencoding{U}\fontfamily{fontawesomeOne}\selectfont}
|
||||
|
||||
%----------------------------------------------------------------------------------------
|
||||
% TIMELINE
|
||||
%----------------------------------------------------------------------------------------
|
||||
\usepackage{silence}
|
||||
\WarningsOff[everypage] % disable warning about problems with background package
|
||||
\usepackage{background}
|
||||
\SetBgScale{1}
|
||||
\SetBgAngle{0}
|
||||
\SetBgColor{cvtimelinecolor}
|
||||
\SetBgContents{\rule{\cvtimelinewidth mm}{\textheight}}
|
||||
|
||||
\SetBgHshift{\dimexpr(\cvtimelineoffset mm - 105 mm)}
|
||||
\newcommand{\timelinespace}{\the\numexpr\cvleftmargin - \cvtimelineoffset\relax}
|
||||
|
||||
\setlength{\skip\footins}{0.25\baselineskip}
|
||||
|
||||
|
||||
% Convert RGB to decode array.
|
||||
% Parameter 1: RGB color.
|
||||
% Parameter 2: Variable to which the array will be assigned.
|
||||
\newcommand{\rgbtoarray}[2]{%
|
||||
\extractcolorspecs{#1}\ParseResultModel\ParseResultColor%
|
||||
\convertcolorspec\ParseResultModel\ParseResultColor{rgb}\ParseRgb%
|
||||
\let#2\@empty%
|
||||
\@for\ParseValue:=\ParseRgb\do{%
|
||||
\edef#2{%
|
||||
#2%
|
||||
\ifx#2\@empty%
|
||||
\else%
|
||||
\space%
|
||||
\fi%
|
||||
\ParseValue\space 1%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
|
||||
|
||||
% Draw a circle with the image inside.
|
||||
% Parameter 1 (optional): Path to image resource.
|
||||
% Parameter 2 (optional): Image scale.
|
||||
% Parameter 3 (optional): Image color in RGB.
|
||||
% Parameter 4: Circle radius in millimeters.
|
||||
% Parameter 5: Circle border width in millimeters.
|
||||
% Parameter 6: Circle background color in RGB.
|
||||
% Parameter 7: Circle border color in RGB.
|
||||
\NewDocumentCommand{\drawcircle}{O{} O{1} O{} m m m m}{%
|
||||
\ifthenelse{\equal{#3}{}}{}{%
|
||||
\rgbtoarray{#3}\customdecodearray%
|
||||
}{}%
|
||||
\begin{tikzpicture}%
|
||||
\draw[%
|
||||
draw=#7, fill=#6, line width=#5mm,%
|
||||
path picture={%
|
||||
\ifthenelse{\equal{#1}{}}{}{%
|
||||
\node at (path picture bounding box.center){%
|
||||
\ifthenelse{\equal{#3}{}}{%
|
||||
\includegraphics[%
|
||||
width=#2\dimexpr#4mm\relax,%
|
||||
height=#2\dimexpr#4mm\relax]{#1}%
|
||||
}{%
|
||||
\includegraphics[%
|
||||
width=#2\dimexpr#4mm\relax,%
|
||||
height=#2\dimexpr#4mm\relax,%
|
||||
decodearray={\customdecodearray}]{#1}%
|
||||
}%
|
||||
};%
|
||||
}%
|
||||
}%
|
||||
] (0,0) circle (\dimexpr#4mm-#5mm/2\relax);%
|
||||
\end{tikzpicture}%
|
||||
}%
|
||||
|
||||
|
||||
% Main CV function that prepares the entire layout.
|
||||
% Parameter 1 (optional): Path to avatar resource.
|
||||
% Parameter 2 (optional): Avatar scale.
|
||||
% Parameter 3 (optional): Avatar color in RGB.
|
||||
% Parameter 4: Name.
|
||||
% Parameter 5: Description.
|
||||
\NewDocumentEnvironment{cv}{O{} O{2} O{} m m m}{%
|
||||
\relscale{\cvscale}%
|
||||
\fontfamily{\cvfont}%
|
||||
|
||||
\vspace*{\cvheadermargin mm}%
|
||||
\vspace*{-\cvtopmargin mm}%
|
||||
\hspace{-\timelinespace mm}%
|
||||
\hspace{-\cvavatarradius mm}%
|
||||
\begin{minipage}{\dimexpr(\cvavatarradius mm + \cvavatarradius mm)}%
|
||||
\protect\ifthenelse{\equal{#1}{}}%
|
||||
{\drawcircle{\cvavatarradius}
|
||||
{\cvavatarborderwidth}
|
||||
{cvcolor}
|
||||
{cvavatarbordercolor}}%
|
||||
{\drawcircle[resources/#1][#2][#3]{\cvavatarradius}
|
||||
{\cvavatarborderwidth}
|
||||
{cvcolor}
|
||||
{cvavatarbordercolor}}%
|
||||
\end{minipage}%
|
||||
\hspace{\cvheaderoffset mm}%
|
||||
\begin{minipage}{\dimexpr(\linewidth + \timelinespace mm - \cvavatarradius mm - \cvheaderoffset mm)}%
|
||||
\textscale{\cvheadertitlefontscale}{#4}%
|
||||
\cvseparator[3]%
|
||||
\textscale{\cvheadersubtitlefontscale}{#5}%
|
||||
\cvseparator[1]%
|
||||
#6% Affichage du texte du 6ème paramètre
|
||||
\end{minipage}%
|
||||
|
||||
\columnratio{\cvcolumnratio}%
|
||||
|
||||
\begin{paracol}{2}%
|
||||
}{%
|
||||
\end{paracol}%
|
||||
}%
|
||||
|
||||
|
||||
% Groups events, items and skills inside one block.
|
||||
% Parameter 1 (optional): Path to icon resource.
|
||||
% Parameter 2 (optional): Icon scale.
|
||||
% Parameter 3 (optional): Icon color in RGB.
|
||||
% Parameter 4: Section title.
|
||||
\NewDocumentCommand{\cvsection}{O{} O{1} O{cviconcolor} m}{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{1}}{%
|
||||
\vspace{\cvsidebarspace mm}%
|
||||
\hspace{-\cvsidebarbubbleradius mm}%
|
||||
\begin{minipage}{\dimexpr(\cvsidebarbubbleradius mm + \cvsidebarbubbleradius mm)}%
|
||||
\protect\ifthenelse{\equal{#1}{}}%
|
||||
{\drawcircle{\cvsidebarbubbleradius}
|
||||
{\cvsidebarbubbleborderwidth}
|
||||
{cvcolor}
|
||||
{cvbordercolor}}%
|
||||
{\drawcircle[resources/#1][#2][#3]{\cvsidebarbubbleradius}
|
||||
{\cvsidebarbubbleborderwidth}
|
||||
{cvcolor}
|
||||
{cvbordercolor}}%
|
||||
\end{minipage}%
|
||||
\hspace{\cvsidebaroffset mm}%
|
||||
\begin{minipage}{\dimexpr(\linewidth - \cvsidebarbubbleradius mm - \cvsidebaroffset mm)}%
|
||||
\textscale{\cvsectionfontscale}{\textbf{#4}}%
|
||||
\end{minipage}%
|
||||
\cvseparator%
|
||||
}{%
|
||||
\vspace{\cvmainspace mm}%
|
||||
\hspace{-\timelinespace mm}%
|
||||
\hspace{-\cvmainbubbleradius mm}%
|
||||
\begin{minipage}{\dimexpr(\cvmainbubbleradius mm + \cvmainbubbleradius mm)}%
|
||||
\ifthenelse{\equal{#1}{}}%
|
||||
{\protect\drawcircle{\cvmainbubbleradius}
|
||||
{\cvmainbubbleborderwidth}
|
||||
{cvcolor}
|
||||
{cvbordercolor}}%
|
||||
{\protect\drawcircle[resources/#1][#2][#3]{\cvmainbubbleradius}
|
||||
{\cvmainbubbleborderwidth}
|
||||
{cvcolor}
|
||||
{cvbordercolor}}%
|
||||
\end{minipage}%
|
||||
\hspace{\dimexpr(\timelinespace mm - \cvmainbubbleradius mm)}%
|
||||
\begin{minipage}{\linewidth}%
|
||||
\textscale{\cvsectionfontscale}{\textbf{#4}}%
|
||||
\end{minipage}%
|
||||
\cvseparator%
|
||||
}%
|
||||
}%
|
||||
|
||||
|
||||
% Contains information about the event.
|
||||
% Parameter 1 (optional): Start date of the event.
|
||||
% Parameter 2 (optional): End date of the event.
|
||||
% Parameter 3: Content.
|
||||
\NewDocumentEnvironment{cvevent}{O{} O{} +b}{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{1}}{%
|
||||
\hspace{-\cveventbubbleradius mm}%
|
||||
\hspace{-\timelinespace mm}%
|
||||
\begin{minipage}[t]{\cveventdatewidth mm}%
|
||||
\begin{flushright}%
|
||||
\textbf{#1}\par%
|
||||
\ifthenelse{\equal{#2}{}}{}{%
|
||||
\textbf{\,#2}%
|
||||
}%
|
||||
\end{flushright}%
|
||||
\end{minipage}%
|
||||
\begin{minipage}{\dimexpr(\cveventbubbleradius mm + \cveventbubbleradius mm)}%
|
||||
\protect\drawcircle{\cveventbubbleradius}
|
||||
{\cveventbubbleborderwidth}
|
||||
{cvcolor}
|
||||
{cvbordercolor}%
|
||||
\end{minipage}%
|
||||
\hspace{\dimexpr(\timelinespace mm - \cveventbubbleradius mm)}%
|
||||
\begin{minipage}[t]{\dimexpr(\linewidth - \cveventdatewidth mm)}%
|
||||
#3%
|
||||
\end{minipage}%
|
||||
\par%
|
||||
}{%
|
||||
\PackageError{\packagename}{The cvevent can be used only in the sidebar column}{}%
|
||||
}%
|
||||
}{}
|
||||
|
||||
|
||||
% Vertical space between paragraphs.
|
||||
% Parameter 1 (optional): Space size in millimeters.
|
||||
\NewDocumentCommand{\cvseparator}{O{1}}{\vspace{#1\dimexpr\cvseparatorscale mm\relax}\par}
|
||||
|
||||
|
||||
% The title of the event header.
|
||||
% Parameter 1: Event title.
|
||||
\newcommand{\cvname}[1]{\textscale{\cvnamefontscale}{\textbf{#1}}\cvseparator}
|
||||
|
||||
|
||||
% The description of the event header.
|
||||
% Parameter 1: Event description.
|
||||
\newcommand{\cvdescription}[1]{\textscale{\cvdescriptionfontscale}{\textit{\textbf{#1}}}\cvseparator[2]}
|
||||
|
||||
|
||||
% Switches the main column to the sidebar.
|
||||
\newcommand{\cvsidebar}[0]{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{0}}{%
|
||||
\switchcolumn%
|
||||
\renewcommand{\iscvsidebar}{1}%
|
||||
}{%
|
||||
\PackageError{\packagename}
|
||||
{The cvsidebar can be used only once}{}%
|
||||
}%
|
||||
}%
|
||||
|
||||
|
||||
% List item with a label.
|
||||
% Parameter 1 (optional): Icon name from fontawesome package.
|
||||
% Parameter 2 (optional): Icon size in milimeters.
|
||||
% Parameter 3: Content.
|
||||
\NewDocumentEnvironment{cvitem}{O{Circle} O{2.5} +b}{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{0}}{%
|
||||
\begin{minipage}{\cvscale\dimexpr#2mm\relax}%
|
||||
\makebox(0, 0){\textcolor{cvcolor}
|
||||
{\fontsize{\cvscale\dimexpr#2mm\relax}
|
||||
{\cvscale\dimexpr#2mm\relax}\csname fa#1\endcsname}}%
|
||||
\end{minipage}%
|
||||
\hspace{\cvsidebaroffset mm}%
|
||||
\begin{minipage}
|
||||
{\dimexpr(\linewidth - \cvsidebaroffset mm - \cvscale\dimexpr#2mm\relax)}%
|
||||
#3%
|
||||
\end{minipage}%
|
||||
\par%
|
||||
}{%
|
||||
\PackageError{\packagename}
|
||||
{The cvitem can be used only in the main content column}{}%
|
||||
}%
|
||||
}{}
|
||||
|
||||
% List item with an icon and text aligned to the right of the picture.
|
||||
% Parameter 1 (optional): Icon name from fontawesome package.
|
||||
% Parameter 2 (optional): Text content.
|
||||
\NewDocumentEnvironment{qright}{O{Circle} O{}}{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{0}}{%
|
||||
\begin{minipage}[c][\dimexpr0.5\linewidth][c]{0.5\linewidth}%
|
||||
\centering
|
||||
\makebox(0, 0){\textcolor{cvcolor}
|
||||
{\textscale{\cvnamefontscale}
|
||||
{\csname fa#1\endcsname}}}%
|
||||
\end{minipage}%
|
||||
\begin{minipage}[c][\dimexpr0.5\linewidth][c]{0.5\linewidth}%
|
||||
\raggedleft
|
||||
\textscale{\cvnamefontscale}{#2} %
|
||||
\end{minipage}%
|
||||
}{%
|
||||
\PackageError{\packagename}
|
||||
{The qright environment can be used only in the main content column}{}%
|
||||
}%
|
||||
\par %
|
||||
}{}
|
||||
|
||||
|
||||
% List item with an icon and text aligned to the right of the picture.
|
||||
% Parameter 1 (optional): Icon name from fontawesome package.
|
||||
% Parameter 2 (optional): Text content.
|
||||
\NewDocumentEnvironment{qrleft}{O{Circle} O{}}{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{0}}{%
|
||||
\begin{minipage}[c][\dimexpr0.5\linewidth][c]{0.5\linewidth}%
|
||||
\raggedleft
|
||||
\textscale{\cvnamefontscale}{#2} % Apply the font scale of cvent
|
||||
\end{minipage}%
|
||||
\begin{minipage}[c][\dimexpr0.5\linewidth][c]{0.5\linewidth}%
|
||||
\centering
|
||||
\makebox(0, 0){\textcolor{cvcolor}
|
||||
{\textscale{\cvnamefontscale}
|
||||
{\csname fa#1\endcsname}}}%
|
||||
\end{minipage}%
|
||||
}{%
|
||||
\PackageError{\packagename}
|
||||
{The qrleft environment can be used only in the main content column}{}%
|
||||
}%
|
||||
\par %
|
||||
}{}
|
||||
|
||||
% Renders a progress-bar to indicate a certain skill in percent.
|
||||
% Parameter 1: Name of skill.
|
||||
% Parameter 2: Skill level.
|
||||
% Parameter 3: Percent of the progress-bar in range [0, 1].
|
||||
\newcommand{\cvskill}[3]{%
|
||||
\ifthenelse{\equal{\iscvsidebar}{0}}{%
|
||||
\begin{tabularx}{\linewidth}{>{\raggedright\arraybackslash}X>{\raggedleft\arraybackslash}X}%
|
||||
\textcolor{black}{\textbf{#1}} & \textcolor{cvcolor}{#2}%
|
||||
\end{tabularx}%
|
||||
|
||||
\begin{tikzpicture}[scale=1,rounded corners=\cvscale*0.5mm,very thin]%
|
||||
\fill [cvlightcolor] (0,0) rectangle (\linewidth, 0.15*\cvscale);%
|
||||
\fill [cvcolor] (0,0) rectangle (#3\linewidth, 0.15*\cvscale);%
|
||||
\end{tikzpicture}%
|
||||
\cvseparator[2]%
|
||||
}{%
|
||||
\PackageError{\packagename}
|
||||
{The cvskill can only be used in the main content}{}%
|
||||
}%
|
||||
}
|
After Width: | Height: | Size: 975 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 7.6 KiB |