Когда я использую Sweave
с R
, я могу избежать явного присвоения имен файлам графика, просто заключая команды графика в кусок кода, такой как <<fig=TRUE>> ... @
. Драйвер Sweave
автоматически генерирует пронумерованные файлы, такие как fig1.pdf
, fig2.pdf
и т. Д.
Однако в org-mode
кажется, что мне нужно явно назвать файл рисунка, используя :file [...].pdf
в заголовке, например,
#+attr_latex: width=8cm placement=[htbp]
#+begin_src R :results output graphics :exports results :file fig.pdf
require(ggplot2)
a <- rnorm(100)
b <- 2*a + rnorm(100)
d <- data.frame(a,b)
ggplot(d,aes(a,b)) + geom_point()
#+end_src
Есть ли какой-нибудь способ избежать явного присвоения имени файлу графика и заставить механизм экспорта латекса в режиме org генерировать эти имена файлов?
Обновление: Я включаю решение, на которое Дж. Кернс указал здесь для удобства: все, что вам нужно сделать, это включить функцию emacs-lisp, генерирующую временный файл, в заголовок, как :file (org-babel-temp-file "./figure-" ".pdf")
. Это создает временный файл рисунка в текущем каталоге (из-за ./
). Если вам нужен временный файл рисунка в глобальном временном каталоге (определенном переменной org-babel-temporary-directory
), просто скажите ".figure"
:
#+attr_latex: width=8cm placement=[htbp]
#+begin_src R :results output graphics :exports results :file (org-babel-temp-file "./figure-" ".pdf")
require(ggplot2)
a <- rnorm(100)
b <- 2*a + rnorm(100)
d <- data.frame(a,b)
ggplot(d,aes(a,b)) + geom_point()
#+end_src