aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique/2015-10-03-moderncv.rst
blob: dbb35b75609fd57744dccaceec0e95c14b348ec2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

=====================
Se faire un CV en rst
=====================

:date: 2015-10-03
:tags: reStructuredText, Libre
:summary: |summary|

.. admonition:: Article obsolète
  :class: warning

  Je propose désormais une solution complète pour se faire son modèle de CV en
  rst : `encore des cvs`_ !

.. _encore des cvs: {filename}2020-12-03-encore_des_cv.rst

|summary|

.. |summary| replace::

    Je n'en finis plus de proposer le format rst à toutes les sauces. Cette
    fois-ci je vous propose d'écrire votre CV en rst, et donner le rendu à
    latex via moderncv pour obtenir un rendu qui sort du lot.


Moderncv
========

moderncv est une classe latex (entendre au sens *template*), qui permet de
présenter et mettre en forme le CV simplement. Une image valant mieux qu'un
long discours, ça donne un résultat comme celui-ci :

.. image:: {static}/images/cv/exemple.png
 :alt: Exemple de rendu


Le but est de séparer la mise en forme du contenu, en déclarant à travers
quelques balises quelles sont éléments à afficher sur le cv.

Voici quelques exemples de rendu possible avec la classe :


* `thème banking rouge`_
* `thème casual orange`_
* `thème classic vert`_
* `thème fancy mauve`_
* `thème oldstyle gris`_

.. _thème banking rouge: https://github.com/xdanaux/moderncv/blob/master/examples/template_banking_red.pdf
.. _thème casual orange: https://github.com/xdanaux/moderncv/blob/master/examples/template_casual_orange.pdf
.. _thème classic vert: https://github.com/xdanaux/moderncv/blob/master/examples/template_classic_green.pdf
.. _thème fancy mauve: https://github.com/xdanaux/moderncv/blob/master/examples/template_fancy_purple.pdf
.. _thème oldstyle gris: https://github.com/xdanaux/moderncv/blob/master/examples/template_oldstyle_grey.pdf


Alors quand on latex on dit simplement, en vérité ça veut dire ça :

.. code-block:: latex

    \section{Education}
    \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}  % arguments 3 to 6 can be left empty
    \cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}

    \section{Master thesis}
    \cvitem{title}{\emph{Title}}
    \cvitem{supervisors}{Supervisors}
    \cvitem{description}{Short thesis abstract}

La version RST
==============

Ce que je propose, c'est de l'écrire comme ça :


.. code-block:: reStructuredText

    Formation
    ---------

    :2008:

        **Mon dernier diplôme***Université de France*

        après j'ai arrêté.

    :2006:

        **Un autre diplôme***Université de Navarre*

        il faut que j'aille le chercher depuis ce temps…

    :2005:

        **Encore un***Université*

        mention « Assez bien »


Avouez que c'est quand même plus simple !

Comment faire
=============

Compilation latex
-----------------

Pour commencer, assurez-vous que vous pouvez produire le CV à partir du code latex.

.. code-block:: console

    $ wget https://raw.githubusercontent.com/xdanaux/moderncv/master/examples/template.tex
    $ wget https://raw.githubusercontent.com/xdanaux/moderncv/master/examples/picture.jpg
    $ pdflatex template.tex

Si tout va bien, vous devriez avoir votre pdf généré dans le répertoire.

Quelques problèmes :

**command not found: pdflatex** : pdflatex n'est pas installé. Il va vous
falloir installer toute l'architecture : texlive_, `texlive-latex-extra`_,
`texlive-fonts-extra`_ et je conseille aussi `texlive-xelatex`_.

**LaTeX Error File `fontawesome.sty` not found** : il vous manque la police
awesome. Dans debian, elle est disponible dans le paquet
`texlive-fonts-extra`_.

.. _texlive: https://packages.debian.org/sid/texlive
.. _texlive-xelatex: https://packages.debian.org/sid/texlive-xelatex
.. _texlive-latex-extra: https://packages.debian.org/sid/texlive-latex-extra
.. _texlive-fonts-extra: https://packages.debian.org/sid/texlive-fonts-extra
.. _texlive-fonts-extra: https://packages.debian.org/sid/texlive-fonts-extra

docutils
--------

Ensuite assurez de disposer de docutils_ pour pouvoir lancer `rst2latex` ou
`rst2latex.py` :

.. code-block:: console

    $ rst2latex -V
    rst2latex (Docutils 0.12 [release], Python 2.7.10, on linux2)

.. _docutils: https://packages.debian.org/sid/python3-docutils

C'est parti !
-------------

.. figure:: {static}/images/mimetypes/package-x-generic.png
    :figclass: floatleft
    :alt: get the file
    :target: {static}/resources/cv.tar.gz

    Télécharger

Vous trouverez dans l'archive un Makefile et l'exemple qui m'a servi à écrire
illustrer l'article. Il suffit de lancer `make` pour produire le pdf du CV,
plus un exemple de lettre d'accompagnement.

Tous les fichiers `.rst` qui sont présent dans le répertoire où est lancé la
commande seront automatiquement convertis en pdf.

.. admonition:: Attention

    Le Makefile est configuré pour lancer xelatex au lieu de pdflatex
    (meilleure gestion des polices). Il faut changer la première ligne du fichier
    si vous souhaiter utiliser un autre moteur de rendu.

Comment ça marche ?
===================

En fait, la classe `moderncv` utilise des directives qui ne sont pas standard par
mettre le cv en forme. Par conséquent, il n'est pas possible de l'utiliser
directement avec `rst2latex`. On est obligé de construire son propre writer pour
pouvoir produire une sortie qui soit compatible, c'est ce qui est contenu dans
le fichier `bin/moderncv.py` de l'archive. (Je détaillerai comment se
construire ses propres classes si on me le demande.)

Voilà, il ne reste plus qu'à faire le votre !