Aller au contenu

ConTeXt/Espaces et typographie fine

Un livre de Wikilivres.

Gérer les espaces dans ConTeXt : chapitres, paragraphes, mots

[modifier | modifier le wikicode]

Cette page présente trois niveaux d’« espaces » dans ConTeXt :

  • les espaces après un chapitre ou un titre ;
  • les espaces entre les paragraphes ;
  • les espaces entre les mots, ainsi que la question de la césure.

ConTeXt dispose de plusieurs mécanismes (hérités de MKII/MKIV) dont l’interaction est parfois subtile : \setupwhitespace, \blank, les options before= et after= des environnements, la césure automatique, les espaces insécables, etc. L’objectif de cette page est de clarifier « où se déclenche » réellement le blanc, et comment le maîtriser.

Objectifs de cette section
Cette page a pour but de :

  • montrer comment régler et contrôler l’espace après un chapitre ;
  • expliquer la différence entre \setupwhitespace (parskip global) et \blank (blanc local) ;
  • illustrer les effets de before= et after= dans les environnements (cas réel avec \starttyping) ;
  • présenter les principaux types d’espaces entre les mots (insécable, fine, etc.) ;
  • rappeler le fonctionnement de la césure (hyphénation) dans ConTeXt.

1. Espaces après un chapitre ou un titre

[modifier | modifier le wikicode]

Le blanc qui suit un chapitre ou un titre n’est pas contrôlé par \setupwhitespace, mais par la configuration des en-têtes avec \setuphead.

Pour ajouter un blanc avant ou après un chapitre :

\setuphead[chapter][
  before={\blank[big]},
  after={\blank[3*big]},
]

La clé after= est l’endroit privilégié pour régler l’espace après le titre.

Astuce
Une bonne stratégie consiste à :

  • fixer un after= raisonnable pour les chapitres (par exemple \blank[medium]) ;
  • garder \setupwhitespace modéré (par exemple [small] ou [medium]) ;
  • corriger ponctuellement avec \blank[big] ou \blank[nowhite] là où c’est vraiment nécessaire.

Cela évite d’avoir à « lutter » en permanence contre un parskip trop agressif.

1.1. Ajouter ou réduire l’espace après un chapitre

[modifier | modifier le wikicode]

Exemple minimal :

\setuphead[chapter][
  before={\blank[big]},     % blanc avant le titre
  after={\blank[medium]},   % blanc après le titre
]

\setupwhitespace[big]

\starttext
\chapter{Premier chapitre}
Paragraphe de texte après le chapitre. Le parskip (\setupwhitespace)
et le blanc de "after=" se cumulent.

\chapter{Deuxième chapitre}
Texte suivant.
\stoptext

Points importants :

  • before= agit directement avant le titre ;
  • after= agit juste après le titre ;
  • si \setupwhitespace[big] est actif, le paragraphe qui suit ajoute lui-même un parskip.

En pratique : le blanc réel après un chapitre est souvent la somme de after= et du parskip du premier paragraphe.

1.2. Supprimer (vraiment) l’espace après un chapitre

[modifier | modifier le wikicode]

Pour supprimer tout blanc visible après un chapitre, il ne suffit pas de vider after= : il faut aussi neutraliser l’espace entre paragraphes si celui-ci est non nul.

% Pas de blanc propre au chapitre
\setuphead[chapter][after={}]

% Pas de parskip entre paragraphes
\setupwhitespace[none]

Si vous laissez \setupwhitespace[big] actif, il restera toujours un blanc au début du paragraphe suivant, même avec after={}.

Attention
Il est tentant d’empiler des réglages du type after={\blank[disable]} ou \blank[nowhite] sans toucher au parskip global. En typographie, une suppression trop systématique des blancs peut rendre le texte difficile à lire. Mieux vaut :

  • choisir un parskip cohérent pour tout le document ;
  • réserver les neutralisations (\blank[nowhite], etc.) à des cas particuliers (blocs, environnements).

2. Espaces verticaux entre paragraphes

[modifier | modifier le wikicode]

C’est ici que se concentrent la plupart des difficultés (et la « Zen » demandée par Jim).

Deux mécanismes se combinent :

  • \setupwhitespace : règle globale du blanc entre paragraphes (parskip) ;
  • \blank : insertion ou suppression locale d’espace vertical.

2.1. \setupwhitespace : le parskip global

[modifier | modifier le wikicode]
\setupwhitespace[big]   % valeurs courantes : none, small, medium, big, ...

Ce réglage s’applique quand un nouveau paragraphe commence. Autrement dit, ConTeXt insère un blanc au moment où il détecte le début d’un nouveau paragraphe, pas forcément à l’endroit où vous vous attendiez en lisant le code.

Exemple simple :

\setupwhitespace[big]

\starttext
Premier paragraphe. \samplefile{tufte}

Deuxième paragraphe. \samplefile{tufte}

Troisième paragraphe. \samplefile{tufte}
\stoptext

Ici, c’est uniquement \setupwhitespace[big] qui crée le blanc vertical entre les paragraphes.

Astuce
Pour comprendre ce qui se passe, commencez par un document de test très simple :

  1. mettez \setupwhitespace[none] et observez ;
  2. passez à [small], puis [big], sans aucun \blank ;
  3. seulement ensuite, ajoutez quelques \blank[big] ou \blank[nowhite].

Voir séparément l’effet du parskip et celui de \blank aide beaucoup à démêler les cas complexes.

2.2. \blank : contrôle local du blanc vertical

[modifier | modifier le wikicode]

\blank agit localement, indépendamment du parskip global.

Variantes usuelles :

  • \blank : blanc standard ;
  • \blank[big], \blank[3*big] : blanc plus grand ;
  • \blank[packed] : blanc « serré » ;
  • \blank[nowhite] : supprime le blanc dû à la fin de paragraphe ;
  • \blank[disable] : neutralise un blanc forcé ;
  • \blank[back] : permet de revenir en arrière dans certaines situations.

Exemple inspiré de la réponse de Wolfgang :

\starttext
  \setupwhitespace[big]
  \samplefile{tchaikovsky}\par
  \blank[nowhite]             % supprime le parskip entre ces deux paragraphes
  \samplefile{tchaikovsky}\par
  \blank[3*big]               % très grand blanc
  \blank[back]                % on revient en arrière
  \samplefile{tchaikovsky}\par
\stoptext

2.3. before=, after= et le cas de \starttyping (Jim)

[modifier | modifier le wikicode]

La difficulté rencontrée par Jim est la suivante :

  • il souhaite un bloc \starttyping sans espace au-dessus ni au-dessous ;
  • before=, after=, fonctionnent tant que \setupwhitespace est à [none] ;
  • mais dès qu’il active \setupwhitespace[big], un blanc « obstiné » réapparaît, surtout en dessous.

Pourquoi ?

Parce que le parskip (whitespace) se déclenche quand un nouveau paragraphe commence : ce n’est pas forcément le même endroit que before= ou after=.

Dans le cas de Jim :

\setupwhitespace[big]

This is a line above \type{\starttyping}:
\starttyping
3. this is typing (and has space above and below just like '1.')
\stoptyping
This is a line below.

Même en écrivant :

\starttyping[before=,after=,]

le parskip est tout de même inséré au moment où la ligne « This is a line below. » commence. Les réglages before= et after= n’ont pas autorité sur cette transition de paragraphe.

Attention
On pourrait croire que before= et after= contrôlent « tout » le blanc autour d’un environnement. En réalité, ils ne voient ni le parskip que déclenche le paragraphe suivant, ni certains blancs hérités de la structure. Si un blanc résiste, demandez-vous toujours : « à quel moment exact un nouveau paragraphe commence-t-il ? ».

2.4. Comment vraiment supprimer le blanc autour de \starttyping

[modifier | modifier le wikicode]

La solution consiste à « accrocher » les bons mécanismes au bon endroit. ConTeXt permet de configurer globalement l’environnement typing avec \setuptyping :

\setuptyping
  [before={\blank[disable]},
   after={\blank[nowhite]}]

\starttext

Before
\starttyping
Inbetween
\stoptyping
After

\stoptext

Explication :

  • before={\blank[disable]} empêche un blanc forcé de se glisser avant le bloc ;
  • after={\blank[nowhite]} supprime le blanc dû à la fin du paragraphe que typing introduit implicitement, et celui au début du paragraphe suivant.

Astuce
La même technique peut s’appliquer à d’autres environnements (par exemple quotation, itemize, etc.) :

\setupquotation[before={\blank[disable]},after={\blank[nowhite]}]

Testez toujours ces réglages dans un petit document isolé avant de les intégrer à un projet plus complexe.

C’est exactement le genre de réglage que Wolfgang évoque lorsqu’il dit :

« It all depends on where you hook it in. Whitespace aka parskip kicks in when a new paragraph starts. »

Autrement dit : le secret n’est pas de supprimer le blanc “au hasard”, mais de comprendre à quel moment un nouveau paragraphe commence.


3. Espaces entre mots et césure

[modifier | modifier le wikicode]

Enfin, le troisième niveau travaille à l’intérieur de la ligne : les espaces entre mots et la façon dont ConTeXt coupe les mots (césure).

3.1. Espaces insécables et espaces spéciales

[modifier | modifier le wikicode]

Quelques cas courants :

M.~Dupont              % espace insécable
vol.~2                 % "vol." et "2" restent ensemble
Jean-Paul~II

Après certaines commandes, il peut être utile de forcer une espace explicite :

\TeX\ est un système de composition.
\LaTeX\ aussi.

Espaces fines (selon la configuration et les polices) :

Texte\thinspace: valeur.
Texte\hairspace: valeur.

3.2. Césure et règles de langue

[modifier | modifier le wikicode]

La césure automatique dépend de la langue principale et des motifs de césure (patterns) :

\mainlanguage[fr]
\setuplanguage[fr][patterns=fr]

Pour empêcher la césure d’un mot :

\unhyphenated{hypertexte}
\hyphenatedword{} % selon les cas d’usage

Pour forcer une césure à un endroit précis :

extra\-ordinaire
hyper\-textuel

Astuce
En français, il est souvent utile de vérifier :

  • que la langue principale est bien \mainlanguage[fr] ;
  • que les motifs de césure (patterns) sont activés pour [fr] ;
  • que vos polices disposent des glyphes nécessaires (apostrophes typographiques, ligatures, etc.).

Une césure « bizarre » est souvent le symptôme d’un problème de langue ou de police, plutôt que de ConTeXt lui-même.


  • Après un chapitre : utiliser \setuphead[chapter][after={...}], en tenant compte du parskip du paragraphe qui suit.
  • Entre paragraphes : \setupwhitespace gère le parskip au moment où commence un nouveau paragraphe.
  • Blanc local : \blank[nowhite], \blank[disable], \blank[packed] permettent d’ajouter, de serrer ou de supprimer des blancs ponctuels.
  • Environnements (ex. \starttyping) : les options before= et after= doivent être utilisées en comprenant où se termine et où commence le paragraphe (cf. \setuptyping[before={\blank[disable]}, after={\blank[nowhite]}]).
  • Entre les mots : les espaces insécables (~), les espaces fines (\thinspace, \hairspace) et la césure (patterns, \unhyphenated) complètent la panoplie typographique.