* org-babel generated images and +ATTR_LATEX
@ 2013-10-23 18:32 Mark Edgington
2013-10-23 20:50 ` Michael Gauland
0 siblings, 1 reply; 4+ messages in thread
From: Mark Edgington @ 2013-10-23 18:32 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 1812 bytes --]
Hello all,
I have noticed that it seems not possible to evaluate a babel block of code
which generates an image, and to have a #+ATTR_LATEX line exist which
immediately precedes the generated link to the image. In other words, If
there's already a #+ATTR_LATEX line, I need to move it after the block is
evaluated, or else it doesn't immediately precede the generated link.
For example, if I have the following...
#+begin_src python :exports none :results file
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(3,2))
plt.plot([1,3,2])
fig.tight_layout()
figname = '/tmp/myfig.jpg'
plt.savefig(figname)
return(figname) # return this to org-mode
#+end_src
#+RESULTS:
#+ATTR_LATEX: :float figure :placement [htb!] :width 0.38\textwidth
... when I evaluate the code-block, the image-link gets inserted directly
after the #+RESULTS line, and before the #+ATTR_LATEX line. Without the
+ATTR_LATEX line, directly preceding the image-link, no image is inserted
into the PDF which is created when exporting via the latex-exporter.
So, it would be ideal if either:
(1) #+ATTR_LATEX lines applied to whatever image link which appears next,
even if there are additional lines starting with # that are between the
image-link and the #+ATTR_LATEX line,
OR (2) when evaluating an org-babel block, the results were placed *after*
any #... lines that follow a #+RESULTS line.
Does this make sense, or am I possibly not understanding something about
how to make it so that I don't have to modify my document anywhere else
after I change and evaluate an org-babel block? (currently I need to
relocate the #+ATTR_LATEX line any time I evaluate an image-generating
block)
I'm using the latest org-mode (8.2.1-117-gaff4f1).
Regards,
Mark
[-- Attachment #2: Type: text/html, Size: 2115 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: org-babel generated images and +ATTR_LATEX
2013-10-23 18:32 org-babel generated images and +ATTR_LATEX Mark Edgington
@ 2013-10-23 20:50 ` Michael Gauland
2013-10-24 2:30 ` Mark Edgington
0 siblings, 1 reply; 4+ messages in thread
From: Michael Gauland @ 2013-10-23 20:50 UTC (permalink / raw)
To: emacs-orgmode
Mark,
I think you want to use named results. My images typically look something
like this:
#+NAME: architecture
#+HEADER: :exports results
#+HEADER: :file (org-babel-temp-file "./figure-" ".eps")
#+HEADER: :cache yes
#+BEGIN_SRC plantuml
...
#+END_SRC
#+NAME: fig-architecture
#+CAPTION: Overview of mini-me architecture.
#+ATTR_LaTeX: :width \textwidth :placement [h!bt]
#+RESULTS: architecture
[[file:c:/Users/mgauland/AppData/Local/Temp/babel-5988Tli/figure-5988XRB.eps]]
Does that help?
Kind Regards,
Mike
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: org-babel generated images and +ATTR_LATEX
2013-10-23 20:50 ` Michael Gauland
@ 2013-10-24 2:30 ` Mark Edgington
2013-10-24 20:14 ` Michael Gauland
0 siblings, 1 reply; 4+ messages in thread
From: Mark Edgington @ 2013-10-24 2:30 UTC (permalink / raw)
To: emacs-orgmode
Hi Mike,
That does help -- when testing it, I found that the problem had more to do
with my header options than to do with the presence or absence of a #+NAME
line. But still, with the header options I gave in my original example,
org-babel's behavior does seem strange (maybe buggy?) to me. My working
code now looks like:
#+begin_src python :exports results :results file :eval no-export
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(3,2))
plt.plot([1,3,2])
fig.tight_layout()
figname = '/tmp/myfig.jpg'
plt.savefig(figname)
return(figname) # return this to org-mode
#+end_src
#+ATTR_LATEX: :float figure :placement [htb!] :width 0.38\textwidth
#+RESULTS:
Anyhow, something that wasn't clear to me about your example is how you make
the filename which is generated via org-babel-temp-file available for use
within the code-block?
Regards,
Mark
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: org-babel generated images and +ATTR_LATEX
2013-10-24 2:30 ` Mark Edgington
@ 2013-10-24 20:14 ` Michael Gauland
0 siblings, 0 replies; 4+ messages in thread
From: Michael Gauland @ 2013-10-24 20:14 UTC (permalink / raw)
To: emacs-orgmode
Mark Edgington <edgimar <at> gmail.com> writes:
> Anyhow, something that wasn't clear to me about your example is how you make
> the filename which is generated via org-babel-temp-file available for use
> within the code-block?
Babel takes care of that (plantuml interprets the :file argument as the name
of the file it should generate). I'm not sure the best way to get the file
name in to a Python block. You could probably pass the generated name in as
a :var parmater.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-10-24 20:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-23 18:32 org-babel generated images and +ATTR_LATEX Mark Edgington
2013-10-23 20:50 ` Michael Gauland
2013-10-24 2:30 ` Mark Edgington
2013-10-24 20:14 ` Michael Gauland
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).