awesome-cv.cls (23600B)
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}[2017/02/05 v1.6.1 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 different underlining styles 50 \RequirePackage{tikz} 51 % Needed to make fixed length table 52 \RequirePackage{array} 53 % Needed to handle list environment 54 \RequirePackage{enumitem} 55 % Needed to handle text alignment 56 \RequirePackage{ragged2e} 57 % Needed to configure page layout 58 \RequirePackage{geometry} 59 % Needed to make header & footer effeciently 60 \RequirePackage{fancyhdr} 61 % Needed to manage colors 62 \RequirePackage{xcolor} 63 % Needed to use \ifxetex-\else-\fi statement 64 \RequirePackage{ifxetex} 65 % Needed to use \if-\then-\else statement 66 \RequirePackage{xifthen} 67 % Needed to use a toolbox of programming tools 68 \RequirePackage{etoolbox} 69 % Needed to change line spacing in specific environment 70 \RequirePackage{setspace} 71 % Needed to manage fonts 72 \RequirePackage[quiet]{fontspec} 73 % To support LaTeX quoting style 74 \defaultfontfeatures{Ligatures=TeX, Path = /usr/share/texmf-dist/fonts/opentype/public/fontawesome/} 75 % Needed to manage math fonts 76 \RequirePackage{unicode-math} 77 % Needed to use icons from font-awesome 78 % (https://github.com/posquit0/latex-fontawesome) 79 \RequirePackage{fontawesome} 80 \RequirePackage[default,opentype]{sourcesanspro} 81 % Needed for the photo ID 82 \RequirePackage[skins]{tcolorbox} 83 % Needed to deal a paragraphs 84 \RequirePackage{parskip} 85 % Needed to deal hyperlink 86 \RequirePackage[hidelinks,unicode]{hyperref} 87 \hypersetup{% 88 pdftitle={Matt Fehrenbach}, 89 pdfauthor={Matt Fehrenbach}, 90 pdfsubject={DevOps and Software Engineer}, 91 pdfkeywords={resume} 92 } 93 94 95 %------------------------------------------------------------------------------- 96 % Configuration for underline styles 97 %------------------------------------------------------------------------------- 98 \newcommand{\udot}[1]{% 99 \tikz[baseline=(todotted.base)]{ 100 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 101 \draw[dotted] (todotted.south west) -- (todotted.south east); 102 }% 103 }% 104 105 \newcommand{\udensdot}[1]{% 106 \tikz[baseline=(todotted.base)]{ 107 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 108 \draw[densely dotted] (todotted.south west) -- (todotted.south east); 109 }% 110 }% 111 112 \newcommand{\uloosdot}[1]{% 113 \tikz[baseline=(todotted.base)]{ 114 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 115 \draw[loosely dotted] (todotted.south west) -- (todotted.south east); 116 }% 117 }% 118 119 \newcommand{\udash}[1]{% 120 \tikz[baseline=(todotted.base)]{ 121 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 122 \draw[dashed] (todotted.south west) -- (todotted.south east); 123 }% 124 }% 125 126 \newcommand{\udensdash}[1]{% 127 \tikz[baseline=(todotted.base)]{ 128 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 129 \draw[densely dashed] (todotted.south west) -- (todotted.south east); 130 }% 131 }% 132 133 \newcommand{\uloosdash}[1]{% 134 \tikz[baseline=(todotted.base)]{ 135 \node[inner sep=1pt,outer sep=0pt] (todotted) {#1}; 136 \draw[loosely dashed] (todotted.south west) -- (todotted.south east); 137 }% 138 }% 139 140 141 %------------------------------------------------------------------------------- 142 % Configuration for directory locations 143 %------------------------------------------------------------------------------- 144 % Configure a directory location for fonts(default: 'fonts/') 145 \newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}} 146 \fontdir 147 148 149 %------------------------------------------------------------------------------- 150 % Configuration for layout 151 %------------------------------------------------------------------------------- 152 %% Page Layout 153 % Configure page margins with geometry 154 \geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm, includehead} 155 156 %% Header & Footer 157 % Set offset to each header and footer 158 \fancyhfoffset{0em} 159 % Remove head rule 160 \renewcommand{\headrulewidth}{0pt} 161 % Clear all header & footer fields 162 \fancyhf{} 163 % Enable if you want to make header or footer using fancyhdr 164 \pagestyle{fancy} 165 166 167 %------------------------------------------------------------------------------- 168 % Configuration for colors 169 %------------------------------------------------------------------------------- 170 % Gray-scale colors 171 \definecolor{white}{HTML}{FFFFFF} 172 \definecolor{black}{HTML}{000000} 173 \definecolor{darkgray}{HTML}{333333} 174 \definecolor{gray}{HTML}{5D5D5D} 175 \definecolor{lightgray}{HTML}{999999} 176 % Basic colors 177 \definecolor{green}{HTML}{C2E15F} 178 \definecolor{orange}{HTML}{FDA333} 179 \definecolor{purple}{HTML}{D3A4F9} 180 \definecolor{red}{HTML}{FB4485} 181 \definecolor{blue}{HTML}{6CE0F1} 182 % Text colors 183 \definecolor{darktext}{HTML}{414141} 184 \colorlet{text}{darkgray} 185 \colorlet{graytext}{gray} 186 \colorlet{lighttext}{lightgray} 187 % Awesome colors 188 \definecolor{awesome-emerald}{HTML}{00A388} 189 \definecolor{awesome-skyblue}{HTML}{0395DE} 190 \definecolor{awesome-red}{HTML}{DC3522} 191 \definecolor{awesome-pink}{HTML}{EF4089} 192 \definecolor{awesome-orange}{HTML}{FF6138} 193 \definecolor{awesome-nephritis}{HTML}{27AE60} 194 \definecolor{awesome-concrete}{HTML}{95A5A6} 195 \definecolor{awesome-darknight}{HTML}{131A28} 196 \colorlet{awesome}{awesome-red} 197 198 % Boolean value to switch section color highlighting 199 \newbool{acvSectionColorHighlight} 200 \setbool{acvSectionColorHighlight}{true} 201 202 % Awesome section color 203 \newcommand*{\sectioncolor}[1]{% 204 \ifbool{acvSectionColorHighlight}{{\color{awesome}#1}}{#1} 205 } 206 207 %------------------------------------------------------------------------------- 208 % Configuration for fonts 209 %------------------------------------------------------------------------------- 210 % Set the FontAwesome font to be up-to-date. 211 \let\FA\relax 212 \newfontfamily\FA[Path=\@fontdir]{FontAwesome} 213 % Set font for header (default is Roboto) 214 \newfontfamily\headerfont[ 215 Path=\@fontdir, 216 UprightFont=*-Regular, 217 ItalicFont=*-Italic, 218 BoldFont=*-Bold, 219 BoldItalicFont=*-BoldItalic, 220 ]{Roboto} 221 222 \newfontfamily\headerfontlight[ 223 Path=\@fontdir, 224 UprightFont=*-Thin, 225 ItalicFont=*-ThinItalic, 226 BoldFont=*-Medium, 227 BoldItalicFont=*-MediumItalic, 228 ]{Roboto} 229 230 \newcommand*{\footerfont}{\sourcesanspro} 231 \newcommand*{\bodyfont}{\sourcesanspro} 232 \newcommand*{\bodyfontlight}{\sourcesansprolight} 233 234 %------------------------------------------------------------------------------- 235 % Configuration for styles 236 %------------------------------------------------------------------------------- 237 % Configure styles for each CV elements 238 % For fundamental structures 239 \newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} 240 \newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} 241 \newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}} 242 \newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}} 243 \newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}} 244 \newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}} 245 \newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}} 246 \newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\sectioncolor{#1}}} 247 \newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}} 248 \newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}} 249 250 % For elements of entry 251 \newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 252 \newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}} 253 \newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 254 \newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 255 \newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}} 256 257 % For elements of subentry 258 \newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}} 259 \newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}} 260 \newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} 261 \newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 262 \newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}} 263 264 % For elements of honor 265 \newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 266 \newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 267 \newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} 268 \newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} 269 270 % For elements of skill 271 \newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} 272 \newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}} 273 274 275 %------------------------------------------------------------------------------- 276 % Commands for personal information 277 %------------------------------------------------------------------------------- 278 % Define photo ID 279 % Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>} 280 \newcommand{\photo}[2][circle,edge,left]{% 281 \def\@photo{#2} 282 \@for\tmp:=#1\do{% 283 \ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}% 284 {\let\@photoshape\tmp}{}% 285 \ifthenelse{\equal{\tmp}{edge} \or \equal{\tmp}{noedge}}% 286 {\let\@photoedge\tmp}{}% 287 \ifthenelse{\equal{\tmp}{left} \or \equal{\tmp}{right}}% 288 {\let\@photoalign\tmp}{}% 289 }% 290 } 291 \def\@photoshape{circle} 292 \def\@photoedge{edge} 293 \def\@photoalign{left} 294 295 % Define writer's name 296 % Usage: \name{<firstname>}{<lastname>} 297 % Usage: \firstname{<firstname>} 298 % Usage: \lastname{<lastname>} 299 % Usage: \familyname{<familyname>} 300 \newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}} 301 \newcommand*{\firstname}[1]{\def\@firstname{#1}} 302 \newcommand*{\lastname}[1]{\def\@lastname{#1}} 303 \newcommand*{\familyname}[1]{\def\@lastname{#1}} 304 \def\@familyname{\@lastname} 305 306 % Define writer's address 307 % Usage: \address{<address>} 308 \newcommand*{\address}[1]{\def\@address{#1}} 309 310 % Define writer's position 311 % Usage: \name{<position>} 312 \newcommand*{\position}[1]{\def\@position{#1}} 313 314 % Defines writer's mobile (optional) 315 % Usage: \mobile{<mobile number>} 316 \newcommand*{\mobile}[1]{\def\@mobile{#1}} 317 318 % Defines writer's email (optional) 319 % Usage: \email{<email adress>} 320 \newcommand*{\email}[1]{\def\@email{#1}} 321 322 % Defines writer's homepage (optional) 323 % Usage: \homepage{<url>} 324 \newcommand*{\homepage}[1]{\def\@homepage{#1}} 325 326 % Defines writer's github (optional) 327 % Usage: \github{<github-nick>} 328 \newcommand*{\github}[1]{\def\@github{#1}} 329 330 % Defines writer's gitlab (optional) 331 % Usage: \gitlab{<gitlab-nick>} 332 \newcommand*{\gitlab}[1]{\def\@gitlab{#1}} 333 334 % Defines writer's stackoverflow profile (optional) 335 % Usage: \stackoverflow{<so userid>}{<so username>} 336 % e.g.https://stackoverflow.com/users/123456/sam-smith 337 % would be \stackoverflow{123456}{sam-smith} 338 \newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}} 339 340 % Defines writer's linked-in (optional) 341 % Usage: \linkedin{<linked-in-nick>} 342 \newcommand*{\linkedin}[1]{\def\@linkedin{#1}} 343 344 % Usage: \twitter{<twitter handle>} 345 \newcommand*{\twitter}[1]{\def\@twitter{#1}} 346 347 % Defines writer's skype (optional) 348 % Usage: \skype{<skype account>} 349 \newcommand*{\skype}[1]{\def\@skype{#1}} 350 351 % Defines writer's reddit (optional) 352 % Usage: \reddit{<reddit account>} 353 \newcommand*{\reddit}[1]{\def\@reddit{#1}} 354 355 % Defines writer's xing (optional) 356 % Usage: \xing{<xing name>} 357 \newcommand*{\xing}[1]{\def\@xing{#1}} 358 359 % Defines writer's twitter (optional) 360 % Defines writer's extra informations (optional) 361 % Usage: \extrainfo{<extra informations>} 362 \newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}} 363 364 % Defines writer's quote (optional) 365 % Usage: \quote{<quote>} 366 \renewcommand*{\quote}[1]{\def\@quote{#1}} 367 368 369 %------------------------------------------------------------------------------- 370 % Commands for extra 371 %------------------------------------------------------------------------------- 372 %% Define helper macros a user can change easily 373 % Header 374 \newcommand{\acvHeaderNameDelim}{\space} 375 \newcommand{\acvHeaderAfterNameSkip}{.4mm} 376 \newcommand{\acvHeaderAfterPositionSkip}{.4mm} 377 \newcommand{\acvHeaderAfterAddressSkip}{-.5mm} 378 \newcommand{\acvHeaderIconSep}{\space} 379 \newcommand{\acvHeaderSocialSep}{\quad\textbar\quad} 380 \newcommand{\acvHeaderAfterSocialSkip}{6mm} 381 \newcommand{\acvHeaderAfterQuoteSkip}{5mm} 382 383 % Others 384 \newcommand{\acvSectionTopSkip}{3mm} 385 \newcommand{\acvSectionContentTopSkip}{2.5mm} 386 387 388 %------------------------------------------------------------------------------- 389 % Commands for utilities 390 %------------------------------------------------------------------------------- 391 % Use to align an element of tabular table 392 \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 393 \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 394 \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} 395 396 % Use to draw horizontal line with specific thickness 397 \def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@} 398 399 % Use to execute conditional statements by checking empty string 400 \newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}} 401 402 403 %------------------------------------------------------------------------------- 404 % Commands for elements of CV structure 405 %------------------------------------------------------------------------------- 406 % Define a header for CV 407 % Usage: \makecvheader 408 \newcommand*{\makecvheader}[1][C]{% 409 \newcommand*{\drawphoto}{% 410 \ifthenelse{\isundefined{\@photo}}{}{% 411 \newlength{\photodim} 412 \ifthenelse{\equal{\@photoshape}{circle}}% 413 {\setlength{\photodim}{1.3cm}}% 414 {\setlength{\photodim}{1.8cm}}% 415 \ifthenelse{\equal{\@photoedge}{edge}}% 416 {\def\@photoborder{darkgray}}% 417 {\def\@photoborder{none}}% 418 \begin{tikzpicture}% 419 \node[\@photoshape, draw=\@photoborder, line width=0.3mm, inner sep=\photodim, fill overzoom image=\@photo] () {}; 420 \end{tikzpicture} 421 }% 422 } 423 \newlength{\headertextwidth} 424 \newlength{\headerphotowidth} 425 \ifthenelse{\isundefined{\@photo}}{ 426 \setlength{\headertextwidth}{\textwidth} 427 \setlength{\headerphotowidth}{0cm} 428 }{% 429 \setlength{\headertextwidth}{0.76\textwidth} 430 \setlength{\headerphotowidth}{0.24\textwidth} 431 }% 432 \begin{minipage}[c]{\headerphotowidth}% 433 \ifthenelse{\equal{\@photoalign}{left}}{\raggedright\drawphoto}{} 434 \end{minipage} 435 \begin{minipage}[c]{\headertextwidth} 436 \ifthenelse{\equal{#1}{L}}{\raggedright}{\ifthenelse{\equal{#1}{R}}{\raggedleft}{\centering}} 437 \headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}% 438 \\[\acvHeaderAfterNameSkip]% 439 \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}% 440 \ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\[\acvHeaderAfterAddressSkip]}}% 441 \headersocialstyle{% 442 \newbool{isstart}% 443 \setbool{isstart}{true}% 444 \ifthenelse{\isundefined{\@mobile}}% 445 {}% 446 {% 447 %\faPhone\acvHeaderIconSep\@mobile% 448 \faMobile\acvHeaderIconSep\@mobile% 449 \setbool{isstart}{false}% 450 }% 451 \ifthenelse{\isundefined{\@email}}% 452 {}% 453 {% 454 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 455 \href{mailto:\@email}{\faEnvelopeO\acvHeaderIconSep\@email}% 456 }% 457 \ifthenelse{\isundefined{\@homepage}}% 458 {}% 459 {% 460 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 461 \href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}% 462 }% 463 \ifthenelse{\isundefined{\@github}}% 464 {}% 465 {% 466 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 467 \href{https://github.com/\@github}{\faGithub\acvHeaderIconSep\@github}% 468 }% 469 \ifthenelse{\isundefined{\@gitlab}}% 470 {}% 471 {% 472 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 473 \href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}% 474 }% 475 \ifthenelse{\isundefined{\@stackoverflowid}}% 476 {}% 477 {% 478 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 479 \href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}% 480 }% 481 \ifthenelse{\isundefined{\@linkedin}}% 482 {}% 483 {% 484 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 485 \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedin\acvHeaderIconSep\@linkedin}% 486 }% 487 \ifthenelse{\isundefined{\@twitter}}% 488 {}% 489 {% 490 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 491 \href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}% 492 }% 493 \ifthenelse{\isundefined{\@skype}}% 494 {}% 495 {% 496 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 497 \faSkype\acvHeaderIconSep\@skype% 498 }% 499 \ifthenelse{\isundefined{\@reddit}}% 500 {}% 501 {% 502 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 503 \href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}% 504 }% 505 \ifthenelse{\isundefined{\@xing}}% 506 {}% 507 {% 508 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 509 \href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing} 510 }% 511 \ifthenelse{\isundefined{\@extrainfo}}% 512 {}% 513 {% 514 \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% 515 \@extrainfo% 516 }% 517 } \\[\acvHeaderAfterSocialSkip]% 518 \ifthenelse{\isundefined{\@quote}}% 519 {}% 520 {\headerquotestyle{\@quote\\}\vspace{\acvHeaderAfterQuoteSkip}}% 521 \end{minipage}% 522 \begin{minipage}[c]{\headerphotowidth}% 523 \ifthenelse{\equal{\@photoalign}{right}}{\raggedleft\drawphoto}{} 524 \end{minipage} 525 } 526 527 % Define a footer for CV 528 % Usage: \makecvfooter{<left>}{<center>}{<right>} 529 \newcommand*{\makecvfooter}[3]{% 530 \fancyfoot{} 531 \fancyfoot[L]{\footerstyle{#1}} 532 \fancyfoot[C]{\footerstyle{#2}} 533 \fancyfoot[R]{\footerstyle{#3}} 534 } 535 536 % Define a section for CV 537 % Usage: \cvsection{<section-title>} 538 \newcommand{\cvsection}[1]{% 539 \vspace{\acvSectionTopSkip} 540 \sectionstyle{#1} 541 \phantomsection 542 \color{gray}\vhrulefill{0.9pt} 543 } 544 545 % Define a subsection for CV 546 % Usage: \cvsubsection{<subsection-title>} 547 \newcommand{\cvsubsection}[1]{% 548 \vspace{\acvSectionContentTopSkip} 549 \vspace{-3mm} 550 \subsectionstyle{#1} 551 \phantomsection 552 } 553 554 % Define a paragraph for CV 555 \newenvironment{cvparagraph}{% 556 \vspace{\acvSectionContentTopSkip} 557 \vspace{-3mm} 558 \paragraphstyle 559 }{% 560 \par 561 \vspace{2mm} 562 } 563 564 % Define an environment for cventry 565 \newenvironment{cventries}{% 566 \vspace{\acvSectionContentTopSkip} 567 \begin{center} 568 }{% 569 \end{center} 570 } 571 % Define an entry of cv information 572 % Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>} 573 \newcommand*{\cventry}[5]{% 574 \vspace{-2.0mm} 575 \setlength\tabcolsep{0pt} 576 \setlength{\extrarowheight}{0pt} 577 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} 578 \ifempty{#1#3#4} 579 {\entrytitlestyle{#2} \\ 580 \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}} 581 {\ifempty{#2#3} 582 {\entrypositionstyle{#1} & \entrydatestyle{#4} \\} 583 {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\ 584 \entrypositionstyle{#1} & \entrydatestyle{#4} \\} 585 \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}} 586 \end{tabular*}% 587 } 588 589 % Define an environment for cvsubentry 590 \newenvironment{cvsubentries}{% 591 \begin{center} 592 }{% 593 \end{center} 594 } 595 % Define a subentry of cv information 596 % Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>} 597 \newcommand*{\cvsubentry}[4]{% 598 \setlength\tabcolsep{0pt} 599 \setlength{\extrarowheight}{0pt} 600 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} 601 \setlength\leftskip{0.2cm} 602 \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}} 603 {\subentrydatestyle{#3}}{} 604 \ifthenelse{\equal{#1}{}} 605 {} 606 {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\} 607 \ifthenelse{\equal{#4}{}} 608 {} 609 {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\} 610 \end{tabular*} 611 } 612 613 % Define an environment for cvhonor 614 \newenvironment{cvhonors}{% 615 \vspace{\acvSectionContentTopSkip} 616 \vspace{-2mm} 617 \begin{center} 618 \setlength\tabcolsep{0pt} 619 \setlength{\extrarowheight}{0pt} 620 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}} 621 }{% 622 \end{tabular*} 623 \end{center} 624 } 625 % Define a line of cv information(honor, award or something else) 626 % Usage: \cvhonor{<position>}{<title>}{<location>}{<date>} 627 \newcommand*{\cvhonor}[4]{% 628 \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\ 629 } 630 631 % Define an environment for cvskill 632 \newenvironment{cvskills}{% 633 \vspace{\acvSectionContentTopSkip} 634 \vspace{-2.0mm} 635 \begin{center} 636 \setlength\tabcolsep{1ex} 637 \setlength{\extrarowheight}{0pt} 638 \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}} 639 }{% 640 \end{tabular*} 641 \end{center} 642 } 643 % Define a line of cv information(skill) 644 % Usage: \cvskill{<type>}{<skillset>} 645 \newcommand*{\cvskill}[2]{% 646 \skilltypestyle{#1} & \skillsetstyle{#2} \\ 647 } 648 649 % Define an environment for cvitems(for cventry) 650 \newenvironment{cvitems}{% 651 \vspace{-4.0mm} 652 \begin{justify} 653 \begin{itemize}[leftmargin=2ex, nosep, noitemsep] 654 \setlength{\parskip}{0pt} 655 \renewcommand{\labelitemi}{\bullet} 656 }{% 657 \end{itemize} 658 \end{justify} 659 \vspace{-4.0mm} 660 }