aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique/2020-12-03-encore_des_cv.rst
blob: a286dcedbbededf16cdba554a1e2545fc77ccc18 (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
183
184
.. -*- mode: rst -*-
.. -*-  coding: utf-8 -*-

=====================
Encore des cvs en rst
=====================

:date: 2020-12-03
:tags: latex, restructuredText
:summary: |summary|


.. default-role:: literal

|summary|

.. |summary| replace::

  J'avais déjà présenté comment modifier_ le format rst pour produire un cv avec
  la classe moderncv de latex. Cette fois je propose de se créer soi-même son
  modèle tout en gardant le format RST.

.. _modifier: {filename}2015-10-03-moderncv.rst


L'idée est de conserver le standard du format rst et de modifier les fichiers
latex pour les adapter en fonction du besoin. Cela signifie que le même fichier
source peut être utilisé avec les différents exemples sans changements (ou
presque).

Le résultat
===========

Commençons directement par le final, voilà le résultat :

.. image:: {static}/images/cv/model5.png
 :width: 50%
 :class: floatleft
 :alt: Exemple de rendu

le code est disponible sur mon `dépôt git`_ si vous souhaitez le cloner et
récupérer les sources.

.. _dépôt git: http://git.chimrod.com/latex_template.git/

Les directives RST
==================

La sidebar
----------

.. code-block:: rst

  .. sidebar:: Titre

   Texte à renseigner dans le bandeau

Permet de créer du texte dans la barre latérale. Le texte peut être une liste,
une image ou tout autre élément standard. Il faut juste faire attention à la
largeur qui oblige à rester concis…


.. admonition:: Sans titre ?
 :class: hint

 rst oblige à déclarer un titre dans la directive, ce qui n'est pas forcément
 ce que l'on souhaite. Par contre le titre peut être vide ! Il suffit
 d'échapper une espace :


 .. code-block:: rst

  .. sidebar:: \

    .. image:: mon profil.jpg
      :width: 100%

Les listes
----------

Avec la directive `class`, il est possible d'appliquer un style qui sera
présent jusqu'à la fin du paragraphe. Ce style est associé à une commande Latex
qui permet l'appliquer le style en question. Ainsi, avec la classe `checklist`,
toutes les puces des listes sont remplacées par une coche :

.. code-block:: rst

  .. class:: checklist

  * 1er élément
  * Second élément

La commande latex suivante est utilisée :

.. code-block:: latex

  \newenvironment{DUCLASSchecklist}{\renewcommand{\labelitemi}{\faCheck}}{}

Il est facile de modifier la commande pour charger d'autres types de marques,
voir le fichier `10_lists.tex`_ pour la liste complète.

.. _10_lists.tex: http://git.chimrod.com/latex_template.git/tree/common/10_lists.tex

Il est possible de modifier le style de liste en cours de route, mais il faut
faire attention à appeler la commande **avant** la ligne que l'on souhaite
modifier. C'est pourquoi l'on retrouve l'exemple suivant dans lequel on annonce
les icônes avant la ligne suivante :

.. code-block:: rst

  .. sidebar:: Informations

    * 75001 Paris |phoneicon|
    * 01 23 45 67 89 |mailicon|
    * email@example |noicon|

`|phoneicon|` est en fait une substitution de texte qui insère une commande
latex à la place (et donc ne substitue rien du tout :))

Les barres de niveau
====================

Autre point assez amusant, il est possible de faire des graphiques à partir de
données dans le fichier. Les niveaux représentés sous forme d'étoiles ou de
barres sont construits dans latex à partir des lignes suivantes :

.. code-block:: rst

 .. role:: level
 .. role:: levelbox
 .. role:: star

 :star:`4.5`
 :levelbox:`5`
 :level:`3`

Il s'agit de rôles personnalisés, qui sont interprétés comme des commandes
latex prenant un paramètre : la valeur du niveau. Celui-ci est ensuite
représenté sous forme d'étoile colorées, ou barre de niveau. On peut imaginer
toutes les fantaisies possibles…

Autres éléments
===============

Il n'y en a pas d'autres. Tout le reste est ensuite standard et suit les
directives rst. (La directive `admonition`_ permet également des
personnalisations assez avancées, mais je ne l'ai pas appliqué ici).

.. _admonition: https://docutils.sourceforge.io/docs/ref/rst/directives.html#admonitions

L'organisation
==============

Chaque répertoire contient un modèle différent, et tous les modèles suivent le
même schéma :

::

  |
  |\ Makefile
  |\ fichier.rst (le fichier source à traiter)
  \ resources (le répertoire contenant les modèles latex)
    |
    |\ 00_colors.tex (la définition des couleurs)
    |\ 00_length.tex (les longueurs pour les marges ou autres paramètres)
    |\ 00_preamble.tex (le fichier contenant les paramètres principaux)
    |\ 10_fonts.tex (les polices utilisées dans le document)
    |\ 10_title_style.tex (la personnalisation des titres)
     \ autres directives latex

Tous les fichiers qui sont présents dans le répertoire `resources` sont
automatiquement chargés, et les modules présents dans le fichier `modules` sont
également chargés.

Pour la simplification du dépôt, des fichiers communs à tous mes styles sont
présents dans le répertoire `common`

Et voilà
========

J'espère que ces petits exemples vous donneront des idées, et qu'ils vous
permettront de construire vos propres modèles. L'idée est vraiment de laisser
toute la mécanique latex en arrière-plan, et se simplifier au maximum
l'écriture !