On 27/07/2008 3:10 PM, Stephen Tucker wrote:
Hi list,

I was using Sweave and was wondering if anyone has had any luck changing the 
font colors of the code chunks. For instance, in my .Rnw preample I tried 
including:

===
\usepackage[usenames]{colors}
\definecolor{darkred}{rgb}{0.545,0,0}
\definecolor{midnightblue}{rgb}{0.098,0.098,0.439}
\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl,formatcom={\color{midnightblue}}}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={\color{darkred}}}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl,formatcom={\color{blue}}}
===

which works in the sense that colors do show up in the processed pdf document, 
but extra spaces in between the input and output code chunks appear (which is 
not the case when colors are not specified), resulting in a long document with 
many blank lines.

Alternatively, in the resulting tex document I replaced all instances of 
\begin{Sinput}... \end{Sinput} with {\color{midnightblue}\begin{Sinput} ... 
\end{Sinput}} and darkred for Soutput and so on. When I do this, I get the 
following error message:

=== LaTeX excerpt ===
\begin{Schunk}
{\color{midnightblue}\begin{Sinput}
ISOdatetime(1970, 1, 1, 0, 0, 0, "") - ISOdatetime(1970, 1, 1,
+     0, 0, 0, "GMT")
\end{Sinput}}
{\color{darkred}\begin{Soutput}
Time difference of 8 hours
\end{Soutput}}
\end{Schunk}
===

=== error message ===
)
! FancyVerb Error:
  Extraneous input `}\end{}' between \end{Sinput} and line end
.
[EMAIL PROTECTED] ... {FancyVerb Error:
\space \space #1
}
l.13 \end{Sinput}}
===

I guess I don't know enough of the Schunk/Sinput/Soutput definitions to toy with it and was wondering if anyone had tried something similar.

The definitions are very simple:  see Sweave.sty, they're just

\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}

\newenvironment{Schunk}{}{}

I would use

\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl,formatcom=\color{midnightblue}}

(i.e. no extra braces), but whether or not I do that, I don't notice extra spacing beyond what Sweave always puts in. To get rid of the usual Sweave extra spacing, try

\fvset{listparameters={\setlength{\topsep}{0pt}}}
\renewenvironment{Schunk}{\vspace{\topsep}}{\vspace{\topsep}}

Duncan Murdoch

______________________________________________
R-help@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.

Reply via email to