From 45d75f428f361acfcb3e959064d1dcb82c508740 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 20 Jan 2021 18:47:50 +0100 Subject: [PATCH] add alternative legend style \cvskillplainlegend --- moderncvskillmatrix.sty | 188 ++++++++++++++++++++++++++++++++++++++-- template.tex | 9 +- 2 files changed, 190 insertions(+), 7 deletions(-) diff --git a/moderncvskillmatrix.sty b/moderncvskillmatrix.sty index b70d4fb..533515a 100644 --- a/moderncvskillmatrix.sty +++ b/moderncvskillmatrix.sty @@ -44,7 +44,31 @@ % -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns % -The design of the table is such that the entry stands in the first column but % occupies rows two and three. This has been done to accomodate english and german defaults. -% TODO: Add more generic table without this spciality. +% An alternative is provided by \cvskillplainlegend +% +% +% \cvskillplainlegend[*][][][][][][]{} +% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% In this legend, the first three skill levels are in one column +% +% Input: +% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. +% For the fancy style, the asterix has no meaning. +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string describing meaning of \cvskill{1}, default: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \cvskillplainlegend{} print default legend +% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines +% +% Note: +% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns % % % \cvskillhead[][][][][]% @@ -358,7 +382,6 @@ % %------------------------------------------------------------------------------- % % \setcvskillcolumns and \setcvskilllegendcolumns % %------------------------------------------------------------------------------- - % \setcvskillcolumns[][][] \DeclareDocumentCommand{\setcvskillcolumns}{+O{\skillmatrix@hintscolumnwidth} +O{\skillmatrix@columnwidth} +O{\cvskill@experiencewidth}}{% % adjust column width of skill table @@ -538,7 +561,7 @@ % %------------------------------------------------------------------------------- % % \cvskilllegend % %------------------------------------------------------------------------------- -% include a header line for the skill matrix. +% default legend style % \cvskilllegend[*][][][][][][]{} \NewDocumentCommand\skillLegend@FontSize{}{\scriptsize} \DeclareDocumentCommand\cvskilllegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}% @@ -564,7 +587,7 @@ % -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns % -The design of the table is such that the entry stands in the first column but % occupies rows two and three. This has been done to accomodate english and german defaults. -% TODO: Add more generic table without this spciality. +% An alternative is provided by \cvskillplainlegend % declare default legend entries \NewDocumentCommand\skillLegend@defaultLevelOne{}{basic knowledge} @@ -653,7 +676,7 @@ % Redefinition of \cvskilllegend valid for moderncvbodyv \if@moderncvbodyv% \DeclareDocumentCommand\@starIndependentTabular{}{}% - \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{% + \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{% % check whether Argument #8 is given and if so provide it as cvitem \def\arg@legendString{#8}% \ifdefempty{\arg@legendString}{% @@ -692,6 +715,159 @@ }% \fi +% %------------------------------------------------------------------------------- +% % \cvskillplainlegend +% %------------------------------------------------------------------------------- +% alternative legend style +% \cvskillplainlegend[*][][][][][][]{} +\DeclareDocumentCommand\cvskillplainlegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}% +% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% In this legend, the first three skill levels are in one column +% +% Input: +% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. +% For the fancy style, the asterix has no meaning. +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string describing meaning of \cvskill{1}, default: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \cvskillplainlegend{} print default legend +% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines +% +% Note: +% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns + +% declare default legend entries +\NewDocumentCommand\skillPlainLegend@defaultLevelOne{}{basic knowlegde} +\NewDocumentCommand\skillPlainLegend@defaultLevelTwo{}{intermediate knowledge, some project experience} +\NewDocumentCommand\skillPlainLegend@defaultLevelThree{}{extensive project experience} +\NewDocumentCommand\skillPlainLegend@defaultLevelFour{}{deepened expert knowledge} +\NewDocumentCommand\skillPlainLegend@defaultLevelFive{}{expert/guru} +% Redefinition of \cvskillplainlegend valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii +\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}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}%% + p{\skilllegend@padding}p{\cvskilllegend@leftdescriptorwidth}@{}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{\skilllegend@padding}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{4}& &{\skillLegend@FontSize #6} \\% + % + & \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5}& & {\skillLegend@FontSize #7} \\% + % + & \cvskill{3} & & {\skillLegend@FontSize #5} & & & % + \end{tabular}% + \endgroup + \par\addvspace{#2}}{% + % if no star is given, do not add dashed line + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{#8} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{4} &{\skillLegend@FontSize #6} \\% + % + & \cvskill{2} & {\skillLegend@FontSize #4} & \cvskill{5} &{\skillLegend@FontSize #7} \\% + % + & \cvskill{3} & {\skillLegend@FontSize #5 } & & % + \end{tabular}% + \par\addvspace{#2}% + }% +}% +% Redefinition of \cvskillplainlegend valid for moderncvbodyiv +\if@moderncvbodyiv% + \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{% + \def\arg@legendString{#8}% + \ifdefempty{\arg@legendString}{% + }{% + \cvitem[0.25em]{\hintstyle{#8}}{}% + }% + \IfBooleanTF#1{% if a star is given, add dashed line + \begingroup + \arrayrulecolor{color1} + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} + @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{\skilllegend@padding}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{\skilllegend@padding}p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{4} & & {\skillLegend@FontSize #6} \\ + % + & \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5} & &{\skillLegend@FontSize #7} \\ + % + & \cvskill{3} & & {\skillLegend@FontSize #5} & & & % + \end{tabular}% + \endgroup + \par\addvspace{#2}}{ + % if no star is given, do not add dashed line + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} + @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\skilllegend@padding}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\skilllegend@padding}p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{4} & & {\skillLegend@FontSize #6} \\ + % + & \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5} & &{\skillLegend@FontSize #7} \\ + % + & \cvskill{3} & & {\skillLegend@FontSize #5} & & & % + \end{tabular}% + \par\addvspace{#2} + } + } +\fi +% Redefinition of \cvskillplainlegend valid for moderncvbodyv +\if@moderncvbodyv% + \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{% + % check whether Argument #8 is given and if so provide it as cvitem + \def\arg@legendString{#8}% + \ifdefempty{\arg@legendString}{% + \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( + }{% + \cvitem[-0.5em]{#8}{}% + }% + \arrayrulecolor{color1}% + \setlength\arrayrulewidth{\separatorrulewidth}% + \RenewDocumentCommand{\@starIndependentTabular}{}{% + \begingroup% +% \renewcommand{\arraystretch}{1.0}% + \begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegend@hintscolumnwidth + @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\skilllegend@padding}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}}% + p{\skilllegend@padding}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \@moderncvstrut{4pt}{16pt} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{4} & & {\skillLegend@FontSize #6}\\% + % + & \cvskill{2} & & {\skillLegend@FontSize #4} & \cvskill{5} & & {\skillLegend@FontSize #7}\\% + % + & \cvskill{3} & & {\skillLegend@FontSize #5} & & & \\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly + \end{tabular}% + \endgroup% + \par\@aftersectionfalse\ignorespaces% + }% + % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines. + \IfBooleanTF#1{% + \@starIndependentTabular% + }{% + \@starIndependentTabular% + }% + }% +\fi + % %------------------------------------------------------------------------------- % % \cvskillhead % %------------------------------------------------------------------------------- @@ -759,7 +935,7 @@ % %------------------------------------------------------------------------------- % % \cvskillentry % %------------------------------------------------------------------------------- -% \cvskillentry[*][]{}{<0-5>}{}{}{}% +% \cvskillentry[*][]{}{<0-5>}{}{}{}% \DeclareDocumentCommand\cvskillentry{s +O{} +m +m +m +m +m}{}% % add cvskill matrix row. % diff --git a/template.tex b/template.tex index 43bbfdb..61ba827 100644 --- a/template.tex +++ b/template.tex @@ -144,11 +144,18 @@ Detailed achievements:% %% adjust the legend entries for other languages, here German % \cvskilllegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} +%% Alternative legend style with the first three skill levels in one column +%% Usage \cvskillplainlegend[*][][][][][][]{} +% \setcvskilllegendcolumns[][0.6]% works for classic, casual, banking +% \setcvskilllegendcolumns[][0.55]% works better for oldstyle and fancy +% \cvskillplainlegend{} +% \cvskillplainlegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} + %% Add a head of the skill matrix table with descriptions. %% Usage \cvskillhead[][][][][]% \cvskillhead[-0.1em]% this inserts the standard legend in english and adjust padding %% Adjust head of the skill matrix for other languages -% \cvskillhead[0.25em][Level][Fähigkeit][Jahre][Bemerkung] +% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] %% \cvskillentry[*][]{}{<0-5>}{}{}{}% %% Example usages: