diff options
author | Norbert Preining <norbert@preining.info> | 2021-01-23 03:02:06 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2021-01-23 03:02:06 +0000 |
commit | fcf66e0c8c8c0f5d590d5ac4411b13977aef8a30 (patch) | |
tree | c3e833039bb26ff1b8a5730bff18f6f3c5f6ae56 /macros/latex/contrib/moderncv/moderncvskillmatrix.sty | |
parent | e1a7798f45cd37c0aa0bfaaef5f0acb4e48bc867 (diff) |
CTAN sync 202101230302
Diffstat (limited to 'macros/latex/contrib/moderncv/moderncvskillmatrix.sty')
-rw-r--r-- | macros/latex/contrib/moderncv/moderncvskillmatrix.sty | 1051 |
1 files changed, 1051 insertions, 0 deletions
diff --git a/macros/latex/contrib/moderncv/moderncvskillmatrix.sty b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty new file mode 100644 index 0000000000..d339f35473 --- /dev/null +++ b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty @@ -0,0 +1,1051 @@ +%% start of file `moderncvskillmatrix.sty'. +%% Copyright 2021 David Seus (cryptointerest@posteo.de). +% +% This package provides a skill matrix template for the moderncv package. +% Some recruiting firms require applicants to rate their skills, computer +% skills, management tools, or similar in a table involving a graphical +% illustration of their skill level. This package implements this idea +% and provides the following commands to use within the moderncv +% package: +% +% +% PUBLIC COMMANDS +% \cvskill{<1-5>} +% Illustrate skill level with little colored boxes. +% By default five skill levels are predefined. +% +% Input: +% input_1: integer between 0 and 5 +% +% Example usages: +% \cvskill{3} +% +% +% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>} +% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% +% 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: +% \cvskilllegend{} print default legend +% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskilllegend*[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 +% -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. +% 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>]% +% add skill matrix line acting as header explaining the meaning of columns. +% +% Input: +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string naming the level column (2nd column), default: <Level> +% input_3 (optional): string naming the skill column (3nd column), default: <Skill> +% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years> +% input_5 (optional): string naming the comment column (5th column), default: <Comment> +% +% Example usages: +% \cvskillhead print default head. +% \cvskillhead[0.5em] print default head, but adjust post padding. +% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example +% +% Note: +% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns. +% +% +% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}% +% add cvskill matrix row. +% +% Input: +% asterix (optional): include horizontal (dashed) line above the entered line. 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: string, naming skill cathegory, default: <> +% input_3: integer between 0 and 5, describing level of skill. \cvskill{input_2} is called internally, default: <> +% input_4: string, naming the skill, default: <> +% input_5: positive real number, stating the number of years of experience with this skill , default: <> +% input_6: string, explaining details w.r.t. that particual skill default: <> +% +% Example usages: +% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python} +% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!} +% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX} +% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux} +% +% Note: +% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns. +% +% +% \setcvskillcolumns[<width>][<factor>][<exp_width>] +% adjust column width of skill table +% +% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns +% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned +% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably. +% However, depending on the user input and the style that is used some of the columns might need adjustments. +% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth +% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column, +% the comment column gets recalculated according to the setting of the other columns. +% +% Input +% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth> +% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without +% the first column is used columns two, three and four. Through this parameter +% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth> +% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column +% (Years of experience), default <\cvskill@experiencewidth> +% +% Example usage +% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em] +% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45] +% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column. +% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45] +% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once. +% +% Note +% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that +% it aligns with the rest of the entries. A readjustment of the first column should therefor +% be avoided. It is recomended to only use \setcvskillcolumns in the form of +% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column. +% +% +% \setcvskilllegendcolumns[<width>][<factor>] +% adjust column width of legend +% +% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix +% such that the default english and german examples look good. +% However, depending on the user input (translation) and the style that is used some adjustment might be needed. +% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing +% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column, +% the comment column gets recalculated according to the setting of the other columns. +% +% Input +% Input_1 (optional): length smaller than \textwidth influencing the width of the first column +% where depending on the style the legend_string gets printed. In case the +% string is left empty adjusting this width allows moving the legend horizontally. +% Default <\skilllegend@hintscolumnwidth> +% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column, +% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right, +% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>. +% Default <\skilllegend@leftdesriptorfactor> +% +% Example usage +% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column. +% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column +% +% Note +% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv) +% the first optional variable has no effect in this case. +% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that +% it aligns with the rest of the entries. A readjustment of the first column should therefor +% be avoided. It is recomended to only use \cvskilllegend in the form of +% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column. +% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries +% Therefor adjusting the first column can be used to widen the table while moving it around. If no +% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend. +% +% +% PRIVATE COMMANDS +% +% \recompute@cvskillmatrix@lengths +% compute all lengths necessary for the skill matrix depending on +% the moderncv style (moderncvbody) +% +% Input: none +% +% Example usage (only internally in moderncvbody<i-v>.sty) +% \recompute@cvskillmatrix@lengths +% +% +% 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/21 v2.1.0 modern curriculum vitae and letter skill matrix] + +% The definitions need to be adjusted depending on which moderncvbody<i-v>.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 % this option is added in case moderncvbodyii gets implemented standalone +\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 + +% %------------------------------------------------------------------------------- +% % \cvskill command +% %------------------------------------------------------------------------------- +% The code for the Skilllevel illustration with the little boxes. +% This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git +\@initializelength{\cvSkill@RectangleSize} +\setlength{\cvSkill@RectangleSize}{1.2ex} +\newcount\my@repeat@count +\DeclareDocumentCommand{\cvskill}{m}{% +% Illustrate skill level with little colored boxes. +% By default five skill levels are predefined. +% +% Input: +% integer between 0 and 5 +% Example usage: +% \cvskill{3} + \begingroup + \my@repeat@count=\z@ + \@whilenum\my@repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \my@repeat@count\@ne\,}% + \my@repeat@count=\numexpr5-\z@\relax + \@whilenum\my@repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill@RectangleSize, \cvSkill@RectangleSize);\advance% + \my@repeat@count\m@ne\,}% + \endgroup +}% end \cvskill + +% %------------------------------------------------------------------------------- +% % \recompute@cvskillmatrix@lengths +% %------------------------------------------------------------------------------- + +% initialise lengths needed for the skillmatrix +\@initializelength{\cvskill@width} +\@initializelength{\cvskill@descriptorwidth} +\@initializelength{\cvskill@experiencewidth} +\@initializelength{\skillmatrix@columnwidth} +\@initializelength{\skillmatrix@commentwidth} +\@initializelength{\skillmatrix@padding} +\@initializelength{\skillmatrix@hintscolumnwidth} +\@initializelength{\skillmatrix@bodylength} +\@initializelength{\cvskilllegend@leftdescriptorwidth} +\@initializelength{\cvskilllegend@rightdescriptorwidth} +\@initializelength{\skilllegend@hintscolumnwidth} +\@initializelength{\skilllegend@padding} +\@initializelength{\skilllegend@bodylength} + +% \separatorrulewidth is defined in moderncvbodyv.sty and we need to +% define it to not throw an error in the other cases +\if@moderncvbodyv% +% +\else% + \@initializelength{\separatorrulewidth} + \setlength{\separatorrulewidth}{1ex} +\fi + +\DeclareDocumentCommand{\skilllegend@leftdesriptorfactor}{}{}% +%% DEFINITION \recompute@cvskillmatrix@lengths +% declare the command \recompute@cvskillmatrix@lengths empty +\DeclareDocumentCommand{\recompute@cvskillmatrix@lengths}{}{}% +% compute all lengths necessary for the skill matrix depending on +% the moderncv style (moderncvbody) +% +% Input: none +% +% Example usage (only internally in moderncvbody<i-v>.sty) +% \recompute@cvskillmatrix@lengths + +% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyi +\if@moderncvbodyi% + \RenewDocumentCommand{\recompute@cvskillmatrix@lengths}{}{% + \setlength{\skillmatrix@padding}{1ex}% + \setlength{\skillmatrix@hintscolumnwidth}{\hintscolumnwidth}% + \setlength{\cvskill@width}{\widthof{\cvskill{5}}}% + \setlength{\cvskill@experiencewidth}{\widthof{``Year''}}% + \setlength{\skillmatrix@bodylength}{\maincolumnwidth}% + \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + % lengths and definitions needed for the legends + % note that \skillmatrix@padding also affects the appearance of legends + \setlength{\skilllegend@padding}{0.25ex}% + \setlength{\skilllegend@hintscolumnwidth}{\hintscolumnwidth}% + \setlength{\skilllegend@bodylength}{\skillmatrix@bodylength}% + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{0.5}% + } +\fi +% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyiii +\if@moderncvbodyiii% + \RenewDocumentCommand{\recompute@cvskillmatrix@lengths}{}{% + \setlength{\skillmatrix@padding}{1ex}% + \setlength{\separatorcolumnwidth}{\skillmatrix@padding}% + \setlength{\skillmatrix@hintscolumnwidth}{\widthof{``Language''}}% + \setlength{\cvskill@width}{\widthof{\cvskill{5}}}% + \setlength{\cvskill@experiencewidth}{\widthof{``Year''}}% + \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}% + \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + % lengths and definitions needed for the legends + % note that \skillmatrix@padding also affects the appearance of legends + \setlength{\skilllegend@padding}{0.25ex}% + \setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}% + \setlength{\skilllegend@bodylength}{\skillmatrix@bodylength}% + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{0.5}% + } +\fi +% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyiv +\if@moderncvbodyiv% + \RenewDocumentCommand{\recompute@cvskillmatrix@lengths}{}{% + \setlength{\skillmatrix@padding}{1ex} + \setlength{\separatorcolumnwidth}{\skillmatrix@padding} + \setlength{\skillmatrix@hintscolumnwidth}{\widthof{``Languagi''}} + \setlength{\cvskill@width}{\widthof{\cvskill{5}}} + \setlength{\cvskill@experiencewidth}{\widthof{``Year''}} + \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth} + \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + % lengths and definitions needed for the legends + % note that \skillmatrix@padding also affects the appearance of legends + \setlength{\skilllegend@padding}{0.25ex} + \setlength{\skilllegend@hintscolumnwidth}{0ex}%\skillmatrix@hintscolumnwidth + \setlength{\skilllegend@bodylength}{\maincolumnwidth} + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{0.45}% + } +\fi +% Definition of \recompute@cvskillmatrix@lengths for moderncvbodyv +\if@moderncvbodyv% + \RenewDocumentCommand{\recompute@cvskillmatrix@lengths}{}{% + \setlength{\skillmatrix@padding}{1ex}% + \setlength{\skillmatrix@hintscolumnwidth}{\widthof{``Languages''}}% + \setlength{\cvskill@width}{\widthof{\cvskill{5}}}% + \setlength{\cvskill@experiencewidth}{\widthof{``Year''}}% + \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\skillmatrix@padding}%\skillmatrix@hintscolumnwidth + \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + % lengths and definitions needed for the legends + % note that \skillmatrix@padding also affects the appearance of legends + \setlength{\skilllegend@padding}{0.25ex}% + \setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}% + \setlength{\skilllegend@bodylength}{\maincolumnwidth}% + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{0.48}% + }% +\fi + +% %------------------------------------------------------------------------------- +% % \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 +% +% The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns +% based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned +% and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably. +% However, depending on the user input and the style that is used some of the columns might need adjustments. +% The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth +% skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column, +% the comment column gets recalculated according to the setting of the other columns. +% +% Input +% Input_1 (optional): width smaller than \textwidth, default <\skillmatrix@hintscolumnwidth> +% Input_2 (optional): float between 0 and 1 adjusting how much percent of the table width without +% the first column is used columns two, three and four. Through this parameter +% the width of the 3rd column (skill name) can be adjusted, default <\skillmatrix@columnwidth> +% Input_3 (optional): width smaller than \textwidth, setting the width of the 4th column +% (Years of experience), default <\cvskill@experiencewidth> +% +% Example usage +% \setcvskillcolumns[5em][][]% adjust first column. Same as \setcvskillcolumns[5em] +% \setcvskillcolumns[][0.45][]% adjust third (skill) column. Same as \setcvskillcolumns[][0.45] +% \setcvskillcolumns[][][\widthof{``Year''}]% adjust fourth (years) column. +% \setcvskillcolumns[\widthof{``Language''}][0.48][]% adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45] +% \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]% ajust all at once. +% +% Note +% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that +% it aligns with the rest of the entries. A readjustment of the first column should therefor +% be avoided. It is recomended to only use \setcvskillcolumns in the form of +% \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column. +% + \def\arg@new@hintscolumnwidth{#1}% <-- all these terminal % signs are necessary for the fancy style to not show weird spaces!!! + \def\arg@new@bodyLengthFactor{#2}% + \def\arg@new@experienceWidth{#3}% + % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns + % without any arguments leads to nonempty arguments \arg@new@hintscolumnwidth and + % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like + % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even + % \setcvskillcolumns[<somelength>][], \setcvskillcolumns[][<somefactor>] \setcvskillcolumns[][][<length>] + \ifdefempty{\arg@new@hintscolumnwidth}{% + % Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][<somefactor>] + \ifdefempty{\arg@new@bodyLengthFactor}{% + % Case \setcvskillcolumns[][] do nothing here and check if third argument is empty + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[][][] do nothing here + }{% + % Case \setcvskillcolumns[][][<length>]. reset \cvskill@experiencewidth and + % \cvskill@descriptorwidth accordingly + \setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + }% + }{% + % Case \setcvskillcolumns[][<somefactor>], \setcvskillcolumns[][<somefactor>][<possilly length>] + \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[][<somefactor>][] do nothing here + }{% + % Case \setcvskillcolumns[][<somefactor>][<length>]. reset \cvskill@experiencewidth and + % \cvskill@descriptorwidth accordingly + \setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + }% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + }% + % Case \setcvskillcolumns[] nothing needs to be done here recalculate lengths affected by the change + }{% + % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][] + % or \setcvskillcolumns[<width>][<somefactor>] + \setlength{\skillmatrix@hintscolumnwidth}{\arg@new@hintscolumnwidth}% + \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}% + % in case second argument is given but left empty use default + \ifdefempty{\arg@new@bodyLengthFactor}{% + % Case \setcvskillcolumns[<width>][] do nothing here and use default + % \skillmatrix@columnwidth and check third argument + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[<width>][][] do nothing here + }{% + % Case \setcvskillcolumns[<width>][][<length>]. reset \cvskill@experiencewidth and + % \cvskill@descriptorwidth accordingly + \setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}% +% \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + }% + }{% + % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][<somefactor>] + \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[<width>][<somefactor>][] do nothing here + }{% + % Case \setcvskillcolumns[<width>][<somefactor>][<length>]. reset \cvskill@experiencewidth and + % \cvskill@descriptorwidth accordingly + \setlength{\cvskill@experiencewidth}{\arg@new@experienceWidth}% +% \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + }% + }% + \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}% + \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-3\skillmatrix@padding}% + }% +}% +% +% \setcvskilllegendcolumns[<width>][<factor>] +\DeclareDocumentCommand{\setcvskilllegendcolumns}{+O{\skilllegend@hintscolumnwidth} +O{\skilllegend@leftdesriptorfactor}}{% +% adjust column width of legend +% +% The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix +% such that the default english and german examples look good. +% However, depending on the user input (translation) and the style that is used some adjustment might be needed. +% The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing +% \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column, +% the comment column gets recalculated according to the setting of the other columns. +% +% Input +% Input_1 (optional): length smaller than \textwidth influencing the width of the first column +% where depending on the style the legend_string gets printed. In case the +% string is left empty adjusting this width allows moving the legend horizontally. +% Default <\skilllegend@hintscolumnwidth> +% Input_2 (optional): float between 0 and 1 influencing the width of the left legend descritor column, +% aka \cvskilllegend@leftdescriptorwidth. The desriptor column on the right, +% \cvskilllegend@rightdescriptorwidth is influenced by the factor 1-<factor>. +% Default <\skilllegend@leftdesriptorfactor> +% +% Example usage +% \setcvskilllegendcolumns[][0.45]%% adjust left desriptor column. +% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]% adjust both left descriptor column and string column +% +% Note +% - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv) +% the first optional variable has no effect in this case. +% - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that +% it aligns with the rest of the entries. A readjustment of the first column should therefor +% be avoided. It is recomended to only use \cvskilllegend in the form of +% \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column. +% - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries +% Therefor adjusting the first column can be used to widen the table while moving it around. If no +% legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend. +% + \def\arg@new@legend@hintscolumnwidth{#1}% + \def\arg@new@legend@leftDescriptorFactor{#2}% + % Check for empty arguments. See explanation above + \ifdefempty{\arg@new@legend@hintscolumnwidth}{% + % Case \setcvskilllegendcolumns[], \setcvskilllegendcolumns[][] or \setcvskilllegendcolumns[][<somefactor>] + \ifdefempty{\arg@new@legend@leftDescriptorFactor}{% +% % Case \setcvskilllegendcolumns[][] do nothing here, i.e. leave default values unaltered + }{% + % Case \setcvskilllegendcolumns[][<somefactor>], \setcvskilllegendcolumns[][<somefactor>] + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}% + }% +% % Case \setcvskilllegendcolumns[] nothing needs to be done here i.e. leave default values unaltered + }{% + % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][] + % or \setcvskilllegendcolumns[<width>][<somefactor>] + \setlength{\skilllegend@hintscolumnwidth}{\arg@new@legend@hintscolumnwidth}% + \if@moderncvbodyi% + \setlength{\skilllegend@bodylength}{\textwidth-\skilllegend@hintscolumnwidth-\separatorcolumnwidth}% + \fi% + \if@moderncvbodyiii% + \setlength{\skilllegend@bodylength}{\textwidth-\skilllegend@hintscolumnwidth-\separatorcolumnwidth}% + \fi% + \if@moderncvbodyiv% + \setlength{\skilllegend@bodylength}{\maincolumnwidth-\skilllegend@hintscolumnwidth-\separatorcolumnwidth}% + \fi% + % in case second argument is given but left empty use default + \ifdefempty{\arg@new@legend@leftDescriptorFactor}{% + % Case \setcvskilllegendcolumns[<width>][] do nothing here and leave default values unaltered + }{% + % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][<somefactor>] + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}% + }% + }% +}% +% +% %------------------------------------------------------------------------------- +% % \cvskilllegend +% %------------------------------------------------------------------------------- +% 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}{}% +% Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% +% 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: +% \cvskilllegend{} print default legend +% \cvskilllegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskilllegend*[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 +% -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. +% An alternative is provided by \cvskillplainlegend + +% declare default legend entries +\NewDocumentCommand\skillLegend@defaultLevelOne{}{basic knowledge} +\NewDocumentCommand\skillLegend@defaultLevelTwo{}{intermediate knowledge with some project experience} +\NewDocumentCommand\skillLegend@defaultLevelThree{}{extensive project experience} +\NewDocumentCommand\skillLegend@defaultLevelFour{}{deepened expert knowledge} +\NewDocumentCommand\skillLegend@defaultLevelFive{}{expert\,/\,specialist} +% Redefinition of \cvskilllegend valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii +\RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@defaultLevelFive} +m}{% + \IfBooleanTF#1{% if a star is given, add dashed line + \begingroup% + \arrayrulecolor{color1}% + % calculate descriptor widths + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}%% + p{2\skilllegend@padding}p{\cvskilllegend@leftdescriptorwidth}@{}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\skilllegend@padding}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{#8} & \cvskill{1}& & {\skillLegend@FontSize #3} & \cvskill{3}& &{\skillLegend@FontSize #5 } \\% + % + & \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& & {\skillLegend@FontSize #6 } \\% + % + & & & & \cvskill{5}& & {\skillLegend@FontSize #7 }% + \end{tabular}% + \endgroup + \par\addvspace{#2}}{% + % if no star is given, do not add dashed line. We need less padding in this case + \begingroup% + % calculate descriptor columns width. note the adjusted padding + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-1\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-1\skilllegend@padding}% + \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{3}\, &\,{\skillLegend@FontSize #5 } \\% + % + & \cvskill{2}\, & \,\multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}\, &\,{\skillLegend@FontSize #6 } \\% + % + & & & \cvskill{5}\, &\,{\skillLegend@FontSize #7 }% + \end{tabular}% + \endgroup% + \par\addvspace{#2}% + }% +}% +% Redefinition of \cvskilllegend valid for moderncvbodyiv +\if@moderncvbodyiv% + \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend@defaultLevelOne} +O{\skillLegend@defaultLevelTwo} +O{\skillLegend@defaultLevelThree} +O{\skillLegend@defaultLevelFour} +O{\skillLegend@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% + % recalculate desrciptor widths on the fly. Allows for different padding + % in the stared and nonstared case + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% + \arrayrulecolor{color1} + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} + @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\skilllegend@padding}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\skilllegend@padding}p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend@FontSize #3} & \cvskill{3} & & {\skillLegend@FontSize #5 } \\ + % + & \cvskill{2} & & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} & &{\skillLegend@FontSize #6 } \\ + % + & & & & \cvskill{5}& & {\skillLegend@FontSize #7 } + \end{tabular}% + \endgroup% + \par\addvspace{#2}}{ + \begingroup% + % oddly enough, we should only need to subtract 2 paddings in the descritorwidths. + % but while testing I got overflow of text into the margin + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-5\skilllegend@padding}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} + @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{2\skilllegend@padding}}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{2\skilllegend@padding}}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \raggedleft\hintstyle{} & \cvskill{1} & {\skillLegend@FontSize #3} & \cvskill{3} & {\skillLegend@FontSize #5 } \\ + % + & \cvskill{2} & \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4} &{\skillLegend@FontSize #6 } \\ + % + & & & \cvskill{5} & {\skillLegend@FontSize #7 } + \end{tabular}% + \endgroup% + \par\addvspace{#2} + } + } +\fi +% 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}{% + % 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% + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% +% \renewcommand{\arraystretch}{1.0}% + \begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegend@hintscolumnwidth + @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{3\skilllegend@padding}}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{3\skilllegend@padding}}% + p{\cvskilllegend@rightdescriptorwidth}@{}}% + \@moderncvstrut{4pt}{16pt} & \cvskill{1}& {\skillLegend@FontSize #3} & \cvskill{3}& {\skillLegend@FontSize #5 }\\% + % + & \cvskill{2}& \multirow{2}{\cvskilllegend@leftdescriptorwidth}{{\skillLegend@FontSize #4}} & \cvskill{4}& {\skillLegend@FontSize #6 }\\% + % + & & & \cvskill{5} & {\skillLegend@FontSize #7 }\\[#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 + +% %------------------------------------------------------------------------------- +% % \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}% + % calculate descriptor widths + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}%% + p{2\skilllegend@padding}p{\cvskilllegend@leftdescriptorwidth}@{}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\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 + \begingroup% + % calculate descriptor widths, note that we use less padding + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-2\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-2\skilllegend@padding}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{2\skilllegend@padding}}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{2\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}% + }% +}% +% 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} + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-6\skilllegend@padding}% + \begin{tabular}{@{}p{\skilllegend@hintscolumnwidth} + @{\hspace{\separatorcolumnwidth}}p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\skilllegend@padding}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skilllegend@padding}};{.6pt/1pt}% + p{2\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 + \begingroup + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-3\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-4\skilllegend@padding}% + \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{} & \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} + } + } +\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}% + \setlength{\cvskilllegend@leftdescriptorwidth}{\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-2\skilllegend@padding}% + \setlength{\cvskilllegend@rightdescriptorwidth}{\skilllegend@bodylength-\skilllegend@leftdesriptorfactor\skilllegend@bodylength-\cvskill@width-\skillmatrix@padding-2\skilllegend@padding}% + \begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegend@hintscolumnwidth + @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{2\skilllegend@padding}}% + p{\cvskilllegend@leftdescriptorwidth}@{\hspace{2\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{2\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 +% %------------------------------------------------------------------------------- +\NewDocumentCommand\cvSkillMatrix@HeadFont{}{\normalfont} +\DeclareDocumentCommand\cvskillhead{+O{} +O{} +O{} +O{} +O{}}{}% +% add skill matrix line acting as header explaining the meaning of columns. +% +% Input: +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string naming the level column (2nd column), default: <Level> +% input_3 (optional): string naming the skill column (3nd column), default: <Skill> +% input_4 (optional): string naming the experience-in-years column (4th column), default: <Years> +% input_5 (optional): string naming the comment column (5th column), default: <Comment> +% +% Example usages: +% \cvskillhead print default head. +% \cvskillhead[0.5em] print default head, but adjust post padding. +% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung] Fully adjust head to German example +% +% Note: +% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns. + +\NewDocumentCommand\skillMatrix@HeaderDefaultOne{}{Level} +\NewDocumentCommand\skillMatrix@HeaderDefaultTwo{}{Skill} +\NewDocumentCommand\skillMatrix@HeaderDefaultThree{}{Years} +\NewDocumentCommand\skillMatrix@HeaderDefaultFour{}{Comment} +% Definition of \cvskillhead valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv +\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% + \begingroup + \renewcommand{\arraystretch}{1.25} + \arrayrulecolor{color1} + \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@experiencewidth}@{\hspace{\skillmatrix@padding}} + p{\skillmatrix@commentwidth}@{}}% + & \centering{\cvSkillMatrix@HeadFont #2} & \centering{\cvSkillMatrix@HeadFont #3} & \centering{\cvSkillMatrix@HeadFont #4} & {\cvSkillMatrix@HeadFont #5} + \end{tabular}% + \endgroup + \par\addvspace{#1} +} +% Definition of \cvskillhead valid moderncvbodyv +\if@moderncvbodyv% + \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix@HeaderDefaultOne} +O{\skillMatrix@HeaderDefaultTwo} +O{\skillMatrix@HeaderDefaultThree} +O{\skillMatrix@HeaderDefaultFour}}{% + \arrayrulecolor{color1}% + \setlength\arrayrulewidth{\separatorrulewidth}% + \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( + \begingroup% + % \renewcommand{\arraystretch}{1.25}% + \begin{tabular}[t]{@{}p{\hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}% + p{\skillmatrix@hintscolumnwidth}% + @{\hspace{\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@experiencewidth}@{\hspace{\skillmatrix@padding}}% + p{\skillmatrix@commentwidth}@{}}% + & & \centering{\cvSkillMatrix@HeadFont#2} & \centering{\cvSkillMatrix@HeadFont#3} & \centering{\cvSkillMatrix@HeadFont#4} & {\cvSkillMatrix@HeadFont#5} \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly + \end{tabular}% + \endgroup% + \par\@aftersectionfalse\ignorespaces% + }% +\fi + +% %------------------------------------------------------------------------------- +% % \cvskillentry +% %------------------------------------------------------------------------------- +% \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. +% +% Input: +% asterix (optional): include horizontal (dashed) line above the entered line. 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: string, naming skill cathegory, default: <> +% input_3: integer between 0 and 5, describing level of skill. \cvskill{input_2} is called internally, default: <> +% input_4: string, naming the skill, default: <> +% input_5: positive real number, stating the number of years of experience with this skill , default: <> +% input_6: string, explaining details w.r.t. that particual skill default: <> +% +% Example usages: +% \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python} +% \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!} +% \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX} +% \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux} +% +% Note: +% - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns. + +% Definition of \cvskillentry valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv +\RenewDocumentCommand\cvskillentry{s +O{.25em} +m +m +m +m +m}{% + %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} + \arrayrulecolor{color1} + \begin{tabular}{@{}p{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@experiencewidth} @{\hspace{\skillmatrix@padding}}% + p{\skillmatrix@commentwidth}@{}}% + \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{\skillmatrix@hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}% + p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@experiencewidth}% + @{\hspace{\skillmatrix@padding}}% + p{\skillmatrix@commentwidth}@{}}% + \raggedleft\hintstyle{#3} &\centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}% + \end{tabular}% + \par\addvspace{#2} + } +} + +% Definition of \cvskillentry valid for moderncvbodyv +\if@moderncvbodyv% + \DeclareDocumentCommand\@starIndependentMatrixEntry{}{}% + \RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{% + \arrayrulecolor{color1}% + \setlength\arrayrulewidth{\separatorrulewidth}% + \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :( + %test for the star * in the command + \RenewDocumentCommand{\@starIndependentMatrixEntry}{}{% + \begingroup% + \renewcommand{\arraystretch}{1.25}% + \begin{tabular}[t]{@{}p{\hintscolumnwidth}% + @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\skillmatrix@hintscolumnwidth} + @{\hspace{\skillmatrix@padding}}% + p{\cvskill@width}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@descriptorwidth}@{\hspace{\skillmatrix@padding}}% + p{\cvskill@experiencewidth} @{\hspace{\skillmatrix@padding}}p{\skillmatrix@commentwidth}@{}}% + % \cline{3-6}% + & \raggedleft\hintstyle{#3} &\centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}\\[#2]% + \end{tabular}% + \endgroup% + }% + \IfBooleanTF{#1}{% the star does not do anything here + \@starIndependentMatrixEntry% + }{% + \@starIndependentMatrixEntry% + }% + \par\@aftersectionfalse\ignorespaces% + }% +\fi +% +\endinput + + +%% end of file `moderncvskillmatrix.sty'. |