我想在生成的 pdf 的框架框中打印一个 R 代码块(在 Sweave 中)。
有没有一个简单的解决方案来做到这一点?
最佳答案
简短的回答是,是的,有一个简单的方法。只需将以下几行或类似的内容添加到 Sweave 文档的序言中:
\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
frame=single}
这是有效的,因为代码(和输出)块的外观由
Sinput
和 Soutput
环境的定义控制。这些都是由 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/