From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: org-babel-R export parameters Date: Mon, 07 Jun 2010 10:03:46 +0100 Message-ID: <871vcjp631.fsf@stats.ox.ac.uk> References: <20100606225802.GC13859@thinkpad.adamsinfoserv.com> <87k4qbyc5p.fsf@stats.ox.ac.uk> <20100607080434.GD13859@thinkpad.adamsinfoserv.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=51135 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLYG0-0004BJ-8B for emacs-orgmode@gnu.org; Mon, 07 Jun 2010 05:04:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OLYFy-0006d1-DP for emacs-orgmode@gnu.org; Mon, 07 Jun 2010 05:04:32 -0400 Received: from markov.stats.ox.ac.uk ([163.1.210.1]:40953) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLYFy-0006cX-4s for emacs-orgmode@gnu.org; Mon, 07 Jun 2010 05:04:30 -0400 Received: from blackcap.stats.ox.ac.uk (blackcap.stats [163.1.210.5]) by markov.stats.ox.ac.uk (8.13.6/8.13.6) with ESMTP id o5794SDC027793 for ; Mon, 7 Jun 2010 10:04:28 +0100 (BST) In-Reply-To: <20100607080434.GD13859@thinkpad.adamsinfoserv.com> (Russell Adams's message of "Mon, 7 Jun 2010 03:04:34 -0500") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode Russell Adams writes: > On Mon, Jun 07, 2010 at 12:27:46AM +0100, Dan Davison wrote: >> Russell Adams writes: >> >> > I needed the ability to view what parameters were sent to plot in >> > R. Turns out that you can't query some things like the active filename >> > in R, so I went back to org. > > Really, you can't query the filename of the active device in R. I > exported all the parameters to the R code block to R variables so I > can use them in R. > >> > This patch takes each parameter and converts it to a variable in R, >> > including the filename (org_babel_filename). >> > >> > My intent is to parse the filename in R to create a dev.copy() to a >> > pdf while creating a PNG. Ideally then I can see the png inline, and >> > export to latex with the PDF. > > See example. > >> >> Hi Russell, >> >> I haven't completely understood paras 1 and 3 above. Would you mind >> posting an example that illustrates the problem that this patch solves? >> >> Dan >> > > Here's a non-functional example that I hope can illustrate the point: > > ---------------------------------------------------------------------- > * HEading > > blah blah blah blah blah blah blah blah blah blah blah blah blah > > > #+BEGIN_SRC R :file whatever.png :width 300 :height 200 :exports none > > a = c(1,2,3,4) > plot(a) > > dev.copy(pdf,gsub(".png",".pdf",org_babel_filename)) > #+END_SRC > > #+results: > [[file:whatever.png]] > > #+LATEX \\include[whatever.pdf] > > ---------------------------------------------------------------------- > > The idea is I want to be able to see the inline PNG image of my graph > while writing, and when I export I'll point the latex exporter to the > PDF. Hi Russell, Thanks, that's clear. You may well be right that it would be appropriate to expose further information about the babel source block (e.g. the :file argument) to the external language. However, one general design consideration is that where possible we do want to avoid implementing ad-hoc language-specific behaviour. If we do go your route I would suggest that everything should be wrapped up in a single list object (hash in perl, dict in python, etc etc), and that that list/hash object should have a reasonably consistent name across languages (__org_babel_header_args__ or something). For now however, I would suggest taking the view that what you are doing is slightly non-standard org-babel usage, and therefore that it should be achieved more explicitly. E.g. how about the following approach? #+begin_src R :results file :var basename="myplot" a <- 1:4 pngfile <- sprintf("%s.png", basename) pdffile <- sprintf("%s.pdf", basename) png(pngfile) plot(a) dev.off() pdf(pdffile) plot(a) dev.off() pngfile #+end_src It should be possible to avoid repetitive code by abstracting that functionality. One possibility would be an R function plot.png.and.pdf.returning.png.filename(); alternatively, I suspect analogous abstraction could be achieved in org-babel using noweb block references or a library of babel function. Dan > This provides a vector format for Latex, instead of a low > resolution bitmap. Yes you can use PDF's as includes, and they look > great because they are a vector format. > > Does that help? > > I'm having issues with the R dev.copy, but that's a separate issue. > > Thanks. > > ------------------------------------------------------------------ > Russell Adams RLAdams@AdamsInfoServ.com > > PGP Key ID: 0x1160DCB3 http://www.adamsinfoserv.com/ > > Fingerprint: 1723 D8CA 4280 1EC9 557F 66E8 1154 E018 1160 DCB3 > > _______________________________________________ > Emacs-orgmode mailing list > Please use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode