Page 1 sur 1

listing

MessagePosté: Mercredi 10 Janvier 2018, 19:31
par zariski63
Bonsoir !
Quelqu'un aurait-il une idée pour que dans un listing je puisse mettre les parenthèses ( et ) en couleur ?
J'utilise le package "listing" mais la doc est trop indigeste ...

Merci.

Re: listing

MessagePosté: Mercredi 10 Janvier 2018, 22:17
par marco56
Une idée de base mais j'ai un souci : la couleur des crochets n'est pas prise en compte après celle des parenthèses.
Deuxième souci (je l'ai réglé sur mon pc mais je ne sais plus comment) : les accents.
Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}


\definecolor{lightgray}{rgb}{.9,.9,.9}
\definecolor{darkgray}{rgb}{.4,.4,.4}
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}

\lstdefinelanguage{JavaScript}{%
keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
keywordstyle=\color{blue}\bfseries,
ndkeywords={class, export, boolean, throw, implements, import, this},
ndkeywordstyle=\color{darkgray}\bfseries,
identifierstyle=\color{black},
sensitive=false,
comment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{purple}\ttfamily,
stringstyle=\color{red}\ttfamily,
morestring=[b]',
morestring=[b]"
}

\lstset{%
language=JavaScript,
backgroundcolor=\color{lightgray},
extendedchars=true,
basicstyle=\footnotesize\ttfamily,
showstringspaces=false,
showspaces=false,
numbers=left,
numberstyle=\footnotesize,
numbersep=9pt,
tabsize=2,
breaklines=true,
showtabs=false,
captionpos=b             
}
\lstset{%
inputencoding=utf8,
extendedchars=true,
literate=%
{é}{{\'e}}{1}%
{è}{{\`e}}{1}%
{à}{{\`a}}{1}%
{ç}{{\c{c}}}{1}%
{œ}{{\oe}}{1}%
{ù}{{\`u}}{1}%
{É}{{\'E}}{1}%
{È}{{\`E}}{1}%
{À}{{\`A}}{1}%
{Ç}{{\c{C}}}{1}%
{Œ}{{\OE}}{1}%
{Ê}{{\^E}}{1}%
{ê}{{\^e}}{1}%
{î}{{\^i}}{1}%
{ô}{{\^o}}{1}%
{û}{{\^u}}{1}%
{ë}{{\¨{e}}}1
{û}{{\^{u}}}1
{â}{{\^{a}}}1
{Â}{{\^{A}}}1
{Î}{{\^{I}}}1
{(}{{\color{blue!50}(}}1
{)}{{\color{blue!50})}}1
{[]}{{\color{red}[}}1
{[]}{{\color{red}]}}1
}

\begin{document}
\begin{lstlisting}
blabla(oups) { }while true 0 1  export[o]
(ou bien)
import probleme d'accents
"On dirait"
\end{lstlisting}
\end{document}

Re: listing

MessagePosté: Jeudi 11 Janvier 2018, 08:04
par anonyme74170
Bonjour,

Je n'ai pas vu le problème d'accent sur le mot problème (si on met un accent bien sur).

Pour information, j'utilise pour les problèmes d'accent :
Code: Tout sélectionner
\usepackage{listings}
\lstset{language=R}
\lstset{
extendedchars=\true,
inputencoding=utf8x
}


En revanche, avec l'ecm de marco56, j'ai la ligne 1 qui a un numéro de ligne en noir, tandis que les lignes suivantes sont numérotées en bleue.

Cdlt.
AO

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 13:11
par marco56
anonyme74170 a écrit:Bonjour,

Je n'ai pas vu le problème d'accent sur le mot problème (si on met un accent bien sur).

Pour information, j'utilise pour les problèmes d'accent :
Code: Tout sélectionner
\usepackage{listings}
\lstset{language=R}
\lstset{
extendedchars=\true,
inputencoding=utf8x
}


En revanche, avec l'ecm de marco56, j'ai la ligne 1 qui a un numéro de ligne en noir, tandis que les lignes suivantes sont numérotées en bleue.

Cdlt.
AO

Après un deuxième essai de mon code, j'obtiens les mêmes résultats que toi.
Je ne suis pas spécialiste et il doit y avoir des erreurs dans mon code. Il a le mérite d'exister...

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 15:11
par zariski63
Sypa les gars votre petite discussion sans rapport avec mon pb, bref.
Je me réponds à moi même.

literate=*{(}{{\bfseries\textcolor{blue}{(}}}1
{)}{{\bfseries\textcolor{blue}{)}}}1,

ne marche pas pour la parenthèse fermante lorsqu'on utilise "breaklines = true,"
car cela change le catcode de ")" .
Voili voilou.
Mais alors comment faire si on veut utiliser tout de même "breaklines = true," ??

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 17:05
par marco56
zariski63 a écrit:Sypa les gars votre petite discussion sans rapport avec mon pb, bref.
Je me réponds à moi même.

literate=*{(}{{\bfseries\textcolor{blue}{(}}}1
{)}{{\bfseries\textcolor{blue}{)}}}1,

ne marche pas pour la parenthèse fermante lorsqu'on utilise "breaklines = true,"
car cela change le catcode de ")" .
Voili voilou.
Mais alors comment faire si on veut utiliser tout de même "breaklines = true," ??

Désolé, j'avais cru répondre à ton problème.
Lorsque tu posteras un ecm, je reviendrai... :?
Bon we.

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 17:08
par touhami
Bon jour.
Pouvez vous poster un ECM ?

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 17:38
par zariski63
bien sûr mais tout de suite pas trop le temps.
Juste un truc, les balises asy déconnent chez moi ou alors je suis trop manche pour les utiliser

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 17:56
par marco56
zariski63 a écrit:bien sûr mais tout de suite pas trop le temps.
Juste un truc, les balises asy déconnent chez moi ou alors je suis trop manche pour les utiliser

Même remarque encore : ECM...

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 19:02
par zariski63
Ce n'est surement pas parfait.
Beaucoup de tâtonnement en raison d'une doc "listings" très imbuvable.

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 20:22
par pg
https://tex.stackexchange.com/q/73795 propose la solution suivante :

Code: Tout sélectionner
\usepackage{etoolbox}
\makeatletter
\patchcmd{\lsthk@SelectCharTable}{`)}{`]}{}{}
\makeatother

Re: listing

MessagePosté: Vendredi 12 Janvier 2018, 20:52
par zariski63
Ah okeyyy ! Tout ce temps à chercher. Demain j essaie cela.
Merciiii beaucoup !!!!