emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] org-export-sweave


From: Austin Frank
Subject: [Orgmode] org-export-sweave
Date: Mon, 01 Sep 2008 09:19:03 -0400
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.60 (darwin)

Hello!

Sweave is a preprocessing step that can be applied to LaTeX files that
contain code written in the S or R programming languages.  Sweave allows
authors to embed their statistical analyses in body of their LaTeX
articles, enabling what I find to be a very nice style of literate
programming.  It seems to me like org currently has all of the
functionality needed to be a top-notch Sweave authoring environment, but
I can't get the pieces to work correctly together.  So this is both a
feature request and a request for implementation advice.

I'm hoping that it will be possible to add an option for exporting
Sweave blocks from org mode.  A Sweave block in LaTeX looks like

  % NB:  options are comma separated, spaces are optional
  \begin{Scode}{opt1=foo, opt2=bar,opt3=baz}
  a <- 3
  a
  \end{Scode}

Right now I can easily get this exported using

  #+LATEX: \begin{Scode}{opt1=foo, opt2=bar,opt3=baz}
  a <- 3
  a
  #+LATEX: \end{Scode}

But I would also like to be able to use the native editing mode for
writing the code, as happens in #+BEGIN_SRC blocks. I can't currently
get a combination of #+BEGIN_SRC and #+LATEX blocks to work.

Would it be possible to have something like

  #+BEGIN_SWEAVE: language opt1=foo, opt2=bar, opt3=baz
  a <- 3
  a
  #+END_SWEAVE

where the code inside the SWEAVE block is edited in the appropriate
major mode for the language argument?  An actual use, then, would look
like

  #+BEGIN_SWEAVE:  r fig=TRUE, echo=FALSE,keep.source=TRUE
  x <- runif(100, 0, 100)
  y <- runif(100, 0, 100)
  plot(x ~ y)
  #+END_SWEAVE

C-c ' inside the block would call out to r-mode from the package ESS.
LaTeX export would result in

  \begin{Scode}{fig=TRUE, echo=FALSE,keep.source=TRUE}
  x <- runif(100, 0, 100)
  y <- runif(100, 0, 100)
  plot(x ~ y)
  \end{Scode}

The file output by export to LaTeX should have the extension .Rtex.  The
author can then run Sweave on the file to generate a .tex file, and then
the normal LaTeX compilation process continues.

I've started trying to put this together myself, but haven't gotten very
far.  Some of the existing behavior for exporting source code relies on
prefixing the code inside the block with a ':' at the beginning of the
line, which then results in a verbatim environment in LaTeX.  I can't
figure out how to override this selectively for Sweave blocks, while
retaining the major-mode switching with C-c '.


Thanks for any implementations tips or (even better!) working
implementations ;)

/au

-- 
Austin Frank
http://aufrank.net
GPG Public Key (D7398C2F): http://aufrank.net/personal.asc

Attachment: pgpLTIIq2zXSc.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]