%% %% This is file `mycv_base.def', %% generated with the docstrip utility. %% %% The original source files were: %% %% mycv.dtx (with options: `mycv-base.def') %% -------------------------------------------------------- %% 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. %% -------------------------------------------------------- \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{} \def\@regexPostCmd{} \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 } \endinput %% %% End of file `mycv_base.def'.