在 Emacs/AUCTeX 中使用自定义 .fmt

在 Emacs/AUCTeX 中使用自定义 .fmt

我尝试使用纯 TeX 格式foo.fmt(例如,基于 XeTeX)和 Emacs/AUCTeX(实际上是内置 AUCTeX 的 Aquamacs)。我无法让 AUCTeX 识别自定义格式。在 TeXShop 中,我只需说:

% !TS-program=foo

我尝试过各种“局部变量”,例如

%%% Local Variables:
%%% TeX-engine: foo
%%% End:

随后是C-c C-n。但到目前为止似乎什么都没起作用。TeXing 因在 中定义的未定义命令而停止foo.fmt。格式文件可以用 kpsewhich 找到。我遗漏了什么?

答案1

问题是 AUCTeX 将使用这种调用:

Running `TeX' on `testfmt' with ``xetex  -file-line-error  --synctex=1 -interaction=nonstopmode "\input" testfmt.tex''

由于 使用格式文件的\input第一行被忽略,例如此文件:%&foofoo.fmt

%&foo
\foo
\bye
% Local variables:
% TeX-engine: xetex;
% End:

其中宏 \foo是在转储中定义的foo.fmt

您可以看到它起源于"%'"TeX-expand-list-builtin其用法是TeX-command-list

("TeX" "%(PDF)%(tex) %(file-line-error) %(extraopts) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil
  (plain-tex-mode ams-tex-mode texinfo-mode)
  :help "Run plain TeX")

我已经定制了变量来包含这个其他条目

("texfmt" "%(PDF)%(tex) %(file-line-error) %(extraopts) %S%(PDFout)%(mode) %t" TeX-run-TeX nil
  (plain-tex-mode)
  :help "Fait (xe|lua|pdf)tex")

唯一的区别是我删除了%'。编辑:我还删除了%`它的elisp定义使得它看起来像是与之配对使用的,%'但这需要AUCTeX人员的确认。

然后,当我打开一个包含上述文件的缓冲区时,我在“命令”菜单中看到一个新条目texfmt。我选择它,然后 xetex 运行并使用foo.fmt

Running `texfmt' on `testfmt' with ``xetex  -file-line-error   -interaction=nonstopmode testfmt.tex''
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=foo)
 restricted \write18 enabled.
entering extended mode
(./testfmt.tex [1] )
Output written on testfmt.pdf (1 page).
Transcript written on testfmt.log.

TeX Output finished at Thu Apr 19 00:11:19

关于使用 xelatex 而不是 xetex 的格式,请参阅遇到困难。

相关内容