emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Fwd: Anyone using or interested in an org to Rmarkdown exporter?


From: Charles C. Berry
Subject: Re: [O] Fwd: Anyone using or interested in an org to Rmarkdown exporter?
Date: Sat, 1 Nov 2014 17:37:02 -0700
User-agent: Alpine 2.00 (OSX 1167 2008-08-23)

On Sat, 1 Nov 2014, John Hendy wrote:

[snip]
From: John Hendy <address@hidden>
Date: Fri, Oct 31, 2014 at 7:32 PM
Subject: Re: [O] Anyone using or interested in an org to Rmarkdown exporter?
To: Grant Rettke <address@hidden>


On Thu, Oct 30, 2014 at 11:37 AM, Grant Rettke <address@hidden> wrote:
Good morning,

Last week I started learning about [RMarkdown]. It is a [literate
programming] tool implemented in, and for, the [ℝ programming
language]. Although I haven't dug in deep yet, I do know that (1) it is
/basically/ [Markdown] and that (2) `org' exports both to [vanilla
markdown] and also [GitHub flavored Markdown] and that (3) a lot of my
peers use `RMarkdown' and not `org'. With that that in mind I got
curious about what it would take to write an `org2rmarkdown' exporter.

The scope of my interest is one-time exports for the most basic and
simple `org' document. As such, right now I have no requirements beyond
thinking about the opportunity. After doing some Internet searches,
there does not seem to be an exporter right now. Questions:

• Does one exist and I missed it?

Possibly; at least in some form it does:
- https://github.com/chasberry/orgmode-accessories/blob/master/ox-ravel.org

• Do you have any interest in such an exporter?

Yes!
- https://lists.gnu.org/archive/html/emacs-orgmode/2014-01/msg01436.html
- https://lists.gnu.org/archive/html/emacs-orgmode/2014-02/msg00291.html

• Has anyone else ever thought of doing this? If yes, why didn't you?

Yes:
- Don't know elisp
- Found the above, which mostly worked. I had to edit my Org file to
feature a carriage return between text and my lists. ox-ravel appears
to export literally,

Actually ox-ravel uses derived backends (see the docstring for `org-export-define-derived-backend'. Exporting lists and other orgmode markup to Rmarkdown is handled by the `md' exporter in ox-md.el.

and it appears knittr won't pick up a list if
there's no blank line between regular text and a list.

No, it doesn't. knitr assumes the markdown (or LaTeX or whatever it is processing) is correct as written.

In other words,
this:

list
- item1
- item2

Isn't the same as this:

list

- item1
- item2

If this is a bug (as it seems), it should probably get a thread with a subject line like `org-md-plain-list needs newline' and your example above as the ECM.

It is really easy to force `org-md-plain-list' to do this like so:

#+BEGIN_SRC emacs-lisp
  (defun org-md-plain-list (plain-list contents info)
    "Transcode PLAIN-LIST element into Markdown format.
  CONTENTS is the plain-list contents.  INFO is a plist used as
  a communication channel."
    (concat "\n" contents))
#+END_SRC

but this adds vertical padded around nested lists, so something a bit more sophisticated is needed.


Probably a simple enough fix, but just pointing out one nuance that
org in general and other exporters don't struggle with (they recognize
a list even with no blank line).

The `md' exporter knows the list is a list - it just doesn't add the newline that tells pandoc (or whatever) that the next line could start a list.


• My guess is that doing an exporter that [builds on an existing
  exporter], mentioned above, would be a great start. Thoughts?
  • The big difference seems to be control statements passed to the
    interpreter, which may or may not be necessary to convert. If not,
    than the *stock* `markdown' exporter would provide everything


See if the attached are satisfactory
- test.org: just a heading, a couple lists, R code (and output), and an image
- test.Rmd: output of ox-ravel Rmd exporter
- test.html (well, a screenshot): results of opening test.Rmd in
RStudio and knitting


Thanks for the example.

Best,

Chuck

reply via email to

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