Forem

Alessandro T.
Alessandro T.

Posted on • Edited on • Originally published at trinca.tornidor.com

TwentyOneSeconds - a CV LaTeX template

TwentyOneSeconds - a cv LaTeX template

I started from the twentyseconds LaTeX theme
because I think a LaTeX cv looks more professional. It's also possible to do things like this:

a-bad-justification

I like the two-column layout but not the left column created outside the document.
Because of this I should set the dimensions of the second column exactly like those of the frame containing the text, making the use of LaTeX useless.

To replicate this two-column configuration I thought to use this clever solution based on the tcolorbox package.

First of all I created this basic LaTeX document:

% twentyonesecondcv.cls
\ProvidesClass{twentyonesecondcv}[2017/01/08 CV class]
\documentclass{article}
\usepackage{blindtext}
\usepackage{xcolor}
\usepackage{geometry}
\usepackage[most]{tcolorbox}
\geometry{margin=0pt}

\definecolor{gray}{HTML}{4D4D4D}
\definecolor{sidecolor}{HTML}{E7E7E7}
\definecolor{mainblue}{HTML}{0E5484}
\definecolor{maingray}{HTML}{B9B9B9}
\newtcolorbox{bgbox}[1][]{nobeforeafter,leftright skip=0pt,boxrule=0pt,enhanced jigsaw,sharp corners,#1}

\newcommand{\sidesection}[1]{
    \noindent
    \begin{bgbox}[height=\paperheight,colback=sidecolor,width=0.33\textwidth]
    #1
    \end{bgbox}%
}
\newcommand{\mainsection}[1]{%
    \noindent
    \begin{bgbox}[height=\paperheight,colback=white,width=0.67\textwidth]
    #1
    \end{bgbox}%
}
Enter fullscreen mode Exit fullscreen mode
% tex document
\documentclass[letterpaper]{twentyonesecondcv} % a4paper for A4

\begin{document}
\noindent
\sidesection{col 1, pag 1:: \lipsum[1-3]}
\mainsection{col 2, pag 1:: \textit{\lipsum[1-5]}}
\newpage

\noindent
\sidesection{col 1, pag2:: \lipsum[3-5]}
\mainsection{col 2, pag2:: \textit{\lipsum[3-7]}}
\end{document}
Enter fullscreen mode Exit fullscreen mode

You can notice that this example is already on two pages: it's ok to keep your CV simple and quick to read, but what if you have a long list of experiences to show?

Of course LaTeX is good because the markup engine should keep you free to think about your content, not concentrating on handle manual placements of borders, paragraph positions and so on. My biggest problem about this was filling empty space: commands like \vfill aren't working within newtcolorbox because the box has no fixed height.

Luckily (should be from version 3.70) it's possible to change this behavior; for this you need the options

  • height=<value>
  • text fill

As already said, the box can't use \vfill because initially it hasn't a fixed height, so these options are changing that. I use height=\heigthpage because my boxes' height are equal to the entire page height.

Last precaution is to avoid commands enforcing fixed value settings like the tikzpicture one used within the custom command \makeheaderprofile.

For some reason instead the custom commands used to create the skill sections (\skills and \skillstext) work fine.

Finally here is the result and the GitHub repository!

I published this LaTeX template on this Overleaf page.

Updates

2023-01-24

  • pull request from giocic2: fixed unwanted bfseries redefinition

2023-01-04

  • fixed wrong \cvlinkedin command

2023-12-31

Added options to transform address and skype rows into urls

2023-09-01

  • now it's possible to add an arbitrary number of skill bar sections with custom section titles, custom legends and custom skill values (see \customskills command)
  • improved clarity of \skills command
  • added some explanations about header and info profile sections
  • renamed \cvdate to \cvbirthdate, changed its icon to faCalendar
  • accepted a pull request from JeromeHen

2023-05-15

I added some options about:

  • a way to hide the picture and display only the name / surname and job description row
  • custom side sections
  • removed a broken command (\skillstext)

made-with-latex

LaTeX Project Public Licensee

github repository

Donate

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay