On 11/12/2010 5:58 PM, Emmanuel Charpentier wrote:
Dear list,

Inspired by the original Knuth tools, and for paedaogical reasons, I wish
to produce a document presenting some source code with interspersed
comments in the source (see Knuth's books rendering TeX and metafont
sources to see what I mean).

I seemed to remember that a code chunk could be defined piecewise, like in

Comments...

<<Chunk1, eval=FALSE, echo=TRUE>>=
SomeCode
@

Some other comments...

<<Chunk2, eval=FALSE, echo=TRUE>>=
MoreCode
@

And finally,

<<Chunk3, eval=TRUE, echo=TRUE>>=
<<Chunk1>>
<<Chunk2>>
EndOfTheCode
@

That works ... as long as SomeCode, MoreCode and EndOfTheCode are self-
standing pieces of R code, but *not* code fragments. You can *not*
intersperse comments in, say, a function body, or  local() environment
this way : when Sweaving, *R* complains of an incomplete source (makes
noise about an unexpected end of input at the end of Chunk1, IIRC, and
never sees Chunk2).

I hoped that Sweave's "alternative" syntax could offer a way out : no
such luck.

There seems to be no way to delay R evaluation of a R chunk passed by
Sweave ; at least, the "eval=FALSE" option of chunk declaration is not
sufficient for that.


It's not evaluation, it's parsing, but you're right: there's no way to delay it. Perhaps Sweave needs a "parse=FALSE" option.



Am I missing something in the Sweave nd odfWeve documentations (that I
read till I grew green and moldy) ? Or does this require a fundamental
change in the relevant Sweave drivers ?

I suspect the latter.


Can you suggest alternative ways of doing what I mean to do ? The only
workaround I found is to paste a second copy of my code in a \verbatim
environment (or, in the case of odfWeave, in the "text" part), and spice
it with \end{verbatim} comments.. \begin{verbatim} chunks. This way, I
lose any guarantee of consistency between commented text and effective
code.

Not any very satisfactory suggestions:

- write smaller functions, and make up your large function out of calls to them. Then you can define a whole small function in one chunk.

- use keep.source=TRUE, and use R comments rather than nicely typeset ones if you need to make comments within a function definition.

I don't know any way to get what you were asking for, but perhaps these are close enough.

Duncan Murdoch


Any other idea ?

                                        Emmanuel Charpentier

______________________________________________
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.

______________________________________________
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