diff --git a/moderncvbodyiii.sty b/moderncvbodyiii.sty index e86ad1b..c14da6b 100644 --- a/moderncvbodyiii.sty +++ b/moderncvbodyiii.sty @@ -37,7 +37,9 @@ %------------------------------------------------------------------------------- % required packages %------------------------------------------------------------------------------- - +% provides the commands for the skillmatrix as well as the command +% \recomputecvskillmatrixlengths +\RequirePackage[moderncvbodyiii]{moderncvskillmatrix} %------------------------------------------------------------------------------- % overall body definition @@ -89,7 +91,6 @@ %% include moderncv Skillmatrix code \input{moderncvbodyiiiskillmatrix.sty} - % commands \renewcommand*{\recomputecvbodylengths}{% % body lengths diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty new file mode 100644 index 0000000..c2ddeac --- /dev/null +++ b/moderncvskillmatrix.sty @@ -0,0 +1,289 @@ +%% start of file `moderncvskillmatrix.sty'. +%% Copyright 2021 David Seus (cryptointerest@posteo.de). +% +% This package provides a skill matrix template for the moderncv package. +% +% 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{moderncvskillmatrix}[2021/01/18 v2.1.0 modern curriculum vitae and letter skill matrix] + +% The definitions need to be adjusted depending on which moderncvbody.sty style is usde. +% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv" +\@initializeif{\if@moderncvbodyi}\@moderncvbodyifalse +\DeclareOption{moderncvbodyi}{\@moderncvbodyitrue\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse} +\@initializeif{\if@moderncvbodyii}\@moderncvbodyiifalse +\DeclareOption{moderncvbodyii}{\@moderncvbodyifalse\@moderncvbodyiitrue\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse} +\@initializeif{\if@moderncvbodyiii}\@moderncvbodyiiifalse +\DeclareOption{moderncvbodyiii}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiitrue\@moderncvbodyivfalse\@moderncvbodyvfalse} +\@initializeif{\if@moderncvbodyiv}\@moderncvbodyivfalse +\DeclareOption{moderncvbodyiv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivtrue\@moderncvbodyvfalse} +\@initializeif{\if@moderncvbodyv}\@moderncvbodyvfalse +\DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue} + +\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 + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\RequirePackage{tikz} +\RequirePackage{multirow} +% package arydshln is needed for the dashed lines but is incompatible with fancy style +\if@moderncvbodyv% +% \RequirePackage{arydshln} % incompatible with fancy style +\else% + \RequirePackage{arydshln} % incompatible with fancy style +\fi + +%------------------------------------------------------------------------------- +% overall body definition +%------------------------------------------------------------------------------- +% The code for the Skilllevel illustration with the little boxes. +% This is idea stolen from the limecv package +\@initializelength{\cvSkillRectangleSize} +\setlength{\cvSkillRectangleSize}{1.2ex} +\newcount\my@repeat@count +\DeclareDocumentCommand{\cvSkill}{m}{% + \begingroup + \my@repeat@count=\z@ + \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkillRectangleSize, \cvSkillRectangleSize);\advance% + \my@repeat@count\@ne\,}% + \my@repeat@count=\numexpr5-\z@\relax + \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkillRectangleSize, \cvSkillRectangleSize);\advance% + \my@repeat@count\m@ne\,}% + \endgroup +} + +\@initializelength{\cvskillwidth} +\@initializelength{\cvskilldescriptorwidth} +\@initializelength{\cvskilllegenddescriptorwidth} +\@initializelength{\cvskillexperiencewidth} +\@initializelength{\skillmatrixcolumnwidth} +\@initializelength{\skillmatrixcommentwidth} +\@initializelength{\skillmatrixcommentpadding} +\@initializelength{\skillmatrixhintscolumnwidth} +\@initializelength{\skilllegendhintscolumnwidth} +\NewDocumentCommand{\recomputecvskillmatrixlengths}{}{% + \setlength{\skillmatrixcommentpadding}{1ex} + \setlength{\separatorcolumnwidth}{\skillmatrixcommentpadding} + \setlength{\skillmatrixhintscolumnwidth}{\widthof{``Languages''}} + \setlength{\skilllegendhintscolumnwidth}{\skillmatrixhintscolumnwidth} %0.175\textwidth +% \setlength{\skillmatrixhintscolumnwidth}{0.14\textwidth} %0.175\textwidth + \setlength{\cvskillwidth}{\widthof{\cvSkill{5}}} + \setlength{\cvskillexperiencewidth}{\widthof{``Jahre''}} + \@initializelength{\matrixbodylength} + \setlength{\matrixbodylength}{\maincolumnwidth-\skillmatrixhintscolumnwidth-\separatorcolumnwidth} + \setlength{\skillmatrixcolumnwidth}{0.45\matrixbodylength}% + \setlength{\cvskilldescriptorwidth}{\skillmatrixcolumnwidth-\cvskillwidth-\cvskillexperiencewidth} + \setlength{\skillmatrixcommentwidth}{\matrixbodylength-\skillmatrixcolumnwidth-\skillmatrixcommentpadding}% + \setlength{\cvskilllegenddescriptorwidth}{0.5\matrixbodylength-\cvskillwidth-\skillmatrixcommentpadding} + % regular lengths + \setlength{\parskip}{0\p@}} + + +% % fonts +% \renewcommand*{\sectionfont}{% +% \if@norules% +% \Large\bfseries\scshape% +% \else% +% \Large\bfseries\upshape\fi} +% \renewcommand*{\subsectionfont}{% +% \if@norules% +% \large\mdseries\itshape% +% \else% +% \large\upshape\fontseries{sb}\selectfont\fi} +% \renewcommand*{\hintfont}{\bfseries} +% +% % styles +% \renewcommand*{\sectionstyle}[1]{{% +% \if@center\centering\else% +% \if@right\raggedleft\fi\fi% +% \sectionfont\textcolor{color1}{#1}% +% \if@shortrules\else% +% \par\fi}} +% \renewcommand*{\subsectionstyle}[1]{{% +% \if@center\centering\else% +% \if@right\raggedleft\fi\fi% +% \subsectionfont\textcolor{color1}{#1}% +% \if@shortrules\else\if@mixedrules\else% +% \par\fi\fi}} +% \renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}} +% +% +% %------------------------------------------------------------------------------- +% % resume body definition +% %------------------------------------------------------------------------------- +% % lengths +% % used by \cvitem (and all children command) +% \@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.3\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} +% +% %% include moderncv Skillmatrix code +% \input{moderncvbodyiiiskillmatrix.sty} +% +% % commands +% \renewcommand*{\recomputecvbodylengths}{% +% % body lengths +% \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip}% +% \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}% +% \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}% +% \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}% +% \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}% +% \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}% +% \recomputecvskillmatrixlengths +% % regular lengths +% \setlength{\parskip}{0\p@}} +% +% \RenewDocumentCommand{\section}{sm}{% +% \par\addvspace{2.5ex}% +% \phantomsection{}% reset the anchor for hyperrefs +% \addcontentsline{toc}{section}{#2}% +% \if@left\else\if@fullrules\else\if@mixedrules\else% +% \sectionrule\fi\fi\fi% +% \strut\sectionstyle{#2}% +% \if@fullrules% +% \sectionrule% +% \else\if@mixedrules% +% \sectionrule% +% \else\if@right\else% +% \sectionrule\fi\fi\fi% +% \par\nobreak\addvspace{1ex}\@afterheading} +% +% \RenewDocumentCommand{\subsection}{sm}{% +% \par\addvspace{1ex}% +% \phantomsection{}% +% \addcontentsline{toc}{subsection}{#2}% +% \if@left\else\if@fullrules\else% +% \subsectionrule\fi\fi% +% \strut\subsectionstyle{#2}% +% \if@fullrules% +% \subsectionrule% +% \else\if@right\else% +% \subsectionrule\fi\fi% +% \par\nobreak\addvspace{0.5ex}\@afterheading} +% +% \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} +% \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}} +% \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}} +% \if@norules% +% \renewcommand*{\sectionrule}{} +% \renewcommand*{\subsectionrule}{}\fi +% +% \renewcommand*{\cvitem}[3][.25em]{% +% \ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}% +% \par\addvspace{#1}} +% +% \renewcommand*{\cvdoubleitem}[5][.25em]{% +% \begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}% +% \hfill% fill of \separatorcolumnwidth +% \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}% +% \par\addvspace{#1}} +% +% \renewcommand*{\cvlistitem}[2][.25em]{% +% \listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}% +% \par\addvspace{#1}} +% +% \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]{ +% \begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}% +% {\bfseries #4} & {\bfseries #5}\\% +% {\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}} & {\itshape #2}\\% +% \end{tabular*}% +% \ifx&% +% \else{\\% +% \begin{minipage}{\maincolumnwidth}% +% \small#7% +% \end{minipage}}\fi% +% \par\addvspace{#1}} +% +% \@initializebox{\cvitemwithcommentmainbox} +% \@initializelength{\cvitemwithcommentmainlength} +% \@initializelength{\cvitemwithcommentcommentlength} +% \renewcommand*{\cvitemwithcomment}[4][.25em]{% +% \savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}% +% \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}% +% \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}% +% \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}% +% \hfill% fill of \separatorcolumnwidth +% \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}% +% \par\addvspace{#1}} +% +% \renewenvironment{thebibliography}[1]% +% {% +% \bibliographyhead{\refname}% +% % \small% +% \begin{list}{\bibliographyitemlabel}% +% {% +% \setlength{\topsep}{0pt}% +% \setlength{\labelwidth}{0pt}% +% \ifthenelse{\equal{\bibliographyitemlabel}{}}% +% {\setlength{\labelsep}{0pt}}% +% {\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}{% +% \recomputecvbodylengths% +% \setlength{\parskip}{6\p@}} +% +% \renewcommand*{\makeletterclosing}{ +% \@closing\\[3em]% +% {\bfseries\@firstname~\@lastname}% +% \ifthenelse{\isundefined{\@enclosure}}{}{% +% \\% +% \vfil% +% {\color{color2}\itshape\enclname: \@enclosure}}% +% \vfil} +% + +\endinput + + +%% end of file `moderncvskillmatrix.sty'. diff --git a/template.tex b/template.tex index a74c60e..419ae2e 100644 --- a/template.tex +++ b/template.tex @@ -6,10 +6,10 @@ % available at http://www.latex-project.org/lppl/. -\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') +\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') % moderncv themes -\moderncvstyle{fancy} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' +\moderncvstyle[right]{banking} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' \moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' %\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