TeX-complete-symbol 在数学模式下不起作用

TeX-complete-symbol 在数学模式下不起作用

我无法让 AUCTeX 在数学模式下完成用户定义的命令。

例如,TeX-complete-symbol在下面的文档中在数学模式之外工作,但如果我在命令名称前面添加一个美元符号并返回,它就会停止工作TeX-complete-symbol: Can’t find completion for "\rnd"

梅威瑟:

\documentclass{article}

\newcommand{\rndvar}{X}

\begin{document}

\rnd%      TeX-complete-symbol works here
$\rnd$%    but not here,
$\rnd%     nor here.

\end{document}

我使用的是 GNU Emacs 25.2.2,AUCTeX 是 v. 12.1.2。我的init.el包括

(require 'package)
(package-initialize)
(require 'reftex)

答案1

如果你打开上面的示例文件并执行C-h v TeX-complete-list RET,你会在值中看到如下列表项:

(LaTeX--after-math-macro-prefix-p 1
                                  (lambda nil
                                    (append
                                     (mapcar #'cadr LaTeX-math-list)
                                     (mapcar #'cadr LaTeX-math-default)))
                                  (if TeX-insert-braces "{}"))

这意味着在数学表达式中,补全函数会在变量LaTeX-math-listLaTeX-math-default补全候选项中查找。 LaTeX-math-list是供用户自定义的。作为测试,您可以在文档中添加如下注释:

% (setq LaTeX-math-list '((nil "rndvar" nil nil)))

将光标放在最后一个括号后并点击C-x C-e。现在再试TeX-complete-symbol一次。对我来说,它有效并且看起来像这样:

在此处输入图片描述

现在您已使此添加永久生效。您可以使用界面custom,在文件本地基础上进行添加:

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% eval: (add-to-list 'LaTeX-math-list '(nil "rndvar" nil nil))
%%% End:

甚至编写您自己的 AUCTeX 风格(这是我的选择)。

在运行完成时,Emacs 可能会在 Minibuffer 中抛出这样的消息:

TeX-complete-symbol: Wrong type argument: stringp, (if TeX-insert-braces "{}")

这似乎是一个错误。请将其报告给[email protected]

相关内容