如何防止 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>>=
应该可以完成这个工作!