diff --git a/en/awesome-cv.cls b/en/awesome-cv.cls index 74b64ac..499a530 100644 --- a/en/awesome-cv.cls +++ b/en/awesome-cv.cls @@ -54,7 +54,7 @@ \RequirePackage{ragged2e} % Needed to configure page layout \RequirePackage{geometry} -% Needed to make header & footer effeciently +% Needed to make header & footer efficiently \RequirePackage{fancyhdr} % Needed to manage colors \RequirePackage{xcolor} @@ -62,6 +62,8 @@ \RequirePackage{ifxetex} % Needed to use \if-\then-\else statement \RequirePackage{xifthen} +% Needed to strip chars from telephone number +\RequirePackage{xstring} % Needed to use a toolbox of programming tools \RequirePackage{etoolbox} % Needed to change line spacing in specific environment @@ -73,30 +75,30 @@ % Needed to manage math fonts \RequirePackage{unicode-math} % Needed to use icons from font-awesome -% (https://github.com/posquit0/latex-fontawesome) -\RequirePackage{fontawesome} +\RequirePackage{fontawesome5} +\RequirePackage{roboto} \RequirePackage[default,opentype]{sourcesanspro} % Needed for the photo ID \RequirePackage[skins]{tcolorbox} % Needed to deal a paragraphs \RequirePackage{parskip} % Needed to deal hyperlink -\RequirePackage[hidelinks,unicode]{hyperref} +\RequirePackage[hidelinks,unicode,pdfpagelabels=false]{hyperref} \hypersetup{% pdftitle={}, pdfauthor={}, pdfsubject={}, pdfkeywords={} } - +% Solves issues Warning: File `cv.out' has changed +\RequirePackage{bookmark} %------------------------------------------------------------------------------- % Configuration for directory locations %------------------------------------------------------------------------------- -% Configure a directory location for fonts(default: 'fonts/') +% Configure an optional directory location for fonts(default: 'fonts/') +% Not required anymore but left in place for backward compatability. \newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}} -\fontdir - %------------------------------------------------------------------------------- % Configuration for layout @@ -136,6 +138,7 @@ \colorlet{text}{darkgray} \colorlet{graytext}{gray} \colorlet{lighttext}{lightgray} +\colorlet{sectiondivider}{gray} % Awesome colors \definecolor{awesome-emerald}{HTML}{00A388} \definecolor{awesome-skyblue}{HTML}{0395DE} @@ -160,24 +163,8 @@ %------------------------------------------------------------------------------- % Configuration for fonts %------------------------------------------------------------------------------- - -% Set font for header (default is Roboto) -\newfontfamily\headerfont[ - Path=\@fontdir, - UprightFont=*-Regular, - ItalicFont=*-Italic, - BoldFont=*-Bold, - BoldItalicFont=*-BoldItalic, -]{Roboto} - -\newfontfamily\headerfontlight[ - Path=\@fontdir, - UprightFont=*-Thin, - ItalicFont=*-ThinItalic, - BoldFont=*-Medium, - BoldItalicFont=*-MediumItalic, -]{Roboto} - +\newcommand*{\headerfont}{\roboto} +\newcommand*{\headerfontlight}{\robotolight} \newcommand*{\footerfont}{\sourcesanspro} \newcommand*{\bodyfont}{\sourcesanspro} \newcommand*{\bodyfontlight}{\sourcesansprolight} @@ -269,17 +256,30 @@ \newcommand*{\address}[1]{\def\@address{#1}} % Define writer's position -% Usage: \name{} +% Usage: \position{} \newcommand*{\position}[1]{\def\@position{#1}} % Defines writer's mobile (optional) % Usage: \mobile{} -\newcommand*{\mobile}[1]{\def\@mobile{#1}} +\newcommand*{\mobile}[1] +{ + \def\@mobile{#1} + \def\@teluri{tel:\@mobile} + % Strip unwanted characters + \StrDel{\@teluri}{ }[\@teluri]% + \StrDel{\@teluri}{-}[\@teluri]% + \StrDel{\@teluri}{(}[\@teluri]% + \StrDel{\@teluri}{)}[\@teluri]% +} % Defines writer's email (optional) -% Usage: \email{} +% Usage: \email{} \newcommand*{\email}[1]{\def\@email{#1}} +% Defines writer's date of birth (optional) +% Usage: \dateofbirth{} +\newcommand*{\dateofbirth}[1]{\def\@dateofbirth{#1}} + % Defines writer's homepage (optional) % Usage: \homepage{} \newcommand*{\homepage}[1]{\def\@homepage{#1}} @@ -292,6 +292,10 @@ % Usage: \gitlab{} \newcommand*{\gitlab}[1]{\def\@gitlab{#1}} +% Defines writer's bitbucket (optional) +% Usage: \bitbucket{} +\newcommand*{\bitbucket}[1]{\def\@bitbucket{#1}} + % Defines writer's stackoverflow profile (optional) % Usage: \stackoverflow{}{} % e.g.https://stackoverflow.com/users/123456/sam-smith @@ -302,9 +306,22 @@ % Usage: \linkedin{} \newcommand*{\linkedin}[1]{\def\@linkedin{#1}} +% Defines writer's orcid (optional) +% Usage: \orcid{} +\newcommand*{\orcid}[1]{\def\@orcid{#1}} + +% Defines writer's twitter (optional) % Usage: \twitter{} \newcommand*{\twitter}[1]{\def\@twitter{#1}} +% Defines writer's Mastodon (optional) +% Usage: \mastodon{}{} +\newcommand*{\mastodon}[2]{\def\@mastodoninstance{#1}\def\@mastodonname{#2}} + +% Defines writer's resarchgate (optional) +% Usage: \researchgate{} +\newcommand*{\researchgate}[1]{\def\@researchgate{#1}} + % Defines writer's skype (optional) % Usage: \skype{} \newcommand*{\skype}[1]{\def\@skype{#1}} @@ -317,9 +334,39 @@ % Usage: \xing{} \newcommand*{\xing}[1]{\def\@xing{#1}} -% Defines writer's twitter (optional) -% Defines writer's extra informations (optional) -% Usage: \extrainfo{} +% Defines writer's medium profile (optional) +% Usage: \medium{} +\newcommand*{\medium}[1]{\def\@medium{#1}} + +% Defines writer's kaggle (optional) +% Usage: \kaggle{} +\newcommand*{\kaggle}[1]{\def\@kaggle{#1}} + +% Defines writer's Hackerrank (optional) +% Usage: \hackerrank{} +\newcommand*{\hackerrank}[1]{\def\@hackerrank{#1}} + +% Defines writer's Telegram (optional) +% Usage: \telegram{} +\newcommand*{\telegram}[1]{\def\@telegram{#1}} + +% Defines writer's google scholar profile (optional) +% Usage: \googlescholar{}{} +% e.g.https://scholar.google.co.uk/citations?user=wpZDx1cAAAAJ +% would be \googlescholar{wpZDx1cAAAAJ}{Name-to-display-next-icon} +% If 'googlescholar-name' is not provided than it defaults to +% '\firstname \lastname' +\newcommand*{\googlescholar}[2]{% + \def\@googlescholarid{#1}% + \ifthenelse{\equal{#2}{}}{% + \def\@googlescholarname{\@firstname~\@lastname}% + }{% + \def\@googlescholarname{#2}% + }% +} + +% Defines writer's extra information (optional) +% Usage: \extrainfo{} \newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}} % Defines writer's quote (optional) @@ -438,7 +485,7 @@ \ifthenelse{\isundefined{\@mobile}}% {}% {% - \faMobile\acvHeaderIconSep\@mobile% + \href{\@teluri}{\faMobile\acvHeaderIconSep\@mobile}% \setbool{isstart}{false}% }% \ifthenelse{\isundefined{\@email}}% @@ -447,6 +494,13 @@ \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \href{mailto:\@email}{\faEnvelope\acvHeaderIconSep\@email}% }% + \ifthenelse{\isundefined{\@dateofbirth}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + % \mbox prevents wrapping of elements% + \mbox{\faBirthdayCake\acvHeaderIconSep\@dateofbirth}% + }% \ifthenelse{\isundefined{\@homepage}}% {}% {% @@ -465,6 +519,12 @@ \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}% }% + \ifthenelse{\isundefined{\@bitbucket}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://bitbucket.com/\@bitbucket}{\faBitbucket\acvHeaderIconSep\@bitbucket}% + }% \ifthenelse{\isundefined{\@stackoverflowid}}% {}% {% @@ -475,7 +535,13 @@ {}% {% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% - \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedinSquare\acvHeaderIconSep\@linkedin}% + \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedin\acvHeaderIconSep\@linkedin}% + }% + \ifthenelse{\isundefined{\@orcid}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://orcid.org/\@orcid}{\faOrcid\acvHeaderIconSep\@orcid}% }% \ifthenelse{\isundefined{\@twitter}}% {}% @@ -483,6 +549,12 @@ \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}% }% + \ifthenelse{\isundefined{\@mastodonname}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://\@mastodoninstance/@\@mastodonname}{\faMastodon\acvHeaderIconSep\@mastodonname}% + }% \ifthenelse{\isundefined{\@skype}}% {}% {% @@ -495,12 +567,48 @@ \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}% }% + \ifthenelse{\isundefined{\@researchgate}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://www.researchgate.net/profile/\@researchgate}{\faResearchgate\acvHeaderIconSep\@researchgate}% + }% \ifthenelse{\isundefined{\@xing}}% {}% {% \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% \href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing} }% + \ifthenelse{\isundefined{\@medium}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://medium.com/@\@medium}{\faMedium\acvHeaderIconSep\@medium}% + }% + \ifthenelse{\isundefined{\@kaggle}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://kaggle.com/\@kaggle}{\faKaggle\acvHeaderIconSep\@kaggle}% + }% + \ifthenelse{\isundefined{\@hackerrank}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://www.hackerrank.com/\@hackerrank}{\faHackerrank\acvHeaderIconSep\@hackerrank}% + }% + \ifthenelse{\isundefined{\@telegram}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://t.me/\@telegram}{\faTelegram\acvHeaderIconSep\@telegram}% + }% + \ifthenelse{\isundefined{\@googlescholarid}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://scholar.google.com/citations?user=\@googlescholarid}{\faGraduationCap\acvHeaderIconSep\@googlescholarname}% + }% \ifthenelse{\isundefined{\@extrainfo}}% {}% {% @@ -532,7 +640,7 @@ \vspace{\acvSectionTopSkip} \sectionstyle{#1} \phantomsection - \color{gray}\vhrulefill{0.9pt} + \color{sectiondivider}\vhrulefill{0.9pt} } % Define a subsection for CV @@ -564,7 +672,7 @@ % Define an entry of cv information % Usage: \cventry{}{}{<location>}{<date>}{<description>} \newcommand*{\cventry}[5]{% - \vspace{-2.0mm} + \vspace{1.0mm} \setlength\tabcolsep{0pt} \setlength{\extrarowheight}{0pt} \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} @@ -572,7 +680,9 @@ {\entrypositionstyle{#1} & \entrydatestyle{#4} \\} {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\ \entrypositionstyle{#1} & \entrydatestyle{#4} \\} - \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}} + \ifstrempty{#5} + {} + {\multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}} \\} \end{tabular*}% } @@ -615,7 +725,7 @@ % Define a line of cv information(honor, award or something else) % Usage: \cvhonor{<position>}{<title>}{<location>}{<date>} \newcommand*{\cvhonor}[4]{% - \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\ + \honordatestyle{#4} & \honorpositionstyle{#1}\ifempty{#2}{}{,} \honortitlestyle{#2} & \honorlocationstyle{#3} \\ } % Define an environment for cvskill @@ -665,8 +775,9 @@ \par\addvspace{2.5ex} \phantomsection{} \lettersectionstyle{#1} - \color{gray}\vhrulefill{0.9pt} + \color{sectiondivider}\vhrulefill{0.9pt} \par\nobreak\addvspace{0.4ex} + \lettertextstyle } % Define a title of the cover letter @@ -699,4 +810,4 @@ \\\\\\ \letterenclosurestyle{\@letterenclname: \@letterenclosure} \\ } -} \ No newline at end of file +}