twentysecond: add class and license
This commit is contained in:
commit
02006eeeb2
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -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.
|
271
twentysecondcv.cls
Normal file
271
twentysecondcv.cls
Normal file
|
@ -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}
|
Loading…
Reference in a new issue