Soulignement et barré (ulem/soul)

Vous souhaitez souligner une phrase ou la barrer pour la marquer comme supprimée — cette page répertorie les outils pour cela. Le \underline{...} intégré de LaTeX fonctionne dans n'importe quel document, mais il s'agit en réalité d'une commande mathématique : elle ne peut pas franchir les lignes et semble grossière. Pour un texte long, utilisez les sauts de ligne soulignés et barrés du package ulem ; pour l'espacement des lettres et le surlignage au marqueur, utilisez le package soul. Notez que le soulignement est généralement évité comme moyen de mise en valeur dans la composition occidentale — pour mettre l'accent, utilisez \emph (voir la page séparée).

Le \underline intégré et ses limites

Écrivez \underline{the phrase to underline} et une règle est tracée sous l’argument. Aucun package n’est nécessaire, et la commande fonctionne à la fois en texte et en mathématiques. En réalité, son domaine naturel est le mode mathématique : c’est l’outil qui trace une ligne sous une variable, comme dans $\underline{x}$. Lorsque vous l’utilisez dans du texte, imaginez que LaTeX souligne une boîte dont le contenu a été traité comme des mathématiques ; cela explique son comportement.

latex
This word is \underline{underlined} in running text.

Deux faiblesses en découlent. Tout d'abord, \underline produit une seule boîte incassable, elle ne peut donc pas être coupée à la fin d'une ligne : si la phrase soulignée ne correspond pas à la largeur de la ligne, elle déborde dans la marge de droite au lieu de s'enrouler. Un seul mot court suffit, mais soulignez une longue phrase ou une phrase entière et tout s'effondre. Deuxièmement, il n'ajuste pas l'épaisseur ou la position de la règle aux glyphes (en particulier les descendants comme g et p), donc la ligne peut sembler couper dans les lettres, semblant grossière.

En bref, \underline suffit pour « tracer un trait sous un symbole en mathématiques » et « souligner rapidement un mot très court », mais il n'est pas adapté pour souligner un texte courant. Pour les soulignements et les biffés dans le corps du texte qui doivent traverser des lignes ou que vous souhaitez avoir un aspect soigné, tournez-vous vers ulem ou soul ci-dessous.

ulem — soulignements et retraits de ligne

Le package ulem de Donald Arseneau fournit des soulignements qui se coupent correctement à la fin des lignes. Il propose également des soulignements doubles et ondulés, un barré (ligne horizontale), un barré (hachurage diagonal), des soulignements en pointillés et en pointillés – l'ensemble complet de lignes utilisées pour les suppressions et la relecture. Chargez-le avec \usepackage{ulem} et utilisez chacun comme une commande prenant un argument.

CommandeEffet
\ulineSouligné (saute entre les lignes)
\uulineDouble soulignement
\uwaveSouligné ondulé
\soutBarré (ligne à travers le mot)
\xoutBarré (hachures diagonales sur le texte)
\dashulineSouligné en pointillés
\dotulineSouligné en pointillés
latex
\uline{important} \uuline{urgent} \uwave{boat}
\sout{wrong} \xout{removed}
\dashuline{dashing} \dotuline{dotty}

Vous pouvez régler la ligne avec deux paramètres. La profondeur (la distance entre la ligne de base du texte et la règle) est la longueur \ULdepth et l'épaisseur est \ULthickness. Notez que \ULthickness est une macro, pas une longueur, vous la définissez donc avec \renewcommand, et non avec \setlength (\renewcommand{\ULthickness}{1pt}). \ULdepth est une longueur ordinaire, définie avec \setlength ; par défaut, il s'ajuste à la police actuelle.

Le package est également extensible. Avec \markoverwith vous pouvez définir de nouveaux types de lignes en effaçant à plusieurs reprises n'importe quelle forme, et une déclaration \useunder{underline-command}{font-declaration}{font-command} remplace le soulignement par une commande de sélection de police donnée.

Le piège crucial — ulem fait souligner \emph

Celui-ci fait trébucher tous ceux qui ne le connaissent pas. Lorsque vous chargez ulem, \emph (et, dans une certaine mesure, \em) souligne par défaut au lieu de mettre en italique. Selon les propres mots du package, "ulem remplace normalement l'italique par le soulignement dans le texte souligné par \emph." Chaque fois que vous soulignez l'accent, une règle est tracée sous votre texte et vous êtes surpris de trouver le manuscrit rempli de soulignements. Pire encore, l'imbrication de \emph ne donne plus l'alternance habituelle de \emph entre italique et vertical - elle empile simplement plus de soulignements.

Le remède est standard : chargez-le avec l'option [normalem]. Ensuite, \emph conserve son comportement italique approprié, et le soulignement n'a lieu que lorsque vous écrivez explicitement \uline et vos amis. Pour changer de milieu de document, vous pouvez également utiliser la déclaration \normalem (et \ULforem pour restaurer la valeur par défaut). Sauf raison particulière, il est plus sûr de charger ulem avec [normalem] à chaque fois.

latex
\usepackage[normalem]{ulem}
% \emph stays italic; underline only where you ask:
This is \emph{emphasis}, and this is \uline{underlined}.

soul — espacement des lettres et surligneur

Le package soul de Melchior Franz est une famille d'outils différente. À l'aide de la machine de césure de TeX, il sépare le texte caractère par caractère et agit entre eux, de sorte qu'il peut effectuer un espacement des lettres (espacement), un soulignement, une rayure et un surlignement au stylo marqueur — le tout traversant les extrémités de ligne. Son nom même est un mélange de ses deux commandes centrales, \so (espace) et \ul (souligné). Il propose cinq commandes, par objectif :

CommandeEffet
\soEspacement des lettres (espacer les lettres)
\capsEspacement pour les séries de majuscules et petites capitalisations
\ulSouligner
\stRayure (sur-rayure)
\hlSurligneur (marqueur)

Pour la couleur, définissez le soulignement avec \setulcolor, le barré avec \setstcolor et le surlignage avec \sethlcolor. Par défaut, le surlignage est jaune et le soulignement et le barré sont noirs. Le point important : \hl ne colore que si le package color (ou xcolor) est chargé — sans lui, \hl revient au soulignement au lieu du remplissage. Vous pouvez créer votre propre couleur avec \definecolor et la transmettre.

latex
\usepackage{color,soul}
\definecolor{lightblue}{rgb}{.90,.95,1}
\sethlcolor{lightblue}
% ...
\so{letterspacing} \ul{underlining} \st{overstriking}
\hl{this is highlighted in light blue color}

Pour gérer les scripts non latins tels que le japonais ou les caractères accentués, vous avez besoin du support UTF-8. Auparavant, cela vivait dans un package séparé, soulutf8, mais le soul actuel (v3 et versions ultérieures) fusionne soulutf8 et prend en charge l'entrée UTF-8 (l'ancien noyau a été renommé soul-ori et est chargé en interne). Ainsi, sur un TeX Live ou MiKTeX récent, le simple chargement de soul lui permet de gérer les caractères UTF-8.

Étant donné que ses commandes analysent l'argument caractère par caractère, il existe cependant des limites à ce qui peut contenir elles. Les principales règles sont :

  • Les mathématiques fonctionnent si elles sont entourées de $...$, mais la forme LaTeX \(...\) ne fonctionne pas.
  • Pas d'imbrication. N'imbriquez pas une commande soul dans une autre. Si vous en avez vraiment besoin, mettez d'abord le matériel intérieur dans une boîte (par exemple \mbox) et transmettez-le.
  • Pour traiter le texte comme une seule unité, enveloppez-le dans {...} — mais il ne doit pas contenir de point de césure. Pour regrouper un mot contenant une césure, utilisez \mbox{...}, qui permet à soul de le voir comme un seul élément, même avec une césure à l'intérieur.
  • Pour rompre une ligature à l'intérieur de \ul, \st ou \hl, insérez {} ou \null (par exemple \ul{Auf{}lage}).
  • \verb, LaTeX les environnements et les définitions de commandes et d'autres « éléments sophistiqués » peuvent ne pas apparaître dans l'argument. Restez avec du texte horizontal brut pour être en sécurité.

Lequel choisir — et un mot sur le soulignement

Un guide approximatif : pour une ligne sous un symbole en mathématiques, le \underline intégré. Pour les soulignements de saut de ligne, les biffures et les marques de relecture dans le corps du texte, ulem (toujours avec [normalem]). Pour un surlignement au marqueur ou un espacement des lettres, soul. Le \uline de ulem et le \ul de soul sont tous deux des soulignements cassables et se ressemblent, mais soul — assis au-dessus de son moteur d'espacement des lettres — restreint davantage son argument, tandis qu'en retour, il gère également la surbrillance et l'espacement des lettres en un seul endroit.

Le fait de souligner le corps du texte japonais s'accompagne d'une mise en garde supplémentaire. ulem et soul ont été conçus pour le texte occidental, et dans les paragraphes contenant beaucoup de japonais, le soulignement n'est pas clairement coupé aux fins de ligne (un sujet récurrent sur le forum de Haruhiko Okumura). Pour les soulignements qui s'étendent sur plusieurs lignes de japonais, des packages dédiés tels que jumoline et udline existent (ils peuvent ne pas être livrés par défaut et peuvent nécessiter une installation séparée).

Une dernière note typographique. Le soulignement est un héritage de la machine à écrire et de l'écriture manuscrite, et dans le corps du texte occidental, il n'est généralement pas privilégié comme moyen de mise en valeur. La tradition de composition met l'accent sur l'italique, l'espacement des lettres (restreint) ou le caractère gras. Si vous souhaitez uniquement souligner quelque chose, utilisez \emph plutôt qu'un soulignement, et conservez les soulignements et les biffés pour les cas où la ligne elle-même a un sens - en marquant une suppression dans les épreuves, ou en affichant un lien ou un espace à remplir.

Un workflow de révision

Les soulignements et les ratures sont souvent des outils de relecture et de collaboration plutôt que de finition du corps du texte. Si la version finale et la révision annotée partagent une même source, il est plus sûr de placer une macro de relecture entre la prose et la commande de ligne. Dans la version soumise, cette macro peut devenir vide ou passer à un affichage différent.

latex
\usepackage[normalem]{ulem}
\newcommand{\deleted}[1]{\sout{#1}}
\newcommand{\added}[1]{\uline{#1}}

結果は \deleted{古い値} \added{新しい値} とした。
  • Ne le mélangez pas avec l'accentuation de la prose. Gardez l'accent sur \emph et placez des lignes de relecture derrière des macros distinctes telles que \deleted et \added.
  • Rendez-le amovible pour la version finale. Une conception qui peut passer à \renewcommand{\deleted}[1]{} avant la soumission empêche les marques de révision de s'infiltrer dans le PDF final.
  • Soyez prudent avec les longs paragraphes japonais. Les sauts de ligne et le kinsoku peuvent en souffrir, alors pensez aux packages de soulignement spécifiques au japonais ou aux annotations PDF si nécessaire.
  • Vérifiez les surlignages colorés lors de l'impression. soul les surlignages peuvent paraître corrects à l'écran mais devenir difficiles à lire en impression monochrome ou pour des raisons d'accessibilité.

Rendre les marques de révision commutables

Si vous écrivez \sout{...} directement dans la prose, vous devez traquer chaque note avant la soumission finale. Lorsque le manuscrit basculera entre les modes révision et final, définissez les macros d'affichage avec un changement depuis le début. Ensuite, un PDF de révision peut afficher les suppressions et les ajouts, tandis que le PDF final peut supprimer le texte supprimé et conserver les ajouts, le tout en changeant d'emplacement. Mettez une inspection PDF en mode final dans la liste de contrôle de soumission, afin que le changement ne soit pas oublié.

latex
\usepackage[normalem]{ulem}
\newif\ifshowrevisions
\showrevisionstrue   % final: \showrevisionsfalse

\newcommand{\deleted}[1]{\ifshowrevisions\sout{#1}\fi}
\newcommand{\added}[1]{\ifshowrevisions\uline{#1}\else #1\fi}

Avec cette forme, le corps garde les significations \deleted{old text} et \added{new text}. Dans le travail collaboratif, décidez également si les raisons et les noms figurent dans les commentaires PDF ou uniquement dans les différences sources. Les lignes sont utiles lors de la révision, mais elles constituent un fort bruit visuel dans la prose terminée, alors intégrez le changement de mode final à votre flux de travail de manuscrit.