简短的回答是,有一个简单的方法.只需将以下行或类似内容添加到Sweave文档的序言中:
\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
frame=single}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为代码(和输出)块的外观由Sinput和Soutput环境的定义控制.这些都是VerbatimLaTeX包提供的环境fancyvrb.(点击此处查看73页pdf,描述fancyvrb提供的众多选项).
快速浏览文件可以看出Sweave.sty这两种环境的默认定义:
\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}
Run Code Online (Sandbox Code Playgroud)
要更改这些定义,只需添加\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}
Run Code Online (Sandbox Code Playgroud)
