使用 listings 包在源代码中使用方程式和 mathescape 时出错

使用 listings 包在源代码中使用方程式和 mathescape 时出错

我想在使用 listings 包格式化的源代码中写入方程式。因此我使用mathescape=true

奇怪的是,只有当我将列表的语言更改为bash(可能还有其他语言)时它才有效,但当设置为R:时则不起作用:

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\lstset{keywordstyle=\textbf}
\lstset{commentstyle=\textcolor{red}}

\begin{document}

\lstset{language=R}
\begin{lstlisting}[
    frame=trBL,mathescape=true,
    caption={R-Code (test).},
    label={code:R_allee}
]
# comment
square <- function(x) {
    x^2
    % $x^{2}$
}

# nerv
x <- c(1:100)
y <- square(x)
\end{lstlisting}
\end{document}​

我收到错误:

 ! Extra }, or forgotten \endgroup.

我找不到我的错误,因为当我交换时(没有设置任何括号)发生了这种bash情况R

你们有人有主意吗?

答案1

您需要修改转义字符,因为R用作$其特殊字符/符号的一部分 - 切换到 的原因之一bash。要使用不同的转义字符,请将选项添加escapechar=|到 之间的转义列表中|...|。因此,以下内容应该有效:

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\lstset{keywordstyle=\textbf}
\lstset{commentstyle=\textcolor{red}}

\begin{document}

\lstset{language=R}
\begin{lstlisting}[
    frame=trBL,escapechar=|,
    caption={R-Code (test).},
    label={code:R_allee}
]
# comment
square <- function(x) {
    x^2
    % |$x^{2}$|
}

# nerv
x <- c(1:100)
y <- square(x)
\end{lstlisting}
\end{document}​

在 R 列表中转至数学

请注意,退出后,您需要$...$再次使用以在 LaTeX 数学模式下提供命令,就像我在上面的示例中所做的那样。请参阅listings包裹文件部分4.14 转为 LaTeX了解有关此内容以及其他可用的转义选项的更多信息。

相关内容