![转义符会导致 Sweave 中断吗?](https://linux22.com/image/340214/%E8%BD%AC%E4%B9%89%E7%AC%A6%E4%BC%9A%E5%AF%BC%E8%87%B4%20Sweave%20%E4%B8%AD%E6%96%AD%E5%90%97%EF%BC%9F.png)
我正在尝试使用 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 文件没有指向它。