Answers:
您有一些解决方案:
首先,有一个自定义此行为的变量:TeX-arg-input-file-search
。
如果
TeX-arg-input-file
应该搜索文件。如果值为t,则将搜索TeX搜索路径中的文件并提供它们以供完成。然后插入文件名,不带目录和扩展名。如果值为nil,则可以手动指定文件名,并以相对于当前缓冲区文件目录的路径和扩展名插入文件名。如果值为ask
,则要求您TeX-arg-input-file
调用每次调用的方法。
恕我直言,这段文档还不够清楚,但是将其设置为nil
似乎可以完成任务。
(setq TeX-arg-input-file-search nil)
这个变量会影响调用所有功能TeX-arg-input-file
,包括input
,include
和usepackage
。对于后者,此行为可能是意外的。
然后是一个适用于所有功能的更hacky的解决方案:为此行为TeX-arg-input-file
提供一个local
标志(例如,将该标志设置为t
for include
)。
显然,您可以通过为命令添加另一个条目来覆盖任何其他设置,因此:
(add-hook 'LaTeX-mode-hook
(lambda nil
(TeX-add-symbols '("input" (TeX-arg-input-file "File" t)))))
如果您拥有持久的emacs会话,则最后一个解决方案是简单地将其释放。似乎“搜索文件”阶段会缓存其结果,因此每个会话只能调用一次。
TeX-global-input-files
(包含搜索结果的变量)不是局部于缓冲区的,因此每个emacs 会话只能进行一次搜索。如果它可以异步发生,则可能会更有趣,但是〜1min的冻结确实太长了。
cdlatex-insert-filename
cdlatex软件包还附带了该软件包。我发现这对于将图形文件插入图形环境很有帮助。