Короткий ответ: да, есть простой способ.Просто добавьте следующие строки или что-то вроде этого в преамбулу вашего документа Sweave:
\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
frame=single}
Это работает, потому что появление фрагментов кода (и вывода) контролируется определением Sinput
и Soutput
среды.Это обе среды Verbatim
, предоставляемые пакетом LaTeX fancyvrb
.( Нажмите здесь для 73-страничного PDF-файла, описывающего многочисленные опции, которые предоставляет fancyvrb
).
Беглый взгляд в файл Sweave.sty
показывает определение по умолчанию этих двух сред:
\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}
Чтобы изменить эти определения, просто добавьте \DefineVerbatimEnvironment
операторов вашего собственного изобретения:(а) в конце файла 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}