On Oct 14, 2006, at 5:59 PM, Trevor Harmon wrote:
With the default Mac Classic theme, this environment is supposed to have a light blue background. However, while writing a recent paper, the highlighting often did not work the way it's supposed to. To demonstrate the problem, I've attached three LaTeX files. The rightway.tex file shows how the highlighting is supposed to be; the wrongway1.tex and wrongway2.tex files show incorrect highlighting. Is there a simple fix for these problems?
I fixed the problem with wrongway2.tex. Basically the rule for lstlisting environments was matching starting at the \begin {lstlisting} part. However, the generic rule was matching earlier, because it was also matching the spaces in front of the \begin, if any. So the lstlisting rule didn't have any chance.
The second problem you are having doesn't have a very elegant solution. The problem is that one needs to specify what language the code is to be highlighted as. Right now, it assumes the code is Python code, basically because the developer who added the rule needed that. This is what causes your other problems (for instance "is" is a keyword in Python), and there is no elegant fix for this atm. We could perhaps come up with some convention, like having to precede the \begin{lstlisting} line with a command line like:
# Java code
and so on. Then we could put a couple of rules in place, each matching one of the common languages, though as you can imagine this can quickly get out of hand and bloat the grammar to twice its size at least.
To "fix" this locally, you have two options. The one is to change the LaTeX language grammar, so that the rule matching lstlisting changes to include your preferred language instead. This will cost you losing any updates to the language grammar that may come.
A more robust solution is to create a new grammar, perhaps called JavaLaTeX or some such, which first has a rule for an lstlisting environment, essentially copying the one from the LaTeX bundle and changing the include rules in it. After this one rule, JavaLaTeX simply includes the LaTeX grammar.
Thanks,
Trevor
Haris