208 lines
9.8 KiB
TeX
208 lines
9.8 KiB
TeX
%% start of file `moderncvstylealx.sty'.
|
|
%% Copyright 2006-2013 Xavier Danaux (xdanaux@gmail.com).
|
|
%
|
|
% 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{moderncvstylealx}[2020/03/27 v1.0 modern curriculum vitae and letter style scheme: alx]
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
% required packages
|
|
%-------------------------------------------------------------------------------
|
|
\RequirePackage{moderncvstyleclassic}
|
|
\moderncvicons{awesome}
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
% overrides for classic style
|
|
%-------------------------------------------------------------------------------
|
|
|
|
\renewcommand*{\hintfont}{\footnotesize\slshape}
|
|
\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color2}{#1}}}
|
|
\setlength{\hintscolumnwidth}{0.15\textwidth}
|
|
|
|
% makes a references block
|
|
% usage: \cvref[spacing]{name}{title}{company}{email}{phone}
|
|
\newcommand*{\cvref}[5]{%
|
|
\textbf{#1}\newline%
|
|
#2\newline%
|
|
#3\newline%
|
|
\emaillink{#4}\newline%
|
|
#5%
|
|
}%
|
|
|
|
%\newcommand\bully[]{\color{color1}$\bullet$\hspace{.25em}\color{color0} }
|
|
%\renewcommand\bully[]{\hintstyle{$\bullet$}\hspace{.25em}}
|
|
%\renewcommand\dashi[]{\color{color1}--\hspace{.25em}\color{color0} }
|
|
|
|
\renewcommand*{\cvitem}[3][.5em]{%
|
|
\begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
|
|
\raggedleft\hintstyle{#2} &{#3}%
|
|
\end{tabular}%
|
|
\par\addvspace{#1}}
|
|
|
|
\renewcommand*{\cventry}[7][.5em]{%
|
|
\cvitem[#1]{#2}{%
|
|
{\bfseries#3}%
|
|
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
|
|
\ifthenelse{\equal{#5}{}}{}{, #5}%
|
|
\ifthenelse{\equal{#6}{}}{}{, #6}%
|
|
.\strut%
|
|
\ifx&%
|
|
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi
|
|
}}
|
|
|
|
\RenewDocumentCommand{\section}{sm}{%
|
|
\par\addvspace{4ex}%
|
|
\phantomsection{}% reset the anchor for hyperrefs
|
|
\addcontentsline{toc}{section}{#2}%
|
|
\parbox[t]{\hintscolumnwidth}{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\hspace{\hintscolumnwidth}}}%
|
|
\hspace{\separatorcolumnwidth}%
|
|
\parbox[t]{\maincolumnwidth}{\strut\sectionstyle{#2}}%
|
|
\par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
|
|
|
|
% optional maketitle width to force a certain width (if set to 0pt, the width is calculated automatically)
|
|
\newlength{\makecvtitlenamewidth}
|
|
\setlength{\makecvtitlenamewidth}{0pt}% dummy value
|
|
\renewcommand*{\makecvtitle}{%
|
|
% recompute lengths (in case we are switching from letter to resume, or vice versa)
|
|
\recomputecvlengths%
|
|
% optional detailed information (pre-rendering)
|
|
\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}}%
|
|
\newbox{\makecvtitledetailsbox}%
|
|
\savebox{\makecvtitledetailsbox}{%
|
|
\addressfont\color{color2}%
|
|
\begin{tabular}[b]{@{}r@{}}%
|
|
\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}{}}{}{ \@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}
|
|
}%
|
|
% optional photo (pre-rendering)
|
|
\newbox{\makecvtitlepicturebox}%
|
|
\savebox{\makecvtitlepicturebox}{%
|
|
\ifthenelse{\isundefined{\@photo}}%
|
|
{}%
|
|
{%
|
|
\hspace*{\separatorcolumnwidth}%
|
|
\color{color1}%
|
|
\setlength{\fboxrule}{\@photoframewidth}%
|
|
\ifdim\@photoframewidth=0pt%
|
|
\setlength{\fboxsep}{0pt}\fi%
|
|
\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
|
|
% name and title
|
|
\newlength{\makecvtitledetailswidth}\settowidth{\makecvtitledetailswidth}{\usebox{\makecvtitledetailsbox}}%
|
|
\newlength{\makecvtitlepicturewidth}\settowidth{\makecvtitlepicturewidth}{\usebox{\makecvtitlepicturebox}}%
|
|
\ifthenelse{\lengthtest{\makecvtitlenamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvtitlenamewidth=0pt)
|
|
{\setlength{\makecvtitlenamewidth}{\textwidth-\makecvtitledetailswidth-\makecvtitlepicturewidth}}%
|
|
{}%
|
|
\begin{minipage}[b]{\makecvtitlenamewidth}%
|
|
\namestyle{\@firstname\ \@lastname}%
|
|
\ifthenelse{\equal{\@title}{}}{}{\\[.5em]\titlestyle{\@title}}%
|
|
\end{minipage}%
|
|
\hfill%
|
|
% optional detailed information (rendering)
|
|
\llap{\usebox{\makecvtitledetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvtitlenamewidth is forced
|
|
% optional photo (rendering)
|
|
\usebox{\makecvtitlepicturebox}\\[1.5em]%
|
|
% optional quote
|
|
\ifthenelse{\isundefined{\@quote}}%
|
|
{}%
|
|
{{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
|
|
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvtitle
|
|
|
|
%-------------------------------------------------------------------------------
|
|
% overall style definition
|
|
%-------------------------------------------------------------------------------
|
|
% commands
|
|
% footer symbol used to separate footer elements
|
|
\newcommand*{\footersymbol}{%
|
|
{~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
|
|
% internal command to add an element to the footer
|
|
% it collects the elements in a temporary box, and checks when to flush the box
|
|
\newsavebox{\footerbox}%
|
|
\newsavebox{\footertempbox}%
|
|
\newlength{\footerwidth}%
|
|
\newlength{\footerboxwidth}%
|
|
\newif\if@firstfooterelement\@firstfooterelementtrue%
|
|
% adds an element to the footer, separated by footersymbol
|
|
% usage: \addtofooter[footersymbol]{element}
|
|
\newcommand*{\addtofooter}[2][\footersymbol]{%
|
|
\if@firstfooterelement%
|
|
\savebox{\footertempbox}{\usebox{\footerbox}#2}%
|
|
\else%
|
|
\savebox{\footertempbox}{\usebox{\footerbox}#1#2}\fi%
|
|
\settowidth{\footerboxwidth}{\usebox{\footertempbox}}%
|
|
\ifnum\footerboxwidth<\footerwidth%
|
|
\savebox{\footerbox}{\usebox{\footertempbox}}%
|
|
\@firstfooterelementfalse%
|
|
\else%
|
|
\flushfooter\\%
|
|
\savebox{\footerbox}{#2}%
|
|
\savebox{\footertempbox}{#2}%
|
|
\settowidth{\footerboxwidth}{\usebox{\footerbox}}%
|
|
\@firstfooterelementfalse\fi}
|
|
% internal command to flush the footer
|
|
\newcommand*{\flushfooter}{%
|
|
\strut\usebox{\footerbox}%
|
|
\savebox{\footerbox}{}%
|
|
\savebox{\footertempbox}{}%
|
|
\setlength{\footerboxwidth}{0pt}}
|
|
|
|
|
|
%-------------------------------------------------------------------------------
|
|
% resume style definition
|
|
%-------------------------------------------------------------------------------
|
|
% fonts
|
|
\renewcommand*{\namefont}{\fontsize{22}{50}\mdseries\upshape}
|
|
\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
|
|
\renewcommand*{\titlefont}{\fontsize{12}{12}\mdseries\slshape}
|
|
|
|
\renewcommand*{\makecvfooter}{%
|
|
\setlength{\footerwidth}{0.8\textwidth}%
|
|
\fancypagestyle{plain}{%
|
|
\fancyfoot[c]{%
|
|
\parbox[b]{\footerwidth}{%
|
|
\centering%
|
|
\color{color2}\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}}{}{\addtofooter[]{\addresssymbol\@addressstreet}%
|
|
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofooter[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
|
|
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofooter[~--~]{\@addresscountry}}%
|
|
\flushfooter\@firstfooterelementtrue\\}%
|
|
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
|
|
\addtofooter{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
|
|
\ifthenelse{\isundefined{\@email}}{}{\addtofooter{\emailsymbol\emaillink{\@email}}}%
|
|
\ifthenelse{\isundefined{\@homepage}}{}{\addtofooter{\homepagesymbol\httplink{\@homepage}}}%
|
|
\collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
|
|
\addtofooter{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
|
|
\ifthenelse{\isundefined{\@extrainfo}}{}{\addtofooter{\@extrainfo}}%
|
|
\ifthenelse{\lengthtest{\footerboxwidth=0pt}}{}{\flushfooter}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used
|
|
}}}%
|
|
\pagestyle{plain}}
|
|
|
|
\newcommand*{\parabreak}{\par\addvspace{3ex}}
|
|
\newcommand*{\smparabreak}{\par\addvspace{1ex}}
|
|
|
|
\endinput
|
|
|
|
|
|
%% end of file `moderncvstylealx.sty'.
|