TwentyOneSeconds - un template per CV scritto in LaTeX
Tags: latex, resume, overleaf, template
Published: 2024-05-19 13:08:19

## TwentyOneSeconds - un template per cv scritto in LaTeX

Ho iniziato dal tema LaTeX di [twentyseconds](https://github.com/spagnuolocarmine/TwentySecondsCurriculumVitae-LaTex) perché penso che [un CV in LaTeX sembri più professionale](https://www.quora.com/Is-building-un-curriculum-in-LaTeX-una-buona-idea). E' anche possibile fare cose [come questa](https://xkcd.com/1676/):

![a-bad-justification](https://imgs.xkcd.com/comics/full_width_justification.png "A bad justification")

Mi piace il layout a due colonne ma non la colonna di sinistra creata all'esterno del documento (fatto che imporrebbe di scrivere il testo nella colonna di sinistra specificando esattamente le dimensioni del frame contenente il testo, rendendo di fatto inutile l'utilizzo di LaTeX).
Per replicare questa configurazione a due colonne ho pensato di usare questa [soluzione](https://tex.stackexchange.com/a/310989/109031) basata sul pacchetto `tcolorbox`.

Ho iniziato creando questa configurazione LaTeX di base:

```latex
% 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}%
}
```

```latex
% 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}
```

Si può notare che l'esempio è già su due pagine: va bene mantenere il CV semplice e facile da leggere, ma cosa fare con una lista di esperienze lavorative da mostrare più lunga di una pagina?

Latex è vantaggioso da usare perché permette di pensare al solo contenuto testuale, senza sprecare tempo con l'impaginazione.
Il mio più grande problema era riempire l'eventuale spazio vuoto fra l'ultimo paragrafo ed il fondo della colonna: comandi come `\vfill` non funzionano all'interno di `newtcolorbox` perché il frame non ha un'altezza fissa.

Fortunatamente (dovrebbe essere dalla versione 3.70 di `newtcolorbox`) è possibile modificare questo comportamento; per questo serviranno le opzioni

- `height=<value>`
- `text fill`

Come già detto, il frame non può usare `\vfill` perché inizialmente non ha un'altezza fissa. Per imporre l'altezza del contenitore del testo uguale all'altezza dell'intera pagina serve `height=\heigthpage`.

L'ultima precauzione è evitare comandi che impongano valori fissi come quello `tikzpicture` usato all'interno del comando personalizzato `\makeheaderprofile`.

Per qualche ragione invece i comandi personalizzati usati per creare le sezioni delle abilità (`\skills` e `\skillstext`) funzionano bene.

Finalmente [qui](https://trinca.tornidor.com/trinca_ita.pdf) il risultato ed il [repository GitHub](https://github.com/trincadev/cv-latex-twentyoneseconds)!

Ho pubblicato il template LaTeX di esempio [qui su overleaf](https://www.overleaf.com/latex/templates/twentyoneseconds/xmvbqtfmnycf).

## Aggiornamenti

### 2023-01-24

- [pull request](https://github.com/trincadev/cv-latex-twentyoneseconds/pull/5) da [giocic2](https://github.com/giocic2/): corretta la definizione di `bfseries`

### 04-01-2023

- corretto il comando `\cvlinkedin`

### 31-12-2023

Aggiunte opzioni per trasformare indirizzi Skype in URL

### 01-09-2023

- ora è possibile aggiungere un numero arbitrario di sezioni della barra delle _skill_ con titoli di sezione personalizzabili, legende e _skill_ personalizzabili (vedi comando `\customskills`)
- migliorata la chiarezza del comando `\skills`
- aggiunte alcune spiegazioni sulle sezioni dell'intestazione e del profilo informativo
- rinominato `\cvdate` in `\cvbirthdate`, cambiata la sua icona in faCalendar
- accettato una [pull request](https://github.com/trincadev/cv-latex-twentyoneseconds/pull/1) da [JeromeHen](https://github.com/JeromeHen/)

### 2023-05-15

Aggiunte alcune opzioni:

- un modo per nascondere l'immagine e visualizzare solo la riga con nome/cognome ed descrizione della mansione lavorativa
- sezioni laterali personalizzabili
- rimosso un comando non funzionante (`\skillstext`)

[![realizzato-con-latex](https://img.shields.io/badge/Made%20with-LaTeX-1f425f.svg)](https://www.latex-project.org/)

[![Licenziatario pubblico del progetto LaTeX](https://img.shields.io/badge/license-LPPL-green)](https://www.latex-project.org/lppl/)

[![repository github](https://badges.frapsoft.com/os/v3/open-source.svg?v=103)](https://github.com/trincadev/cv-latex-twentyoneseconds)

[![Dona](https://img.shields.io/badge/Paypal-Donate%20to%20author-blue)](https://paypal.me/trinkuz?country.x=IT&locale.x=it_IT)