PandaScience / FortySecondsCV

A highly customizable and improved version of Carmine Spagnuolo's Twenty Seconds Curriculum Vitae.
BSD 3-Clause "New" or "Revised" License
215 stars 66 forks source link

Forty Seconds CV

中文 | Nederlands

Description

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:

When you should use the FortySecondsCV class:

Attributions

Requirements

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, Academicons won't be available.

If you want to use gosquared's flag icon set, make sure to first run

git submodule update --init

License

Forty Seconds CV is distributed under the BSD 3-Clause license. See LICENSE file for more information.

User Interface

Class Options

Possible options that can be passed to FortySecondsCV are:

Notes:

Sidebar

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 job title are already set, or completely redefine them using

\renewcommand{\makefrontsidebar}{%
  \begin{sidebar}
    <your code>
  \end{sidebar}
}

You can use all previously defined macros like \cvname and \cvjobtitle or other elements like the icontable introduced here. See #22 for a more detailed example.

The sidebar environment makes sure that at least all text will be positioned correctly within the left column (sidebar) of each page. If you need something more restrictive, e.g. to prevent overflow when using multiple chart labels, you can enclose parts of the sidebar content in a sidebarminipage:

\begin{sidebarminipage}
  \chartlabel{Bubble Diagram}
  \chartlabel{with}
  \chartlabel{proper}
  \chartlabel{overflow}
  \chartlabel{protection}
  \chartlabel{for}
  \chartlabel{labels}
\end{sidebarminipage}

Using the sidebar environment, you can also add more sidebar definitions for additional pages easily. If you want the sidebar to appear on the right instead of the left side of the body, use the class option sidebarplacement=right.

If you want to remove the sidebar entirely on a single page, just don't call any of the sidebar constructors. Then you may set your preferred margins using

\newpage
% no \makebacksidebar etc.
\newgeometry{
  top=<length>,
  bottom=<length>,
  left=<length>,
  right=<length>
}

The defaults are \leftrightmargin and \topbottommargin. In case you want to return to the default layout on subsequent pages, simply call \restoregeometry after the next \newpage.

The text color of sidebar elements can be adapted via the class option sidetextcolor. For heavier style changes you can also redefine the \sidetext command to your needs. For example:

  \renewcommand{\sidetext}[1]{\textcolor{red}{\texttt{#1}}}

Personal Information

Set personal information via convenience commands

  % logo picture
  \cvlogopic[0.8\linewidth]{pics/logo.png}
  % 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{panda@bamboo.cn}
  % pgp key
  \cvkey{4096R/FF00FF00}{0xAABBCCDDFF00FF00}
  % any other custom entry
  \cvcustomdata{\faFlag}{Chinese}

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).

The default "personal information table" uses

\begin{icontable}[1.6]{1.7em}{0.4em}
  \personal{<icon>}{<text>}
\end{icontable}

Further Sidebar Style Elements

Body

The right part of the CV containing tables for sth. like "working experience" has to be defined within the document environment.

To prevent unwanted line breaks in dates, the width of the first column in the body can be adjusted via the datecolwidth class option.

Font Configuration

Example