From: Erik Iverson <eriki@ccbr.umn.edu>
To: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: [babel] silent code block evaluation on export
Date: Tue, 31 Aug 2010 13:42:26 -0500 [thread overview]
Message-ID: <4C7D4D12.1070002@ccbr.umn.edu> (raw)
Hello! I have pasted an org-mode file with my question, it's
easies to explain by copying the below file and exporting it
to HTML.
Thanks,
--Erik
----------------------------------------------------------------
* Silent code block evaluation on export.
The goal is to /run/ a code block on export for some side effect,
without any evidence in the exported file that this happened. For
example, loading some R package, reading in a dataset, or setting R
options. All this is presumably done with :session in mind, even
though I don't use it here.
In Sweave, we can specify the code block options echo = FALSE, results
= hide to faciliate this.
However, there are no command line arguments alone in org-mode that
can replicate such behavior. Below are several examples and how they
fail. There is also an example of a 'trick' that does work to
generate the output (or lack thereof) that we want.
/:results value/ tries to coerce its return value to a data.frame, so when
I reference 'non-conformable object' below, I mean something for which
the as.data.frame function generates an error.
* /:results value/ (the default for code blocks)
** with a simple object on the last line, a vector
This prints the return object, OK.
/:exports results :results value/
#+begin_src R :exports results :results value
2 + 2
#+end_src
** with a non-conformable object as the final value
This produces an error, as expected, and no output is produced, but
only by accident.
/:exports results :results value/
#+begin_src R :exports results :results value
summary(lm(1 ~ 1))
#+end_src
** using NULL as the last line
This does what we want, but requires a 'trick'. OK.
/:exports results :results value/
#+begin_src R :exports results :results value
summary(lm(1 ~ 1))
NULL
#+end_src
* /:results silent/
** with a simple object on the last line, a vector
This still prints the return object, it may be debateable if it
should. The combination of /:exports results/ and
/:results silent/ does not seem inherently self-contradictory.
/:exports results :results silent/
#+begin_src R :exports results :results silent
2 + 2
#+end_src
** with a non-conformable object as the final value
However, with a non-conformable object on last line, an error is
produced when the code is evaluated in the buffer. I'm wondering if
/:results silent/ is specified, why the cast to data.frame is
occurring? It could be happening for good reason that I'm not aware
of. The lack of output here is due to an error occurring.
/:exports results :results silent/
#+begin_src R :exports results :results silent
summary(lm(1 ~ 1))
#+end_src
** using NULL as the last line
This does as we want, using the NULL trick.
/:exports results :results silent/
#+begin_src R :exports results :results silent
summary(lm(1 ~ 1))
NULL
#+end_src
* Ideas
Since the NULL trick is R-only, how could we specify command line
options to faciliate this use case?
Possible solutions:
0) There already exists a solution that I don't list here.
1) Make /:exports results :results silent/ do it, but note the results
above with a non-conformable object!
2) Make /:exports none/ still evaluate the code block on
export. Probably counter-intuitive.
3) Make export use the /:eval/ argument combined with /:exports/,
maybe something like: /:exports none :eval yes/
4) Another better solution!
next reply other threads:[~2010-08-31 18:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-31 18:42 Erik Iverson [this message]
2010-09-02 0:15 ` [babel] silent code block evaluation on export Eric Schulte
2010-09-02 1:37 ` Eric Schulte
2010-09-02 2:09 ` Erik Iverson
2010-09-02 4:10 ` Eric Schulte
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=4C7D4D12.1070002@ccbr.umn.edu \
--to=eriki@ccbr.umn.edu \
--cc=emacs-orgmode@gnu.org \
/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).