emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Berry, Charles" via "General discussions about Org-mode." <emacs-orgmode@gnu.org>
To: Greg Minshall <minshall@umich.edu>
Cc: "emacs-orgmode@gnu.org" <emacs-orgmode@gnu.org>
Subject: Re: org-in-org
Date: Tue, 23 Feb 2021 19:46:32 +0000	[thread overview]
Message-ID: <594E3B99-4F1C-4318-8113-FF7CD4CCD6C4@health.ucsd.edu> (raw)
In-Reply-To: <819173.1614090273@apollo2.minshall.org>

Greg, 

See inline

> On Feb 23, 2021, at 6:24 AM, Greg Minshall <minshall@umich.edu> wrote:
> 
> i have a question about org-in-org source blocks.  i volunteered to help
> in an effort to provide a tutorial of using the ESS (Emacs Speaks
> Statistics) package for R, in particular, from org mode.
> 
> i'd like to write my contribution as a .org file.  i'd like to include
> fragments of org code, including source blocks (in R).  and, i'd like to
> show various result types.  so, i'd like to be able to have the
> #+RESULTS show up in the org-in-org source block as exported inside the
> containing .org file.

I think I get your intention. You want the visual to look like it would if the src-edit buffer was opened in emacs as org.

> 
> and, i'd like to trigger all this from a makefile, using some emacs
> batch script to export the containing .org file into a .html or .pdf
> file.
> 
> (i *think*) what i would like to end up with is what it would like if i
> had manually opened the org-in-org source blocks (C-c‌'), then went to
> each (or, possibly, selected, i guess) source blocks inside *that*
> (org-in-org) source block, and executed each, producing a #+RESULTS
> block for each, then closed the org-in-org source block (C-c‌', again),
> and then exported the containing .org file.
> 
> is this possible?  any ideas?


I have two alternative approaches:

1) Add an export engine for "org" to ox-ravel[1]. This is a trivial customization of `org-ravel-engines' to add a '("org" . "engine='org'") element.  Then add a custom language engine[2] for rmarkdown or knitr.

The actions for the makefile would be a ravel export to generate *.Rmd, *.Rnw, or *.Rhtml files followed by rmarkdown::render or knitr::knit on the generated files.

2) Define this function:

#+begin_src emacs-lisp
  (defun org-exe-org ()
    (let ((org-confirm-babel-evaluate nil))
      (org-edit-src-code)
      (org-babel-execute-buffer)
      (org-edit-src-exit)))
#+end_src

In an org buffer with one or more org src blocks containing R src blocks:

eval this

 (org-babel-map-executables nil (org-exe-org))

Then export the buffer to pdf or html.

I haven't tested this much, but for the snippet below evaluating that line and exporting to html produces two framed blocks with R src blocks and the results displayed in each:

--8<---------------cut here---------------start------------->8---
#+begin_src org
  ,#+begin_src R
    print("abc")
  ,#+end_src
#+end_src


#+begin_src org
  ,#+begin_src R
    print("def")
  ,#+end_src
#+end_src
--8<---------------cut here---------------end--------------->8---

I expect doing this in batch mode will not be a challenge.

For pdf output the result is rather plain. Maybe there is some minted idiom that would help?

HTH,
Chuck

p.s. I am an `ess-intro' member, in case it helps to move the conversation to there.


[1] https://github.com/chasberry/orgmode-accessories

[2] https://bookdown.org/yihui/rmarkdown-cookbook/custom-engine.html 

  reply	other threads:[~2021-02-23 19:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-23 14:24 org-in-org Greg Minshall
2021-02-23 19:46 ` Berry, Charles via General discussions about Org-mode. [this message]
2021-03-07 16:14   ` org-in-org Greg Minshall
2021-03-07 22:26     ` org-in-org Berry, Charles via General discussions about Org-mode.
2021-03-08  7:44       ` org-in-org Greg Minshall
2021-03-08 20:33         ` org-in-org Berry, Charles via General discussions about Org-mode.
2021-03-09  3:37           ` org-in-org Greg Minshall
2021-02-23 20:30 ` org-in-org Erik Iverson
2021-03-07 15:46   ` org-in-org Greg Minshall
2021-02-23 21:38 ` org-in-org Jeremie Juste
2021-03-07 16:06   ` org-in-org Greg Minshall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=594E3B99-4F1C-4318-8113-FF7CD4CCD6C4@health.ucsd.edu \
    --to=emacs-orgmode@gnu.org \
    --cc=ccberry@health.ucsd.edu \
    --cc=minshall@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).