Bonjour,

je cherche comment formater une sous-chaîne de caractères :

command(string, substring, occurrence, colorname) --> formatted string

Par exemple :

\cmdFormat[coucou][cou][2][red] --> cou\textcolor{red}{cou}

Je dois formater ainsi plusieurs mots d'un document. Un plus, serait de pouvoir formater plusieurs sous-chaînes de caractères d'un même mot.

Posée 20 Nov, 13:18

polymorphisme's gravatar image

polymorphisme
357116
Taux d'acceptation : 50%


Avec l'extension xstring :

\documentclass{article}

\usepackage{xcolor}
\usepackage{xstring}
\NewDocumentCommand{\cmdFormat}{mmO{1}O{red}}{%
  \IfSubStr[#3]{#1}{#2}{% test if string occures n times in the string
    \StrBefore[#3]{#1}{#2}%
    \textcolor{#4}{#2}%
    \StrBehind[#3]{#1}{#2}%
  }{%
    #1
  }%
}

\begin{document}

\cmdFormat{coucoucou}{cou}[2][red]

\cmdFormat{coucoucou}{cou}[3][green]

\cmdFormat{coucoucou}{cou}[4][cyan]

\cmdFormat{coucoucou}{cou}

\cmdFormat{fvghjwerjfh}{cou}

\end{document}

alt text

Lien permanent

Publiée 20 Nov, 13:27

samcarter's gravatar image

samcarter
6.1k416
Taux d'acceptation : 55%

Modifiée 20 Nov, 13:52

Samcarter : toujours une réponse pertinente, merci.

Je vais regarder cette extension xstring plus en détails.

(20 Nov, 13:46) polymorphisme polymorphisme's gravatar image

@polymorphisme De rien :)

(20 Nov, 14:04) samcarter samcarter'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.

Mots-clés de la question :

×3
×1
×1
×1

Question posée : 20 Nov, 13:18

Question vue : 113 fois

Dernière mise à jour : 20 Nov, 14:04