# Add new keyword including an operator to existing language listings

I am trying to type set some OPL (Optimization Programming Language) code using the listingspackage. It turns out, that it looks a lot like Java, so I use Java like a "base". However, some keywords, which I need are not present in Java. I figured out that the keyword dvar could be added using

\lstset{
morekeywords={dvar}
}


However, I also need to add keywords int+ and float+ where the "+" is important as well. If I do

\lstset{
morekeywords={dvar,int+}
}


I do not achieve anything as it seems that the "+" is ignored. From the following

\begin{lstlisting}
int anInt = 25; // Declaration of an integer storing the value 25
dvar int+ hej;  // Declaration of a non-negative integer valued decision variable
\end{lstlisting}


I get the output

where it seems the "+" is typeset like an ordinary operator in code and not together with int as in int+. How can I add a new keyword that includes a +''?

For completeness, here goes a (minimal) working example

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings,lstautogobble}
\definecolor{napiergreen}{rgb}{0.16, 0.5, 0.0}
\lstset{language=Java,
keywordstyle=\color{blue},
basicstyle=\scriptsize\ttfamily,
stringstyle=\ttfamily,
rulecolor=\color{black},
autogobble=true,
morekeywords={dvar,int+}
}
\begin{document}
\begin{lstlisting}
int+ anInt = 25; // Declaration of an integer storing the value 25
dvar int+ hej;  // Declaration of a non-negative integer valued decision variable
\end{lstlisting}
\end{document}

• This is a good question, but it would be really helpful if you could put your code fragments into a complete compilable document that people could play with. Aug 5, 2020 at 13:52
• @Alan Munn thank you. I will add a MWE asap
– Sune
Aug 5, 2020 at 16:24

You can tell listings to treat + as a letter for the purposes of the language definition, by using the alsoletter key. As you can see by the examples below, only + in the defined keywords is highlighted.

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}

\begin{document}
\begin{lstlisting}[language=java,alsoletter={+},morekeywords={int+,dvar}, keywordstyle={\color{blue}},]
int+ anInt = 25; // Declaration of an integer storing the value 25
dvar int+ hej;  // Declaration of a non-negative integer valued decision variable
dvar+  foo+;
int + foo;
int+ + foo+;
\end{lstlisting}

\end{document}