Org-mode: Écrire une lettre
Hello.
Un nouveau billet de blog. Cette fois, je voudrais te montrer comment utiliser Org-mode pour écrire une lettre.
Prérequis
Connaissances
Pour comprendre cette article, il faut avoir quelques notions de base d'Org-mode et d'Emacs. Savoir écrire un document Org-mode, avec plusieurs sections et attacher des étiquettes sera suffisant.
Il faut aussi connaitre le format suivant pour les raccourcis clavier:
C-i
: Correspond à [CTRL] + [i]M-x
: Correspond à [Alt] + [x]C-c c
: Correspond à [Ctrl] + [c], relâcher, puis [c]C-c C-e
: Correspond à [Ctrl] + [c], relâcher, puis [Ctrl] + [e]
Logiciels
Pour écrire des lettres avec Org-mode, il faut:
- Emacs
- Org-mode (fourni avec Emacs)
- TeX Live, dans sa version full
- La classe LaTeX
scrlttr2
: Koma-Script ‘letter’ (fourni avec TeX Live full)
Pour l'installation, si tu utilise une distribution GNU/Linux, Emacs et Tex Live sont certainement proposés sur ses dépôts.
Si tu utilise Mac OS ou Windows, je te renvoie aux sites web d'Emacs et de TeX Live.
Org-mode est fourni avec Emacs et Koma-Script ‘letter’ avec TeX Live full.
Préparations
Activation de ox-koma-letter
Pour exporter un document Org-mode vers une lettre, on va utiliser
l'exportateur koma-letter
, fourni par le paquet Emacs
ox-koma-letter
. Ce paquet vient avec Org-mode, il n'est pas
nécessaire de l'installer.
Pour que les options d'exportation koma
soient visibles dans le menu
d'exportation d'Org-mode, il faut charger ox-koma-letter.el
avant
org.el
.
Pour ça, on doit seulement ajouter ceci au fichier /.emacs.d/init.el
:
(require 'ox-koma-letter)
La fonction Elisp
(require)
va charger la fonctionnalité ox-koma-letter
,
si ce n'est pas déjà fait. Il faut ajouter ce chargement avant toute
instruction Elisp
qui chargerait org
. Si tu en as une dans ton
/.emacs.d/init.el
.
Langue française
Pour que les dates soient traduites en français, je te renvoie à mon précédent billet sur l'exportation PDF et le français.
Une première lettre
On va commencer par créer un document Org-mode et y écrire ceci:
#+TITLE: Teste de lettre #+LANGUAGE: fr #+AUTHOR: Fox #+FROM_ADDRESS: 4 rue de nulle part\\1000 Lausanne #+TO_ADDRESS: OCP\\2 chemin des virgules\\1000 Lausanne #+OPENING: Madame, Monsieur #+CLOSING: Avec mes meilleures salutations #+DATE: \today #+PLACE: Lausanne #+LCO: SN #+OPTIONS: Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode.
Dans ce document, on peut voir 2 parties: Des mots clés, qui vont configurer l'exportation, et le corps du document, qui sera le corps de la lettre.
Ici, les mots-clés définissent les options suivantes:
- Le titre (
TITLE
) de la lettre - La langue (
LANGUAGE
), ici français - Le nom de l'auteur, ou autrice, (
AUTHOR
) - L'adresse de la personne qui envoie la lettre (
FROM_ADDRESS
), avec les caractères\\
pour forcer les retours à la ligne - L'adresse de destination (
TO_ADDRESS
), avec le nom du ou de la destinataire - La formule d'ouverture (
OPENING
) et de fermeture (CLOSING
) de la lettre - La date (
DATE
), ici j'utilise la macro LaTeX\today
- Le lieu (
PLACE
) - Le format de la lettre (
LCO
), j'en reparle plus loin
Exportation vers un PDF
Pour exporter notre lettre, il faut appeler le raccourcis clavier
suivant: C-c C-e k p
.
La lettre sera créée au format PDF. Et elle reprendra le nom du document Org-mode.
Si on veut voir le document PDF avec Emacs après l'exportation, on
peut aussi appeler ce raccourcis clavier: C-c C-e k o
.
Voici à quoi ressemble la lettre d'exemple:
Dans cette exemple, la lettre suit le format Suisse:
- Adresse de la personne qui envoie, dans le coin en haut à gauche
- Adresse de destination en haut à droite, à la bonne hauteur pour les enveloppes à fenêtre
- Au dessus du titre, à droite: La date et le lieu
- Le titre, centré
- La formule d'ouverture
- Le corps
- La formule de fermeture
- Le nom de l'auteur, légèrement décalé vers la droite
On remarque aussi des petites marques, sur le coté gauche, pour aider à plier la lettre. On verre plus loin comment les retirer.
Bonus: Fonctionnement de l'exportation
Le raccourcis clavier C-c C-e
va appelle la fonction Emacs
(org-export-dispatch)
. Cette fonction te demande vers quel format tu
souhaites exporter. Pour sélectionner an format, il faut écrire une ou
plusieurs lettres.
Pour nous aider, (org-export-dispatch)
ouvre une fenêtre qui
présente les options disponibles. Voici à quoi elle ressemble:
Quand on choisi Export with KOMA Scrlttr2
(k
) puis As PDF file
(p
), Emacs va:
- Exporter le document Org-mode vers le format LaTeX, en utilisant un template spécifique
- Convertir le document LaTeX vers le format PDF en appelant la
commande
pdflatex
Le template utilisé pour créer le document LaTeX définit:
- L'utilisation de la classe LaTeX
scrlttr2
- Les différents paquets LaTeX nécessaires
- Les options utilisées par la classe, tel que le titre, les adresses, le lieu, etc
- Un bloc
document
, avec:- L'ouverture
- Le corps
- La fermeture
Comme l'exportation vers une lettre utilise l'exportation LaTeX et PDF, toutes les options que tu as définies pour ces formats sont appliquées.
Personnalisation de la lettre
Format de la lettre
Il est possible de choisir le format de la lettre, avec le mot clé
LCO
placé en haut du document Org-mode.
Exemple:
#+TITLE: Teste de lettre #+LCO: DIN …
Ce mot clé peut être associé à un des codes suivants:
Code | Format |
---|---|
DIN | Format standard Allemand DIN 676, feuille A4 |
DINmtext | Même format que DIN , avec plus de texte sur la première page |
KakuLL | Format Japonnais, feuille A4, adapté aux enveloppes Kaku A4 |
KOMAold | Lettre A4 utilisant l'ancien agencement de la classe scrlettr |
NF | Format Français, standard NF Z 11-001 |
NipponEH | Format Japonnais, feuille A4, adapté aux enveloppes Chou ou You 3 |
NipponEL | Même format que NipponEH |
NipponLH | Même format que NipponEH |
NipponLL | Même format que NipponEH |
NipponRL | Même format que NipponEH |
SN | Format Suisse, feuille A4, standard SN 010 130 |
SNleft | Même format que SNleft , mais adresse de destination à gauche |
UScommercial9 | Format USA, feuille "American letter" |
UScommercial9DW | Même format que UScommercial9 |
Il est aussi possible de fournir un format personnalisé.
Pour plus d'informations sur comment utiliser un format personnalisé, ou sur les différences entre les formats Japonnais, je t'invite à lire la documentation officielle de la classe LaTeX scrlttr2.
À noter qu'on peut définir le format par défaut des lettres avec la
variable Emacs org-koma-letter-class-option-file
. Par exemple, en
ajoutant cette ligne de code Elisp
dans ~/.emacs.d/init.el
:
(setq org-koma-letter-class-option-file "SN")
La chaine de caractère correspond au code du format qu'on souhaite utiliser.
Le mot clé LCO
définit en début de document Org-mode prend le pas
sur la variable Emacs.
Ajout du téléphone, d'une URL et de l'e-mail
Pour définir un numéro de téléphone, une URL ou un e-mail avec les mots-clés suivants:
PHONE_NUMBER
: Numéro de téléphoneURL
: URL vers, par exemple, son site webEMAIL
: Adresse E-mail
En plus de ces mots-clés, il faut aussi indiquer qu'on veut les
inclure dans la lettre. Pour cela, on utilise le mot-clé OPTIONS
comme ceci:
#+OPITONS: phone:t url:t email:t
La lettre t correspond à True
, ce qui active l'option. Pour
désactiver une option, il faut l'associer à nil
.
Retirer les marques de pliage
Pour désactiver les petites marques de pliage, il faut définir l'option
foldmarks
à nil
en utilisant le mot clé OPTIONS
.
Par exemple:
#+OPITONS: foldmarks:nil
Sections, pièces jointes, postscriptum, etc
En générale, les sections sont ignorées lors de l'exportation.
À l'exception des sections avec une des étiquettes suivantes:
Étiquette | Utilisation |
---|---|
ps |
Postscriptum |
cc |
Copie-carbone |
encl |
Pièces jointes |
after_closing |
Après la fermeture |
after_letter |
Après la lettre |
Si une section a l'étiquette ps
, son corps sera ajouté en tant que
postscriptum à la lettre.
Si une section a l'étiquette cc
, son corps sera ajouté à la fin de
la lettre pour indiquer à qui une copie de la lettre sera envoyée. On
peut utiliser une liste pour représenter plusieurs personnes.
Si une section a l'étiquette encl
, son corps sera ajouté pour
indiquer la liste des pièces jointes. Dans le document Org-mode, on
peut utiliser une liste ou simplement du texte. Très utile sur une
lettre de motivation, pour indiquer qu'on a joint son CV et une copie
de ses diplômes.
Si une section a l'étiquette after_closing
, son corps sera ajouté
après la formule de fermeture de la lettre.
Et si une section a l'étiquette after_letter
, son corps sera ajouté
après la lettre.
Toutes les options et mots-clés
En plus des mots-clés disponibles pour une exportation au format LaTeX, on peut utiliser des mots-clés spécifiques à notre lettre.
Je t'en ai présenté quelques uns depuis le début de ce billet, mais en voici un résumé avec quelques ajouts (la variable Emacs peut être utilisée pour définir une valeur par défaut):
Mot clés | Description | Variable Emacs |
---|---|---|
TITLE |
Titre de la lettre | |
SUBJECT |
Sujet de la lettre | |
AUTHOR |
Auteur ou autrice de la lettre | org-koma-letter-from-sender |
FROM_ADDRESS |
Adresse de l'expéditeur ou expéditrice | org-koma-letter-from-address |
TO_ADDRESS |
Adresse de destination | |
PLACE |
Lieu de la lettre | org-koma-letter-place |
DATE |
Date de la lettre | |
PHONE_NUMBER |
Numéro de téléphone | org-koma-letter-phone |
URL |
Une URL | org-koma-letter-url |
EMAIL |
Adresse E-mail | org-koma-letter-email |
OPENING |
Formule d'ouverture de la lettre | org-koma-letter-opening |
CLOSING |
Formule de fermeture de la lettre | org-koma-letter-closing |
SIGNATURE |
Signature de l'expéditeur ou expéditrice | org-koma-letter-signature |
FROM_LOGO |
Logo de l'expéditeur ou expéditrice | org-koma-letter-from-logo |
LOCATION |
Informations supplémentaires sur expéditeur ou expéditrice | org-koma-letter-location |
LCO |
Format de la lettre | org-koma-letter-class-option-file |
En plus des mots-clés, les options suivantes peuvent être définies
avec le mot-clé OPTIONS
(la variable Emacs peut être utilisée pour
définir une valeur par défaut):
Option | Description | Valeur par défaut | Variable Emacs |
---|---|---|---|
phone |
Ajouter le numéro de téléphone | nil |
org-koma-letter-use-phone |
url |
Ajouter l'URL | nil |
org-koma-letter-use-url |
email |
Ajouter l'E-mail | nil |
org-koma-letter-use-email |
foldmarks |
Ajouter les marques le pliage | t |
org-koma-letter-use-foldmarks |
subject |
Si et où ajouter le sujet sur la lettre | t |
org-koma-letter-subject-format |
place |
Ajouter le lieu, à coté de la date | t |
org-koma-letter-use-place |
backaddress |
Ajouter les marques de pliage | nil |
org-koma-letter-use-backaddress |
from-logo |
Ajouter le logo | nil |
org-koma-letter-use-from-logo |
location |
Ajouter le contenue du mot-clé LOCATION |
t |
org-koma-letter-location |
after-closing-order |
Ordre tags placés après la fermeture | (after_closing ps encl cc) |
org-koma-letter-special-tags-after-closing |
after-letter-order |
Ordre tags placés après la lettre | (after_letter) |
org-koma-letter-special-tags-after-letter |
Pour l'option subject
, les valeurs suivantes sont disponibles:
Valeur | Résultat |
---|---|
t |
Ajouter le sujet, selon l'option par défaut du format |
nil |
Ne pas ajouter le sujet |
afteropening |
Sujet après l'ouverture |
beforeopening |
Sujet avant l'ouverture |
centered |
Sujet centré |
left |
Sujet justifié à gauche |
right |
Sujet justifié à droite |
titled |
Ajouter titre et description au sujet |
untitled |
Ne pas ajouter titre et description au sujet |
underlined |
Sous-ligner le sujet |
Plusieurs lettres dans un document Org-mode
Jusque ici, on a vu comment écrire une lettre avec un document Org-mode. Mais il est aussi possible d'avoir plusieurs lettres écrites dans un seul document Org-mode.
Définition des lettres et de leurs paramètres
Pour avoir plusieurs lettre dans un même document Org-mode, il faut créer une section pour chaque lettre. Les mots clés peuvent être définis de 2 façons:
- En haut du document, comme on l'a vu jusqu'ici
- Sous forme de propriétés rattachées à la section représentant une lettre
Dans le premier cas, le mot clés sera appliqué pour toutes les lettres du document. Utile pour ne pas devoir se répéter à chaque lettre.
Dans le second cas, il faut préfixer chaque propriété avec "EXPORT_
".
Les mots-clés définis comme propriétés ne seront appliqués qu'à la
section.
Le titre des lettres est définit par le titre de la section. Pour
définir le nom du fichier PDF vers lequel chaque lettre est exportée,
tu peux utiliser la propriété EXPORT_FILE_NAME
.
Enfin, les status (TODO
, DONE
, etc) et étiquettes placées sur une
section ne seront pas exportées. Très utile pour gérer le suivie d'une
lettre. Un peu plus loin, j'explique aussi comment ajouter des notes à
une lettre sans que celles-ci ne soient exportés.
Exportation
Pour exporter une des lettres, il faut placer le curseur d'écriture
sur la section et entrer le raccourcis clavier suivant:
C-c C-e C-s k p
.
Ceci va aussi appeler l'exportateur de Org-mode, mais en ajoutant
C-s
on limite l'exportation à la section où se trouve notre curseur.
N'oublie pas la partie C-s
, sinon tu exportera tout le document
Org-mode comme une seule lettre.
Exemple
Voici une reprise de l'exemple montré plus haut dans ce billet, mais adapté pour former 2 lettres:
* Lettre numéro 1 :PROPERTIES: :EXPORT_LANGUAGE: fr :EXPORT_AUTHOR: Fox :EXPORT_FROM_ADDRESS: 4 rue de nulle part\\1000 Lausanne :EXPORT_TO_ADDRESS: OCP\\2 chemin des virgules\\1000 Lausanne :EXPORT_OPENING: Madame, Monsieur :EXPORT_CLOSING: Avec mes meilleures salutations :EXPORT_DATE: \today :EXPORT_PLACE: Lausanne :EXPORT_LCO: SN :EXPORT_OPTIONS: :END: Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. * Lettre numéro 2 :PROPERTIES: :EXPORT_LANGUAGE: fr :EXPORT_AUTHOR: Fox :EXPORT_FROM_ADDRESS: 4 rue de nulle part\\1000 Lausanne :EXPORT_TO_ADDRESS: OCP\\2 chemin des virgules\\1000 Lausanne :EXPORT_OPENING: Madame, Monsieur :EXPORT_CLOSING: Avec mes meilleures salutations :EXPORT_DATE: \today :EXPORT_PLACE: Lausanne :EXPORT_LCO: SN :EXPORT_OPTIONS: :END: Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode. Exemple de lettre écrite avec Org-mode.
Ajouter des notes sur une lettre
Pour ajouter des notes sur une lettre sans que celles-ci soient
exportés, tu peux ajouter une section avec l'étiquette noexport
.
Elle sera ignorée lors de l'exportation, quel que soit le format.
Aller plus loin
Pour aller plus loin, je te conseil de lire:
- La documentation de la classe LaTeX
scrlttr2
- La section exportation LaTeX de la documentation de Org-mode
- Comment définir un nouveau template LaTeX, avec la variable
org-latex-classes
: Raccourcis clavierC-h v org-latex-classes
- Si tu sais lire un peut de
Elisp
, le code source de l'exportateurox-koma-letter
est très instructif
Conclusion
Il est très facile et rapide d'écrire une lettre avec Org-mode, mais si nécessaire de nombreuses options sont disponibles pour adapter cette lettre.
La classe LaTeX scrlttr2
est très complète et mériterait que je lise
sa documentation de plus près. Notamment la partie sur comment créer
son format de lettre.
L'exportateur Org-mode koma-letter
est dérivé de l'exportateur
LaTeX. Il faudrait que je regarde comment créer son exportateur. Ça
pourrait servir pour d'autres classes LaTeX ou même d'autres formats
vers lesquels exporter.
Avec l'exportateur Org-mode pour le format LaTeX, il est probablement
possible d'avoir le même résultat qu'avec l'exportateur koma-letter
.
Mais en écrivant sois-même l'en-tête et une partie du corps
directement au format LaTeX. Avec l'exportateur koma-letter
, on a
juste à écrire quelques mots-clés ainsi que le corps sans faire de
LaTeX. Et certains paramètres qu'on utilise régulièrement peuvent
aussi être définit par des variables Emacs.
Une dernière astuce: Définir des snippets avec Yasnippet, pour créer automatiquement de nouvelles lettres. C'est très pratique.