From 74e61f8ddf4002e5a6c871d4b15a9b20d9de88e5 Mon Sep 17 00:00:00 2001 From: ec-d Date: Thu, 2 May 2024 13:45:44 -0400 Subject: [PATCH 01/14] Use page number font when setting page number width (#179) --- moderncv.cls | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moderncv.cls b/moderncv.cls index 7f465ed..ac478e6 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -145,7 +145,7 @@ \@ifundefined{r@lastpage}{}{% \ifthenelse{\pageref{lastpage}>1}{% \newlength{\pagenumberwidth}% - \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}% + \settowidth{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}% \fancypagestyle{plain}{% \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\protect\NoHyper\pageref{lastpage}\protect\endNoHyper}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style) \pagestyle{plain}}{}}\fi}% From 493742be6202264173a72957194cc853af8e3157 Mon Sep 17 00:00:00 2001 From: nathan musoke Date: Thu, 2 May 2024 13:46:38 -0400 Subject: [PATCH 02/14] Add \social options: arXiv, INSPIRE (#185) * Add \social options: arXiv, INSPIRE https://arxiv.org/ and https://inspirehep.net/ are websites on which academics often have profiles that would be linked in a CV (particularly physics and related fields). Add social options through the academicons font. * fixup arxiv and inspirehep socials * fixup arxiv and inspire-hep socials --- CHANGELOG | 1 + manual/moderncv_userguide.tex | 6 +++++- moderncv.cls | 6 ++++++ moderncviconsacademic.sty | 4 ++++ moderncviconsawesome.sty | 2 ++ moderncviconsletters.sty | 2 ++ template.tex | 2 ++ 7 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index a62ce21..3887511 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,6 +19,7 @@ version 2.?.? (29 Jun 2023) - Replace instances of ~~~ in codebase with \hspace to be more compatible with babel for Spanish (#109). - Added Codeberg and Mastodon social icons (#107). +- New \social options: arXiv, INSPIRE (#185) version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/manual/moderncv_userguide.tex b/manual/moderncv_userguide.tex index 45a19ac..46076ae 100644 --- a/manual/moderncv_userguide.tex +++ b/manual/moderncv_userguide.tex @@ -102,7 +102,7 @@ familydefault, sfdefault, rmdefault, inputenc, moderncv, document, bibliographyitemlabel, addresssymbol, mobilephonesymbol, fixedphonesymbol, faxphonesymbol, emailsymbol, homepagesymbol, linkedinsocialsymbol, xingsocialsymbol, twittersocialsymbol, githubsocialsymbol, gitlabsocialsymbol, - stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, + stackoverflowsocialsymbol, bitbucketsocialsymbol, skypesocialsymbol, orcidsocialsymbol, researchgatesocialsymbol, arxivsocialsymbol, inspiresocialsymbol, researcheridsocialsymbol, telegramsocialsymbol, whatsappsocialsymbol, signalsocialsymbol, matrixsocialsymbol, googlescholarsocialsymbol, cvstretchability, bornsymbol }, emphstyle={[2]\color{cvblue!60!cvgrey}\bfseries}, @@ -330,6 +330,7 @@ Takes the platform as an optional argument. The following values are supported for \code{}: \begin{itemize} \begin{multicols}{4} + \item \code{arxiv} \item \code{battlenet} \item \code{bitbucket} \item \code{codeberg} @@ -337,6 +338,7 @@ The following values are supported for \code{}: \item \code{github} \item \code{gitlab} \item \code{googlescholar} + \item \code{inspire} \item \code{instagram} \item \code{linkedin} \item \code{mastodon} @@ -711,6 +713,8 @@ Currently \Moderncv supports the following commands as \code{<\\symbolcommand>}: \item \code{\\bitbucketsocialsymbol} \item \code{\\skypesocialsymbol} \item \code{\\bornsymbol} + \item \code{\\arxivsocialsymbol} + \item \code{\\inspiresocialsymbol} \end{multicols} \end{itemize} The possible options for \code{<\\symbol>} depend on the package that is used. diff --git a/moderncv.cls b/moderncv.cls index ac478e6..730822c 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -288,6 +288,8 @@ % - "xbox" % - "playstation" % - "battlenet" +% - "arxiv" +% - "inspire" \collectionnew{socials} \NewDocumentCommand{\social}{O{}O{}m}{% \ifthenelse{\equal{#2}{}}% @@ -320,6 +322,8 @@ \ifthenelse{\equal{#1}{xbox}} {\collectionadd[xbox]{socials} {\protect\httpslink[#3]{account.xbox.com/profile?gamertag=#3}}} {}% \ifthenelse{\equal{#1}{playstation}} {\collectionadd[playstation]{socials} {#3}} {}% \ifthenelse{\equal{#1}{battlenet}} {\collectionadd[battlenet]{socials} {#3}} {}% + \ifthenelse{\equal{#1}{arxiv}} {\collectionadd[arxiv]{socials} {\protect\httpslink[#3]{arxiv.org/a/#3}}} {}% + \ifthenelse{\equal{#1}{inspire}} {\collectionadd[inspire]{socials} {\protect\httpslink[#3]{inspirehep.net/authoris/#3}}} {}% } {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}% @@ -385,6 +389,8 @@ \newcommand*{\xboxsocialsymbol} {} \newcommand*{\playstationsocialsymbol} {} \newcommand*{\battlenetsocialsymbol} {} +\newcommand*{\arxivsocialsymbol} {} +\newcommand*{\inspiresocialsymbol} {} % other %------ diff --git a/moderncviconsacademic.sty b/moderncviconsacademic.sty index 79f8ec9..1ac00ac 100644 --- a/moderncviconsacademic.sty +++ b/moderncviconsacademic.sty @@ -29,6 +29,8 @@ \providecolor{researchgate}{named}{default-socialicon-color} \providecolor{researcherid}{named}{default-socialicon-color} \providecolor{googlescholar}{named}{default-socialicon-color} +\providecolor{arxiv}{named}{default-socialicon-color} +\providecolor{inspire}{named}{default-socialicon-color} %------------------------------------------------------------------------------- % all symbols described in moderncv.cls @@ -57,6 +59,8 @@ %\newcommand*{\whatsappsocialsymbol} {} %\newcommand*{\matrixsocialsymbol} {} %\newcommand*{\signalsocialsymbol} {} +\renewcommand*{\arxivsocialsymbol}{{\color{arxiv}{\small\aiarXiv}}~} +\renewcommand*{\inspiresocialsymbol}{{\color{inspire}{\small\aiInspire}}~} \endinput diff --git a/moderncviconsawesome.sty b/moderncviconsawesome.sty index 597afc4..90f2b37 100644 --- a/moderncviconsawesome.sty +++ b/moderncviconsawesome.sty @@ -98,6 +98,8 @@ \renewcommand*{\battlenetsocialsymbol} {{\color{battlenet}\small\faBattleNet}~} %\renewcommand*{\signalsocialsymbol} {} %\renewcommand*{\matrixsocialsymbol} {} +% \renewcommand*{\arxivsocialsymbol} {{\color{arxiv}{\small\faarXiv}}~} +% \renewcommand*{\inspiresocialsymbol} {{\color{inspire}{\small\faInspire}}~} \renewcommand*{\bornsymbol} {{\color{born}\small\faAsterisk}~} % alternative: \faBabyCarriage \endinput diff --git a/moderncviconsletters.sty b/moderncviconsletters.sty index a25b03f..68ba2a1 100644 --- a/moderncviconsletters.sty +++ b/moderncviconsletters.sty @@ -56,6 +56,8 @@ \renewcommand*{\xboxsocialsymbol} {\textbf{xb}~} \renewcommand*{\playstationsocialsymbol} {\textbf{psn}~} \renewcommand*{\battlenetsocialsymbol} {\textbf{bn}~} +\renewcommand*{\arxivsocialsymbol} {\textbf{arx}~} +\renewcommand*{\inspiresocialsymbol} {\textbf{ins}~} \renewcommand*{\listitemsymbol} {\labelitemi~} diff --git a/template.tex b/template.tex index 750b4ce..014a2f1 100644 --- a/template.tex +++ b/template.tex @@ -90,6 +90,8 @@ \social[xbox]{jdoe} % optional, remove / comment the line if not wanted \social[playstation]{jdoe} % optional, remove / comment the line if not wanted \social[battlenet]{jdoe\#0000} % optional, remove / comment the line if not wanted +\social[arxiv]{doe\_j\_1} % optional, remove / comment the line if not wanted +\social[inspire]{0000000} % optional, remove / comment the line if not wanted \extrainfo{additional information} % optional, remove / comment the line if not wanted From 08371bb3e235152e3dac2c6c8faef659777c5543 Mon Sep 17 00:00:00 2001 From: Mark E Fuller Date: Sat, 4 May 2024 15:08:51 +0300 Subject: [PATCH 03/14] make colors user adjustable. (#151) * make colors user adjustable. - Systematize colors and make them user adjustable. See documentation for details. this requires the \moderncvcolor to be issued BEFORE \moderncvstyle. * fix missing characters for fancy style * manually copied the current version user guide form master --------- Co-authored-by: David Co-authored-by: LLdaniel Co-authored-by: daniel <41345639+LLdaniel@users.noreply.github.com> --- CHANGELOG | 2 ++ moderncv.cls | 2 ++ moderncvbodyi.sty | 10 +++++----- moderncvbodyiii.sty | 20 ++++++++++---------- moderncvbodyiv.sty | 8 ++++---- moderncvbodyv.sty | 12 ++++++------ moderncvfooti.sty | 4 ++-- moderncvheadi.sty | 18 ++++++++++-------- moderncvheadii.sty | 18 +++++++++--------- moderncvheadiii.sty | 16 +++++++++------- moderncvheadiv.sty | 18 ++++++++++-------- moderncvheadv.sty | 20 +++++++++++--------- moderncvheadvi.sty | 16 +++++++++------- moderncvskillmatrix.sty | 24 ++++++++++++------------ moderncvstylebanking.sty | 23 ++++++++++++++++++++++- moderncvstylecasual.sty | 22 ++++++++++++++++++++++ moderncvstyleclassic.sty | 22 ++++++++++++++++++++++ moderncvstyleempty.sty | 23 +++++++++++++++++++++++ moderncvstylefancy.sty | 24 ++++++++++++++++++++++++ moderncvstyleoldstyle.sty | 24 ++++++++++++++++++++++++ template.tex | 4 ++-- 21 files changed, 240 insertions(+), 90 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3887511..f386ab7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -20,6 +20,8 @@ version 2.?.? (29 Jun 2023) babel for Spanish (#109). - Added Codeberg and Mastodon social icons (#107). - New \social options: arXiv, INSPIRE (#185) +- Systematize colors and make them user adjustable. See documentation for details. + This requires the \moderncvcolor to be issued BEFORE \moderncvstyle. version 2.3.1 (21 Feb 2022) - Fix duplicate GitLab icon (#105). diff --git a/moderncv.cls b/moderncv.cls index 730822c..227b773 100644 --- a/moderncv.cls +++ b/moderncv.cls @@ -507,6 +507,8 @@ % styles \newcommand*{\namestyle}[1]{{\namefont#1}} +\NewDocumentCommand{\firstnamestyle}{+m}{{\namefont#1}} +\NewDocumentCommand{\lastnamestyle}{+m}{{\namefont#1}} \newcommand*{\titlestyle}[1]{{\titlefont#1}} \newcommand*{\addressstyle}[1]{{\addressfont#1}} \newcommand*{\quotestyle}[1]{{\quotefont#1}} diff --git a/moderncvbodyi.sty b/moderncvbodyi.sty index 5099ad2..37ecee0 100644 --- a/moderncvbodyi.sty +++ b/moderncvbodyi.sty @@ -29,9 +29,9 @@ \renewcommand*{\hintfont}{} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -73,7 +73,7 @@ \par\addvspace{2.5ex}% \phantomsection{}% reset the anchor for hyperrefs \addcontentsline{toc}{section}{#2}% - \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{bodyrulecolor}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading \RenewDocumentCommand{\subsection}{sm}{% @@ -169,7 +169,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index 638bfd4..7b7c40b 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -61,16 +61,16 @@ \renewcommand*{\sectionstyle}[1]{{% \if@center\centering\else% \if@right\raggedleft\fi\fi% - \sectionfont\textcolor{color1}{#1}% + \sectionfont\textcolor{sectioncolor}{#1}% \if@shortrules\else% \par\fi}} \renewcommand*{\subsectionstyle}[1]{{% \if@center\centering\else% \if@right\raggedleft\fi\fi% - \subsectionfont\textcolor{color1}{#1}% + \subsectionfont\textcolor{subsectioncolor}{#1}% \if@shortrules\else\if@mixedrules\else% \par\fi\fi}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -133,14 +133,14 @@ \newcommand*{\sectionrule}{} \newcommand*{\subsectionrule}{} \if@fullrules% - \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible} + \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible} \if@shortrules% - \renewcommand*{\sectionrule}{\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} + \renewcommand*{\sectionrule}{\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} \if@mixedrules% - \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} - \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} + \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{bodyrulecolor}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}} + \renewcommand*{\subsectionrule}{\leavevmode{\color{bodyrulecolor}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}} \if@norules% \renewcommand*{\sectionrule}{} \renewcommand*{\subsectionrule}{}\fi @@ -238,7 +238,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyiv.sty b/moderncvbodyiv.sty index 22d9ac7..a29d8c2 100644 --- a/moderncvbodyiv.sty +++ b/moderncvbodyiv.sty @@ -29,9 +29,9 @@ \renewcommand*{\hintfont}{\bfseries} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} %------------------------------------------------------------------------------- @@ -177,7 +177,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfil% - {\color{color2}\itshape\enclname: \@enclosure}}% + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}% \vfil} diff --git a/moderncvbodyv.sty b/moderncvbodyv.sty index 96be31e..52ce05d 100644 --- a/moderncvbodyv.sty +++ b/moderncvbodyv.sty @@ -34,9 +34,9 @@ \renewcommand*{\hintfont}{\bfseries} % styles -\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} -\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} -\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{sectioncolor}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{subsectioncolor}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{hintstylecolor}{#1}}} % lengths % used by \cvitem (and all children command) @@ -99,7 +99,7 @@ % underlying command to implement \cvitem, \subsection and \section \newcommand*{\@cvitem}[3][.5ex]{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \if@aftersection\else% \vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :( @@ -165,7 +165,7 @@ {% \bibliographyhead{\refname}% % \small% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \noindent% \begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}% @@ -213,7 +213,7 @@ \ifthenelse{\isundefined{\@enclosure}}{}{% \\% \vfill% - {\color{color2}\itshape\enclname: \@enclosure}}} + {\color{letterclosingcolor}\itshape\enclname: \@enclosure}}} \endinput diff --git a/moderncvfooti.sty b/moderncvfooti.sty index 03d84c1..99e5fd2 100644 --- a/moderncvfooti.sty +++ b/moderncvfooti.sty @@ -79,7 +79,7 @@ \fancyfoot[c]{% \parbox[b]{\footwidth}{% \centering% - \color{color2}\addressfont% + \color{addresscolor}\addressfont% \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance) \ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty @@ -110,7 +110,7 @@ \fancyfoot[c]{% \parbox[b]{\footwidth}{% \centering% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance) \vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers \strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall diff --git a/moderncvheadi.sty b/moderncvheadi.sty index 346bf12..4c90312 100644 --- a/moderncvheadi.sty +++ b/moderncvheadi.sty @@ -48,10 +48,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} %------------------------------------------------------------------------------- @@ -77,7 +79,7 @@ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% \if@right\begin{tabular}[b]{@{}l@{}}\fi% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% @@ -100,7 +102,7 @@ {% \if@left% \hspace*{\separatorcolumnwidth}\fi% - \color{color1}% + \color{pictureframecolor}% \setlength{\fboxrule}{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -118,7 +120,7 @@ \begin{minipage}[b]{\makecvheadnamewidth}% \if@left\raggedright\fi% \if@right\raggedleft\fi% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}}% % raise boxes if top option is set @@ -167,7 +169,7 @@ % optional detailed information \if@details% \raggedleft% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% % optional detailed information \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% diff --git a/moderncvheadii.sty b/moderncvheadii.sty index bf0a6d6..6569de5 100644 --- a/moderncvheadii.sty +++ b/moderncvheadii.sty @@ -47,10 +47,10 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makeheaddetailssymbol}{% @@ -110,7 +110,7 @@ \setlength\fboxrule{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% - {\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}% + {\color{pictureframecolor}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}% % name (pre-rendering) \@initializelength{\makecvheadpicturewidth}% \settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% @@ -121,9 +121,9 @@ \if@right\raggedleft\fi% \namefont% \if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference) - {\color{color2!50}\MakeLowercase\@firstname}{\color{color2}\MakeLowercase\@lastname}% + {\color{firstnamecolor}\MakeLowercase\@firstname}{\color{lastnamecolor}\MakeLowercase\@lastname}% \else% default design: first- and lastname as given with a space in between - {\color{color2!50}\@firstname} {\color{color2}\@lastname}\fi}}% + {\color{firstnamecolor}\@firstname} {\color{lastnamecolor}\@lastname}\fi}}% % rendering \if@left% \usebox{\makecvheadnamebox}% @@ -131,11 +131,11 @@ \if@right% \usebox{\makecvheadpicturebox}% \usebox{\makecvheadnamebox}\fi\\[-.35em]% - {\color{color2!50}\rule{\textwidth}{.25ex}}% + {\color{headrulecolor}\rule{\textwidth}{.25ex}}% % optional detailed information \if@details{% \\\null% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvheadiii.sty b/moderncvheadiii.sty index c3fafce..222abc9 100644 --- a/moderncvheadiii.sty +++ b/moderncvheadiii.sty @@ -36,10 +36,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makeheaddetailssymbol}{% @@ -81,12 +83,12 @@ \parbox{\makeheaddetailswidth}{% \centering% % name and title - \namestyle{\@firstname~\@lastname}% - \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% + \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) % optional detailed information \if@details{% \\% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvheadiv.sty b/moderncvheadiv.sty index 1d24c96..eb87b29 100644 --- a/moderncvheadiv.sty +++ b/moderncvheadiv.sty @@ -38,10 +38,12 @@ \renewcommand*{\quotefont}{\large\itshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} %------------------------------------------------------------------------------- @@ -80,7 +82,7 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \color{color1}% + \color{pictureframecolor}% \setlength\fboxrule{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -91,7 +93,7 @@ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}% {}% \begin{minipage}[b]{\makecvheadnamewidth}% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}% % optional photo @@ -103,7 +105,7 @@ % optional details \if@details% \makecvheadinfo{% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% @@ -152,7 +154,7 @@ \if@details% \hspace{0pt}% \marginpar{% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\@firstname~\@lastname}\@firstdetailselementfalse% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty diff --git a/moderncvheadv.sty b/moderncvheadv.sty index eaabd4a..fce4518 100644 --- a/moderncvheadv.sty +++ b/moderncvheadv.sty @@ -37,10 +37,12 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} %------------------------------------------------------------------------------- @@ -61,7 +63,7 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \color{color1}% + \color{pictureframecolor}% \setlength{\fboxrule}{\@photoframewidth}% \ifdim\@photoframewidth=0pt% \setlength{\fboxsep}{0pt}\fi% @@ -75,7 +77,7 @@ % optional details \if@details% \ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% @@ -92,7 +94,7 @@ % name and optional title \newlength{\makecvheadpictureboxskip}% \setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}% - \namestyle{\@firstname\ \@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{ \ifthenelse{\isundefined{\@quote}}% {}% @@ -117,7 +119,7 @@ % underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv \let\standarddoublebackslash\\% \newcommand*{\@makecvtitle}[3][.5ex]{% - \arrayrulecolor{color1}% + \arrayrulecolor{headrulecolor}% \setlength\arrayrulewidth{1.2\p@}% \if@aftersection\else% \vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :( @@ -147,7 +149,7 @@ % optional detailed information \if@details% \raggedleft% - \addressfont\textcolor{color2}{% + \addressfont\textcolor{addresscolor}{% {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% % optional detailed information \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% diff --git a/moderncvheadvi.sty b/moderncvheadvi.sty index e532f9a..7364d0e 100644 --- a/moderncvheadvi.sty +++ b/moderncvheadvi.sty @@ -43,20 +43,22 @@ \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{namecolor}{#1}}} +\renewcommand*{\firstnamestyle}[1]{{\namefont\textcolor{firstnamecolor}{#1}}} +\renewcommand*{\lastnamestyle}[1]{{\namefont\textcolor{lastnamecolor}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{titlecolor}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{addresscolor}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{quotecolor}{#1}}} % commands \@initializecommand{\makehead}{% \setlength{\makeheaddetailswidth}{\textwidth}% % name and title \if@left\hfill\fi% - \namestyle{\@firstname~\@lastname}% + \firstnamestyle{\@firstname}~\lastnamestyle{\@lastname}% \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) % rule - {\color{color1}\rule{\textwidth}{.25ex}}} + {\color{bodyrulecolor}\rule{\textwidth}{.25ex}}} %------------------------------------------------------------------------------- % resume head definition @@ -107,7 +109,7 @@ % optional detailed information \if@details{% \\\null% - \addressfont\color{color2}% + \addressfont\color{addresscolor}% \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}% \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}% diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index 6cf41c0..5c1a893 100644 --- a/moderncvskillmatrix.sty +++ b/moderncvskillmatrix.sty @@ -252,10 +252,10 @@ % \cvskill{3} \begingroup \my@repeat@count=\z@ - \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[skillmatrixfullcolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% \my@repeat@count\@ne\,}% \my@repeat@count=\numexpr5-\z@\relax - \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[skillmatrixemptycolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% \my@repeat@count\m@ne\,}% \endgroup }% end \cvskill @@ -596,7 +596,7 @@ \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% % calculate descriptor widths \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% @@ -650,7 +650,7 @@ % in the stared and nonstared case \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% p{2\skilllegend@padding}% @@ -697,7 +697,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -766,7 +766,7 @@ \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% % calculate descriptor widths \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% @@ -816,7 +816,7 @@ }% \IfBooleanTF#1{% if a star is given, add dashed line \begingroup% - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} @@ -863,7 +863,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -924,7 +924,7 @@ \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% \begingroup \renewcommand{\arraystretch}{1.25} - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% @@ -938,7 +938,7 @@ % Definition of \cvskillhead valid moderncvbodyv \if@moderncvbodyv% \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( \begingroup% @@ -990,7 +990,7 @@ \IfBooleanTF{#1}{% If a star is seen a dotted line is drawn above the entry \begingroup \renewcommand{\arraystretch}{1.25} - \arrayrulecolor{color1} + \arrayrulecolor{bodyrulecolor} \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% @@ -1018,7 +1018,7 @@ \if@moderncvbodyv% \DeclareDocumentCommand\@starIndependentMatrixEntry{}{}% \RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( %test for the star * in the command diff --git a/moderncvstylebanking.sty b/moderncvstylebanking.sty index 29df385..f8ed6f7 100644 --- a/moderncvstylebanking.sty +++ b/moderncvstylebanking.sty @@ -60,7 +60,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi - +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color1} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!60} +\colorlet{titlecolor}{color2!85} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstylecasual.sty b/moderncvstylecasual.sty index dd1c3eb..cf5a1b8 100644 --- a/moderncvstylecasual.sty +++ b/moderncvstylecasual.sty @@ -47,6 +47,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstyleclassic.sty b/moderncvstyleclassic.sty index 7008b03..125e63c 100644 --- a/moderncvstyleclassic.sty +++ b/moderncvstyleclassic.sty @@ -48,6 +48,28 @@ \moderncvicons{letters} % do not use symbols, use letters \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer diff --git a/moderncvstyleempty.sty b/moderncvstyleempty.sty index 056a37f..bae1545 100644 --- a/moderncvstyleempty.sty +++ b/moderncvstyleempty.sty @@ -32,6 +32,29 @@ % style definition %------------------------------------------------------------------------------- +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +% \colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + %------------------------------------------------------------------------------- % fonts & icons %------------------------------------------------------------------------------- diff --git a/moderncvstylefancy.sty b/moderncvstylefancy.sty index ea56bba..25cde7d 100644 --- a/moderncvstylefancy.sty +++ b/moderncvstylefancy.sty @@ -21,6 +21,30 @@ \ExecuteOptions{symbols} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color1} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{color1} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + + %------------------------------------------------------------------------------- % fonts & icons %------------------------------------------------------------------------------- diff --git a/moderncvstyleoldstyle.sty b/moderncvstyleoldstyle.sty index 78225e0..466af7e 100644 --- a/moderncvstyleoldstyle.sty +++ b/moderncvstyleoldstyle.sty @@ -50,6 +50,30 @@ \fi +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% head and footer +\colorlet{lastnamecolor}{color2} +\colorlet{namecolor}{lastnamecolor} +\colorlet{headrulecolor}{lastnamecolor!50} +\colorlet{firstnamecolor}{lastnamecolor!50} +\colorlet{titlecolor}{color2} +\colorlet{addresscolor}{color2} +\colorlet{quotecolor}{color1} +\colorlet{pictureframecolor}{color1} +% body +\colorlet{bodyrulecolor}{color1} +\colorlet{sectioncolor}{color1} +\colorlet{subsectioncolor}{color1} +\colorlet{hintstylecolor}{color0} +% letter +\colorlet{letterclosingcolor}{color2} +% skillmatrix +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + + %------------------------------------------------------------------------------- % header, body & footer %------------------------------------------------------------------------------- diff --git a/template.tex b/template.tex index 014a2f1..1a8314f 100644 --- a/template.tex +++ b/template.tex @@ -8,9 +8,9 @@ \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') -% moderncv themes -\moderncvstyle{classic} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' \moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' +% moderncv themes +\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page From d13f919b8d2c39f4f4f46f6c3fd0c80adeca47e4 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 04/14] Fork `moderncvstylecontemporary.sty` from the `classic` style --- moderncvbodyvi.sty | 175 +++++++++++++++++++++++++++++++ moderncvheadvii.sty | 187 ++++++++++++++++++++++++++++++++++ moderncvstylecontemporary.sty | 53 ++++++++++ 3 files changed, 415 insertions(+) create mode 100644 moderncvbodyvi.sty create mode 100644 moderncvheadvii.sty create mode 100644 moderncvstylecontemporary.sty diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty new file mode 100644 index 0000000..610ee33 --- /dev/null +++ b/moderncvbodyvi.sty @@ -0,0 +1,175 @@ +%% start of file `moderncvbodyvi.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvbodyvi}[2023/11/21 v2.0.0 modern curriculum vitae and letter body variant: 6] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- + + +%------------------------------------------------------------------------------- +% overall body definition +%------------------------------------------------------------------------------- +% fonts +\renewcommand*{\sectionfont}{\Large\mdseries\upshape} +\renewcommand*{\subsectionfont}{\large\mdseries\upshape} +\renewcommand*{\hintfont}{} + +% styles +\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}} +\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}} +\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} + + +%------------------------------------------------------------------------------- +% resume body definition +%------------------------------------------------------------------------------- +% lengths +% used by \cvitem (and all children command) +\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth} +\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth} +\@initializelength{\maincolumnwidth} +% used by \cvdoubleitem +\@initializelength{\doubleitemcolumnwidth} +% used by \cvlistitem +\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol} +\@initializelength{\listitemcolumnwidth} +% used by \cvlistdoubleitem +\@initializelength{\listdoubleitemcolumnwidth} +% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars +\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}% + +% commands +\renewcommand*{\recomputecvbodylengths}{% + % body lengths + \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}% + \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% + \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}% + \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% + \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% + \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% + % regular lengths + \setlength{\parskip}{0\p@}} + +\@initializelength{\baseletterheight} +\settoheight{\baseletterheight}{\sectionstyle{o}} +\setlength{\baseletterheight}{\baseletterheight-0.95ex} +\RenewDocumentCommand{\section}{sm}{% + \par\addvspace{2.5ex}% + \phantomsection{}% reset the anchor for hyperrefs + \addcontentsline{toc}{section}{#2}% + \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading + +\RenewDocumentCommand{\subsection}{sm}{% + \par\addvspace{1ex}% + \phantomsection{}% reset the anchor for hyperrefs + \addcontentsline{toc}{subsection}{#2}% + \cvitem[0ex]{}{\strut\subsectionstyle{#2}}% + \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading + +\renewcommand*{\cvitem}[3][.25em]{% + \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}% + \raggedleft\hintstyle{#2} &{#3}% + \end{tabular}% + \par\addvspace{#1}} + +\renewcommand*{\cvdoubleitem}[5][.25em]{% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}% + \hspace*{\separatorcolumnwidth}% + \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}} + +\renewcommand*{\cvlistitem}[2][.25em]{% + \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}} + +\renewcommand*{\cvlistdoubleitem}[3][.25em]{% + \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \ifthenelse{\equal{#3}{}}% + {}% + {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} + +\renewcommand*{\cventry}[7][.25em]{% + \cvitem[#1]{#2}{% + {\bfseries#3}% + \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}% + \ifthenelse{\equal{#5}{}}{}{, #5}% + \ifthenelse{\equal{#6}{}}{}{, #6}% + .\strut% + \ifx&% + \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}} + +\@initializebox{\cvitemwithcommentbox} +\@initializelength{\cvitemwithcommentskilllength} +\@initializelength{\cvitemwithcommentcommentlength} +\renewcommand*{\cvitemwithcomment}[4][.25em]{% + \savebox{\cvitemwithcommentbox}{{#3}}% + \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}% + \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}% + \cvitem[#1]{#2}{% + \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}% + \hfill% fill of \separatorcolumnwidth + \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}} + +\renewenvironment{thebibliography}[1]% + {% + \bibliographyhead{\refname}% +% \small% + \begin{list}{\bibliographyitemlabel}% + {% + \setlength{\topsep}{0pt}% + \setlength{\labelwidth}{\hintscolumnwidth}% + \setlength{\labelsep}{\separatorcolumnwidth}% + \leftmargin\labelwidth% + \advance\leftmargin\labelsep% + \@openbib@code% + \usecounter{enumiv}% + \let\p@enumiv\@empty% + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy% + \clubpenalty4000%\@clubpenalty \clubpenalty% + \widowpenalty4000% + \sfcode`\.\@m% + \sfcode `\=1000\relax}% + {% + \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}% + \end{list}} + + +%------------------------------------------------------------------------------- +% letter style definition +%------------------------------------------------------------------------------- +% commands +\renewcommand*{\recomputeletterbodylengths}{% + \recomputecvlengths% + \setlength{\parskip}{6\p@}} + +\renewcommand*{\makeletterclosing}{ + \@closing\\[3em]% + {\bfseries\@firstname~\@lastname}% + \ifthenelse{\isundefined{\@enclosure}}{}{% + \\% + \vfil% + {\color{color2}\itshape\enclname: \@enclosure}}% + \vfil} + + +\endinput + + +%% end of file `moderncvbodyvi.sty'. diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty new file mode 100644 index 0000000..413177a --- /dev/null +++ b/moderncvheadvii.sty @@ -0,0 +1,187 @@ +%% start of file `moderncvheadvii.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvheadvii}[2023/11/21 v2.0.0 modern curriculum vitae and letter header variant: 7] + +% details options: "details" (default) or "nodetails" +\@initializeif{\if@details}\@detailsfalse +\DeclareOption{details} {\@detailstrue} +\DeclareOption{nodetails} {\@detailsfalse} + +% left/right options: "left" (default) or "right" +\@initializeif{\if@left} \@leftfalse +\DeclareOption{left} {\@lefttrue\@rightfalse} +\@initializeif{\if@right}\@rightfalse +\DeclareOption{right} {\@leftfalse\@righttrue} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{details,left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- + + +%------------------------------------------------------------------------------- +% overall head definition +%------------------------------------------------------------------------------- +% fonts +\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape} +\renewcommand*{\titlefont}{\LARGE\mdseries\slshape} +\renewcommand*{\addressfont}{\small\mdseries\slshape} +\renewcommand*{\quotefont}{\large\slshape} + +% styles +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} + + +%------------------------------------------------------------------------------- +% resume head definition +%------------------------------------------------------------------------------- +% lengths +\@initializelength{\quotewidth} +\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically) +\renewcommand*{\recomputecvheadlengths}{% + \setlength{\quotewidth}{0.65\textwidth}} + +% commands +\renewcommand*{\makecvhead}{% + % recompute lengths (in case we are switching from letter to resume, or vice versa) + \recomputecvlengths% + % optional detailed information (pre-rendering) + \@initializebox{\makecvheaddetailsbox}% + \if@details% + \def\phonesdetails{}% + \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number + \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}% + \def\socialsdetails{}% + \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link + \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% + \savebox{\makecvheaddetailsbox}{% + \addressfont\color{color2}% + \if@left\begin{tabular}[b]{@{}r@{}}\fi% + \if@right\begin{tabular}[b]{@{}l@{}}\fi% + \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% + \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty + \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% + \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict + \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% + \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% + \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict + \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}% + \end{tabular} + }\fi% + % optional photo (pre-rendering) + \@initializebox{\makecvheadpicturebox}% + \savebox{\makecvheadpicturebox}{% + \ifthenelse{\isundefined{\@photo}}% + {}% + {% + \if@left% + \hspace*{\separatorcolumnwidth}\fi% + \color{color1}% + \setlength{\fboxrule}{\@photoframewidth}% + \ifdim\@photoframewidth=0pt% + \setlength{\fboxsep}{0pt}\fi% + \framebox{\includegraphics[width=\@photowidth]{\@photo}}}% + \if@right% + \hspace*{\separatorcolumnwidth}\fi}% + % name and title (pre-rendering) + \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% + \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% + \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt) + {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}% + {}% + \@initializebox{\makecvheadnamebox}% + \savebox{\makecvheadnamebox}{% + \begin{minipage}[b]{\makecvheadnamewidth}% + \if@left\raggedright\fi% + \if@right\raggedleft\fi% + \namestyle{\@firstname\ \@lastname}% + \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% + \end{minipage}}% + % rendering + \if@left% + \usebox{\makecvheadnamebox}% + \hfill% + \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced + \usebox{\makecvheadpicturebox}\fi% + \if@right% + \usebox{\makecvheadpicturebox}% + \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced + \hfill% + \usebox{\makecvheadnamebox}\fi% + \\[2.5em]% + % optional quote + \ifthenelse{\isundefined{\@quote}}% + {}% + {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}% + \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead + + +%------------------------------------------------------------------------------- +% letter head definition +%------------------------------------------------------------------------------- +% lengths +%\renewcommand*{\recomputeletterheadlengths}{} + +% commands +\renewcommand*{\makeletterhead}{% + % recompute lengths (in case we are switching from letter to resume, or vice versa) + \recomputeletterlengths% + % sender contact info + \hfill% + \begin{minipage}{.5\textwidth}% + % optional detailed information + \if@details% + \raggedleft% + \addressfont\textcolor{color2}{% + {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse% + % optional detailed information + \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% + \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty + \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}% + \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number + \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}% + \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}% + \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}% + \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi% + \end{minipage}\\[1em] + % recipient block + \begin{minipage}[t]{.5\textwidth} + \raggedright% + \addressfont% + {\bfseries\upshape\@recipientname}\\% + \@recipientaddress% + \end{minipage} + % date + \hfill% US style +% \\[1em]% UK style + \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900" + % opening + \raggedright% + \@opening\\[1.5em]% + % ensure no extra spacing after \makelettertitle due to a possible blank line +% \ignorespacesafterend% not working + \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}} + + +\endinput + + +%% end of file `moderncvheadvii.sty'. diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty new file mode 100644 index 0000000..c3411ba --- /dev/null +++ b/moderncvstylecontemporary.sty @@ -0,0 +1,53 @@ +%% start of file `moderncvstylecontemporary.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvstylecontemporary}[2023/11/24 v2.0.0 modern curriculum vitae and letter style scheme: contemporary] + +% head section alignment options: "left" (default) or "right" +\@initializecommand{\moderncvstyleheadoptions}{} +\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} +\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{left} +\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package + +%------------------------------------------------------------------------------- +% fonts & icons +%------------------------------------------------------------------------------- +% Latin Modern fonts +%\ifxetexorluatex +% \setmainfont{Latin Modern Roman} +% \setsansfont{Latin Modern Sans} +% \setmathfont{Latin Modern Math} +%\else + \IfFileExists{lmodern.sty}% + {\RequirePackage{lmodern}}% + {} +%\fi + +% symbols +\moderncvicons{marvosym} + + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{7} +\moderncvbody{6} + + +\endinput + + +%% end of file `moderncvstylecontemporary.sty'. From d85c39d150e78180edd7495cef51e713e0883415 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 05/14] Add new `cerulean` color theme --- moderncvcolorcerulean.sty | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 moderncvcolorcerulean.sty diff --git a/moderncvcolorcerulean.sty b/moderncvcolorcerulean.sty new file mode 100644 index 0000000..1f7cce8 --- /dev/null +++ b/moderncvcolorcerulean.sty @@ -0,0 +1,32 @@ +%% start of file `moderncvcolorcerulean.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com). +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvcolorcerulean}[2023/11/21 v2.0.0 modern curriculum vitae and letter color scheme: cerulean] + + +%------------------------------------------------------------------------------- +% color scheme definition +%------------------------------------------------------------------------------- +\definecolor{color0}{rgb}{0,0,0}% black +\definecolor{color1}{HTML}{0081a7}% cerulean +\definecolor{color2}{HTML}{4d908e}% dark cyan +\definecolor{headTL}{HTML}{00afb9}% verdigris +\colorlet{headBR}{color1} +\definecolor{headtext}{HTML}{ffffff}% white +\colorlet{headhr}{color2} + + +\endinput + + +%% end of file `moderncvcolorcerulean.sty'. From 8b74bf12f25665a669d5a469aaeec7bbf4069e2a Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 06/14] [contemporary] Update head style 7 * Provide initial header style used by the `contemporary` theme. --- moderncvheadvii.sty | 78 +++++++++++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 21 deletions(-) diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index 413177a..9619e62 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -17,6 +17,11 @@ \@initializeif{\if@details}\@detailsfalse \DeclareOption{details} {\@detailstrue} \DeclareOption{nodetails} {\@detailsfalse} +% QR options: "qr" (default) or "noqr". If "qr" is specified, a QR code is generated to point to the +% homepage and placed near the details section +\@initializeif{\if@headqr}\@headqrfalse +\DeclareOption{qr} {\@headqrtrue} +\DeclareOption{noqr} {\@headqrfalse} % left/right options: "left" (default) or "right" \@initializeif{\if@left} \@leftfalse @@ -25,29 +30,37 @@ \DeclareOption{right} {\@leftfalse\@righttrue} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{details,left} +\ExecuteOptions{details,qr,left} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- % required packages %------------------------------------------------------------------------------- +\RequirePackage{qrcode} +\RequirePackage{tikz} +\usetikzlibrary{tikzmark,fit} %------------------------------------------------------------------------------- % overall head definition %------------------------------------------------------------------------------- +\@ifundefined{\string\color@headTL}{\colorlet{headTL}{color1}}{} +\@ifundefined{\string\color@headBR}{\colorlet{headBR}{color1}}{} +\@ifundefined{\string\color@headtext}{\colorlet{headtext}{color2}}{} +\@ifundefined{\string\color@headhr}{\colorlet{headhr}{color2}}{} + % fonts -\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape} +\renewcommand*{\namefont}{\fontsize{30}{32}\rmfamily\mdseries\upshape} \renewcommand*{\titlefont}{\LARGE\mdseries\slshape} \renewcommand*{\addressfont}{\small\mdseries\slshape} \renewcommand*{\quotefont}{\large\slshape} % styles -\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}} -\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}} -\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}} -\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}} +\renewcommand*{\namestyle}[1]{{\namefont\textcolor{headtext}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#1}}} %------------------------------------------------------------------------------- @@ -73,7 +86,7 @@ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}% \savebox{\makecvheaddetailsbox}{% - \addressfont\color{color2}% + \addressfont\color{headtext}% \if@left\begin{tabular}[b]{@{}r@{}}\fi% \if@right\begin{tabular}[b]{@{}l@{}}\fi% \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet% @@ -92,15 +105,24 @@ \ifthenelse{\isundefined{\@photo}}% {}% {% - \if@left% - \hspace*{\separatorcolumnwidth}\fi% - \color{color1}% - \setlength{\fboxrule}{\@photoframewidth}% - \ifdim\@photoframewidth=0pt% - \setlength{\fboxsep}{0pt}\fi% - \framebox{\includegraphics[width=\@photowidth]{\@photo}}}% \if@right% - \hspace*{\separatorcolumnwidth}\fi}% + \hspace*{\separatorcolumnwidth}\fi% + \begin{tikzpicture} + \path[top color=headBR,bottom color=headTL,shading angle=45] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth*2); + \path[fill=white] (0,0) circle (\dimexpr\@photowidth/2+\@photoframewidth); + \begin{scope} + \clip (0,0) circle (\dimexpr\@photowidth/2); + \node[inner sep=0pt] at (0,0) {\includegraphics[width=\@photowidth]{\@photo}}; + \end{scope} + \end{tikzpicture}% + }% + \if@left% + \hspace*{\separatorcolumnwidth}\fi}% + % optional QR for homepage (pre-rendering) + \@initializebox{\makecvheadqrbox}% + \savebox{\makecvheadqrbox}{% + \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% + }% % name and title (pre-rendering) \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% @@ -112,25 +134,39 @@ \begin{minipage}[b]{\makecvheadnamewidth}% \if@left\raggedright\fi% \if@right\raggedleft\fi% - \namestyle{\@firstname\ \@lastname}% + \namestyle{\@firstname\ {\scshape\@lastname}}% \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}% \end{minipage}}% % rendering + \begin{tikzpicture}[remember picture,overlay] + \node(head-bg) [top color=headTL,bottom color=headBR,shading angle=45,inner sep=0pt, + fit={(current page.north west)(current page.north east)(pic cs:head-end)}] {}; + % Users may define `\@moderncvheadBackground` for additional background decoration + \ifthenelse{\isundefined{\@moderncvheadBackground}}{}{\@moderncvheadBackground} + + \path[draw,line width=\@photoframewidth] + (head-bg.south west) edge[color=headhr!85!black] ([xshift=8em]head-bg.south west) + ([xshift=8em]head-bg.south west) edge[color=headhr] ([xshift=-8em]head-bg.south east) + ([xshift=-8em]head-bg.south east) edge[color=headhr!85!black] (head-bg.south east); + \end{tikzpicture}% \if@left% + \usebox{\makecvheadpicturebox}% \usebox{\makecvheadnamebox}% \hfill% \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced - \usebox{\makecvheadpicturebox}\fi% + \usebox{\makecvheadqrbox}\fi% \if@right% - \usebox{\makecvheadpicturebox}% + \usebox{\makecvheadqrbox}% \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced \hfill% - \usebox{\makecvheadnamebox}\fi% - \\[2.5em]% + \usebox{\makecvheadnamebox}% + \usebox{\makecvheadpicturebox}\fi% + \\[.15em]% + \tikzmark{head-end}\\[.15em]% % optional quote \ifthenelse{\isundefined{\@quote}}% {}% - {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}% + {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[.15em]}}% \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead From 66e2655b7cb4b47d0da67d85fdc590575e08ac70 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 07/14] Initial implementation of a vertical timeline --- moderncvverticaltimeline.sty | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 moderncvverticaltimeline.sty diff --git a/moderncvverticaltimeline.sty b/moderncvverticaltimeline.sty new file mode 100644 index 0000000..1ee94a5 --- /dev/null +++ b/moderncvverticaltimeline.sty @@ -0,0 +1,79 @@ +%% start of file `moderncvverticaltimeline.sty'. +%% Copyright 2023 Javier Lopez-Gomez (javier.lopez.gomez@proton.me). +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License version 1.3c, +% available at http://www.latex-project.org/lppl/. + + +%------------------------------------------------------------------------------- +% identification +%------------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{moderncvverticaltimeline}[2023/11/29 v2.0.0 modern curriculum vitae vertical timeline] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\RequirePackage{tikz} + +%------------------------------------------------------------------------------- +% vertical timeline implementation +%------------------------------------------------------------------------------- +\tikzset{ + tl_milestone/.style={circle,inner sep=1.5pt,draw=color0!20,label={west:#1}}, + tl_link/.style={thick,densely dotted,color0!20}, +} + +\newcounter{tl@chainidx}\setcounter{tl@chainidx}{0} +\newcounter{tl@nodeidx}\setcounter{tl@nodeidx}{0} + +% Mark the end of the current chain; any `\tl@milestone` issued afterward will be on a new timeline. +\def\tl@resetchain{% + \stepcounter{tl@chainidx}% + \setcounter{tl@nodeidx}{0}% +} + +% Create a node in the current timeline and link it to the previous node; if the previous milestone +% is on the last shipped out page, draw a line that extends until the top margin. The argument is laid out as a label (default left). +\def\tl@milestone#1{% + \edef\@tl@prev{tl-\thetl@chainidx-\thetl@nodeidx}% + \stepcounter{tl@nodeidx}% + \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}% + \tikz[remember picture,overlay] { + \node[tl_milestone={#1}] (\@tl@this) {}; + \ifnum\thetl@nodeidx>1 + \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}} + \ifnum\pgf@y>0 + \draw[tl_link] (\@tl@this) -- ([yshift=-1em] \@tl@this |- current page.north); + \else + \draw[tl_link] (\@tl@this) -- (\@tl@prev); + \fi + \fi + } +} + +\AddToHook{shipout/background}{% + % If there are follow-up milestones in the current timeline, draw a line that extends until the bottom margin + \edef\@tl@prev{tl-\thetl@chainidx-\number\numexpr\thetl@nodeidx-1}% + \edef\@tl@this{tl-\thetl@chainidx-\thetl@nodeidx}% + \tikz[remember picture,overlay] { + \ifnum\thetl@nodeidx>1 + \pgfpointdiff{\pgfpointanchor{\@tl@prev}{center}}{\pgfpointanchor{\@tl@this}{center}} + \ifnum\pgf@y>0 + \draw[tl_link] (\@tl@prev) -- ([yshift=1em] \@tl@prev |- current page.south); + \fi + \fi + } +} + +\AtEndDocument{\tl@resetchain} + +\let\@old@section=\section% +\RenewDocumentCommand{\section}{sm}{\tl@resetchain\@old@section{#1}} + +\endinput + + +%% end of file `moderncvverticaltimeline.sty'. From c41143a10d5e57a298e1ee3f0166f2d7b00e7e1b Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 29 Nov 2023 18:42:33 +0100 Subject: [PATCH 08/14] [contemporary] Update body style 6 * Provide initial body style for the `contemporary` theme --- moderncvbodyvi.sty | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 610ee33..3b13b1b 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -17,13 +17,14 @@ %------------------------------------------------------------------------------- % required packages %------------------------------------------------------------------------------- +\RequirePackage{moderncvverticaltimeline} %------------------------------------------------------------------------------- % overall body definition %------------------------------------------------------------------------------- % fonts -\renewcommand*{\sectionfont}{\Large\mdseries\upshape} +\renewcommand*{\sectionfont}{\Large\upshape\bfseries} \renewcommand*{\subsectionfont}{\large\mdseries\upshape} \renewcommand*{\hintfont}{} @@ -66,11 +67,15 @@ \@initializelength{\baseletterheight} \settoheight{\baseletterheight}{\sectionstyle{o}} \setlength{\baseletterheight}{\baseletterheight-0.95ex} -\RenewDocumentCommand{\section}{sm}{% +% The optional argument can be used to place a small icon near the section name. +% E.g. `\section[\faBookmark]{Education}` +\RenewDocumentCommand{\section}{sO{}m}{% + \tl@resetchain% \par\addvspace{2.5ex}% \phantomsection{}% reset the anchor for hyperrefs - \addcontentsline{toc}{section}{#2}% - \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}% + \addcontentsline{toc}{section}{#3}% + \strut\sectionstyle{\textcolor{color1!55!white}{{#2}\rule{.75ex}{0pt}\rule{1pt}{\heightof{#3}}}% + \rule{.75ex}{0pt}#3}% \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading \RenewDocumentCommand{\subsection}{sm}{% @@ -105,12 +110,12 @@ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}} \renewcommand*{\cventry}[7][.25em]{% - \cvitem[#1]{#2}{% + \cvitem[#1]{\tl@milestone{#2}}{% {\bfseries#3}% \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}% \ifthenelse{\equal{#5}{}}{}{, #5}% \ifthenelse{\equal{#6}{}}{}{, #6}% - .\strut% + \strut% \ifx&% \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}} From fd3bf93f9ae970e710fd716209b3ef1fc8ed2624 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 29 Apr 2024 20:52:13 +0200 Subject: [PATCH 09/14] [contemporary] Support subject and signature in cover letter --- moderncvbodyvi.sty | 3 ++- moderncvheadvii.sty | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 3b13b1b..8a765ce 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -165,7 +165,8 @@ \setlength{\parskip}{6\p@}} \renewcommand*{\makeletterclosing}{ - \@closing\\[3em]% + \@closing\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set + \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}} {\bfseries\@firstname~\@lastname}% \ifthenelse{\isundefined{\@enclosure}}{}{% \\% diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index 9619e62..c01a232 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -209,6 +209,8 @@ \hfill% US style % \\[1em]% UK style \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900" + % optional subject + \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}} % opening \raggedright% \@opening\\[1.5em]% From 1ac6c08efab062aecc86a28fd4b95b1795f23612 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 29 Apr 2024 21:14:42 +0200 Subject: [PATCH 10/14] Update `template.tex` --- template.tex | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/template.tex b/template.tex index 1a8314f..48a7fce 100644 --- a/template.tex +++ b/template.tex @@ -8,17 +8,23 @@ \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') -\moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' +\moderncvcolor{cerulean} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'; for contemporary style use 'cerulean' % moderncv themes -\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' +\moderncvstyle[]{contemporary} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle', 'fancy' and 'contemporary' + % the 'contemporary' style optionally takes the `qr` (default) or `noqr` options %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page % adjust the page margins -\usepackage[scale=0.75]{geometry} +\usepackage[hmargin=0.5in,vmargin=10pt]{geometry} % the 'contemporary' style looks better with reduced margins; uncomment the line below for increased margin +%\usepackage[scale=0.75]{geometry} %\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates %\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks... +% the 'contemporary' style allows to append additional elements to the head background; uncomment and customize if needed +%\def\@moderncvheadBackground{ +%} + % font loading % for luatex and xetex, do not use inputenc and fontenc % see https://tex.stackexchange.com/a/496643 @@ -30,6 +36,12 @@ \setsansfont{Latin Modern Sans} \setmonofont{Latin Modern Mono} \setmathfont{Latin Modern Math} + + % you may also consider Fira Sans Light for a extra modern look + %\setsansfont[ItalicFont={Fira Sans Light Italic},% + % BoldFont={Fira Sans},% + % BoldItalicFont={Fira Sans Italic}]% + % {Fira Sans Light}% \else \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} @@ -95,7 +107,7 @@ \extrainfo{additional information} % optional, remove / comment the line if not wanted -\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file +\photo[64pt][2pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 2pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file \quote{Some quote} % optional, remove / comment the line if not wanted % bibliography adjustments (only useful if you make citations in your resume, or print a list of publications using BibTeX) @@ -116,7 +128,7 @@ %----- resume --------------------------------------------------------- \makecvtitle -\section{Education} +\section{Education} % for 'contemporary' style use optional argument for displaying an icon, e.g. \section[\faGraduationCap]{Education} \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} From b5d6a6e79ffd55b36fed6aee61fabe761c0cff2c Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 11/14] [contemporary] Properly support `qr` and `noqr` options --- moderncvheadvii.sty | 7 ++++--- moderncvstylecontemporary.sty | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/moderncvheadvii.sty b/moderncvheadvii.sty index c01a232..f0c259e 100644 --- a/moderncvheadvii.sty +++ b/moderncvheadvii.sty @@ -120,9 +120,10 @@ \hspace*{\separatorcolumnwidth}\fi}% % optional QR for homepage (pre-rendering) \@initializebox{\makecvheadqrbox}% - \savebox{\makecvheadqrbox}{% - \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% - }% + \if@headqr% + \savebox{\makecvheadqrbox}{% + \ifthenelse{\isundefined{\@homepage}}{}{\tikz\node[inner sep=1ex,fill=white]{\qrcode[height=1.5cm]{\@homepage}};}% + }\fi% % name and title (pre-rendering) \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}% \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}% diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index c3411ba..a37c856 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -17,9 +17,11 @@ \@initializecommand{\moderncvstyleheadoptions}{} \DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} \DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} +\DeclareOption{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}} +\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}} \DeclareOption*{}% avoid choking on unknown options -\ExecuteOptions{left} +\ExecuteOptions{left,qr} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package %------------------------------------------------------------------------------- From d0a5ff550ea4c6a7af2afb0a4ce7eae886f705cd Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 12/14] [moderncvskillmatrix] Support the `circle` option --- moderncvskillmatrix.sty | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index 5c1a893..3f4fb34 100644 --- a/moderncvskillmatrix.sty +++ b/moderncvskillmatrix.sty @@ -218,6 +218,10 @@ \@initializeif{\if@moderncvbodyv}\@moderncvbodyvfalse \DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue} +% If option `circle` is specified, use circles instead of small rectangles for rating skills +\@initializeif{\if@cvskillcircle}\@cvskillcirclefalse +\DeclareOption{circle}{\@cvskillcircletrue} + \DeclareOption*{}% avoid choking on unknown options \ExecuteOptions{moderncvbodyi} \ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package @@ -239,8 +243,14 @@ % %------------------------------------------------------------------------------- % The code for the Skilllevel illustration with the little boxes. % This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git -\@initializelength{\cvSkill@RectangleSize} -\setlength{\cvSkill@RectangleSize}{1.2ex} +\@initializelength{\cvSkill@ShapeSize} +\if@cvskillcircle% + \setlength{\cvSkill@ShapeSize}{.7ex}% + \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) circle (\cvSkill@ShapeSize);} +\else + \setlength{\cvSkill@ShapeSize}{1.2ex} + \def\cvSkill@Shape#1{\tikz\filldraw[#1] (0, 0) rectangle (\cvSkill@ShapeSize, \cvSkill@ShapeSize);} +\fi \newcount\my@repeat@count \DeclareDocumentCommand{\cvskill}{m}{% % Illustrate skill level with little colored boxes. @@ -252,10 +262,10 @@ % \cvskill{3} \begingroup \my@repeat@count=\z@ - \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[skillmatrixfullcolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count<#1\do{\cvSkill@Shape{skillmatrixfullcolor}\advance% \my@repeat@count\@ne\,}% \my@repeat@count=\numexpr5-\z@\relax - \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[skillmatrixemptycolor] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \@whilenum\my@repeat@count>#1\do{\cvSkill@Shape{skillmatrixemptycolor}\advance% \my@repeat@count\m@ne\,}% \endgroup }% end \cvskill From 02a928723b7f8b5724e8ec3860a5b68b60dd9461 Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Wed, 1 May 2024 13:47:23 +0200 Subject: [PATCH 13/14] [contemporary] Properly support skill matrix --- moderncvbodyvi.sty | 5 +++++ moderncvstylecontemporary.sty | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/moderncvbodyvi.sty b/moderncvbodyvi.sty index 8a765ce..60f9997 100644 --- a/moderncvbodyvi.sty +++ b/moderncvbodyvi.sty @@ -18,6 +18,10 @@ % required packages %------------------------------------------------------------------------------- \RequirePackage{moderncvverticaltimeline} +% No customization currently exists for `modercvbodyvi`; just reuse +% `moderncvbodyi`. We might consider supporting a short table format (only skill +% name and rating) in the future. +\RequirePackage[moderncvbodyi,circle]{moderncvskillmatrix} %------------------------------------------------------------------------------- @@ -61,6 +65,7 @@ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% + \recompute@cvskillmatrix@lengths % regular lengths \setlength{\parskip}{0\p@}} diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index a37c856..848b94d 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -41,6 +41,13 @@ % symbols \moderncvicons{marvosym} +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% skillmatrix +\colorlet{bodyrulecolor}{color1} +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} %------------------------------------------------------------------------------- % header, body & footer From 5353471fcecfb4cd8bb37d16dcbcddd124f97d4f Mon Sep 17 00:00:00 2001 From: Javier Lopez-Gomez Date: Mon, 6 May 2024 17:52:09 +0200 Subject: [PATCH 14/14] [contemporary] Fix social icons appering in the header --- commons/colors.tex | 2 +- moderncvstylecontemporary.sty | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/commons/colors.tex b/commons/colors.tex index aaa6319..7f840ff 100644 --- a/commons/colors.tex +++ b/commons/colors.tex @@ -15,7 +15,7 @@ % default colors %------------------------------------------------------------------------------- -\colorlet{default-socialicon-color}{darkgrey} +\@ifundefined{\string\color@default-socialicon-color}{\colorlet{default-socialicon-color}{darkgrey}}{} %------------------------------------------------------------------------------- % colors for social icons diff --git a/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty index 848b94d..32f02ce 100644 --- a/moderncvstylecontemporary.sty +++ b/moderncvstylecontemporary.sty @@ -39,7 +39,8 @@ %\fi % symbols -\moderncvicons{marvosym} +\providecolor{default-socialicon-color}{named}{headtext} +\moderncvicons{symbols} %------------------------------------------------------------------------------- % Colors