ConTeXt/Espaces et typographie fine
Gérer les espaces dans ConTeXt : chapitres, paragraphes, mots
[modifier | modifier le wikicode]← Page précédente : Polices et familles de polices | Sommaire du Wikilivre ConTeXt | Page suivante : Tester et explorer les polices dans ConTeXt →
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=etafter=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
\setupwhitespacemodé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 :
- mettez
\setupwhitespace[none]et observez ; - passez à
[small], puis[big], sans aucun\blank; - 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
\starttypingsans espace au-dessus ni au-dessous ; before=, after=,fonctionnent tant que\setupwhitespaceest à[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 quetypingintroduit 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.
4. Résumé
[modifier | modifier le wikicode]- Après un chapitre : utiliser
\setuphead[chapter][after={...}], en tenant compte du parskip du paragraphe qui suit. - Entre paragraphes :
\setupwhitespacegè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=etafter=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.