cv
Source code for my CV
awesome-cv.cls (20377B)
1 % Original template by Byungjin Park: https://github.com/posquit0/Awesome-CV/ 2 3 %------------------------------------------------------------------------------- 4 % Identification 5 %------------------------------------------------------------------------------- 6 \ProvidesClass{awesome-cv}[2017/02/05 v1.6.1 Awesome Curriculum Vitae Class] 7 \NeedsTeXFormat{LaTeX2e} 8 9 10 %------------------------------------------------------------------------------- 11 % Class options 12 % 13 % (need to be done before the external package loading, for example because 14 % we need \paperwidth, \paperheight and \@ptsize to be defined before loading 15 % geometry and fancyhdr) 16 %------------------------------------------------------------------------------- 17 % Options for draft or final 18 \DeclareOption{draft}{\setlength\overfullrule{5pt}} 19 \DeclareOption{final}{\setlength\overfullrule{0pt}} 20 % Inherit options of article 21 \DeclareOption*{% 22 \PassOptionsToClass{\CurrentOption}{article} 23 } 24 \ProcessOptions\relax 25 \LoadClass{article} 26 27 28 %------------------------------------------------------------------------------- 29 % 3rd party packages 30 %------------------------------------------------------------------------------- 31 % Needed to make fixed length table 32 \RequirePackage{array} 33 % Needed to handle list environment 34 \RequirePackage{enumitem} 35 % Needed to handle text alignment 36 \RequirePackage{ragged2e} 37 % Needed to configure page layout 38 \RequirePackage{geometry} 39 % Needed to make header & footer effeciently 40 \RequirePackage{fancyhdr} 41 % Needed to manage colors 42 \RequirePackage{xcolor} 43 % Needed to use \ifxetex-\else-\fi statement 44 \RequirePackage{ifxetex} 45 % Needed to use \if-\then-\else statement 46 \RequirePackage{xifthen} 47 % Needed to use a toolbox of programming tools 48 \RequirePackage{etoolbox} 49 % Needed to change line spacing in specific environment 50 \RequirePackage{setspace} 51 % Needed to manage fonts 52 \RequirePackage[quiet]{fontspec} 53 % To support LaTeX quoting style 54 \defaultfontfeatures{Ligatures=TeX} 55 % Needed to manage math fonts 56 \RequirePackage{unicode-math} 57 % Needed to use icons from font-awesome 58 % (https://github.com/posquit0/latex-fontawesome) 59 %\RequirePackage{fontawesome} 60 \RequirePackage{FiraMono} 61 % Needed for the photo ID 62 \RequirePackage[skins]{tcolorbox} 63 % Needed to deal a paragraphs 64 \RequirePackage{parskip} 65 % Needed to deal hyperlink 66 \RequirePackage[hidelinks,unicode]{hyperref} 67 \hypersetup{% 68 pdftitle={}, 69 pdfauthor={}, 70 pdfsubject={}, 71 pdfkeywords={} 72 } 73 \RequirePackage{xurl} 74 75 76 %------------------------------------------------------------------------------- 77 % Configuration for layout 78 %------------------------------------------------------------------------------- 79 %% Page Layout 80 % Configure page margins with geometry 81 \geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm} 82 83 %% Header & Footer 84 % Set offset to each header and footer 85 \fancyhfoffset{0em} 86 % Remove head rule 87 \renewcommand{\headrulewidth}{0pt} 88 % Clear all header & footer fields 89 \fancyhf{} 90 % Enable if you want to make header or footer using fancyhdr 91 \pagestyle{fancy} 92 93 94 %------------------------------------------------------------------------------- 95 % Configuration for colors 96 %------------------------------------------------------------------------------- 97 % Gray-scale colors 98 \definecolor{white}{HTML}{FFFFFF} 99 \definecolor{black}{HTML}{000000} 100 \definecolor{darkgray}{HTML}{333333} 101 \definecolor{gray}{HTML}{5D5D5D} 102 \definecolor{lightgray}{HTML}{999999} 103 % Basic colors 104 \definecolor{green}{HTML}{C2E15F} 105 \definecolor{orange}{HTML}{FDA333} 106 \definecolor{purple}{HTML}{D3A4F9} 107 \definecolor{red}{HTML}{FB4485} 108 \definecolor{blue}{HTML}{6CE0F1} 109 % Text colors 110 \definecolor{darktext}{HTML}{414141} 111 \colorlet{text}{darkgray} 112 \colorlet{graytext}{gray} 113 \colorlet{lighttext}{lightgray} 114 % Awesome colors 115 \definecolor{awesome-emerald}{HTML}{00A388} 116 \definecolor{awesome-skyblue}{HTML}{0395DE} 117 \definecolor{awesome-red}{HTML}{DC3522} 118 \definecolor{awesome-pink}{HTML}{EF4089} 119 \definecolor{awesome-orange}{HTML}{FF6138} 120 \definecolor{awesome-nephritis}{HTML}{27AE60} 121 \definecolor{awesome-concrete}{HTML}{95A5A6} 122 \definecolor{awesome-darknight}{HTML}{131A28} 123 \colorlet{awesome}{awesome-red} 124 125 % Boolean value to switch section color highlighting 126 \newbool{acvSectionColorHighlight} 127 \setbool{acvSectionColorHighlight}{true} 128 129 % Awesome section color 130 \def\@sectioncolor#1#2#3{% 131 \ifbool{acvSectionColorHighlight}{{\color{awesome}#1#2#3}}{#1#2#3}% 132 } 133 134 135 %------------------------------------------------------------------------------- 136 % Configuration for fonts 137 %------------------------------------------------------------------------------- 138 139 \newfontfamily\firasans[Ligatures = TeX]{Fira Sans} 140 \newfontfamily\firasanslight[Ligatures = TeX]{Fira Sans Light} 141 142 \setmathfont{Fira Math} 143 144 \newcommand*{\headerfont}{\firasans} 145 \newcommand*{\headerfontlight}{\firasanslight} 146 \newcommand*{\footerfont}{\firasans} 147 \newcommand*{\bodyfont}{\firasans} 148 \newcommand*{\bodyfontlight}{\firasanslight} 149 150 %------------------------------------------------------------------------------- 151 % Configuration for styles 152 %------------------------------------------------------------------------------- 153 % Configure styles for each CV elements 154 % For fundamental structures 155 \newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfontlight\color{graytext} #1}} 156 \newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} 157 \newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}} 158 \newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}} 159 \newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}} 160 \newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}} 161 \newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}} 162 \newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}} 163 \newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}} 164 \newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}} 165 166 % For elements of entry 167 \newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 168 \newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}} 169 \newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 170 \newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 171 \newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}} 172 173 % For elements of subentry 174 \newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}} 175 \newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}} 176 \newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 177 \newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 178 \newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}} 179 180 % For elements of honor 181 \newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 182 \newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 183 \newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 184 \newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 185 186 % For elements of skill 187 \newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 188 \newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}} 189 190 % For elements of the cover letter 191 \newcommand*{\lettersectionstyle}[1]{{\fontsize{14pt}{1em}\bodyfont\bfseries\color{text}\@sectioncolor #1}} 192 \newcommand*{\recipientaddressstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\scshape\color{graytext} #1}} 193 \newcommand*{\recipienttitlestyle}[1]{{\fontsize{11pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 194 \newcommand*{\lettertitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\bfseries\color{darktext} \underline{#1}}} 195 \newcommand*{\letterdatestyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 196 \newcommand*{\lettertextstyle}{\fontsize{10pt}{1.4em}\bodyfontlight\upshape\color{graytext}} 197 \newcommand*{\letternamestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 198 \newcommand*{\letterenclosurestyle}[1]{{\fontsize{10pt}{1em}\bodyfontlight\slshape\color{lighttext} #1}} 199 200 201 %------------------------------------------------------------------------------- 202 % Commands for personal information 203 %------------------------------------------------------------------------------- 204 % Define photo ID 205 % Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>} 206 \newcommand{\photo}[2][circle,edge,left]{% 207 \def\@photo{#2} 208 \@for\tmp:=#1\do{% 209 \ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}% 210 {\let\@photoshape\tmp}{}% 211 \ifthenelse{\equal{\tmp}{edge} \or \equal{\tmp}{noedge}}% 212 {\let\@photoedge\tmp}{}% 213 \ifthenelse{\equal{\tmp}{left} \or \equal{\tmp}{right}}% 214 {\let\@photoalign\tmp}{}% 215 }% 216 } 217 \def\@photoshape{circle} 218 \def\@photoedge{edge} 219 \def\@photoalign{left} 220 221 % Define writer's name 222 % Usage: \name{<firstname>}{<lastname>} 223 % Usage: \firstname{<firstname>} 224 % Usage: \lastname{<lastname>} 225 % Usage: \familyname{<familyname>} 226 \newcommand*{\name}[2]{% 227 \def\@firstname{#1}\def\@lastname{#2}% 228 \hypersetup{pdftitle={#1 #2 -- Curriculum Vitae}, pdfauthor={#1 #2}}% 229 } 230 \def\@familyname{\@lastname} 231 232 % Define writer's position 233 % Usage: \name{<position>} 234 \newcommand*{\position}[1]{\def\@position{#1}} 235 236 % Defines writer's email (optional) 237 % Usage: \email{<email adress>} 238 \newcommand*{\email}[1]{\def\@email{#1}} 239 240 % Defines writer's homepage (optional) 241 % Usage: \homepage{<url>} 242 \newcommand*{\homepage}[1]{\def\@homepage{#1}} 243 244 % Defines recipient's information (cover letter only) 245 % Usage: \recipient{<recipient name>}{<recipient address>} 246 % Usage: \recipientname{<recipient name>} 247 % Usage: \recipientaddress{<recipient address>} 248 \newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}} 249 \newcommand*{\recipientname}[1]{\def\@recipientname{#1}} 250 \newcommand*{\recipientaddress}[1]{\def\@recipientaddress{#1}} 251 252 % Defines the title for letter (cover letter only, optional) 253 % Usage: \lettertitle{<title>} 254 \newcommand*{\lettertitle}[1]{\def\@lettertitle{#1}} 255 256 % Defines the date for letter (cover letter only) 257 % Usage: \letterdate{<date>} 258 \newcommand*{\letterdate}[1]{\def\@letterdate{#1}} 259 260 % Defines a message of opening for letter (cover letter only) 261 % Usage: \letteropening{<message>} 262 \newcommand*{\letteropening}[1]{\def\@letteropening{#1}} 263 264 % Defines a message of closing for letter (cover letter only) 265 % Usage: \letterclosing{<message>} 266 \newcommand*{\letterclosing}[1]{\def\@letterclosing{#1}} 267 268 % Defines an enclosure for letter (cover letter only, optional) 269 % Usage: \letterenclosure[<enclosure name>]{<enclosure>} 270 \newcommand*{\letterenclname}[1][Enclosure]{\def\@letterenclname{#1}} 271 \newcommand*{\letterenclosure}[2][]{% 272 % if an optional argument is provided, use it to redefine \enclname 273 \ifthenelse{\equal{#1}{}}{}{\def\@letterenclname{#1}} 274 \def\@letterenclosure{#2} 275 } 276 277 278 %------------------------------------------------------------------------------- 279 % Commands for extra 280 %------------------------------------------------------------------------------- 281 %% Define helper macros a user can change easily 282 % Header 283 \newcommand{\acvHeaderNameDelim}{\space} 284 \newcommand{\acvHeaderAfterNameSkip}{.4mm} 285 \newcommand{\acvHeaderAfterPositionSkip}{.4mm} 286 \newcommand{\acvHeaderAfterAddressSkip}{-.5mm} 287 \newcommand{\acvHeaderIconSep}{\space} 288 \newcommand{\acvHeaderSocialSep}{\quad\textbar\quad} 289 \newcommand{\acvHeaderAfterSocialSkip}{6mm} 290 \newcommand{\acvHeaderAfterQuoteSkip}{5mm} 291 292 % Others 293 \newcommand{\acvSectionTopSkip}{3mm} 294 \newcommand{\acvSectionContentTopSkip}{2.5mm} 295 296 297 %------------------------------------------------------------------------------- 298 % Commands for utilities 299 %------------------------------------------------------------------------------- 300 % Use to align an element of tabular table 301 \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 302 \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 303 \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 304 305 % Use to draw horizontal line with specific thickness 306 \def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@} 307 308 % Use to execute conditional statements by checking empty string 309 \newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}} 310 311 312 %------------------------------------------------------------------------------- 313 % Commands for elements of CV structure 314 %------------------------------------------------------------------------------- 315 % Define a header for CV 316 % Usage: \makecvheader 317 \newcommand*{\makecvheader}[1][C]{% 318 \newcommand*{\drawphoto}{% 319 \ifthenelse{\isundefined{\@photo}}{}{% 320 \newlength{\photodim} 321 \ifthenelse{\equal{\@photoshape}{circle}}% 322 {\setlength{\photodim}{1.3cm}}% 323 {\setlength{\photodim}{1.8cm}}% 324 \ifthenelse{\equal{\@photoedge}{edge}}% 325 {\def\@photoborder{darkgray}}% 326 {\def\@photoborder{none}}% 327 \begin{tikzpicture}% 328 \node[\@photoshape, draw=\@photoborder, line width=0.3mm, inner sep=\photodim, fill overzoom image=\@photo] () {}; 329 \end{tikzpicture} 330 }% 331 } 332 \newlength{\headertextwidth} 333 \newlength{\headerphotowidth} 334 \ifthenelse{\isundefined{\@photo}}{ 335 \setlength{\headertextwidth}{\textwidth} 336 \setlength{\headerphotowidth}{0cm} 337 }{% 338 \setlength{\headertextwidth}{0.76\textwidth} 339 \setlength{\headerphotowidth}{0.24\textwidth} 340 }% 341 \begin{minipage}[c]{\headerphotowidth}% 342 \ifthenelse{\equal{\@photoalign}{left}}{\raggedright\drawphoto}{} 343 \end{minipage} 344 \begin{minipage}[c]{\headertextwidth} 345 \ifthenelse{\equal{#1}{L}}{\raggedright}{\ifthenelse{\equal{#1}{R}}{\raggedleft}{\centering}} 346 \headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}% 347 \\[\acvHeaderAfterNameSkip]% 348 \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}% 349 \headersocialstyle{% 350 \newbool{isstart}% 351 \setbool{isstart}{true}% 352 \ifthenelse{\isundefined{\@email}}% 353 {}% 354 {% 355 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 356 \href{mailto:\@email}{\acvHeaderIconSep\@email}% 357 }% 358 \ifthenelse{\isundefined{\@homepage}}% 359 {}% 360 {% 361 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 362 \href{http://\@homepage}{\acvHeaderIconSep\@homepage}% 363 }% 364 } \\[\acvHeaderAfterSocialSkip]% 365 \end{minipage}% 366 \begin{minipage}[c]{\headerphotowidth}% 367 \ifthenelse{\equal{\@photoalign}{right}}{\raggedleft\drawphoto}{} 368 \end{minipage} 369 } 370 371 % Define a footer for CV 372 % Usage: \makecvfooter{<left>}{<center>}{<right>} 373 \newcommand*{\makecvfooter}[3]{% 374 \fancyfoot{} 375 \fancyfoot[L]{\footerstyle{#1}} 376 \fancyfoot[C]{\footerstyle{#2}} 377 \fancyfoot[R]{\footerstyle{#3}} 378 } 379 380 % Define a section for CV 381 % Usage: \cvsection{<section-title>} 382 \newcommand{\cvsection}[1]{% 383 \vspace{\acvSectionTopSkip} 384 \sectionstyle{#1} 385 \phantomsection 386 \color{gray}\vhrulefill{0.9pt} 387 } 388 389 % Define a subsection for CV 390 % Usage: \cvsubsection{<subsection-title>} 391 \newcommand{\cvsubsection}[1]{% 392 \vspace{\acvSectionContentTopSkip} 393 \vspace{-3mm} 394 \subsectionstyle{#1} 395 \phantomsection 396 } 397 398 % Define a paragraph for CV 399 \newenvironment{cvparagraph}{% 400 \vspace{\acvSectionContentTopSkip} 401 \vspace{-3mm} 402 \paragraphstyle 403 }{% 404 \par 405 \vspace{2mm} 406 } 407 408 % Define an environment for cventry 409 \newenvironment{cventries}{% 410 \vspace{\acvSectionContentTopSkip} 411 \begin{center} 412 }{% 413 \end{center} 414 } 415 % Define an entry of cv information 416 % Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>} 417 \newcommand*{\cventry}[5]{% 418 \vspace{-2.0mm} 419 \setlength\tabcolsep{0pt} 420 \setlength{\extrarowheight}{0pt} 421 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} 422 \ifempty{#2#3} 423 {\entrypositionstyle{#1} & \entrydatestyle{#4} \\} 424 {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\ 425 \entrypositionstyle{#1} & \entrydatestyle{#4} \\} 426 \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}} 427 \end{tabular*}% 428 } 429 430 % Define an environment for cvsubentry 431 \newenvironment{cvsubentries}{% 432 \begin{center} 433 }{% 434 \end{center} 435 } 436 % Define a subentry of cv information 437 % Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>} 438 \newcommand*{\cvsubentry}[4]{% 439 \setlength\tabcolsep{0pt} 440 \setlength{\extrarowheight}{0pt} 441 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} 442 \setlength\leftskip{0.2cm} 443 \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}} 444 {\subentrydatestyle{#3}}{} 445 \ifthenelse{\equal{#1}{}} 446 {} 447 {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\} 448 \ifthenelse{\equal{#4}{}} 449 {} 450 {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\} 451 \end{tabular*} 452 } 453 454 % Define an environment for cvhonor 455 \newenvironment{cvhonors}{% 456 \vspace{\acvSectionContentTopSkip} 457 \vspace{-2mm} 458 \begin{center} 459 \setlength\tabcolsep{0pt} 460 \setlength{\extrarowheight}{0pt} 461 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}} 462 }{% 463 \end{tabular*} 464 \end{center} 465 } 466 % Define a line of cv information(honor, award or something else) 467 % Usage: \cvhonor{<position>}{<title>}{<location>}{<date>} 468 \newcommand*{\cvhonor}[4]{% 469 \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\ 470 } 471 472 % Define an environment for cvskill 473 \newenvironment{cvskills}{% 474 \vspace{\acvSectionContentTopSkip} 475 \vspace{-2.0mm} 476 \begin{center} 477 \setlength\tabcolsep{1ex} 478 \setlength{\extrarowheight}{0pt} 479 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}} 480 }{% 481 \end{tabular*} 482 \end{center} 483 } 484 % Define a line of cv information(skill) 485 % Usage: \cvskill{<type>}{<skillset>} 486 \newcommand*{\cvskill}[2]{% 487 \skilltypestyle{#1} & \skillsetstyle{#2} \\ 488 } 489 490 % Define an environment for cvitems(for cventry) 491 \newenvironment{cvitems}{% 492 \vspace{-4.0mm} 493 \begin{justify} 494 \begin{itemize}[leftmargin=2ex, nosep, noitemsep] 495 \setlength{\parskip}{0pt} 496 \renewcommand{\labelitemi}{\bullet} 497 }{% 498 \end{itemize} 499 \end{justify} 500 \vspace{-4.0mm} 501 } 502 503 504 %------------------------------------------------------------------------------- 505 % Commands for elements of Cover Letter 506 %------------------------------------------------------------------------------- 507 % Define an environment for cvletter 508 \newenvironment{cvletter}{% 509 \lettertextstyle 510 }{% 511 } 512 513 % Define a section for the cover letter 514 % Usage: \lettersection{<section-title>} 515 \newcommand{\lettersection}[1]{% 516 \par\addvspace{2.5ex} 517 \phantomsection{} 518 \lettersectionstyle{#1} 519 \color{gray}\vhrulefill{0.9pt} 520 \par\nobreak\addvspace{0.4ex} 521 } 522 523 % Define a title of the cover letter 524 % Usage: \makelettertitle 525 \newcommand*{\makelettertitle}{% 526 \vspace{8.4mm} 527 \setlength\tabcolsep{0pt} 528 \setlength{\extrarowheight}{0pt} 529 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} 530 \recipienttitlestyle{\@recipientname} & \letterdatestyle{\@letterdate} 531 \end{tabular*} 532 \begin{singlespace} 533 \recipientaddressstyle{\@recipientaddress} \\\\ 534 \end{singlespace} 535 \ifthenelse{\isundefined{\@lettertitle}} 536 {} 537 {\lettertitlestyle{\@lettertitle} \\} 538 \lettertextstyle{\@letteropening} 539 } 540 541 % Define a closing of the cover letter 542 % Usage: \makeletterclosing 543 \newcommand*{\makeletterclosing}{% 544 \vspace{3.4mm} 545 \lettertextstyle{\@letterclosing} \\\\ 546 \letternamestyle{\@firstname\ \@lastname} 547 \ifthenelse{\isundefined{\@letterenclosure}} 548 {\\} 549 {% 550 \\\\\\ 551 \letterenclosurestyle{\@letterenclname: \@letterenclosure} \\ 552 } 553 }