Combining Sweave and fancyvrb
try this:
create a file called mySweave.sty, containing the following code:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mySweave}{}
\RequirePackage{ifthen}
\newboolean{Sweave at gin}
\setboolean{Sweave at gin}{true}
\newboolean{Sweave at ae}
\setboolean{Sweave at ae}{true}
\RequirePackage{ifthen}
\RequirePackage{graphicx,fancyvrb}
\IfFileExists{upquote.sty}{\RequirePackage{upquote}}{}
\ifthenelse{\boolean{Sweave at gin}}{\setkeys{Gin}{width=0.8\textwidth}}{}%
\ifthenelse{\boolean{Sweave at ae}}{%
\RequirePackage[T1]{fontenc}
\RequirePackage{ae}
}{}%
\DefineVerbatimEnvironment{Sinput}{Verbatim} {
commentchar=@,
frame=lines, label=\textrm{\bf R code}, numbers=left,
framesep=10pt, fontshape=sl, commandchars=\\\{\}}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\fvset{listparameters={\setlength{\topsep}{0pt}}}
% makes space between Sin and Sout smaller
\newenvironment{Schunk} {} {}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Above, I defined a custom verbatim environment for Sinput, Soutput and
Schunk, which are environments produced when you sweave your .Rnw
file.
in you .Rnw file, write
\usepackage{mySweave}
% instead of
% \usepackage{/usr/local/R-2.7.0-inst/share/texmf/Sweave}
% \usepackage{fancyverb}
This is an R chunk, ie it will be interpreted by R, not LaTeX.
<<>>=
y <- c(53, 57, 66, 67, 72) # count data
n <- length(y)
s <- sum(y)
@
When you sweave this, you will get
\begin{Schunk}
\begin{Sinput}
y <- c(53, 57, 66, 67, 72) n <- length(y) s <- sum(y)
\end{Sinput}
\end{Schunk}
in your .tex file. Running latex on your tex file will now use the
verbatim environments defind in mySweave.sty.
You cannot have \label in an S chunk, as R will not know what to do
with it. Neither can you have \label in a verbatim environment, as it
will simply be typeset verbatim.
Hope this helps,
Andrew
On Tue, Mar 17, 2009 at 4:46 PM, Giovanni Petris <GPetris at uark.edu> wrote:
I find Sweave very useful and I was trying to combine it with the
latex package fancyvrb. I was trying to get line numbering and labels
in order to reference the lines where particular commands occur.
Unfortunately, I haven't been able to figure out how to do it. Maybe
somebody can help me.
The following is a sample Rnw file: the first part shows what I would
like to get, the second what I tried but didn't work.
\documentclass[12pt]{article}
\usepackage{/usr/local/R-2.7.0-inst/share/texmf/Sweave}
\usepackage{fancyvrb}
\DefineVerbatimEnvironment{Rcode}{Verbatim}{%
?commentchar=@,
?frame=lines, label=\textrm{\bf R code}, numbers=left,
?framesep=10pt, fontshape=sl, commandchars=\\\{\}}
\SweaveOpts{keep.source = TRUE}
\begin{document}
I would like to produce something like the following, but using Sweave. Note
the label on line \ref{Rcode:sum}.
\begin{Rcode}
y <- c(53, 57, 66, 67, 72) # count data
n <- length(y)
s <- sum(y) \label{Rcode:sum}
\end{Rcode}
The following naive approach does not work, not either without the label...
\begin{Rcode}
<<>>=
y <- c(53, 57, 66, 67, 72) # count data
n <- length(y)
s <- sum(y) \label{Rcode:sum}
@
\end{Rcode}
\end{document}
Thank you in advance for your suggestions!
Giovanni
--
Giovanni Petris ?<GPetris at uark.edu>
Associate Professor
Department of Mathematical Sciences
University of Arkansas - Fayetteville, AR 72701
Ph: (479) 575-6324, 575-8630 (fax)
http://definetti.uark.edu/~gpetris/
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.