AUCTeX 中的数学符号插入

AUCTeX 中的数学符号插入

我在 AUCTeX 中插入数学符号时遇到了一些麻烦,我可能遗漏了可用结构和选项中的某些内容。但由于我苦苦挣扎了一段时间,我不妨问一下。

我知道LaTeX-math-mode,我启用了它,而且我(认为我)知道它应该如何工作。但是,我处于一种中间立场,因为我不大量使用数学,所以超出范围的绑定LaTeX-math-abbrev-prefix并不真正起作用,但有时我确实需要它。此外, 中的许多(大多数?)符号LaTeX-math-default的绑定都设置为nil

我也知道,如果绑定失败,我可以重新使用菜单LaTeX-math-mode提供的功能。但总体而言,我发现菜单不太方便,如果可能的话,我宁愿避免使用它们。

我还知道补全(使用“CMi”,又名“穷人的 M-TAB”)在数学模式下有效。如果我碰巧知道命令的开头,这已经很有帮助了。但是,假设我想在任意数量的箭头中进行选择……

因此,据我所知,从集合中插入数学符号LaTeX-math-defaultLaTeX-math-list取决于数学前缀后的绑定(如果有的话),使用“CMi”完成,或者作为最后的资源,取决于菜单。

尽管如此,我还是希望在 的项目中(通常的)找到LaTeX-math-default和的项目,但它们似乎在那里不可用。这让我感到好奇,因为例如“amssymb”的样式文件在 部分中包含了它的项目。因此,如果我加载,我会发现可用,但找不到或。LaTeX-math-listTeX-insert-macroC-c RETTeX-add-symbolsamssymb\upharpoonrightTeX-insert-macro\ldots\sum

这是预期的行为吗?我遗漏了什么吗?这些符号在那里不可用,是因为它们不应该在那里,因为有更好的方法可以找到它们吗?我是否错过了使它们在那里可用的配置?

最后,如果我的期望不是不合理的,我怎样才能正确地将这些项目纳入LaTeX-math-default候选LaTeX-math-list之中TeX-insert-macro

我的 AUCTeX 配置中的一些相关项目(在 下use-package):

:hook (LaTeX-mode . LaTeX-math-mode)
:custom
(TeX-auto-save t)
(TeX-parse-self t)
(TeX-complete-expert-commands t)
(TeX-insert-macro-default-style (quote mandatory-args-only))
(LaTeX-math-abbrev-prefix "C-$")
(TeX-electric-math (cons "\\(" "\\)"))

环境:AUCTeX 12.1.2,Emacs 26.2

答案1

好吧,我在这方面取得了一些进展,我也可以分享一下。

包含的 LaTeX 默认数学符号LaTeX-math-default似乎确实不会默认加载到的完成列表中TeX-insert-macro。我没有详细跟踪代码,但我已使用 进行了测试emacs -Q

这似乎确实是故意设计的,因为担心不让完成列表变得臃肿TeX-insert-macro。(此主题表明存在这种担忧)。

现在,我个人认为这种担忧在默认完成框架的上下文中更为相关,但如果你碰巧使用其他完成框架(例如ivy或 )helm,这种担忧就不那么重要了,因为它们可以更好地处理更多的候选项(当然,不是无限的)。

我还没有找到任何标准方法来包含用于生成候选项的项目LaTeX-math-default和。LaTeX-math-listTeX-symbol-listTeX-insert-macro

但我这样做了:

;; Math mode is nice, but it would be nicer to have math symbol completion
;; with 'TeX-insert-symbol' ("C-c RET").  I’m probably missing something,
;; but this should work until I learn the proper way to do it.
(defun my/auctex-add-math-to-TeX-symbol-list ()
  "Add math symbols in `LaTeX-math-default' to `TeX-symbol-list'.
Also those eventually in `LaTeX-math-list'. "
  (apply 'TeX-add-symbols
         (seq-filter 'stringp
                     (append (mapcar #'cadr LaTeX-math-list)
                             (mapcar #'cadr LaTeX-math-default)))))

(add-hook 'LaTeX-mode-hook #'my/auctex-add-math-to-TeX-symbol-list)

就是这样,以防其他人也认为这是一个有趣的方法。

相关内容