summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mycv
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/mycv
Initial commit
Diffstat (limited to 'macros/latex/contrib/mycv')
-rw-r--r--macros/latex/contrib/mycv/CHANGELOG79
-rw-r--r--macros/latex/contrib/mycv/Doc/Images/logo-1.pngbin0 -> 54023 bytes
-rw-r--r--macros/latex/contrib/mycv/Doc/mycv.tex1047
-rw-r--r--macros/latex/contrib/mycv/Examples/Notes.txt22
-rw-r--r--macros/latex/contrib/mycv/Examples/mycv-example-dpl.pdfbin0 -> 83550 bytes
-rw-r--r--macros/latex/contrib/mycv/Examples/mycv-example-dpl2.pdfbin0 -> 83749 bytes
-rw-r--r--macros/latex/contrib/mycv/Examples/mycv-example-spl.pdfbin0 -> 83326 bytes
-rw-r--r--macros/latex/contrib/mycv/Examples/mycv-example-spl2.pdfbin0 -> 43560 bytes
-rw-r--r--macros/latex/contrib/mycv/Examples/mycv-examples.dtx324
-rw-r--r--macros/latex/contrib/mycv/README107
-rw-r--r--macros/latex/contrib/mycv/checksum.pl78
-rw-r--r--macros/latex/contrib/mycv/mycv.dtx1247
-rw-r--r--macros/latex/contrib/mycv/mycv.pdfbin0 -> 313070 bytes
13 files changed, 2904 insertions, 0 deletions
diff --git a/macros/latex/contrib/mycv/CHANGELOG b/macros/latex/contrib/mycv/CHANGELOG
new file mode 100644
index 0000000000..f24e42e0fe
--- /dev/null
+++ b/macros/latex/contrib/mycv/CHANGELOG
@@ -0,0 +1,79 @@
+
+================================================
+Fri Apr 13 00:42:35 CEST 2012 -- Version <1.5.2>
+================================================
+
+ [+] First public release.
+
+================================================
+Sat Apr 14 20:17:28 CEST 2012 -- Version <1.5.3>
+================================================
+
+ [c] Name and date of main files are now
+ extracted from my SVN repository so
+ as to prevent future oversights.
+
+ [c] Renamed "*.tex" files in the bundle
+ base directory to "*.def".
+
+ [c] Some documentation adjustments.
+
+================================================
+Sat Apr 28 13:19:33 CEST 2012 -- Version <1.5.4>
+================================================
+
+ [x] Fixed a bug in the file name regex
+ that could yield a LaTeX error when
+ used along with optional arguments
+ of a command.
+
+ [+] Added a new example of usage (also
+ did some changes to the old ones)
+ and updated the doc accordingly.
+
+ [c] Changed the extension (from .def to
+ .sty) of the files 'mycv_dec.*' and
+ 'mycv_style.*'.
+
+ [c] Modified the default geometry of a
+ document and did other minor changes
+ to the style file.
+
+================================================
+Sun May 13 18:53:30 CEST 2012 -- Version <1.5.5>
+================================================
+
+ [x] Fixed a missing package that prevented
+ the 'mycv_dec' package from being loaded
+ independently from the class.
+
+ [+] Added a Perl script to split CV contents
+ from one single file to multiple files
+ (see the doc for further details).
+
+ [+] Added a new example of usage and did
+ code refactoring of the old ones.
+
+ [c] Updated the documentation to reflect
+ the changes done and also tried to
+ fix its english (as far as I can do
+ that).
+
+ [c] Other minor changes.
+
+================================================
+Sun May 20 21:32:11 CEST 2012 -- Version <1.5.6>
+================================================
+
+ [c] Changed the way of distribution of the
+ package. Now it comes out with two dtx
+ files (created automatically) for the
+ class's sources and examples.
+
+ [c] Merged all the files of the doc into
+ one single file (done automatically).
+ In the file 'mycv.dtx' is explained
+ why a dtx was not used for the doc.
+
+ [+] Added a Perl script (checksum.pl) to
+ check the integrity of the main files. \ No newline at end of file
diff --git a/macros/latex/contrib/mycv/Doc/Images/logo-1.png b/macros/latex/contrib/mycv/Doc/Images/logo-1.png
new file mode 100644
index 0000000000..861738e2f2
--- /dev/null
+++ b/macros/latex/contrib/mycv/Doc/Images/logo-1.png
Binary files differ
diff --git a/macros/latex/contrib/mycv/Doc/mycv.tex b/macros/latex/contrib/mycv/Doc/mycv.tex
new file mode 100644
index 0000000000..d5359426f1
--- /dev/null
+++ b/macros/latex/contrib/mycv/Doc/mycv.tex
@@ -0,0 +1,1047 @@
+% ----------------------------------------------------------
+% ** This file was automatically generated by <DoPackage.sh>
+% ** with option(s) 'ctan'.
+% ** Date: Sun May 20 21:31:48 CEST 2012::1337542308
+% ----------------------------------------------------------
+% -------------------------------------------------------
+% 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'.
+% -------------------------------------------------------
+\def\version{1.5.6}
+\newif\ifdraft
+
+\newif\ifparchment
+\parchmenttrue
+
+\documentclass[
+ 10pt,
+ a4paper,oneside,openany,
+ titlepage,
+ fleqn,
+ headinclude,footinclude,
+ BCOR5mm,
+ numbers=noenddot,
+ cleardoublepage=empty,
+ captions=tableheading
+ \ifdraft
+ ,draft
+ \else
+ \fi
+]{scrreprt}
+
+\usepackage[backref]{classicthesis-ldpkg}
+\usepackage[
+ eulerchapternumbers,
+ subfig,
+ beramono,
+ eulermath,
+ pdfspacing,
+ dottedtoc
+]{classicthesis}
+
+\usepackage[english]{arsclassica}
+
+\usepackage[utf8x]{inputenc}
+
+\usepackage[english]{babel}
+
+\usepackage{textcomp}
+
+\usepackage{empheq}
+
+\usepackage{calligra}
+
+\usepackage{todonotes}
+
+\setlength{\parindent}{0pt}
+
+\usepackage{comment}
+
+\usepackage{listings}
+
+
+\ifdraft
+ \overfullrule=5pt
+\fi
+
+\hypersetup{citecolor=webgreen}
+\hypersetup{pdfstartpage=1}
+
+\hypersetup{%
+ pdfstartpage = 1,
+ pdfauthor = Andrea Ghersi,
+ pdftitle = MyCV,
+ pdfsubject = MyCV class documentation,
+ pdfproducer = \LaTeX{},
+ pdfkeywords = {},
+ pdfcreator = \LaTeX{} with 'arsclassica'
+}
+
+\newcommand{\myTitle}{MyCV\xspace}
+\newcommand{\myName}{Andrea Ghersi\xspace}
+\newcommand{\myMail}{ghanhawk@gmail.com}
+
+\areaset{412pt}{749pt}
+
+\titleformat{\section}%
+ {\color{red}\normalfont\Large\bfseries\bf}%
+ {\color{red}\MakeTextLowercase{\thesection}}{1em}{\spacedlowsmallcaps}
+
+\titleformat{\subsection}%
+ {\color{orange}\normalfont\bfseries\bf}
+ {\textsc{\MakeTextLowercase{\thesubsection}}}{1em}{\normalsize}
+
+\titleformat{\subsubsection}%
+ {\color{cyan}\normalfont\bfseries\bf}
+ {\textsc{\MakeTextLowercase{\thesubsection}}}{1em}{\small}
+
+\renewcommand*\cftchapfont{\color{red}\bfseries}
+\renewcommand*\cftsecfont{\color{gray}\bfseries}
+
+\def\chapterautorefname{chapter}
+\def\sectionautorefname{section}
+\def\subsectionautorefname{subsection}
+
+\def\myitemsep{5pt}
+
+\newcommand{\squishlist}[1][\myitemsep]{%
+ \begin{list}{$\triangleright$}%
+ {
+ \setlength{\parskip}{5pt}%
+ \setlength{\itemsep}{#1}%
+ \setlength{\parsep}{5pt}%
+ \setlength{\topsep}{5pt}%
+ \setlength{\partopsep}{0pt}%
+ \setlength{\leftmargin}{2.5em}%
+ \setlength{\labelwidth}{1em}%
+ \setlength{\labelsep}{0.5em}%
+ }}
+
+\newcommand{\squishend}{%
+ \end{list}}
+
+\newcommand{\quotes}[3][0]{%
+ \definecolor{authorcolor}{RGB}{51, 153, 51}
+ \definecolor{datecolor} {RGB}{51, 153, 51}
+ %
+ \noindent\makebox[0.90\textwidth]{%
+ \begin{minipage}[t]{0.50\textwidth}%
+ \hfill%
+ \end{minipage}%
+ \begin{minipage}[t]{0.50\textwidth}%
+ {\small\ignorespaces\slshape #2}\\[0.5em]%
+ \medskip%
+ \hfill\texttt{---} {{\color{authorcolor}{#3}}}%
+ \ifnum#1>0%
+ \xspace[{\color{datecolor}{#1}}]%
+ \fi%
+ \end{minipage}%
+ }}
+
+\newcommand{\myref}[1]{{\color{blue}(\autoref{#1})}\xspace}
+\newcommand{\myreftwo}[1]{{\color{blue}(see~\autoref{#1})}\xspace}
+
+\newcommand{\keyword}[1]{{\footnotesize\textbf{#1}}\xspace}
+
+\newcommand{\argvsep}{\\[5pt]}
+\newcommand{\arghsep}{\;\;}
+\newcommand{\cmdvsep}{\\[5pt]}
+\newcommand{\cmdhsep}{\;\;}
+\newcommand{\cmddsep}{\par\medskip}
+\newcommand{\optvsep}{\\[5pt]}
+\newcommand{\opthsep}{\;\;}
+\newcommand{\optdsep}{\par}
+\newcommand{\sep}{\medskip}
+\newcommand{\argname}[2][black]{{\color{#1}{$\langle$\textit{#2}$\rangle$}}}
+\newcommand{\cmdname}[2][brown]{{\color{#1}{\textbf{\textbackslash#2}}}}
+\newcommand{\optname}[2][brown]{{\color{#1}{\textbf{#2}}}}
+\newcommand{\classname}{{\color{blue}{\textit{MyCV}}}\xspace}
+\newcommand{\codeskip}{\medskip}
+\newcommand{\DPL}{\keyword{DPL}}
+\newcommand{\SPL}{\keyword{SPL}}
+\newcommand{\CV}{\keyword{CV}}
+
+\newcommand{\marg}[1]{%
+ \fbox{%
+ {\color{red}\textbf{\{}}$\langle$%
+ \textit{#1}%
+ $\rangle${\color{red}\textbf{\}}}}%
+ }
+
+\newcommand{\dargone}[2]{%
+ \fbox{%
+ {\color{cyan}\textbf{[}}$\langle$%
+ \textit{#1}%
+ $\rangle${\color{cyan}\textbf{]}}%
+ }\;$\longrightarrow$\;{\color{blue}\textbf{[}\textit{#2}\textbf{]}}}
+
+\newcommand{\dargtwo}[2]{%
+ \fbox{%
+ {\color{cyan}\textbf{<}}$\langle$%
+ \textit{#1}%
+ $\rangle${\color{cyan}\textbf{>}}%
+ }\;$\longrightarrow$\;{\color{blue}\textbf{<}\textit{#2}\textbf{>}}}
+
+\newenvironment{myindent}[1][0.2in]%
+ { \begin{list}{}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\leftmargin}{#1}%
+ \setlength{\partopsep}{0pt}%
+ \setlength{\parsep}{\parskip}}\item[]%
+ }
+ {\end{list}}
+
+\newcommand{\ctext}[2][red]{{\color{#1}{#2}}}
+
+\newcommand{\omissis}{[\dots\negthinspace]}
+
+\definecolor{lightergray}{gray}{0.99}
+
+\lstnewenvironment{latexcode}[1][]{%
+ \small
+ \lstset{language=[LaTeX]Tex,
+ keywordstyle=\color{RoyalBlue},
+ basicstyle=\normalfont\ttfamily,
+ commentstyle=\color{Emerald}\ttfamily,
+ stringstyle=\rmfamily,
+ numbers=none,
+ numberstyle=\scriptsize\color{gray},
+ stepnumber=1,
+ numbersep=8pt,
+ showstringspaces=false,
+ breaklines=true,
+ frameround=ftff,
+ frame=lines,
+ moredelim=[is][\color{orange}]{|}{|},
+ moredelim=[is][\color{brown}]{$}{$},
+ moredelim=[is][\color{red}]{&}{&},
+ moredelim=[is][\textbf]{||}{||},
+ backgroundcolor=\color{lightergray},
+ #1
+ }
+ \lstset{
+ morekeywords=%
+ {%
+ RequirePackage,newboolean,DeclareOption,setboolean,%
+ ProcessOptions,PackageError,ifthenelse,boolean,%
+ MakeTextLowercase,@ifpackageloaded,undefined,%
+ DeclareRobustCommand,MakeTextUppercase,conditionalblock,%
+ color,titlerule,titlespacing,ifmodel,ifoption,mypdftitle,%
+ labelitemi,hypersetup,setlength,mydecorationsSetLineWidth,
+ mydecorationsPathmorphing,mycfoot,myrenderlayout,cvdec,%
+ definecolor,includegraphics,ifdefined,mcbegin,mcend,%
+ ProvidesPackage,PackageInfo,PackageWarningNoLine,%
+ @ifclassloaded,ExecuteOptions,PackageWarning,textcolor%
+ },%
+ commentstyle=\color{Emerald}\ttfamily,%
+ frame=lines%
+ }
+}{\codeskip}
+
+\ifparchment
+
+\usepackage{framed}
+\usetikzlibrary{decorations.pathmorphing,decorations.shapes,calc}
+\pgfmathsetseed{1}
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+
+\tikzset{
+ normal border/.style={lightgray!12,
+ decorate, decoration={shape, segment length=0.5cm, amplitude=.7mm}},
+ torn border/.style={orange!30!black!5, decorate,
+ decoration={random steps, segment length=.5cm, amplitude=1.7mm}}}
+
+\def\parchmentframe#1{
+\tikz{
+ \node[inner sep=2em] (A) {#1};
+ \begin{pgfonlayer}{background}
+ \fill[normal border]
+ (A.south east) -- (A.south west) --
+ (A.north west) -- (A.north east) -- cycle;
+ \end{pgfonlayer}}}
+
+\def\parchmentframetop#1{
+\tikz{
+ \node[inner sep=2em] (A) {#1};
+ \begin{pgfonlayer}{background}
+ \fill[normal border]
+ (A.south east) -- (A.south west) --
+ (A.north west) -- (A.north east) -- cycle;
+ \fill[torn border]
+ ($(A.south east)-(0,.2)$) -- ($(A.south west)-(0,.2)$) --
+ ($(A.south west)+(0,.2)$) -- ($(A.south east)+(0,.2)$) -- cycle;
+ \end{pgfonlayer}}}
+
+\def\parchmentframebottom#1{
+\tikz{
+ \node[inner sep=2em] (A) {#1};
+ \begin{pgfonlayer}{background}
+ \fill[normal border]
+ (A.south east) -- (A.south west) --
+ (A.north west) -- (A.north east) -- cycle;
+ \fill[torn border]
+ ($(A.north east)-(0,.2)$) -- ($(A.north west)-(0,.2)$) --
+ ($(A.north west)+(0,.2)$) -- ($(A.north east)+(0,.2)$) -- cycle;
+ \end{pgfonlayer}}}
+
+\def\parchmentframemiddle#1{
+\tikz{
+ \node[inner sep=2em] (A) {#1};
+ \begin{pgfonlayer}{background}
+ \fill[normal border]
+ (A.south east) -- (A.south west) --
+ (A.north west) -- (A.north east) -- cycle;
+ \fill[torn border]
+ ($(A.south east)-(0,.2)$) -- ($(A.south west)-(0,.2)$) --
+ ($(A.south west)+(0,.2)$) -- ($(A.south east)+(0,.2)$) -- cycle;
+ \fill[torn border]
+ ($(A.north east)-(0,.2)$) -- ($(A.north west)-(0,.2)$) --
+ ($(A.north west)+(0,.2)$) -- ($(A.north east)+(0,.2)$) -- cycle;
+ \end{pgfonlayer}}}
+
+\newenvironment{parchment}{%[1][Example]{%
+ \def\FrameCommand{\parchmentframe}%
+ \def\FirstFrameCommand{\parchmentframetop}%
+ \def\LastFrameCommand{\parchmentframebottom}%
+ \def\MidFrameCommand{\parchmentframemiddle}%
+ \vskip\baselineskip
+ \MakeFramed {\FrameRestore}}
+{\endMakeFramed}
+\fi
+
+\begin{document}
+\pagestyle{useheadings}
+\pagestyle{plain}
+
+\pagenumbering{roman}
+
+\begin{titlepage}
+\begin{center}
+
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
+
+\def\versionMsg{This file has version number \version{} \texttt{---} %
+ documentation dated April 13, 2012 \texttt{---} %
+ last revised \today}
+
+\textsc{\large\color{gray}\today}\\[0.5cm]
+
+\HRule\\[0.4cm]%
+{\huge\medskip\bfseries\myTitle\footnote{\versionMsg}}\\[0.4cm]%
+\HRule\\[1.5cm]
+
+\large\emph{Author:}\\
+\href{mailto:\myMail}{\textsc{\myName}}
+
+\vspace{20pt}
+\includegraphics[width=0.30\textwidth]{Images/logo-1.png}\\[1cm]
+
+\vspace{10pt}
+\textbf{\textit{Abstract}}\normalsize\par\bigskip
+\begin{minipage}{0.75\textwidth}
+\noindent
+This \LaTeX{} class provides a set of functionality for writing \textit{curriculum vit\ae{}}
+with different layouts. To achieve this goal, it adopts a different approach with respect
+to the other c.v. classes or packages.
+
+Basically, the idea is that a user can write some custom configuration directives, by means of which
+is possible both to produce different c.v. layouts and quickly switch among them.
+
+In order to process such directives, this class uses a set of lists, provided by the package
+\textit{etextools}. A basic support for \textit{TikZ} decorations is also provided.
+
+\end{minipage}
+
+\renewcommand{\thefootnote}{\arabic{footnote}}\setcounter{footnote}{0}
+
+\end{center}
+\end{titlepage}
+\pagestyle{scrheadings}
+
+\pdfbookmark{\contentsname}{tableofcontents}
+\setcounter{tocdepth}{2}
+\tableofcontents
+\cleardoublepage
+
+\pagenumbering{arabic}
+\chapter{Fundamentals}
+\quotes[1973]{
+ ``Computer programming is an art, because it applies
+ accumulated knowledge to the world, because it
+ requires skill and ingenuity, and especially because
+ it produces objects of beauty''
+}{Knuth}
+\ifparchment\begin{parchment}\fi
+\section{Introduction}
+
+The main goal of this class (\classname) is to give support for creating \textit{curriculum
+vit\ae{}} (\CV) with different layouts, allowing easy switching among them.
+The class also provides basic support for using the \textit{TikZ} decorations and defines a bunch
+of commands for managing the contents of a \CV, though that is not its primary goal.
+On \keyword{CTAN} archives, there are available various \CV packages more
+\textit{contents-oriented}, as it were, and they may be used together with this class.
+Before starting to describe the class more in details, it goes without saying that any advice or
+constructive criticism is greatly appreciated.
+
+\section{Class files}
+The class \classname is composed by six files. A short brief of each one is given here:
+\squishlist
+ \item \ctext{mycv.cls}
+ \begin{myindent}
+ it is the main file and, basically, handles the class options~\myref{sec:class-options} as
+ well as the inclusion of all other files, except for \textit{mycv\_version.def};
+ \end{myindent}
+ \item \ctext{mycv\_base.def}
+ \begin{myindent}
+ it contains all the commands and definitions dealing with the layout components of a
+ \CV~\myref{sec:layout-components}: it is the core file;
+ \end{myindent}
+ \item \ctext{mycv\_style.sty}
+ \begin{myindent}
+ it contains the default style commands~\myref{sub:style-commands} provided by the class: if
+ the default style is not used,
+ this file will not be included by \textit{mycv.cls};
+ \end{myindent}
+ \item \ctext{mycv\_dec.sty}
+ \begin{myindent}
+ it contains the decoration commands~\myref{sub:decoration-commands} provided by the class: if
+ decorations are not enabled%
+ , this file will not be included by \textit{mycv.cls};
+ \end{myindent}
+ \item \ctext{mycv\_misc.def}\hspace{5pt}and\hspace{5pt}\ctext{mycv\_version.def}
+ \begin{myindent}
+ they respectively contain some miscellaneous commands and the version string.
+ \end{myindent}
+\squishend
+
+\section {Layout components}
+\label{sec:layout-components}
+
+This class considers a \textit{curriculum vit\ae{}} as logically divided into three main components:
+\textit{header}, \textit{body} and \textit{footer}.
+To each of these ones, a list, that basically contains some sub-components, is associated; files
+with the \CV contents are also considered sub-components.
+For these reasons, we can actually say that \classname uses a sort of \textit{list-driven} approach.
+
+\subsection{Main components}
+
+\classname recognizes the following three lists that, for all intends and purposes, are a concrete
+representation of the main logical components:
+
+\bigskip
+\begin{myindent}
+\textbf{headerlayoutlist},\hspace{5pt}\textbf{bodylayoutlist},\hspace{5pt}\textbf{footerlayoutlist}.
+\end{myindent}
+
+\bigskip
+It is mandatory, for the correct behavior of the class, to not change the above list's names. In
+the case a component is not required, the relative list may be omitted: for example, if a \CV does
+not have a footer component, the list \textit{footerlayoutlist} is not strictly necessary.\\
+What follows is an example of a list definition:\codeskip
+\begin{latexcode}[numbers=none]
+\def\headerlayoutlist{sub-component1,sub-component2,[...]}
+\end{latexcode}
+
+\subsection{Sub-components}
+
+We previously said that \classname is based on three main components (\textit{header},
+\textit{body} and \textit{footer}) and that each of these ones are represented by a list. A list
+(therefore a main component), in turn, may have one or more sub-component, separated by
+a comma, which are identified as follows:
+
+\squishlist[0pt]
+ \item \texttt{\ctext{Main}[Header|Body|Footer]\ctext{PageBegin}};
+ \item \texttt{\ctext{Main}[Header|Body|Footer]\ctext{PageEnd}};
+ \item \texttt{\ctext[blue]{Sub}[Header|Body|Footer]\ctext[blue]{PageBegin}};
+ \item \texttt{\ctext[blue]{Sub}[Header|Body|Footer]\ctext[blue]{PageEnd}};
+ \item \texttt{\ctext[orange]{filename}} with the (partial) \CV contents.
+\squishend\sep
+
+Both ``\verb|Main[...]PageBegin|'' and ``\verb|Sub[...]PageBegin|'' are \textit{minipages}; the
+difference is that the former have a default width of $100\%$ of the \textit{textwidth}
+macro, while that value is $44\text{-}45\%$ for the latter (it depends on the components type).
+
+A \textit{filename} sub-component may either be the name of a file or a macro with it:
+depending on the case, the syntax slightly changes.%~\myreftwo{subsub:component-options}.
+
+\subsubsection{Sub-components options}
+\label{subsub:component-options}
+
+Each sub-component, \textit{filename} included, may have associated options, with colons
+as separators, so that the syntax is something like:\codeskip
+\begin{latexcode}[numbers=none]
+ $sub-component$:option1:option2:[...]
+\end{latexcode}
+
+If truth be told, each option already has its own separator, so colons are not strictly necessary
+and, as a separator, any other symbol may be used. If wanted, it is also possible to not have any
+separator at all, but this is not recommended if only for a matter of clarity.
+
+\medskip
+Options for a sub-component are of different types, as listed below:
+
+\def\tmpcolor{gray}
+\squishlist
+ \item <\optname{[pre\textbar post]cmd}\verb|:command1:command2:[...]|>\optdsep
+ a sequence of commands is executed \textit{before}/\textit{after} the
+ beginning or ending of a sub-component (\textit{filename} included).
+ A command may have a sequence of arguments, separated by ``='',
+ each of which can either be \textit{optional} or \textit{mandatory}.
+ In total, the class recognizes four types of arguments:
+ \squishlist[0pt]
+ \item \ctext[blue]{arg} (mandatory argument equivalent to \{arg\});
+ \item \ctext[blue]{@arg} (optional argument equivalent to [arg]);
+ \item \ctext[blue]{!arg} (optional argument equivalent to <arg>);
+ \item \ctext[blue]{*} (optional argument equivalent to *).
+ \squishend
+ \item /\optname{m[l\textbar r]}\verb|<value>|/\hfill\opthsep{\small($1$)}\optvsep
+ /\optname{endm[l\textbar r]}/\hfill\opthsep{\small($2$)}\optdsep
+ changes the \textit{left}/\textit{right} margin of a text portion of a document, between
+ option {\small($1$)} and option {\small($2$)}; in a typical usage, these options are
+ associated with different sub-components, such as \verb|*PageBegin| and \verb|*PageEnd|.
+ Each time the option {\small($1$)} is used, the option {\small($2$)} is also required
+ for ending the margin modification, except for the \textit{filename}
+ sub-component that automatically does that. Example (it moves the left margin to the
+ right of $0.2$in):
+ \begin{myindent}
+ \texttt{%
+ \ctext[\tmpcolor]{%
+ SubBodyPageBegin:</ml0.2in/>\\
+ \omissis\\
+ SubBodyPageEnd:</endml>}%
+ }.
+ \end{myindent}
+ \item \verb|<width-value>|\optdsep
+ sets the width of a sub-component in terms of \textit{textwidth} percentage.
+ This option only exists for ``\verb|*PageBegin|`` sub-components. Example:
+ \ctext[\tmpcolor]{\texttt{SubBodyPageBegin:<0.48>}}.
+ \item /\optname{pagesize}\verb|<value>|/\optdsep
+ sets the width of a sub-component, as the option above, but in terms of absolute reference
+ (instead of \textit{textwidth} percentage). Also this option only exists for
+ ``\verb|*PageBegin|`` sub-components. Example:
+ \ctext[\tmpcolor]{\texttt{SubBodyPageBegin:/pagesize5.5in/}}.
+ \item /\optname{pagebreak}/\optdsep
+ permits to break two contiguous sub-components, aligning them one above the other, instead
+ of side by side (that is the default behavior). This option only exists for
+ ``\verb|*PageEnd|'' sub-components.
+ Example: \ctext[\tmpcolor]{\texttt{SubBodyPageEnd:/pagebreak/}}.
+ \item \optname{*}macroname\optvsep
+ filename\optname{@}\optdsep
+ \argname{macroname} is a macro expanding to the name of a file (with the \CV contents),
+ while \argname{filename} is directly the name itself (the only \textit{non-alphanumeric}
+ characters allowed there are ``\_'' and ``-'').
+ Example: \ctext[\tmpcolor]{\texttt{*headerfile}}, where the macro \textit{headerfile}
+ is somewhere defined.
+\squishend
+\ifparchment\end{parchment}\fi
+\chapter{Usage}
+\quotes{%
+ “There are two ways to write error-free programs; only the third one works”%
+}{Alan J. Perlis}
+\ifparchment\begin{parchment}\fi
+\section{Requirements}
+When \textit{decorations} are not enabled and the \textit{default style} is not used, \classname
+has
+the following requirements:\codeskip
+\begin{latexcode}[numbers=none]
+\RequirePackage{kvoptions} % for class options with key-value format
+\RequirePackage{etextools} % for lists and other useful tools
+\RequirePackage{ifthen} % for the \ifthenelse command
+\RequirePackage{xstring} % for string utilities
+\RequirePackage{svn-prov} % for file info extracted from SVN
+\RequirePackage{hyperref} % for hypertext links and other stuff
+\end{latexcode}
+
+If the default style is used, by means of the class option
+``\textit{style}''~\myref{sec:class-options}, this class requires (in addiction to
+\textit{hyperref} and \textit{svn-prov}):\codeskip
+\begin{latexcode}[numbers=none]
+\RequirePackage{xparse} % for commands with multiple default arguments
+\RequirePackage{pifont} % for the 'ding' style (itemize environment)
+\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 the times font
+\RequirePackage{marvosym} % symbols - phone
+\RequirePackage{amssymb} % symbols - email
+\end{latexcode}
+
+Finally, if decorations are enabled, by using the class
+option ``\textit{withDec}``~\myref{sec:class-options}, this class also requires (in addiction
+to \textit{svn-prov}, \textit{xparse} and \textit{xstring}):\codeskip
+\begin{latexcode}[firstnumber=1,numbers=none]
+\RequirePackage{tikz} % for graphics
+\end{latexcode}
+
+\section{Class options}
+\label{sec:class-options}
+
+\classname can use any option supported by the \textit{article} class, on which is based. In
+addiction, it provides the following options:
+\def\tmpcolor{brown}
+\squishlist
+\item {\color{red}language=<\argname[\tmpcolor]{string}>}
+ \begin{myindent}
+ string language to pass to the \textit{babel} package for the document (\CV) language;
+ \end{myindent}
+\item {\color{red}cntdir=<\argname[\tmpcolor]{dirname}>}
+ \begin{myindent}
+ sets the directory name where \classname will search for files with the \CV contents.\\
+ The default one is ``Contents'';
+ \end{myindent}
+\item {\color{red}style=<\argname[\tmpcolor]{filemane}>}
+ \begin{myindent}
+ specifies the file name (with or without the extension ``.sty'') containing the style commands.
+ By default, the file \textit{mycv\_style.sty}, provided by the class itself, is that used.
+ It is also possible to not use any style file by specifying the value ``none'' as file name;
+ \end{myindent}
+\item {\color{red}mdlname=<\argname[\tmpcolor]{name}>}
+ \begin{myindent}
+ registers a name for the layout (model) intended to be used: in this way is possible, for
+ example, to select the appropriate layout configuration file or a layout-specific portion of
+ code;
+ \end{myindent}
+\item {\color{red}withDec}
+ \begin{myindent}
+ enables support for decorations (provided by the \textit{TikZ} package).
+ \end{myindent}
+\squishend
+
+\section{Class commands}
+
+Here follows the complete list of the commands provided by \classname. The style commands
+are only available if the class option ``\textit{style}'' was used;
+the same goes for the decoration commands,
+which need the class option ``\textit{withDec}''.\\
+In the following text of this section, when present, the form {\color{blue}\omissis} (or
+{\color{blue}<...>}) indicates the default choice for an optional argument of a command.
+
+\subsection{Conditionals}
+
+\squishlist
+\item \cmdname{ifoption}
+ \marg{option}\arghsep
+ \marg{true}\arghsep\marg{false}\argvsep
+ \cmdname{ifmodel}
+ \marg{mdlname}\arghsep
+ \marg{true}\arghsep\marg{false}\cmddsep
+ \textit{ifoption} checks whether \argname{option} was used,
+ while \textit{ifmodel} checks whether \argname{mdlname} was registered in the class; then both
+ commands use the appropriate \argname{true} or \argname{false} block of code.
+\squishend
+
+\subsection{Default style}
+\label{sub:style-commands}
+
+\squishlist
+\item \cmdname{mysectionTitleFormat}
+ \begin{myindent}
+ \dargone{titlerule-color-above}{myheadingscolor}\argvsep
+ \dargone{titlerule-color-below}{myheadingscolor}
+ \end{myindent}\cmddsep
+ \argname{titlerule-color-above} is the color for the rule above a section name, while
+ \argname{titlerule-color-below} is for the one below. \textit{myheadingscolor} is the default
+ color.
+\item \cmdname{mysectionTitleSpacing}
+ \begin{myindent}
+ \dargone{left}{$0\text{pt}$}\arghsep
+ \dargone{beforesep}{$0\text{pt}$}\arghsep
+ \dargone{aftersep}{$5\text{pt}$}
+ \end{myindent}\cmddsep
+ this command is just an alias for
+ \textit{\textbackslash{titlespacing}\{\textbackslash{section}\}\{\argname{left}\}%
+ \{\argname{beforesep}\}\{\argname{aftersep}\}}. See the \textit{titlesec} package for further
+ information.
+\item \cmdname{mycfoot}
+ \marg{text}\cmddsep
+ adds \argname{text} to the page footer. It may be useful, for example, to show information
+ about the last update of the document.
+\item \cmdname{myitemize}
+ \cmddsep
+ a list environment that uses the \textit{ding} style.
+\squishend
+
+\subsection{Decorations}
+\label{sub:decoration-commands}
+
+\classname provides some commands for \textit{TikZ} decorations. The support
+provided is not complete at all (on the other hand \textit{TikZ} has a huge amount of
+functionality), but it is enough for this class purposes. The only \textit{TikZ} path supported is
+\textit{rectangle}.
+
+\squishlist
+\item \cmdname{mydecorationsPathmorphing}[*]
+ \begin{myindent}
+ \dargone{show-decoration}{$1$}\argvsep
+ \marg{decoration-type}\argvsep
+ \dargone{decoration-color}{gray}\argvsep
+ \dargtwo{shading-type}{radial}\argvsep
+ \dargtwo{background-color}{white}%
+ \end{myindent}\cmddsep
+ \argname{show-decoration}, if equals $1$, shows the decoration \argname{decoration-type},
+ while if $0$ does not.
+ The \textit{starred} version of the command uses the shading technique and the last argument is
+ the background shading color.\\
+ The \textit{not starred} version does not consider the argument \argname{shading-type}
+ (just for a matter of clarity, a ``none'' value may be used) and the last argument is simply the
+ background color.\\
+ \argname{decoration-type} was tested with the following values: ``shape'', ``straight'',
+ ``zigzag``, ``random steps``, ``saw``, ``bent``, ``bumps``, ``coil``, ``snake'' and
+ ``Koch snowflake``.\\
+ \argname{shading-type} was tested with ``radial'' and ``ball'' shadings.
+\item \cmdname{mydecorationsShape}
+ \begin{myindent}
+ \dargone{show-decoration}{$1$}\arghsep
+ \marg{decoration-type}\arghsep
+ \dargone{decoration-color}{gray}
+ \end{myindent}\cmddsep
+ \argname{show-decoration}, if equals $1$, shows the decoration \argname{decoration-type},
+ while if $0$ does not.\\
+ \argname{decoration-type} was tested with the following decorations: ``dart'', ``diamond'',
+ ``rectangle'' and ``star''.
+\item \cmdname{mydecorationsFading}
+ \begin{myindent}
+ \dargone{path-fading}{north}\argvsep
+ \marg{primary-color}\argvsep
+ \dargone{color-gradient}{$80$}\argvsep
+ \dargone{secondary-color}{black}\argvsep
+ \dargtwo{opacity}{$1.0$}%
+ \end{myindent}\cmddsep
+ the resulting fill color is given by \argname{primary-color}, \argname{color-gradient}
+ and \argname{secondary-color}, which are composed as follows:
+ \argname{primary-color}!\argname{color-gradient}!\argname{secondary-color}.
+\item \cmdname{mydecorationsSetPos[XTL|YTL|XBR|YBR]}
+ \begin{myindent}
+ \dargone{coordinate-value}{$1\text{cm}\mid-1\text{cm}\mid-1\text{cm}\mid1\text{cm}$}
+ \end{myindent}\cmddsep
+ sets the position for the decoration in use. Since the decoration path is \textit{rectangle}, it
+ is sufficient to have the $(x,y)$ coordinates of two points: the top-left and bottom-right.
+ \textit{XTL} stands for ``\texttt{X-Top-Left}'', \textit{XBR} for ``\texttt{X-Bottom-Right}''
+ and so on.
+\item
+ \cmdname{mydecorationsSetLineWidth}[*]
+ \dargone{line-width}{tikz value}\cmdvsep
+ \cmdname{mydecorationsSetSegmentAmplitude}[*]
+ \dargone{segment-amplitude}{tikz value}\cmdvsep
+ \cmdname{mydecorationsSetSegmentLength}[*]
+ \dargone{segment-length}{tikz value}\cmddsep
+ these commands may respectively be used for modifying the properties \argname{line-width},
+ \argname{segment-amplitude} and \argname{segment-length} for the decoration in use.
+ \textit{Starred} versions do not require any argument and reinitialize the properties to their
+ default values.
+\squishend
+
+\subsection{Miscellaneous}
+
+\squishlist
+\item
+ \cmdname{mypdfauthor}
+ \marg{author}\cmdvsep
+ \cmdname{mypdftitle}
+ \marg{title}\cmdvsep
+ \cmdname{mypdfsubject}
+ \marg{subject}\cmddsep
+ these commands do nothing but register \argname{author}, \argname{title} and \argname{subject}
+ information in the document properties of the pdf is being produced.
+
+\item \cmdname{mylang}
+ \marg{text}\arghsep
+ \dargone{language}{english}\cmddsep
+ temporarily changes the language in use (\textit{babel} package) to \argname{language} for
+ \argname{text}.
+
+\item \cmdname{mychangemargin}
+ \marg{left-margin}\arghsep
+ \marg{right-margin}\cmddsep
+ \textit{mychangemargin} environment changes the left and right margin of a portion of
+ text. The environments \textit{mychangemarginLeft} and \textit{mychangemarginRight}, whose
+ meaning is straight forward, are also available.
+
+\item \cmdname{myrenderlayout}
+ \dargone{component}{a}\cmddsep
+ processes and draws the layout component(s). The option value ``h'' is for the header component,
+ ``b'' and ``f'', respectively, for the body and footer ones, while ``a'' is for all components.
+\squishend
+
+\section{Some examples}
+
+This section gives some \textit{minimal} examples and does some considerations about the use of
+\classname (the class permits to do much better with a little patience). This is done by creating
+two \textit{curriculum vit\ae{}} with the same contents, but different layouts: one \CV will use a
+double page layout (abbreviated \DPL from here forward), while the other will use a single page
+layout (\SPL).
+
+The sample code presented here can be found in the ``Examples'' directory shipped with the
+\textit{mycv} bundle, which this document is part of, and that also contains files with the \CV
+contents: these files are not listed in the present document, as they do not contain anything worth
+being mentioned for the purpose of these notes.
+
+First and foremost, to keep the code organized, we need a file containing the layout components
+for the \DPL and \SPL (\textit{model-layouts.tex}). We opt to share the \textit{header} and
+\textit{footer} components, so we also create a second file named \textit{model-common.tex},
+such as in listing~\ref{lst:model-common}.
+\begin{latexcode}[firstnumber=1,caption=model-common.tex,label=lst:model-common]
+% ----------------------
+% the shared header list
+% ----------------------
+\def\headerlayoutlist{%
+ &MainHeaderPageBegin&:<postcmd:vspace=10pt>,
+ % --------------------------------- left header
+ |SubHeaderPageBegin|:<precmd:hfill>,
+ % header file (1)
+ $header_title@$,
+ |SubHeaderPageEnd|:<postcmd:hfill>,
+ % --------------------------------- right header
+ |SubHeaderPageBegin|,
+ % header file (2)
+ $header_contacts@$,
+ |SubHeaderPageEnd|,
+ &MainHeaderPageEnd&%
+}
+
+% ----------------------
+% the shared footer list
+% ----------------------
+\def\footerlayoutlist{footer_sign@}
+\end{latexcode}
+
+\subsection{Double page layout}
+
+Here we deal with the layout components specific for the \DPL, as showed in
+listing~\ref{lst:dplmodel}.
+\begin{latexcode}[firstnumber=1,caption=DPL model (part of 'model-layouts.tex'),label=lst:dplmodel]
+\def\bodylayoutlist{% the DPL's body list
+ % ---------------------------------------------------------
+ % moves the right margin to the left (text and title rules)
+ % ---------------------------------------------------------
+ &MainBodyPageBegin&:<0.96>,
+ % ---------------------------------------------------------
+ % the 2 directives below are just used as a trick to do the
+ % same thing for the left margin (it is moved to the right)
+ % ---------------------------------------------------------
+ |SubBodyPageBegin|,
+ |SubBodyPageEnd|,
+ % -----------------------------------------
+ % left page (0.48 of textwidth)
+ % -----------------------------------------
+ |SubBodyPageBegin|:<0.48>,
+ $contents_partA@$:<precmd:vspace=10pt:sectionnumber=1>,
+ $contents_partB@$:<precmd:vspace=10pt:sectionnumber=2>,
+ $contents_partC@$:<precmd:vspace=10pt:sectionnumber=3>,
+ |SubBodyPageEnd|:<postcmd:hfill>,
+ % -----------------------------------------
+ % right page (0.48 of textwidth)
+ % -----------------------------------------
+ |SubBodyPageBegin|:<0.48>,
+ $contents_partA@$:<precmd:vspace=10pt:sectionnumber=4>,
+ $contents_partB@$:<precmd:vspace=10pt:sectionnumber=5>,
+ |SubBodyPageEnd|,
+ % -----------------------------------------
+ &MainBodyPageEnd&%
+}
+\end{latexcode}
+
+\subsection{Single page layout}
+
+As far as the \SPL, we do not need to use the \verb|*PageBegin| components, but it is sufficient to
+directly include the files with the contents. The resulting code is showed
+in listing~\ref{lst:splmodel}.
+\begin{latexcode}[firstnumber=1,caption=SPL model (part of
+'model-layouts.tex'),label=lst:splmodel]
+\def\bodylayoutlist{% the SPL's body list
+ % ---------------------------------------------------
+ $contents_partA@$:<precmd:vspace=10pt:sectionnumber=1>,
+ $contents_partB@$:<precmd:vspace=10pt:sectionnumber=2>,
+ $contents_partC@$:<precmd:vspace=10pt:sectionnumber=3>,
+ $contents_partA@$:<precmd:vspace=10pt:sectionnumber=4>,
+ $contents_partB@$:<precmd:vspace=10pt:sectionnumber=5>
+ % ---------------------------------------------------
+}
+\end{latexcode}
+
+\subsection{Main file}
+
+Since we both have the components for the double and single page layouts, we can proceed writing the
+main file (\textit{mycv-example-main.tex}) that picks and use them.\\
+We start by setting up some options for the
+class, such as those related to the decorations and language support, as well as the name of the
+model (layout) we mean to register.
+Besides, we opt to store the \CV contents files in the current directory (that is not the default one
+where the class searches for the contents files), so there is need to specify its path with
+the option ``\textit{cntdir}''.
+
+In listing~\ref{lst:mycv-example-main} we take the \DPL as an example, but switching to the
+\SPL would just be a matter of changing the ``\textit{mdlname}'' option from \keyword{verDPL} to
+\keyword{verSPL}.
+\begin{latexcode}[firstnumber=1,label=lst:mycv-example-main,caption=mycv-example-main.tex]
+\documentclass[10pt,mdlname=verDPL,withDec,cntdir=.,language=english]{mycv}
+\input{mycv-example-common}
+\begin{document}
+\cvdec\myrenderlayout\mycfoot{Last update: \today}
+\end{document}
+\end{latexcode}
+
+The file \textit{mycv-example-common[.tex]}, showed in listing~\ref{lst:example-common},
+selects the appropriate layout components (listings~\ref{lst:dplmodel} or \ref{lst:splmodel}) to be
+included and, subsequently, processed by \textit{\textbackslash{}myrenderlayout}.
+In addiction, the file \textit{mycv-example-common.tex} contains some decoration commands, which
+need to be used only if the option ``\textit{withDec}' was given to the class; this is the
+reason of the conditional command \textit{\textbackslash{}ifoption}.
+\begin{latexcode}[firstnumber=1,caption=mcv-example-common.tex,label=lst:example-common]
+[...]
+\ifoption{withDec}{%
+ \newcommand{\cvdec}{
+ \mydecorationsSetLineWidth[0.3mm]%
+ \mydecorationsPathmorphing*{coil}<radial><lightgray>
+ }
+ [...]
+}{\newcommand{\cvdec}{}}
+
+% include layouts components
+\input{model-layouts}
+[...]
+\end{latexcode}
+
+\subsection{Layout notes}
+
+When a double layout page is used, it may occur, for example, that a section is too long for a
+page: this would not be a problem with a single page layout, since \LaTeX{} would automatically
+break the section contents. Unfortunately, with a double page layout the behavior is substantially
+different: this is because the class uses a \textit{minipage-based mechanism} and a minipage is by
+itself not breakable. Thus, what happens is that part of the section contents comes out from the
+page margins.
+
+When a problem such as this occurs, a possible workaround is to manually break the section contents.
+This can be done by using a counter that keeps track of the number of times a same file is included:
+when the counter is equal $1$, a part of the section contents is included in the left page,
+otherwise is the remaining one to be included in the right page.
+Listing~\ref{lst:split-contents-example} shows a practical example of what just discussed.
+\begin{latexcode}[firstnumber=1,label=lst:split-contents-example,
+caption=workaround example]
+% ---------------------------------------------------------
+% file with the section contents: i.e. <section_skills.tex>
+% ---------------------------------------------------------
+% increases the counter 'cnt': it's defined outside this file
+\stepcounter{cnt}
+
+% selects the appropriate part of the file contents
+\newcommand{\condblock}[2]{\ifthenelse{\value{cnt}<2}{#1}{#2}}
+
+\condblock{skills section contents part A}%
+ {skills section contents part B (the remaining part)}
+
+% ------------------------------------------------------
+% file with the DPL components: i.e. <model-layouts.tex>
+% ------------------------------------------------------
+\def\bodylayoutlist{%
+ |SubBodyPageBegin|:<0.48>, % left page
+ % include part A in the left page
+ $section_skills@$,
+ [...]
+ |SubBodyPageEnd|,
+ |SubBodyPageBegin|:<0.48>, % right page
+ % include part B in the right page
+ $section_skills@$,
+ [...]
+ |SubBodyPageEnd|
+}
+\end{latexcode}
+
+Of course the proposed workaround is not the best we could wish for, since it requires manual
+operations.
+As an alternative, it is possible to not use the \verb|*PageBegin| and \verb|*PageEnd| mechanism,
+delegating the double page layout to an external package (i.e. \textit{multicols}).
+This kind of approach is showed in listings~\ref{lst:model-dpl2}.
+\begin{latexcode}[firstnumber=1,caption=DPL$2$ model (part of
+'model-layouts.tex'),label=lst:model-dpl2]
+\newcommand{\mcbegin}{\begin{multicols}{2}}
+\newcommand{\mcend}{\end{multicols}}
+
+\def\bodylayoutlist{%
+ $contents_partA@$:<precmd:vspace=10pt:mcbegin:sectionnumber=1>,%
+ [...]
+ $contents_partB@$:<precmd:vspace=10pt:sectionnumber=6>:<postcmd:mcend>,%
+}
+\end{latexcode}
+
+Notice the usage of the commands \textit{\textbackslash{mcbegin}} and
+\textit{\textbackslash{mcend}}, which act as a wrapper for the \textit{multicols} environment.
+
+\section{Split file contents}
+
+This class uses a file based approach as far as the contents of a \CV, that is to say it needs that
+the contents be into separated file/s (at least one) with respect to the main file.
+
+As the class works, having the contents in just one single file is not as good as would be with
+multiple files (ideally a file for each section of the document), since multiple files allow to
+more easily customize the \CV layout without directly acting on the contents.
+On the other hand, a multiple file approach may compel to use several files and not be
+convenient.\\
+For these reasons, this class provides a \keyword{PERL} script named
+\textit{mycv\_split\_contents.pl} (for a list of all the options provided, type
+\textit{mycv\_split\_contents.pl -h} inside a shell environment)
+that can process a file and, according to what specified by the
+directives in the file itself, split its contents into several files (which will be those
+effectively used by the class). In this way is possible to directly manage one single file for the
+contents.
+
+If requested, the script can also create a basic model file with the layout components:
+it has to be considered just as a skeleton and probably needs to be edited by hand afterward.
+
+The directives that may be used inside a contents file have the following form:\codeskip
+\begin{latexcode}[numbers=none]
+###::|filename|:$component$:&commands&
+\end{latexcode}
+
+{\color{orange}\textit{filemane}} is the name of the file to create,
+{\color{brown}\textit{component}} is the main component (\textit{header}, \textit{body} or
+\textit{footer}) that the file represents, while {\color{red}\textit{commands}} are the relative
+commands associated to the component.
+Both \textit{component} and \textit{commands} are not mandatory, but may be useful, especially
+\textit{component}, when is requested to generate a basic model file.\\
+The script \textit{mycv\_split\_contents.pl} may be called inside the main file as showed in
+listing~\ref{lst:mycv-example-main2}.
+
+\begin{latexcode}[firstnumber=1,caption=Split contents example,label=lst:mycv-example-main2]
+% -------------------------------------------------------------------
+% To compile this file is necessary to use the option '-shell-escape'
+% to enable the 'write18' construct.
+% -------------------------------------------------------------------
+\documentclass[10pt,mdlname=verSPL,withDec,language=english]{mycv}
+\immediate\write18{<dirpath>/mycv_split_contents.pl -i cv-contents.tex}
+[...]
+\end{latexcode}
+
+When the file \textit{cv-contents.tex} (listing~\ref{lst:cv-contents}) is processed by the script,
+the files \textit{*.tex} are created in the directory ''Contents`` (the default one).
+\begin{latexcode}[firstnumber=1,caption=cv-contents.tex,label=lst:cv-contents]
+% -----------------------------
+% ###::header_title.tex::header
+% -----------------------------
+[...]
+% -------------------------------------------------------------------
+% ###::contents_partA.tex::body::<precmd:vspace=10pt:sectionnumber=1>
+% -------------------------------------------------------------------
+[...]
+% -------------------------------------------------------------------
+% ###::contents_partB.tex::body::<precmd:vspace=10pt:sectionnumber=2>
+% -------------------------------------------------------------------
+[...]
+% ----------------------------
+% ###::footer_sign.tex::footer
+% ----------------------------
+[...]
+\end{latexcode}
+
+\bigskip
+\fbox{That's all, {\color{brown}happy \LaTeX{}ing!}}
+\hfill\Large\calligra{AndreaGhersi}
+\ifparchment\end{parchment}\fi
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/mycv/Examples/Notes.txt b/macros/latex/contrib/mycv/Examples/Notes.txt
new file mode 100644
index 0000000000..07b75f588c
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/Notes.txt
@@ -0,0 +1,22 @@
+===========================================================================================
+To produce the pdf files with examples, follow these steps:
+
+ 1) extract the content of the file 'mycv-examples.dtx' by typing:
+
+ (pdf)latex mycv-examples.dtx
+
+ 2) set the local environment variable 'TEXINPUTS' to the directory where you unzipped
+ the 'mycv' bundle (*). As an example, on Linux:
+
+ export TEXINPUTS=".:<dirpath>/mycv:$TEXINPUTS:"
+
+ 3) run the following commands (it may be necessary to run each command twice):
+
+ pdflatex -jobname mycv-example-dpl "\def\model{verDPL}\input{mycv-example-main}"
+ pdflatex -jobname mycv-example-dpl2 "\def\model{verDPL2}\input{mycv-example-main}"
+ pdflatex -jobname mycv-example-spl "\def\model{verSPL}\input{mycv-example-main}"
+ pdflatex -jobname mycv-example-spl2 "\def\model{verSPL2}\input{mycv-example-main}"
+
+(*) if the class has been installed in the system (see the 'README' file), the step (2) can
+ be skipped.
+=========================================================================================== \ No newline at end of file
diff --git a/macros/latex/contrib/mycv/Examples/mycv-example-dpl.pdf b/macros/latex/contrib/mycv/Examples/mycv-example-dpl.pdf
new file mode 100644
index 0000000000..ffd6518b6c
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/mycv-example-dpl.pdf
Binary files differ
diff --git a/macros/latex/contrib/mycv/Examples/mycv-example-dpl2.pdf b/macros/latex/contrib/mycv/Examples/mycv-example-dpl2.pdf
new file mode 100644
index 0000000000..988eca42f3
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/mycv-example-dpl2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mycv/Examples/mycv-example-spl.pdf b/macros/latex/contrib/mycv/Examples/mycv-example-spl.pdf
new file mode 100644
index 0000000000..86e6900007
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/mycv-example-spl.pdf
Binary files differ
diff --git a/macros/latex/contrib/mycv/Examples/mycv-example-spl2.pdf b/macros/latex/contrib/mycv/Examples/mycv-example-spl2.pdf
new file mode 100644
index 0000000000..081cd54710
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/mycv-example-spl2.pdf
Binary files differ
diff --git a/macros/latex/contrib/mycv/Examples/mycv-examples.dtx b/macros/latex/contrib/mycv/Examples/mycv-examples.dtx
new file mode 100644
index 0000000000..ee9d404649
--- /dev/null
+++ b/macros/latex/contrib/mycv/Examples/mycv-examples.dtx
@@ -0,0 +1,324 @@
+% \iffalse meta-comment
+% mycv-examples : some examples about the usage of the class
+% 'mycv' (a curriculum vitae class allowing TikZ decorations).
+%
+% 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'.
+%
+% The examples consist of the main source file 'mycv-examples.dtx'
+% and the derived files:
+%
+% mycv-examples.ins,
+% contents_part[A|B|C].tex,
+% header_[contacts|title].tex,
+% model-[common|layouts].tex,
+% mycv-example-[common|main].tex,
+% footer_sign.tex,
+% mycv-example[dpl|dl2].pdf,
+% mycv-example[spl|sl2].pdf
+%
+% Unpacking the examples:
+%
+% (pdf)latex mycv-examples.dtx
+%
+% Producing the examples:
+%
+% see the file 'Examples/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'.
+-----------------------------------------------------------
+\endpreamble
+
+\keepsilent
+\askforoverwritefalse
+\usedir{tex/latex/mycv/examples}
+
+\generate{%
+ \file{mycv-examples.ins}{\nopreamble\nopostamble\from{mycv-examples.dtx}{install}}%
+ \file{mycv-example-common.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{mycv-example-common.tex}}%
+ \file{mycv-example-main.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{mycv-example-main.tex}}%
+ \file{contents_partA.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{contents-partA.tex}}%
+ \file{contents_partB.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{contents-partB.tex}}%
+ \file{contents_partC.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{contents-partC.tex}}%
+ \file{footer_sign.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{footer-sign.tex}}%
+ \file{header_contacts.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{header-contacts.tex}}%
+ \file{header_title.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{header-title.tex}}%
+ \file{model-common.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{model-common.tex}}%
+ \file{model-layouts.tex}{\nopreamble\nopostamble\from{mycv-examples.dtx}{model-layouts.tex}}%
+}
+
+\obeyspaces
+\Msg{**************************************************************}
+\Msg{* *}
+\Msg{* See the file 'Notes.txt' for information on how to produce *}
+\Msg{* pdf files with examples. *}
+\Msg{* *}
+\Msg{* Happy (La)TeXing! *}
+\Msg{* *}
+\Msg{**************************************************************}
+
+\endbatchfile
+%</install>
+%
+%
+% \iffalse
+%<*mycv-example-common.tex>
+% \fi
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lipsum}
+\usepackage{tikz}
+
+\ifoption{withDec}{%
+ \newcommand{\cvdec}{
+ \mydecorationsSetLineWidth[0.3mm]%
+ \mydecorationsPathmorphing*{coil}<radial><lightgray>
+ }%
+ \ifmodel{verSPL2}{
+ \renewcommand{\cvdec}{
+ \mydecorationsSetPosXTL[-4cm]
+ \mydecorationsSetPosYTL[1.5cm]
+ \mydecorationsSetPosYBR[-2cm]
+ \mydecorationsSetPosXBR[4cm]
+ \mydecorationsPathmorphing*[0]{shape}[black]<ball><black>
+ }%
+ }
+}{\newcommand{\cvdec}{}}
+
+\input{model-layouts}
+
+\ifmodel{verSPL} {\mypdftitle{Simple CV example: SPL}} {\relax}
+\ifmodel{verSPL2}{\mypdftitle{Simple CV example: SPL2}}{\relax}
+\ifmodel{verDPL} {\mypdftitle{Simple CV example: DPL}} {\relax}
+\ifmodel{verDPL2}{\mypdftitle{Simple CV example: DPL2}}{\relax}
+
+\newcommand{\sectionnumber}[1]{\section{Section #1}}
+\mypdfauthor{Andrea Ghersi}
+% \iffalse
+%</mycv-example-common.tex>
+% \fi
+%
+%
+% \iffalse
+%<*mycv-example-main.tex>
+% \fi
+\def\cvmodel{verDPL} % default model
+\ifdefined\model\def\cvmodel{\model}\fi
+
+\documentclass[10pt,mdlname=\cvmodel,cntdir=.,withDec,language=english]{mycv}
+\input{mycv-example-common}
+
+\begin{document}
+\cvdec\myrenderlayout\mycfoot{Last update: \today}
+\end{document}
+% \iffalse
+%</mycv-example-main.tex>
+% \fi
+%
+%
+% \iffalse
+%<*contents-partA.tex>
+% \fi
+
+\begin{mychangemargin}{0.1in}{0.1in}
+ \lipsum[73]
+\end{mychangemargin}
+% \iffalse
+%</contents-partA.tex>
+% \fi
+%
+%
+% \iffalse
+%<*contents-partB.tex>
+% \fi
+
+\begin{mychangemargin}{0.1in}{0.1in}
+ \lipsum[74]
+\end{mychangemargin}
+% \iffalse
+%</contents-partB.tex>
+% \fi
+%
+%
+% \iffalse
+%<*contents-partC.tex>
+% \fi
+
+\begin{mychangemargin}{0.1in}{0.1in}
+ A list:
+ \begin{myitemize}
+ \item this is item 1;
+ \item this is item 2;
+ \item .....
+ \end{myitemize}
+\end{mychangemargin}
+% \iffalse
+%</contents-partC.tex>
+% \fi
+%
+%
+% \iffalse
+%<*footer-sign.tex>
+% \fi
+
+\bigskip\bigskip
+\ifmodel{verSPL}{\flushleft}{\relax}
+{\Large\calligra{Adam Smith}}
+% \iffalse
+%</footer-sign.tex>
+% \fi
+%
+%
+% \iffalse
+%<*header-contacts.tex>
+% \fi
+\def\cvcontactsep{\\}
+\vspace{0pt} %trick for alignment
+
+\tikzstyle{mybox} = [%
+ draw=red, fill=blue!20, very thick,
+ rectangle, rounded corners,
+ inner sep=10pt, inner ysep=20pt]
+
+\tikzstyle{fancytitle} = [
+ fill=red, text=white]
+
+\begin{tikzpicture}
+ \node (box)[fill=myshadecolor,rounded corners=10pt, minimum size= 2.5cm]{%
+ {\color{black}
+ \begin{tabular*}{6cm}{l|l}
+ &Unknown address XYZXYZXYZ\cvcontactsep
+ \raisebox{-3pt}{\Mobilefone} &+39\,0123\,456789\cvcontactsep
+ \raisebox{-3pt}{\Telefon} &Telephone\cvcontactsep
+ \raisebox{-3pt}{\Email} &\href{mailto:unknown@gmail.com}
+ {unknown@gmail.com}\cvcontactsep
+ \end{tabular*}
+ }};
+ \node[fancytitle, text width=0.5423\textwidth, text centered,
+ rounded corners] at (box.north){Contacts};
+\end{tikzpicture}
+\bigskip
+% \iffalse
+%</header-contacts.tex>
+% \fi
+%
+%
+% \iffalse
+%<*header-title.tex>
+% \fi
+\bigskip
+{\sffamily\Huge{}Dr. Adam Smith}\\[3pt]%
+\ifmodel{verSPL2}
+ {{\color{red}\huge\calligra{CurriculumVitae}\\[25pt]}}
+ {{\color{myheadingscolor}\huge\calligra{CurriculumVitae}\\[25pt]}}
+% \iffalse
+%</header-title.tex>
+% \fi
+%
+%
+% \iffalse
+%<*model-common.tex>
+% \fi
+\def\headerlayoutlist{%
+ MainHeaderPageBegin:<postcmd:vspace=10pt>,
+ SubHeaderPageBegin:<precmd:hfill>,
+ header_title@, % header file one
+ SubHeaderPageEnd:<postcmd:hfill>,
+ SubHeaderPageBegin,
+ header_contacts@, % header file two
+ SubHeaderPageEnd,
+ MainHeaderPageEnd%
+}
+
+\def\footerlayoutlist{footer_sign@} % footer file
+% \iffalse
+%</model-common.tex>
+% \fi
+%
+%
+% \iffalse
+%<*model-layouts.tex>
+% \fi
+\input{model-common}
+
+\ifmodel{verSPL}{%
+ \def\bodylayoutlist{%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=1>,
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=2>,
+ contents_partC@:<precmd:vspace=10pt:sectionnumber=3>,
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=4>,
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=5>
+ }%
+}{\relax}
+
+\ifmodel{verSPL2}{%
+ \mysectionTitleFormat[red][red]
+ \color{white}
+
+ \def\bodylayoutlist{%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=1>,%
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=2>,%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=3>,%
+ contents_partC@:<precmd:vspace=10pt:sectionnumber=4>,%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=5>,%
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=6>
+ }%
+}{\relax}
+
+\ifmodel{verDPL}{%
+ \def\bodylayoutlist{%
+ MainBodyPageBegin:<0.96>,
+ SubBodyPageBegin,
+ SubBodyPageEnd,
+ SubBodyPageBegin:<0.48>,
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=1>,
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=2>,
+ contents_partC@:<precmd:vspace=10pt:sectionnumber=3>,
+ SubBodyPageEnd:<postcmd:hfill>,
+ SubBodyPageBegin:<0.48>,
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=4>,
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=5>,
+ SubBodyPageEnd,
+ MainBodyPageEnd%
+ }%
+}{\relax}
+
+\ifmodel{verDPL2}{%
+ \usepackage{multicol}
+ \setlength{\columnsep}{2.0pc}
+ \setlength\columnseprule{.4pt}
+ \newcommand{\mcbegin}{\begin{multicols}{2}}
+ \newcommand{\mcend}{\end{multicols}}
+
+ \def\bodylayoutlist{%
+ contents_partA@:<precmd:vspace=10pt:mcbegin:sectionnumber=1>,%
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=2>,%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=3>,%
+ contents_partC@:<precmd:vspace=10pt:sectionnumber=4>,%
+ contents_partA@:<precmd:vspace=10pt:sectionnumber=5>,%
+ contents_partB@:<precmd:vspace=10pt:sectionnumber=6>:<postcmd:mcend>%
+ }%
+}{\relax}
+% \iffalse
+%</model-layouts.tex>
+% \fi
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/mycv/README b/macros/latex/contrib/mycv/README
new file mode 100644
index 0000000000..329f150219
--- /dev/null
+++ b/macros/latex/contrib/mycv/README
@@ -0,0 +1,107 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% MyCV class (v1.5.6) %
+% 2012-05-20 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+===========
+| |
+| License |
+| |
+===========
+
+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'.
+
+============
+| |
+| Abstract |
+| |
+============
+
+This LaTex class provides a set of functionality for
+writing "curriculum vitae" with different layouts.
+To achieve this goal, it adopts a different approach
+with respect to the other c.v. classes or packages.
+Basically, the idea is that a user can write some
+custom configuration directives, by means of which
+is possible both to produce different c.v. layouts
+and quickly switch among them.
+In order to process such directives, this class uses
+a set of lists, provided by the package <etextools>.
+A basic support for TikZ decorations is also provided.
+
+==========================
+| |
+| Files and installation |
+| |
+==========================
+
+---------------------------------------------------------
+The base directory of this bundle has the following files
+and sub-directories
+---------------------------------------------------------
+
+'README' -- this file
+'CHANGELOG -- the revision history
+'mycv.dtx' -- the main source file
+'checksum.pl' -- verify the integrity of the main files
+'mycv.pdf' -- the documentation file
+<Examples> -- directory with some examples
+<Doc> -- contains the documentation sources
+
+The following files are also created when extracting
+the 'mycv.dtx' contents (see 'Class installation' below).
+
+ ** the main class file
+ 'mycv.cls'
+
+ ** support for the main class implementation
+ 'mycv_[base|misc|version].def'
+
+ ** class extensions
+ 'mycv_[style|dec].sty'
+
+ ** split the contents of a file (see the doc.)
+ 'mycv_split_contents.pl'
+
+------------------
+Class installation
+------------------
+
+*) Extracts the content of the file 'mycv.dtx'. It is
+ done by typing the command:
+
+ (pdf)latex mycv.dtx
+
+*) Moves all files with extensions '.def', '.sty' and
+ '.cls' into a folder searched by LaTeX; the update
+ of the LaTeX db might be necessary to complete the
+ installation.
+
+*) Optionally, the Perl script 'mycv_split_contents.pl'
+ may be copied to a folder in the 'PATH' environment
+ variable; on Unix-like systems, it's also necessary
+ to make the script executable.
+
+*) To check the integrity of the main files, the script
+ 'checksum.pl' (it does not provide any argument) may
+ be executed, provided that it's executable (only for
+ Unix-like systems).
+
+-------------
+Documentation
+-------------
+
+To create the documentation, move to the <Doc> folder
+and run 'mycv.tex' twice through pdflatex. Due to the
+use of some TikZ decorations, it may take awhile.
+
+--------
+Examples
+--------
+
+See the file 'Notes.txt' in the folder 'Examples' for
+information on how to produce pdf files with examples. \ No newline at end of file
diff --git a/macros/latex/contrib/mycv/checksum.pl b/macros/latex/contrib/mycv/checksum.pl
new file mode 100644
index 0000000000..ffd87e310e
--- /dev/null
+++ b/macros/latex/contrib/mycv/checksum.pl
@@ -0,0 +1,78 @@
+#!/usr/bin/perl
+
+# $Id: checksum.pl 91 2012-05-20 19:28:13Z ghangenit $
+
+use Term::ANSIColor;
+use warnings;
+use strict;
+
+##
+## Variables
+##
+
+my $checksumregex = "[a-fA-F0-9]{32}";
+my %checksums = (
+ SRCCHECKSUM => "mycv.dtx 8AACA8304D7F1F21480FDD12D7F53EC1",
+ EXPCHECKSUM => "Examples/mycv-examples.dtx A745EADAE2358B66C6BFC3F55F3EA793",
+ DOCCHECKSUM => "Doc/mycv.tex 83ECEA99562FE163FDF735FFC582AE3B"
+);
+
+my @externalcmds = ( 'pdftex', 'latexmk' );
+
+##
+## Functions
+##
+
+sub exitWithError($$)
+{
+ my $stasus=shift;
+ my $cmd=shift;
+
+ printf STDERR ("Error: command <%s> exited with value %d.\n", $cmd, $stasus >> 8);
+ exit $stasus;
+}
+
+sub checksum()
+{
+ # 'keys' returns the list of keys in an apparently random order
+ for my $key ( keys %checksums )
+ {
+ my ($filename, $expectedmd5) = split " ", $checksums{$key};
+
+ print "\n------------------------------------------------------------\n";
+ print "<$filename>:\n<$expectedmd5> is the expected checksum.\n";
+
+ # gets some info among which the checksum of the file '$filename'
+ my @result = `$externalcmds[0] "\\message{\\pdfmdfivesum file{$filename}}\\end"`;
+ exitWithError( $?, $externalcmds[0] ) if ( $? != 0 );
+
+ foreach my $info (@result)
+ {
+ if ( $info =~ /($checksumregex)/ ) # the checksum info
+ {
+ chomp($info);
+ print "<$info> is the found checksum.";
+ if ( $info eq $expectedmd5 )
+ {
+ print color 'bold green';
+ print "\n[OK, they match!]\n"; print color 'reset';
+ }
+ else
+ {
+ print color 'bold red';
+ print "\n[OOPS, they do not match!]\n"; print color 'reset';
+ }
+ }
+ }
+ print "------------------------------------------------------------\n";
+ }
+
+ `$externalcmds[1] -c texput.log 2>&1`; # removes the log file produced by 'pdftex'
+ exitWithError( $?, $externalcmds[1] ) if ( $? != 0 );
+}
+
+##
+## Main
+##
+
+checksum(); \ No newline at end of file
diff --git a/macros/latex/contrib/mycv/mycv.dtx b/macros/latex/contrib/mycv/mycv.dtx
new file mode 100644
index 0000000000..129304a5a1
--- /dev/null
+++ b/macros/latex/contrib/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/macros/latex/contrib/mycv/mycv.pdf b/macros/latex/contrib/mycv/mycv.pdf
new file mode 100644
index 0000000000..5a73e6ebaf
--- /dev/null
+++ b/macros/latex/contrib/mycv/mycv.pdf
Binary files differ