mirror of
https://github.com/moderncv/moderncv.git
synced 2026-02-06 10:05:19 +01:00
Merge branch 'master' into hidden_header_options
This commit is contained in:
commit
4c77237239
31 changed files with 877 additions and 98 deletions
|
|
@ -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).
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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{<platform>}:
|
||||
\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{<platform>}:
|
|||
\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.
|
||||
|
|
|
|||
10
moderncv.cls
10
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}}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
186
moderncvbodyvi.sty
Normal file
186
moderncvbodyvi.sty
Normal file
|
|
@ -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'.
|
||||
32
moderncvcolorcerulean.sty
Normal file
32
moderncvcolorcerulean.sty
Normal file
|
|
@ -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'.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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%
|
||||
|
|
|
|||
|
|
@ -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}}%
|
||||
|
|
|
|||
|
|
@ -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}}%
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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%
|
||||
|
|
|
|||
|
|
@ -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}}%
|
||||
|
|
|
|||
226
moderncvheadvii.sty
Normal file
226
moderncvheadvii.sty
Normal file
|
|
@ -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'.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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~}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
63
moderncvstylecontemporary.sty
Normal file
63
moderncvstylecontemporary.sty
Normal file
|
|
@ -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'.
|
||||
|
|
@ -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
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -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
|
||||
%-------------------------------------------------------------------------------
|
||||
|
|
|
|||
79
moderncvverticaltimeline.sty
Normal file
79
moderncvverticaltimeline.sty
Normal file
|
|
@ -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'.
|
||||
24
template.tex
24
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}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue