Couleurs avec lstlistings

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Couleurs avec lstlistings

Messagepar zariski63 » Dimanche 08 Juillet 2012, 11:45

Bonjour !
est-il possible d'avoir un mot particulier en couleur dans un listing ?
Voici mon code lst... en préambule :

Code: Tout sélectionner
\lstnewenvironment{codelatex}[1][]{%
     \lstset{
         upquote=true,
         columns=flexible,
         basicstyle=\ttfamily,
         language={[LaTeX]TeX},
         texcsstyle=*\color{bleufonce}\bf,
         commentstyle=\color{gray},
         moretexcs={newcommandx,renewcommandx,color,textcolor,definecolor,colorbox,fcolorbox,pagecolor},
         morekeywords={minipage,table,tabbing},keywordstyle=\color{vertfonce}, 
         #1
        }
}{}

\begin{document}

\begin{codelatex}
\begin{table}[!ht]
  \center
  \begin{tabbing}
    Voici  \=  un petit exemple  \=  de l'environnement tabbing   \\
          \>  on commence au premier repère \\
                   \> \>  ici on est au second repère
  \end{tabbing}
  \caption{L'environnement \texttt{tabbing}}
\end{table}
\end{codelatex}

\end{document}


Avec pour résultat :

\begin{table}[!ht]
\center
\begin{tabbing}
Voici \= un petit exemple \= de l'environnement tabbing \\
\> on commence au premier repère \\
\> \> ici on est au second repère
\end{tabbing}
\caption{L'environnement \texttt{tabbing}}
\end{table}
\end{codelatex}


MERCI
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: lstlistings

Messagepar pg » Dimanche 08 Juillet 2012, 18:02

On peut jongler avec un texcsstyle spécial que l'on active en faisant de = et > des caractères normaux. Exemple :

listings_tabbing.png


Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{textcomp}
\usepackage{xcolor}

\usepackage{listings}

\lstnewenvironment{codelatex}[1][]{%
     \lstset{
         upquote=true,
         columns=flexible,
         basicstyle=\ttfamily,
         language={[LaTeX]TeX},
         texcsstyle=*\color{blue!50!black}\bfseries,
         commentstyle=\color{gray},
         texcsstyle=*[2]\color{red},
         moretexcs={newcommandx,renewcommandx,color,textcolor,definecolor,colorbox,fcolorbox,pagecolor},
         morekeywords={minipage,table,tabbing},keywordstyle=\color{green!50!black},
         #1
        }
}{}

\begin{document}

\begin{codelatex}[alsoletter={>,=},moretexcs={[2]>,=}]
\begin{table}[!ht]
  \center
  \begin{tabbing}
    Voici  \=  un petit exemple  \=  de l'environnement tabbing   \\
          \>  on commence au premier repère \\
                   \> \>  ici on est au second repère
  \end{tabbing}
  \caption{L'environnement \texttt{tabbing}}
\end{table}
\end{codelatex}

\end{document}
pg
Modérateur
 
Messages: 2593
Inscription: Jeudi 14 Juin 2007, 23:31

Re: lstlistings

Messagepar zariski63 » Lundi 09 Juillet 2012, 00:01

C'est génial, que dis je, VOUS êtes génial !!!
c'est pile poil ce que je voulais !!!!
Pfffiou y a des tronches quand même !!!
Mille merci(s) !!!
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar zariski63 » Lundi 09 Juillet 2012, 11:15

Bonjour,
je reviens sur mon histoire.
Et si je veux un mot particulier (genre \kill) en rouge par exemple, comment je fais svp ?
Merci
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar pg » Lundi 09 Juillet 2012, 11:59

Comme \kill existe déjà en texcs normal, il faut d'abord l'enlever des texcs normaux avec deletetexcs={kill} puis le rajouter aux texcs de classe 2 avec moretexcs={[2]kill} :

Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{textcomp}
\usepackage{xcolor}

\usepackage{listings}

\lstnewenvironment{codelatex}[1][]{%
     \lstset{
         upquote=true,
         columns=flexible,
         basicstyle=\ttfamily,
         language={[LaTeX]TeX},
         texcsstyle=*\color{blue!50!black}\bfseries,
         commentstyle=\color{gray},
         texcsstyle=*[2]\color{red},
         moretexcs={newcommandx,renewcommandx,color,textcolor,definecolor,colorbox,fcolorbox,pagecolor},
         morekeywords={minipage,table,tabbing},keywordstyle=\color{green!50!black},
         #1
        }
}{}

\begin{document}

\begin{codelatex}[alsoletter={>,=},deletetexcs={kill},moretexcs={[2]>,=,kill}]
\begin{table}[!ht]
  \center
  \begin{tabbing}
    Voici  \=  un petit exemple  \=  de l'environnement tabbing   \\
          \>  on commence au premier repère \\
                   \> \>  ici on est au second repère \kill
  \end{tabbing}
  \caption{L'environnement \texttt{tabbing}}
\end{table}
\end{codelatex}

\end{document}
pg
Modérateur
 
Messages: 2593
Inscription: Jeudi 14 Juin 2007, 23:31

Re: lstlistings

Messagepar zariski63 » Lundi 09 Juillet 2012, 12:48

waouhhhhh trop fort !
MERCI
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar zariski63 » Lundi 09 Juillet 2012, 12:49

Franchement.... FORT !!!!
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar zariski63 » Lundi 09 Juillet 2012, 17:56

Encore moi (oui je sais le boulet ! lol)
Et si dans mon code verbatim final,
je veux la séquence "p{2cm}" en rouge, y a t-il une commande miraculeuse pour ça ?

\begin{tabular}{|p{2cm} |c|}
\hline
Année 1 & 550 \texteuro \\
\hline
Année 2 & 710 \texteuro \\
\hline
\end{tabular}

Là ça serait la cerise sur le gateau.
Merci
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar pg » Mardi 10 Juillet 2012, 07:35

C'est possible avec moredelim :

listings_tabular.png
listings_tabular.png (6.67 Kio) Vu 1189 fois


Code: Tout sélectionner
\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage{textcomp}
\usepackage{xcolor}

\usepackage{listings}

\lstnewenvironment{codelatex}[1][]{%
     \lstset{
         upquote=true,
         columns=flexible,
         basicstyle=\ttfamily,
         language={[LaTeX]TeX},
         texcsstyle=*\color{blue!50!black}\bfseries,
         commentstyle=\color{gray},
         texcsstyle=*[2]\color{red},
         moretexcs={newcommandx,renewcommandx,color,textcolor,definecolor,colorbox,fcolorbox,pagecolor},
         morekeywords={minipage,table,tabbing},keywordstyle=\color{green!50!black},
         #1
        }
}{}

\begin{document}

\begin{codelatex}[moredelim={[s][\color{red}]{p\{}{\}}}]
\begin{tabular}{|p{2cm}|c|}
\hline
Année 1 & 550 \texteuro \\
\hline
Année 2 & 710 \texteuro \\
\hline
\end{tabular}
\end{codelatex}

\end{document}
pg
Modérateur
 
Messages: 2593
Inscription: Jeudi 14 Juin 2007, 23:31

Re: lstlistings

Messagepar zariski63 » Mardi 10 Juillet 2012, 14:02

GENIAL !
Avec ça je peux me faire ma propre doc.
MERCI.

Sinon, pour mettre un mot particulier en couleur qui ne soit pas une commande, y a t-il une possibilité aussi ?

Grrr suis pénible, mais la doc. concernant "listings" est en Anglais et il me fait peine de traduire ...
Mais ce package est tout simplement merveilleux !!
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar pg » Mardi 10 Juillet 2012, 14:07

zariski63 a écrit:Sinon, pour mettre un mot particulier en couleur qui ne soit pas une commande, y a t-il une possibilité aussi ?

C'est juste un keyword (d'une classe différente pour être en rouge) :

Code: Tout sélectionner
\begin{codelatex}[keywordstyle={[2]\color{red}},morekeywords={[2]violons,automne}]
Les sanglots longs des violons de l'automne blessent mon coeur d'une langueur monotone.
\end{codelatex}
pg
Modérateur
 
Messages: 2593
Inscription: Jeudi 14 Juin 2007, 23:31

Re: lstlistings

Messagepar zariski63 » Mardi 10 Juillet 2012, 14:25

Merci pour tout !
Bonnes vacances !

point point point trait
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar zariski63 » Mardi 10 Juillet 2012, 16:15

Et si je veux
Code: Tout sélectionner
*{ 4 } { @ {$\times$} c @ { = } c|}
en rouge, dans le verbatim ci-dessous ?

Code: Tout sélectionner
\begin{tabular} { |c| *{4} { @ {$\times$ } c @ {\ =\ } c|}  }
   1 & 1 & 1 & 2 & 2 & 3 & 3 & 4 & 4 \\
   2 & 1 & 2 & 2 & 4 & 3 & 6 & 4 & 8 \\
   3 & 1 & 3 & 2 & 6 & 3 & 9 & 4 & 12 \\
   4 & 1 & 4 & 2 & 8 & 3 & 12 & 4 & 16 \\
\end{tabular}


J'ai essayé pas mal de trucs mais rien de concluant, dois y avoir encore de la subtilité ...
Merci
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar pg » Mercredi 11 Juillet 2012, 12:50

Pour des trucs plus généraux comme cela, le plus simple est probablement un caractère d'échappement pour revenir à LaTeX et y faire ce qu'on veut. Par exemple :

listings_escape.png
listings_escape.png (10 Kio) Vu 1143 fois


Code: Tout sélectionner
\begin{codelatex}[escapechar=§]
\begin{tabular} { |c| §\color{red}\verb"*{4} { @ {$\times$ } c @ {\ =\ } c|}"§ }
   1 & 1 & 1 & 2 & 2 & 3 & 3 & 4 & 4 \\
   2 & 1 & 2 & 2 & 4 & 3 & 6 & 4 & 8 \\
   3 & 1 & 3 & 2 & 6 & 3 & 9 & 4 & 12 \\
   4 & 1 & 4 & 2 & 8 & 3 & 12 & 4 & 16 \\
\end{tabular}
\end{codelatex}

J'ai pris § comme caractère d'échappement car il a peu de chances d'intervenir dans un code normal, mais il ne faut pas hésiter à le changer au besoin.
pg
Modérateur
 
Messages: 2593
Inscription: Jeudi 14 Juin 2007, 23:31

Re: lstlistings

Messagepar zariski63 » Mercredi 11 Juillet 2012, 15:07

Merci, vos renseignements sont très précieux et me font gagner du temps !
zariski63
Méga-utilisateur
 
Messages: 296
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: lstlistings

Messagepar Francky » Mercredi 11 Juillet 2012, 16:05

Ça me fait plaisir de voir pg utiliser § comme caractère d'échappement.
Cela me conforte dans ce choix que je fais aussi.
Je le trouve bien, car
1 on ne l'utilise pas ou peu a priori,
2 il est symétrique (pas comme £), et je trouve cela utile pour une "balise" ouvrante et fermante,
3 il est facile d'accès au clavier (quelque soit le clavier, j'imagine)

C'était ma remarque à deux centimes.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 7 invités