Dear Emacs, make this -*-Text-*- mode! R currently comes with several R programs (``demos'') demonstrating its capabilities; one of the demos additionally uses C code (dynload). The current mechanism is not very powerful. Problems identified include * Demos might interfere with the user's workspace (.GlobalEnv). * There is no straightforward way to display explanatory information along the code being run, comments are typically truncated. (Of course one could get by this using explicit file.show() steps.) * There is no straightforward way of interacting with the user. The last two items imply that we currently cannot easily write on-line tutorials. In addition, as Fritz recently pointed out to me, it would be very useful to have a mechanism for producing `pretty' (e.g. LaTeX with PostScript graphics) output from R code and explanatory comments. Fritz and Peter had discussed a mechanism for writing enhanced demos based on extended Rd markup. Given recent discussions on documentation objects and related issues, I think we need a more general literate programming kind of approach. Note that my experience with such tools is primarily with the LaTeX 2e docstrip mechanism, hence what I have in mind is closely related to this. * Add a mechanism for keeping ``documentation'' along with the R code. The text would be in comment lines enclosed within SGML-style tags. Rather than assuming that this documentation must be plain text or would be written in some universal language, there should be a way to specify the kind of documentation (e.g., LaTeX, Rd, SGML, ...). The docstrip-style processing mechanism would be smart enough to extract the right parts. * In particular, R itself should we able to extract text it should display along with running a demo. * Add R functions providing a toolkit for writing demos. This could include e.g. demoAskConfirmation demoGetInput etc. * (Preliminary.) For tutorials we need a mechanism providing explain and run and display cycles. That R knows what to do with markup in comments is not good enough, because there is no point in having everything run over the screen. Of course we can always write explicit R code to do this, but I think it is more convenient to have ## ## ## O.k., so we now want to do the following ... ## ## foo(bar, ...) ## ## * Add R functions to ``pretty-print'' R objects in certain formats. E.g., when trying to create LaTeX output the mechanism could be like ## ## We now do $$\alpha\beta\gamma ...$$ ## x <- doSomethingUsefulNow(args) LaTeX(x) but of course we need a way to specify that the LaTeX representation gets dumped to the same file the LaTeX ``documentation'' goes to. Similarly, there should be a mechanism for adding plots (e.g. have a plot counter, create subdir `images', when dumping a plot create file `fig$counter.eps' in the subdir and add \includegraphics{...} to the LaTeX file, increment the counter). -k