Ecrire en couleur dans lstlisting

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
XANA
Utilisateur confirmé
Utilisateur confirmé
Messages : 36
Inscription : lundi 04 septembre 2017, 17:56

Ecrire en couleur dans lstlisting

Message par XANA »

Bonjour,
je souhaiterais, pour mettre en valeur certaines lignes d'un code, les mettre d'une certaine couleur (par exemple en rouge). Je n'ai pas trouvé comme faire... J'ai essayé \textcolor, mais évidemment dans l'environnement lstlisting, ça écrit la commande :lol:
Par exemple :

Code : Tout sélectionner

\begin{lstlisting}
def f(n):
  if n==0:
    return n
  else:
    return 1 + f(n-1)
\end{lstlisting}
Faire en sorte que la ligne "return 1 + f(n-1)" apparaisse en rouge dans le document généré.

marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 864
Inscription : jeudi 25 novembre 2010, 22:10

Re: écrire en couleur dans lstlisting

Message par marco56 »

Un ecm pour que ce soit plus simple ?

XANA
Utilisateur confirmé
Utilisateur confirmé
Messages : 36
Inscription : lundi 04 septembre 2017, 17:56

Re: écrire en couleur dans lstlisting

Message par XANA »

Par exemple :

Code : Tout sélectionner

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\lstset{%
	language={python},
	breaklines=true,
	numbers=left,
	numberstyle=\footnotesize,
	captionpos=b,
	basicstyle=\ttfamily,
	keywordstyle=\bfseries\color{blue},
	commentstyle=\itshape\color{green}
	}
	
\begin{document}

\begin{lstlisting}
def f(n): # fonction utile
  if n == 0:
    return n
  else:
    return 1 + f(n-1)
\end{lstlisting}

\end{document}
Par exemple ici, faire en sorte que la ligne "return 1+f(n-1)" apparaisse en rouge.

Denis Bitouzé
Utilisateur confirmé
Utilisateur confirmé
Messages : 78
Inscription : vendredi 27 octobre 2006, 20:27
Localisation : Dunkerque

Re: Ecrire en couleur dans lstlisting

Message par Denis Bitouzé »

Il suffit de recourir à un délimiteur, invisible, au moyen de moredelim. Par exemple :

Code : Tout sélectionner

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}
\lstset{%
   language={python},
   breaklines=true,
   numbers=left,
   numberstyle=\footnotesize,
   captionpos=b,
   basicstyle=\ttfamily,
   keywordstyle=\bfseries\color{blue},
   commentstyle=\itshape\color{green},
   moredelim=[il][\color{red}]{/+},%
   }

\begin{document}

\begin{lstlisting}
def f(n): # fonction utile
  if n == 0:
    return n
  else:
/+    return 1 + f(n-1)
\end{lstlisting}

\end{document}
Denis

XANA
Utilisateur confirmé
Utilisateur confirmé
Messages : 36
Inscription : lundi 04 septembre 2017, 17:56

Re: Ecrire en couleur dans lstlisting

Message par XANA »

Cela fonctionne parfaitement !
Merci beaucoup ! : )