라텍스에서 lstdefine언어를 사용하여 기호 색상화

라텍스에서 lstdefine언어를 사용하여 기호 색상화

라텍스에서 lstdefine언어로 일부 기호를 녹색으로 넣고 싶은데 기호가 인식되지 않는 것 같습니다.

색상을 지정해야 하는 기호는 =, > 및 <입니다. 가능합니까? 어떻게 해야 하나요?

주요 파일:

\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}

포맷할 파일:

module store {
   (...)

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

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

답변1

이전에도 비슷한 상황에 처해 있었는데 다음과 같은 방법으로 문제를 해결할 수 있었습니다.

\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}

즉, 클래스 1 키워드의 빈 집합을 정의하고 기호를 이 클래스에 속하는 "다른 키워드"로 추가하고 다른 모든 유형의 키워드를 상위 클래스로 이동합니다. 하지만 이것이 왜 작동하는지 묻지 마십시오. 왜냐하면 나도 모르기 때문입니다!

내가 얻는 결과는 다음과 같습니다.

코드 출력

관련 정보