From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Loris Bennett" Subject: Re: Variable in file name for babel output? Date: Fri, 28 Jun 2013 08:21:39 +0200 Message-ID: <87a9ma7o24.fsf@hornfels.zedat.fu-berlin.de> References: <87y59vr9ve.fsf@hornfels.zedat.fu-berlin.de> <8761wzi245.fsf@med.uni-goettingen.de> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43889) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsS48-0007R9-1s for emacs-orgmode@gnu.org; Fri, 28 Jun 2013 02:21:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UsS46-0002AL-MM for emacs-orgmode@gnu.org; Fri, 28 Jun 2013 02:21:51 -0400 Received: from plane.gmane.org ([80.91.229.3]:59780) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UsS46-0002A7-GO for emacs-orgmode@gnu.org; Fri, 28 Jun 2013 02:21:50 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1UsS45-0004c5-1r for emacs-orgmode@gnu.org; Fri, 28 Jun 2013 08:21:49 +0200 Received: from hornfels.zedat.fu-berlin.de ([160.45.11.110]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 28 Jun 2013 08:21:49 +0200 Received: from loris.bennett by hornfels.zedat.fu-berlin.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 28 Jun 2013 08:21:49 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Hi Andreas, Andreas Leha writes: > Hi Loris, > > "Loris Bennett" writes: > >> Hi, >> >> Is it possible to pass a variable to a source block such that the >> variable can be used as part of the name of the output file? >> >> Currently I have >> >> #+HEADER: :var data=timelimit-elapsed-data year=2011 :colnames yes >> #+HEADER: :session *r* :file (org-babel-temp-file "time-elapsed-" ".pdf") >> >> which gets me a different name for each value of 'year', but ideally I >> would like the files to be called >> >> time-elapsed-2011.pdf >> time-elapsed-2012.pdf >> time-elapsed-2013.pdf >> >> etc. >> >> Can this be done? > > > Maybe not what you are looking for, but you could handle the assembly of > the filename within your code block. > > Something like: > > #+HEADER: :var year=2011 :session *r* :results file > #+begin_src R > filename <- paste0("time-elapsed-", year, ".pdf") > > pdf(filename) > ## your code > dev.off() > > filename > #+end_src > > Regards, > Andreas Thanks, that is in fact exactly what I need. Looking at the documentation again, I see that it says: "Some languages including R, gnuplot, dot, and ditaa provide special handling of the :file header argument automatically wrapping the code block body in the boilerplate code required to save output to the specified file. This is often useful for saving graphical output of a code block to the specified file." I just didn't understand this at first. Maybe the following sentence should/could be added: "... the specified file. This means that the argument of the :file header can be omitted and the file name can be generated within the source block." Cheers, Loris -- This signature is currently under construction.