Colorear símbolos con lstdefinelanguage en látex

Colorear símbolos con lstdefinelanguage en látex

Quiero poner algunos símbolos en color verde con lstdefinelanguage en látex, pero parece que los símbolos no se reconocen.

Los símbolos que necesito colorear son =, > y <. ¿Es posible? ¿Cómo puedo hacer esto?

El archivo principal:

\documentclass{article}


\usepackage{graphicx,color}
\usepackage{booktabs}
\usepackage{listings}


\lstdefinelanguage{NeoIDL}{
  sensitive = true,
  keywords = [1]{module, resource, enum, annotation, for, import, entity, path,
  @get, @post, @put, @delete, require, ensure, otherwise, call},
  %ndkeywords={int, \char{}  },
  %ndkeywordstyle=\color{blue}\bfseries,
  morekeywords=[2]{>, <, ==},
  keywordstyle=[2]\color{green},
  numbers=left,
  numberstyle=\scriptsize,
  stepnumber=1,
  numbersep=8pt,
  showstringspaces=false,
  breaklines=true,
  frame=top,
  comment=[l]{//},
  morecomment=[s]{/*}{*/},
  commentstyle=\color{purple}\ttfamily,
  stringstyle=\color{red}\ttfamily,
  morestring=[b]',
  morestring=[b]"
  }

\begin{document}

\begin{figure}[htb]
\begin{small}
\lstinputlisting[language=NeoIDL,firstnumber=1]{store_pos_servico.neo}
\end{small}
\caption{Service 1}
\end{figure} 

\end{document}

El archivo a formatear:

module store {
   (...)

   resource order  {
     path = "/order/{id}";

     @post   int postOrder (Order order)
    require (call store.getOrder(id) == "NotFound"),
    otherwise "InvalidPrecondition"
   };
}

Respuesta1

Me encontré en una situación similar anteriormente y pude resolver el problema de esta manera:

\documentclass{article}


\usepackage{graphicx,color}
\usepackage{booktabs}
\usepackage{listings}


\lstdefinelanguage{NeoIDL}{
  sensitive = true,
  keywords={},
  otherkeywords={% Operators
    >, <, ==
  },
  keywords = [2]{module, resource, enum, annotation, for, import, entity, path,
  @get, @post, @put, @delete, require, ensure, otherwise, call},
  keywordstyle=\color{green},
  keywordstyle=[2]\color{blue},% for example
  numbers=left,
  numberstyle=\scriptsize,
  stepnumber=1,
  numbersep=8pt,
  showstringspaces=false,
  breaklines=true,
  frame=top,
  comment=[l]{//},
  morecomment=[s]{/*}{*/},
  commentstyle=\color{purple}\ttfamily,
  stringstyle=\color{red}\ttfamily,
  morestring=[b]',
  morestring=[b]"
  }

\begin{document}

\begin{figure}[htb]
\begin{small}
\lstinputlisting[language=NeoIDL,firstnumber=1]{store_pos_servico.neo}
\end{small}
\caption{Service 1}
\end{figure} 

\end{document}

Es decir, defina un conjunto vacío de palabras clave de clase 1, agregue los símbolos como "otras palabras clave" que pertenecen a esta clase y cambie todos los demás tipos de palabras clave a clases de orden superior. ¡Pero no preguntes por qué funciona esto, porque yo tampoco lo sé!

Aquí está el resultado que obtengo:

Salida del código

información relacionada