From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: [babel] strategies for generating multiple graphics files from same code block Date: Tue, 10 Aug 2010 17:51:39 -0400 Message-ID: <87d3tqw2z8.fsf@stats.ox.ac.uk> References: <4C606D4C.1030904@ccbr.umn.edu> <8762zj75n8.fsf@gmail.com> <4C60913F.2040508@ccbr.umn.edu> <87ocdatgdk.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=48186 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oiwji-0007Ri-NY for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 17:51:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oiwjh-00057z-4D for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 17:51:54 -0400 Received: from markov.stats.ox.ac.uk ([163.1.210.1]:37659) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oiwjg-000573-Tf for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 17:51:53 -0400 In-Reply-To: <87ocdatgdk.fsf@gmail.com> (Eric Schulte's message of "Tue, 10 Aug 2010 12:21:52 -0600") 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: Eric Schulte Cc: emacs-orgmode "Eric Schulte" writes: > Hi Erik, > > Given that arbitrary lisp forms can be used to assign header arguments, > the following can be used to achieve this functionality under the > current setup. > > #+Title: Export Target Conditional Header Arguments > > The following generates an =.eps= image for LaTeX export and a =.png= > image for html export. > #+begin_src gnuplot :term (if (and (boundp 'latexp) latexp) "postscript" "png") :file (if (and (boundp 'latexp) latexp) "sin.eps" "sin.png") > plot sin(x) > #+end_src > > So, given that maybe the next development push for babel should focus on > the ability to break header arguments over multiple lines, rather than > on syntactic sugar for the above. Alternatively, I believe we should be able to use sbe to put the elisp code in blocks: --8<---------------cut here---------------start------------->8--- #+begin_src gnuplot :term (sbe "get-image-type") :file (sbe "get-file-path") plot sin(x) #+end_src #+source: get-image-type #+begin_src emacs-lisp (if (and (boundp 'latexp) latexp) "postscript" "png") #+end_src #+source: get-file-path #+begin_src emacs-lisp (if (and (boundp 'latexp) latexp) "sin.eps" "sin.png") #+end_src --8<---------------cut here---------------end--------------->8--- As a matter of fact this currently fails on export with 'Invalid read syntax: "#"', but that's a bug. Dan > > Cheers -- Eric > > Erik Iverson writes: > >> Sounds good, and perhaps another 'export' target could be tangling of the code. >> > > The above does not address tangling, however this could be fixed by > having ob-tangle could set a tanglep global variable in the spirit of > htmlp and latexp. > >> >> >> On 08/09/2010 06:00 PM, Eric Schulte wrote: >>> Hi Erik, >>> >>> There is a planned feature for Org-babel which should subsume these use >>> cases, namely backend-conditional header arguments. These would allow >>> you to specify different header arguments (including file) depending on >>> the export target, be that html, latex, or none if you are just >>> interactively evaluating inside of an Org-mode buffer. >>> >>> This is still in the early stages, and is waiting until I have a >>> reasonable amount of free time. >>> >>> Cheers -- Eric >>> >>> Erik Iverson writes: >>> >>>> Hello, >>>> >>>> I'm using org-mode to write R code and generate figures. >>>> >>>> I have multiple files generated per code block, one png and one PDF. >>>> This is so that I can display the graphic: >>>> >>>> 1) Inline in my org-mode buffer (png) >>>> 2) Upon export to HTML, viewable in the browser (png) >>>> 3) Included in a separate PDF, *not* from exporting my org-mode >>>> file. For this, I would like a PDF version of the graphic to be >>>> generated, and pdflatex can use it (pdf) >>>> >>>> So, for points 1 and 2 above, no problem. >>>> >>>> * Figure 1 >>>> Here is the first figure. >>>> >>>> #+begin_src R :file figure1.png :width 960 :exports both :tangle fig1.R >>>> plot(1,1) >>>> #+end_src >>>> >>>> For point 3, I use tangling to write the source code to a file. I >>>> notice that the graphical code is wrapped by the export process by a >>>> call to png() and dev.off(). >>>> >>>> My question, is there any facility to have the tangled code generate a >>>> PDF, instead of PNG? I still need the png for goals 1 and 2, but the >>>> pdf for goal 3. Anyone else have any other strategies for realizing >>>> all 3 of my goals? >>>> >>>> I suppose one would be to define a named code block, and use the noweb >>>> syntax: >>>> >>>> Define the plot >>>> #+srcname: fig-test >>>> #+begin_src R >>>> plot(1,1) >>>> #+end_src >>>> >>>> Tangle, but don't export >>>> #+begin_src R :file figure1.pdf :exports none :tangle fig1.R :noweb yes >>>> <> >>>> #+end_src >>>> >>>> Export, but don't tangle >>>> #+begin_src R :file figure1.png :exports both :noweb yes >>>> <> >>>> #+end_src >>>> >>>> This is not too bad, but maybe there's an alternative approach? >>>> >>>> Thanks! >>>> Erik Iverson >>>> >>>> _______________________________________________ >>>> 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 > > _______________________________________________ > 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