emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: [babel] strategies for generating multiple graphics files


From: Dan Davison
Subject: [Orgmode] Re: [babel] strategies for generating multiple graphics files from same code block
Date: Tue, 10 Aug 2010 17:51:39 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

"Eric Schulte" <address@hidden> 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 <address@hidden> 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<address@hidden>  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
>>>>   <<fig-test>>
>>>> #+end_src
>>>>
>>>> Export, but don't tangle
>>>> #+begin_src R :file figure1.png :exports both :noweb yes
>>>>   <<fig-test>>
>>>> #+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.
>>>> address@hidden
>>>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> address@hidden
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode



reply via email to

[Prev in Thread] Current Thread [Next in Thread]