以逐字形式包含 Sweave 输入

以逐字形式包含 Sweave 输入

如何防止 Sweave 在 verbatim 环境中编译内容?例如:

\documentclass{article}
\begin{document}
\begin{verbatim}
<<>>=
1+1
@ 
\end{verbatim}
\end{document}

在我的 PDF 中,结果如下:

\begin{Schunk}
\begin{Sinput}
> 1+1
\end{Sinput}
\begin{Soutput}
[1] 2
\end{Soutput}
\end{Schunk}

但我只是想要输入命令。


为了更清楚,我希望这个 pdf 文件中的输出准确如下:

<<>>= 
1+1 
@

答案1

如果您愿意在 和 之前添加一个空格<<>>@那么就可以了。(Sweave 驱动程序仅将以 开头的文本块解释为<<>>=行首的文本块 - 不允许有空格!)

您的输入文件现在将如下所示:

\documentclass{article}
\begin{document}
\begin{verbatim}
 <<>>=
 1+1
 @ 
\end{verbatim}
\end{document}

您的输出文件将如下所示,可能缩进,但没有前导空格:

 <<>>=
 1+1
 @

稍后添加

或者,您可以使用一段 R 代码,当使用 Sweave 时,该代码用于cat()输出所需的 tex 代码。这种解决方案可能在形式上更好(在某种意义上),并且也能按预期工作:

<<results=tex, echo=FALSE>>=
cat("",
"\\begin{verbatim}",
"<<>>=\n",
"1+1\n",
"@\n",
"\\end{verbatim}")
@

答案2

您的 Sweave 文件(我称之为“test.Rnw”)包含:

\documentclass[11pt,a4paper]{article}
\usepackage{Sweave}
\begin{document}

\begin{verbatim}
<<>>=
1+1
@
\end{verbatim}

\input{test.txt}

\end{document}

并且您拥有包含您想要逐字显示的内容的文件,包括 <<>>= 和 @ 符号(我称之为“test.txt”):

\begin{verbatim}
<<>>=
1+1
@
\end{verbatim}

当你知道> Sweave( "test.Rnw" )你得到这个 test.tex 文件时

\documentclass[11pt,a4paper]{article}
\usepackage{Sweave}
\begin{document}

\begin{verbatim}
\begin{Schunk}
\begin{Sinput}
> 1 + 1
\end{Sinput}
\begin{Soutput}
[1] 2
\end{Soutput}
\end{Schunk}
\end{verbatim}

\input{test.txt}

\end{document}

根据我的理解,它产生的正是你想要的:

代码输出

还是我还没明白?

答案3

<<eval=FALSE,echo=FALSE>>=

应该可以完成这个工作!

相关内容