Skip to content

chasberry/orgmode-accessories

Repository files navigation

orgmode-accessories

Add ons for orgmode

This is the org-9-plus branch. Use this with Release 9.0 or higher. It utilizes the new versions of `org-babel-get-src-block-info’ and `org-babel-lob-get-info’.

If you are running on the `master’ branch this commit of Org mode is this first with new versions of those functions:

commit 9738da473277712804e0d004899388ad71c6b791 Author: Nicolas Goaziou <mail@nicolasgoaziou.fr> Date: Wed Feb 10 00:22:09 2016 +0100

The other files here:

ox-ravel.org
description and definition of backends to create Sweave, brew, Rmd, and html style files.
demos.org
demonstrations of various ravel features and use cases.
test.org
ERT unit tests of ravel features.
example-1-Rnw.org
includes an orgmode translation of example-1 from the Sweave user’s manual. Exporting with ravel-latex produces a file very similar to the *.Rnw code.
knitr-minimal-rhtml.org
includes an orgmode translation of knitr-minimal.Rhtml from the the knitr demos page.
test-cases.org
this sets up to allow parallel exports using latex and two derived backends ravel-latex and ravel-brew and inspect the diffs between them.
autodep.org
orgmode translation of 017-auto-dependson.Rnw from knitr examples page illustrates dependency aware caching of computed objects.
slidify-example.org
how to use the slidify package to make slides.
markdown.org
describes features of the ravel-markdown backend.
markdown.Rmd
the exported version of markdown.org.

Bugs?

Bugs happen. Please let me know if you encounter a bug or if something seems to break that once worked as that might indicate a change in the exporter or Babel that I need to keep up with.

The example *.org files should always work!

Why Bother ?

orgmode

Orgmode is for keeping notes, maintaining TODO lists, doing project planning, and authoring with a fast and effective plain-text system. The same org document can be used to create LaTeX, HTML, plain ASCII, and various other formats upon export.

Babel is Org-mode’s ability to execute source code within Org-mode documents. It is powerful and flexible and a useful tool for generating reproducible research reports as outlined in the report : Eric Schulte, Dan Davison, Thomas Dye, and Carsten Dominik. A Multi-Language Computing Environment for Literate Programming and Reproducible Research. Journal of Statistical Software. 46(3) Jan 2012. Source code blocks can be editted in place or in a language major-mode edit buffer containing the body of the code block. And for R blocks, ESS is fully functional.

R document/report Generators

There are many markup and report and document generating packages and functions for R. A useful overview of them is at CRAN Task View for Reproducible Research

Several to which this software is aimed are

  • Sweave
  • brew
  • knitr/rmarkdown/quarto

Putting orgmode and Sweave together

Each approach (orgmode as report generator vs Sweave-like report generators) has its own strengths and weaknesses.

orgmode makes it really easy to track things and to build code incrementally.

Sweave has several dependency aware caching systems in R that are simple and powerful. Also, there are some nice formatting tools available and more coming into use. And many of them are hard (or maybe impossible) to use when Babel is doing the final report generation. There are terrific possibilities presented by R packages like =knitr= and =pander=.

The Org export engine

The Org export engine (see the Org manual Exporting section or the Org Export Reference Documentation) offers the possibility to have a workstyle in which an orgmode master document contains a subtree with text and code blocks that when exported becomes an Sweave or brew style document that when run produces LaTeX, HTML, and/or some other markup language. By including caching options in those documents the development process becomes easy to organize, restarting work after a break is just a matter of rerunning the document to load the cached objects and libraries, then switching to the orgmode master to try out some new code, reorganize the presentation, and so on.