转义符会导致 Sweave 中断吗?

转义符会导致 Sweave 中断吗?

我正在尝试使用 texworks 和 sweave 构建 pdf。除了某段代码之外,我可以正常获得输出,但我不知道为什么。

下面是一个工作示例:

\documentclass[a4paper]{article}
\title{Cross-Validation by Example }
\usepackage{Sweave}
\begin{document}
\maketitle

\begin{Schunk}
\begin{Sinput}
> train <- train[,8:length(colnames(train))]
> test <- test[,8:length(colnames(test))]
> nonNAs <- function(x) {
+   as.vector(apply(x, 2, function(x) length(which(!is.na(x)))))
+ }
> colnames_train <- colnames(train)
> colcnts <- nonNAs(train)
> drops <- c()
> for (cnt in 1:length(colcnts)) {
+   if (colcnts[cnt] < nrow(train)) {
+     drops <- c(drops, colnames_train[cnt])
+   }
+ }
> train <- train[,!names(train) \%in\% drops]
> test <- test[,!names(test) \%in\% drops]
\end{Sinput}
\end{Schunk}

\end{document}

该文件运行时没有问题,并且包含大量 R 代码。我必须确保 % 符号不会作为注释使用,因此我明确在它们前面加了一个反斜杠。但是,下面看似更简单的代码会引发异常:

\documentclass[a4paper]{article}
\title{Cross-Validation by Example }
\usepackage{Sweave}
\begin{document}
\maketitle

\begin{Schunk}
\begin{Sinput}
 > set.seed(123)
 > cv <- train(cut_train1$classe ~ ., method="rf", trControl=trainControl(method="cv", number = 4), data=cut_train1)
 > print(cv, digits=3)
\end{Sinput}
\begin{Soutput}

\end{document}

控制台输出在底部告诉我这一点:

LaTeX Warning: No \author given.

("C:\Program Files\MiKTeX 2.9\tex\latex\ae\t1aett.fd"))
Runaway argument?
! File ended while scanning use of \FancyVerbGetLine.
<inserted text> 
                \par 
<*> ...ocs/dev/blog/book/outline/sweaveML/pml3.tex

? 

我是否忽略了一些显而易见的东西?波浪号是否违反了转义字符规则?

答案1

好的,我想我找到了答案。该文件的名称是 pml3.tex。我运行了Sweave()一个名为“pml.Rnw”的文件,它给了我 pml.tex 的原始文档。运行原始文档中的代码工作正常。我想这是因为 Sweave 必须链接到 pml.synctex 文件,而 pml3.tex 文件没有指向它。

相关内容