org 预览 latex 代码块(source blocks) 的问题

动机: 我想生成下面的 latex 块的预览:

#+name: latex_figure
#+header: :file "pseudo.pdf"
#+header: :results "raw"
#+BEGIN_SRC latex
\begin{algorithm}[H]
\SetAlgoLined
\KwResult{Write here the result }
 initialization\;
 \While{While condition}{
  instructions\;
  \eIf{condition}{
   instructions1\;
   instructions2\;
   }{
   instructions3\;
  }
 }
 \caption{How to write algorithms}
\end{algorithm}
#+END_SRC

执行 C-c C-c, 报错:

Processing LaTeX file /var/folders/hh/lnftkrwn1tv9b63ptnphj_gm0000gp/T/babel-gPyv5m/latex-9Wlavy.tex...
org-compile-file: File "/private/var/folders/hh/lnftkrwn1tv9b63ptnphj_gm0000gp/T/babel-gPyv5m/latex-9Wlavy.pdf" wasn’t produced.  See "*Org PDF LaTeX Output*" for details

我发现可以这样复现这个错误:

(org-latex-compile  "/var/folders/hh/lnftkrwn1tv9b63ptnphj_gm0000gp/T/babel-gPyv5m/latex-9Wlavy.tex")

但是一看 Org PDF LaTeX Output buffer, 这个 pdf 文件已经生成了.

(see the transcript file for additional information)
Output written on latex-9Wlavy.pdf (1 page).
Transcript written on latex-9Wlavy.log.

因此问题在于, 明明 pdf 都生成了, 为啥它还报错说没有生成? 不过我发现它生成是生成在当前目录而不是临时目录的, 所以我猜测这难道是 ob-latex 的 bug?

可以的,不过我是改成SVG了,添加了package,输出改成 file raw

1 个赞

呜呜呜, 这就是我梦中的效果, 我咋就不行, 而且我确实在 org 所在的目录下得到了 latex-9HiV2B.pdf, 但是它说生成失败. 我觉得最可疑的地方就是它生成在 org 目录下(当前目录), 但它报的错是临时目录, 所以我总感觉是它的位置不对导致生成失败的.

org-compile-file: File "/private/var/folders/hh/lnftkrwn1tv9b63ptnphj_gm0000gp/T/babel-SqwgL0/latex-ZFSpcq.pdf" wasn’t produced.  See "*Org PDF LaTeX Output*" for details

org-mode 我是今天更新的, 9.6.6

参考我的配置这一章:

不过最好这个README.org中,和latex相关的都看一下。

我是Org mode version 9.6.3 emacs源码自带的版本。

PDF我的org中预览不了,但是能用pdf-view打开:

我本来把 org-latex-pdf-process 设置为:

(setq org-latex-pdf-process '("xelatex --shell-escape -interaction nonstopmode %f"))

加上 -output-directory=%o 即可

(setq org-latex-pdf-process '("xelatex --shell-escape -interaction nonstopmode -output-directory=%o  %f"))

感慨一下发现问题的过程真是太巧合太运气了.

-output-directory 不是默认就有的吗? 你之前自己先删了吧?

我自己设置了, 但是设置得不对.