Я хотел бы сделать фрагмент кода R (в Sweave), напечатанный внутри рамки в полученном pdf формате.Получение Sweave кодовых фрагментов внутри рамки в рамке?
Есть ли простое решение для этого?
Я хотел бы сделать фрагмент кода R (в Sweave), напечатанный внутри рамки в полученном pdf формате.Получение Sweave кодовых фрагментов внутри рамки в рамке?
Есть ли простое решение для этого?
Короткий ответ: да, есть простой способ. Просто добавьте следующие строки, или что-то вроде них в преамбуле 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}
ЧУДЕСНЫЙ ответ - спасибо! –
Дорогой Джош, я только что сделал следующий вопрос к этому здесь: http://stackoverflow.com/questions/8907613/getting-sweave-code-chunks-to-stay-inside-page-margins Я был бы счастлив для любых комментариев. Еще раз спасибо! –
Хороший ответ. Если я могу спросить, как насчет того, чтобы весь кусок вписывался в рамку? –
knitr
, правопреемником Sweave
, выходами по умолчанию все вторит R код в коробках, а также форматирует его на полях. Другие приятные функции включают синтаксическую раскраску и интеграцию PGF.
Sweave
код средней сложности должен быть незначительным, если есть какие-либо приспособления для работы с knitr
.
пакет 'knitr' – baptiste