当我从 AucTEX 命令菜单(或使用 Cc Cc)启动 ConTeXt 命令时,AucTEX 会调用 texexec,并且编译会失败,因为 texexec 依赖于未安装在我的 Windows 帐户下的 ruby 依赖项。这段代码可能有些过时:据我所知,texexec 是为 MkII 设计的。此外,如果可以自由选择 context 或 contextjit 就更好了。
当然,在 Emacs 下一切都可以配置。我寻找一种方法来将 texexec 变量更改为 .emacs 中的上下文。我所能找到的只是,当将 TeX-command-default 设置为“ConTeXt”时,会启动 texexec。我不知道如何更改这一点。
任何想法 ?
答案1
要在 Emacs 中切换到 MKIV,请设置ConTeXt-Mark 版本
(setq ConTeXt-Mark-version "IV")
在你的 中.emacs
。默认情况下,ConTeXt
Emacs 中的命令会执行context --once
。我不喜欢这样,并且想利用 ConTeXt 的自动多遍编译功能,所以我ConTeXt Full
默认切换到。
(add-hook 'ConTeXt-mode-hook
(lambda()
(setq TeX-command-default "ConTeXt Full")))
如果您和我一样,不使用.tex
扩展名来保存 ConTeXt 文件,而是.mkiv
使用或甚至.mkvi
,那么您还需要以下部分,以便在打开这些文件时启用 ConTeXt,并且 AUCTeX 在编译时知道扩展名:
(add-to-list 'auto-mode-alist '("\\.mkiv\\'" . ConTeXt-mode))
(add-to-list 'auto-mode-alist '("\\.mkvi\\'" . ConTeXt-mode))
(with-eval-after-load "context"
(add-to-list 'TeX-file-extensions "mkvi" t)
(add-to-list 'TeX-file-extensions "mkiv" t))
答案2
亨利的回答很透彻。
在任何 GNU/Linux 发行版的 AUCTeX 预编译包上,您都可以拥有:
(load "context.el" nil t t)
在你的初始化文件上,只要你修改二和四保存context.el
并退出。
;; Define before first use.
(defcustom ConTeXt-Mark-version "IV"
"ConTeXt Mark version used for running ConTeXt."
:type 'string
:group 'TeX-command)
(make-variable-buffer-local 'ConTeXt-Mark-version)
(put 'ConTeXt-Mark-version 'safe-local-variable 'stringp)
文件context.el/usr/share/emacs/site-lisp/auctex
可以在目录中找到
还有其他问题与独立的 ConTeXt 有关,例如https://emacs.stackexchange.com/questions/33879. 对于涉及 PATH 的情况,请从头开始。