我正在尝试将mathescape
其与包中的 Erlang 语法突出显示结合使用lstlisting
,如其手册第 4.14 节所述:
\documentclass{article}
\usepackage{listings}
\lstset{
language=Erlang,
mathescape=true
}
\begin{document}
\lstinline{$n_1$.lookup(k)}
\end{document}
失败原因:
! Extra }, or forgotten \endgroup.
<recently read> \egroup
l.10 \lstinline{$n_1$.lookup(k)}
该代码对于其他语言(例如 C)来说运行良好。Erlang 的风格是否缺少一些东西来允许这样做?
答案1
该listings
包允许语法
\lstinline{...}
但将其标记为“实验性的”,请参阅手册第 26 页,第 4.2 节。第 5.1 节讨论了\lstinline
在另一个命令的参数中使用;然而,第 5.1 节的结尾告诉我们,这并不安全。
特别是,mathescape
结果与实验语法不兼容,所以你应该使用类似
\lstinline|$n_1$.lookup(k)|
(使用要排版的字符串中未出现的字符作为分隔符,就像命令一样\verb
)。