Clé escapechar avec listings et tcolorbox

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
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.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 539
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Clé escapechar avec listings et tcolorbox

Message non lu par zariski63 »

Bonjour,
quelqu'un pourrait-il me dire, svp, comment corriger le fait que \lstinline accepte la clé escapechar alors que le même \lstinline dans une \DeclareTotalTCBox ne l'accepte pas ?
Je compile avec LuaLatex.
Merci pour votre éventuelle aide. :)

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[bold-style=ISO,
            %math-style=french
            ]{fourier-otf}
\usepackage{unicode-math}% Charge fontspec

\RequirePackage{tcolorbox}
    \tcbuselibrary{listings}
    \tcbuselibrary{xparse}

%<----- http://tex.stackexchange.com/q/43526  ------------------------------>
%   corrige le comportement apparemment délibéré mais non documenté de désactivation 
%  des échappements autres que mathescape dans TextStyle (utilisé par \lstinline). 
%  Il peut y avoir une bonne raison pour laquelle cela est désactivé par défaut, 
%  alors méfiez-vous au cas où cela poserait des problèmes.
\usepackage{etoolbox}
\makeatletter
\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
\makeatother
%<--------------------------------------------------------------------------->

\lstdefinestyle{latex}{%
   language          = {[LaTeX]TeX},
   basicstyle        = {\ttfamily},
   extendedchars     = true,
   escapechar        = {§},
   mathescape,
   texcsstyle        = *{\color{blue}},
   }

\DeclareTotalTCBox{\myLstinline}{O{} O{} v}
     {%
      tcbox raise base,
      nobeforeafter,
      arc      = 0.6ex,%
      top      = -0.2ex,%
      bottom   = -0.2ex,%
      left     = 0mm,%
      right    = 0mm,%
      boxrule  = 0.7pt,%
      #2%
      }{\lstinline[#1]{#3}}%

\begin{document}

\lstinline[style=latex]!\count§$\langle$§nombre§$\rangle$§! 

\medskip

\myLstinline[style=latex][colback=blue!5, colframe=blue]!\count§$\langle$§nombre§$\rangle$§!

\end{document}
F. Pantigny
Utilisateur confirmé
Utilisateur confirmé
Messages : 21
Inscription : dimanche 07 juillet 2019, 14:37

Re: Clé escapechar avec listings et tcolorbox

Message non lu par F. Pantigny »

je n'ai pas de réponse à proposer avec listings mais, en revanche, on peut faire cela avec l'extension piton (version ≥ 3.0b) sans problème. L'extension piton peut composer avec LuaLaTeX des codes en Python, OCaml, C++ et SQL mais on peut aussi définir de nouveaux langages avec la même syntaxe que celles de listings (on peut donc composer tous les langages pris en charge par listings).

Code : Tout sélectionner

\documentclass[12pt]{article}

\usepackage{piton}
\PitonOptions{begin-escape-math = £, end-escape-math = £}


\NewPitonLanguage{LaTeX}
  { 
    keywordsprefix = \ ,
    alsoother = @ _ 
  }

\PitonOptions{language = LaTeX}


\usepackage{tcolorbox}
\tcbuselibrary{xparse}

\DeclareTotalTCBox{\Inline}{O{} v}
  {
    tcbox raise base,
    nobeforeafter,
    arc      = 0.6ex,
    top      = -0.2ex,
    bottom   = -0.2ex,
    left     = 0mm,
    right    = 0mm,
    boxrule  = 0.7pt,
    #1
  }
  {\piton{#2}}


\begin{document}

\Inline|\count|, \Inline[arc=0pt]|\count1|

\medskip
\Inline|\count£\langle£num£\rangle£|

\end{document}
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 539
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Clé escapechar avec listings et tcolorbox

Message non lu par zariski63 »

Merci de m'avoir répondu.
Je déplore le manque de clé "keywordstyle" qui ne permet donc pas de paramétrer les couleurs des mots Latex.
F. Pantigny
Utilisateur confirmé
Utilisateur confirmé
Messages : 21
Inscription : dimanche 07 juillet 2019, 14:37

Re: Clé escapechar avec listings et tcolorbox

Message non lu par F. Pantigny »

L'extension piton a son propre système de clés pour les styles des différents lexèmes. Il s'agit de la fonction \SetPitonStyle.

En l'occurrence, vous pouvez utiliser l'instruction suivante pour passer les mots-clés en rouge :

Code : Tout sélectionner

\SetPitonStyle[LaTeX]{Keyword = \color{red}}