加速\ input上的TeX-insert-macro


10

latex-modeTeX-insert-macro用来键入\input{...} 宏时,Auctex方便地提供了文件名补全,这很棒。但是,似乎要搜索很多地方来编译完成列表,因为emacs在我那可怜的小笔记本电脑上挂了将近一分钟。

有没有办法TeX-insert-macro提供哑文件名补全?
“哑巴”是指您打电话时得到的哑巴find-file。在大多数情况下,我要输入的文件仅位于一个目录之外,这样就可以了。

如果不可能,是否还有另一种方法可以加快速度?
我注意到,当我插入\include宏时,文件名列表要短得多,因此也许也可以使用该列表作为\input 宏。


cdlatex-insert-filenamecdlatex软件包还附带了该软件包。我发现这对于将图形文件插入图形环境很有帮助。
Vamsi 2014年

Answers:


6

您有一些解决方案:

首先,有一个自定义此行为的变量: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,包括inputincludeusepackage。对于后者,此行为可能是意外的。

然后是一个适用于所有功能的更hacky的解决方案:为此行为TeX-arg-input-file提供一个local标志(例如,将该标志设置为tfor include)。

显然,您可以通过为命令添加另一个条目来覆盖任何其他设置,因此:

(add-hook 'LaTeX-mode-hook 
  (lambda nil 
     (TeX-add-symbols '("input" (TeX-arg-input-file "File" t)))))

如果您拥有持久的emacs会话,则最后一个解决方案是简单地将其释放。似乎“搜索文件”阶段会缓存其结果,因此每个会话只能调用一次。


太棒了!我原本希望有点黑客,但我低估了auctex。
马拉巴巴2014年

1
Hmpf,看来hack确实是要走的路,请参阅我的编辑。如果hacky解决方案更适合您的需求,请告诉我,以便我重新安排答案。
T. Verron 2014年

1
没错,对于usepackage来说,这是不希望的。感谢更新。它确实可以缓存结果,但是〜1min的延迟足以使我感到困扰,即使每个缓冲区一次也是如此。
马拉巴巴2014年

1
我重新排列了内容。再次查看代码,我错了,TeX-global-input-files(包含搜索结果的变量)不是局部于缓冲区的,因此每个emacs 会话只能进行一次搜索。如果它可以异步发生,则可能会更有趣,但是〜1min的冻结确实太长了。
T. Verron 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.