1 %% Start of file `awesome-cv.cls'.
2 % Awesome CV Class File
4 % This class has been downloaded from:
5 % https://github.com/posquit0/Awesome-CV
8 % Claud D. Park <posquit0.bj@gmail.com>
9 % http://www.posquit0.com
12 % 1) This class file defines the structure and layout of the template file (cv.tex, resume.tex).
13 % 2) It has been written in such a way that under most circumstances you
14 % should not need to edit it.
17 % LPPL v1.3c (http://www.latex-project.org/lppl)
21 %-------------------------------------------------------------------------------
23 %-------------------------------------------------------------------------------
24 \ProvidesClass{awesome-cv}[2017/02/05 v1.6.1 Awesome Curriculum Vitae Class]
25 \NeedsTeXFormat{LaTeX2e}
28 %-------------------------------------------------------------------------------
31 % (need to be done before the external package loading, for example because
32 % we need \paperwidth, \paperheight and \@ptsize to be defined before loading
33 % geometry and fancyhdr)
34 %-------------------------------------------------------------------------------
35 % Options for draft or final
36 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
37 \DeclareOption{final}{\setlength\overfullrule{0pt}}
38 % Inherit options of article
40 \PassOptionsToClass{\CurrentOption}{article}
46 %-------------------------------------------------------------------------------
48 %-------------------------------------------------------------------------------
49 % Needed to make fixed length table
50 \RequirePackage{array}
51 % Needed to handle list environment
52 \RequirePackage{enumitem}
53 % Needed to handle text alignment
54 \RequirePackage{ragged2e}
55 % Needed to configure page layout
56 \RequirePackage{geometry}
57 % Needed to make header & footer effeciently
58 \RequirePackage{fancyhdr}
59 % Needed to manage colors
60 \RequirePackage{xcolor}
61 % Needed to use \ifxetex-\else-\fi statement
62 \RequirePackage{ifxetex}
63 % Needed to use \if-\then-\else statement
64 \RequirePackage{xifthen}
65 % Needed to use a toolbox of programming tools
66 \RequirePackage{etoolbox}
67 % Needed to change line spacing in specific environment
68 \RequirePackage{setspace}
69 % Needed to manage fonts
70 \RequirePackage[quiet]{fontspec}
71 % To support LaTeX quoting style
72 \defaultfontfeatures{Ligatures=TeX}
73 % Needed to manage math fonts
74 \RequirePackage{unicode-math}
75 % Needed to use icons from font-awesome
76 % (https://github.com/posquit0/latex-fontawesome)
77 \RequirePackage{fontawesome}
78 \RequirePackage[default,opentype]{sourcesanspro}
79 % Needed for the photo ID
80 \RequirePackage[skins]{tcolorbox}
81 % Needed to deal a paragraphs
82 \RequirePackage{parskip}
83 % Needed to deal hyperlink
84 \RequirePackage[hidelinks,unicode]{hyperref}
93 %-------------------------------------------------------------------------------
94 % Configuration for directory locations
95 %-------------------------------------------------------------------------------
96 % Configure a directory location for fonts(default: 'fonts/')
97 \newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
101 %-------------------------------------------------------------------------------
102 % Configuration for layout
103 %-------------------------------------------------------------------------------
105 % Configure page margins with geometry
106 \geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm}
109 % Set offset to each header and footer
112 \renewcommand{\headrulewidth}{0pt}
113 % Clear all header & footer fields
115 % Enable if you want to make header or footer using fancyhdr
119 %-------------------------------------------------------------------------------
120 % Configuration for colors
121 %-------------------------------------------------------------------------------
123 \definecolor{white}{HTML}{FFFFFF}
124 \definecolor{black}{HTML}{000000}
125 \definecolor{darkgray}{HTML}{333333}
126 \definecolor{gray}{HTML}{5D5D5D}
127 \definecolor{lightgray}{HTML}{999999}
129 \definecolor{green}{HTML}{C2E15F}
130 \definecolor{orange}{HTML}{FDA333}
131 \definecolor{purple}{HTML}{D3A4F9}
132 \definecolor{red}{HTML}{FB4485}
133 \definecolor{blue}{HTML}{6CE0F1}
135 \definecolor{darktext}{HTML}{414141}
136 \colorlet{text}{darkgray}
137 \colorlet{graytext}{gray}
138 \colorlet{lighttext}{lightgray}
140 \definecolor{awesome-emerald}{HTML}{00A388}
141 \definecolor{awesome-skyblue}{HTML}{0395DE}
142 \definecolor{awesome-red}{HTML}{DC3522}
143 \definecolor{awesome-pink}{HTML}{EF4089}
144 \definecolor{awesome-orange}{HTML}{FF6138}
145 \definecolor{awesome-nephritis}{HTML}{27AE60}
146 \definecolor{awesome-concrete}{HTML}{95A5A6}
147 \definecolor{awesome-darknight}{HTML}{131A28}
148 \colorlet{awesome}{awesome-red}
150 % Boolean value to switch section color highlighting
151 \newbool{acvSectionColorHighlight}
152 \setbool{acvSectionColorHighlight}{true}
154 % Awesome section color
155 \def\@sectioncolor#1#2#3{%
156 \ifbool{acvSectionColorHighlight}{{\color{awesome}#1#2#3}}{#1#2#3}%
160 %-------------------------------------------------------------------------------
161 % Configuration for fonts
162 %-------------------------------------------------------------------------------
163 % Set the FontAwesome font to be up-to-date.
164 \newfontfamily\FAF[Path=\@fontdir]{FontAwesome}
165 % Set font for header (default is Roboto)
166 \newfontfamily\headerfont[
168 UprightFont=*-Regular,
171 BoldItalicFont=*-BoldItalic,
174 \newfontfamily\headerfontlight[
177 ItalicFont=*-ThinItalic,
179 BoldItalicFont=*-MediumItalic,
182 \newcommand*{\footerfont}{\sourcesanspro}
183 \newcommand*{\bodyfont}{\sourcesanspro}
184 \newcommand*{\bodyfontlight}{\sourcesansprolight}
186 %-------------------------------------------------------------------------------
187 % Configuration for styles
188 %-------------------------------------------------------------------------------
189 % Configure styles for each CV elements
190 % For fundamental structures
191 \newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfontlight\color{graytext} #1}}
192 \newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}}
193 \newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}}
194 \newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}}
195 \newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}}
196 \newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}}
197 \newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
198 \newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
199 \newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
200 \newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}}
202 % For elements of entry
203 \newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
204 \newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}}
205 \newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
206 \newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
207 \newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}}
209 % For elements of subentry
210 \newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}}
211 \newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}}
212 \newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
213 \newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
214 \newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}}
216 % For elements of honor
217 \newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
218 \newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
219 \newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
220 \newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
222 % For elements of skill
223 \newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
224 \newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
226 % For elements of the cover letter
227 \newcommand*{\lettersectionstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
228 \newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}}
229 \newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
230 \newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}}
231 \newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
232 \newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}}
233 \newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
234 \newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}}
237 %-------------------------------------------------------------------------------
238 % Commands for personal information
239 %-------------------------------------------------------------------------------
241 % Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>}
242 \newcommand{\photo}[2][circle,edge,left]{%
245 \ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}%
246 {\let\@photoshape\tmp}{}%
247 \ifthenelse{\equal{\tmp}{edge} \or \equal{\tmp}{noedge}}%
248 {\let\@photoedge\tmp}{}%
249 \ifthenelse{\equal{\tmp}{left} \or \equal{\tmp}{right}}%
250 {\let\@photoalign\tmp}{}%
253 \def\@photoshape{circle}
254 \def\@photoedge{edge}
255 \def\@photoalign{left}
257 % Define writer's name
258 % Usage: \name{<firstname>}{<lastname>}
259 % Usage: \firstname{<firstname>}
260 % Usage: \lastname{<lastname>}
261 % Usage: \familyname{<familyname>}
262 \newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
263 \newcommand*{\firstname}[1]{\def\@firstname{#1}}
264 \newcommand*{\lastname}[1]{\def\@lastname{#1}}
265 \newcommand*{\familyname}[1]{\def\@lastname{#1}}
266 \def\@familyname{\@lastname}
268 % Define writer's address
269 % Usage: \address{<address>}
270 \newcommand*{\address}[1]{\def\@address{#1}}
272 % Define writer's position
273 % Usage: \name{<position>}
274 \newcommand*{\position}[1]{\def\@position{#1}}
276 % Defines writer's mobile (optional)
277 % Usage: \mobile{<mobile number>}
278 \newcommand*{\mobile}[1]{\def\@mobile{#1}}
280 % Defines writer's email (optional)
281 % Usage: \email{<email adress>}
282 \newcommand*{\email}[1]{\def\@email{#1}}
284 % Defines writer's homepage (optional)
285 % Usage: \homepage{<url>}
286 \newcommand*{\homepage}[1]{\def\@homepage{#1}}
288 % Defines writer's github (optional)
289 % Usage: \github{<github-nick>}
290 \newcommand*{\github}[1]{\def\@github{#1}}
292 % Defines writer's gitlab (optional)
293 % Usage: \gitlab{<gitlab-nick>}
294 \newcommand*{\gitlab}[1]{\def\@gitlab{#1}}
296 % Defines writer's stackoverflow profile (optional)
297 % Usage: \stackoverflow{<so userid>}{<so username>}
298 % e.g.https://stackoverflow.com/users/123456/sam-smith
299 % would be \stackoverflow{123456}{sam-smith}
300 \newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}}
302 % Defines writer's linked-in (optional)
303 % Usage: \linkedin{<linked-in-nick>}
304 \newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
306 % Usage: \twitter{<twitter handle>}
307 \newcommand*{\twitter}[1]{\def\@twitter{#1}}
309 % Defines writer's skype (optional)
310 % Usage: \skype{<skype account>}
311 \newcommand*{\skype}[1]{\def\@skype{#1}}
313 % Defines writer's reddit (optional)
314 % Usage: \reddit{<reddit account>}
315 \newcommand*{\reddit}[1]{\def\@reddit{#1}}
317 % Defines writer's xing (optional)
318 % Usage: \xing{<xing name>}
319 \newcommand*{\xing}[1]{\def\@xing{#1}}
321 % Defines writer's twitter (optional)
322 % Defines writer's extra informations (optional)
323 % Usage: \extrainfo{<extra informations>}
324 \newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
326 % Defines writer's quote (optional)
327 % Usage: \quote{<quote>}
328 \renewcommand*{\quote}[1]{\def\@quote{#1}}
330 % Defines recipient's information (cover letter only)
331 % Usage: \recipient{<recipient name>}{<recipient address>}
332 % Usage: \recipientname{<recipient name>}
333 % Usage: \recipientaddress{<recipient address>}
334 \newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
335 \newcommand*{\recipientname}[1]{\def\@recipientname{#1}}
336 \newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}}
338 % Defines the title for letter (cover letter only, optional)
339 % Usage: \lettertitle{<title>}
340 \newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}}
342 % Defines the date for letter (cover letter only)
343 % Usage: \letterdate{<date>}
344 \newcommand*{\letterdate}[1]{\def\@letterdate{#1}}
346 % Defines a message of opening for letter (cover letter only)
347 % Usage: \letteropening{<message>}
348 \newcommand*{\letteropening}[1]{\def\@letteropening{#1}}
350 % Defines a message of closing for letter (cover letter only)
351 % Usage: \letterclosing{<message>}
352 \newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}}
354 % Defines an enclosure for letter (cover letter only, optional)
355 % Usage: \letterenclosure[<enclosure name>]{<enclosure>}
356 \newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}}
357 \newcommand*{\letterenclosure}[2][]{%
358 % if an optional argument is provided, use it to redefine \enclname
359 \ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}}
360 \def\@letterenclosure{#2}
364 %-------------------------------------------------------------------------------
366 %-------------------------------------------------------------------------------
367 %% Define helper macros a user can change easily
369 \newcommand{\acvHeaderNameDelim}{\space}
370 \newcommand{\acvHeaderAfterNameSkip}{.4mm}
371 \newcommand{\acvHeaderAfterPositionSkip}{.4mm}
372 \newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
373 \newcommand{\acvHeaderIconSep}{\space}
374 \newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
375 \newcommand{\acvHeaderAfterSocialSkip}{6mm}
376 \newcommand{\acvHeaderAfterQuoteSkip}{5mm}
379 \newcommand{\acvSectionTopSkip}{3mm}
380 \newcommand{\acvSectionContentTopSkip}{2.5mm}
383 %-------------------------------------------------------------------------------
384 % Commands for utilities
385 %-------------------------------------------------------------------------------
386 % Use to align an element of tabular table
387 \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
388 \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
389 \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
391 % Use to draw horizontal line with specific thickness
392 \def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}
394 % Use to execute conditional statements by checking empty string
395 \newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}}
398 %-------------------------------------------------------------------------------
399 % Commands for elements of CV structure
400 %-------------------------------------------------------------------------------
401 % Define a header for CV
402 % Usage: \makecvheader
403 \newcommand*{\makecvheader}[1][C]{%
404 \newcommand*{\drawphoto}{%
405 \ifthenelse{\isundefined{\@photo}}{}{%
406 \newlength{\photodim}
407 \ifthenelse{\equal{\@photoshape}{circle}}%
408 {\setlength{\photodim}{1.3cm}}%
409 {\setlength{\photodim}{1.8cm}}%
410 \ifthenelse{\equal{\@photoedge}{edge}}%
411 {\def\@photoborder{darkgray}}%
412 {\def\@photoborder{none}}%
414 \node[\@photoshape, draw=\@photoborder, line width=0.3mm, inner sep=\photodim, fill overzoom image=\@photo] () {};
418 \newlength{\headertextwidth}
419 \newlength{\headerphotowidth}
420 \ifthenelse{\isundefined{\@photo}}{
421 \setlength{\headertextwidth}{\textwidth}
422 \setlength{\headerphotowidth}{0cm}
424 \setlength{\headertextwidth}{0.76\textwidth}
425 \setlength{\headerphotowidth}{0.24\textwidth}
427 \begin{minipage}[c]{\headerphotowidth}%
428 \ifthenelse{\equal{\@photoalign}{left}}{\raggedright\drawphoto}{}
430 \begin{minipage}[c]{\headertextwidth}
431 \ifthenelse{\equal{#1}{L}}{\raggedright}{\ifthenelse{\equal{#1}{R}}{\raggedleft}{\centering}}
432 \headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}%
433 \\[\acvHeaderAfterNameSkip]%
434 \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}%
435 \ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\[\acvHeaderAfterAddressSkip]}}%
438 \setbool{isstart}{true}%
439 \ifthenelse{\isundefined{\@mobile}}%
442 \faMobile\acvHeaderIconSep\@mobile%
443 \setbool{isstart}{false}%
445 \ifthenelse{\isundefined{\@email}}%
448 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
449 \href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}%
451 \ifthenelse{\isundefined{\@homepage}}%
454 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
455 \href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}%
457 \ifthenelse{\isundefined{\@github}}%
460 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
461 \href{https://github.com/\@github}{\faGithubSquare\acvHeaderIconSep\@github}%
463 \ifthenelse{\isundefined{\@gitlab}}%
466 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
467 \href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}%
469 \ifthenelse{\isundefined{\@stackoverflowid}}%
472 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
473 \href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}%
475 \ifthenelse{\isundefined{\@linkedin}}%
478 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
479 \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\acvHeaderIconSep\@linkedin}%
481 \ifthenelse{\isundefined{\@twitter}}%
484 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
485 \href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}%
487 \ifthenelse{\isundefined{\@skype}}%
490 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
491 \faSkype\acvHeaderIconSep\@skype%
493 \ifthenelse{\isundefined{\@reddit}}%
496 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
497 \href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}%
499 \ifthenelse{\isundefined{\@xing}}%
502 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
503 \href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing}
505 \ifthenelse{\isundefined{\@extrainfo}}%
508 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}%
511 } \\[\acvHeaderAfterSocialSkip]%
512 \ifthenelse{\isundefined{\@quote}}%
514 {\headerquotestyle{\@quote\\}\vspace{\acvHeaderAfterQuoteSkip}}%
516 \begin{minipage}[c]{\headerphotowidth}%
517 \ifthenelse{\equal{\@photoalign}{right}}{\raggedleft\drawphoto}{}
521 % Define a footer for CV
522 % Usage: \makecvfooter{<left>}{<center>}{<right>}
523 \newcommand*{\makecvfooter}[3]{%
525 \fancyfoot[L]{\footerstyle{#1}}
526 \fancyfoot[C]{\footerstyle{#2}}
527 \fancyfoot[R]{\footerstyle{#3}}
530 % Define a section for CV
531 % Usage: \cvsection{<section-title>}
532 \newcommand{\cvsection}[1]{%
533 \vspace{\acvSectionTopSkip}
536 \color{gray}\vhrulefill{0.9pt}
539 % Define a subsection for CV
540 % Usage: \cvsubsection{<subsection-title>}
541 \newcommand{\cvsubsection}[1]{%
542 \vspace{\acvSectionContentTopSkip}
548 % Define a paragraph for CV
549 \newenvironment{cvparagraph}{%
550 \vspace{\acvSectionContentTopSkip}
558 % Define an environment for cventry
559 \newenvironment{cventries}{%
560 \vspace{\acvSectionContentTopSkip}
565 % Define an entry of cv information
566 % Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>}
567 \newcommand*{\cventry}[5]{%
569 \setlength\tabcolsep{0pt}
570 \setlength{\extrarowheight}{0pt}
571 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
573 {\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
574 {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
575 \entrypositionstyle{#1} & \entrydatestyle{#4} \\}
576 \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}
580 % Define an environment for cvsubentry
581 \newenvironment{cvsubentries}{%
586 % Define a subentry of cv information
587 % Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>}
588 \newcommand*{\cvsubentry}[4]{%
589 \setlength\tabcolsep{0pt}
590 \setlength{\extrarowheight}{0pt}
591 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
592 \setlength\leftskip{0.2cm}
593 \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
594 {\subentrydatestyle{#3}}{}
595 \ifthenelse{\equal{#1}{}}
597 {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\}
598 \ifthenelse{\equal{#4}{}}
600 {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\}
604 % Define an environment for cvhonor
605 \newenvironment{cvhonors}{%
606 \vspace{\acvSectionContentTopSkip}
609 \setlength\tabcolsep{0pt}
610 \setlength{\extrarowheight}{0pt}
611 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}}
616 % Define a line of cv information(honor, award or something else)
617 % Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
618 \newcommand*{\cvhonor}[4]{%
619 \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\
622 % Define an environment for cvskill
623 \newenvironment{cvskills}{%
624 \vspace{\acvSectionContentTopSkip}
627 \setlength\tabcolsep{1ex}
628 \setlength{\extrarowheight}{0pt}
629 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}}
634 % Define a line of cv information(skill)
635 % Usage: \cvskill{<type>}{<skillset>}
636 \newcommand*{\cvskill}[2]{%
637 \skilltypestyle{#1} & \skillsetstyle{#2} \\
640 % Define an environment for cvitems(for cventry)
641 \newenvironment{cvitems}{%
644 \begin{itemize}[leftmargin=2ex, nosep, noitemsep]
645 \setlength{\parskip}{0pt}
646 \renewcommand{\labelitemi}{\bullet}
654 %-------------------------------------------------------------------------------
655 % Commands for elements of Cover Letter
656 %-------------------------------------------------------------------------------
657 % Define an environment for cvletter
658 \newenvironment{cvletter}{%
663 % Define a section for the cover letter
664 % Usage: \lettersection{<section-title>}
665 \newcommand{\lettersection}[1]{%
666 \par\addvspace{2.5ex}
668 \lettersectionstyle{#1}
669 \color{gray}\vhrulefill{0.9pt}
670 \par\nobreak\addvspace{0.4ex}
673 % Define a title of the cover letter
674 % Usage: \makelettertitle
675 \newcommand*{\makelettertitle}{%
677 \setlength\tabcolsep{0pt}
678 \setlength{\extrarowheight}{0pt}
679 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}}
680 \recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate}
683 \recipientaddressstyle{\@recipientaddress} \\\\
685 \ifthenelse{\isundefined{\@lettertitle}}
687 {\lettertitlestyle{\@lettertitle} \\}
688 \lettertextstyle{\@letteropening}
691 % Define a closing of the cover letter
692 % Usage: \makeletterclosing
693 \newcommand*{\makeletterclosing}{%
695 \lettertextstyle{\@letterclosing} \\\\
696 \letternamestyle{\@firstname\ \@lastname}
697 \ifthenelse{\isundefined{\@letterenclosure}}
701 \letterenclosurestyle{\@letterenclname: \@letterenclosure} \\