2012-01-17 1 views

ответ

7

Короткий ответ: да, есть простой способ. Просто добавьте следующие строки, или что-то вроде них в преамбуле Sweave документа:

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

Это работает, потому что внешний вид кода (и выход) кусковые контролируется определением Sinput и Soutput сред. Это как среды Verbatim, предоставленные пакетом LaTeX fancyvrb. (Click here для 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} 

enter image description here

+0

ЧУДЕСНЫЙ ответ - спасибо! –

+0

Дорогой Джош, я только что сделал следующий вопрос к этому здесь: http://stackoverflow.com/questions/8907613/getting-sweave-code-chunks-to-stay-inside-page-margins Я был бы счастлив для любых комментариев. Еще раз спасибо! –

+0

Хороший ответ. Если я могу спросить, как насчет того, чтобы весь кусок вписывался в рамку? –

2

knitr, правопреемником Sweave, выходами по умолчанию все вторит R код в коробках, а также форматирует его на полях. Другие приятные функции включают синтаксическую раскраску и интеграцию PGF.

Sweave код средней сложности должен быть незначительным, если есть какие-либо приспособления для работы с knitr.

 Смежные вопросы

  • Нет связанных вопросов^_^