summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/limecv
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-02-09 03:01:29 +0000
committerNorbert Preining <norbert@preining.info>2020-02-09 03:01:29 +0000
commitce124d96f4bfa21c13a9803a0c4c9eecdf11c130 (patch)
tree6c33bd2b021ad3fd95a009b3bfe4300e51435c10 /macros/latex/contrib/limecv
parent9fe464819ed0a8c536f116bb55dbd39dd32cd904 (diff)
CTAN sync 202002090301
Diffstat (limited to 'macros/latex/contrib/limecv')
-rw-r--r--macros/latex/contrib/limecv/README.md28
-rw-r--r--macros/latex/contrib/limecv/examples/mwe-latex.pdfbin112373 -> 112373 bytes
-rw-r--r--macros/latex/contrib/limecv/examples/mwe-lualatex.pdfbin95394 -> 41474 bytes
-rw-r--r--macros/latex/contrib/limecv/examples/mwe-xelatex.pdfbin56455 -> 42445 bytes
-rw-r--r--macros/latex/contrib/limecv/examples/mwe-xelatex.tex1
-rw-r--r--macros/latex/contrib/limecv/limecv.dtx894
-rw-r--r--macros/latex/contrib/limecv/limecv.ins4
-rw-r--r--macros/latex/contrib/limecv/limecv.pdfbin333109 -> 205852 bytes
8 files changed, 613 insertions, 314 deletions
diff --git a/macros/latex/contrib/limecv/README.md b/macros/latex/contrib/limecv/README.md
index c50155f639..7f6d8dcb43 100644
--- a/macros/latex/contrib/limecv/README.md
+++ b/macros/latex/contrib/limecv/README.md
@@ -1,5 +1,7 @@
# limecv <img src="src/images/limecv-icon.png" alt="limecv project icon" width="40px"/>
+[![Build Status](https://travis-ci.org/opieters/limecv.svg?branch=master)](https://travis-ci.org/opieters/limecv)
+
`limecv` is a document class to typeset curriculum vitæ in (Xe/Lua)LaTeX.
The design of this document class is detailed in [a series of blog posts][blog].
@@ -22,33 +24,17 @@ After installing this package, make sure you have the following fonts installed:
* [FontAwesome][FA]
* [Fira][fira] (only needed when using XeLaTeX/LuaLaTeX)
-The following packages need to be installed on your system. They are all available on CTAN:
-`kvoptions`,
-`ifxetex`,
-`ifluatex`,
-`xparse`,
-`calc`,
-`xcolor`,
-`tabularx`,
-`hyperref`,
-`url`,
-`parskip`,
-`xstring`,
-`xkeyval`,
-`tikz`,
-`graphicx`,
-`fontspec` (XeLaTeX and LuaLaTeX only) and
-`fontawesome`.
+The required packages are all available on CTAN. `support/install_texlive.sh` list all of them.
## Documentation
-The class documentation can be found on [CTAN](http://mirrors.ctan.org/macros/latex/contrib/limecv/limecv.pdf).
+The class documentation can be found on [CTAN](http://ctan.org/tex-archive/macros/latex/contrib/limecv/limecv.pdf).
-Alternatively, the documentation can also be created by running `pdflatex limecv.dtx`.
+Alternatively, the documentation can also be created by running `xelatex limecv.dtx`.
## Examples
-To compile the examples in `/examples/`, install the package from CTAN or compile from source by running: `pdflatex limecv.ins` and copy the resulting `limecv.cls` file to the `/examples/` folder.
+To compile the examples in `/examples/`, install the package from CTAN or compile from source by running: `xelatex limecv.ins` and copy the resulting `limecv.cls` file to the `/examples/` folder.
## Licence
@@ -56,7 +42,7 @@ LPPL v1.3c See LICENSE file.
Default profile picture courtesy of Twitter.
-© 2017 Olivier Pieters
+© 2017 - 2020 Olivier Pieters
[blog]: https://olivierpieters.be/blog/archive/tag/limecv
[FA]: http://fontawesome.io
diff --git a/macros/latex/contrib/limecv/examples/mwe-latex.pdf b/macros/latex/contrib/limecv/examples/mwe-latex.pdf
index 9f80f45414..5c713461d1 100644
--- a/macros/latex/contrib/limecv/examples/mwe-latex.pdf
+++ b/macros/latex/contrib/limecv/examples/mwe-latex.pdf
Binary files differ
diff --git a/macros/latex/contrib/limecv/examples/mwe-lualatex.pdf b/macros/latex/contrib/limecv/examples/mwe-lualatex.pdf
index 28d661bf7e..2c45a52ba2 100644
--- a/macros/latex/contrib/limecv/examples/mwe-lualatex.pdf
+++ b/macros/latex/contrib/limecv/examples/mwe-lualatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/limecv/examples/mwe-xelatex.pdf b/macros/latex/contrib/limecv/examples/mwe-xelatex.pdf
index 2d339ef227..9f8a7415ea 100644
--- a/macros/latex/contrib/limecv/examples/mwe-xelatex.pdf
+++ b/macros/latex/contrib/limecv/examples/mwe-xelatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/limecv/examples/mwe-xelatex.tex b/macros/latex/contrib/limecv/examples/mwe-xelatex.tex
index e390aecfd0..fcc52ec766 100644
--- a/macros/latex/contrib/limecv/examples/mwe-xelatex.tex
+++ b/macros/latex/contrib/limecv/examples/mwe-xelatex.tex
@@ -34,6 +34,7 @@
\begin{document}
+\cvSetLanguage{german}
% Design of side bar.
\begin{cvSidebar}
diff --git a/macros/latex/contrib/limecv/limecv.dtx b/macros/latex/contrib/limecv/limecv.dtx
index b99d554e15..ade6d1febc 100644
--- a/macros/latex/contrib/limecv/limecv.dtx
+++ b/macros/latex/contrib/limecv/limecv.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017 by Olivier Pieters - me (at) olivierpieters (dot) be
+% Copyright (C) 2017 - 2020 by Olivier Pieters
% --------------------------------------------------------------------------
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,7 @@
% The Current Maintainer of this work is Olivier Pieters.
%
% This work consists of the files limecv.dtx and limecv.ins
-% and the derived filebase limecv.sty.
+% and the derived filebase limecv.cls.
%
% \fi
%
@@ -26,7 +26,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{limecv}
%<*class>
- [2017/09/12 v0.1.3 limecv Document class for CVs.]
+ [2020/02/08 v0.1.7 limecv Document class for CVs.]
%</class>
%
%<*driver>
@@ -36,6 +36,7 @@
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xparse}
+\usepackage[BoldFont,SlantFont]{xeCJK}
\NewDocumentCommand{\cvRequirement}{m}{\textbf{#1}}
@@ -68,7 +69,7 @@
%</driver>
% \fi
%
-% \CheckSum{1525}
+% \CheckSum{1630}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -89,8 +90,13 @@
%
% \changes{v0.1}{2017/09/12}{Initial version.}
% \changes{v0.1.1}{2017/09/13}{Bug fixes and improved documentation.}
-% \changes{v0.1.2}{2017/11/25}{Add internationalisation support. Support cover letters spanning multiple pages.}
+% \changes{v0.1.2}{2017/11/25}{Add internationalisation support. Support cover %
+% letters spanning multiple pages.}
% \changes{v0.1.3}{2017/09/25}{Fix checksum issue.}
+% \changes{v0.1.4}{2018/05/21}{Added support for Chinese.}
+% \changes{v0.1.5}{2018/06/05}{Custom contact fields.}
+% \changes{v0.1.6}{2018/06/17}{Added support for French.}
+% \changes{v0.1.7}{2020/02/08}{Added support for Italian.}
%
% \DoNotIndex{\NewDocumentCommand,\NewDocumentEnvironment}
%
@@ -144,35 +150,40 @@
% \section{Requirements}
%
% It is advised to use the \cvRequirement{XeLaTeX} engine. However, there is
-% also support for \cvRequirement{LaTeX} and \cvRequirement{LuaLaTeX}. In these
-% cases, fonts might be different than intended and side bearings will not be
-% corrected, since only the XeLaTeX engine has access to these. In the subsequent
-% sections, it will always be assumed that the XeLaTeX compiler is used (unless
-% noted otherwise).
+% also support for \cvRequirement{LaTeX} and \cvRequirement{LuaLaTeX}. In
+% these cases, fonts might be different than intended and side bearings will
+% not be corrected, since only the XeLaTeX engine has access to these. In the
+% subsequent sections, it will always be assumed that the XeLaTeX compiler is
+% used (unless noted otherwise).
%
% Any font can be used, though by default the \cvRequirement{Fira}
-% \footnote{\url{https://github.com/mozilla/Fira}} font is used. This should be
-% installed and accessible by the typesetting system. If another font is desired,
-% it can be overwritten using the |sansfont| document class options and
-% |\cvMainFont| command. The mono spaced font can be changed by means of the
-% |monofont| class option.
+% \footnote{\url{https://github.com/mozilla/Fira}} font is used. This should
+% be installed and accessible by the typesetting system. If another font is
+% desired, it can be overwritten using the |sansfont| document class options
+% and |\cvMainFont| command. The mono spaced font can be changed by means of
+% the |monofont| class option.
%
-% \cvRequirement{FontAwesome}\footnote{\url{http://fontawesome.io}} is the icon
-% font used. This font should also be available and cannot be replaced by another
-% icon font. Most modern TeX distributions ship with this font since they provide
-% the |fontawesome| package.
+% \cvRequirement{FontAwesome}\footnote{\url{http://fontawesome.io}} is the
+% icon font used. This font should also be available and cannot be replaced by
+% another icon font. Most modern TeX distributions ship with this font since
+% they provide the |fontawesome| package.
%
% \section{General Macros and Document Class Options}
%
-% \subsection{Internationalisation}
-% \DescribeMacro{\cvSetLanguage} Currently, there is only internationalisation support for English and Dutch. The default language is English and can be modified using the |\cvSetLanguage| macro. Possible arguments are: |english| and |dutch|. If you want to use a different language, you need to modify the keys that hold the different section titles. These can be in the source code. The following snippet illustrates how this can be done for French:
+% \DescribeMacro{\cvSetLanguage} The default language is English and can
+% be modified using the |\cvSetLanguage| macro. Possible arguments are:
+% |chinese|, |dutch|, |english|, |french|, |german|, |italian|.
+% If your language is not supported or you want to override a word in any
+% supported language, you can modify the keys that hold the different
+% section titles. These can be in the source code. The following snippet
+% illustrates how this can be done for French:
%
% \iffalse
%<*example>
% \fi
\begin{lstlisting}
\pgfkeys{/@cv/names/education = Formations}
-\pgfkeys{/@cv/names/skills = Compétences}
+\pgfkeys{/@cv/names/skills = Comp\'etences}
\end{lstlisting}
% \iffalse
%</example>
@@ -182,23 +193,25 @@
% \section{Sidebar}
%
% The sidebar should contain personal information such as your name, job title
-% (or industry or similar), contact information, small bio, interests and language
-% skills. Special environments and commands have been defined for each of these
-% sections and will be described below.
+% (or industry or similar), contact information, small bio, interests and
+% language skills. Special environments and commands have been defined for
+% each of these sections and will be described below.
%
-% Everything that should be inside the sidebar should be placed in the |cvSidebar|
-% environment. This environment is placed on the left side of the page by default.
-% If it should be typeset on the right side, use the starred version (|cvSidebar*|)
+% Everything that should be inside the sidebar should be placed in the
+% |cvSidebar| environment. This environment is placed on the left side of the
+% page by default. If it should be typeset on the right side, use the starred
+% version (|cvSidebar*|)
%
% The following environments are available inside the sidebar environment:
% |cvProfile|, |cvContact|, |cvLanguages|, |cvInterests| and |cvProjects|.
%
% \DescribeMacro{\cvID}
-% This command typesets a picture (in a circle) with name and position underneath it.
-% The argument order is: |\cvID{|\meta{first name}|}{|\meta{last name}|}{|
-% \meta{picture location}|}{|\meta{job position}|}|. Empty fields are allowed for
-% the third and fourth arguments. No picture and no job position will then be
-% typeset. Example code:
+% This command typesets a picture (in a circle) with name and position
+% underneath it. The argument order is: |\cvID{|\meta{first name}|}{|%
+% \meta{last name}|}{| \meta{picture location}|}{|\meta{job position}|}|.
+% Empty fields are allowed for the third and fourth arguments. No picture and
+% no job position will then be typeset. Example code:
+%
% \iffalse
%<*example>
% \fi
@@ -210,8 +223,8 @@
% \fi
%
% \DescribeMacro{cvProfile}
-% This environment contains a brief profile description or biography. No additional
-% arguments are allowed. Example code:
+% This environment contains a brief profile description or biography. No
+% additional arguments are allowed. Example code:
% \iffalse
%<*example>
% \fi
@@ -225,50 +238,61 @@
% \fi
%
% \DescribeMacro{cvContact}
-% All the contact information goes here. Inside this environment, the following
-% commands are available:
+% All the contact information goes here. Inside this environment, the
+% following commands are available:
% \begin{itemize}
-% \item \DescribeMacro{\cvContactAddress} |\cvContactAddress{|\meta{address}|}|
-% typesets an address. How this address should be typeset exactly, is left to the
-% user. The use of line breaks (|\\|) is allowed;
+% \item \DescribeMacro{\cvContactAddress} |\cvContactAddress{|
+% \meta{address}|}| typesets an address. How this address should be
+% typeset exactly, is left to the user. The use of line breaks (|\\|) is
+% allowed;
% \item \DescribeMacro{\cvContactEmail}
-% |\cvContactEmail{|\meta{link}|}{|\meta{email address}|}| typesets an email
-% address. The link variable should be a something like |mailto:john@doe.tld|.
-% Clicking on the email address will then automatically open the default email
-% client with this address as recipient. If the link argument is left empty, no
+% |\cvContactEmail{|\meta{link}|}{|\meta{email address}|}| typesets an
+% email address. The link variable should be a something like
+% |mailto:john@doe.tld|. Clicking on the email address will then
+% automatically open the default email client with this address as
+% recipient. If the link argument is left empty, no
% link will be created.
% \item \DescribeMacro{\cvContactPhone}
-% |\cvContactPhone{|\meta{mobile phone number}|}| typesets a mobile phone number.
+% |\cvContactPhone{|\meta{mobile phone number}|}| typesets a mobile phone
+% number.
% \item \DescribeMacro{\cvContactWebsite}
-% |\cvContactWebsite{|\meta{link}|}{|\meta{website URL}|}| typesets a website. The
-% link variable should be a something like |https://johndoe.tld|. Clicking on the
-% website will then automatically open the default web browser. If the link argument
-% is left empty, no action will be performed upon clicking on the website.
+% |\cvContactWebsite{|\meta{link}|}{|\meta{website URL}|}| typesets a
+% website. The link variable should be a something like
+% |https://johndoe.tld|. Clicking on the website will then automatically
+% open the default web browser. If the link argument is left empty, no
+% action will be performed upon clicking on the website.
% \item \DescribeMacro{\cvContactGithub}
-% |\cvContactGithub{|\meta{link}|}{|\meta{username}|}| typesets a GitHub profile.
-% The link variable should be a valid link to the GitHub profile (for example
-% |https://github.com/johndoe|). Clicking on the username will then automatically
-% open the default web browser. If the link argument is left empty, no action will
-% be performed upon clicking on the website.
+% |\cvContactGithub{|\meta{link}|}{|\meta{username}|}| typesets a GitHub
+% profile. The link variable should be a valid link to the GitHub profile
+% (for example |https://github.com/johndoe|). Clicking on the username
+% will then automatically open the default web browser. If the link
+% argument is left empty, no action will be performed upon clicking on the
+% website.
+% \item \DescribeMacro{\cvContactGitlab}
+% |\cvContactGitlab{|\meta{link}|}{|\meta{username}|}| typesets a GitLab
+% profile. Same considerations apply as in the |\cvContactGithub| command.
% \item \DescribeMacro{\cvContactLinkedin}
-% |\cvContactLinkedin{|\meta{link}|}{|\meta{username}|}| typesets a LinkedIn profile.
-% The link variable should be a link to your LinkedIn profile homepage (for example
-% |https://www.linkedin.com/in/johndoe/|). Clicking on the username will then
-% automatically open the default web browser. If the link argument is left empty,
-% no action will be performed upon clicking on the website.
+% |\cvContactLinkedin{|\meta{link}|}{|\meta{username}|}| typesets a
+% LinkedIn profile. The link variable should be a link to your LinkedIn
+% profile homepage (for example |https://www.linkedin.com/in/johndoe/|).
+% Clicking on the username will then automatically open the default web
+% browser. If the link argument is left empty, no action will be performed
+% upon clicking on the website.
% \item \DescribeMacro{\cvContactTwitter}
-% |\cvContactTwitter{|\meta{link}|}{|\meta{username}|}| typesets a Twitter profile.
-% The link variable should direct to your Twitter profile. An example link looks as
-% follows: |https://twitter.com/johndoe|. Clicking on the username will then
-% automatically open the default web browser. If the link argument is left empty,
-% no action will be performed upon clicking on the website.this address as recipient.
-% If the link argument is left empty, no link will be created.
+% |\cvContactTwitter{|\meta{link}|}{|\meta{username}|}| typesets a Twitter
+% profile. The link variable should direct to your Twitter profile. An
+% example link looks as follows: |https://twitter.com/johndoe|. Clicking
+% on the username will then automatically open the default web browser. If
+% the link argument is left empty, no action will be performed upon
+% clicking on the website. If the link argument is left empty, no link
+% will be created.
% \item \DescribeMacro{\cvContactKeybase}
-% |\cvContactKeybase{|\meta{link}|}{|\meta{fingerprint}|}| typesets a Keybase
-% fingerprint (and account). The link variable should be a link to the KeyBase
-% profile (e.g.\ |https://keybase.io/johndoe|). Clicking on the fingerprint will then
-% automatically open the default web browser. If the link argument is left empty, no
-% action will be performed upon clicking on the website.
+% |\cvContactKeybase{|\meta{link}|}{|\meta{fingerprint}|}| typesets a
+% Keybase fingerprint (and account). The link variable should be a link to
+% the KeyBase profile (e.g.\ |https://keybase.io/johndoe|). Clicking on
+% the fingerprint will then automatically open the default web browser. If
+% the link argument is left empty, no action will be performed upon
+% clicking on the website.
% \end{itemize}
%
% A full example:
@@ -291,16 +315,17 @@
%</example>
% \fi
%
-% If you wish to add contact information that is not available by default, you can extend
-% the command using two internal commands: |\cv@ContactTemplateLink| and
-% |\cv@ContactTemplate|. See the source code for usage instructions.
+% If you wish to add contact information that is not available by default, you
+% can extend the command using two internal commands:
+% |\cv@ContactTemplateLink| and |\cv@ContactTemplate|. See the source code for
+% usage instructions.
%
% \DescribeMacro{cvLanguages}
% This environment is used to showcase language skills. The
-% \DescribeMacro{\cvLanguage} |\cvLanguage{|\meta{language}|}{|\meta{skill level}|}|
-% should be used inside this environment. The skill level is a real value with a maximum
-% value of 5. If higher values are used, the result will not be typeset properly. An
-% example is included below.
+% \DescribeMacro{\cvLanguage} |\cvLanguage{|\meta{language}|}{|
+% \meta{skill level}|}| should be used inside this environment. The skill
+% level is a real value with a maximum value of 5. If higher values are used,
+% the result will not be typeset properly. An example is included below.
%
% \iffalse
%<*example>
@@ -317,16 +342,17 @@
% \fi
%
% \DescribeMacro{cvInterests}
-% Typeset interests (can be both professional and personal) using |cvInterests|.
-% By default it just typesets a list of items in the long format
-% (|long|). The short format can be activated by passing the |short| option to the
-% environment. Inside this environment, three commands can be used: |\cvInterestsPersonal|,
-% |\cvInterestsProfessional| and |\cvInterest|. \DescribeMacro{\cvInterestsPersonal}
-% |\cvInterestsPersonal| and \DescribeMacro{\cvInterestsProfessional}
-% |\cvInterestsProfessional| add optional sections inside this environment to differentiate
-% between personal and professional interests respectively. Both macros have no options nor
-% arguments. The \DescribeMacro{\cvInterest} |\cvInterest{|\meta{icon}|}{|\meta{interest}|}|
-% command takes an icon and interest as arguments.
+% Typeset interests (can be both professional and personal) using
+% |cvInterests|. By default it just typesets a list of items in the long
+% format (|long|). The short format can be activated by passing the |short|
+% option to the environment. Inside this environment, three commands can be
+% used: |\cvInterestsPersonal|, |\cvInterestsProfessional| and |\cvInterest|.
+% \DescribeMacro{\cvInterestsPersonal} |\cvInterestsPersonal| and
+% \DescribeMacro{\cvInterestsProfessional} |\cvInterestsProfessional| add
+% optional sections inside this environment to differentiate between personal
+% and professional interests respectively. Both macros have no options nor
+% arguments. The \DescribeMacro{\cvInterest} |\cvInterest{|\meta{icon}|}{|
+% \meta{interest}|}| command takes an icon and interest as arguments.
%
% Examples that illustrate the different options are depicted below:
%
@@ -366,13 +392,14 @@
%</example>
% \fi
%
-% \DescribeMacro{cvProjects} If you have interesting (side) projects that are relevant for
-% your CV, you can list them using the |cvProjects| environment. Inside this environment
-% you can use the \DescribeMacro{\cvProject}
-% |\cvProject[|\meta{options}|]{|\meta{name}|}{|\meta{description}|}| macro to list all
-% your projects. The only options currently allowed in \meta{options} are an image
-% (using |image|) and a URL (using |link|). This image must be an external file and the user
-% must handle its size through |width| or |height|. Example usage:
+% \DescribeMacro{cvProjects} If you have interesting (side) projects that are
+% relevant for your CV, you can list them using the |cvProjects| environment.
+% Inside this environment you can use the \DescribeMacro{\cvProject}
+% |\cvProject[|\meta{options}|]{|\meta{name}|}{|\meta{description}|}|
+% macro to list all your projects. The only options currently allowed in
+% \meta{options} are an image (using |image|) and a URL (using |link|). This
+% image must be an external file and the user must handle its size through
+% |width| or |height|. Example usage:
%
% \iffalse
%<*example>
@@ -387,40 +414,44 @@
%</example>
% \fi
%
-% It is currently not possible to extend the sidebar with additional environments. To add
-% your own, look at the source code and create your own \LaTeX-style hack.
+% It is currently not possible to extend the sidebar with additional
+% environments. To add your own, look at the source code and create your own
+% \LaTeX-style hack.
%
% \section{Main Content}
%
-% The main content section includes details on your education, experience, skills, references
-% and more. Several environments have been designed to suit specific needs. These will be
-% discussed next.
+% The main content section includes details on your education, experience,
+% skills, references and more. Several environments have been designed to suit
+% specific needs. These will be discussed next.
%
% \DescribeMacro{cvMainContent}
-% Everything in the main content section should be encapsulated in the |cvMainContent|
-% environment. This environment defines four new environments: |cvEducation|,
-% |cvExperience|, |cvSkills| and |cvReferences|. These four environments are self
-% explanatory in terms of functionality. We will detail each of these
-% environments.
+% Everything in the main content section should be encapsulated in the
+% |cvMainContent| environment. This environment defines four new environments:
+% |cvEducation|, |cvExperience|, |cvSkills| and |cvReferences|. These four
+% environments are self explanatory in terms of functionality. We will detail
+% each of these environments.
%
% Note that |cvMainContent| also has a starred variant (|cvMainContent*|). The
-% function is similar to |cvSidebar*|, in the sense that it places everything to the
-% left instead of the default right location.
+% function is similar to |cvSidebar*|, in the sense that it places everything
+% to the left instead of the default right location.
%
% \DescribeMacro{cvEducation}
-% The education environment creates a timeline styled list of your education. Individual
-% education items should be listed by means of the |\cvItem{|\meta{details}|}| macro which
-% is available within this environment. Instead of forcing a specific layout structure, it
-% was preferred to leave the actual mark-up to the end user. \emph{All} information
-% concerning a single education should be passed to this single argument. However, the user
-% is always welcome to create his own styling macro that takes multiple arguments. This is
-% illustrated by the examples below.
+% The education environment creates a timeline styled list of your education.
+% Individual education items should be listed by means of the |\cvItem{|
+% \meta{details}|}| macro which is available within this environment. Instead
+% of forcing a specific layout structure, it was preferred to leave the actual
+% mark-up to the end user. \emph{All} information concerning a single
+% education should be passed to this single argument. However, the user is
+% always welcome to create his own styling macro that takes multiple
+% arguments. This is illustrated by the examples below.
%
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={\lstinline!cvEducation! \emph{without} special user mark-up
- command.}]
+ \begin{lstlisting}[%
+ caption={\lstinline!cvEducation! \emph{without} special user mark-up
+ command.}
+ ]
\begin{cvEducation}
\cvItem{Evening class: Chinese\\
Some School, City. September 2015 -- June 2016\\
@@ -430,9 +461,9 @@
General training in the basic sciences and the molecular life science.}
\cvItem{Master of Science in Biochemistry and Biotechnology\\
University, City. September 2012 -- June 2015\\
- Acquisition of insight into and knowledge of possibilities for application in the area
- of biochemistry and biotechnology, specific with applications in biomedical application
- and due problem-solving reasoning skills.}
+ Acquisition of insight into and knowledge of possibilities for application in
+ the area of biochemistry and biotechnology, specific with applications in
+ biomedical application and due problem-solving reasoning skills.}
\end{cvEducation}
\end{lstlisting}
% \iffalse
@@ -442,8 +473,10 @@
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={\lstinline!cvEducation! \emph{with} special user mark-up
- command.}]
+ \begin{lstlisting}[%
+ caption={\lstinline!cvEducation! \emph{with} special user mark-up
+ command.}
+ ]
% in preamble:
\newfontfamily\firaMedium{Fira Sans Medium}
\NewDocumentCommand{\cvEducation}{mmm}{{\firaMedium #1}\\ #2\\ \emph{#3}}
@@ -454,12 +487,14 @@
{Achieved A2 language skill in Chinese (Mandarin).}}
\cvItem{\cvEducation{Bachelor of Science in Biochemistry and Biotechnology}%
{University, City. September 2009 -- June 2012}%
- {General training in the basic sciences and the molecular life science.}}
+ {General training in the basic sciences and the molecular life
+ science.}}
\cvItem{\cvEducation{Master of Science in Biochemistry and Biotechnology}%
{University, City. September 2012 -- June 2015}%
- {Acquisition of insight into and knowledge of possibilities for application
- in the area of biochemistry and biotechnology, specific with applications
- in biomedical application and due problem-solving reasoning skills.}}
+ {Acquisition of insight into and knowledge of possibilities for
+ application in the area of biochemistry and biotechnology, specific
+ with applications in biomedical application and due problem-solving
+ reasoning skills.}}
\end{cvEducation}
\end{lstlisting}
% \iffalse
@@ -467,33 +502,38 @@
% \fi
%
% \DescribeMacro{cvExperience}
-% |cvExperience| works very similar to |cvEducation|. If follows the exact same structure
-% and has the same design philosophy where you should use |\cvItem| inside this environment
-% to typeset the individual items in a timeline style. \Cref{cvExperience} illustrates this with an example.
+% |cvExperience| works very similar to |cvEducation|. If follows the exact
+% same structure and has the same design philosophy where you should use
+% |\cvItem| inside this environment to typeset the individual items in a
+% timeline style. \Cref{cvExperience} illustrates this with an example.
%
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={\lstinline!cvExperience! code example.},label=cvExperience]
+ \begin{lstlisting}[%
+ caption={\lstinline!cvExperience! code example.},
+ label=cvExperience
+ ]
\begin{cvExperience}
\cvItem{Student Job\\
\textsc{\selectfont Company X}, Location X. Summer 2010\\
- Integer tincidunt dapibus consectetur. Nullam tristique aliquam luctus. Sed ut ante velit.
- Nulla pharetra maximus lacus at elementum. Suspendisse sodales consectetur metus, sit amet
- ultricies ipsum ultrices ut.};
+ Integer tincidunt dapibus consectetur. Nullam tristique aliquam luctus. Sed
+ ut ante velit. Nulla pharetra maximus lacus at elementum. Suspendisse
+ sodales consectetur metus, sit amet ultricies ipsum ultrices ut.};
\cvItem{Internship\\
\textsc{Company Y}, Location Y. June 2012 -- August 2012\\
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dictum cursus sapien, id
- eleifend mi pellentesque id. Etiam lobortis eu odio a sodales. Phasellus ut dolor feugiat,
- lacinia lectus in, blandit metus. Fusce lacinia dolor et metus gravida pulvinar sit amet
- et ex.};
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dictum cursus
+ sapien, id eleifend mi pellentesque id. Etiam lobortis eu odio a sodales.
+ Phasellus ut dolor feugiat, lacinia lectus in, blandit metus. Fusce lacinia
+ dolor et metus gravida pulvinar sit amet et ex.};
\cvItem{Internship\\
\textsc{Company Z}, Location Z. August 2014 -- September 2014\\
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dictum cursus sapien, id
- eleifend mi pellentesque id. Etiam lobortis eu odio a sodales. Phasellus ut dolor feugiat,
- lacinia lectus in, blandit metus. Fusce lacinia dolor et metus gravida pulvinar sit amet
- et ex. Suspendisse vestibulum, leo malesuada molestie maximus, sem risus ornare elit, vitae
- sodales felis elit in ipsum.};
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dictum cursus
+ sapien, id eleifend mi pellentesque id. Etiam lobortis eu odio a sodales.
+ Phasellus ut dolor feugiat, lacinia lectus in, blandit metus. Fusce lacinia
+ dolor et metus gravida pulvinar sit amet et ex. Suspendisse vestibulum, leo
+ malesuada molestie maximus, sem risus ornare elit, vitae sodales felis
+ elit in ipsum.};
\end{cvExperience}
\end{lstlisting}
% \iffalse
@@ -501,18 +541,23 @@
% \fi
%
% \DescribeMacro{cvSkills}
-% The skills section is contained within the |cvSkills| environment. This environment typesets
-% your skills on a 5-level (discrete) scale. These are divided into two columns. To that end,
-% two macros are available: |cvSkillOne| and |cvSkillTwo|. \DescribeMacro{cvSkillTwo}
-% |cvSkillTwo{|\meta{skill level}|}{|\meta{skill}|}{|\meta{skill level}|}{|\meta{skill}|}|
-% typesets a row of two skills. If you have an odd number of items, \DescribeMacro{cvSkillOne}
-% |cvSkillOne{|\meta{skill level}|}{|\meta{skill}|}| should be used. An example of a skill-list
-% can be found in \cref{cvSkills}.
+% The skills section is contained within the |cvSkills| environment. This
+% environment typesets your skills on a 5-level (discrete) scale. These are
+% divided into two columns. To that end, two macros are available:
+% |cvSkillOne| and |cvSkillTwo|. \DescribeMacro{cvSkillTwo} |cvSkillTwo{|
+% \meta{skill level}|}{|\meta{skill}|}{|\meta{skill level}|}{|\meta{skill}|}|
+% typesets a row of two skills. If you have an odd number of items,
+% \DescribeMacro{cvSkillOne} |cvSkillOne{|\meta{skill level}|}{|
+% \meta{skill}|}| should be used. An example of a skill-list can be found in
+% \cref{cvSkills}.
%
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={Illustration of the \lstinline!cvSkills! environment.},label=cvSkills]
+ \begin{lstlisting}[%
+ caption={Illustration of the \lstinline!cvSkills! environment.},
+ label=cvSkills
+ ]
\begin{cvSkills}
\cvSkillTwo{5}{MATLAB}{5}{\LaTeX}
\cvSkillTwo{4}{Python}{4}{VHDL}
@@ -525,24 +570,28 @@
% \fi
%
% \DescribeMacro{cvReferences}
-% The final section is intended to list all your references. These go inside the |cvReferences|
-% environment. The enumeration of the different items should be done using the
-% \DescribeMacro{\cvAddReference} |\cvAddReference{|\meta{information}|}| macro. The following
-% keys are available: |name|, |company|, |job|, |address line 1|, |address line 2|,
-% |address line 3|, |mobile phone|, |work phone| and |email|. These are all optional arguments
-% and will be typeset consistently between the two references per row. When adding two references,
-% the left one should be specified first using |\cvAddReference*|. This will store the values and
-% typeset them when adding the second reference through |\cvAddReference|. Note that
-% |\cvAddReference| should be used if only one reference needs to be typese. \Cref{cvReferences}
+% The final section is intended to list all your references. These go inside
+% the |cvReferences| environment. The enumeration of the different items
+% should be done using the \DescribeMacro{\cvAddReference} |\cvAddReference{|
+% \meta{information}|}| macro. The following keys are available: |name|,
+% |company|, |job|, |address line 1|, |address line 2|, |address line 3|,
+% |mobile phone|, |work phone| and |email|. These are all optional arguments
+% and will be typeset consistently between the two references per row. When
+% adding two references, the left one should be specified first using
+% |\cvAddReference*|. This will store the values and typeset them when adding
+% the second reference through |\cvAddReference|. Note that |\cvAddReference|
+% should be used if only one reference needs to be typese. \Cref{cvReferences}
% illustrates the usage of this environment.
%
-% \emph{Important remark}: the comment after the usage of |\cvAddReference| is required!
-% Otherwise, spacing will not be as intended.
+% \emph{Important remark}: the comment after the usage of |\cvAddReference| is
+% required! Otherwise, spacing will not be as intended.
%
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={\lstinline!cvReferences! code example.},label=cvReferences]
+ \begin{lstlisting}[%
+ caption={\lstinline!cvReferences! code example.},
+ label=cvReferences]
\begin{cvReferences}
\cvAddReference{%
name=Jane Smith,
@@ -559,19 +608,21 @@
%
% \section{Cover Letter}
%
-% A final (optional) part of a CV is the cover letter. This is a fairly simple part to create
-% design wise, but probably the hardest to write in an actual CV.
+% A final (optional) part of a CV is the cover letter. This is a fairly simple
+% part to create design wise, but probably the hardest to write in an actual
+% CV.
%
% \DescribeMacro{cvCoverLetter}
-% The cover letter environment is |cvCoverLetter| and contains all the cover letter details.
-% It will automatically add a header with your name and position based on the information
-% filled in in |\cvID|.
+% The cover letter environment is |cvCoverLetter| and contains all the cover
+% letter details. It will automatically add a header with your name and
+% position based on the information filled in in |\cvID|.
%
% \DescribeMacro{\cvBeneficiary}
-% The |\cvBeneficiary{|\meta{options}|}| macro offers a convenience wrapper to typeset the
-% beneficiary. Possible options are |name|, |position|, |company|, |address line 1|,
-% |address line 2| and |address line 3|. The remainder of the cover letter design is up
-% to the user. An example design can be found in \cref{cvCoverLetter}.
+% The |\cvBeneficiary{|\meta{options}|}| macro offers a convenience wrapper to
+% typeset the beneficiary. Possible options are |name|, |position|, |company|,
+% |address line 1|, |address line 2| and |address line 3|. The remainder of
+% the cover letter design is up to the user. An example design can be found in
+% \cref{cvCoverLetter}.
%
% \DescribeMacro{\cvFullName}
% |\cvFullName| typeset the authors name based on the data provided in |cvID|.
@@ -579,7 +630,9 @@
% \iffalse
%<*example>
% \fi
- \begin{lstlisting}[caption={\lstinline!cvCoverLetter! code example.},label=cvCoverLetter]
+ \begin{lstlisting}[%
+ caption={\lstinline!cvCoverLetter! code example.},
+ label=cvCoverLetter]
\section{Cover Letter}
\begin{cvCoverLetter}
@@ -607,18 +660,19 @@ Dear Miss.\ Smith
%
% \section{Change Style and Layout}
%
-% To change the style, one can redefine the colours, lengths and TikZ styles used throughout
-% the document class.
+% To change the style, one can redefine the colours, lengths and TikZ styles
+% used throughout the document class.
%
% By default the following colours are defined:
% \begin{itemize}
-% \item |cvGreen| default dark green colour (hex value: {\color{cvGreen} |357F2D|})
-% \item |cvGreenLight| light green colour, for larger shapes and backgrounds (hex value:
-% {\color{cvGreenLight} |B8E4B3|})
+% \item |cvGreen| default dark green colour (hex value: {\color{cvGreen}
+% |357F2D|})
+% \item |cvGreenLight| light green colour, for larger shapes and backgrounds
+% (hex value: {\color{cvGreenLight} |B8E4B3|})
% \item |cvDark| default text colour (hex value: {\color{cvDark} |2F3142|})
% \item |cvRed| currently not used (hex value: {\color{cvRed} |7F2D35|})
-% \item |cvAccent| lighter grey shade for accented text (hex value: {\color{cvAccent}
-% |474A65|})
+% \item |cvAccent| lighter grey shade for accented text (hex value:
+% {\color{cvAccent} |474A65|})
% \end{itemize}
%
% To change these, use the code from \cref{cvColour} in the preamble:
@@ -633,8 +687,8 @@ Dear Miss.\ Smith
%</example>
% \fi
%
-% By overwriting the following styles, one can change the appearance of multiple TikZ nodes.
-% The following styles are available.
+% By overwriting the following styles, one can change the appearance of
+% multiple TikZ nodes. The following styles are available.
% \begin{itemize}
% \item |interesticon|
% \item |interesttext|
@@ -668,8 +722,8 @@ Dear Miss.\ Smith
%</example>
% \fi
-% Spacing used inside the document can also be modified by the user. The following
-% lengths have been defined:
+% Spacing used inside the document can also be modified by the user. The
+% following lengths have been defined:
% \begin{itemize}
% \item |\cvColSep| Distance between columns of |cvSkills|.
% Default value: |1cm|.
@@ -689,72 +743,82 @@ Dear Miss.\ Smith
% Default value: |0.3cm|.
% \item |\cvItemSep| Distance between |cvItem| entries.
% Default value: |0.4cm|.
-% \item |\cvTableSepWidth| Distance between two columns of |cvReferences| environment.
-% Default value: |0.3cm|.
-% \item |\cvCoverLetterHeight| Height of the coloured bar at the top of the cover letter.
-% Default value: |\cvSideWidth|.
-% \item |\cvCoverLetterWidth| Width of the cover letter text. This can be used to improve
-% to layout. Default value: |\cvMainWidth+3\cvMargin|.
+% \item |\cvTableSepWidth| Distance between two columns of |cvReferences|
+% environment. Default value: |0.3cm|.
+% \item |\cvCoverLetterHeight| Height of the coloured bar at the top of the
+% cover letter. Default value: |\cvSideWidth|.
+% \item |\cvCoverLetterWidth| Width of the cover letter text. This can be used
+% to improve the layout. Default value: |\cvMainWidth+3\cvMargin|.
% \item |\cvPictureWidth| Diameter of the profile picture.
% Default value: |4cm|.
-% \item |\cvProgressAreaWidth| Length of a progress bar for the languages section.
-% Default value: |5em|.
-% \item |\cvProgressAreaHeight| Height of a progress bar for the languages section.
-% Default value: |0.75em|.
+% \item |\cvProgressAreaWidth| Length of a progress bar for the languages
+% section. Default value: |5em|.
+% \item |\cvProgressAreaHeight| Height of a progress bar for the languages
+% section. Default value: |0.75em|.
% \item |\cvSectionSep| Distance between sections of the main content section.
% Default value: |0.6cm|.
% \item |\cvSectionSBSep| Distance between sections of the sidebar section.
% Default value: |4pt|.
% \item |\cvTitleLineWidth| Line width of horizontal line below section title.
% Default value: |2pt|.
-% \item |\cvTitleLineSpacing| Distance from bottom of the titles of the main content section to
-% the horizontal centre of line. Default value: |0.1cm|.
+% \item |\cvTitleLineSpacing| Distance from bottom of the titles of the main
+% content section to the horizontal centre of line. Default value: |0.1cm|.
% \item |\cv@projectSep| Internal length.
% Automatically set to |\cvItemSep|.
-% \item |\cvProjectDetailsSep| Internal spacing between details of a single project.
-% Default value: |0.2cm|.
-% \item |\cvInterestDetailsSep| Distance between items in case the |long| options is used for the
-% |cvInterests| environment. Default value: |4pt|.
-% \item |\cvContactItemSep| Distance between items in the |cvContact| environment.
-% Default value: |5pt|.
+% \item |\cvProjectDetailsSep| Internal spacing between details of a single
+% project. Default value: |0.2cm|.
+% \item |\cvInterestDetailsSep| Distance between items in case the |long|
+% options is used for the |cvInterests| environment. Default value: |4pt|.
+% \item |\cvContactItemSep| Distance between items in the |cvContact|
+% environment. Default value: |5pt|.
% \item |\cvCoverLetterLineWidth| Line width of line below cover letter name.
% Default value: |3pt|.
-% \item |\cvCoverLetterPositionSpacing| Distance between name and position in the cover letter.
-% Default value: |10pt|.
-% \item |\cvSBSectionLineWidth| Line width of left and right lines next to the titles of in the
-% sidebar. Default value: |1pt|.
-% \item |\cvCoverLetterLineSpacing| Distance between name and line below it in the cover letter.
-% Default value: |0pt|.
+% \item |\cvCoverLetterPositionSpacing| Distance between name and position in
+% the cover letter. Default value: |10pt|.
+% \item |\cvSBSectionLineWidth| Line width of left and right lines next to the
+% titles of in the sidebar. Default value: |1pt|.
+% \item |\cvCoverLetterLineSpacing| Distance between name and line below it in
+% the cover letter. Default value: |0pt|.
% \item |\cvIDNameSep| Distance between first and last name.
% Default value: |0.1cm|.
% \item |\cvPositionSep| Distance before and after the position.
% Default value: |0.5cm|.
% \item |\cvSkillSep| Distance between skills.
% Default value: |1ex|.
-% \item |\cvHeaderIconWidth| Automatically set, currently has no visible effect on document.
-% Default value: |0pt|.
+% \item |\cvHeaderIconWidth| Automatically set, currently has no visible
+% effect on document. Default value: |0pt|.
% \end{itemize}
%
-% The fonts can also be changed, either by using the |sansfont| and |monofont| class options, or
-% by using the default ways provided by \LaTeX, XeLaTeX and LuaLaTeX. Note that the |fontspec|
-% package is already loaded by the class, so you can directly use |\setmainfont| in the preamble
-% if you are using the XeLaTeX or LuaLaTeX engine.
+% The fonts can also be changed, either by using the |sansfont| and |monofont|
+% class options, or by using the default ways provided by \LaTeX, XeLaTeX and
+% LuaLaTeX. Note that the |fontspec| package is already loaded by the class, so
+% you can directly use |\setmainfont| in the preamble if you are using the
+% XeLaTeX or LuaLaTeX engine.
%
% \section{Example}
%
-% The source code of a typical CV document can be found in the examples folder.
-% \Cref{example-cv,example-cover-letter} depict the resulting PDF documents.
+% The source code of a typical CV document can be found in the examples
+% folder. \Cref{example-cv,example-cover-letter} depict the resulting PDF
+% documents.
%
% \begin{figure}[!ht]
-% \IfFileExists{./mwe-xelatex.pdf}{\includegraphics[width=\textwidth,page=1]%
-% {mwe-xelatex.pdf}}{No built examples found. Figure not included.}
+% \IfFileExists{./mwe-xelatex.pdf}{%
+% \includegraphics[
+% width=\textwidth,
+% page=1]%
+% {mwe-xelatex.pdf}}%
+% {No built examples found. Figure not included.}
% \caption{Example CV (scaled).}
% \label{example-cv}
% \end{figure}
%
% \begin{figure}[!ht]
-% \IfFileExists{./mwe-xelatex.pdf}{\includegraphics[width=\textwidth,page=2]%
-% {mwe-xelatex.pdf}}{No built examples found.}
+% \IfFileExists{./mwe-xelatex.pdf}{%
+% \includegraphics[
+% width=\textwidth,
+% page=2]%
+% {mwe-xelatex.pdf}}%
+% {No built examples found.}
% \caption{Example cover letter (scaled). Figure not included.}
% \label{example-cover-letter}
% \end{figure}
@@ -766,6 +830,8 @@ Dear Miss.\ Smith
% \iffalse
%<*class>
% \fi
+%
+% \subsection{Licence}
%
% limecv.cls
%
@@ -787,34 +853,58 @@ Dear Miss.\ Smith
% The Current Maintainer of this work is Olivier Pieters.
% Contact the maintainer at: me (at) olivierpieters (dot) be.
%
-%------------------------------------------------------
-%
-% Include minimal required packages
+% \subsection{Intro}
+% I have tried to create a logical structure for the source code such that
+% related commands are grouped into a signle section. However, this was not
+% always possible.
+%
+% \subsection{Package Info and Required Packages}
+% Before starting the actual implementation, we first load all required
+% packages and set their options.
%
-% process key-value class options
+% Process key-value class options using |kvoptions|:
% \begin{macrocode}
\RequirePackage{kvoptions}
% \end{macrocode}
-%------------------------------------------------------
%
-% Process options of this class.
+% Define and process class options. |print| is an (unimplemened) option that
+% should optimise the layout for printed CVs.
%
% \begin{macrocode}
\DeclareBoolOption[false]{print}
+% \end{macrocode}
+%
+% Since the package already attempts to load the |fontspec| package, it is no
+% longer possible to define a custom font path. This is again passible using
+% this class option. Other options can also be set this way. However, if
+% multiple arguments are desirale, use |\cvComma| to separate between them,
+% since the class cannot differentiate between its own options and those it
+% need to pass to |fontspec|.
+%
+% \begin{macrocode}
\newif\ifcv@fontPath
\cv@fontPathfalse
\DeclareStringOption{path}
\AddToKeyvalOption*{path}{\cv@fontPathtrue}
+% \end{macrocode}
+%
+% By default, Fira fonts are used. This can be modifed using |sansfont| and
+% |monofont|.
+%
+% \begin{macrocode}
\DeclareStringOption[Fira Sans]{sansfont}
\DeclareStringOption[Fira Mono]{monofont}
+% \end{macrocode}
+%
+% Process the options.
+%
+% \begin{macrocode}
\ProcessKeyvalOptions*
% \end{macrocode}
-%------------------------------------------------------
%
-% Process general class options
+% The article document class is used as a base template for this
+% class. Options are automatically passed to the article class via this way.
%
-% pass document options to article class, which forms
-% base of this document class
% \begin{macrocode}
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}%
@@ -822,54 +912,55 @@ Dear Miss.\ Smith
\ProcessOptions\relax
\LoadClass{article}
% \end{macrocode}
-%------------------------------------------------------
%
-% Include required packages
+% Include required packages. A short description is provided about the function
+% of each package.
%
-% check if XeTeX is used
+% Check if XeTeX is used.
% \begin{macrocode}
\RequirePackage{ifxetex}
% \end{macrocode}
-% check if LuaTeX is used
+% Check if LuaTeX is used.
% \begin{macrocode}
\RequirePackage{ifluatex}
% \end{macrocode}
-% Advanced command definitions
+% Advanced command definitions.
% \begin{macrocode}
\RequirePackage{xparse}
% \end{macrocode}
-% complex length calculations
+% Complex length calculations.
% \begin{macrocode}
\RequirePackage{calc}
% \end{macrocode}
-% colour options
+% Colour options.
% \begin{macrocode}
\RequirePackage{xcolor}
% \end{macrocode}
-% advanced table options
+% Advanced table options.
% \begin{macrocode}
\RequirePackage{tabularx}
% \end{macrocode}
-% links
+% Links.
% \begin{macrocode}
\RequirePackage{hyperref}
\RequirePackage{url}
% \end{macrocode}
-% remove paragraph indent
+% Remove paragraph indents.
% \begin{macrocode}
\RequirePackage{parskip}
% \end{macrocode}
-% string operations
+% String operations.
% \begin{macrocode}
\RequirePackage{xstring}
% \end{macrocode}
-% key-value parsing within document
+% Key-value parsing within document.
% \begin{macrocode}
\RequirePackage{xkeyval}
% \end{macrocode}
-%------------------------------------------------------
+%
+% \subsection{Colour Definitions}
%
-% Define colours
+% Define the custom colours used in this document.
%
% \begin{macrocode}
\definecolor{cvGreen}{HTML}{357F2D}
@@ -878,7 +969,8 @@ Dear Miss.\ Smith
\definecolor{cvDark}{HTML}{2F3142}
\definecolor{cvAccent}{HTML}{474A65}
% \end{macrocode}
-%------------------------------------------------------
+%
+% \subsection{New Column Types}
%
% Define new table column types with fixed width.
%
@@ -890,18 +982,23 @@ Dear Miss.\ Smith
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\%
\arraybackslash\hspace{0pt}}m{#1}}
% \end{macrocode}
-%------------------------------------------------------
%
-% Misc and helper commands
+% \subsection{Helper commands}
%
-% Add comma in a cvReference entry.
+% |\cvComma| escapes the parsing once and ca be useful to add a comma to the key
+% of a key-value structure.
+%
+% \begin{macro}{\cvComma}
% \begin{macrocode}
\NewDocumentCommand{\cvComma}{}{,}
% \end{macrocode}
-% Define check if argument is empty
-% argument order: |{argument}{if empty}{if not empty}|
+% \end{macro}
+%
+% \begin{macro}{\@IfNoValueOrEmptyTF}
+% |\@IfNoValueOrEmptyTF{argument}{if empty}{if not empty}|
+% checks if an argument is empty.
%
-% Based on: http://tex.stackexchange.com/questions/63223
+% Based on: \url{http://tex.stackexchange.com/questions/63223}.
%
% \begin{macrocode}
\ExplSyntaxOn
@@ -912,10 +1009,14 @@ Dear Miss.\ Smith
}
\ExplSyntaxOff
% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\ifnodedefined}
-% Check if node is defined.
-% Based on: https://tex.stackexchange.com/questions/37709
+%
+% Checks if node is defined.
+%
+% Based on: \url{https://tex.stackexchange.com/questions/37709}
+%
% \begin{macrocode}
\long\def\ifnodedefined#1#2#3{%
\@ifundefined{pgf@sh@ns@#1}{#3}{#2}%
@@ -923,23 +1024,42 @@ Dear Miss.\ Smith
% \end{macrocode}
% \end{macro}
%
-%------------------------------------------------------
+% \subsection{Global Font Colour}
%
-% Update global font colour
+% \begin{macro}{\globalcolor}
+% Update global font colour.
%
% \begin{macrocode}
\NewDocumentCommand{\globalcolor}{m}{%
\color{#1}\global\let\default@color\current@color
}
+% \end{macrocode}
+% \end{macro}
+%
+% Automatically set font colour.
+%
+% \begin{macrocode}
\AtBeginDocument{\globalcolor{cvDark}}
% \end{macrocode}
-%------------------------------------------------------
%
-% TikZ
+%
+% \subsection{TikZ Style Definitions}
+% TikZ is a very imporant package and forms the main reason this CV can have
+% the look that it does now.
%
% \begin{macrocode}
\RequirePackage{tikz}
+% \end{macrocode}
+%
+% Needed to load the cover letter image in the sidebar.
+
+% \begin{macrocode}
\RequirePackage{graphicx}
+% \end{macrocode}
+%
+% A lot of additional TikZ libraries are also needed:
+%
+% \begin{macrocode}
\usetikzlibrary{%
calc,
positioning,
@@ -947,6 +1067,14 @@ Dear Miss.\ Smith
arrows.meta,
backgrounds,
matrix}
+% \end{macrocode}
+%
+% Define all TikZ styles that are used throughout this document. All styles come
+% in pairs: one that the user can overwrite and one that is internally defined
+% and results into the default behaviour. Userdefined behaviour is always
+% included last, such that it can overwrite the default behaviour.
+%
+% \begin{macrocode}
\tikzset{
interesticon/.style = {},
interesttext/.style = {},
@@ -963,8 +1091,6 @@ Dear Miss.\ Smith
progressBar/.style={},
sectionTitle/.style={},
sectionEduText/.style={%
- eventdottext,
- anchor=north west
},
cv@interesticon/.style = {%
minimum width=\cvHeaderIconWidth,
@@ -1038,20 +1164,33 @@ Dear Miss.\ Smith
},
}
% \end{macrocode}
-%------------------------------------------------------
%
-% XeLaTeX/LuaLaTeX specific
+% \subsection{XeLaTeX/LuaLaTeX Specific Code}
+% The initial design features the Fira font and thus requires the |fontspec|
+% package. However, if the |pdflatex| compiler is used, it should still
+% compile. This is done in this part of the code. If needed, the relevant
+% packages are loaded and the options are set.
%
+% \begin{macro}{\cv@loadFonts}
% \begin{macrocode}
\NewDocumentCommand{\cv@loadFonts}{}{
\RequirePackage{fontspec}
\RequirePackage{fontawesome}
% \end{macrocode}
-% set fonts
+%
+% Load the fonts. By default Fira will be loaded, but this can be overwritten
+% by the user.
+%
% \begin{macrocode}
\setmainfont[Numbers={Monospaced}]{\limecv@sansfont}
\setsansfont{\limecv@sansfont}
\setmonofont{\limecv@monofont}
+% \end{macrocode}
+%
+% Sometimes fonts are not located in their default location, if this option is
+% passed, additional paths will be traversed.
+%
+% \begin{macrocode}
\ifcv@fontPath
\newfontfamily{\cv@FA}[Path=\limecv@path]%
{FontAwesome}
@@ -1059,20 +1198,42 @@ Dear Miss.\ Smith
\newfontfamily{\cv@FA}{FontAwesome}
\fi
% \end{macrocode}
-% define some missing icons
+%
+% The |fontawesome| package does not feature all of the latest icons available,
+% so we define some of the manually since they are relevant for this CV.
+%
+% \begin{macro}{\faAddressCard}
% \begin{macrocode}
\ProvideDocumentCommand{\faAddressCard}{}{{\cv@FA%
\symbol{"F2B9}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\faVcard}
+% \begin{macrocode}
\ProvideDocumentCommand{\faVcard}{}{{\cv@FA%
\symbol{"F2BB}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\faMicrochip}
+% \begin{macrocode}
\ProvideDocumentCommand{\faMicrochip}{}{{\cv@FA%
\symbol{"F2DB}}}
% \end{macrocode}
-% future possibility:
-% https://raw.githubusercontent.com/xdanaux/moderncv/
-% master/moderncviconsmarvosym.sty
+% \end{macro}
+%
+% In the future, the |fontawesome| dependency can be dropped if a manually coded
+% icon is included, such as those defined in monderncv. Example:
+% \url{https://raw.githubusercontent.com/xdanaux/moderncv/%
+% master/moderncviconsmarvosym.sty}
% \begin{macrocode}
}
+% \end{macrocode}
+% \end{macro}
+%
+% Execute the above defined command if relevant. In the case of |pdflatex|, the
+% default font is set to a sans serif font.
+%
+% \begin{macrocode}
\ifxetex
\cv@loadFonts
\else
@@ -1084,38 +1245,63 @@ Dear Miss.\ Smith
\fi
\fi
% \end{macrocode}
-%------------------------------------------------------
-%
-% XeLaTeX/LuaLaTeX specific
+%
+% If the XeLaTeX compiler is used and the font is compatible, it is possible to
+% remove the side bearing of certain characters. This is advantageous for
+% alignment of certain characters. However, in the case a non-compatible
+% compiler is used, these commands do not poerform anything.
%
-% Removes left/right side bearing of character
-%
-% Based on:
-% https://tex.stackexchange.com/questions/274479
-% https://tex.stackexchange.com/questions/34563
+% The code below is based on:
+% \url{https://tex.stackexchange.com/questions/274479} and
+% \url{https://tex.stackexchange.com/questions/34563}
%
% \begin{macrocode}
\ifxetex
+% \end{macrocode}
+% \begin{macro}{\kright}
+% \begin{macrocode}
\NewDocumentCommand{\kright}{m}{\leavevmode #1%
\kern-\XeTeXglyphbounds3 \the\XeTeXcharglyph`#1 }
+% \end{macro}
+% \begin{macro}{\kleft}
+% \begin{macrocode}
\NewDocumentCommand{\kleft}{m}{\leavevmode %
\kern-\XeTeXglyphbounds1 \the\XeTeXcharglyph`#1 #1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
\else
+% \end{macrocode}
+% \begin{macro}{\kright}
+% \begin{macrocode}
\NewDocumentCommand{\kright}{m}{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\kleft}
+% \begin{macrocode}
\NewDocumentCommand{\kleft}{m}{#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
\fi
% \end{macrocode}
+%
% Extracts n-th charcter from a string
% Argument order: string - character number
% \begin{macrocode}
\ExplSyntaxOn
\cs_generate_variant:Nn\tl_item:nn {f}
+% \end{macrocode}
+% \begin{macro}{\extract}
+% \begin{macrocode}
\DeclareExpandableDocumentCommand{\extract}{mm}{%
\tl_item:fn{#1}{#2}%
}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
\ExplSyntaxOff
% \end{macrocode}
-%------------------------------------------------------
%
% Page layout
%
@@ -1263,7 +1449,8 @@ Dear Miss.\ Smith
% \begin{macrocode}
\NewDocumentCommand{\cv@Title}{mm}{%
\ifnodedefined{cv@last item \the\value{cv@lastItem}}{%
- \setlength\cvHeaderIconWidth{\maxof{\cvHeaderIconWidth}{\widthof{\Large #2}}}%
+ \setlength\cvHeaderIconWidth{%
+ \maxof{\cvHeaderIconWidth}{\widthof{\Large #2}}}%
\protected@write\@auxout{}{\global\cvHeaderIconWidth=\the\cvHeaderIconWidth}
\node[%
below=\cvSectionSep of cv@last item %
@@ -1406,6 +1593,7 @@ Dear Miss.\ Smith
\pgfkeys{/@cv/names/experience = Experience}%
\pgfkeys{/@cv/names/references = References}%
\pgfkeys{/@cv/names/skills = Skills}%
+ \pgfkeys{/@cv/names/publications = Publications}%
}
% \end{macrocode}
%
@@ -1423,10 +1611,88 @@ Dear Miss.\ Smith
\pgfkeys{/@cv/names/experience = Werkervaring}%
\pgfkeys{/@cv/names/references = Referenties}%
\pgfkeys{/@cv/names/skills = Vaardigheden}%
+ \pgfkeys{/@cv/names/publications = Publicaties}%
+}
+% \end{macrocode}
+%
+%
+% Set all title names to Chinese (Mandarin):
+% \begin{macrocode}
+\NewDocumentCommand{\cv@setChinese}{}{
+ \pgfkeys{/@cv/names/profile = 关于我}%
+ \pgfkeys{/@cv/names/contact = 联系我}%
+ \pgfkeys{/@cv/names/languages = 语言能力}%
+ \pgfkeys{/@cv/names/interests = 兴趣爱好}%
+ \pgfkeys{/@cv/names/professional = Professional}%
+ \pgfkeys{/@cv/names/personal = Personal}%
+ \pgfkeys{/@cv/names/projects = 我的项目}%
+ \pgfkeys{/@cv/names/education = 教育背景}%
+ \pgfkeys{/@cv/names/experience = 工作经验}%
+ \pgfkeys{/@cv/names/references = References}%
+ \pgfkeys{/@cv/names/skills = IT技能}%
+ \pgfkeys{/@cv/names/publications = 出版作品}%
}
% \end{macrocode}
%
-% Set the actual language to English. This can be overwritten by the user in the preamble
+%
+% Set all title names to French:
+% \begin{macrocode}
+\NewDocumentCommand{\cv@setFrench}{}{
+ \pgfkeys{/@cv/names/profile = Profil}%
+ \pgfkeys{/@cv/names/contact = Contact}%
+ \pgfkeys{/@cv/names/languages = Langues}%
+ \pgfkeys{/@cv/names/interests = Centres d'int\'{e}r\^{e}t}%
+ \pgfkeys{/@cv/names/professional = Professionel}%
+ \pgfkeys{/@cv/names/personal = Personnel}%
+ \pgfkeys{/@cv/names/projects = Projets}%
+ \pgfkeys{/@cv/names/education = Education}%
+ \pgfkeys{/@cv/names/experience = Exp\'{e}riences}%
+ \pgfkeys{/@cv/names/references = R\'{e}f\'{e}rences}%
+ \pgfkeys{/@cv/names/skills = Comp\'{e}tences}%
+}
+% \end{macrocode}
+%
+%
+% Set all title names to German:
+% \begin{macrocode}
+\NewDocumentCommand{\cv@setGerman}{}{
+ \pgfkeys{/@cv/names/profile = Profil}%
+ \pgfkeys{/@cv/names/contact = Kontakt}%
+ \pgfkeys{/@cv/names/languages = Sprachen}%
+ \pgfkeys{/@cv/names/interests = Interessen}%
+ \pgfkeys{/@cv/names/professional = Beruflich}%
+ \pgfkeys{/@cv/names/personal = Persönlich}%
+ \pgfkeys{/@cv/names/projects = Projekte}%
+ \pgfkeys{/@cv/names/education = Ausbildung}%
+ \pgfkeys{/@cv/names/experience = Berufliche Erfahrung}%
+ \pgfkeys{/@cv/names/references = Referenzen}%
+ \pgfkeys{/@cv/names/skills = Kenntnisse}%
+ \pgfkeys{/@cv/names/publications = Veröffentlichungen}%
+}
+% \end{macrocode}
+%
+%
+% Set all title names to Italian:
+% \begin{macrocode}
+\NewDocumentCommand{\cv@setItalian}{}{
+ \pgfkeys{/@cv/names/profile = Profilo}%
+ \pgfkeys{/@cv/names/contact = Contatti}%
+ \pgfkeys{/@cv/names/languages = Lingue}%
+ \pgfkeys{/@cv/names/interests = Interessi}%
+ \pgfkeys{/@cv/names/professional = Professionali}%
+ \pgfkeys{/@cv/names/personal = Personali}%
+ \pgfkeys{/@cv/names/projects = Progetti}%
+ \pgfkeys{/@cv/names/education = Formazione}%
+ \pgfkeys{/@cv/names/experience = Esperienze lavorative}%
+ \pgfkeys{/@cv/names/references = Referenze}%
+ \pgfkeys{/@cv/names/skills = Competenze}%
+ \pgfkeys{/@cv/names/publications = Pubblicazioni}%
+}
+% \end{macrocode}
+%
+%
+% Set the actual language to English. This can be overwritten by the user in the
+% preamble
%
% Define the command to change the language
% \begin{macrocode}
@@ -1436,10 +1702,17 @@ Dear Miss.\ Smith
{
{dutch} {\cv@setDutch}
{english} {\cv@setEnglish}
+ {french} {\cv@setFrench}
+ {german} {\cv@setGerman}
+ {italian} {\cv@setItalian}
+ {chinese} {%
+ \usepackage[BoldFont,SlantFont]{xeCJK}%
+ \cv@setChinese%
+ }
}
{\ClassError{limecv}{Unknown option `#1' for cvLanguage %
- macro.}{Only `english' and `dutch' are valid options %
- for this macro.}}
+ macro.}{Only `english', `chinese`, `dutch`, `french`, `german` %
+ and `italian` are valid options for this macro.}}
}
\ExplSyntaxOff
\cvSetLanguage{english}
@@ -1581,6 +1854,26 @@ Dear Miss.\ Smith
% \end{macrocode}
%------------------------------------------------------
%
+% cvPublications environment
+%
+% \begin{macrocode}
+\NewDocumentEnvironment{cvPublications}{}{%
+\cv@Title{\pgfkeysvalueof{/@cv/names/publications}}{\faNewspaperO}
+% \end{macrocode}
+% insures uniqueness
+% \begin{macrocode}
+ \stepcounter{cv@itemPrev}
+ \stepcounter{cv@itemNext}
+ \cv@definecvItem
+}{%
+ \cv@EndSectionDraw
+ \stepcounter{cv@lastItem}
+ \draw (item \the\value{cv@itemPrev}.south west)
+ node (cv@last item \the\value{cv@lastItem}) {};
+}
+% \end{macrocode}
+%------------------------------------------------------
+%
% cvReferences environment
%
% \begin{macrocode}
@@ -1764,14 +2057,14 @@ Dear Miss.\ Smith
-0.5\cvTableSepWidth}@{\hskip \cvTableSepWidth}%
L{0.5\cvMainWidth-0.5\cvTimeDotSep%
-0.5\cvTableSepWidth}@{}}%
- \ifcv@refName \cv@refAName & \cv@refBName \fi %
- \ifcv@refCompany \\ \cv@refACompany & \cv@refBCompany \fi %
- \ifcv@refPosition \\ \cv@refAPosition & \cv@refBPosition \fi %
- \ifcv@refAddressLineA \\ \cv@refAAddressLineA & \cv@refBAddressLineA \fi %
- \ifcv@refAddressLineB \\ \cv@refAAddressLineB & \cv@refBAddressLineB \fi %
- \ifcv@refAddressLineC \\ \cv@refAAddressLineC & \cv@refBAddressLineC \fi %
- \ifcv@refWorkPhone \\ \cv@refAPhoneWork & \cv@refBPhoneWork \fi %
- \ifcv@refMobilePhone \\ \cv@refAMobilePhone & \cv@refBMobilePhone \fi %
+ \ifcv@refName \cv@refAName & \cv@refBName \fi %
+ \ifcv@refCompany \\ \cv@refACompany & \cv@refBCompany \fi %
+ \ifcv@refPosition \\ \cv@refAPosition & \cv@refBPosition \fi %
+ \ifcv@refAddressLineA \\ \cv@refAAddressLineA & \cv@refBAddressLineA \fi %
+ \ifcv@refAddressLineB \\ \cv@refAAddressLineB & \cv@refBAddressLineB \fi %
+ \ifcv@refAddressLineC \\ \cv@refAAddressLineC & \cv@refBAddressLineC \fi %
+ \ifcv@refWorkPhone \\ \cv@refAPhoneWork & \cv@refBPhoneWork \fi %
+ \ifcv@refMobilePhone \\ \cv@refAMobilePhone & \cv@refBMobilePhone \fi %
\end{tabular}%
\pgfkeys{/@cv/references/value stored = false}%
\else%
@@ -1858,6 +2151,17 @@ Dear Miss.\ Smith
\@IfNoValueOrEmptyTF{##1}{##2}{\href{##1}{##2}}};
}
}
+\NewDocumentCommand{\cvContactTemplate}{O{} mm}{
+ \ifcv@contactfirst%
+ \\%
+ \else %
+ \global\cv@contactfirsttrue %
+ \fi %
+ \node[cv@contactIcon]{#2};
+ \pgfmatrixnextcell \node[cv@contactText]{%
+ \@IfNoValueOrEmptyTF{#1}{#3}{\href{#1}{#3}}%
+ };
+}
\newif\ifcv@contactfirst
\NewDocumentEnvironment{cvContact}{}{%
\vspace{\cvSectionSBSep}
@@ -1871,6 +2175,7 @@ Dear Miss.\ Smith
\cv@ContactTemplateLink{\cvContactEmail}{\faEnvelope}
\cv@ContactTemplateLink{\cvContactWebsite}{\faGlobe}
\cv@ContactTemplateLink{\cvContactGithub}{\faGithub}
+ \cv@ContactTemplateLink{\cvContactGitlab}{\faGitlab}
\cv@ContactTemplateLink{\cvContactLinkedin}{\faLinkedinSquare}
\cv@ContactTemplateLink{\cvContactTwitter}{\faTwitter}
\cv@ContactTemplateLink{\cvContactKeybase}{\faKey}
@@ -1946,18 +2251,22 @@ Dear Miss.\ Smith
\NewDocumentCommand{\cvInterest}{mm}{%
\ifcv@interestContent %
\node[
- below=\cvItemSep of cv@interest text \the\value{cv@cvInterestCounterPrev},
+ below=\cvItemSep of cv@interest text %
+ \the\value{cv@cvInterestCounterPrev},
cv@interesticon]
(cv@interest icon \the\value{cv@cvInterestCounter}) {##1};
\node[
- below=\cvInterestDetailsSep of cv@interest icon \the\value{cv@cvInterestCounter},
+ below=\cvInterestDetailsSep of cv@interest icon %
+ \the\value{cv@cvInterestCounter},
cv@interesttext]
(cv@interest text \the\value{cv@cvInterestCounter}) {##2};
\else
\cv@interestOpen
- \node[cv@interesticon] (cv@interest icon \the\value{cv@cvInterestCounter}) {##1};
+ \node[cv@interesticon]
+ (cv@interest icon \the\value{cv@cvInterestCounter}) {##1};
\node[
- below=\cvInterestDetailsSep of cv@interest icon \the\value{cv@cvInterestCounter},
+ below=\cvInterestDetailsSep of cv@interest icon %
+ \the\value{cv@cvInterestCounter},
cv@interesttext]
(cv@interest text \the\value{cv@cvInterestCounter}) {##2};
\fi
@@ -2006,11 +2315,13 @@ Dear Miss.\ Smith
% define new commands
% \begin{macrocode}
\NewDocumentCommand{\cvInterestsPersonal}{}{%
- \cv@interestSection{\faUser\ \emph{Personal}}}
+ \cv@interestSection{\faUser\ \emph{\pgfkeysvalueof{/@cv/names/personal}}}}
% \end{macrocode}
% \begin{macrocode}
\NewDocumentCommand{\cvInterestsProfessional}{}{%
- \cv@interestSection{\faBriefcase\ \emph{Professional}}}
+ \cv@interestSection{\faBriefcase\ \emph{%
+ \pgfkeysvalueof{/@cv/names/professional}}%
+ }}
% \end{macrocode}
% \begin{macrocode}
\ifcv@interestLong
@@ -2117,7 +2428,8 @@ Dear Miss.\ Smith
\node[%
text width=\cvSideWidth,
align=center,
- below=\cvProjectDetailsSep of project \the\value{cv@projectCurrent} image]
+ below=\cvProjectDetailsSep of project \the\value{cv@projectCurrent} %
+ image]
(project \the\value{cv@projectCurrent} title) {%
\ifcv@projectLink \href{\cv@projectLink}{##2} \else ##2 \fi };
\else
diff --git a/macros/latex/contrib/limecv/limecv.ins b/macros/latex/contrib/limecv/limecv.ins
index 0c162af69d..d6f0f83263 100644
--- a/macros/latex/contrib/limecv/limecv.ins
+++ b/macros/latex/contrib/limecv/limecv.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2017 by Olivier Pieters
+%% Copyright (C) 2017 - 2018 by Olivier Pieters
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -41,7 +41,7 @@ LaTeX version 2005/12/01 or later.
\Msg{* To finish the installation you have to move the *}
\Msg{* following file into a directory searched by TeX: *}
\Msg{* *}
-\Msg{* \space\space limecv.cls *}
+\Msg{* limecv.cls *}
\Msg{* *}
\Msg{* To produce the documentation run the file *}
\Msg{* limecv.dtx through LaTeX. *}
diff --git a/macros/latex/contrib/limecv/limecv.pdf b/macros/latex/contrib/limecv/limecv.pdf
index b17f45cddc..3f9abc7069 100644
--- a/macros/latex/contrib/limecv/limecv.pdf
+++ b/macros/latex/contrib/limecv/limecv.pdf
Binary files differ