commit 02006eeeb2a7d22a9d09bbf2b0f33fbbc64bb3ee Author: Bruno BELANYI Date: Tue Dec 31 20:35:37 2019 +0100 twentysecond: add class and license diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..72a6d36 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Carmine Spagnuolo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/twentysecondcv.cls b/twentysecondcv.cls new file mode 100644 index 0000000..092a238 --- /dev/null +++ b/twentysecondcv.cls @@ -0,0 +1,271 @@ +\ProvidesClass{twentysecondcv}[2017/01/08 CV class] +\LoadClass{article} +\NeedsTeXFormat{LaTeX2e} + +%------------------------------------------------------------------------------- +% REQUIRED PACKAGES +%------------------------------------------------------------------------------- + +\RequirePackage[sfdefault]{ClearSans} +\RequirePackage[T1]{fontenc} +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage[absolute,overlay]{textpos} +\RequirePackage{ragged2e} +\RequirePackage{etoolbox} +\RequirePackage{ifmtarg} +\RequirePackage{ifthen} +\RequirePackage{pgffor} +\RequirePackage{marvosym} +\RequirePackage{parskip} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions\relax + +%------------------------------------------------------------------------------- +% COLOURS +%------------------------------------------------------------------------------- + +\definecolor{white}{RGB}{255,255,255} +\definecolor{gray}{HTML}{4D4D4D} +\definecolor{sidecolor}{HTML}{E7E7E7} +\definecolor{mainblue}{HTML}{0E5484} +\definecolor{maingray}{HTML}{B9B9B9} + +%------------------------------------------------------------------------------- +% MISC CONFIGURATIONS +%------------------------------------------------------------------------------- + +\renewcommand{\bfseries}{\color{gray}} % Make \textbf produce coloured text instead + +\pagestyle{empty} % Disable headers and footers + +\setlength{\parindent}{0pt} % Disable paragraph indentation + +%------------------------------------------------------------------------------- +% SIDEBAR DEFINITIONS +%------------------------------------------------------------------------------- + +\setlength{\TPHorizModule}{1cm} % Left margin +\setlength{\TPVertModule}{1cm} % Top margin + +\newlength\imagewidth +\newlength\imagescale +\pgfmathsetlength{\imagewidth}{5cm} +\pgfmathsetlength{\imagescale}{\imagewidth/600} + +% Define a new length to hold the remaining line width after the section title is printed +\newlength{\TotalSectionLength} +% Define a new length to hold the width of the section title +\newlength{\SectionTitleLength} +\newcommand{\profilesection}[1]{ + % Set the total line width + \setlength\TotalSectionLength{\linewidth} + % Calculate the width of the section title + \settowidth{\SectionTitleLength}{\huge #1 } + % Subtract the section title width from the total width + \addtolength\TotalSectionLength{-\SectionTitleLength} + % Modifier to remove overfull box warning + \addtolength\TotalSectionLength{-2.22221pt} + % Whitespace before the section title + \vspace{8pt} + % Print the title and auto-width rule + {\color{black!80} \huge #1 \rule[0.15\baselineskip]{\TotalSectionLength}{1pt}} +} + +% Define custom commands for CV info +\newcommand{\cvdate}[1]{\renewcommand{\cvdate}{#1}} +\newcommand{\cvmail}[1]{\renewcommand{\cvmail}{#1}} +\newcommand{\cvnumberphone}[1]{\renewcommand{\cvnumberphone}{#1}} +\newcommand{\cvaddress}[1]{\renewcommand{\cvaddress}{#1}} +\newcommand{\cvsite}[1]{\renewcommand{\cvsite}{#1}} +\newcommand{\aboutme}[1]{\renewcommand{\aboutme}{#1}} +\newcommand{\profilepic}[1]{\renewcommand{\profilepic}{#1}} +\newcommand{\cvname}[1]{\renewcommand{\cvname}{#1}} +\newcommand{\cvjobtitle}[1]{\renewcommand{\cvjobtitle}{#1}} + +% Command for printing the contact information icons +\newcommand*\icon[1]{\tikz[baseline=(char.base)]{\node[shape=circle,draw,inner sep=1pt, fill=mainblue,mainblue,text=white] (char) {#1};}} + +% Command for printing skill progress bars +\newcommand\skills[1]{ + \renewcommand{\skills}{ + \begin{tikzpicture} + \foreach [count=\i] \x/\y in {#1}{ + \draw[fill=maingray,maingray] (0,\i) rectangle (6,\i+0.4); + \draw[fill=white,mainblue](0,\i) rectangle (\y,\i+0.4); + \node [above right] at (0,\i+0.4) {\x}; + } + \end{tikzpicture} + } +} + +% Command for printing skills text +\newcommand\skillstext[1]{ + \renewcommand{\skillstext}{ + \begin{flushleft} + \foreach [count=\i] \x/\y in {#1}{ + \x$ \star $\y + } + \end{flushleft} + } +} + +%------------------------------------------------------------------------------- +% SIDEBAR LAYOUT +%------------------------------------------------------------------------------- + +\newcommand{\makeprofile}{ + \begin{tikzpicture}[remember picture,overlay] + \node [rectangle, fill=sidecolor, anchor=north, minimum width=9cm, minimum height=\paperheight+1cm] (box) at (-5cm,0.5cm){}; + \end{tikzpicture} + + %------------------------------------------------ + + \begin{textblock}{6}(0.5, 0.2) + + %------------------------------------------------ + + \ifthenelse{\equal{\profilepic}{}}{}{ + \begin{center} + \begin{tikzpicture}[x=\imagescale,y=-\imagescale] + \clip (600/2, 567/2) circle (567/2); + \node[anchor=north west, inner sep=0pt, outer sep=0pt] at (0,0) {\includegraphics[width=\imagewidth]{\profilepic}}; + \end{tikzpicture} + \end{center} + } + + %------------------------------------------------ + + {\Huge\color{mainblue}\cvname} + + %------------------------------------------------ + + {\Large\color{black!80}\cvjobtitle} + + %------------------------------------------------ + + \renewcommand{\arraystretch}{1.6} + \begin{tabular}{p{0.5cm} @{\hskip 0.5cm}p{5cm}} + \ifthenelse{\equal{\cvdate}{}}{}{\textsc{\Large\icon{\Info}} & \cvdate\\} + \ifthenelse{\equal{\cvaddress}{}}{}{\textsc{\Large\icon{\Letter}} & \cvaddress\\} + \ifthenelse{\equal{\cvnumberphone}{}}{}{\textsc{\Large\icon{\Telefon}} & \cvnumberphone\\} + \ifthenelse{\equal{\cvsite}{}}{}{\textsc{\Large\icon{\Mundus}} & \cvsite\\} + \ifthenelse{\equal{\cvmail}{}}{}{\textsc{\large\icon{@}} & \href{mailto:\cvmail}{\cvmail}} + \end{tabular} + + %------------------------------------------------ + + \ifthenelse{\equal{\aboutme}{}}{}{ + \profilesection{About me} + \begin{flushleft} + \aboutme + \end{flushleft} + } + + %------------------------------------------------ + + \profilesection{Skills} + + \skills + \skillstext + \scriptsize + (*)[The skill scale is from 0 (Fundamental Awareness) to 6 (Expert).] + + %------------------------------------------------ + + \end{textblock} +} + +%------------------------------------------------------------------------------- +% COLOURED SECTION TITLE BOX +%------------------------------------------------------------------------------- + +% Command to create the rounded boxes around the first three letters of section titles +\newcommand*\round[2]{% + \tikz[baseline=(char.base)]\node[anchor=north west, draw,rectangle, rounded corners, inner sep=1.6pt, minimum size=5.5mm, text height=3.6mm, fill=#2,#2,text=white](char){#1};% +} + +\newcounter{colorCounter} +\newcommand{\sectioncolor}[1]{% + {% + \round{#1}{ + \ifcase\value{colorCounter}% + maingray\or% + mainblue\or% + maingray\or% + mainblue\or% + maingray\or% + mainblue\or% + maingray\or% + mainblue\or% + maingray\or% + mainblue\else% + maingray\fi% + }% + }% + \stepcounter{colorCounter}% +} + +\renewcommand{\section}[1]{ + {% + \color{gray}% + \Large\sectioncolor{#1}% + } +} + +\renewcommand{\subsection}[1]{ + \par\vspace{.5\parskip}{% + \large\color{gray} #1% + } + \par\vspace{.25\parskip}% +} + +%------------------------------------------------------------------------------- +% LONG LIST ENVIRONMENT +%------------------------------------------------------------------------------- + +\setlength{\tabcolsep}{0pt} + +% New environment for the long list +\newenvironment{twenty}{% + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll} +}{% + \end{tabular*} +} + +\newcommand{\twentyitem}[4]{% +#1&\parbox[t]{0.83\textwidth}{% + \textbf{#2}% + \hfill% + {\footnotesize#3}\\% +#4\vspace{\parsep}% +}\\ + } + +%------------------------------------------------------------------------------- +% SMALL LIST ENVIRONMENT +%------------------------------------------------------------------------------- + +\setlength{\tabcolsep}{0pt} + +% New environment for the small list +\newenvironment{twentyshort}{% + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll} +}{% + \end{tabular*} +} + +\newcommand{\twentyitemshort}[2]{% +#1&\parbox[t]{0.83\textwidth}{% + \textbf{#2}% +}\\ + } + +%------------------------------------------------------------------------------- +% MARGINS AND LINKS +%------------------------------------------------------------------------------- + +\RequirePackage[left=7.6cm,top=0.1cm,right=1cm,bottom=0.2cm,nohead,nofoot]{geometry} + +\RequirePackage{hyperref}