平衡点
2022/04/30
_ org-babel で tikz, pgfplots を用いた作図
最近, 講義資料(beamerのスライド)はほぼ全てEmacsのorg-modeで書く様になってます. これまではBeamerへのexport時にTikZ/PGFPlotsもそのままTeXファイルにexportしてPDFを作成していました.
…が, まあ当たり前ですけれど一度作った画像&グラフを毎回再生成するのも無駄なので これらはorg-babelで先に作成しておいて…ということを目論んだわけです.
org-babelでの評価時に生成される中間ファイルは /tmp/babel-XXXXXX
といったディレクトリに出力されます.
このディレクトリ名は org-babel-temporary-directory
に入っています.
何故こんな事を気にするか, というと
- TikZ/PGFPlots から gnuplot を呼んで絵を描こうとする
- TeX での処理時には
-shell-escape
で gnuplot が呼ばれ, 中間ファイル が出力される - 中間ファイルを含めて最終的にtypesetされてPDFができる
わけですが, 中間ファイルが /tmp/babel-XXXXXX
に出力されていることをTeX処理系に教えないといけません.
というわけでジタバタ.
結論から言えば, org-babel の #+begin_src latex
に
#+begin_src latex :var babel_temp_directory=(format "%s" org-babel-temporary-directory)
\pgfkeys{/pgf/plot/gnuplot call={cd babel_temp_directory && gnuplot}}
#+end_src
とでもしておくと良い, ということの様です.
つまりは
org-latex-pdf-process
での処理に -output-directory
が指定されているので,
これを PGFPlots に教えてあげましょう, ということですね.
とりあえずは上手く動いたんですけれど, もっと良い方法がありそうな気もしています.