[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] parameterizing keyword values during a #+call
From: |
Eric Schulte |
Subject: |
Re: [O] parameterizing keyword values during a #+call |
Date: |
Tue, 30 Apr 2013 23:02:30 -0600 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Gary Oberbrunner <address@hidden> writes:
> I've been having the same issue (exporting to HTML and PDF, and need all my
> graphics filenames to adjust automatically).
>
> I mostly don't use #+CALL though; I just have src blocks.
>
> #+BEGIN_SRC python :session UDpython :exports results :results file
> do_hbar('/tmp/machines-by-os.pdf', (8,1.5), data)
> #+END_SRC
>
> Is there any way of interpolating the elisp value into the middle of a src
> block? I guess I can add another #+HEADER line:
>
> #+HEADER: :var filename=(ext "/tmp/machines-by-os")
> #+BEGIN_SRC python :session UDpython :exports results :results file
> do_hbar(filename, (8,1.5), data)
> #+END_SRC
>
> Is that the recommended method?
>
It looks to me like it should work just fine.
>
> Org-mode macros that got expanded in the middle of babel source block
> text would be cool. Just saying.
>
I don't see the benefit of a macro expansion over the use of variables
as you demonstrate above.
Cheers,
>
>
>
> On Tue, Apr 30, 2013 at 10:40 AM, Greg Minshall <address@hidden> wrote:
>
>> Eric,
>>
>> just for completeness, and in case this may be of use to other people,
>> below is the result of my question + your suggestions. the following
>> illustrates org-mode plus asymptote producing a .svg file during html
>> export, and a pdf file during any other (presumably, latex) export.
>>
>> thanks again, Greg
>> ----
>> # trying to get graphics that works for both latex/beamer and for html
>>
>> # here's a suggestion from Eric Schulte
>> # http://article.gmane.org/gmane.emacs.orgmode/71301
>> # with this clarification
>> # http://article.gmane.org/gmane.emacs.orgmode/71393
>> # which produced the following
>>
>> # we define an emacs lisp macro ext that produces a file extension
>> # of "svg" or "pdf" depending on whether we are exporting to html or
>> # to some other source. this macro is called when computing the
>> # output file name argument in a call to an asymptote routine as in:
>> #
>> # #+call: rectangle[:file (ext twod-1)](TSIZE=1.0) :results file
>> #
>> # which calls an asymptote routine (defined in our file) called
>> # rectangle to produce a file called twod-1.svg or twod-1.pdf.
>>
>> # define the ext emacs lisp macro (i think in the following you *need*
>> # ":exports results" -- instead of ":exports none" -- to make sure the
>> # code is executed during export; the ":results silent" keeps any
>> # output -- or nil -- from showing up in the output file.)
>>
>> #+begin_src emacs-lisp :exports results :results silent
>> (defmacro ext (base)
>> (format "%s.%s" base
>> (if (and (boundp 'backend) (equal backend 'html)) "svg"
>> "pdf")))
>> #+end_src
>>
>>
>> # follows an example use of the above macro
>>
>> # first, define a asymptote function (org-named "rectangle") that
>> # draws a rectangle
>> #+name: rectangle
>> #+begin_src asymptote :var TSIZE=1.0 :exports none
>> import trembling;
>> size(100);
>> int off = 2, width = 100, height = 30;
>> string tsize = format("%g", TSIZE);
>> tremble tr0=tremble(angle=0); // no trembling
>> tremble tr10=tremble(angle=10,frequency=0.1,random=50,fuzz=1);
>>
>> picture rectangle(pair sw, pair ne, int offset, string text, tremble tr)
>> {
>> picture pic;
>> path g =
>>
>> (sw.x+offset,sw.y+offset)--(ne.x-offset,sw.y+offset)--(ne.x-offset,ne.y-offset)--(sw.x+offset,ne.y-offset)--cycle;
>> label(pic, text, ((sw.x+ne.x)/2, (sw.y+ne.y)/2));
>> draw(pic, tr.deform(g));
>> return pic;
>> }
>>
>> add(rectangle((0,0),(width,height),0, "", tr0));
>> add(rectangle((0,0),(width,height),off, tsize, tr10));
>> #+end_src
>>
>> # now, invoke the above asymptote function, producing a file called
>> # either twod-1.svg or twod-1.pdf:
>>
>> #+call: rectangle[:file (ext twod-1)](TSIZE=1.0) :results file
>>
>> # now, you can C-c C-e l o or C-c C-e h o and see the image in the
>> # two formats
>>
>> # $Id: parameterizing.org,v 1.2 2013/04/30 14:37:29 minshall Exp $
>>
>>
--
Eric Schulte
http://cs.unm.edu/~eschulte
- Re: [O] parameterizing keyword values during a #+call,
Eric Schulte <=