我想在生成的 pdf 的框架框中打印一个 R 代码块(在 Sweave 中)。

有没有一个简单的解决方案来做到这一点?

最佳答案

简短的回答是,是的,有一个简单的方法。只需将以下几行或类似的内容添加到 Sweave 文档的序言中:

\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
                                              frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
                                              frame=single}

这是有效的,因为代码(和输出)块的外观由 SinputSoutput 环境的定义控制。这些都是由 LaTeX 包 Verbatim 提供的 fancyvrb 环境。 ( Click here 用于描述 fancyvrb 提供的众多选项的 73 页 pdf)。

快速查看 Sweave.sty 文件可以发现这两个环境的默认定义:
\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}

要更改这些定义,只需添加您自己设计的 \DefineVerbatimEnvironment 语句: (a) 在 Sweave.sty 文件的末尾;或 (b) 在 *.Snw 文档的开头。

最后,这里有一个例子来展示这在实践中的样子:
\documentclass[a4paper]{article}

\usepackage{Sweave}

\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
                                              frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
                                              frame=single}
\title{Sweave with boxes}

\begin{document}
\maketitle

<<echo=FALSE>>=
options(width=60)
@

Here is an example of a code chunk followed by an output chunk,
both enclosed in boxes.

<<>>=
print(rnorm(99))
@

\end{document}

关于r - 在某个框架框内获取 Sweave 代码块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8902679/

10-12 22:39