![Emacs + auctex 使用 lualatex 编译时冻结](https://linux22.com/image/350616/Emacs%20%2B%20auctex%20%E4%BD%BF%E7%94%A8%20lualatex%20%E7%BC%96%E8%AF%91%E6%97%B6%E5%86%BB%E7%BB%93.png)
尝试在 emacs + auctex 中使用 Cc Cc 编译以下内容会冻结 emacs:
\documentclass{article}
\begin{document}
asdf
\end{document}
%%% Local Variables:
%%% TeX-engine: lualatex
%%% TeX-master: t
%%% End:
我的局部变量有错误吗?我遵循了以下建议:关联。我的 emacs 和 auctex 应该是最新的。
emacs 版本:GNU Emacs 25.1.1
auctex 版本:11.90.0
答案1
default
使用“局部变量”设置,您可以声明 Emacs 将调用的“引擎”。通常,您的选择将是¹luatex
或之一xetex
。mode
相反, 会命名您正在使用的格式(例如,context
,latex
或tex
)。
lualatex
因此,对于需要 LuaTeX 引擎的 LaTeX 文档(您通常会使用终端中的命令调用该引擎) ,您可以使用以下命令:
%%% Local Variables:
%%% mode: latex
%%% TeX-engine: luatex
%%% TeX-master: t
%%% End:
当 Emacs.tex
在缓冲区中打开新文件时,它会查询我的主文件是什么(默认为t
,这意味着当前新文件/缓冲区将是它自己的主文件)并假定格式latex
。现在,如果我想指定引擎,我可以添加该TeX-engine
行。您还可以临时选择引擎(在 Emacs 使用 访问文件的剩余时间内)M-x TeX-engine-set RET <default|luatex|xetex> RET
。
您可以对整个目录执行的另一件事是创建一个名为的文件,.dir-locals-el
其中包含以下行:
((latex-mode
(TeX-engine . luatex)))
这会将目录的默认引擎设置为luatex
。如果要命名主文件,还可以执行以下操作:
((latex-mode
(TeX-engine . luatex)
(TeX-master . "mainfile"))) ;; now mainfile.tex is the master file for the directory
¹ 我的默认引擎.emacs
是pdfTeX
,这当然是默认的;但是这可以改变。