影响 SWeave 代码编译的标签

影响 SWeave 代码编译的标签

以下 SWeave 代码使用 WinEdt 8.1 编译,Sweave 插件生成漂亮的 R 图像:

\begin{figure}
<<fig=TRUE, echo=FALSE>>=
set.seed(123)
x <- 1:10
y <- rnorm(10)
plot(x, y)
@
\caption{sweave test}
\end{figure}

但是,当我添加一个制表符来保持图形分隔符之间的内容井然有序时(这是我正在编辑的非常大的文档中的标准做法),图形会显示为乱码:

\begin{figure}
    <<fig=TRUE, echo=FALSE>>=
    set.seed(123)
    x <- 1:10
    y <- rnorm(10)
    plot(x, y)
    @
    \caption{sweave test}
\end{figure}

乱码文本

如果有人知道为什么会发生这种情况以及如何将标签合并到 SWeave 内容中,我将不胜感激。提前谢谢您。

答案1

来自 Sweave 用户手册:

代码块以<<name>>= 在一行的开头

也就是说,插入标签会违反这个基本约定,并且 R 块不会被识别为 R 代码,而是纯 LaTeX 文本。

这听起来可能不太方便,但想象一下,您想要在 .Rnw 中逐字显示(而不是执行)一些 R 块:

\begin{verbatim}
  <<fig=TRUE, echo=FALSE>>=
    set.seed(1213)
    x <- 1:10
    y <- rnorm(10)
    plot(x, y)
  @
\end{verbatim} 

但是,此文本被识别为真正的 R 块,就像:

\begin{verbatim}
<<fig=TRUE, echo=FALSE>>=
    set.seed(1213)
    x <- 1:10
    y <- rnorm(10)
    plot(x, y)
@
\end{verbatim} 

幸运的是,只有第二种情况才是真正的 R 块,您将获得逐字文本“ \includegraphics{somename-001}”而不是 R 代码。

为了 .Rnw 文件的可读性,您仍然可以在 R 块的代码内添加制表符,或者在块之前或之后添加 LaTeX 注释,或者在块内添加 R 注释或空行......但这不是您想要的。

相关内容