Prolog 代码的更复杂的语法突出显示

Prolog 代码的更复杂的语法突出显示

我想知道,列表是否允许您定义自己的语法突出显示,如果是,它的系统有多复杂?

这是一个简单的例子:

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

理想情况下,在下面的代码示例中,“foo”将被突出显示(因为它声明了一个新子句),“:-”也是如此。

我尝试使用 emph 和 morekeywords 来突出显示 :-,但都不起作用。它们似乎适用于“for”和“while”等常规单词,但不适合序列“:-”。有没有一种特殊的方法来转义它以添加关键字?

为了突出显示 :- 之前的谓词名称,我不知道该如何解决。这不是必需的,但如果我能让它工作就好了。我可以定义自定义语法/语法来突出显示 Prolog 吗?

答案1

虽然不是对你问题的直接回答,但我推荐这个相当棒的套餐minted。它用于pygments突出显示各种语言。请记住,您需要传递-shell-escape到,latex以便它可以调用到pygments。文档这里 (pdf)

坦率地说,我之所以转换到 minted 是因为设置任何复杂的东西listings很快就会超出我的口味。

相关内容