2
1

Pour faire cela, il y a le paquet soulutf8 (s'il y a d'autres solutions, je prends). Le bon Nicolas Ogier nous gratifie d'un exemple :

Ouvrir dans l'éditeur Overleaf
%Préambule
\usepackage{xcolor, soul}
\sethlcolor{green}

%Document
Voici un \hl{texte surligné en vert}

Là, c'est simple et suffit à un usage de base. Mais voilà, j'aimerais que les lettres apparaissent autrement. Pas de panique, me dit Nicolas, yaskifo :

Ouvrir dans l'éditeur Overleaf
Un \textcolor{red}{\hl{texte coloré et suligné}} (\textcolor)
Some {\color{red}\hl{texte coloré et suligné}} (\color)

Sauf que :

  • mais je crains le surmenage à moyen terme, car la syntaxe m'a l'air un poil désobligeante
  • et que j'obtiens une erreur (en plus…) :

    ! Paragraph ended before textcolor was complete.
    to be read again
    par

    l.113

    I suspect you've forgotten a `}', causing me to apply this control sequence to too much text. How can we recover? My plan is to forget the whole thing and hope for the best.

Moi aussi, I hope for the best, mais je n'y pige que couic : qu'est-ce qui coince ? La documentation du paquet ne me dit rien là-dessus…

Question accessoire (tant qu'on y est) : comment faire pour pouvoir utiliser plusieurs couleurs de surlignage ?

Posée 05 Mar '19, 22:38

fred02840's gravatar image

fred02840
4.2k30164189
Taux d'acceptation : 16%

Modifiée 05 Mar '19, 22:49

3

Je pense que (\textcolor) doit être un commentaire - même pour (\color). Sans les deux ça marche : https://www.overleaf.com/read/wwwpcmxntvjz

(05 Mar '19, 22:48) samcarter samcarter's gravatar image

Mouais… Et je passe pour quoi, moi, encore une fois ? Aucune réponse exigée…

@samcarter : au poil !

(05 Mar '19, 22:51) fred02840 fred02840's gravatar image
3

L'utilisation de la commande \color peut être dangereuse. Voir cette question

(05 Mar '19, 23:02) touhami touhami's gravatar image

Très juste, @touhami : je l'ignorais, mais, précisément, je n'ai jamais utilisé cette commande (le hasard fait bien les choses, parfois), lui préférant \textcolor{couleur}{texte}.

(05 Mar '19, 23:14) fred02840 fred02840's gravatar image

On peut parfaitement utiliser soulutf8 avec xcolor et des noms de couleurs exotiques.

Voici un exemple où, nonseulement j'utilise des couleurs exotiques, mais elles sont mélangées. La précaution à prendre est de leur donner un nom au préalable, avec la command \colorlet.

Incidemment, inutile de charger l'option [usenames]: c'est le défaut depuis un certain nombre d'années déjà. Inutile aussi de charger color si vous chargez xcolor.

Ouvrir dans l'éditeur Overleaf
  \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{soulutf8}
    \usepackage[dvipsnames, svgnames]{xcolor}
    \sethlcolor{green}
    \colorlet{MySeaGreen}{SeaGreen!30!Honeydew}
    \colorlet{MyPeachPuff}{PeachPuff!40}
    \newcommand{\hlc}[2][yellow]{{\sethlcolor{#1} \hl{#2}}}

    \begin{document}

    This is a text. \hlc[yellow]{And this is highlighted with color yellow}. \hlc[green]{Then with color green}, \hlc[CarnationPink]{and then with color pink.} Or you can also use \hlc[Dandelion]{Dandelion}, or \hlc[MySeaGreen]{my seagreen}, or anything as described in \hlc[MyPeachPuff]{http://en.wikibooks.org/wiki/LaTeX/Colors}

    \end{document}

alt text

Lien permanent

Publiée 06 Mar '19, 00:42

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 06 Mar '19, 03:17

1

@Bernard. Chapeau bas...

(06 Mar '19, 13:04) fred02840 fred02840's gravatar image

Pour utiliser plusieurs couleurs de surlignage, une solution ici (je n'ai évidemment pas repris le package soul, réputé beugueur, ni même color, dont je ne voyais pas l'intérêt, mais cela explique peut-être le conflit observé. NB : vérification faite, ce dernier package n'évite rien du tout):

Ouvrir dans l'éditeur Overleaf
\usepackage{soul}
\usepackage{color}
\usepackage[usenames,dvipsnames]{xcolor}

\newcommand{\hlc}[2][yellow]{ {\sethlcolor{#1} \hl{#2}} }

\begin{document}

This is a text. \hlc[yellow]{And this is highlighted with color yellow}. \hlc[green]{Then with color green}, \hlc[CarnationPink]{and then with color pink}. Or you can also use \hlc[Dandelion]{Dandelion}, or \hlc[SeaGreen]{seagreen}, or anything as described in \hlc[Peach]{http://en.wikibooks.org/wiki/LaTeX/Colors}

Mais c'est au prix d'un conflit. J'ai supprimé les couleurs exotiques de l'exemple (Dandelion et ses copines) pour mettre du classique :

Ouvrir dans l'éditeur Overleaf
This is a text. \hlc[yellow]{And this is highlighted with color yellow}. \hlc[green]{Then with color green}, \hlc[gray]{and then with color pink}. Or you can also use \hlc[red]{Dandelion}, or \hlc[blue]{seagreen}, or anything as described in \hlc[orange]{http://en.wikibooks.org/wiki/LaTeX/Colors}

Et là, pas de problème.

Lien permanent

Publiée 05 Mar '19, 23:10

fred02840's gravatar image

fred02840
4.2k30164189
Taux d'acceptation : 16%

1

Il y a aussi l'extension ulem

(06 Mar '19, 00:11) joseph-tux joseph-tux's gravatar image

@joseph-tux. Je la connaissais pour souligner, etc. Quelle commande lui est associée, et comment sélectionner une couleur pour surligner ?

(06 Mar '19, 00:30) fred02840 fred02840's gravatar image

Honte à moi, et toutes mes excuses: c'est bien avec soulutf8 et non ulem que j'avais surligné!

J'aurais dû faire mon ECM avant de me précipiter!

(06 Mar '19, 22:02) joseph-tux joseph-tux's gravatar image
1

Le problème si j'ai bien compris, est la lourdeur de la syntaxe: si \textcolor ou \color peuvent contenir une commande \hl, la réciproque n'est pas vraie: \hl{\textcolor{blue}{du texte}} renvoie une erreur, «couleur blue non définie»

Ce problème n'apparaît que si on veut un texte multicolor sur un fond unique, dans ce cas si on applique la commande \hl (ou \hlc de Fred02840 moins contraignante), il faut aussi surligner explicitement chaque espace!

(07 Mar '19, 21:22) joseph-tux joseph-tux's gravatar image
1

On peut utiliser une tcbox (extension tcolorbox):

\documentclass[a4paper,12pt]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage{tcolorbox} \newcommand{tcbsurligner}[2][yellow] {\tcbox[on line,colback=#1,size=fbox,boxrule=0mm,colupper=blue] {le texte en bleu sur fond jaune: #2}} \begin{document} blabla\ldots \tcbsurligner{comme ici, \textcolor{red}{puis rouge}} \ldots blabla \end{document}

Action limitée à une ligne, Mais je crois que c'est aussi une limitation de soulutf8. On gagne la puissance de tcbox.

(07 Mar '19, 22:10) joseph-tux joseph-tux's gravatar image

@joseph-tux l'exemple de la réponse de Bernard montre bien que soulutf8 ne souffre pas de cette limitation. En outre, ce qui est limitation ici peut être avantage. En effet, les boites mbox; hbox, fbox, tcbox sont utilisées pour empêcher le saut de ligne!

(07 Mar '19, 22:39) touhami touhami's gravatar image
(07 Mar '19, 22:45) joseph-tux joseph-tux's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus

Je pense que les deux commandes entre parenthèses sont en réalité des commentaires. Traités comme tels, tout ça fonctionne:

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{soulutf8}
\usepackage{xcolor}
\sethlcolor{green}

\begin{document}

\textbf{ \textcolor{red}{\hl{texte coloré et surligné}}} %(\textcolor)
Some {\color{red}\hl{texte coloré et surligné} % (\color)

\end{document}

alt text

Lien permanent

Publiée 05 Mar '19, 22:59

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 05 Mar '19, 23:57

Exact, @Bernard. C'est la solution que @samcarter préconisait.

(05 Mar '19, 23:12) fred02840 fred02840's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.