Écrire une lettre avec LaTeX

Il existe, grosso modo, deux classes de documents pour écrire une lettre sous LaTeX : la classe letter et la classe lettre.

La classe letter

Les bases

C'est la plus simple des deux (mais forcément, elle fait moins de choses...). Attention, par défaut, cette classe ne respecte pas la convention de placement des noms à la française. \usepackage{french} corrige cela (ce package n'existe plus, le remplacent un package commercial frenchpro et une version diminuée de ce dernier mais gratuite frenchle), mais pas \usepackage[francais]{babel}.

Un document de base est structuré comme suit (les parties qui doivent être modifiées sont en italique) :

\documentclass[11pt]{letter}

\name{nom de l'expéditeur}
\address{adresse de l'expéditeur}
\signature{signature de l'expéditeur}
\date{date d'expédition} 

\begin{document}
\begin{letter}{nom du destinataire}
\opening{formule de politesse (« adresse » : cher Monsieur, etc.)}

Corps de la lettre

\closing{formule de politesse (veuillez agréer, etc)}
\ps{post-scriptum}
\cc{nom des autres destinataires}
\encl{pièces jointes}
\end{letter}
\end{document}

Bien entendu, il n'est pas nécessaire de spécifier \ps, ou \cc, s'il n'y a pas lieu. Vous pouvez télécharger le fichier modèle pour la classe de documents letter.

Gestion des langues

La présentation de la lettre dépendra de la langue choisie. Par défaut, la présentation est anglaise (on signe à la main sous le nom, présentation en blocs sans indentation pour la première ligne d'un paragraphe, formule de politesse d'ouverture alignée à gauche, etc.) En utilisant le package french de babel (attention, c'est bien french qu'il faut et non francais).

La classe lettre

La classe lettre se fonde sur letter, mais avec quelques améliorations. Elle a été écrite par Denis Mégévand.

Les bases

Voici un exemple de fichier de base (vous disposez de toutes les commandes de la classe letter, on ne les redonne pas toutes ici) :

\documentclass[11pt]{lettre}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\begin{document}
\begin{letter}{destinataire}
\name{expéditeur}
\def\concname{Objet :~} % On définit ici la commande 'objet'
\conc{Objet de la lettre}
\nref{Références de la lettre, de votre point de vue}
\vref{Références de la lettre, du point de vue de votre interlocuteur} 
\opening{Madame, Monsieur,}

Corps de la lettre

\closing{formule de salutations}

\end{letter}
\end{document} 

Supprimer le trait de pliage

Une question fréquente concerne la manière de retirer le trait que la classe lettre imprime pour faciliter le pliage du courrier en trois. On peut trouver disgracieux ce trait. Pour le retirer, il y a trois méthodes

Premièrement, on peut placer dans le préambule cette définition

\makeatletter
\newcommand*{\NoRule}{\renewcommand*{\rule@length}{0}}
\makeatother

et utiliser la commande \NoRule dans le corps des lettres pour lesquelles on ne souhaite pas ce trait. Par exemple

\begin{letter}{Premier destinataire}
  \NoRule
  Corps de la lettre
\end{letter}

\begin{letter}{Second destinataire}
  Corps de la lettre
\end{letter}

donnera deux lettres, dont la première n'aura pas de trait de pliage mais la seconde si.

Deuxièmement, vous pouvez placer dans le fichier .ins (voir la section « Personnaliser ») une ligne supprimant le trait chaque fois que vous utiliserez ce fichier .ins.

\renewcommand*{\rule@length}{0}

Troisièmement, si vous voulez systématiquement supprimer ce trait, vous pouvez créer une classe spéciale xletter. Créez un fichier xletter.cls et saisissez le code suivant.

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{xlettre}

\newcommand*{\xlettre@do}{}
\newcommand*{\xlettre@rule}{}
\newcommand*{\xlettre@norule}{%
  \let \xlettre@institut=\institut
  \def \institut ##1{%
    \xlettre@institut{##1}%
    \def \rule@length {0}%
  }%
  \def \@institut {%
    \makeatletter \input{default.ins}\makeatother
    \def \rule@length {0}%
  }%
}

\DeclareOption{rule}{\let \xlettre@do =\xlettre@rule}
\DeclareOption{norule}{\let \xlettre@do =\xlettre@norule}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{lettre}}

\ExecuteOptions{norule}
\ProcessOptions

\LoadClass{lettre}

\xlettre@do

\endinput

Placez ce fichier dans les chemins de recherche de TeX. L'utilisation de cette classe est strictement identique à celle de lettre mais elle accepte deux options supplémentaires :

\documentclass{xlettre}

ou

\documentclass[norule]{xlettre}

supprime systématiquement les traits de pliage, tandis que

\documentclass[rule]{xlettre}

les ajoute conformément aux règles de la classe lettre.

Personnaliser

Un certain nombre de paramètres de vos lettres sont peu susceptibles de changer. Votre nom ou votre adresse, par exemple. Vous souhaiteriez donc pouvoir disposer d'un en-tête par défaut pour vos lettres. Ça tombe bien, car avec la classe lettre, l'en-tête par défaut est obligatoire.

L'en-tête est défini dans un fichier de configuration, default.ins et qui doit être placé dans le répertoire inputs (une autre possibilité est de placer ces commandes dans un fichier noel.ins et d'utiliser dans le fichier .tex la ligne

\institut{noel}

dans le préambule, à chaque fois que vous devrez utiliser ces paramètres). Voici un exemple :

\name{Père Noël}
\signature{Papa Noël}
\address{\centering
  \textbf{\textsc{Père Noël, Lutins et Associés}}\\
  % On peut mettre en forme l'en-tête... Ici, il est centré, et on
  % demande à ce que le nom soit en petites majuscules et en gras.
  Fabricant de jouets depuis toujours\\
  Palais des Jouets}
\lieu{Pôle Nord}

% Ce paramètre sert à indiquer dans la lettre « Au Pôle
% Nord, le 25 décembre 2000 »

\telephone{}
\email{pere.noel@polenord.pn}
\nofax
% C'est \fax{} pour indiquer un numéro de fax

Ce qui donne la chose suivante en guise d'en-tête :

En-tête
Auteurs : Marie-Lan Nguyen (2000), François-Xavier Coudert (2002).