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