Aller au contenu

ConTeXt/Enveloppes et mise en page postale

Un livre de Wikilivres.

Enveloppes et mise en page postale (ConTeXt)

[modifier | modifier le wikicode]

Objectifs de cette section

  • comprendre les contraintes de mise en page postale (fenêtres, zones d'adresses) ;
  • savoir créer une enveloppe imprimable (DL, C5, C6, etc.) ;
  • positionner correctement adresse du destinataire et adresse expéditeur ;
  • gérer différentes normes postales (France, Suisse, formats internationaux) ;
  • produire automatiquement enveloppes et courriers à partir de données externes (CSV, publipostage) ;
  • maîtriser deux exemples complets : enveloppe simple et enveloppe automatisée.

L’impression d’enveloppes ou d’adresses de courrier fait partie des usages courants de ConTeXt. Ce système permet de :

  • composer des enveloppes standard (DL, C6, C5, ou personnalisées) ;
  • positionner précisément l’adresse du destinataire ;
  • produire des envois en série grâce au publipostage ;
  • imprimer des enveloppes à fenêtre (fenêtres 90×45 mm, placements normalisés).

Cette page expose les principes essentiels ainsi que des exemples complets reproductibles.


1. Les formats d’enveloppes les plus utilisés

[modifier | modifier le wikicode]

Voici les formats les plus courants en France et en Europe :

Format Dimensions Usage
DL 110 × 220 mm Correspondance A4 pliée en 3
C6 114 × 162 mm Invitation, carte, A4 plié en 4
C5 162 × 229 mm A5 ou A4 plié en 2
C4 229 × 324 mm A4 non plié

ConTeXt permet de créer des pages de la taille de ces enveloppes.


2. Principes généraux de mise en page postale

[modifier | modifier le wikicode]

Les enveloppes à fenêtre ou les lettres destinées à être mises sous pli obéissent à des contraintes typographiques simples :

  • 2.1 Position de l'adresse destinataire

La fenêtre standard française mesure environ :

  • 90 mm × 45 mm
  • située à environ :
 * 20 mm du bord gauche
 * 45 mm du haut

Les courriers suisses ou allemands peuvent avoir des marges légèrement différentes.

  • 2.2 Adresse expéditeur

Elle peut être placée :

  • en haut à gauche,
  • dans une zone petite (bloc expéditeur),
  • ou au-dessus de l’adresse destinataire (selon la charte).
  • 2.3 Police et lisibilité

Les recommandations générales :

  • police sans serif propre (TeX Gyre Adventor, Helvetica, etc.) ;
  • pas de gras ;
  • pas d’italique ;
  • pas de souligné ;
  • interlignage simple ;
  • éviter les abréviations ambiguës.

Astuce
Pour tester l’alignement de la fenêtre : activez \showframe ou \setuplayout[grid=yes] pour visualiser l’emplacement exact des blocs.


3. Exemple simple : Enveloppe DL (110 × 220 mm)

[modifier | modifier le wikicode]

Créons une enveloppe au format réel (pour impression directe).

\setuppapersize[envelope][envelope]   % page = enveloppe
\definepapersize[envelope][width=220mm,height=110mm]

\setuplayout[
  location=middle,
  backspace=20mm,   % marge gauche
  topspace=45mm,    % marge avant la fenêtre
]

\setupbodyfont[10pt]

\starttext

% Adresse destinataire
{\bf Marie Durand} \par
12 rue des Lilas \par
75005 Paris

\stoptext

Ce code crée une enveloppe :

  • de taille réelle ;
  • avec un bloc adresse parfaitement placé pour une fenêtre standard.

4. Exemple avancé : enveloppe automatisée avec lecture depuis CSV

[modifier | modifier le wikicode]

Nous allons générer une enveloppe par adresse, en utilisant un fichier `adresses.csv` :

Fichier CSV : adresses.csv

[modifier | modifier le wikicode]
Nom,Adresse,CPVille
Marie Durand,12 rue des Lilas,75005 Paris
Jean Martin,5 avenue de Lyon,69002 Lyon
Claire Moreau,10 place des Arts,33000 Bordeaux

Comment fonctionne ce fichier CSV ?

[modifier | modifier le wikicode]

Le fichier adresses.csv comporte trois colonnes séparées par des virgules :

Colonne Contenu Exemple
Nom Nom complet du destinataire Marie Durand
Adresse Rue + numéro 12 rue des Lilas
CPVille Code postal + ville 75005 Paris

Chaque ligne représente une adresse complète.

Voici comment l’interpréter :

Nom,Adresse,CPVille        ← ligne d’en-têtes (toujours ignorée)
Marie Durand,12 rue...,75005 Paris
Jean Martin,5 avenue...,69002 Lyon
Claire Moreau,10 place...,33000 Bordeaux

Le script Lua utilise cette structure pour découper chaque ligne en trois parties grâce à la fonction :

nom, adr, cpville = string.match(ligne,"([^,]+),([^,]+),(.+)")

Explication détaillée :

  • ([^,]+) signifie : “tous les caractères jusqu'à la prochaine virgule”.
  • Le CSV est donc découpé en :
 * nom     → partie avant la 1ère virgule
 * adr     → partie entre la 1ère et la 2e virgule
 * cpville → le reste de la ligne

ConTeXt/Lua ignore la première ligne (les en-têtes) grâce à :

if nom ~= "Nom" then
   ...
end

Une fois la ligne découpée, Lua stocke chaque entrée sous la forme d’un tableau :

{ nom="Marie Durand", adr="12 rue des Lilas", cpville="75005 Paris" }

Toutes les entrées sont ensuite collectées dans :

adresses = { entrée1, entrée2, entrée3, ... }

et ConTeXt génère une enveloppe par entrée.

Fichier enveloppes.tex

[modifier | modifier le wikicode]
\setuplanguage[fr]
\mainlanguage[fr]

% définition du format de l’enveloppe
\definepapersize[envelope][width=220mm,height=110mm]
\setuppapersize[envelope][envelope]

\setuplayout[
  backspace=20mm,
  topspace=45mm,   % bloc adressage standard
]

\setupbodyfont[10pt]

\startluacode
function lire_csv()
  local f = io.open("adresses.csv","r")
  local lignes = {}
  for ligne in f:lines() do
    local nom, adr, cpville = string.match(ligne,"([^,]+),([^,]+),(.+)")
    if nom ~= "Nom" then
      lignes[#lignes+1] = {nom=nom, adr=adr, cpville=cpville}
    end
  end
  f:close()
  return lignes
end

adresses = lire_csv()
\stopluacode

\starttext

\startluacode
for i,d in ipairs(adresses) do
  context.startpage()

  context(bold(d.nom)) context.par()
  context(d.adr) context.par()
  context(d.cpville) context.par()

  context.stoppage()
end
\stopluacode

\stoptext

Résultat : 🟦 Un PDF avec autant de pages que d’adresses → une enveloppe par personne.


5. Ajouter l’adresse expéditeur

[modifier | modifier le wikicode]

On peut définir un bloc expéditeur en haut à gauche :

\framed[frame=off,align=flushleft,width=50mm]{%
Société Exemple\crlf
24 boulevard Saint-Michel\crlf
75006 Paris
}

À placer avant le bloc destinataire.


6. Mise en page postale pour lettres à fenêtre

[modifier | modifier le wikicode]

Beaucoup de lettres doivent s’aligner parfaitement avec une fenêtre :

\setuplayout[
  backspace=20mm,
  topspace=45mm,
]

\starttext

\rightaligned{Société Exemple\crlf 24 boulevard Saint-Michel\crlf 75006 Paris}

\vfill

{\bf Jean Dupont}\par
10 rue Centrale\par
69003 Lyon

\stoptext

Cette méthode garantit que, une fois pliée, la lettre présente l’adresse dans la fenêtre.


7. Erreurs fréquentes à éviter

[modifier | modifier le wikicode]

Avertissement

  • Ne pas mesurer la fenêtre sur l’enveloppe : utilisez les normes (20 mm gauche / 45 mm haut).
  • Ne pas utiliser de polices fantaisistes → privilégier une sans serif.
  • Ne pas ajouter de couleurs inutiles → risque de mauvaise lisibilité.
  • Éviter les césures dans les adresses (forcer \setupalign[nothyphenated] si nécessaire).
  • Ne pas oublier l'encodage UTF-8 pour le CSV → caractères accentués sinon corrompus.

8. Bonnes pratiques

[modifier | modifier le wikicode]
  • Faire un test sur papier brouillon avant d’utiliser les enveloppes définitives ;
  • Utiliser \showframe pendant toute la phase de test ;
  • Préférer des blocs propres et sobres : pas de cadres inutiles ;
  • Tester d'abord une seule enveloppe avant le publipostage complet ;
  • Documenter les paramètres (marges) dans des commentaires.