Emacs Org导出PDF时,LaTeX报错:找不到被编译的文件

编辑好org文档后,使用Emacs导出为PDF时,在*Org PDF LaTeX Output* 中显示如下错误:

This is XeTeX, Version 3.14159265-2.6-0.999992 (TeX Live 2020/W32TeX) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
(.//shuoming.tex
LaTeX2e <2020-10-01> patch level 2
L3 programming layer <2020-12-07> xparse <2020-03-03>

! LaTeX Error: File `ctexart.cls' not found.

Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: cls)

Enter file name: 
! Emergency stop.
<read *> 
         
l.4                 \usepackage
                               {xeCJK}^^M
No pages of output.
Transcript written on .//shuoming.log.

在Emacs eshell中执行xelatex shuoming.tex时同样报错:

This is XeTeX, Version 3.14159265-2.6-0.999992 (TeX Live 2020/W32TeX) (preloaded format=xelatex)
 restricted \write18 enabled.
entering extended mode
! I can't find file `shuoming.tex'.
<*> shuoming.tex
                
(Press Enter to retry, or Control-Z to exit)
Please type another input file name:

但是在Cygwin中进入目录后以相同的命令xelatex shuoming.tex执行时却可以正常执行。

想请问下这是什么原因?如何在Emacs中设置?

【相关信息】

  • Win7系统
  • GNU Emacs 27.2 (build 1, x86_64-w64-mingw32) of 2021-03-26
  • Org mode version 9.4.4 (release_9.4.4 @ c:/Program Files/Emacs/x86_64/share/emacs/27.2/lisp/org/)
  • 最开始装的是TeX Live 2018,Emacs 用的是26,没出现这个问题。后来卸了TeX Live 2018,装了TeX Live 2020,Emacs也重装为27。一开始还没问题。后来好像是升级过插件就这样了。

ctex找不到吧 安装下 tlmgr install ctex

ctex是装了的。就是在Emacs中运行命令时会出错,在终端下运行没问题。

要先看一下有没有生成正确的.tex文件,然后确定能正确编译的终端指令是什么,最后修改你emacs里的默认编译指令

文档如果有中文用xelatex,用pdflatex会报这个错误。

有正确的tex文件的,在cygwin终端下是可以正常编译的,但是在Emacs中就不行。Emacs关于LaTeX的配置没改过,原来是有效的,后来不知为啥就不行了。关于LaTeX编译命令的配置如下:

;; 启用xetex作为默认引擎,让xetex在列表最前面即可
(add-hook 'LaTeX-mode-hook
          (lambda ()
            (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex --synctex=1%(mode)%' %t" TeX-run-TeX nil t))
            (setq TeX-command-default "XeLaTeX"
                  TeX-save-query nil)))

忘记从哪儿抄的配置了。

用的是xelatex编译的。

我的设置

(setq org-alphabetical-lists t)
(setq org-latex-pdf-process
  '("xelatex -interaction nonstopmode %f"
    "bibtex %b"
    "xelatex -interaction nonstopmode %f"
    "xelatex -interaction nonstopmode %f"
    "rm -fr %b.out %b.log %b.tex %b.brf %b.bbl"
    ))
(setq org-latex-logfiles-extensions (quote ("lof" "lot" "tex~" "aux" "idx" "log" "out" "toc" "nav" "snm" "vrb" "dvi" "fdb_latexmk" "blg" "brf" "fls" "entoc" "ps" "spl" "bbl")))
(setq org-latex-compiler "xelatex")
(require 'ox-latex)
(add-to-list 'org-latex-classes
         '("dn-article"
           "\\documentclass[UTF8,twoside,a4paper,12pt,openright]{ctexart}
              [NO-DEFAULT-PACKAGES]
              [NO-PACKAGES]
              [EXTRA]"
           ("\\section{%s}"         . "\\section*{%s}")
           ("\\subsection{%s}"      . "\\subsection*{%s}")
           ("\\subsubsection{%s}"   . "\\subsubsection*{%s}")
           ("\\paragraph{%s}"       . "\\paragraph*{%s}")
           ("\\subparagraph{%s}"    . "\\subparagraph*{%s}")
           ))

下面是org中的文本

#+LATEX_COMPILER:xelatex
#+LATEX_CLASS:dn-article

顶格段落

Two Empty Line Jumped!

C-c C-e l p 编译后的结果:

image

有可能是环境变量的问题,cygwin终端和环境变量会不会跟你emacs里面的环境变量不一样?

有可能,但这个我不懂,不知道怎么弄才能解决 。它不是找不到程序,而是报错说找不到被编译的tex文件,可文件明明就在那里。

(add-to-list 'TeX-command-list ‘(“XeLaTeX” "%`xelatex --synctex=1%(mode)%’ %t" TeX-run-TeX nil t))

感觉这里有问题,没见过这里用%t的,似乎应该是%s, 顺便贴下我的配置

(add-to-list 'TeX-command-list
  			   '("Latexmk" "latexmk -shell-escape -bibtex -f -xelatex %s" TeX-run-command t t
  				 :help "Run latexmk on tex file.") t)
(setq-default TeX-command-default "Latexmk")

用latexmk可以自动处理重复编译的情况,也是调用xelatex

问题不是调用命令出错的问题,而是调用命令编译文件时,报错说文件找不到,但文件明明就在那里。当我进入Emacs eshell时输入xelatex shuoming.tex时,还是会报同样的错误。但在Cygwin中输入的命令时就没有问题。