diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/mycv/Doc/Chapters/Fundamentals.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/mycv/Doc/Chapters/Fundamentals.tex | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/mycv/Doc/Chapters/Fundamentals.tex b/Master/texmf-dist/doc/latex/mycv/Doc/Chapters/Fundamentals.tex new file mode 100644 index 00000000000..d09efbcf895 --- /dev/null +++ b/Master/texmf-dist/doc/latex/mycv/Doc/Chapters/Fundamentals.tex @@ -0,0 +1,198 @@ +%********************************************************* +\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} +%********************************************************* + +\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. +%That is primarily the goal this class focus on. +The class also provides a basic support for using the \textit{TikZ} decorations and defines a bunch +of commands for handling the contents of a \CV, even though this is not its primary goal. +%\classname, in fact, mainly focus on switching from different curriculum layouts, +%rather than handling the curriculum contents. +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, +providing missing contents functionality. + +Probably, the choice of the class's name was not so appropriate but, at the beginning, I did not +plan to publish it and chose the simplest and most obvious name. I realized that only when I +wrote these notes, but by then it was a bit too late. +%As far as the class is concerned, it uses a file-based and list-driven approach. Each file +%represents the contents of a user-chosen part of the curriculum (ideally a section, but this is not +%mandatory and may be anything else); besides, the \CV is logically divided into three main +%components: header, body and footer components. For each main component a list is associated: it +%contains sub-components, among which files with the \CV contents. In addiction, each sub-component +%may have associated some generic or specific commands to be executed. + +Before starting to describe \classname more in details, I have to say it was my first class in +\LaTeX{} and, although I tried to do my best, the lack of experience probably brought me to make +some choice not so opportune as I hoped. It goes without saying that any advice or constructive +criticism is greatly appreciated. + +\section{Class files} +The class \classname is composed by five 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 (the remaining four); + \end{myindent} + \item \ctext{mycv\_base.tex} + \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-system file; + \end{myindent} + \item \ctext{mycv\_default\_style.tex} + \begin{myindent} + it contains the default style commands~\myref{sub:style-commands} provided by this class: if + the default style is not used, %~\myref{sec:class-options} + this file will not be included by \textit{mycv.cls}; + \end{myindent} + \item \ctext{mycv\_dec.tex} + \begin{myindent} + it contains the decoration commands~\myref{sub:decoration-commands}: if decorations are not + enabled% + %~\myref{sec:class-options} + , this file will not be included by \textit{mycv.cls}; + \end{myindent} + \item \ctext{mycv\_misc.tex} + \begin{myindent} + it contains some miscellaneous commands and definitions. + \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}. +For each of these ones, a list, that basically contains some sub-components, is being +associated; files with the \CV contents +%, or ideally a part of them (a section for example, but +%this is not mandatory and may be anything else), +are also considered sub-components\footnote{it may be a good practice, to make the best use of this +class, to subdivide the contents of each cv section in different files, although this is not +mandatory and any other choice may be made}. For these reasons, we can actually say that \classname +uses a +%file-based and +sort of \textit{list-driven} approach.%\\ +%Besides, the \CV contents (ideally a section, but may be anything else) is divided in more files. + +\subsection{Main components} + +\classname recognizes the following three lists that, for all intends and purposes, are a concrete +representation of the main logical components: + +\def\tmpcolor{black} +\squishlist[0pt] + \item \textbf{\ctext[\tmpcolor]{headerlayoutlist}}; + \item \textbf{\ctext[\tmpcolor]{bodylayoutlist}}; + \item \textbf{\ctext[\tmpcolor]{footerlayoutlist}}. +\squishend\sep + +It is mandatory, for the correct behavior of the class, to not change the above list 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{lstlisting}[firstnumber=1,numbers=none] +\def\headerlayoutlist{sub-component1,sub-component2,[...]} +\end{lstlisting} + +\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). +% (for these notes does not really matter which is which). + +A \textit{filename} sub-component may either directly be the name of a file or a macro (variable): +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:\sep +\begin{myindent} +\verb|sub-component:option1:option2:[...]|. +\end{myindent}\sep +If truth be told, each option 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, +but this is not recommended (just for a matter of clarity). +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 + begin or end of a sub-component (\textit{filename} included). + A command may have a sequence of arguments, separated by ``=''; + each of them can either be \textit{optional} or \textit{mandatory}. %\\ + In total, \classname recognizes four types of arguments: + %, as it is possible to have $3$ different kinds of optional ones: + \squishlist + \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):\sep + \begin{myindent} + \texttt{% + \ctext[\tmpcolor]{% + % \% moves the left margin to the right of $0.2$in\\ + 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 + 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{*}varname\optvsep + filename\optname{@}\optdsep + \argname{varname} is a macro that expands to the name of a file (with the \CV contents), + while \argname{filename} is directly the name itself. + Example: \ctext[\tmpcolor]{\texttt{*headerfile}}, where the macro \textit{headerfile} + is somewhere defined. +\squishend
\ No newline at end of file |