diff --git a/CHANGELOG b/CHANGELOG index 201c73a..32c5ba4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -19,6 +19,9 @@ 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) +- Systematize colors and make them user adjustable. See documentation for details. + This requires the \moderncvcolor to be issued BEFORE \moderncvstyle. - all styles: make the head options 'details' and 'nodetails' available to the user. (previously they were hidden). Oldstyle does not respond too well to nodetails. - casual style: make the head options 'alternate', 'details' and 'nodetails' available to the user. (previously they were hidden). 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/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 7f465ed..227b773 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}% @@ -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 %------ @@ -501,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/moderncvbodyvi.sty b/moderncvbodyvi.sty new file mode 100644 index 0000000..60f9997 --- /dev/null +++ b/moderncvbodyvi.sty @@ -0,0 +1,186 @@ +%% 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 +%------------------------------------------------------------------------------- +\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} + + +%------------------------------------------------------------------------------- +% overall body definition +%------------------------------------------------------------------------------- +% fonts +\renewcommand*{\sectionfont}{\Large\upshape\bfseries} +\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}% + \recompute@cvskillmatrix@lengths + % regular lengths + \setlength{\parskip}{0\p@}} + +\@initializelength{\baseletterheight} +\settoheight{\baseletterheight}{\sectionstyle{o}} +\setlength{\baseletterheight}{\baseletterheight-0.95ex} +% 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}{#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}{% + \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]{\tl@milestone{#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\ifthenelse{\isundefined{\@signature}}{\\[3em]}{\\[1em]}% shrink space when signature is set + \ifthenelse{\isundefined{\@signature}}{}{{\@signature\\}} + {\bfseries\@firstname~\@lastname}% + \ifthenelse{\isundefined{\@enclosure}}{}{% + \\% + \vfil% + {\color{color2}\itshape\enclname: \@enclosure}}% + \vfil} + + +\endinput + + +%% end of file `moderncvbodyvi.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'. 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 ef1d16a..73ed246 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/moderncvheadvii.sty b/moderncvheadvii.sty new file mode 100644 index 0000000..f0c259e --- /dev/null +++ b/moderncvheadvii.sty @@ -0,0 +1,226 @@ +%% 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} +% 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 +\DeclareOption{left} {\@lefttrue\@rightfalse} +\@initializeif{\if@right}\@rightfalse +\DeclareOption{right} {\@leftfalse\@righttrue} + +\DeclareOption*{}% avoid choking on unknown options +\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{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{headtext}{#1}}} +\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{headtext}{#1}}} +\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{headtext}{#1}}} +\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color0}{#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{headtext}% + \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@right% + \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}% + \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}}% + \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\ {\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{\makecvheadqrbox}\fi% + \if@right% + \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}% + \usebox{\makecvheadpicturebox}\fi% + \\[.15em]% + \tikzmark{head-end}\\[.15em]% + % optional quote + \ifthenelse{\isundefined{\@quote}}% + {}% + {{\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 + + +%------------------------------------------------------------------------------- +% 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" + % optional subject + \ifthenelse{\isundefined{\@subject}}{}{{\bfseries\@subject\\[3em]}} + % 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/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/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index 6cf41c0..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[color1] (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[color2!30] (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 @@ -596,7 +606,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 +660,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 +707,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -766,7 +776,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 +826,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 +873,7 @@ }{% \cvitem[-0.5em]{#8}{}% }% - \arrayrulecolor{color1}% + \arrayrulecolor{bodyrulecolor}% \setlength\arrayrulewidth{\separatorrulewidth}% \RenewDocumentCommand{\@starIndependentTabular}{}{% \begingroup% @@ -924,7 +934,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 +948,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 +1000,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 +1028,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 7bfbaa4..448d30e 100644 --- a/moderncvstylebanking.sty +++ b/moderncvstylebanking.sty @@ -66,7 +66,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 953e9e6..a646615 100644 --- a/moderncvstylecasual.sty +++ b/moderncvstylecasual.sty @@ -53,6 +53,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 73fe15d..8510b2a 100644 --- a/moderncvstyleclassic.sty +++ b/moderncvstyleclassic.sty @@ -52,6 +52,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/moderncvstylecontemporary.sty b/moderncvstylecontemporary.sty new file mode 100644 index 0000000..32f02ce --- /dev/null +++ b/moderncvstylecontemporary.sty @@ -0,0 +1,63 @@ +%% 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{qr} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,qr}} +\DeclareOption{noqr}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,noqr}} + +\DeclareOption*{}% avoid choking on unknown options +\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 + +%------------------------------------------------------------------------------- +% 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 +\providecolor{default-socialicon-color}{named}{headtext} +\moderncvicons{symbols} + +%------------------------------------------------------------------------------- +% Colors +%------------------------------------------------------------------------------- +% skillmatrix +\colorlet{bodyrulecolor}{color1} +\colorlet{skillmatrixfullcolor}{color1} +\colorlet{skillmatrixemptycolor}{color2!30} + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{7} +\moderncvbody{6} + + +\endinput + + +%% end of file `moderncvstylecontemporary.sty'. 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 bd141ad..980388d 100644 --- a/moderncvstylefancy.sty +++ b/moderncvstylefancy.sty @@ -27,6 +27,30 @@ \ExecuteOptions{symbols,details} \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 402126f..ccc92cd 100644 --- a/moderncvstyleoldstyle.sty +++ b/moderncvstyleoldstyle.sty @@ -57,6 +57,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/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'. diff --git a/template.tex b/template.tex index 750b4ce..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{cerulean} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'; for contemporary style use 'cerulean' % 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' +\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} @@ -90,10 +102,12 @@ \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 -\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) @@ -114,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}