From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: [babel] strategies for generating multiple graphics files from same code block Date: Tue, 10 Aug 2010 12:21:52 -0600 Message-ID: <87ocdatgdk.fsf@gmail.com> References: <4C606D4C.1030904@ccbr.umn.edu> <8762zj75n8.fsf@gmail.com> <4C60913F.2040508@ccbr.umn.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from [140.186.70.92] (port=43967 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OiuX0-0005AG-Af for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 15:30:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OiuWy-0007cX-Uj for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 15:30:38 -0400 Received: from mail-gx0-f169.google.com ([209.85.161.169]:38594) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OiuWy-0007cS-SR for emacs-orgmode@gnu.org; Tue, 10 Aug 2010 15:30:36 -0400 Received: by gxk4 with SMTP id 4so5271171gxk.0 for ; Tue, 10 Aug 2010 12:30:36 -0700 (PDT) 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: Erik Iverson Cc: emacs-orgmode 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. --8<---------------cut here---------------start------------->8--- #+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 --8<---------------cut here---------------end--------------->8--- 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. 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