Vous tapez du texte latin brut et TeX le définit avec un soin surprenant : il fusionne fi et ff en ligatures, forme automatiquement des paires de kerns comme AV, scanne tout le paragraphe pour choisir les sauts de ligne et la césure, et justifie les bords. Cette page présente les quatre mécanismes derrière cela — ligatures, crénage, saut de ligne avec césure et microtype — avec les choses qu'un auteur doit savoir et les rares cas où vous souhaitez intervenir. Tout cela concerne le texte occidental ; Le japonais a son propre modèle de composition.
Ligatures
Une ligature fusionne plusieurs lettres adjacentes en un seul glyphe. Parce que le surplomb en haut à droite d'un f entre en collision avec le point d'un i suivant ou avec l'ascendant d'un l, les ligatures f sont utilisées depuis l'époque des caractères métalliques. TeX les forme automatiquement. Les cinq qu'il crée par défaut sont ff, fi, fl, ffi et ffl : tapez simplement office ou fluffier et les lettres pertinentes sont remplacées par un glyphe.
La même machinerie construit également des ligatures de ponctuation. Une série de traits d'union -- devient un tiret ca (–, pour les plages numériques et similaires), et trois d'affilée --- un tiret em (—, pour les sauts entre parenthèses). Deux guillemets ` et deux apostrophes ''` se transforment en guillemets doubles ouvrants et fermants appropriés. Ces conversions résident dans les métriques de polices occidentales ; aucune commande spéciale n'est nécessaire.
Mais lorsqu'une ligature chevauche une limite de morphème - la couture où un mot a été construit à partir de parties - cela peut nuire à la lisibilité. L'exemple classique est shelfful (shelf + ful) : la fusion du ff masque la jointure entre shelf et ful. Knuth cite ce mot dans *The TeXbook* et dit qu'il devrait être défini comme shelf\/ful. halflife, offhand et wolffish sont du même type. Le japonais n'a pas un tel problème, mais c'est un écueil qu'il vaut la peine de connaître lorsqu'on prend au sérieux un texte occidental.
Il existe trois manières traditionnelles de rompre une ligature indésirable. f\/f insère une correction italique \/ — un petit espace de la taille du surplomb de la lettre — entre les deux f (c'est ce que Knuth a utilisé). f{}f insère un groupe vide {}. f\kern0pt f insère un crénage de largeur nulle. Tous les trois suppriment la ligature, mais notez un piège classique : mettre une telle coupure à l'intérieur d'un mot peut désactiver la césure pour ce mot. Pour les mots courts, le préjudice pratique est négligeable.
shelf\/ful % italic correction — Knuth's example
shelf{}ful % empty group
shelf\kern0pt ful % zero-width kernSi vous utilisez LuaLaTeX, le package selnolig est la meilleure solution. Il porte la morphologie anglaise sous forme de modèles et supprime automatiquement les ligatures indésirables dans des mots comme shelfful ou wolffish — sans aucun balisage dans votre texte et tout en gardant la césure intacte. À l'inverse, pour désactiver *toutes* les ligatures, microtype (ci-dessous) peut les désactiver par police en un seul endroit.
Crénage
Un kern ajuste l'écart entre une paire spécifique de lettres adjacentes - en le fermant ou en l'ouvrant pour que l'espacement semble uniforme. Les exemples de stock sont des paires comme AV, To, Wa et LT, qui, sans aide, semblent béantes à cause des inclinaisons et des incidences latérales des lettres. TeX le fait automatiquement aussi. Chaque police occidentale fournit un tableau de paires de crénage — « fermez cette paire d'autant, ouvrez celle-là » — dans ses métriques de police (un fichier .tfm dans le monde pdfLaTeX, ou un tableau à l'intérieur de la police pour les faces OpenType), et TeX le lit pour définir l'espacement.
Le point clé : les ligatures et le crénage sont invisibles dans votre source et appliqués automatiquement à partir des métriques de police. Vous n'avez normalement pas besoin d'y penser du tout. Ce n'est que lorsque vous souhaitez combler un espace à la main que vous ajoutez un petit espace (ou un espace négatif pour resserrer) avec \kern et une longueur explicite. Et pour suivre ou espacer uniformément un mot entier, ne dispersez pas vos propres \kerns - utilisez le \textls de microtype (ci-dessous), qui permet à la césure de fonctionner.
Espacement, justification et césure entre les mots
Ce qui rend le paramètre de TeX particulièrement beau, c'est qu'il choisit les sauts de ligne en regardant tout le paragraphe à la fois. Là où de nombreux traitements de texte corrigent une ligne à la fois, TeX utilise l'algorithme de Knuth-Plass pour évaluer des combinaisons entières de points d'arrêt et choisir la division qui minimise l'étirement ou la réduction des espaces entre les mots dans le paragraphe. La justification est obtenue dans ce processus en étirant et rétrécissant la colle inter-mots afin que les lignes atteignent la même largeur.
Pour bien regrouper les lignes, TeX coupe automatiquement les mots aux limites des syllabes en utilisant des modèles de césure spécifiques à la langue. Le fait crucial est que les modèles dépendent de la langue : enfreindre les règles de l'allemand ou du français par l'anglais donne de mauvais résultats. Vous déclarez donc la langue du document avec babel (ou polyglossia pour LuaLaTeX/XeLaTeX), qui charge les modèles corrects pour celui-ci. C'est une condition préalable pour définir correctement le texte, pas une décoration.
La césure automatique est astucieuse mais peut mal juger les noms propres et les termes techniques. Les remèdes se déclinent en trois niveaux. (1) Pour qu'un mot particulier se brise toujours uniquement aux points choisis, indiquez-le dans le préambule dans \hyphenation{...}, en marquant les points autorisés avec - (mots séparés par des espaces). (2) Pour un point d'arrêt unique, placez \- (un trait d'union discrétionnaire) à l'intérieur du mot — mais notez que l'ajout de \- signifie que le mot ne peut alors être rompu qu'à cet endroit. (3) Pour interdire de casser un mot, enveloppez-le dans \mbox{...}.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel} % load English hyphenation patterns
\hyphenation{FORTRAN manu-script data-base} % global exceptions
\begin{document}
We rewrote the man\-u\-script in \mbox{FORTRAN} overnight.
\end{document}Vous pouvez régler la façon dont un paragraphe contient deux déclarations. \sloppy tolère des espaces inter-mots plus larges pour éviter que les lignes ne dépassent la marge (cases trop pleines), tandis que \fussy (la valeur par défaut) maintient un espacement strict au prix de plus de dépassements (l'avertissement « Overfull \hbox »). Pour desserrer un seul paragraphe, enveloppez-le dans l'environnement sloppypar. Mais \sloppy a tendance à laisser des lignes vides, donc retravailler le libellé ou ajouter un seul \- donne généralement un plus beau résultat.
Polissage avec microtype
Enfin, le package qui lève visiblement la composition occidentale est microtype. Une seule ligne, \usepackage{microtype}, active par défaut les deux raffinements micro-typographiques fournis par pdfTeX. L'une est la saillie du caractère (crénage de la marge) : la ponctuation de fin de ligne et les lettres rondes ou inclinées comme o et A sont poussées d'un cheveu au-delà de la marge droite afin que le bord soit optiquement uniforme. L'autre est font expansion : les glyphes de chaque ligne sont étirés ou comprimés d'une infime quantité (une fraction de pour cent), prenant en charge une partie du travail de la colle inter-mots et donnant un paragraphe plus uniforme et plus serré.
Au-delà de cela, le package propose également un ajustement de l'espacement entre les mots, un crénage supplémentaire, un espacement des lettres avec trait d'union (\textls{...}) et la désactivation des ligatures. Les fonctionnalités disponibles dépend du moteur. Protrusion fonctionne avec pdfTeX, LuaTeX et XeTeX ; l'extension fonctionne avec pdfTeX et LuaTeX uniquement (pas avec XeTeX) ; la désactivation des ligatures fonctionne avec pdfTeX et LuaTeX. Le package active par défaut uniquement ce qui peut fonctionner en toute sécurité sur votre moteur, donc le charger sans option suffit pour démarrer.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype} % protrusion + expansion, on by default
\begin{document}
Long justified paragraphs look noticeably more even with microtype:
fewer rivers of white space, tidier right margins, and \textls{LETTERSPACED}
small caps when you ask for them.
\end{document}Les ajustements sont subtils - pas évidents au premier coup d'œil - mais sur une page, ils apparaissent comme moins de rivières d'espaces blancs, des fins de ligne plus régulières et moins de césure. Pour une composition occidentale sérieuse, l'ajout de microtype est en fait un geste standard - une mise à niveau de qualité quasi obligatoire. Et encore une fois, ces effets s'appliquent au texte occidental (latin). Le japonais possède son propre modèle de composition, distinct de la saillie et de l'expansion, géré par des outils tels que luatexja.
Faire une épreuve en texte occidental
Même dans les manuscrits centrés sur le japonais, une épreuve dédiée aux titres occidentaux, aux entrées bibliographiques, aux URL, aux noms et aux noms de packages rend la finition plus stable. Dans cette passe de texte occidental, vérifiez les noms propres où les ligatures doivent être supprimées, les termes techniques qui peuvent être coupés et les lignes trop pleines qui restent après microtype. Contrairement à la planification des paragraphes, ce travail est plus efficace vers la fin, une fois que le texte est en grande partie réglé.
- Noms propres : décidez si les ligatures telles que
ffetfidoivent être supprimées dans les logos ou les noms personnels, et coupez-les localement avec{}ou\kern0ptuniquement lorsque cela est nécessaire. - Termes techniques : ajoutez
\hyphenation{...}ou\-pour les mots longs récurrents afin de ne pas corriger chaque ligne à la main. - Qualité du corps : jugez le paragraphe après le chargement de
\usepackage{microtype}. Sauter d'abord à\sloppyrelâche souvent l'espacement. - Composition japonaise : réglez-la via le moteur et le modèle de package japonais, et non via
microtype.