[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Orgmode] Re: Org-mode and ESS
From: |
Austin Frank |
Subject: |
[Orgmode] Re: Org-mode and ESS |
Date: |
Wed, 12 Nov 2008 14:42:24 -0500 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (darwin) |
On Tue, Nov 11 2008, Graham Smith wrote:
> Is any one using Org-mode with ESS. ESS seems to need a file with a
> *.R name to work, but it would be really useful to use Org-mode
> features to keep notes of comments and code, before sending to R, and
> of course to copy results back into an Org-Mode file from R.
>
> As a search here and a google hasn't thrown up anything obvious, I
> assume not, but I thought I would ask.
In my local git repo of the org sources I have a pretty nice setup for
using R or S inside org-mode. I liked the in-file native editing of
source code so much that I decided that I wanted to use org files as
source files with Sweave (instead of using .Rtex or .Rnw files). My
goal was to export documents with embedded R code, rather than to use
org within the comments of R files. I can certainly see a use for the
latter approach (which seems to be what you have in mind), as well.
There was recently a thread where someone created a preprocessing system
for specific types of blocks. That would be another possible strategy
for evaluating blocks of R code before export. Since that facility
didn't exist yet and there was already the extensible Sweave
pre-processor, I took the route of making Sweave org-aware.
Basically, in the workflow I've developed, I create a file with the
extension .Rorg, say homework_key.Rorg. Within that file, I can embed
blocks of R code, and can refer to variables defined in the R code
contained in the document.
--8<---------------cut here---------------start------------->8---
#+BEGIN_R
a <- 3
a
#+END_R
* the value of a is \R{a}
* the value of a + 3 is \R{a + 3}
--8<---------------cut here---------------end--------------->8---
Executing C-c ' inside the block takes you into a temporary buffer
that's in ESS mode, with full support for interactive evaluation.
When I'm ready to export, I run the R command
Sweave("homework_key.Rorg", driver=RweaveOrgLatex, syntax=SweaveSyntaxOrg).
(I've defined those driver and syntax functions locally). This creates
a new file, homework_key.org. In the new file, the above text would be
translated into
--8<---------------cut here---------------start------------->8---
#+BEGIN_LATEX
\begin{Schunk}
\begin{Sinput}
> a <- 3
> a
\end{Sinput}
\begin{Soutput}
[1] 3
\end{Soutput}
\end{Schunk}
#+END_LATEX
* the value of a is 3
* the value of a + 3 is 6
--8<---------------cut here---------------end--------------->8---
The plain homework_key.org file could then be exported into \LaTeX. It
even works with the new pdf export.
I haven't put the code anywhere public because there are several things
I still need to do:
- test graphic creation and export
- improve generation of latex headers
- automate processing from .Rorg to .tex (or .pdf) (currently at least 3
steps, should be 1)
- come up with suggested keybindings for inserting the #+BEGIN/END_R
blocks
- create a driver to generate HTML instead of \LaTeX
Still, it is in a works-for-me state at the moment, and I could send a
pull request to Carsten or could push it worg if folks were interested.
Let me know,
/au
--
Austin Frank
http://aufrank.net
GPG Public Key (D7398C2F): http://aufrank.net/personal.asc
pgpSb1fl73ewF.pgp
Description: PGP signature