我在 Windows 上。这是我文件中的代码,.emacs
用于使 AUCTeX 能够识别我在自己的样式文件中定义的宏:
(setq TeX-parse-self t) ; Enable parse on load.
(setq TeX-auto-save t) ; Enable parse on save.
(setq-default TeX-master nil); https://www.gnu.org/software/auctex/manual/auctex.html
(setq TeX-auto-regexp-list t); https://tex.stackexchange.com/questions/47385/adding-custom-macros-to-completion-list-with-auctex
(setq TeX-auto-parse-length 999999)
(setq TeX-macro-private
(list
"./"
"C:/Users/LilMonkey/texmf/tex/latex/local"))
逻辑:
TeX-auto-generate 应该正在运行因为
(setq TeX-parse-self t)
和(setq TeX-auto-save t)
其他变量设置根据此答案给出的建议
(setq-default TeX-master nil)
根据 AUCTeX 手册的建议,但我实际上没有看到 AUCTeX 向我查询主文件;我尝试过将此行注释掉的变体,但没有任何区别
无论如何,我仍然没有获得我在*.sty
下的自己的文件中定义的宏的自动完成选项C:/Users/LilMonkey/texmf/tex/latex/local
。我该怎么办?
答案1
我认为你误解了调用的方式TeX-auto-generate
:
TeX-auto-generate
应该运行,因为(setq TeX-parse-self t)
和(setq TeX-auto-save t)
设置这两个变量后,AUCTeX 仅解析当前 .tex 文件及其主文件或子文件。它还会解析通过加载的包,如果找到则
\usepackage
加载。AUCTeX 不会对未找到样式文件的包进行递归运行。<package-name>.el
TeX-auto-generate
看着文档, 有:
命令:
TeX-auto-generate TEX AUTO
M-x TeX-auto-generate RET 生成样式钩子特克斯并将其存储在汽车。 如果特克斯是一个目录,为目录中的所有文件生成样式挂钩。尝试M-x TeX-auto-generate RET c:/Users/LilMonkey/texmf/tex/latex/local/ RET。结果应该位于 中定义的目录中
TeX-auto-private
。注意:将解析的结果视为起点,您可能必须触及它们。其他变量设置根据此答案给出的建议
我认为这句话是有害的:
(setq TeX-auto-regexp-list t)
再次来自文档:
多变的:
TeX-auto-regexp-list
与 TeX 宏定义匹配的正则表达式列表。
该列表具有以下格式 ((REGEXP MATCH TABLE) …),即每个条目都是一个包含三个元素的列表。
REGEXP。与我们要解析的宏匹配的正则表达式。
MATCH。一个数字或数字列表,每个数字代表一个与 REGEXP 匹配的带括号的子表达式。
TABLE。用于存储数据的符号表。这可以是一个函数,在这种情况下,使用参数 MATCH 调用该函数。使用 TeX-match-buffer 获取匹配数据。如果它不是函数,则假定它是一个包含匹配数据列表的变量的名称。匹配的数据(如果 MATCH 是数字,则为字符串;如果 MATCH 是数字列表,则为字符串列表)放在表的前面。
我建议你不要触碰这个,因为它有一个合理的默认值(
TeX-auto-full-regexp-list
)。由于您正在重复默认操作,因此下一行
(setq TeX-auto-parse-length 999999)
也是不必要的。(setq-default TeX-master nil)
根据 AUCTeX 手册的建议,但我实际上没有看到 AUCTeX 向我查询主文件AUCTeX 不会询问是否
TeX-master
在 .tex 文件的局部变量中找到了设置。手动编辑该条目并点击C-c C-n。