Les longueurs et unités dans ConTeXt

Pourquoi vouloir manipuler les longueurs sous ConTeXt?

Je pense qu’il faut le faire le moins souvent possible. Ajouter ou modifier les espaces entre les paragraphes ou les illustrations diminuer la taille des marges,… est très souvent une mauvaise idées héritée des traitements de texte WYSIWYG. ConTeXt se débrouille très bien tout seul, avec la mise en page, après tout c’est son boulot.

M’enfin on ne se refait pas et il arrive toujours un moment ou l’on veut mettre son grain de sel dans cette belle organisation, ne serait-ce que pour tracer un trait, mettre une illustration au centre de la page, espacer des colonnes, supprimer une indentation, que sais-je encore?

Cette fiche te donneras quelque renseignements pour manipuler les longueurs sous ConTeXt

Attention les commandes de longueur sont très nombreuses sous ConTeXt. Il en existe pour gérer la mise en page, les tableaux, les boites, les illustrations,… Ces longueurs ne seront pas abordées ici mais dans des fiches spécifiques, consacrés à ces objets.

Types d’unité

Sous ConTeXt il existe deux types d’unité :

Les unités absolues :
ces unités ont toujours la même valeur quelque soit la forme du document et sont indépendantes de ConTeXt. Par exemple le point, le centimètre, le millimètre.
Les unités relative :
ces unités dépendent des caractéristiques de ton documents. Par exemple le cadratin, qui représente la largeur de la lettre M dans la police courante, dépend bien évidement la police utilisée. \textwidth qui représente la longueur du texte dépend de la mise en page de ton document.

Unités absolues ou unités relatives, that the question ?

Je ne sais pas si il y a une réponse définitive, tout ce que je peux te répondre, c’est ce que je fais.

En gros pour tout ce qui concerne le texte, comme la taille d’un saut de ligne ou d’une indentation, la taille d’un tableau et de ses colonnes, j’utilise les distances relatives, car si, par exemple, je change le type de police ou la dimension des marges, les distances ainsi définies vont évoluer en fonction de ces nouvelles données et les proportions recherchées vont être conservées. Par contre pour tout ce qui concerne la page, comme placement d’objet, la taille des marges, …, j’utilise les unités absolues. Le format de page A4 étant définit en centimètre (21x29,7 cm) je me repère mieux dans la page en utilisant les centimètres. De même pour la taille des photos, un format de 9x13 cm est plus facile à se représenter que 0.8\textwidth.

Unités absolues

Pour cette partie je me suis contenté de traduire le texte du wiki de ConTeXt.

Une dimension, en TeX donc en ConTeXt, est une variable qui stocke une longueur. La longueur est saisie en tant que nombre immédiatement suivi de deux lettres qui indiquent l'unité, par ex. 12pt ou 1cm (pas d'espace entre le nombre et l'unité). TeX donc ConTeXt reconnaît 9 unités différentes :

Unités relatives

Même remarque que pour les unités absolues elles sont nombreuses et je ne vais te décrire que les principales que j’utilise.

Le cadratin

Le cadratin (em), qui représente la largeur de la lettre M dans la police courante, mais qui, dans les faits, équivaut à la largeur des corps. Par exemple dans un texte tapé en corps 11, un cadratin mesurera 11 points.

Le tiret long ou tiret cadratin — que l’on écrit en ConTeXt « --- » et que tu utilises si tu veux retranscrire un dialogue, vaut 1 em.

Le tiret court (demi-cadratin) – que l’on écrit en ConTeXt « -- » et qui est utilisé dans les listes, vaut 0,5 em.

Le quart de cadratin (0,25 em) - que l’on écrit en ConTeXt « - » qui est utilisé pour les césure ou les mots ou noms composés.

Le signe moins − s’écrit en ConTeXt $-$. Le $ permet de passer en mode mathématique.

L’espace fine qui ce met devant les signes doubles comme :;! ou? s’écrit \, en ConTeXt et vaut un quart de quadratin.

L’œil

Cette unité, notée « ex » correspond à la hauteur du x bas-de-casse. Voici un petit schéma emprunté à Wikipédia pour mieux comprendre.

Je l’utilise rarement et essentiellement pour définir des hauteurs, comme par exemple ajouter un espace entre deux lignes \blank[1.5ex], c’est à dire, égal à 150% de la hauteur du x bas-de-casse, ou l’épaisseur d’un trait \backrule[width=5cm,heigh=0.5ex]. De cette façon si je change la police de mon document les proportions sont conservées, ce qui n'est pas le cas si j'utilise les millimètres.

Système propre à ConTeXt

Ces unités sont essentiellement utilisées dans la mise en page des documents. Je te renvoie à la fiche sur la mise en page pour en avoir la liste. J'en utilise que deux \textwidth et \makeupwidth

\makeupwidth représente la longueur d’une ligne texte dans la page. \textwidth représente la longueur de la ligne de texte dans l’environnement courant. La plupart du temps \makeupwidth = \textwidth, mais quand on est dans un environnement framed ou dans un environnement multi-colonnes les 2 valeurs sont différentes. Dans le dessin ci-dessous la ligne bleue représente \makeupwidth et la rouge \textwidth.

\starttext
\input tufte

\blackrule[ width=\makeupwidth,color=blue]
\blackrule[ width=\textwidth,color=red]

\startcolumns[n=3]
\input tufte

\blackrule[ width=\makeupwidth,color=blue]

\blackrule[ width=\textwidth,color=red]
\stopcolumns
\stoptext

Tu peux utiliser des multiplicateurs avec ces commandes. Ci-dessous je vais tracer une ligne de la largeur d’une ligne de texte par la commande :
\backrule[width=\textwidth]
et une suivante moitié plus petite
\backrule[width=0.5\textwidth].

Attention à chaque fois que tu utilises une = ne l'entoure pas d'espace. Si sous LaTeX cela n'a aucune importance, ConTeXt n'aime pas du tout et c'est source d'erreur de compilation difficile à retrouver. Donc tu écris width=0.5\textwidth et pas width = 0.5\textwidth ou width= 0.5\textwidth.