组织模式缓存选项,请参阅https://orgmode.org/manual/cache.html,在导出到html时节省了大量时间。不幸的是,在传递var参数时,我无法使其工作。
这就是Org的样子:
#+tblname: howtocache
| x | y |
|---+---|
| 1 | 5 |
| 2 | 2 |
| 3 | 1 |
| 4 | 6 |
| 5 | 3 |
#+begin_src gnuplot :cache yes :var data=howtocache :exports code :file howtocache.png
reset
plot data u 1:2 w l
#+end_src
#+RESULTS[4a0d86e3196a769ad675be613318b8fb77d47f2e]:
[[file:howtocache.png]]
当我评估gnuplot块时,我总是得到一个新的哈希值。
在 gnuplot 缓冲区中,我看到数据是从不同的临时文件中提供的。
可能是根据文件名计算哈希值。
主要问题是:如何将缓存与var一起使用?
答案 0 :(得分:0)
找到合理的解决方案:
https://emacs.stackexchange.com/a/24126
手动评估更改,而不是导出
将
:eval no-export
放入标题参数中,处理不会 仅在您使用C-c C-c
或手动调用时才会在导出时发生M-x org-babel-execute-buffer
。
答案 1 :(得分:0)
感谢您提供有关不断变化的临时文件的信息,我发现了适用于常规执行和导出的gnuplot缓存的通用解决方案。与其直接将数据传递到gnuplot src块并让ob-gnuplot编写一个临时文件,不如我自己编写该临时文件,然后对其进行缓存,然后将文件名传递给gnuplot src块。之所以可行,是因为ob-gnuplot仅在其输入中写入矢量文件,而我们通过给它一个字符串来绕过它。
根据上面的示例,有一些代码需要说明:
#+tblname: howtocache
| x | y |
|---+---|
| 1 | 5 |
| 2 | 2 |
| 3 | 1 |
| 4 | 6 |
| 5 | 3 |
#+name: data-file
#+begin_src elisp :cache yes :var data=howtocache
(org-babel-gnuplot-table-to-data data (org-babel-temp-file "gnuplot-") '())
#+end_src
#+RESULTS[25d02647c9b4a748ce6798d81e70d72c3ace0846]: data-file
: /var/folders/n4/vg52wwmn02xbfx_4g2l53z1m0000gn/T/babel-eiHU75/gnuplot-8osPqw
#+begin_src gnuplot :cache yes :var data=data-file :exports code :file howtocache.png
reset
plot data u 1:2 w l
#+end_src
#+RESULTS[af6331cf9eac29a503e86eb07dc76a1a0d808f85]:
[[file:howtocache.png]]
希望这对于将来使用相同用例的该线程的Google员工来说是有用的