From ca5d18fb6edcb60ee89248ce9998918d6ee9a109 Mon Sep 17 00:00:00 2001 From: igor Date: Wed, 4 Feb 2026 04:42:17 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?moderncv=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил modernc3 --- moderncv/moderncviconssymbols.sty | 33 + moderncv/moderncviconstikz.sty | 445 ++++++++++++ moderncv/moderncvskillmatrix.sty | 1051 +++++++++++++++++++++++++++++ moderncv/moderncvstylebanking.sty | 75 ++ moderncv/moderncvstylecasual.sty | 62 ++ 5 files changed, 1666 insertions(+) create mode 100644 moderncv/moderncviconssymbols.sty create mode 100644 moderncv/moderncviconstikz.sty create mode 100644 moderncv/moderncvskillmatrix.sty create mode 100644 moderncv/moderncvstylebanking.sty create mode 100644 moderncv/moderncvstylecasual.sty diff --git a/moderncv/moderncviconssymbols.sty b/moderncv/moderncviconssymbols.sty new file mode 100644 index 0000000..2563043 --- /dev/null +++ b/moderncv/moderncviconssymbols.sty @@ -0,0 +1,33 @@ +%% start of file `moderncviconssymbols.sty'. +%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv). +% +% 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{moderncviconssymbols}[2021-12-12 v2.2.0 modern curriculum vitae icons selector] + + +\ifxetexorluatex + \RequirePackage{moderncviconsawesome} + \RequirePackage{moderncviconsacademic} +\else + \ClassWarningNoLine{moderncv}{"academicons requires xetex/luatex to work. Using alternatives."} + \ifpdftex + \RequirePackage{moderncviconsawesome} + \else + \RequirePackage{moderncviconsmarvosym} + \fi +\fi + +% Define symbols that are not defined at this level +\RequirePackage{moderncviconstikz} + +\endinput + +%% end of file `moderncviconssymbols.sty'. diff --git a/moderncv/moderncviconstikz.sty b/moderncv/moderncviconstikz.sty new file mode 100644 index 0000000..c3e9f40 --- /dev/null +++ b/moderncv/moderncviconstikz.sty @@ -0,0 +1,445 @@ +%% start of file `moderncviconstikz.sty'. +%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv). +% +% 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{moderncviconstikz}[2022-02-21 v2.3.1 modern curriculum vitae and letter icons: tickz] + + +%------------------------------------------------------------------------------- +% required packages +%------------------------------------------------------------------------------- +\RequirePackage{tikz} +\RequirePackage{etoolbox} + + +%------------------------------------------------------------------------------- +% all symbols described in moderncv.cls +% only redefine symbols that are not defined at this level +%------------------------------------------------------------------------------- +\ifdefempty{\linkedinsocialsymbol} { + \renewcommand*{\linkedinsocialsymbol} { + \protect\raisebox{-0.165em}{ + \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[cm={{0.60,0.0,0.0,0.60,(346.39,123.07)}}] + \protect\path[fill=color2] + (381,202) -- (434,202) .. controls (439,202) and (442,205) .. + (442,210) -- (442,264) .. controls (442,268) and (439,272) .. + (434,272) -- (381,272) .. controls (376,272) and (372,268) .. + (372,264) -- (372,210) .. controls (372,205) and (376,202) .. + (381,202) -- cycle; + \protect\begin{scope}[xscale=0.98, yscale=1.02, fill=white] + \protect\path[fill=white] + (403,253) -- (403,224) -- (394,224) -- (394,253) -- + cycle(398,211) .. controls (397,211) and (395,212) .. + (395,213) .. controls (394,213) and (393,215) .. + (393,216) .. controls (393,217) and (394,218) .. + (395,219) .. controls (395,220) and (397,220) .. + (398,220) .. controls (400,220) and (401,220) .. + (402,219) .. controls (402,218) and (403,217) .. + (403,216) .. controls (403,215) and (402,213) .. + (402,213) .. controls (401,212) and (400,211) .. + (398,211) -- cycle; + \protect\path[fill=white] + (410,253) -- (419,253) -- + (419,236) .. controls (419,236) and (419,235) .. + (419,235) .. controls (419,235) and (419,234) .. + (419,234) .. controls (419,233) and (420,232) .. + (421,232) .. controls (422,231) and (423,231) .. + (424,231) .. controls (425,231) and (427,231) .. + (427,232) .. controls (428,234) and (428,235) .. + (428,237) -- (428,253) -- (437,253) -- + (437,236) .. controls (437,232) and (436,228) .. + (434,226) .. controls (433,224) and (430,223) .. + (427,223) .. controls (425,223) and (423,224) .. + (421,225) .. controls (420,226) and (419,227) .. + (418,228) -- (418,228) -- (417,224) -- + (410,224) .. controls (410,225) and (410,227) .. + (410,228) .. controls (410,230) and (410,231) .. + (410,233) -- cycle; + \protect\end{scope} + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\twittersocialsymbol} { + \renewcommand*{\twittersocialsymbol} { + \protect\raisebox{0em}{% + \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.005, yscale=-0.005, inner sep=0pt, outer sep=0pt] + \protect\path[fill=color2] + (2000, 192) .. controls (1926, 225) and (1847, 247) .. + (1764, 257) .. controls (1849, 206) and (1914, 126) .. + (1945, 30) .. controls (1865, 77) and (1778, 111) .. + (1684, 130) .. controls (1609, 50) and (1503, 0) .. + (1385, 0) .. controls (1158, 0) and ( 974, 184) .. + ( 974, 410) .. controls ( 974, 442) and ( 978, 474) .. + ( 985, 504) .. controls ( 644, 487) and ( 342, 323) .. + ( 139, 75) .. controls ( 104, 136) and ( 84, 206) .. + ( 84, 281) .. controls ( 84, 424) and ( 156, 549) .. + ( 266, 623) .. controls ( 199, 621) and ( 136, 602) .. + ( 80, 572) .. controls ( 80, 573) and ( 80, 575) .. + ( 80, 577) .. controls ( 80, 776) and ( 222, 941) .. + ( 409, 979) .. controls ( 375, 988) and ( 339, 993) .. + ( 301, 993) .. controls ( 275, 993) and ( 249, 991) .. + ( 224, 986) .. controls ( 276,1149) and ( 428,1268) .. + ( 607,1271) .. controls ( 467,1381) and ( 290,1447) .. + ( 98,1447) .. controls ( 65,1447) and ( 32,1445) .. + ( 0,1441) .. controls ( 182,1557) and ( 397,1625) .. + ( 629,1625) .. controls (1384,1625) and (1796,1000) .. + (1796, 458) .. controls (1796, 440) and (1796, 422) .. + (1795, 405) .. controls (1875, 347) and (1945, 275) .. + (2000, 192); + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\githubsocialsymbol} { + \renewcommand*{\githubsocialsymbol} { + \protect\raisebox{-0.15em} { + \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2] + (117, 60) .. controls (117, 71) and (108, 81) .. + ( 96, 81) .. controls ( 85, 81) and ( 75, 71) .. + ( 75, 60) .. controls ( 75, 48) and ( 85, 39) .. + ( 96, 39) .. controls (108, 39) and (117, 48) .. + (117, 60) -- cycle; + \protect\path[cm={{0.88,0.0,0.0,0.88,(11.10,6.89)}}, fill=white] + (117, 60) .. controls (117, 71) and (108, 81) .. + ( 96, 81) .. controls ( 85, 81) and ( 75, 71) .. + ( 75, 60) .. controls ( 75, 48) and ( 85, 39) .. + ( 96, 39) .. controls (108, 39) and (117, 48) .. + (117, 60) -- cycle; + \protect\path[fill=color2, nonzero rule] + (103, 45) .. controls (103, 45) and (101, 46) .. + (101, 47) -- (100, 47) -- + ( 99, 47) .. controls ( 99, 47) and ( 98, 47) .. + ( 97, 47) .. controls ( 94, 47) and ( 93, 47) .. + ( 92, 47) -- ( 92, 47) -- + ( 91, 47) .. controls ( 90, 46) and ( 88, 45) .. + ( 88, 45) .. controls ( 88, 45) and ( 88, 45) .. + ( 87, 45) .. controls ( 87, 45) and ( 87, 45) .. + ( 87, 45) .. controls ( 86, 46) and ( 86, 48) .. + ( 86, 49) -- ( 87, 50) -- + ( 86, 51) .. controls ( 85, 51) and ( 85, 52) .. + ( 85, 53) .. controls ( 85, 54) and ( 85, 57) .. + ( 85, 58) .. controls ( 85, 58) and ( 85, 58) .. + ( 82, 59) .. controls ( 79, 59) and ( 77, 59) .. + ( 77, 59) .. controls ( 77, 59) and ( 77, 59) .. + ( 78, 59) .. controls ( 80, 59) and ( 83, 59) .. + ( 85, 59) .. controls ( 85, 59) and ( 85, 59) .. + ( 85, 59) .. controls ( 86, 59) and ( 86, 59) .. + ( 86, 59) .. controls ( 86, 59) and ( 85, 59) .. + ( 84, 59) .. controls ( 82, 60) and ( 80, 60) .. + ( 79, 60) .. controls ( 78, 61) and ( 77, 61) .. + ( 77, 61) .. controls ( 77, 61) and ( 78, 61) .. + ( 79, 61) .. controls ( 81, 60) and ( 83, 60) .. + ( 85, 60) .. controls ( 86, 60) and ( 86, 60) .. + ( 86, 60) .. controls ( 86, 60) and ( 87, 61) .. + ( 88, 62) .. controls ( 89, 63) and ( 90, 63) .. + ( 92, 63) .. controls ( 92, 63) and ( 93, 64) .. + ( 93, 64) .. controls ( 93, 64) and ( 93, 64) .. + ( 93, 64) .. controls ( 92, 64) and ( 92, 65) .. + ( 92, 65) .. controls ( 92, 66) and ( 90, 66) .. + ( 89, 66) .. controls ( 88, 66) and ( 88, 66) .. + ( 87, 65) .. controls ( 87, 64) and ( 86, 63) .. + ( 86, 63) .. controls ( 85, 63) and ( 84, 63) .. + ( 84, 63) .. controls ( 84, 63) and ( 84, 63) .. + ( 84, 63) .. controls ( 85, 64) and ( 86, 65) .. + ( 86, 66) .. controls ( 87, 67) and ( 87, 68) .. + ( 88, 68) .. controls ( 89, 68) and ( 89, 68) .. + ( 90, 68) -- ( 92, 68) -- ( 92, 70) -- ( 92, 72) -- + ( 91, 72) .. controls ( 91, 72) and ( 91, 73) .. + ( 91, 73) .. controls ( 90, 73) and ( 90, 73) .. + ( 91, 73) .. controls ( 92, 73) and ( 92, 73) .. + ( 92, 73) .. controls ( 93, 73) and ( 93, 73) .. + ( 93, 70) .. controls ( 93, 67) and ( 93, 67) .. + ( 94, 66) -- ( 94, 66) -- + ( 94, 69) .. controls ( 94, 71) and ( 94, 73) .. + ( 94, 73) .. controls ( 94, 73) and ( 94, 73) .. + ( 93, 74) .. controls ( 93, 74) and ( 93, 74) .. + ( 93, 74) .. controls ( 93, 74) and ( 93, 74) .. + ( 94, 74) .. controls ( 94, 74) and ( 95, 74) .. + ( 96, 73) .. controls ( 96, 72) and ( 96, 71) .. + ( 96, 68) -- ( 96, 66) -- ( 96, 66) -- + ( 96, 69) .. controls ( 96, 72) and ( 96, 72) .. + ( 97, 73) .. controls ( 97, 74) and ( 99, 74) .. + ( 99, 74) .. controls ( 99, 74) and ( 99, 74) .. + ( 99, 73) .. controls ( 99, 73) and ( 98, 73) .. + ( 98, 72) .. controls ( 98, 72) and ( 98, 66) .. + ( 98, 66) .. controls ( 98, 66) and ( 99, 66) .. + ( 99, 66) .. controls ( 99, 67) and ( 99, 67) .. + ( 99, 69) .. controls ( 99, 71) and ( 99, 72) .. + ( 99, 72) .. controls ( 99, 73) and (100, 73) .. + (100, 73) .. controls (101, 73) and (101, 73) .. + (101, 73) .. controls (102, 73) and (102, 73) .. + (102, 73) .. controls (101, 72) and (101, 72) .. + (101, 69) .. controls (101, 66) and (101, 65) .. + (100, 65) .. controls (100, 64) and (100, 64) .. + (100, 64) -- ( 99, 64) -- + (100, 63) .. controls (101, 63) and (102, 63) .. + (103, 63) .. controls (104, 62) and (106, 61) .. + (106, 60) -- (106, 60) -- + (107, 60) .. controls (109, 60) and (113, 60) .. + (115, 61) .. controls (115, 61) and (115, 61) .. + (115, 61) .. controls (115, 60) and (111, 60) .. + (108, 59) .. controls (107, 59) and (107, 59) .. + (107, 59) .. controls (107, 59) and (107, 59) .. + (107, 59) -- (107, 59) -- + (108, 59) .. controls (110, 59) and (112, 59) .. + (114, 59) .. controls (115, 59) and (115, 59) .. + (115, 59) .. controls (115, 59) and (112, 59) .. + (109, 59) .. controls (108, 58) and (107, 58) .. + (107, 58) .. controls (107, 58) and (107, 58) .. + (107, 58) .. controls (107, 57) and (107, 56) .. + (107, 55) .. controls (107, 53) and (107, 53) .. + (107, 53) .. controls (107, 52) and (106, 51) .. + (106, 50) -- (105, 50) -- + (105, 48) .. controls (105, 47) and (105, 46) .. + (105, 46) -- (105, 45) -- + (104, 45) .. controls (104, 45) and (104, 45) .. + (103, 45) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\gitlabsocialsymbol} { + \renewcommand*{\gitlabsocialsymbol} { + \protect\raisebox{-0.12em}{ + \protect\begin{tikzpicture}[x=0.11em, y=0.11em, xscale=0.015, yscale=-0.015, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2,line width=0.057pt] + (105.2000,24.9000) .. controls (102.1000,16.0000) and (89.5000,16.0000) .. + (86.3000,24.9000) -- (29.8000,199.7000) -- (161.7000,199.7000) .. controls + (161.7000,199.7000) and (105.2000,24.9000) .. (105.2000,24.9000) -- cycle + (0.9000,287.7000) .. controls (-1.7000,295.7000) and (1.2000,304.6000) .. + (8.0000,309.7000) -- (255.9000,493.7000) -- (29.7000,199.7000) -- cycle + (161.7000,199.7000) -- (161.7000,199.7000) -- (256.0000,493.7000) -- (350.3000,199.7000) -- cycle + (511.1000,287.7000) -- (482.3000,199.7000) -- (256.0000,493.7000) -- + (503.9000,309.7000) .. controls (510.8000,304.6000) and (513.6000,295.7000) .. + (511.1000,287.7000) -- cycle(425.7000,24.9000) .. controls (422.6000,16.0000) + and (410.0000,16.0000) .. (406.8000,24.9000) -- (350.2000,199.7000) -- (482.2000,199.7000) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\skypesocialsymbol} { + \renewcommand*{\skypesocialsymbol} { + \protect\raisebox{-0.15em}{ + \protect\begin{tikzpicture}[y=0.08em, x=0.08em, xscale=0.020, yscale=-0.020, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2,even odd rule] + (487.6550,288.9690) .. controls (489.0610,278.5690) and (489.8700,267.9960) .. + (489.8700,257.2330) .. controls (489.8700,128.0770) and (384.5990,23.3610) .. + (254.7670,23.3610) .. controls (241.8630,23.3610) and (229.2120,24.4210) .. + (216.9010,26.4410) .. controls (194.8280,12.0570) and (168.5590,3.6740) .. + (140.2880,3.6740) .. controls (62.7660,3.6740) and (0.0000,66.4820) .. + (0.0000,143.9800) .. controls (0.0000,172.1780) and (8.2990,198.3740) .. + (22.5900,220.3690) .. controls (20.6650,232.3860) and (19.6810,244.6920) .. + (19.6810,257.2290) .. controls (19.6810,386.4050) and (124.8980,491.1100) .. + (254.7660,491.1100) .. controls (269.4230,491.1100) and (283.6930,489.6840) .. + (297.5620,487.1780) .. controls (319.1120,500.5470) and (344.4960,508.3260) .. + (371.7080,508.3260) .. controls (449.2100,508.3260) and (512.0010,445.5020) .. + (512.0010,368.0120) .. controls (511.9980,338.7190) and (503.0410,311.4840) .. + (487.6550,288.9690) -- cycle(276.7400,429.5960) .. controls (202.0340,433.4870) and (167.0750,416.9590) .. (135.0500,386.9050) .. controls (99.2850,353.3370) and (113.6520,315.0500) .. + (142.7900,313.1040) .. controls (171.9120,311.1590) and (189.3980,346.1160) .. + (204.9410,355.8400) .. controls (220.4650,365.5280) and (279.5340,387.6000) .. + (310.7350,351.9320) .. controls (344.7100,313.1040) and (288.1410,293.0120) .. + (246.6760,286.9300) .. controls (187.4730,278.1640) and (112.7260,246.1370) .. + (118.5410,183.0230) .. controls (124.3580,119.9490) and (172.1230,87.6090) .. + (222.3910,83.0470) .. controls (286.4680,77.2300) and (328.1820,92.7540) .. + (361.1760,120.9070) .. controls (399.3270,153.4360) and (378.6840,189.8010) .. + (354.3770,192.7270) .. controls (330.1660,195.6360) and (302.9730,139.2230) .. + (249.5860,138.3750) .. controls (194.5590,137.5110) and (157.3690,195.6360) .. + (225.3000,212.1590) .. controls (293.2660,228.6640) and (366.0500,235.4450) .. + (392.2610,297.5760) .. controls (418.4900,359.7130) and (351.5070,425.7010) .. + (276.7400,429.5960) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\googlescholarsocialsymbol} { + \renewcommand*{\googlescholarsocialsymbol} { + \protect\raisebox{-0.12em}{ + \protect\begin{tikzpicture}[y=2.0pt, x=2.0pt, yscale=-0.1, xscale=0.1, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2] (25.0000,2.0000) .. controls (12.3095,2.0000) and (2.0000,12.3095) + .. (2.0000,25.0000) .. controls (2.0000,37.6905) and (12.3095,48.0000) .. + (25.0000,48.0000) .. controls (37.6905,48.0000) and (48.0000,37.6905) .. + (48.0000,25.0000) .. controls (48.0000,12.3095) and (37.6905,2.0000) .. + (25.0000,2.0000) -- cycle(25.0000,4.0000) .. controls (36.6095,4.0000) and + (46.0000,13.3905) .. (46.0000,25.0000) .. controls (46.0000,36.6095) and + (36.6095,46.0000) .. (25.0000,46.0000) .. controls (13.3905,46.0000) and + (4.0000,36.6095) .. (4.0000,25.0000) .. controls (4.0000,13.3905) and + (13.3905,4.0000) .. (25.0000,4.0000) -- cycle(21.0000,11.0000) -- + (11.0000,20.0000) -- (17.7812,20.0000) .. controls (17.8012,22.8470) and + (19.9675,25.7305) .. (23.7695,25.7305) .. controls (24.1295,25.7305) and + (24.5297,25.6904) .. (24.9297,25.6504) .. controls (24.7497,26.1004) and + (24.5605,26.4701) .. (24.5605,27.0801) .. controls (24.5605,28.2301) and + (25.1404,28.9201) .. (25.6504,29.5801) .. controls (24.0204,29.6901) and + (20.9898,29.8795) .. (18.7598,31.2695) .. controls (16.6298,32.5595) and + (15.9805,34.4300) .. (15.9805,35.7500) .. controls (15.9805,38.4700) and + (18.5005,41.0000) .. (23.7305,41.0000) .. controls (29.9305,41.0000) and + (33.2207,37.5105) .. (33.2207,34.0605) .. controls (33.2207,31.5305) and + (31.7795,30.2799) .. (30.1895,28.9199) -- (28.9004,27.8906) .. controls + (28.5004,27.5706) and (27.9492,27.1203) .. (27.9492,26.3203) .. controls + (27.9492,25.5103) and (28.5007,24.9898) .. (28.9707,24.5098) .. controls + (30.4807,23.3098) and (32.0000,21.9602) .. (32.0000,19.2402) .. controls + (32.0000,18.1972) and (31.7562,17.3484) .. (31.4082,16.6504) -- + (35.0000,13.5703) -- (35.0000,17.2773) .. controls (34.4050,17.6233) and + (34.0000,18.2610) .. (34.0000,19.0000) -- (34.0000,25.0000) .. controls + (34.0000,26.1040) and (34.8960,27.0000) .. (36.0000,27.0000) .. controls + (37.1040,27.0000) and (38.0000,26.1040) .. (38.0000,25.0000) -- + (38.0000,19.0000) .. controls (38.0000,18.2620) and (37.5950,17.6243) .. + (37.0000,17.2773) -- (37.0000,12.0000) .. controls (37.0000,11.9570) and + (36.9806,11.9209) .. (36.9746,11.8789) -- (38.0000,11.0000) -- + (21.0000,11.0000) -- cycle(24.2695,14.2402) .. controls (27.2695,14.2402) and + (28.8203,18.3500) .. (28.8203,21.0000) .. controls (28.8203,21.6500) and + (28.7399,22.8199) .. (27.9199,23.6699) .. controls (27.3399,24.2599) and + (26.3709,24.6992) .. (25.4609,24.6992) .. controls (22.3709,24.6992) and + (20.9492,20.6202) .. (20.9492,18.1602) .. controls (20.9492,17.2102) and + (21.1400,16.2209) .. (21.7500,15.4609) .. controls (22.3300,14.7109) and + (23.3395,14.2402) .. (24.2695,14.2402) -- cycle(26.0391,30.6094) .. controls + (26.4091,30.6094) and (26.5909,30.6104) .. (26.8809,30.6504) .. controls + (29.6209,32.6304) and (30.8008,33.6202) .. (30.8008,35.4902) .. controls + (30.8008,37.7602) and (28.9700,39.4609) .. (25.5000,39.4609) .. controls + (21.6400,39.4609) and (19.1602,37.5905) .. (19.1602,34.9805) .. controls + (19.1602,32.3705) and (21.4598,31.4992) .. (22.2598,31.1992) .. controls + (23.7698,30.6792) and (25.7191,30.6094) .. (26.0391,30.6094) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} +~} +}{}\par + +\ifdefempty{\matrixsocialsymbol} { + \renewcommand*{\matrixsocialsymbol} { + \protect\raisebox{-0.12em}{ + \protect\begin{tikzpicture}[y=1.8pt, x=1.8pt, yscale=-0.15, xscale=0.15, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2] + (0.9360,0.7320) .. controls (0.9360,10.9053) and (0.9360,21.0787) .. + (0.9360,31.2520) .. controls (1.6673,31.2520) and (2.3987,31.2520) .. + (3.1300,31.2520) .. controls (3.3452,32.0075) and (2.8778,32.0803) .. + (2.2413,31.9840) .. controls (1.5258,31.9840) and (0.8104,31.9840) .. + (0.0950,31.9840) .. controls (0.0950,21.3240) and (0.0950,10.6640) .. + (0.0950,0.0040) .. controls (1.1063,0.0040) and (2.1177,0.0040) .. + (3.1290,0.0040) .. controls (3.3442,0.7598) and (2.8768,0.8319) .. + (2.2403,0.7344) .. controls (1.8055,0.7336) and (1.3708,0.7328) .. + (0.9360,0.7320) -- cycle(9.3860,10.4070) .. controls (9.4181,10.9043) and + (9.3236,11.5281) .. (9.4300,11.9510) .. controls (10.7306,9.8293) and + (14.1727,9.3918) .. (15.8298,11.2910) .. controls (16.3916,12.8310) and + (17.3334,10.0899) .. (18.5637,10.2414) .. controls (20.4575,9.7636) and + (23.0149,10.3893) .. (23.6011,12.4937) .. controls (24.0197,14.2344) and + (23.7678,16.0478) .. (23.8370,17.8238) .. controls (23.8370,19.1536) and + (23.8370,20.4833) .. (23.8370,21.8130) .. controls (22.7947,21.8130) and + (21.7523,21.8130) .. (20.7100,21.8130) .. controls (20.6777,19.2218) and + (20.7833,16.6250) .. (20.6389,14.0382) .. controls (20.4668,12.0762) and + (17.2764,12.0985) .. (16.8890,13.9332) .. controls (16.5424,15.7480) and + (16.7622,17.6175) .. (16.7000,19.4583) .. controls (16.7000,20.2432) and + (16.7000,21.0281) .. (16.7000,21.8130) .. controls (15.6573,21.8130) and + (14.6147,21.8130) .. (13.5720,21.8130) .. controls (13.5377,19.1909) and + (13.6502,16.5608) .. (13.4952,13.9452) .. controls (13.2700,12.0546) and + (10.3372,12.2098) .. (9.8050,13.8370) .. controls (9.3690,15.2175) and + (9.6378,16.6981) .. (9.5630,18.1268) .. controls (9.5630,19.3556) and + (9.5630,20.5843) .. (9.5630,21.8130) .. controls (8.5200,21.8130) and + (7.4770,21.8130) .. (6.4340,21.8130) .. controls (6.4340,18.0097) and + (6.4340,14.2063) .. (6.4340,10.4030) .. controls (7.4180,10.4043) and + (8.4020,10.4057) .. (9.3860,10.4070) -- cycle(30.0980,31.2470) .. controls + (30.0980,21.0737) and (30.0980,10.9003) .. (30.0980,0.7270) .. controls + (29.3667,0.7270) and (28.6353,0.7270) .. (27.9040,0.7270) .. controls + (27.6888,-0.0285) and (28.1562,-0.1013) .. (28.7927,-0.0050) .. controls + (29.5082,-0.0050) and (30.2236,-0.0050) .. (30.9390,-0.0050) .. controls + (30.9390,10.6550) and (30.9390,21.3150) .. (30.9390,31.9750) .. controls + (29.9273,31.9750) and (28.9157,31.9750) .. (27.9040,31.9750) .. controls + (27.6888,31.2192) and (28.1562,31.1471) .. (28.7927,31.2446) .. controls + (29.2278,31.2454) and (29.6629,31.2462) .. (30.0980,31.2470) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + +\ifdefempty{\signalsocialsymbol} { + \renewcommand*{\signalsocialsymbol} { + \protect\raisebox{-0.12em}{ + \protect\begin{tikzpicture}[y=0.1pt, x=0.1pt, yscale=-0.13, xscale=0.13, inner sep=0pt, outer sep=0pt] + \protect\begin{scope}[shift={(507,387)}] + \protect\path[fill=color2] + (430.1000,180.9000) -- (437.8000,211.9000) .. controls (407.6000,219.3000) + and (378.7000,231.3000) .. (352.1000,247.3000) -- (335.7000,220.0000) .. + controls (365.0000,202.3000) and (396.9000,189.1000) .. (430.1000,180.9000) -- + cycle(593.9000,180.9000) -- (586.2000,211.9000) .. controls + (616.4000,219.3000) and (645.3000,231.3000) .. (671.9000,247.3000) -- + (688.4000,219.9000) .. controls (659.0000,202.3000) and (627.2000,189.1000) .. + (593.9000,180.9000) -- cycle(220.0000,335.7000) .. controls + (202.3000,365.0000) and (189.1000,396.9000) .. (180.9000,430.1000) -- + (211.9000,437.8000) .. controls (219.3000,407.6000) and (231.3000,378.7000) .. + (247.3000,352.1000) -- cycle(202.9000,512.0000) .. controls + (202.9000,496.5000) and (204.0000,481.0000) .. (206.4000,465.7000) -- + (174.8000,460.9000) .. controls (169.7000,494.8000) and (169.7000,529.2000) .. + (174.8000,563.1000) -- (206.4000,558.3000) .. controls (204.1000,543.0000) and + (202.9000,527.5000) .. (202.9000,512.0000) -- cycle(688.3000,804.0000) -- + (671.9000,776.6000) .. controls (645.3000,792.7000) and (616.5000,804.6000) .. + (586.3000,812.0000) -- (594.0000,843.0000) .. controls (627.2000,834.8000) and + (659.0000,821.7000) .. (688.3000,804.0000) -- cycle(821.1000,512.0000) .. + controls (821.1000,527.5000) and (820.0000,543.0000) .. (817.6000,558.3000) -- + (849.2000,563.1000) .. controls (854.3000,529.2000) and (854.3000,494.8000) .. + (849.2000,460.9000) -- (817.6000,465.7000) .. controls (819.9000,481.0000) and + (821.1000,496.5000) .. (821.1000,512.0000) -- cycle(843.1000,593.8000) -- + (812.1000,586.1000) .. controls (804.7000,616.3000) and (792.7000,645.2000) .. + (776.7000,671.8000) -- (804.1000,688.3000) .. controls (821.7000,659.0000) and + (834.9000,627.1000) .. (843.1000,593.8000) -- cycle(558.3000,817.6000) .. + controls (527.6000,822.2000) and (496.4000,822.2000) .. (465.7000,817.6000) -- + (460.9000,849.2000) .. controls (494.8000,854.3000) and (529.2000,854.3000) .. + (563.1000,849.2000) -- cycle(760.8000,695.3000) .. controls + (742.4000,720.3000) and (720.3000,742.3000) .. (695.3000,760.7000) -- + (714.3000,786.4000) .. controls (741.9000,766.1000) and (766.2000,741.9000) .. + (786.6000,714.4000) -- cycle(695.3000,263.2000) .. controls + (720.3000,281.6000) and (742.4000,303.7000) .. (760.8000,328.7000) -- + (786.5000,309.5000) .. controls (766.2000,282.0000) and (741.9000,257.7000) .. + (714.5000,237.5000) -- cycle(263.2000,328.7000) .. controls + (281.6000,303.7000) and (303.7000,281.6000) .. (328.7000,263.2000) -- + (309.5000,237.5000) .. controls (282.0000,257.8000) and (257.7000,282.1000) .. + (237.5000,309.5000) -- cycle(804.0000,335.7000) -- (776.6000,352.1000) .. + controls (792.7000,378.7000) and (804.6000,407.5000) .. (812.0000,437.7000) -- + (843.0000,430.0000) .. controls (834.9000,396.8000) and (821.7000,365.0000) .. + (804.0000,335.7000) -- cycle(465.7000,206.4000) .. controls + (496.4000,201.8000) and (527.6000,201.8000) .. (558.3000,206.4000) -- + (563.1000,174.8000) .. controls (529.2000,169.7000) and (494.8000,169.7000) .. + (460.9000,174.8000) -- cycle(279.6000,795.0000) -- (213.6000,810.4000) -- + (229.0000,744.4000) -- (197.9000,737.1000) -- (182.5000,803.1000) .. controls + (180.0000,813.9000) and (183.2000,825.2000) .. (191.0000,833.0000) .. controls + (198.8000,840.8000) and (210.1000,844.0000) .. (220.9000,841.5000) -- + (286.9000,826.4000) -- cycle(204.5000,708.5000) -- (235.6000,715.7000) -- + (246.3000,669.9000) .. controls (230.8000,643.8000) and (219.2000,615.5000) .. + (211.9000,586.0000) -- (180.9000,593.7000) .. controls (187.9000,622.0000) and + (198.4000,649.2000) .. (212.3000,674.7000) -- cycle(353.7000,777.8000) -- + (308.0000,788.5000) -- (315.2000,819.6000) -- (348.9000,811.8000) .. controls + (374.5000,825.7000) and (401.7000,836.3000) .. (430.0000,843.2000) -- + (437.7000,812.2000) .. controls (408.3000,804.9000) and (380.1000,793.2000) .. + (354.0000,777.6000) -- cycle(512.0000,234.9000) .. controls + (411.2000,235.0000) and (318.3000,289.8000) .. (269.6000,378.0000) .. controls + (220.9000,466.2000) and (223.9000,574.0000) .. (277.6000,659.4000) -- + (251.0000,773.1000) -- (364.7000,746.5000) .. controls (464.4000,809.3000) and + (592.9000,802.2000) .. (685.1000,728.8000) .. controls (777.3000,655.4000) and + (812.9000,531.7000) .. (774.0000,420.5000) .. controls (734.8000,309.2000) and + (629.8000,234.8000) .. (512.0000,234.9000) -- cycle; + \protect\end{scope} + \protect\end{tikzpicture}} + ~} +}{}\par + + +\endinput + +%% end of file `moderncviconstikz.sty'. diff --git a/moderncv/moderncvskillmatrix.sty b/moderncv/moderncvskillmatrix.sty new file mode 100644 index 0000000..68b8db9 --- /dev/null +++ b/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[*][][][][][][]{} +% 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: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \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 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[*][][][][][][]{} +% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% In this legend, the first three skill levels are in one column +% +% Input: +% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. +% For the fancy style, the asterix has no meaning. +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string describing meaning of \cvskill{1}, default: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \cvskillplainlegend{} print default legend +% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines +% +% Note: +% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns +% +% +% \cvskillhead[][][][][]% +% 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: +% input_3 (optional): string naming the skill column (3nd column), default: +% input_4 (optional): string naming the experience-in-years column (4th column), default: +% input_5 (optional): string naming the comment column (5th column), default: +% +% 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[*][]{}{<0-5>}{}{}{}% +% 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[][][] +% 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[][][], thereby leaving the defaults in place for the first column. +% +% +% \setcvskilllegendcolumns[][] +% 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-. +% 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[][], 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.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}[2022-02-21 v2.3.1 modern curriculum vitae and letter skill matrix] + +% The definitions need to be adjusted depending on which moderncvbody.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.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[][][] +\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[][][], 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[][], \setcvskillcolumns[][] \setcvskillcolumns[][][] + \ifdefempty{\arg@new@hintscolumnwidth}{% + % Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][] + \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[][][]. 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[][][] + \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[][][] do nothing here + }{% + % Case \setcvskillcolumns[][][]. 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[], \setcvskillcolumns[][] + % or \setcvskillcolumns[][] + \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[][] do nothing here and use default + % \skillmatrix@columnwidth and check third argument + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[][][] do nothing here + }{% + % Case \setcvskillcolumns[][][]. 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[], \setcvskillcolumns[][] + \setlength{\skillmatrix@columnwidth}{\arg@new@bodyLengthFactor\skillmatrix@bodylength}% + \ifdefempty{\arg@new@experienceWidth}{% + % Case \setcvskillcolumns[][][] do nothing here + }{% + % Case \setcvskillcolumns[][][]. 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[][] +\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-. +% 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[][], 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[][] + \ifdefempty{\arg@new@legend@leftDescriptorFactor}{% +% % Case \setcvskilllegendcolumns[][] do nothing here, i.e. leave default values unaltered + }{% + % Case \setcvskilllegendcolumns[][], \setcvskilllegendcolumns[][] + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}% + }% +% % Case \setcvskilllegendcolumns[] nothing needs to be done here i.e. leave default values unaltered + }{% + % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[], \setcvskilllegendcolumns[][] + % or \setcvskilllegendcolumns[][] + \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[][] do nothing here and leave default values unaltered + }{% + % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[], \setcvskilllegendcolumns[][] + \RenewDocumentCommand{\skilllegend@leftdesriptorfactor}{}{\arg@new@legend@leftDescriptorFactor}% + }% + }% +}% +% +% %------------------------------------------------------------------------------- +% % \cvskilllegend +% %------------------------------------------------------------------------------- +% default legend style +% \cvskilllegend[*][][][][][][]{} +\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: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \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 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[*][][][][][][]{} +\DeclareDocumentCommand\cvskillplainlegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}% +% Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}. +% In this legend, the first three skill levels are in one column +% +% Input: +% asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. +% For the fancy style, the asterix has no meaning. +% input_1 (optional): padding length appended to the legend, default: <0.25em> +% input_2 (optional): string describing meaning of \cvskill{1}, default: +% input_3 (optional): string describing meaning of \cvskill{2}, default: +% input_4 (optional): string describing meaning of \cvskill{3}, default: +% input_5 (optional): string describing meaning of \cvskill{4}, default: +% input_6 (optional): string describing meaning of \cvskill{5}, default: +% input_7: string giving a name to the legend, default: <> +% +% Example usages: +% \cvskillplainlegend{} print default legend +% \cvskillplainlegend[0.5em]{Legend} print default legend, but adjust post padding and display the word ``Legend''. +% \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende} Fully adjust legend to German example and including dashed lines +% +% Note: +% -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns + +% declare default legend entries +\NewDocumentCommand\skillPlainLegend@defaultLevelOne{}{basic knowlegde} +\NewDocumentCommand\skillPlainLegend@defaultLevelTwo{}{intermediate knowledge, some project experience} +\NewDocumentCommand\skillPlainLegend@defaultLevelThree{}{extensive project experience} +\NewDocumentCommand\skillPlainLegend@defaultLevelFour{}{deepened expert knowledge} +\NewDocumentCommand\skillPlainLegend@defaultLevelFive{}{expert/guru} +% Redefinition of \cvskillplainlegend valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii +\RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend@defaultLevelOne} +O{\skillPlainLegend@defaultLevelTwo} +O{\skillPlainLegend@defaultLevelThree} +O{\skillPlainLegend@defaultLevelFour} +O{\skillPlainLegend@defaultLevelFive} +m}{% + \IfBooleanTF#1{% if a star is given, add dashed line + \begingroup% + \arrayrulecolor{color1}% + % 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: +% input_3 (optional): string naming the skill column (3nd column), default: +% input_4 (optional): string naming the experience-in-years column (4th column), default: +% input_5 (optional): string naming the comment column (5th column), default: +% +% 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[*][]{}{<0-5>}{}{}{}% +\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'. diff --git a/moderncv/moderncvstylebanking.sty b/moderncv/moderncvstylebanking.sty new file mode 100644 index 0000000..afc20e5 --- /dev/null +++ b/moderncv/moderncvstylebanking.sty @@ -0,0 +1,75 @@ +%% start of file `moderncvstylebanking.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv). +% +% 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{moderncvstylebanking}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: banking] + +% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules" +\@initializecommand{\moderncvstylebodyoptions}{} +\DeclareOption{fullrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,fullrules}} +\DeclareOption{shortrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,shortrules}} +\DeclareOption{mixedrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,mixedrules}} +\DeclareOption{norules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,norules}} + +% body section alignment options: "left" (default), "center" or "right" +\DeclareOption{left} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,left}} +\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}} +\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}} + +% toggle use of symbol fonts. +\@initializeif{\if@symbols}\@symbolsfalse +\DeclareOption{symbols} {\@symbolstrue} +\DeclareOption{nosymbols} {\@symbolsfalse} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{mixedrules,left,symbols} +\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 + + +%------------------------------------------------------------------------------- +% fonts & icons +%------------------------------------------------------------------------------- +% TeX Gyre Pagella font +%\ifxetexorluatex +% \setmainfont{Tex-Gyre Pagella} +% \setsansfont{Tex-Gyre Pagella} +% \setmathfont{Tex-Gyre Pagella} +% \setmathfont[range=\mathit,\mathsfit]{Tex-Gyre Pagella Italic} +% \setmathfont[range=\mathbfup,\mathbfsfup]{Tex-Gyre Pagella Bold} +% \setmathfont[range=\mathbfit,\mathbfsfit]{Tex-Gyre Pagella Bold Italic} +%\else + \IfFileExists{tgpagella.sty}% + {% + \RequirePackage{tgpagella}% + \renewcommand*{\familydefault}{\rmdefault}}% + {} +%\fi + +% symbols +\if@symbols + \moderncvicons{symbols} % use symbols +\else + \moderncvicons{letters} % do not use symbols, use letters +\fi + + + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead{3} +\moderncvbody[\moderncvstylebodyoptions]{3} + + +\endinput + + +%% end of file `moderncvstylebanking.sty'. diff --git a/moderncv/moderncvstylecasual.sty b/moderncv/moderncvstylecasual.sty new file mode 100644 index 0000000..eba5df6 --- /dev/null +++ b/moderncv/moderncvstylecasual.sty @@ -0,0 +1,62 @@ +%% start of file `moderncvstylecasual.sty'. +%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com), 2020-2022 moderncv maintainers (github.com/moderncv). +% +% 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{moderncvstylecasual}[2022-02-21 v2.3.1 modern curriculum vitae and letter style scheme: casual] + +% head section alignment options: "left" (default) or "right" +\@initializecommand{\moderncvstyleheadoptions}{} +\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}} +\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}} + +% toggle use of symbol fonts. +\@initializeif{\if@symbols}\@symbolsfalse +\DeclareOption{symbols} {\@symbolstrue} +\DeclareOption{nosymbols} {\@symbolsfalse} + +\DeclareOption*{}% avoid choking on unknown options +\ExecuteOptions{right,symbols} +\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 + +%------------------------------------------------------------------------------- +% fonts & icons +%------------------------------------------------------------------------------- +% Latin Modern fonts +%\ifxetexorluatex +% \setmainfont{Latin Modern Roman} +% \setsansfont{Latin Modern Sans} +% \setmathfont{Latin Modern Math} +%\else +% \IfFileExists{lmodern.sty}% +% {\RequirePackage{lmodern}}% +% {} +%\fi + +% symbols +\if@symbols + \moderncvicons{symbols} % use symbols +\else + \moderncvicons{letters} % do not use symbols, use letters +\fi + + +%------------------------------------------------------------------------------- +% header, body & footer +%------------------------------------------------------------------------------- +\moderncvhead[\moderncvstyleheadoptions]{2} +\moderncvbody{1} +\moderncvfoot{1} + + +\endinput + + +%% end of file `moderncvstylecasual.sty'.