add first working skillmatrix for style fancy

This commit is contained in:
David 2021-01-18 00:11:50 +01:00
commit bb127f7e66
2 changed files with 111 additions and 89 deletions

View file

@ -1,7 +1,7 @@
% some packages required for this code
\RequirePackage{tikz}
% needed for the dashed lines
\RequirePackage{arydshln}
% \RequirePackage{arydshln} % incompatible with fancy style
%%% The code for the Skilllevel illustration with the little boxes.
% This is idea stolen from the limecv package
@ -30,90 +30,113 @@
\@initializelength{\skilllegendhintscolumnwidth}
\NewDocumentCommand{\recomputecvskillmatrixlengths}{}{%
\setlength{\skillmatrixcommentpadding}{1ex}
\setlength{\separatorcolumnwidth}{\skillmatrixcommentpadding}
% \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{\matrixbodylength}{\maincolumnwidth-\skillmatrixhintscolumnwidth-\skillmatrixcommentpadding}%\skillmatrixhintscolumnwidth
\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@}}
\setlength{\cvskilllegenddescriptorwidth}{0.5\maincolumnwidth-\cvskillwidth-\skillmatrixcommentpadding}
regular lengths
}
\RequirePackage{multirow}
% \RequirePackage{ifmtarg}
\NewDocumentCommand\legendFontSize{}{\scriptsize}
\NewDocumentCommand\cvSkillMatrixLegend{s +O{.25em} +O{basic knowledge} +O{intermediate knowledge with experience in projects} +O{extensive experience in projects} +O{deep expert knowledge} +O{expert/guru} +m}{%
% check whether Argument #8 is given and if so provide it as cvitem
\def\legendString{#8}%
\ifdefempty{\legendString}{}{\cvitem{#8}{}}%
\arrayrulecolor{color1}%
\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 :(
\noindent%
\NewDocumentCommand\starIndependentTabular{}{%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegendhintscolumnwidth
@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}
p{\cvskillwidth}@{}
p{\cvskilllegenddescriptorwidth} @{\hspace{2\skillmatrixcommentpadding}}
p{\cvskillwidth}@{}p{\cvskilllegenddescriptorwidth}@{}}%
\@moderncvstrut{4pt}{16pt} & \cvSkill{1}\, & \,{\legendFontSize #3} & \cvSkill{3}\, &\,{\legendFontSize #5 } \\
%
& \cvSkill{2}\, & \,\multirow{2}{\cvskilllegenddescriptorwidth}{{\legendFontSize #4}} & \cvSkill{4}\, &\,{\legendFontSize #6 } \\
%
& & & \cvSkill{5}\, &\,{\legendFontSize #7 } \\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\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%
{% if a star is given, add dashed line
\begin{tabular}{@{}p{\skilllegendhintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{};{.6pt/1pt}p{\cvskilllegenddescriptorwidth} @{\hspace{2\skillmatrixcommentpadding}}p{\cvskillwidth}@{};{.6pt/1pt}p{\cvskilllegenddescriptorwidth}@{}}%
\raggedleft\hintstyle{#8} & \cvSkill{1}\, & \,{\legendFontSize #3} & \cvSkill{3}\, &\,{\legendFontSize #5 } \\
%
& \cvSkill{2}\, & \,\multirow{2}{\cvskilllegenddescriptorwidth}{{\legendFontSize #4}} & \cvSkill{4}\, &\,{\legendFontSize #6 } \\
%
& & & \cvSkill{5}\, &\,{\legendFontSize #7 }
\end{tabular}%
\par\addvspace{#2}
{% if a star is given, do the same as if no star is given
\starIndependentTabular%
}
{% if no star is given, do not add dashed line
\begin{tabular}{@{}p{\skilllegendhintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{}p{\cvskilllegenddescriptorwidth} @{\hspace{2\skillmatrixcommentpadding}}p{\cvskillwidth}@{}p{\cvskilllegenddescriptorwidth}@{}}%
\raggedleft\hintstyle{#8} & \cvSkill{1}\, & \,{\legendFontSize #3} & \cvSkill{3}\, &\,{\legendFontSize #5 } \\
%
& \cvSkill{2}\, & \,\multirow{2}{\cvskilllegenddescriptorwidth}{{\legendFontSize #4}} & \cvSkill{4}\, &\,{\legendFontSize #6 } \\
%
& & & \cvSkill{5}\, &\,{\legendFontSize #7 }
\end{tabular}%
\par\addvspace{#2}
\starIndependentTabular%
}
}
\NewDocumentCommand\cvSkillMatrixHeadFont{}{\normalfont}
\NewDocumentCommand\cvSkillMatrixHead{s O{.25em} +O{Level} +O{Skill} +O{Years} +O{Comment}}{%
\IfBooleanTF#1%
{% if a star is given, add dashed line
\begingroup
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{@{}p{\skillmatrixhintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{}@{}p{\cvskilldescriptorwidth}@{} p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}}p{\skillmatrixcommentwidth}@{}}%
& \centering{\cvSkillMatrixHeadFont #3} & \centering{\cvSkillMatrixHeadFont #4} & \centering{\cvSkillMatrixHeadFont #5} & {\cvSkillMatrixHeadFont #6} \\\cdashline{2-5}[.6pt/1pt]
\end{tabular}%
\endgroup
\par\addvspace{#2}
}
{%if star is not given, do not add dashed line
\begingroup
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{@{}p{\skillmatrixhintscolumnwidth}
@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{}@{}p{\cvskilldescriptorwidth}@{} p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}}p{\skillmatrixcommentwidth}@{}}%
& \centering{\cvSkillMatrixHeadFont #3} & \centering{\cvSkillMatrixHeadFont #4} & \centering{\cvSkillMatrixHeadFont #5} & {\cvSkillMatrixHeadFont #6}
\end{tabular}%
\endgroup
\par\addvspace{#2}
}
}
}%
\NewDocumentCommand\cvSkillMatrixHeadFont{}{\normalfont}%
\NewDocumentCommand\cvSkillMatrixHead{+O{.25em} +O{Level} +O{Skill} +O{Years} +O{Comment}}{%
\arrayrulecolor{color1}%
\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 :(
\noindent%
\begingroup%
% \renewcommand{\arraystretch}{1.25}%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}%
@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}%
p{\skillmatrixhintscolumnwidth}%
@{\hspace{\skillmatrixcommentpadding}}p{\cvskillwidth}@{}%
p{\cvskilldescriptorwidth}@{}%
p{\cvskillexperiencewidth}%
@{\hspace{\skillmatrixcommentpadding}}p{\skillmatrixcommentwidth}@{}}%
& & \centering{\cvSkillMatrixHeadFont#2} & \centering{\cvSkillMatrixHeadFont#3} & \centering{\cvSkillMatrixHeadFont#4} & {\cvSkillMatrixHeadFont#5} \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
\end{tabular}%
\endgroup%
\par\@aftersectionfalse\ignorespaces%
}%
\NewDocumentCommand\cvSkillMatrixEntry{s O{.25em} +m +m +m +m +m}{%
\arrayrulecolor{color1}%
\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 :(
\noindent%
%test for the star * in the command
\IfBooleanTF#1%
{% If a star is seen a dotted line is drawn above the entry
\begingroup
\renewcommand{\arraystretch}{1.25}
\begin{tabular}{@{}p{\skillmatrixhintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{}@{}p{\cvskilldescriptorwidth}@{} p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}} p{\skillmatrixcommentwidth}@{}}%
\cdashline{2-5}[.6pt/1pt]
\raggedleft\hintstyle{#3} &\centering \cvSkill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}%
\end{tabular}%
\endgroup
\par\addvspace{#2}}
%
{% If no star is seen no line is drawn
\begin{tabular}{@{}p{\skillmatrixhintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\cvskillwidth}@{}@{}p{\cvskilldescriptorwidth}@{} p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}} p{\skillmatrixcommentwidth}@{}}%
\raggedleft\hintstyle{#3} &\centering \cvSkill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}%
\end{tabular}%
\par\addvspace{#2}}
\IfBooleanTF#1{% If a star is seen a dotted line is drawn above the entry
\begingroup%
\renewcommand{\arraystretch}{1.25}%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}%
@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\skillmatrixhintscolumnwidth}
@{\hspace{\skillmatrixcommentpadding}}
p{\cvskillwidth}@{}
p{\cvskilldescriptorwidth}@{}
p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}}p{\skillmatrixcommentwidth}@{}}%
% \cline{3-6}%
& \raggedleft\hintstyle{#3} &\centering \cvSkill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}\\[#2]%
\end{tabular}%
\endgroup%
% \par\@aftersectionfalse\ignorespaces%
}{% If no star is seen no line is drawn
\begingroup%
\renewcommand{\arraystretch}{1.25}%
\begin{tabular}[t]{@{}p{\hintscolumnwidth}%
@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\skillmatrixhintscolumnwidth}
@{\hspace{\skillmatrixcommentpadding}}
p{\cvskillwidth}@{}
p{\cvskilldescriptorwidth}@{}
p{\cvskillexperiencewidth} @{\hspace{\skillmatrixcommentpadding}}p{\skillmatrixcommentwidth}@{}}%
& \raggedleft\hintstyle{#3} &\centering \cvSkill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}\\[#2]%
\end{tabular}%
\endgroup%
% \par\@aftersectionfalse\ignorespaces%
}%
\par\@aftersectionfalse\ignorespaces%
}