all repos — resume @ 031ec1db878a3f814130d1119645d814a685317c

my résumé

awesome-cv.cls (view raw)

  1%% Start of file `awesome-cv.cls'.
  2% Awesome CV Class File
  3%
  4% This class has been downloaded from:
  5% https://github.com/posquit0/Awesome-CV
  6%
  7% Author:
  8% Claud D. Park <posquit0.bj@gmail.com>
  9% http://www.posquit0.com
 10%
 11% Notes:
 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.
 15%
 16% Class license:
 17% LPPL v1.3c (http://www.latex-project.org/lppl)
 18%
 19
 20
 21%-------------------------------------------------------------------------------
 22%                Identification
 23%-------------------------------------------------------------------------------
 24\ProvidesClass{awesome-cv}[2015/12/14 v1.3 Awesome Curriculum Vitae Class]
 25\NeedsTeXFormat{LaTeX2e}
 26
 27
 28%-------------------------------------------------------------------------------
 29%                Class options
 30%
 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
 39\DeclareOption*{
 40  \PassOptionsToClass{\CurrentOption}{article}
 41}
 42\ProcessOptions\relax
 43\LoadClass{article}
 44
 45
 46%-------------------------------------------------------------------------------
 47%                3rd party packages
 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\ifxetex
 71  \RequirePackage[quiet]{fontspec}
 72  % To support LaTeX quoting style
 73  \defaultfontfeatures{Ligatures=TeX}
 74\else
 75  \RequirePackage[T1]{fontenc}
 76  % Replace by the encoding you are using
 77  \RequirePackage[utf8]{inputenc}
 78\fi
 79% Needed to manage math fonts
 80\RequirePackage{unicode-math}
 81% Needed to use icons from font-awesome
 82% (https://github.com/posquit0/latex-fontawesome)
 83\RequirePackage{fontawesome}
 84% Needed to deal a paragraphs
 85\RequirePackage{parskip}
 86% Needed to deal hyperlink
 87\RequirePackage{hyperref}
 88\hypersetup{
 89  pdftitle={},
 90  pdfauthor={},
 91  pdfsubject={},
 92  pdfkeywords={},
 93  colorlinks=false,
 94  allbordercolors=white
 95}
 96
 97
 98%-------------------------------------------------------------------------------
 99%                Configuration for directory locations
100%-------------------------------------------------------------------------------
101% Configure a directory location for fonts(default: 'fonts/')
102\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}}
103\fontdir
104
105
106%-------------------------------------------------------------------------------
107%                Configuration for layout
108%-------------------------------------------------------------------------------
109%% Page Layout
110% Configure page margins with geometry
111\geometry{left=0.6cm, top=0.6cm, right=0.6cm, bottom=0.6cm}
112
113%% Header & Footer
114% Set offset to each header and offset
115\fancyhfoffset{0em}
116% Remove head rule
117\renewcommand{\headrulewidth}{0pt}
118% Clear all header & footer fields
119\fancyhf{}
120% Enable if you want to make header or footer using fancyhdr
121\pagestyle{fancy}
122
123
124%-------------------------------------------------------------------------------
125%                Configuration for colors
126%-------------------------------------------------------------------------------
127% Gray-scale colors
128\definecolor{white}{HTML}{FFFFFF}
129\definecolor{black}{HTML}{000000}
130\definecolor{darkgray}{HTML}{333333}
131\definecolor{gray}{HTML}{5D5D5D}
132\definecolor{lightgray}{HTML}{999999}
133% Basic colors
134\definecolor{green}{HTML}{C2E15F}
135\definecolor{orange}{HTML}{FDA333}
136\definecolor{purple}{HTML}{D3A4F9}
137\definecolor{red}{HTML}{FB4485}
138\definecolor{blue}{HTML}{6CE0F1}
139% Text colors
140\definecolor{darktext}{HTML}{414141}
141\colorlet{text}{darkgray}
142\colorlet{graytext}{gray}
143\colorlet{lighttext}{lightgray}
144% Awesome colors
145\definecolor{awesome-emerald}{HTML}{00A388}
146\definecolor{awesome-skyblue}{HTML}{0395DE}
147\definecolor{awesome-red}{HTML}{000000}
148\definecolor{awesome-pink}{HTML}{EF4089}
149\definecolor{awesome-orange}{HTML}{FF6138}
150\definecolor{awesome-nephritis}{HTML}{27AE60}
151\definecolor{awesome-concrete}{HTML}{95A5A6}
152\definecolor{awesome-darknight}{HTML}{131A28}
153\colorlet{awesome}{awesome-red}
154
155% Awesome section color
156\newcounter{colorCounter}
157\def\@sectioncolor#1#2#3{%
158  {%
159    \color{%
160      \ifcase\value{colorCounter}%
161        awesome\or%
162        awesome\or%
163        awesome\or%
164        awesome\or%
165        awesome\else%
166        awesome\fi%
167    } #1#2#3%
168  }%
169  \stepcounter{colorCounter}%
170}
171
172
173%-------------------------------------------------------------------------------
174%                Configuration for fonts
175%-------------------------------------------------------------------------------
176% Set font for header (default is Roboto)
177\newfontfamily\headerfont[
178  Path=\@fontdir,
179  UprightFont=*-Regular,
180  ItalicFont=*-MediumItalic,
181  BoldFont=*-Bold,
182  BoldItalicFont=*-BoldItalic,
183]{FiraSans}
184
185\newfontfamily\headerfontlight[
186  Path=\@fontdir,
187  UprightFont=*-Light,
188  ItalicFont=*-LightItalic,
189  BoldFont=*-Medium,
190  BoldItalicFont=*-MediumItalic,
191]{FiraSans}
192
193% Set font for footer (default is Source Sans Pro)
194\newfontfamily\footerfont[
195  Path=\@fontdir,
196  UprightFont=*-Regular,
197  ItalicFont=*-LightItalic,
198  BoldFont=*-Bold
199]{FiraSans}
200
201% Set font for body (default is Source Sans Pro)
202\newfontfamily\bodyfont[
203  Path=\@fontdir,
204  UprightFont=*-Regular,
205  ItalicFont=*-LightItalic,
206  BoldFont=*-Bold,
207  BoldItalicFont=*-BoldItalic
208]{FiraSans}
209
210\newfontfamily\bodyfontlight[
211  Path=\@fontdir,
212  UprightFont=*-Light,
213  ItalicFont=*-LightItalic,
214  BoldFont=*-SemiBold,
215  BoldItalicFont=*-SemiBoldItalic
216]{FiraSans}
217
218
219%-------------------------------------------------------------------------------
220%                Configuration for styles
221%-------------------------------------------------------------------------------
222% Configure styles for each CV elements
223% For fundamental structures
224\newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfontlight\color{graytext} #1}}
225\newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}}
226\newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}}
227\newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}}
228\newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}}
229\newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}}
230\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}}
231\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
232\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}}
233
234% For elements of entry
235\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
236\newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}}
237\newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
238\newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
239\newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}}
240\newcommand*{\skill}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} \textnormal{#1}}}
241
242% For elements of subentry
243\newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}}
244\newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}}
245\newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
246\newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
247\newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}}
248
249% For elements of honor
250\newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
251\newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
252\newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}}
253\newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}}
254
255% For elements of skill
256\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
257\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}}
258
259% For elements of the cover letter
260\newcommand*{\paragraphstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}}
261\newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}}
262\newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
263\newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}}
264\newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}}
265\newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}}
266\newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}}
267\newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}}
268
269
270%-------------------------------------------------------------------------------
271%                Commands for personal information
272%-------------------------------------------------------------------------------
273% Define writer's name
274% Usage: \name{<firstname>}{<lastname>}
275% Usage: \firstname{<firstname>}
276% Usage: \lastname{<lastname>}
277% Usage: \familyname{<familyname>}
278\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
279\newcommand*{\firstname}[1]{\def\@firstname{#1}}
280\newcommand*{\lastname}[1]{\def\@lastname{#1}}
281\newcommand*{\familyname}[1]{\def\@lastname{#1}}
282\def\@familyname{\@lastname}
283
284% Define writer's address
285% Usage: \address{<address>}
286\newcommand*{\address}[1]{\def\@address{#1}}
287
288% Define writer's position
289% Usage: \name{<position>}
290\newcommand*{\position}[1]{\def\@position{#1}}
291
292% Defines writer's mobile (optional)
293% Usage: \mobile{<mobile number>}
294\newcommand*{\mobile}[1]{\def\@mobile{#1}}
295
296% Defines writer's email (optional)
297% Usage: \email{<email adress>}
298\newcommand*{\email}[1]{\def\@email{#1}}
299
300% Defines writer's link (optional)
301% Usage: \link{<url>}
302\newcommand*{\link}[1]{\def\@link{#1}}
303
304% Defines writer's github (optional)
305% Usage: \github{<github-nick>}
306\newcommand*{\github}[1]{\def\@github{#1}}
307
308% Defines writer's github (optional)
309% Usage: \github{<github-nick>}
310\newcommand*{\location}[1]{\def\@location{#1}}
311
312% Defines writer's linked-in (optional)
313% Usage: \linkedin{<linked-in-nick>}
314\newcommand*{\linkedin}[1]{\def\@linkedin{#1}}
315
316% Defines writer's stackoverflow profile (optional)
317% Usage: \stackoverflow{<so userid>}{<so username>}
318%   e.g.https://stackoverflow.com/users/123456/sam-smith
319%       would be \stackoverflow{123456}{sam-smith}
320\newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}}
321
322% Defines writer's skype (optional)
323% Usage: \skype{<skype account>}
324\newcommand*{\skype}[1]{\def\@skype{#1}}
325
326% Defines writer's twitter (optional)
327% Usage: \twitter{<twitter handle>}
328\newcommand*{\twitter}[1]{\def\@twitter{#1}}
329
330% Defines writer's quote (optional)
331% Usage: \quote{<quote>}
332\renewcommand*{\quote}[1]{\def\@quote{#1}}
333
334% Defines recipient's information (cover letter only)
335% Usage: \recipient{<recipient name>}{<recipient address>}
336% Usage: \recipientname{<recipient name>}
337% Usage: \recipientaddress{<recipient address>}
338\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
339\newcommand*{\recipientname}[1]{\def\@recipientname{#1}}
340\newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}}
341
342% Defines the title for letter (cover letter only, optional)
343% Usage: \lettertitle{<title>}
344\newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}}
345
346% Defines the date for letter (cover letter only)
347% Usage: \letterdate{<date>}
348\newcommand*{\letterdate}[1]{\def\@letterdate{#1}}
349
350% Defines a message of opening for letter (cover letter only)
351% Usage: \letteropening{<message>}
352\newcommand*{\letteropening}[1]{\def\@letteropening{#1}}
353
354% Defines a message of closing for letter (cover letter only)
355% Usage: \letterclosing{<message>}
356\newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}}
357
358% Defines an enclosure for letter (cover letter only, optional)
359% Usage: \letterenclosure[<enclosure name>]{<enclosure>}
360\newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}}
361\newcommand*{\letterenclosure}[2][]{
362  % if an optional argument is provided, use it to redefine \enclname
363  \ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}}
364  \def\@letterenclosure{#2}
365}
366
367
368%-------------------------------------------------------------------------------
369%                Commands for extra
370%-------------------------------------------------------------------------------
371% Define separator for social informations in header
372% Usage: \headersocialsep{<separator>}
373% Default: \quad\textbar\quad
374\newcommand*{\headersocialsep}[1][\quad\textbar\quad]{\def\@headersocialsep{#1}}
375\headersocialsep
376
377
378%-------------------------------------------------------------------------------
379%                Commands for utilities
380%-------------------------------------------------------------------------------
381% Use to align an element of tabular table
382\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
383\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
384\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
385
386% Use to draw horizontal line with specific tickness
387\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@}
388
389% Use to execute conditional statements by checking empty string
390\newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}}
391
392
393%-------------------------------------------------------------------------------
394%                Commands for elements of CV structure
395%-------------------------------------------------------------------------------
396% Define a header for CV
397% Usage: \makecvheader
398\newcommand*{\makecvheader}{
399  \begin{center}
400    \headerfirstnamestyle{
401      \@firstname
402    } \headerlastnamestyle{
403      \@lastname
404    }
405    \\
406    \vspace{0.4mm}
407    \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\}}
408    \vspace{0.4mm}
409    \ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\}}
410    \vspace{-0.5mm}
411    \headersocialstyle{
412      \newbool{isstart}
413      \setbool{isstart}{true}
414      \ifthenelse{\isundefined{\@mobile}}
415        {}
416        {
417          \faMobile\ \@mobile
418          \setbool{isstart}{false}
419        }
420      \ifthenelse{\isundefined{\@email}}
421        {}
422        {
423          \ifbool{isstart}
424            {
425              \setbool{isstart}{false}
426            }
427            {\@headersocialsep}
428          \href{mailto:\@email}{\faEnvelope\ \@email}
429        }
430      \ifthenelse{\isundefined{\@link}}
431        {}
432        {
433          \ifbool{isstart}
434            {
435              \setbool{isstart}{false}
436            }
437            {\@headersocialsep}
438          \href{http://\@link}{\faLink\ \@link}
439        }
440      \ifthenelse{\isundefined{\@github}}
441        {}
442        {
443          \ifbool{isstart}
444            {
445              \setbool{isstart}{false}
446            }
447            {\@headersocialsep}
448          \href{https://github.com/\@github}{\faGithubSquare\ \@github}
449        }
450      \ifthenelse{\isundefined{\@stackoverflowid}}
451        {}
452        {
453          \ifbool{isstart}
454            {
455              \setbool{isstart}{false}
456            }
457            {\@headersocialsep}
458          \href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\ \@stackoverflowname}
459        }
460      \ifthenelse{\isundefined{\@linkedin}}
461        {}
462        {
463          \ifbool{isstart}
464            {
465              \setbool{isstart}{false}
466            }
467            {\@headersocialsep}
468          \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\ \@linkedin}
469        }
470      \ifthenelse{\isundefined{\@location}}
471        {}
472        {
473          \ifbool{isstart}
474            {
475              \setbool{isstart}{false}
476            }
477            {\@headersocialsep}
478          {}{\faMapMarker\ \@location}
479        }
480      \ifthenelse{\isundefined{\@twitter}}
481        {}
482        {
483          \ifbool{isstart}
484            {
485              \setbool{isstart}{false}
486            }
487            {\@headersocialsep}
488          \href{https://twitter.com/\@twitter}{\faTwitter\ \@twitter}
489        }
490      \ifthenelse{\isundefined{\@skype}}
491        {}
492        {
493          \ifbool{isstart}
494            {
495              \setbool{isstart}{false}
496            }
497            {\@headersocialsep}
498          \faSkype\ \@skype
499        }
500    } \\
501    \ifthenelse{\isundefined{\@quote}}
502      {}
503      {\vspace{6.0mm}\headerquotestyle{\@quote\\}\vspace{5.0mm}}
504  \end{center}
505}
506
507% Define a footer for CV
508% Usage: \makecvfooter{<left>}{<center>}{<right>}
509\newcommand*{\makecvfooter}[3]{
510  \fancyfoot{}
511  \fancyfoot[L]{
512    \footerstyle{#1}
513  }
514  \fancyfoot[C]{
515    \footerstyle{#2}
516  }
517  \fancyfoot[R]{
518    \footerstyle{#3}
519  }
520}
521
522% Define a section for CV
523% Usage: \cvsection{<section-title>}
524\newcommand{\cvsection}[1]{
525  \par\addvspace{1.5ex}
526  \phantomsection{}
527  \sectionstyle{#1}
528  \color{gray}\vhrulefill{0.9pt}
529  \par\nobreak\addvspace{1ex}
530}
531
532% Define a subsection for CV
533% Usage: \cvsubsection{<subsection-title>}
534\newcommand{\cvsubsection}[1]{
535  \phantomsection{}
536  \subsectionstyle{#1}
537}
538
539% Define an environment for cventry
540\newenvironment{cventries}{
541  \begin{center}
542}{
543  \end{center}
544}
545% Define an entry of cv information
546% Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>}
547\newcommand*{\cventry}[5]{
548  \setlength\tabcolsep{0pt}
549  \setlength{\extrarowheight}{0pt}
550  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
551    \ifempty{#2#3}
552      {\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
553      {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
554      \entrypositionstyle{#1} & \entrydatestyle{#4} \\}
555    \multicolumn{2}{L{17cm}}{\descriptionstyle{#5}} \\
556  \end{tabular*}
557}
558
559% Define an environment for cvsubentry
560\newenvironment{cvsubentries}{
561  \begin{center}
562}{
563  \end{center}
564}
565% Define a subentry of cv information
566% Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>}
567\newcommand*{\cvsubentry}[4]{
568  \setlength\tabcolsep{0pt}
569  \setlength{\extrarowheight}{0pt}
570  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
571    \setlength\leftskip{0.2cm}
572    \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}}
573      {\subentrydatestyle{#3}}{}
574    \ifthenelse{\equal{#1}{}}
575      {}
576      {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\}
577    \ifthenelse{\equal{#4}{}}
578      {}
579      {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\}
580  \end{tabular*}
581}
582
583% Define an environment for cvhonor
584\newenvironment{cvhonors}{
585  \begin{center}
586    \setlength\tabcolsep{0pt}
587    \setlength{\extrarowheight}{0pt}
588    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{13.0cm} R{2.5cm}}
589}{
590    \end{tabular*}
591  \end{center}
592}
593% Define a line of cv information(honor, award or something else)
594% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>}
595\newcommand*{\cvhonor}[4]{
596  \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3}
597  \\
598}
599
600% Define an environment for cvskill
601\newenvironment{cvskills}{
602  \begin{center}
603    \setlength\tabcolsep{1ex}
604    \setlength{\extrarowheight}{0pt}
605    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{15.2cm}}
606}{
607    \end{tabular*}
608  \end{center}
609}
610% Define a line of cv information(skill)
611% Usage: \cvskill{<type>}{<skillset>}
612\newcommand*{\cvskill}[2]{
613	\skilltypestyle{#1} & \skillsetstyle{#2}
614  \\
615}
616
617% Define an environment for cvitems(for cventry)
618\newenvironment{cvitems}{
619  \vspace{-4mm}
620  \begin{justify}
621  \begin{itemize}[leftmargin=2ex, nosep, noitemsep]
622    \setlength{\parskip}{0pt}
623    \renewcommand{\labelitemi}{\bullet}
624}{
625  \end{itemize}
626  \end{justify}
627  \vspace{-2mm}
628}
629
630
631%-------------------------------------------------------------------------------
632%                Commands for elements of Cover Letter
633%-------------------------------------------------------------------------------
634% Define an environment for cvletter
635\newenvironment{cvletter}{
636  \lettertextstyle
637}{
638}
639
640% Define a paragraph for cvletter
641% Usage: \cvparagraph{<paragraph-title>}
642\newcommand{\cvparagraph}[1]{
643  \par\addvspace{2.5ex}
644  \phantomsection{}
645  \paragraphstyle{#1}
646  \color{gray}\vhrulefill{0.9pt}
647  \par\nobreak\addvspace{0.4ex}
648}
649
650% Define a title of the cover letter
651% Usage: \makelettertitle
652\newcommand*{\makelettertitle}{
653  \vspace{8.4mm}
654  \setlength\tabcolsep{0pt}
655  \setlength{\extrarowheight}{0pt}
656  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
657    \recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate}
658  \end{tabular*}
659  \begin{singlespace}
660    \recipientaddressstyle{\@recipientaddress} \\\\
661  \end{singlespace}
662  \ifthenelse{\isundefined{\@lettertitle}}
663    {}
664    {\lettertitlestyle{\@lettertitle} \\}
665  \lettertextstyle{\@letteropening}
666}
667
668% Define a closing of the cover letter
669% Usage: \makeletterclosing
670\newcommand*{\makeletterclosing}{
671  \vspace{3.4mm}
672  \lettertextstyle{\@letterclosing} \\\\
673  \letternamestyle{\@firstname \@lastname}
674  \ifthenelse{\isundefined{\@letterenclosure}}
675    {\\}
676    {
677      \\\\\\
678      \letterenclosurestyle{\@letterenclname:  \@letterenclosure} \\
679    }
680}