Just another CV class for LaTeX - but this time highly customizable!
This project can be regarded as a major rewrite of the original twentysecondcv class. It does not aim to provide a new CV style that you can’t find anywhere else, but rather takes a very well established one and adds a straightforward user interface to almost all layout elements and thus creates a highly customizable framework-class: FortySecondsCV.
Just try it yourself starting from template.tex
!
When you should use twentysecondcv or altacv or any other LaTeX CV class:
- You are happy with the layout elements offered by the existing CV class styles
- You don’t need to change paper sizes / formats at all
- You don’t want to customize your CV further
When you should use the FortySecondsCV class:
- You like to build a CV optimized for 2 pages incl. a sidebar (with option for additional pages)
- You want to highly customize your CV using a great palette of colors and layout elements
- You don’t want to modify any definition in the class file
- You prefer an easy-to-use user interface to almost all style elements
- You need a cleanly written class file in case you decide to change low-level class definitions
- This LaTeX CV class is based on the style ideas of the twentysecondscv class by Carmine Spagnuolo
- Language icons in the template are taken from gosquared’s repository
You need to compile your document with XeLaTeX or LuaLaTeX in order to have the latest Font Awesome icons (fontawesome5
) and Academicons. If you still want to compile with pdfLaTeX for whatever reason, FortySecondsCV will fall back to the older icon package (fontawesome
), where some icons look different and some others are not even included and Academicons won’t be available at all.
Forty Seconds CV is distributed under the BSD 3-Clause license. See LICENSE file for more information.
Possible options that can be passed to FortySecondsCV are:
- all valid options for the standard article class like e.g.
a4paper
or11pt
. showframes
will show frames around the sidebar and body texts that help to adjust margins correctly. Note, that this will move content of tables slightly since tabular lines also take some space.vline=<length>
plots a red vertical line at x-position<length>
to help adjust sidebar content.maincolor=<color>
sets the color that is used for the entire sidebar incl. headings, icons and charts. Many colors are derived from it.sectioncolor=<color>
sets the color of section headings in the body text.itemtextcolor=<color>
sets the color of cvitem descriptions.subsectioncolor=<color>
same as sectioncolor for subsections.sidebarwidth=<length>
sets the total width of the sidebar, i.e. the width of the visible sidebar color.topbottommargin=<length>
sets the top and bottom page margin for both columns.leftrightmargin=<length>
sets the left and right page margin for both columns as well as how much space will be between both columns.profilepicsize=<length>
sets the width of the profile picture.
Note:
- Lengths can be specified in any absolute length unit, e.g.
em
for widths,ex
for heights or relative ones like0.5\paperheight
or0.3\linewidth
. - Colors can be picked from the entire catalogue provided by the
dvipsnames
,svgnames
andx11names
options of thexcolor
package. See xcolor package documentation for details and color tables.
Sidebars on front and back of the CV are generated using the commands \makefrontsidebar
and \makebacksidebar
within the document
part of the LaTeX code. It is recommended to use \newpage
immediately before \makebacksidebar
.
Layout elements in front and back sidebar can be added either by using
\addtofrontsidebar{}
\addtobacksidebar{}
where some pre-defined elements like profile picture, name and jobtitle are already set, or completely redefine them using
\renewcommand{\makefrontsidebar}{%
\begin{sidebar}
<your code>
\end{sidebar}
}
- The
sidebar
environment makes sure that all elements will be positioned correctly within the left column (sidebar) of each page. - Using the
sidebar
environment, you can also add more sidebar definitions for additional pages easily.
Set personal information via convenience commands
% profile picture
\cvprofilepic{pics/profile.png}
% your name
\cvname{Panda Bear}
% job title/career
\cvjobtitle{Panda Scientist,\\[0.2em] Panda of the Year}
% date of birth
\cvbirthday{Mar 7, 2019}
% short address/location, use \newline if more than 1 line is required
\cvaddress{Park Ave.~1, 555 555 B-Woods}
% phone number
\cvphone{+86 555 555 555}
% personal website
\cvsite{https://pandascience.net}
% email address
\cvmail{[email protected]}
% pgp key
\cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
% any other custom entry
\cvcustomdata{\faFlag}{Chinese}
- Only
\cvname
and\cvjobtitle
are mandatory. - If you want any (optional) entry not to show up in your CV, simply don’t use it. If you don’t use any of these convenience commands, the personal information table will not appear at all.
- The email address will be automatically linked with
mailto:email
. - Your website will be hyperlinked as well.
- For the pgp key, the first argument defines the displayed text which is linked to a keyserver searching for the ID in the second argument. Note: For safety, you should use your key’s long ID or its fingerprint in the second argument.
- The
\cvcustom{<icon>}{<text>}
macro shows how to define new lines using an icon as first and some text as second argument. Behind the scenes, this command is actually used to define the other convenience commands in the above example.
If you don’t like the default style of the “personal information table”, you can define your own via
\begin{icontable}[<arraystretch=1>]{<width 1st column>}{<space between columns>}
\personal{<icon>}{<text>}
\social{<icon>}{<url>}{<text>}
\end{icontable}
where the width of the 1st column will also determine the size of all icons in this column, since icons are scaled to maximum width of their cell. For visual purposes, you can fine-tune the space between icons and corresponding text with the 2nd mandatory argument. The optional argument determines the spacing between table lines, which is only important for small icon heights (i.e. small 1st columns).
\personal
takes an icon and a text. The icon is passed to\circleicon{<icon>}
, which draws a circle filled withmaincolor
around the icon symbol. The symbol itself appears white.\social
takes an icon and url + text.Text
will be hyperlinked tourl
. In caseurl
is empty, your LaTeX compiler will throw a harmless warning about “Suppressing link with empty target” and text will not be hyperlinked. The icon itself is passed to\socialicon{<icon>}
, which simply resizes the icon symbol and draws it inmaincolor
. This version is the preferred one for social network icons (see example).
The default “personal information table” uses
\begin{icontable}[1.6]{1.7em}{0.4em}
\personal{<icon>}{<text>}
\end{icontable}
-
Section heading
\profilesection{<section title>}
-
Simple skill containing only an icon and some text and with optional indentation
\skill[<indent>]{<icon>}{<text>}
-
Pointskill consisting of an icon, text, the number of points and optionally the maximum possible number (default: 5). Some examples:
\pointskill{<icon>}{<text>}{<points>}
creates a skill using a Font Awesome or Academicons icon with some text and a ranking of
<points>
out of 5 points.\pointskill{<icon>}{<text>}{<points>}[<maxnum>]
creates a skill using a Font Awesome or Academicons icon with some text and a ranking of
<points>
out of<maxnum>
possible points.\pointskill{\flag{DE.png}}{German}{5}
creates a language skill using a flag-icon, which has to be indicated using the
\flag
command in order to inform the class that the icon should not be colored using\maincolor
. -
Barskill consisting of an icon, text and percentage of how far the skillbar should be filled
\barskill{<icon>}{<text>}{<percentage>}
-
“About me” text
\aboutme{<text spanning multiple lines>}
-
Rounded and colored label for e.g. charts and other graphics
\chartlabel{<text>}
-
Wheel chart
\wheelchart{<outer radius>}{<inner radius>}{% <percentage>/<spacing>/<color>/<text>, <percentage>/<spacing>/<color>/<text> }
- Percentages should add up to 100
-
Memberships
\begin{memberships}[<separation>=1em] \membership[<iconwidth>=4em]{<logo>}{<text>} \membership[<iconwidth>=4em]{<logo>}{<text>} \membership[<iconwidth>=4em]{<logo>}{<text>} \end{memberships}
- Width of the 1st column containing the icons is equal to the width of the largest icon such that all text entries in the 2nd column are aligned.
-
Social Networks
\begin{socialnetwork}[<separation>=1em] \social{<icon>}{<url>}{<text>} \social{<icon>}{<url>}{<text>} \social{<icon>}{<url>}{<text>} \end{socialnetwork}
- Another icon style that could be used for e.g. social network icons from Academicons, but is working for FontAwesome icons as well.
text
will be hyperlinked tourl
.text
may be formatted as preferred like usual via e.g.\texttt{}
etc.
The right column of the CV containing tables for sth. like “working experience” has to be defined within the document
environment.
-
Section and subsection headings
\cvsection \cvsubsection
-
CV items should be enclosed by
cvtable
, independent of the item type. Possible types are:\begin{cvtable}[<arraystretch>=1] \cvitem{<dates>}{<title>}{<location>}{<description>} \cvitem{<dates>}{<title>}{<location>}{} \cvitemshort{<key>}{<description>} \cvpubitem{<title>}{<author>}{<journal>}{<year>} \end{cvtable}
cvitem
including a description will make the title bold, left-align the date, right-align the location and put the description indented on the next line. The description itself will be initemtextcolor
defined in the class options.cvitem
missing a description will add a one-line item in the style of the former one but with a “normal” title instead of a bold one.cvitemshort
left-aligns<key>
followed by its description.cvpubitem
adds an entry with left-aligned year/date, bold title on same line followed by italic author and normal text journal, each on its own line.<arraystretch>
modifies the spacing between items ofcvtable
. For tables ofcvitem
, you should use at least 1.5, forcvitemshort
andcvitem
without description, the default value is sufficient.
-
Coloring
cvsection
,cvsubsection
and description text colors can be defined as described in class options. -
Profile picture styles
\profileroundedcorners
- is the one visible in the example below
\profilecircle
- clips the picture to a circle as in the original
twentysecondcv
class
-
Name and jobtitle combination with proper spacing, font and color
\nameandjob
-
Finalizing the CV with a place, date and signature as common practice in e.g. Germany is done via
\cvsignature
-
Change font either by loading the corresponding package, e.g. for google noto font
\RequirePackage[sfdefault]{noto} % use noto google font
or by using XeLaTeX’s option to load local fonts directly via fontspec
\RequirePackage[quiet]{fontspec} \newfontfamily\headingfont[Path = fonts/]{segoeuib.ttf}