j'essaie de créer un listing latex3 et le résultat est relativement correct bien que perfectible évidemment.
Cependant je bute sur quelques trucs :
- est-il possible de pourvoir colorier les variables qui commencent toujours par
\l_
ou\l__
ou\g_
ou\g__
ou\c_
ou\c__
toutes suivies de mot contenant des lettres et/ou un_
et plus généralement par\<scope>__<module>_<descript>_<type>
ou\<scope>_<module>_<descript>_<type>
- de même avec les fonctions qui elles vont commencer par
\__<module>_<descript>:<arg-spec>
ou\_<module>_<descript>:<arg-spec>
- De plus je souhaiterai colorier les paramètres commençant par
#
suivi d'un chiffre compris entre 1 et 9
Je sais qu'il existe "minted", "codehigh" mais chacun a ses défauts et je ne souhaite pas les utiliser.
Je vous remercie pour vos idées à venir

Code : Tout sélectionner
\documentclass[12pt]{article}
\usepackage[bold-style=ISO]{fourier-otf}
\usepackage{xcolor}
\usepackage{listings}
%%%%%%%%%% style latex3 (sans cadre) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\definecolor{variablelatex3}{rgb}{0.5,0.5,0}
\definecolor{bleulatex3}{rgb}{0.19,0.19,0.83}
\definecolor{entetelatex3}{rgb}{0,0.55,0.55}
\definecolor{parentheselatex3}{rgb}{0.56,0.12,0.34}
\lstdefinestyle{latex3}{%
basicstyle ={\ttfamily\small},
extendedchars = true,
escapechar = {§}, % pour écrire du latex
columns = fullflexible, % respecte l'indentation du code
keepspaces = true,% pour que les espaces comptent
tab = {\color{gray}\rightarrowfill}, %1 tabulation = 1 flèche
tabsize = 4, %tabulation de 2 caractères comme réglé ds WinEdt
upquote = true,% guillemets
breaklines = true,% coupure automatique des lignes en bout de cadre
breakindent = 0cm, % indentation des lignes coupees
numbers = left,%
numbersep = 2.5ex,% espace entre le numéro et le code
numberstyle = {\ttfamily\tiny},%
commentstyle = {\footnotesize\ttfamily\color{gray}},
%
alsoletter = {:, _ },
literate = *%
{ \{ }{{\textcolor{parentheselatex3}{ \{ }}}{1}%
{ \} }{{\textcolor{parentheselatex3}{ \} }}}{1},%
%
classoffset = 0,
keywordstyle = {\color{variablelatex3}},
morekeywords = {l_foo_clist,},
%
classoffset = 1,
keywordstyle = {\color{bleulatex3}},
morekeywords = {clist_set:Nn, clist_sort:Nn, clist_use:Nn,
int_compare:nNnTF, int_from_alph:n,
sort_return_swapped:, sort_return_same:,},
%
classoffset = 2,
keywordstyle = {\color{entetelatex3}},
morekeywords = {ExplSyntaxOn,ExplSyntaxOff},
%
classoffset = 0,
}
%%%%%%%%%% Fin style latex3 (sans cadre) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{lstlisting}[style=latex3]
\ExplSyntaxOn
\clist_set:Nn \l_foo_clist {c,g,a,t,s,z,i,b}
\clist_sort:Nn \l_foo_clist
{
\int_compare:nNnTF { \int_from_alph:n {#1} } >
{ \int_from_alph:n {#2} }
{ \sort_return_swapped: }
{ \sort_return_same: }
}
\clist_use:Nn \l_foo_clist {~~ , ~~}
\ExplSyntaxOff
\end{lstlisting}
\end{document}