I'm wondering, does listings allow you to define your own syntax highlighting, and if so, how sophisticated is its system?
Here's a minimal example:
\documentclass{article}
\usepackage{listings}
\lstset{emph={%
{:-}%
},emphstyle={\color{red}\bfseries\underbar}%
}%
\begin{document}
\begin{lstlisting}[language=Prolog]
foo(Arg1, Arg2) :-
bar(Arg3),
baz(Arg4),
length([1,2,3], 3).
\end{lstlisting}
\end{document}
Ideally, in the following code sample, "foo" would be highlighted (since it's declaring a new clause), as would ":-".
I tried to use emph and morekeywords to highlight :-, but neither worked. They seems to work for regular words like "for" and "while", but not for the sequence ":-". Is there a special way to escape this to add a keyword?
To highlight the name of the predicate before :-, I have no idea how I would tackle that. It's not essential, but it would be nice if I could get it working. Can I define custom syntax/grammar for highlighting Prolog?
emph
andkeywords
won't highlight characters such as:
and-
becauselistings
treats them as "other" characters; you'll have to declare them as "letters" by usingalsoletter=:-,
. As for highlighting stuff before:-
, see my comment to the question at the end of the second link above.