Cette question ne trouve pas de réponse sur TeX StackExchange, je me permets donc de la reposer ici. Je cherche à créer un language Voici ma tentative actuelle : \documentclass[12pt]{article} \usepackage{listings} \usepackage{xcolor} \lstdefinelanguage{regex}{ commentstyle=\color{gray}, keywords={}, otherkeywords={^, \{, \}, ?, +}, alsoletter={}, basicstyle=\ttfamily, keywordstyle=\bfseries\color{green}, breakatwhitespace=false, breaklines=true, captionpos=b, showspaces=false, showstringspaces=true, literate=% *{0}{{{\color{red}0}}}1 {1}{{{\color{red}1}}}1 {2}{{{\color{red}2}}}1 {3}{{{\color{red}3}}}1 {4}{{{\color{red}4}}}1 {5}{{{\color{red}5}}}1 {6}{{{\color{red}6}}}1 {7}{{{\color{red}7}}}1 {8}{{{\color{red}8}}}1 {9}{{{\color{red}9}}}1 {(}{{{\bfseries\color{blue}(}}}1 {)}{{{\bfseries\color{blue}\)}}}1 } \begin{document} \begin{lstlisting}[language=regex] ((a+b){4,5})*c? + [^ab{?]{3} \end{lstlisting} \end{document} C'est un peu moche mais j'y suis presque. Le problème c'est que les parenthèses fermantes ne se colorent pas avec cette définition. J'ai déjà essayé d'enlever le Comment puis-je faire pour corriger ça ? Est-ce qu'il y a un paquet existant / une meilleure manière de le faire ? |
Ne trouvant pas de solutions, j'ai fini par me rediriger vers le paquet Celui-ci utilise en sous-main une librairie Python, J'ai donc développé une extension de cette librairie (qui n'est pas encore parfaite, mais pour l'instant suffisante), en construisant un lexeur capable de parser les bouts de code d'expression régulière. Si cette solution intéresse quelqu'un d'autre, le paquet à installer est disponible à l'adresse suivante : ici Publiée 05 Jul '23, 17:38 olirwin |
Je ne vois pas comment corriger cela. Un package permettant peut-être de s'en sortir est codehigh qui, lui-même, s'appuie sur des expressions régulières pour assurer la coloration syntaxique.
Ça vaudrait le coup de signaler le problème au mainteneur du package
listings
(j.hoffmann(at)fh-aachen.de
).Merci pour ta réponse Denis, j'ai fini par utiliser
minted
en développant un lexeur personnalisé (ce qui n'est pas forcément facile pour tout le monde). J'enverrai un message au mainteneur pour le prévenir également :)