0

I use many org files with figures generated by source code blocks.

By example, in an org mode file long/path/document.org I have:

#+BEGIN_SRC dot :file my_fig.png  :exports results
digraph {
  A->B
  B->C
  C->A
}
#+END_SRC

However, to keep a clean directory/files hierarchy I want store the generated figures (or data) in a subdirectory associated to each org mode document, for instance: long/path/document-extra/my_fig.png.

#+BEGIN_SRC dot :file long/path/document-extra/my_fig.png  :exports results
digraph {
  A->B
  B->C
  C->A
}
#+END_SRC

Doing that manually is tedious, how to automate this?

1

I define functions at the end of my org mode file (thanks Local variables)

#+BEGIN_SRC dot :file (fig_name "my_fig") :exports results
digraph {
  A->B
  B->C
  C->A
}
#+END_SRC

...

# end of my org mode file

# Local Variables:
# eval: (defun fig_name(name) (concat (file-name-sans-extension (buffer-file-name)) "-extra/" name ".png"))
# End:

The function (fig_name "my_fig") automatically creates the right filename, something like:

: /home/XXX/GitLab/YYY/Bibliography/jiang11_rankin_hodge_theor-notes-extra/my_fig.png

As defined we assumed that the directory long/path/document-extra/ exists, but this can be also checked and eventually created in the fig_name function.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.