-
Notifications
You must be signed in to change notification settings - Fork 1
/
cleancv.sty
111 lines (102 loc) · 3.09 KB
/
cleancv.sty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{cleancv}[2017/01/24 v0.01 CV template]
% general settings
\setlength{\parskip}{5pt}
\RequirePackage{calc}
\RequirePackage{ragged2e}
\RequirePackage{xifthen}
% default sans-serif helvetica
\renewcommand{\familydefault}{\sfdefault}
% styling for section titles
\renewcommand{\section}[1]{
\bigskip
\noindent{\fontfamily{ppl}\selectfont \Large \textit{#1}}
\nopagebreak % we do not want pagebreaks directly after headings
\bigskip
\nopagebreak
}
% header and footer
\let\@author\@empty
\RequirePackage{lastpage}
\RequirePackage{fancyhdr}
\fancyhead[C]{\@title% only print author if it is set
\ifx\@author\@empty
\else{ - \@author}%
\fi}
\renewcommand\headrulewidth{0pt}
\fancyfoot[C]{\thepage\ / \pageref{LastPage}}
\pagestyle{fancy}
% custom style without header for first page
\fancypagestyle{firststyle}
{
\fancyhf{}
% Only show the footer if the total number of pages is not 1
\fancyfoot[C]{\ifthenelse{\equal{\pageref{LastPage}}{1}}{}{\thepage\ / \pageref{LastPage}}}
}
% Reevaluate page margins at begin of document (to be compatible with geometry)
\AtBeginDocument{\fancyhfoffset[E,O]{0pt}}
% sizes
\newlength{\cvgrouptopmargin}
\setlength{\cvgrouptopmargin}{5pt}
\newlength{\cvgroupbottommargin}
\setlength{\cvgroupbottommargin}{20pt}
\newlength{\cvtopsep}
\setlength{\cvtopsep}{3pt}
\newlength{\cvbottomsep}
\setlength{\cvbottomsep}{7pt}
\newlength{\cvparskip}
\newlength{\cvindent}
\newlength{\cvleftcol}
\newlength{\cvrightcol}
\newcommand{\cvbarpos}{0.2}
% cv groups
\newenvironment{cvgroup}{
\setlength{\cvleftcol}{\cvbarpos\textwidth}
\setlength{\cvindent}{\parindent}
\setlength{\cvrightcol}{\linewidth-\cvleftcol-\cvindent-11.5pt-3pt}
\newcommand{\cvitem}[3][]{
\setlength{\cvparskip}{(\cvtopsep+\cvbottomsep)/2}
\vbox{
\parbox[t]{\cvleftcol}{
\vskip\cvtopsep%
\RaggedLeft% move text to the right
\ifthenelse{\isempty{##1}}%
{}%
{\textbf{\strut##1}\\}%
\strut##2%
\vskip\cvbottomsep%
}%
\hspace{5pt}\vrule width 1.5pt\hspace{5pt}%
\parbox[t]{\cvrightcol}{
\renewcommand{\\}{\vskip7pt}
\setlength{\parindent}{0pt}
\renewcommand{\indent}{\hspace{\cvindent}}
\vskip\cvtopsep%
\ifthenelse{\isempty{##1}}%
{}%
{\vskip0.3pt}
\strut##3%
\vskip\cvbottomsep
}
}
\vspace{-1\lineskip}
}%
% extra whitespace before and after group
\vskip\cvgrouptopmargin%
\begin{minipage}{\linewidth}
}{%
\end{minipage}%
\vskip\cvgroupbottommargin%
}
% skill level indicators
\RequirePackage{forloop}
\RequirePackage{fontawesome}
\newcounter{ct}
\newcommand{\skillbar}[2][3]{%
{%
\scalebox{0.7}{%
\forloop{ct}{0}{\value{ct} < #2}{\footnotesize\hspace{1pt}\faCircle}%
\forloop{ct}{#2}{\value{ct} < #1}{\footnotesize\hspace{1pt}\faCircleO}%
}}%
}
\endinput