使用范围前缀中带有 ## 的 R 代码列表

使用范围前缀中带有 ## 的 R 代码列表

在 R 中,注释前面带有符号#。此外,为了避免弄乱缩进,通常使用##而不是#。因此,当我想在 LaTeX 文档中包含一些 R 代码时,我使用了listings带有这些说明。但是,这给出了以下错误:

Illegal parameter number in definition of \lst@rangebegin

以下是 R 代码:

##--GOLL0----
GetObsLogLik <- function(data, w, mu, sigma){
  N <- nrow(data)
  S <- ncol(data)
  K <- nrow(mu)
  sum(sapply(1:N, function(i){
    log(sum(sapply(1:K, function(k){
      w[k] * dmvnorm(x=data[i,], mean=mu[k,],
                     sigma=sigma[k]^2 * diag(S))
    })))
  }))
}
##--GOLL1----

以下是 LaTeX 代码:

\documentclass{article}

\usepackage{listings}
\lstset{language=R,
  frame=single,
  basicstyle=\small,
  rangeprefix=##--,
  rangesuffix=----,
  includerangemarker=false}

\begin{document}

\lstinputlisting[linerange=GOLL0-GOLL1]{test.R}

\end{document}

##当我用替换时,错误消失了//。但这不是一个解决方案,因为//在 R 中无效。我也尝试了提供的解决方案这里但它也不起作用。

答案1

问题不在于 R 源代码,而在于您#在选项中使用了特殊字符 ( ) \lstset。请尝试使用\#\#

相关内容