introduce \setcvskillcolumns to adjust the cvskill matrix columns

This commit is contained in:
David 2021-01-19 19:43:33 +01:00
commit 867761fc49
2 changed files with 74 additions and 40 deletions

View file

@ -75,6 +75,7 @@
\@initializelength{\skillmatrix@commentwidth} \@initializelength{\skillmatrix@commentwidth}
\@initializelength{\skillmatrix@commentpadding} \@initializelength{\skillmatrix@commentpadding}
\@initializelength{\skillmatrix@hintscolumnwidth} \@initializelength{\skillmatrix@hintscolumnwidth}
\@initializelength{\skillmatrix@bodylength}
\@initializelength{\skilllegend@hintscolumnwidth} \@initializelength{\skilllegend@hintscolumnwidth}
% \separatorrulewidth is defined in moderncvbodyv.sty and we need to % \separatorrulewidth is defined in moderncvbodyv.sty and we need to
% define it to not throw an error in the other cases % define it to not throw an error in the other cases
@ -96,10 +97,11 @@
\setlength{\skilllegend@hintscolumnwidth}{\hintscolumnwidth} \setlength{\skilllegend@hintscolumnwidth}{\hintscolumnwidth}
\setlength{\cvskill@width}{\widthof{\cvSkill{5}}} \setlength{\cvskill@width}{\widthof{\cvSkill{5}}}
\setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}} \setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}}
\setlength{\skillmatrix@columnwidth}{0.45\maincolumnwidth}% \setlength{\skillmatrix@bodylength}{\maincolumnwidth}
\setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
\setlength{\skillmatrix@commentwidth}{\maincolumnwidth-\skillmatrix@columnwidth-\skillmatrix@commentpadding}% \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-\skillmatrix@commentpadding}%
\setlength{\cvskilllegend@descriptorwidth}{0.5\maincolumnwidth-\cvskill@width-\skillmatrix@commentpadding} \setlength{\cvskilllegend@descriptorwidth}{0.5\skillmatrix@bodylength-\cvskill@width-\skillmatrix@commentpadding}
} }
\fi \fi
@ -111,7 +113,6 @@
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}% \setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}%
\setlength{\cvskill@width}{\widthof{\cvSkill{5}}} \setlength{\cvskill@width}{\widthof{\cvSkill{5}}}
\setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}} \setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}}
\@initializelength{\skillmatrix@bodylength}
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth} \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}
\setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
@ -128,7 +129,6 @@
\setlength{\skilllegend@hintscolumnwidth}{0ex}%\skillmatrix@hintscolumnwidth \setlength{\skilllegend@hintscolumnwidth}{0ex}%\skillmatrix@hintscolumnwidth
\setlength{\cvskill@width}{\widthof{\cvSkill{5}}} \setlength{\cvskill@width}{\widthof{\cvSkill{5}}}
\setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}} \setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}}
\@initializelength{\skillmatrix@bodylength}
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth} \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}
\setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
@ -144,7 +144,6 @@
\setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth} \setlength{\skilllegend@hintscolumnwidth}{\skillmatrix@hintscolumnwidth}
\setlength{\cvskill@width}{\widthof{\cvSkill{5}}} \setlength{\cvskill@width}{\widthof{\cvSkill{5}}}
\setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}} \setlength{\cvskill@experiencewidth}{\widthof{``Jahre''}}
\@initializelength{\skillmatrix@bodylength}
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\skillmatrix@commentpadding}%\skillmatrix@hintscolumnwidth \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\skillmatrix@commentpadding}%\skillmatrix@hintscolumnwidth
\setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}% \setlength{\skillmatrix@columnwidth}{0.45\skillmatrix@bodylength}%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} \setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth}
@ -153,49 +152,82 @@
} }
\fi \fi
% command to adjust the width of the first colum of the skillmatrix % command to adjust the width of the first colum of the skillmatrix,
% and the colum 3rd (Skill) column. It takes two optional arguments. % the colum 3rd (Skill) column as well as the Experience column (Years).
% \skillMatrixColumnWidth[<width>][<factor>], where <width> is a length smaller than % It takes three optional arguments.
% \textwidth and 0 < <factor> < 1 is a factor influencing the width of the skill column, % \setcvskillcolumns[<width>][<factor>][<exp_width>], where <width> is a length smaller than
% aka \skillmatrix@columnwidth % \textwidth and 0 < <factor> < 1 is a factor influencing the width of the skill column, % aka \skillmatrix@columnwidth
\DeclareDocumentCommand{\skillMatrixColumnWidth}{+O{} +O{}}{}% % and <exp_width> is a width smaller than \textwidth resetting the width (\cvskill@experiencewidth) of the years column.
\RenewDocumentCommand{\skillMatrixColumnWidth}{+O{\skillmatrix@hintscolumnwidth} +O{0.45}}{ \DeclareDocumentCommand{\setcvskillcolumns}{+O{} +O{} +O{}}{}%
\def\arg@new@hintscolumnwidth{#1}% \RenewDocumentCommand{\setcvskillcolumns}{+O{\skillmatrix@hintscolumnwidth} +O{0.45} +O{\cvskill@experiencewidth}}{%
\def\arg@new@bodyLengthFactor{#2}% \def\arg@new@hintscolumnwidth{#1}% <-- all these terminal % signs are necessary for the fancy style to not show weird spaces!!!
% Check for empty arguments. Defaults are given. Thus a call of \skillMatrixColumnWidth \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 % 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 % \def\arg@new@bodyLengthFactor{#2}. However, we need to take care of calls like
% \skillMatrixColumnWidth[], \skillMatrixColumnWidth[][] or even % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even
% \skillMatrixColumnWidth[<somelength>][] \skillMatrixColumnWidth[][<somefactor>] % \setcvskillcolumns[<somelength>][], \setcvskillcolumns[][<somefactor>] \setcvskillcolumns[][][<length>]
\ifdefempty{\arg@new@hintscolumnwidth}{% \ifdefempty{\arg@new@hintscolumnwidth}{%
% Case \skillMatrixColumnWidth[], \skillMatrixColumnWidth[][] or \skillMatrixColumnWidth[][<somefactor>] % Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][<somefactor>]
\ifdefempty{\arg@new@bodyLengthFactor}{ \ifdefempty{\arg@new@bodyLengthFactor}{%
% Case \skillMatrixColumnWidth[][] do nothing here and use default % Case \setcvskillcolumns[][] do nothing here and check if third argument is empty
% \skillmatrix@columnwidth \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 \skillMatrixColumnWidth[][<somefactor>] % Case \setcvskillcolumns[][<somefactor>], \setcvskillcolumns[][<somefactor>][<possilly length>]
\setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}%
} \ifdefempty{\arg@new@experienceWidth}{%
% Case \skillMatrixColumnWidth[] and recalculate lengths affected by the change % Case \setcvskillcolumns[][<somefactor>][] do nothing here
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@experiencewidth} }{%
\setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-\skillmatrix@commentpadding}% % 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-\skillmatrix@commentpadding}%
}%
% Case \setcvskillcolumns[] nothing needs to be done here recalculate lengths affected by the change
}{% }{%
% Case \skillMatrixColumnWidth, \skillMatrixColumnWidth[<width>], \skillMatrixColumnWidth[<width>][] % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][]
% or \skillMatrixColumnWidth[<width>][<somefactor>] % or \setcvskillcolumns[<width>][<somefactor>]
\setlength{\skillmatrix@hintscolumnwidth}{\arg@new@hintscolumnwidth}% \setlength{\skillmatrix@hintscolumnwidth}{\arg@new@hintscolumnwidth}%
\setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth} \setlength{\skillmatrix@bodylength}{\maincolumnwidth-\skillmatrix@hintscolumnwidth-\separatorcolumnwidth}%
% in case second argument is given but left empty use default % in case second argument is given but left empty use default
\ifdefempty{\arg@new@bodyLengthFactor}{ \ifdefempty{\arg@new@bodyLengthFactor}{%
% Case \skillMatrixColumnWidth[<width>][] do nothing here and use default % Case \setcvskillcolumns[<width>][] do nothing here and use default
% \skillmatrix@columnwidth % \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 \skillMatrixColumnWidth, \skillMatrixColumnWidth[<width>], \skillMatrixColumnWidth[<width>][<somefactor>] % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][<somefactor>]
\setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}%
} \ifdefempty{\arg@new@experienceWidth}{%
\setlength{\cvskill@descriptorwidth}{\skillmatrix@columnwidth-\cvskill@width-\cvskill@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-\skillmatrix@commentpadding}% \setlength{\skillmatrix@commentwidth}{\skillmatrix@bodylength-\skillmatrix@columnwidth-\skillmatrix@commentpadding}%
}% }%
} }%
% %------------------------------------------------------------------------------- % %-------------------------------------------------------------------------------
% % \cvSkillMatrixLegend % % \cvSkillMatrixLegend

View file

@ -9,7 +9,7 @@
\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman') \documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
% moderncv themes % moderncv themes
\moderncvstyle{banking} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy' \moderncvstyle{classic} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy'
\moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red' \moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'
%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name %\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page %\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
@ -110,9 +110,11 @@ Detailed achievements:%
\cvitemwithcomment{Language 3}{Skill level}{Comment} \cvitemwithcomment{Language 3}{Skill level}{Comment}
\section{Computer skills} \section{Computer skills}
\skillMatrixColumnWidth[3em][] \setcvskillcolumns[][0.45][\widthof{``Year''}]%
% \setcvskillcolumns[\widthof{``Languag''}][0.48][]
% \setcvskillcolumns[\widthof{``Languag''}]%
% % Add a legend if you are usng \cvSkill{<1-5>} commant % % Add a legend if you are usng \cvSkill{<1-5>} commant
\cvSkillMatrixLegend*[1em]{} %Optional add a Legend descriptor or a star for dashed lines. \cvSkillMatrixLegend*[1em]{}% %Optional add a Legend descriptor or a star for dashed lines.
% \cvSkillMatrixLegend*{Legend} % \cvSkillMatrixLegend*{Legend}
\cvdoubleitem{Languages}{\cvSkill{1}, Bash, 2 years}{category 4}{XXX, YYY, ZZZ} \cvdoubleitem{Languages}{\cvSkill{1}, Bash, 2 years}{category 4}{XXX, YYY, ZZZ}
\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ} \cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}