add alternative legend style \cvskillplainlegend

This commit is contained in:
David 2021-01-20 18:47:50 +01:00
commit 45d75f428f
2 changed files with 190 additions and 7 deletions

View file

@ -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 <second_level> 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[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% 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: <basic knowledge>
% input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
% input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% 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[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
@ -358,7 +382,6 @@
% %-------------------------------------------------------------------------------
% % \setcvskillcolumns and \setcvskilllegendcolumns
% %-------------------------------------------------------------------------------
% \setcvskillcolumns[<width>][<factor>][<exp_width>]
\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[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\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 <second_level> 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[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
\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: <basic knowledge>
% input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
% input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
% input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
% input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
% 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[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
\DeclareDocumentCommand\cvskillentry{s +O{} +m +m +m +m +m}{}%
% add cvskill matrix row.
%

View file

@ -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[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
% \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[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
\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[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
%% Example usages: