diff options
author | Karl Berry <karl@freefriends.org> | 2012-05-21 23:58:58 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-05-21 23:58:58 +0000 |
commit | a7b8fe1003c960fbd27086146bb341a6ddae788a (patch) | |
tree | ed903293e66d4470669962e1d77abfb05dc561e2 /Master/texmf-dist/source/latex | |
parent | eec1bcc6efce237f93a0615bee7089ba973beedc (diff) |
mycv (21may12)
git-svn-id: svn://tug.org/texlive/trunk@26558 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/mycv/mycv.dtx | 1247 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/mycv/mycv.ins | 90 |
2 files changed, 1337 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/mycv/mycv.dtx b/Master/texmf-dist/source/latex/mycv/mycv.dtx new file mode 100644 index 00000000000..129304a5a10 --- /dev/null +++ b/Master/texmf-dist/source/latex/mycv/mycv.dtx @@ -0,0 +1,1247 @@ +% \iffalse meta-comment +% mycv : a curriculum vitae class allowing TikZ decorations +% (v1.5.6 - Sun May 20 21:31:37 CEST 2012) +% +% 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'. +% +% This work consists of the main source file 'mycv.dtx' +% and the derived files: +% +% mycv.ins, +% mycv.cls, +% mycv_base.def, mycv_misc.def, mycv_version.def +% mycv_style.sty, mycv_dec.sty, +% mycv_split_contents.pl +% mycv.pdf +% +% Moreover, it also consists of the files 'README', +% 'CHANGELOG', 'checksum.pl' and folders <Examples> +% and <Doc>. +% +% Unpacking the class files: +% +% (pdf)latex mycv.dtx +% +% Generating the documentation: +% +% the documentation has to be produced separately as it +% uses the package 'arsclassica', that seems to be not +% fully compatible with the 'doc' package (that should +% be used in the driver file for producing the document). +% To produce the documentation, move to the folder 'Doc' +% and type: +% +% pdflatex mycv.tex +% +% Generating the examples: +% +% see the file 'Exampes/Notes.txt'. +% +% ---------------------------------------------------------- +% ** This file was automatically generated by <DoPackage.sh> +% ** with option(s) 'ctan'. +% ** Date: Sun May 20 21:31:37 CEST 2012::1337542297 +% ---------------------------------------------------------- +% \fi +%<*install> +\input docstrip.tex + +\preamble +-------------------------------------------------------- + Author: Andrea Ghersi + Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). + + 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'. + + This work has the LPPL maintenance status "maintained". + The Current Maintainer of this work is Andrea Ghersi. + + This work consists of the files listed in the README + file. +-------------------------------------------------------- +\endpreamble + +\keepsilent +\askforoverwritefalse +\usedir{tex/latex/mycv} + +\generate{% + \file{mycv.ins}{\from{mycv.dtx}{install}}% + \file{mycv.cls}{\from{mycv.dtx}{mycv.cls}}% + \file{mycv_base.def}{\from{mycv.dtx}{mycv-base.def}}% + \file{mycv_misc.def}{\from{mycv.dtx}{mycv-misc.def}}% + \file{mycv_dec.sty}{\from{mycv.dtx}{mycv-dec.sty}}% + \file{mycv_style.sty}{\from{mycv.dtx}{mycv-style.sty}}% + \file{mycv_version.def}{\from{mycv.dtx}{mycv-version.def}}% +} + +\generate{% + \file{mycv_split_contents.pl}% + {\nopreamble\nopostamble\from{mycv.dtx}{mycv-split-contents.pl}}% +} + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* files into a directory searched by (La)TeX: *} +\Msg{* *} +\Msg{* mycv.cls, mycv*.def, mycv*.sty *} +\Msg{* *} +\Msg{* and copy the script 'mycv-split-contents.pl' into a folder *} +\Msg{* that is in your PATH environment variable. *} +\Msg{* On Unix-like operating systems, make the script executable *} +\Msg{* (i.e. chmod +x mycv-split-contents.pl). *} +\Msg{* *} +\Msg{* To produce the documentation, move to the folder <Doc> and *} +\Msg{* run the file 'mycv.tex' twice through LaTeX. *} +\Msg{* *} +\Msg{* See the file 'Exampes/Notes.txt' for information on how to *} +\Msg{* produce pdf files with examples. *} +\Msg{* *} +\Msg{* If you want to verify the integrity of the main files, you *} +\Msg{* can run the script 'checksum.pl' (on Unix-like operating *} +\Msg{* systems, make it executable -- i.e. chmod +x checksum.pl). *} +\Msg{* *} +\Msg{* Happy (La)TeXing! *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile +%</install> +% \StopEventually{} +% +% +% \iffalse +%<*mycv-base.def> +% \fi + +\ProvidesFileSVN + {$Id: mycv_base.def 87 2012-05-17 00:40:11Z ghangenit $} + [v\@versionstr][Base system core] + +%% for lists and other useful tools +\RequirePackage{etextools} + +%%%%%%%%%%%%%%%%%%% +%% % +%% Default values % +%% % +%%%%%%%%%%%%%%%%%%% + +\def\@mainbodypagesize{1.00} +\def\@subbodypagesize{0.45} + +\def\@mainheaderpagesize{1.00} +\def\@subheaderpagesize{0.44} + +\def\@mainfooterpagesize{1.00} +\def\@subfooterpagesize{0.44} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% % +%% Layout components (parser) % +%% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@cmdsListSep{:} +\def\@argsListSep{=} + +\expandaftercmds{\DeclareCmdListParser\MyParserCmds}{\@cmdsListSep} +\expandaftercmds{\DeclareCmdListParser\MyParserArgs}{\@argsListSep} + +%% ----------------------------------- +%% setup file components: header pages +%% ----------------------------------- + +\def\@MainHeaderPageBegin{MainHeaderPageBegin} +\def\@SubHeaderPageBegin{SubHeaderPageBegin} +\def\@MainHeaderPageEnd{MainHeaderPageEnd} +\def\@SubHeaderPageEnd{SubHeaderPageEnd} + +%% --------------------------------- +%% setup file components: body pages +%% --------------------------------- + +\def\@MainBodyPageBegin{MainBodyPageBegin} +\def\@MainBodyPageEnd{MainBodyPageEnd} +\def\@SubBodyPageBegin{SubBodyPageBegin} +\def\@SubBodyPageEnd{SubBodyPageEnd} + +\def\@MainFooterPageBegin{MainFooterPageBegin} +\def\@SubFooterPageBegin{SubFooterPageBegin} +\def\@MainFooterPageEnd{MainFooterPageEnd} +\def\@SubFooterPageEnd{SubFooterPageEnd} + +%% ------------------- +%% regular expressions +%% ------------------- + +\def\@regexPreCmd{<precmd:([-!*@.0-9A-Za-z \@cmdsListSep\@argsListSep]+)>} +\def\@regexPostCmd{<postcmd:([-!*@.0-9A-Za-z \@cmdsListSep\@argsListSep]+)>} +\def\@regexArgsList{\@argsListSep([-!*@.0-9A-Za-z \@argsListSep]+)} + +\def\@regexMarginLB{/ml([0-9.-]+.{2})} +\def\@regexMarginRB{/mr([0-9.-]+.{2})} +\def\@regexPageSizeAbs{/pagesize([0-9.]+.{2})/} +\def\@regexPagebreak{/pagebreak/} +\def\@regexPageSize{<([0-9.]+)>} +\def\@regexMarginLE{/endml/} +\def\@regexMarginRE{/endmr/} +\def\@regexFileName{^([_\-a-zA-Z0-9]+)@} +\def\@regexCmdName{([a-zA-Z]+)} +\def\@regexFileVar{^.{1}([A-Za-z]+)} +\def\@regexParamTypeA{^[@]} +\def\@regexParamTypeB{^[!]} +\def\@regexParamTypeC{^[*]} + +%% ================== +%% Auxiliary commands +%% ================== + +\newcommand{\@concatCommandArg}[1]{% + \ifnum\pdfmatch{\@regexParamTypeA}{#1}=1 + \StrGobbleLeft{#1}{1}[\arg] + \expandafter\g@addto@macro\expandafter\args% + \expandafter{\expandafter[\arg]} + \else + \ifnum\pdfmatch{\@regexParamTypeB}{#1}=1 + \StrGobbleLeft{#1}{1}[\arg] + \expandafter\g@addto@macro\expandafter\args% + \expandafter{\expandafter<\arg>} + \else + \ifnum\pdfmatch{\@regexParamTypeC}{#1}=1 + \g@addto@macro\args{*} + \else + \g@addto@macro\args{{#1}} + \fi + \fi + \fi% +} + +\newcommand{\@execCommand}[1]{% + \let\args\@empty + \ifnum\pdfmatch{\@regexArgsList}{#1}=1 + \@getRegexResult{\argslist} + \ifnum\pdfmatch{\@regexCmdName}{#1}=1 + \@getRegexResult{\cmd} + \fi + \MyParserArgs[\@concatCommandArg]\argslist + \expandaftercmds{\csuse\cmd}{\args} + \else + \csuse{#1} + \fi% +} + +\newcommand{\@getRegexResult}[1]{% + \StrPosition{\pdflastmatch 1}{>}[\n] + \StrGobbleLeft{\pdflastmatch 1}{\n}[#1]% +} + +\newcommand{\@executeCommandList}[2]{% + \ifnum\pdfmatch{#2}{#1}=1% + \StrPosition{\pdflastmatch 1}{>}[\n] + \StrGobbleLeft{\pdflastmatch 1}{\n}[\cmdlist] + \MyParserCmds[\@execCommand]\cmdlist + \fi% +} + +\newcommand{\@parsePageBegin}[2]{% + \let\pagewidth#2 + \ifnum\pdfmatch{\@regexPageSize}{#1}=1 + \@getRegexResult{\pagewidth} + \fi + \@executeCommandList{#1}{\@regexPreCmd} + \ifnum\pdfmatch{\@regexPageSizeAbs}{#1}=1 + \@getRegexResult{\pagewidth} + \noindent\begin{minipage}[t]{\pagewidth} + \else + \noindent\begin{minipage}[t]{\pagewidth\textwidth} + \fi + \@executeCommandList{#1}{\@regexPostCmd} + \ifnum\pdfmatch{\@regexMarginLB}{#1}=1 + \@getRegexResult{\marginsize} + \begin{mychangemarginLeft}{\marginsize} + \fi + \ifnum\pdfmatch{\@regexMarginRB}{#1}=1 + \@getRegexResult{\marginsize} + \begin{mychangemarginRight}{\marginsize} + \fi% +} + +\newcommand{\@parsePageEnd}[1]{% + \ifnum\pdfmatch{\@regexMarginRE}{#1}=1 + \end{mychangemarginRight} + \fi + \ifnum\pdfmatch{\@regexMarginLE}{#1}=1 + \end{mychangemarginLeft} + \fi + \@executeCommandList{#1}{\@regexPreCmd} + \ifnum\pdfmatch{\@regexPagebreak}{#1}=1 + \end{minipage} + + \else + \end{minipage} + \fi + \@executeCommandList{#1}{\@regexPostCmd} +} + +\newcommand{\@parseFileName}[1]{% + \let\marginsizeleft\relax + \let\marginsizeright\relax + \@executeCommandList{#1}{\@regexPreCmd} + \ifnum\pdfmatch{\@regexMarginLB}{#1}=1 + \@getRegexResult{\marginsizeleft} + \begin{mychangemarginLeft}{\marginsizeleft} + \fi + \ifnum\pdfmatch{\@regexMarginRB}{#1}=1 + \@getRegexResult{\marginsizeright} + \begin{mychangemarginRight}{\marginsizeright} + \fi + \IfBeginWith{#1}{*}{% + \ifnum\pdfmatch{\@regexFileVar}{\noexpand#1}=1 + \@getRegexResult{\filename} + \fi + \input\cvcontentsdir/\csuse{\filename} + }% + {% + \ifnum\pdfmatch{\@regexFileName}{#1}=1 + \@getRegexResult{\filename} + \fi + \input\cvcontentsdir/\filename + } + \@executeCommandList{#1}{\@regexPostCmd} + \ifx\marginsizeright\relax + \relax + \else + \end{mychangemarginRight} + \fi + \ifx\marginsizeleft\relax + \relax + \else + \end{mychangemarginLeft} + \fi +} + +%% ============= +%% Main commands +%% ============= + +\newcommand{\@bodylayoutlistentry}[1]{% + \ifstrmatch{\@SubBodyPageBegin}{#1}{% + \@parsePageBegin{#1}{\@subbodypagesize}% + }% + {% + \ifstrmatch{\@SubBodyPageEnd}{#1}{% + \@parsePageEnd{#1}% + }% + {%else + \ifstrmatch{\@MainBodyPageBegin}{#1}{% + \@parsePageBegin{#1}{\@mainbodypagesize}% + }% + {%else + \ifstrmatch{\@MainBodyPageEnd}{#1}{% + \@parsePageEnd{#1}% + }% + {%else + \@parseFileName{#1}% + }% + }% + }% + }% +} + +\newcommand{\@headerlayoutlistentry}[1]{% + \ifstrmatch{\@MainHeaderPageBegin}{#1}{% + \@parsePageBegin{#1}{\@mainheaderpagesize}% + }% + {%else + \ifstrmatch{\@SubHeaderPageBegin}{#1}{% + \@parsePageBegin{#1}{\@subheaderpagesize}% + }% + {%else + \ifstrmatch{\@MainHeaderPageEnd}{#1}% + {\@parsePageEnd{#1}}% + {%else + \ifstrmatch{\@SubHeaderPageEnd}{#1}{% + \@parsePageEnd{#1}% + }% + {%else + \@parseFileName{#1}% + }% + }% + }% + }% +} + +\newcommand{\@footerlayoutlistentry}[1]{% + \ifstrmatch{\@MainFooterPageBegin}{#1}{% + \@parsePageBegin{#1}{\@mainfooterpagesize}% + }% + {%else + \ifstrmatch{\@SubFooterPageBegin}{#1}{% + \@parsePageBegin{#1}{\@subfooterpagesize}% + }% + {%else + \ifstrmatch{\@MainFooterPageEnd}{#1}% + { \@parsePageEnd{#1}% + }% + {%else + \ifstrmatch{\@SubFooterPageEnd}{#1}{% + \@parsePageEnd{#1}% + }% + {%else + \@parseFileName{#1}% + }% + }% + }% + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% % +%% Layout components (render) % +%% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\@raisewarning}[1]{% + \ClassWarning{mycv}{% + WARNING! The list <#1> used by 'mycv' class is undefined. % + Please, define it before using '\myrenderlayout' command. % + }% +} + +\DeclareRobustCommand{\myrenderlayout}[1][a]{% + \begingroup + \ifsinglechar{b}{#1}{% + \@ifundefined{bodylayoutlist}% + {\@raisewarning{bodylayoutlist}}% else + {\csvloop[\@bodylayoutlistentry]{\bodylayoutlist}}% + }% + {%else + \ifsinglechar{h}{#1}{% + %% -------- + %% HEADINGS + %% -------- + \@ifundefined{headerlayoutlist}% + {\@raisewarning{headerlayoutlist}}% else + {\csvloop[\@headerlayoutlistentry]\headerlayoutlist}% + }% + {%else + %% ------------------------------------------------ + %% FOOTINGS: sign and treatment of personal details + %% ------------------------------------------------ + \ifsinglechar{f}{#1}{% + \@ifundefined{footerlayoutlist}% + {\@raisewarning{footerlayoutlist}}% else + {\csvloop[\@footerlayoutlistentry]\footerlayoutlist}% + }% + {%\else + %% -------------- + %% ALL COMPONENTS + %% -------------- + \@ifundefined{headerlayoutlist}% + {\@raisewarning{headerlayoutlist}}% else + {\csvloop[\@headerlayoutlistentry]\headerlayoutlist}% + \@ifundefined{bodylayoutlist}% + {\@raisewarning{bodylayoutlist}}% else + {\csvloop[\@bodylayoutlistentry]\bodylayoutlist} + \@ifundefined{footerlayoutlist}% + {\@raisewarning{footerlayoutlist}}% else + {\csvloop[\@footerlayoutlistentry]\footerlayoutlist}% + }% + }% + }% + \endgroup +} +% \iffalse +%</mycv-base.def> +% \fi +% +% +% \iffalse +%<*mycv-misc.def> +% \fi +%% ------------------------------------------------------- +%% Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). +%% +%% 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'. +%% ------------------------------------------------------- + +\ProvidesFileSVN + {$Id: mycv_misc.def 66 2012-04-28 14:38:41Z ghangenit $} + [v\@versionstr][Miscellaneous commands] + +\RequirePackage{hyperref} + +%% ----------------------------------------------------- +%% partial hyperref setup: the rest is set in style file +%% ----------------------------------------------------- + +\hypersetup{% + pdfstartpage = 1, + pdfauthor = \@pdfauthor, + pdftitle = \@pdftitle, + pdfsubject = \@pdfsubject, + pdfproducer = \LaTeX{}, + pdfkeywords = cv curriculum vit\ae{}, + pdfcreator = \LaTeX{} with 'mycv' (v\@versionstr) +} + +%%%%%%%%%%%% +%% % +%% Margins % +%% % +%%%%%%%%%%%% + +\newenvironment{mychangemargin}[2] + {\begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{#1}% + \setlength{\rightmargin}{#2}% + \setlength{\partopsep}{0pt}% + \setlength{\parsep}{\parskip}}\item[]% + }% + {\end{list}} + +\newenvironment{mychangemarginLeft}[1] + {\begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{#1}% + \setlength{\partopsep}{0pt}% + \setlength{\parsep}{\parskip}}\item[]% + }% + {\end{list}} + +\newenvironment{mychangemarginRight}[1] + {\begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\rightmargin}{#1}% + \setlength{\partopsep}{0pt}% + \setlength{\parsep}{\parskip}}\item[]% + }% + {\end{list}} + +%%%%%%%%%%%%%%%% +%% % +%% Other stuff % +%% % +%%%%%%%%%%%%%%%% + +\DeclareRobustCommand{\mylang}[2][english]{% + \foreignlanguage{#1}{{z#2}}} %{\color{blue}{#2}}} + +%% ------------ +%% pdf metadata +%% ------------ + +\DeclareRobustCommand{\mypdfsubject}[1]{\def\@pdfsubject{#1}} +\DeclareRobustCommand{\mypdfauthor}[1]{\def\@pdfauthor{#1}} +\DeclareRobustCommand{\mypdftitle}[1]{\def\@pdftitle{#1}} + + +% \iffalse +%</mycv-misc.def> +% \fi +% +% +% \iffalse +%<*mycv-version.def> +% \fi +\def\@versionstr{1.5.6} +% \iffalse +%</mycv-version.def> +% \fi +% +% +% \iffalse +%<*mycv.cls> +% \fi + +\NeedsTeXFormat{LaTeX2e} + +\RequirePackage{svn-prov} +\input{mycv_version.def} + +\ProvidesClassSVN + {$Id: mycv.cls 87 2012-05-17 00:40:11Z ghangenit $} + [v\@versionstr][My Curriculum Vitae class] + +%% ======== +%% Packages +%% ======== + +\RequirePackage{kvoptions} % for class options with key-value format +\RequirePackage{xstring} % for string utilities +\RequirePackage{ifthen} % for the <\ifthenelse> command + +%% ============= +%% Class Options +%% ============= + +\DeclareBoolOption{withDec} + +\DeclareDefaultOption{% + \PassOptionsToClass{\CurrentOption}{article}} + +\DeclareStringOption[english]{language} +\DeclareStringOption[Contents]{cntdir} +\DeclareStringOption[mycv_style]{style} +\DeclareStringOption[]{mdlname} +\ProcessKeyvalOptions* + +%% ----------------------------------------------------------- +%% The value of an option declared with <\DeclareStringOption> +%% is stored in the macro \<class (or package) name>@<option> +%% ----------------------------------------------------------- + +\PassOptionsToPackage{\mycv@language}{babel} +\RequirePackage{babel} + +\LoadClass{article} + +\def\cvcontentsdir{\mycv@cntdir} + +%% =============== +%% File inclusions +%% =============== + +\input{mycv_base.def} +\input{mycv_misc.def} + +%% ------------------------------------- +%% use custom, default or any style file +%% ------------------------------------- +\ifthenelse{\equal{\mycv@style}{none}}% + {\relax}% file style is not wanted + {\RequirePackage{\mycv@style}} + +%% ---------------------- +%% use decorations or not +%% ---------------------- +\ifthenelse{\boolean{mycv@withDec}}% + {\RequirePackage{mycv_dec}}% + {\relax} + +\DeclareRobustCommand{\ifmodel}[1]{% + \begingroup + \def\@mdlname{#1} + \ifx\mycv@mdlname\@mdlname + \endgroup + \expandafter\@firstoftwo + \else + \endgroup + \expandafter\@secondoftwo + \fi +} + +%% ----------------------------------------------- +%% <\ifoption{optionname}{then block}{else block}> +%% ----------------------------------------------- + +\DeclareRobustCommand{\ifoption}[1]{% + \begingroup + \ifthenelse{\boolean{mycv@#1}} + {\endgroup\expandafter\@firstoftwo} + {\endgroup\expandafter\@secondoftwo}% +} +% \iffalse +%</mycv.cls> +% \fi +% +% +% \iffalse +%<*mycv-dec.sty> +% \fi + +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{svn-prov} + +\input{mycv_version.def} + +\ProvidesPackageSVN + {$Id: mycv_dec.sty 89 2012-05-19 18:23:03Z ghangenit $} + [v\@versionstr][Decorations commands] + +\RequirePackage{tikz} % for graphics +\usetikzlibrary{shapes,decorations,shadows,fadings} +\usetikzlibrary{decorations.pathmorphing} +\usetikzlibrary{decorations.fractals} +\usetikzlibrary{decorations.shapes} +\usetikzlibrary{calc} +\RequirePackage{xparse} % for commands with multiple default arguments +\RequirePackage{xstring} % for string utilities + +%%%%%%%%%%%%% +%% % +%% Settings % +%% % +%%%%%%%%%%%%% + +\def\@segmentLengthString{} +\def\@segmentLengthValue{} +\def\@lineWidthString{} +\def\@lineWidthValue{} +\def\@segmentAmplitudeString{} +\def\@segmentAmplitudeValue{} +\def\@xBottomRight{-1cm} +\def\@yBottomRight{1cm} +\def\@xTopLeft{1cm} +\def\@yTopLeft{-1cm} + +\tikzfading[% + name=fade out, inner color=transparent!0, + outer color=transparent!100% +] + +\tikzset{ + define mycolor/.code 2 args={\definecolor{#1}{rgb}{#2}}, + DecoratewithShape/.style={% + decorate,decoration={shape backgrounds,shape=#1}% + }, + DecoratewithPathMorphing/.style={% + decorate,decoration=#1% + }, + Mainstyle/.style={ + define mycolor={myred}{0.43,0.06,0,13}, + define mycolor={dpred}{0.80,0.35,0} + } +} + +%%%%%%%%%%%%% +%% % +%% Commands % +%% % +%%%%%%%%%%%%% + +\newcommand{\versionBasedSettings}[2]{% + \IfBooleanTF#1{% + %% --------------------------------------------------------- + %% From <xstring> package + %% --------------------------------------------------------- + %% Macros of this package take the catcodes of tokens into + %% account. To avoid unexpected behaviour (particulary with + %% tests), you should keep in mind that tokens and their + %% catcodes are examined. + %% For instance, these two arguments: {\string a\string b} + %% and {ab} do not expand into equal strings for xstring! + %% Because of the command \string, the first expands into + %% ab with catcodes 12 while the second have characters + %% with their natural catcodes 11. Catcodes do not match! + %% Starred macros do not take catcodes into account. They + %% simply convert some arguments into arguments with + %% catcodes 10, 11 and 12, and call the non-starred macros + %% with these modified arguments. + %% --------------------------------------------------------- + \IfStrEqCase*{#2}{% + {radial}{\def\@colorStr{inner color}}% + {ball}{\def\@colorStr{ball color}}% + {none}{\relax}% + }% + [mycv: Unknown option <#2>!!!]% + }{\relax}% +} + +%% ----------------------------------------------------- +%% Pathmorphing decoration values: +%% shape, straight zigzag, random steps, saw, zigzag, +%% bent, bumps, coil, snake, Koch snowflake +%% +%% Shadings: radial, ball +%% ----------------------------------------------------- + +\DeclareDocumentCommand{\mydecorationsPathmorphing}% + {s O{1} m O{gray} D<>{radial} D<>{white}}% +{% + \begingroup + \versionBasedSettings{#1}{#5}% + \begin{tikzpicture}[overlay,remember picture]% + \IfBooleanTF#1{% version with a star (shading) + \shade[ + Mainstyle, + \@lineWidthString=\@lineWidthValue, + \@segmentAmplitudeString=\@segmentAmplitudeValue, + \@segmentLengthString=\@segmentLengthValue, + DecoratewithPathMorphing=#3, + color=#4, + shading=#5, + \@colorStr=#6, + \ifnum#2>0draw\fi + ]}% + {% version without a star (not shading) + \path[ + Mainstyle, + \@lineWidthString=\@lineWidthValue, + \@segmentAmplitudeString=\@segmentAmplitudeValue, + \@segmentLengthString=\@segmentLengthValue, + DecoratewithPathMorphing=#3, + color=#4, + fill=#6, + \ifnum#2>0draw\fi + ]}% + ($ (current page.north west)+ + (\@xTopLeft,\@yTopLeft) $) + rectangle % -- oppure circle (4), ... + ($ (current page.south east)+ + (\@xBottomRight,\@yBottomRight) $); + \end{tikzpicture} + \endgroup +} + +%% -------------------------------------- +%% Shapes: dart, diamond, rectangle, star +%% -------------------------------------- + +\DeclareDocumentCommand{\mydecorationsShape}% + {O{1} m O{gray}} +{% + \begingroup + \begin{tikzpicture}[overlay,remember picture] + \path[ + Mainstyle, + \@lineWidthString=\@lineWidthValue, + \@segmentAmplitudeString=\@segmentAmplitudeValue, + \@segmentLengthString=\@segmentLengthValue, + DecoratewithShape=#2, + color=#3, + \ifnum#1>0draw\fi + ]% + ($ (current page.north west)+ + (\@xTopLeft,\@yTopLeft) $) + rectangle + ($ (current page.south east)+ + (\@xBottomRight,\@yBottomRight) $); + \end{tikzpicture} + \endgroup +} + +\DeclareDocumentCommand{\mydecorationsFading}% + {O{north} m O{80} O{black} D<>{1.0}} +{% + \begin{tikzpicture}[overlay,remember picture] + \draw[path fading=#1,fill=#2!#3!#4,opacity=#5] + ($ (current page.north west)+ + (\@xTopLeft,\@yTopLeft) $) + rectangle % -- oppure circle (4), ... + ($ (current page.south east)+ + (\@xBottomRight,\@yBottomRight) $); + \end{tikzpicture}% +} + +\DeclareRobustCommand{\mydecorationsSetPosXTL}[1]% + [1cm]% +{% + \def\@xTopLeft{#1}% +} + +\DeclareRobustCommand{\mydecorationsSetPosYTL}[1]% + [-1cm]% +{% + \def\@yTopLeft{#1}% +} + +\DeclareRobustCommand{\mydecorationsSetPosXBR}[1]% + [-1cm]% +{% + \def\@xBottomRight{#1}% +} + +\DeclareRobustCommand{\mydecorationsSetPosYBR}[1]% + [1cm]% +{% + \def\@yBottomRight{#1}% +} + +\DeclareDocumentCommand{\mydecorationsSetLineWidth}% + {s O{}}% +{% + \IfBooleanTF#1% + {\def\@lineWidthString{}} % starred + {\def\@lineWidthString{line width}} % not starred + + \def\@lineWidthValue{#2}% +} + +\DeclareDocumentCommand{\mydecorationsSetSegmentAmplitude}% + {s O{}}% +{% + \IfBooleanTF#1% + {\def\@segmentAmplitudeString{}} % starred + {\def\@segmentAmplitudeString{segment amplitude}} % not starred + + \def\@segmentAmplitudeValue{#2}% +} + +\DeclareDocumentCommand{\mydecorationsSetSegmentLength}% + {s O{}}% +{% + \IfBooleanTF#1% + {\def\@segmentLengthString{}} % starred + {\def\@segmentLengthString{segment length}} % not starred + + \def\@segmentLengthValue{#2}% +} +% \iffalse +%</mycv-dec.sty> +% \fi +% +% +% \iffalse +%<*mycv-style.sty> +% \fi + +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{svn-prov} + +\input{mycv_version.def} + +\ProvidesPackageSVN + {$Id: mycv_style.sty 89 2012-05-19 18:23:03Z ghangenit $} + [v\@versionstr][Default style file] + +\RequirePackage{titlesec} % for title format and spacing +\RequirePackage{fancyhdr} % for custom headers and footers +\RequirePackage{xcolor} % for colors +\RequirePackage{calligra} % for the calligra font +\RequirePackage{times} % for times font +\RequirePackage{pifont} % for the ’ding’ style (itemize environment) +\RequirePackage{marvosym} % symbols - phone +\RequirePackage{amssymb} % symbols - email +\RequirePackage{hyperref} % for hypertext links and other stuff +\RequirePackage{xparse} % for commands with multiple default arguments + +%%%%%%%%%%%% +%% % +%% Layout % +%% % +%%%%%%%%%%%% + +%% ----------------------------------------------------- +%% passing the option 'showframe' to the package permits +%% to see the page margins: that may be useful for debug +%% ----------------------------------------------------- +\RequirePackage[ + paperwidth=210mm, + paperheight=297mm, + textwidth=495pt, + vmargin=1.5cm, + columnsep=18pt +]{geometry} + +%%%%%%%%%%%%%%%%%%%%%% +%% % +%% Header and footer % +%% % +%%%%%%%%%%%%%%%%%%%%%% + +\renewcommand{\headrulewidth}{0.0pt} + +\fancyhf{} + +\DeclareRobustCommand{\mycfoot}[1]{% + \cfoot{\color{myheadingscolor}{{\sffamily\tiny{#1}}}}% +} + +\pagestyle{fancy} + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% % +%% Hyperref and colours % +%% % +%%%%%%%%%%%%%%%%%%%%%%%%% + +%% ------------------------------------------ +%% setup colours for links, text and headings +%% ------------------------------------------ +\definecolor{mylinkcolour}{HTML}{0000FF} % {FF0080} %light purple link for the email +\definecolor{myshadecolor}{HTML}{F0F0F0} % {E4E3E3}%{D4D7FE} %light blue shade +\definecolor{mytextcolor}{HTML}{2b2b2b} % text is almost black +\definecolor{myheadingscolor}{HTML}{701112} % dark red + +%% ---------------------- +%% setup hyperref package +%% ---------------------- +\hypersetup{% + colorlinks,breaklinks,% + urlcolor=mylinkcolour,% + linkcolor=mylinkcolour,% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% % +%% Section title format and spacing % +%% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DeclareDocumentCommand{\mysectionTitleFormat}% + {O{myheadingscolor} O{myheadingscolor}}% +{% + \titleformat{\section}% + {\bigskip\color{#1}\titlerule\scshape\Large\raggedright}% + {}{0em}{}[\color{#2}\titlerule\medskip] +} + +\DeclareDocumentCommand{\mysectionTitleSpacing}% + {O{0pt} O{0pt} O{5pt}}% +{% + \titlespacing{\section}{#1}{#2}{#3}% +} + +\mysectionTitleFormat +\mysectionTitleSpacing + +%%%%%%%%%%%%%%%%%%%% +%% % +%% Customized list % +%% % +%%%%%%%%%%%%%%%%%%%% + +\newenvironment{myitemize}% + {\renewcommand{\labelitemi}{\ding{43}}\begin{itemize}}% + {\end{itemize}} + +%%%%%%%%%%%%%%%% +%% % +%% Other stuff % +%% % +%%%%%%%%%%%%%%%% + +%% -------------------------------- +%% set text color for the whole doc +%% -------------------------------- +\color{mytextcolor} +% \iffalse +%</mycv-style.sty> +% \fi +% +% +% \iffalse +%<*mycv-split-contents.pl> +% \fi +#!/usr/bin/perl + +# ------------------------------------------------------- +# Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). +# +# 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'. +# ------------------------------------------------------- + +# $Id: mycv_split_contents.pl 89 2012-05-19 18:23:03Z ghangenit $ + +use Getopt::Long; +use File::Path; +use warnings; +use strict; +use Cwd; + +# hashes with errors and warnings messages + +my %errors = ( + OME => "$0: ERROR opening <%s> in output mode (CWD: %s): %s\n", + IME => "$0: ERROR opening <%s> in input mode (CWD: %s): %s\n", + NIF => "$0: ERROR: no input file provided!\nUse the option <-i infile>.\n", + NOD => "$0: ERROR: no output dir. provided!\nUse the option <-o outdir>.\n", + IOE => "$0: ERROR: input file and output dir are the same!\n" +); + +my %warnings = ( + NVC => "WARNING:: <%s> is not recognized as a valid component!\n" . + "A component can only be 'header', 'body' or 'footer'.\n" +); + +my $outdir = 'Contents'; # default output dir +my $infile = 'cv_contents.tex'; # default input file +my $cwd = getcwd(); # current directory +my %opt = (); # hash for options + + +### +### + +sub _usage() +{ + print STDERR << "EOF"; + + Usage: $0 [-h] [-e] [-i infile] [-o outdir] [-m modelfile] + Version <1.0> + + Options: + ======== + + -o outdir \t : uses <outdir> as output dir {default: 'Contents'} + -m mdlfile \t : writes basic model directives to the <mdlfile> file + -i infile \t : uses <infile> as input file {default: 'cv_contents.tex'} + -e \t : keeps file names extension in model directives + -h \t : this help message + + Examples: + ========= + + 1) Splits the input file 'cv_contents.tex' into multiple files (they + will be created in the directory 'Contents'), as specified in the + file itself - the input file is not modified: + + [$0 -i cv_contents.tex] + + 2) As above but, in addiction, a basic model file (model-spl.tex) for + multiple files is created (in the model directives, the file names + extension will be removed): + + [$0 -i cv_contents.tex -m model-spl.tex] + + 3) As above, but file names in the model directives will keep their + own extension: + + [$0 -i cv_contents.tex -m model-spl.tex -e] + +EOF + exit 0; +} + + +### +### + +sub mcdie { printf STDERR @_, $!; exit 1; } + + +### +### + +sub processCommandLine() +{ + GetOptions ( + 'o=s' => \$opt{o}, 'i=s' => \$opt{i}, + 'm=s' => \$opt{m}, 'h' => \$opt{h}, + 'e' => \$opt{e} + ) or _usage(); + + $opt{h} and _usage(); + _usage() if ( $#ARGV > -1 ); + + _dealWithInOutFiles(); + return \%opt; +} + + +### +### + +sub _dealWithInOutFiles +{ + $opt{o} and $outdir = $opt{o}; + $opt{i} and $infile = $opt{i}; + + if ( $infile eq "" ){ die $errors{NIF} } + if ( $outdir eq "" ){ die $errors{NOD} } + if ( $infile eq $outdir ){ die $errors{IOE} } + + $opt{outdir} = $outdir; + $opt{infile} = $infile; +} + + +### +### + +sub fileprocess ($) +{ + my $cmdoptions = shift; + my $outdir = $cmdoptions->{'outdir'}; + my $linehook = '###'; + my %components; + my $sep = '::'; + + open INFILE, $cmdoptions->{'infile'} or + mcdie( $errors{IME}, $cmdoptions->{'infile'}, $cwd ); + + mkpath($outdir); + (-d $outdir) or mcdie( $errors{OME}, $outdir, $cwd ); + + while ( my $line = <INFILE> ) + { + my @info; my $ctype=''; + if ( $line =~ /$linehook/ ) + { + PROCESSLINE: + @info = split(/$sep/, $line); + + $ctype=$info[2]; # contains the component type (header,...) + chomp($ctype); + + if ( $info[2] ) + { + if ( $ctype =~ /header/ ) { push (@{$components{h}}, $line) } + elsif ( $ctype =~ /body/ ){ push (@{$components{b}}, $line) } + elsif ( $ctype =~ /footer/ ){ push (@{$components{f}}, $line) } + else { printf STDERR $warnings{NVC}, $ctype } + } + + if ( $info[1] ) # contains the file name to write + { + open OUTFILE, '>', "$outdir/$info[1]" or + mcdie( $errors{OME}, $info[1], $cwd ); + + while ( $line = <INFILE> ) + { + if ( $line =~ /$linehook/ ) + { + close OUTFILE; + goto PROCESSLINE; + } + else { print OUTFILE $line } # write to file + } + } + } + } + + close INFILE; + if ( $cmdoptions->{'m'} ) + { + open OUTFILE, '>', $cmdoptions->{'m'} or + mcdie( $errors{OME}, $cmdoptions->{'m'}, $cwd ); + + for my $key ( keys %components ) + { + if ( $key eq "b" ) { print OUTFILE "\\def\\bodylayoutlist{%\n" } + elsif ( $key eq "h" ) { print OUTFILE "\\def\\headerlayoutlist{%\n" } + elsif ( $key eq "f" ) { print OUTFILE "\\def\\footerlayoutlist{%\n" } + + my @info; my $cnt=0; my $fname=''; + while ( $components{$key}[$cnt] ) + { + @info = split(/$sep/, $components{$key}[$cnt]); + $cnt++; + + $fname=$info[1]; + if ( !$cmdoptions->{'e'} ){ $fname =~ s{\.[^.]+$}{} } + if ( $info[1] ){ chomp($fname); print OUTFILE " $fname@" } + if ( $info[3] ){ chomp($info[3]); print OUTFILE ":$info[3]" } + print OUTFILE ",\n"; + } + print OUTFILE "}\n"; + } + close OUTFILE; + } +} + + +## +## MAIN +## + +fileprocess( processCommandLine() ); +% \iffalse +%</mycv-split-contents.pl> +% \fi +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/mycv/mycv.ins b/Master/texmf-dist/source/latex/mycv/mycv.ins new file mode 100644 index 00000000000..7de51e435e8 --- /dev/null +++ b/Master/texmf-dist/source/latex/mycv/mycv.ins @@ -0,0 +1,90 @@ +%% +%% This is file `mycv.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% mycv.dtx (with options: `install') +%% -------------------------------------------------------- +%% Author: Andrea Ghersi +%% Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). +%% +%% 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'. +%% +%% This work has the LPPL maintenance status "maintained". +%% The Current Maintainer of this work is Andrea Ghersi. +%% +%% This work consists of the files listed in the README +%% file. +%% -------------------------------------------------------- +\input docstrip.tex + +\preamble +-------------------------------------------------------- + Author: Andrea Ghersi + Copyright 2012 Ghersi Andrea (ghanhawk@gmail.com). + + 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'. + + This work has the LPPL maintenance status "maintained". + The Current Maintainer of this work is Andrea Ghersi. + + This work consists of the files listed in the README + file. +-------------------------------------------------------- +\endpreamble + +\keepsilent +\askforoverwritefalse +\usedir{tex/latex/mycv} + +\generate{% + \file{mycv.ins}{\from{mycv.dtx}{install}}% + \file{mycv.cls}{\from{mycv.dtx}{mycv.cls}}% + \file{mycv_base.def}{\from{mycv.dtx}{mycv-base.def}}% + \file{mycv_misc.def}{\from{mycv.dtx}{mycv-misc.def}}% + \file{mycv_dec.sty}{\from{mycv.dtx}{mycv-dec.sty}}% + \file{mycv_style.sty}{\from{mycv.dtx}{mycv-style.sty}}% + \file{mycv_version.def}{\from{mycv.dtx}{mycv-version.def}}% +} + +\generate{% + \file{mycv_split_contents.pl}% + {\nopreamble\nopostamble\from{mycv.dtx}{mycv-split-contents.pl}}% +} + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* files into a directory searched by (La)TeX: *} +\Msg{* *} +\Msg{* mycv.cls, mycv*.def, mycv*.sty *} +\Msg{* *} +\Msg{* and copy the script 'mycv-split-contents.pl' into a folder *} +\Msg{* that is in your PATH environment variable. *} +\Msg{* On Unix-like operating systems, make the script executable *} +\Msg{* (i.e. chmod +x mycv-split-contents.pl). *} +\Msg{* *} +\Msg{* To produce the documentation, move to the folder <Doc> and *} +\Msg{* run the file 'mycv.tex' twice through LaTeX. *} +\Msg{* *} +\Msg{* See the file 'Exampes/Notes.txt' for information on how to *} +\Msg{* produce pdf files with examples. *} +\Msg{* *} +\Msg{* If you want to verify the integrity of the main files, you *} +\Msg{* can run the script 'checksum.pl' (on Unix-like operating *} +\Msg{* systems, make it executable -- i.e. chmod +x checksum.pl). *} +\Msg{* *} +\Msg{* Happy (La)TeXing! *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile +\endinput +%% +%% End of file `mycv.ins'. |