Emacs Auctex命令编译和预览

6
我使用EMACS / AucTeX。为了编译,我按C-c C-c,然后它会询问“命令:(默认LaTeX)”。我按回车键就会进行编译。要查看编译后的文档,我按C-c C-v。我希望有一个简单的快捷方式,例如按F1或其他某个键组合来编译并查看文档。是否有任何简单的命令/函数可以插入到.emacs中以实现这一点?谢谢 Pietro
3个回答

15

在AUCTeX 11.89中,C-c C-a (TeX-command-run-all)将执行该任务。


这是一个绝妙的建议!谢谢,不过我使用的是Ubuntu 14.04,版本号为11.87。 - PinkCollins

0

我认为没有什么东西是可以直接使用的,而且仅仅调用这两个命令的天真做法是行不通的,因为你需要等待编译过程结束才能查看输出结果。

这里有一个快速而简单的解决方案,可能适合你:

(defun my/TeX-view-once (doc)
  "View TeX output and clean up after `my/TeX-compile-and-view'.

Call `TeX-view' to display TeX output, and remove this function
from `TeX-after-TeX-LaTeX-command-finished-hook', where it may
have been placed by `my/TeX-compile-and-view'."
  (TeX-view)
  (remove-hook 'TeX-after-TeX-LaTeX-command-finished-hook #'my/TeX-view-once))


(defun my/TeX-compile-and-view ()
  "Compile current master file using LaTeX then view output.

Run the \"LaTeX\" command on the master file for active buffer.
When compilation is complete, view output with default
viewer (using `TeX-view').
  (interactive)
  (TeX-command "LaTeX" 'TeX-master-file)
  (add-hook 'TeX-after-TeX-LaTeX-command-finished-hook #'my/TeX-view-once))

你可能想要调整my/TeX-compile-and-view中的TeX-command行,因为它硬编码了很多C-c C-c (TeX-command-master)没有的东西。特别是,如果没有设置主文件,我不确定它会做什么,即使不需要重新编译,它也会重新编译。

编辑:经过一些调整,看起来即使没有主文件,只要在你的.emacs文件中有这一行,一切都可以正常运行:

(setq-default TeX-master nil)

我不确定为什么会出现这种情况,因为AUCTeX应该在没有设置主文件的情况下询问您,而即使在那种情况下,此命令也不会进行任何查询。如果您不想使用此行,则应该很容易使上述函数在缓冲区上工作。


嗨,Aaron,感谢您的回复。我无法想象它是如此复杂。当没有主文件时,它不起作用。无论如何,您知道如何避免当我执行 C-c C-c 时它会询问“命令:(默认LaTeX)”吗?至少是否可以简单地编译而无需确认latex命令?感谢您的回答,Pietro。 - PinkCollins
1
@PiCo 我查看了主文件不存在的情况,并更新了我的答案。如果只是想绕过确认,请参考这个答案。这需要更多的操作,因为它复制了很多AUCTeX的决策机制;如果你只想硬编码“LaTeX”,请从上面的my/TeX-compile-and-view函数中删除add-hook表单(也许还要重命名该函数)。 - Aaron Harris

0

你可以将F1绑定到一个函数 TeX-master-command,因为如果你在使用C-c C-c编译后立即使用它,它会设置查看器。以下是auctex手册中的一句话:

一旦你用C-c C-c,C-c C-s或C-c C-b启动了命令选择,就会提示你选择命令类型。AUCTeX将尝试猜测在给定情况下哪个命令是适当的,并将其作为默认命令提供。通常,如果文档已更改,则为处理器(如“TeX”或“LaTeX”),如果文档刚刚排版,则为查看器。

要将此函数设置为F1,您应该尝试类似以下的操作:

(add-hook 'LaTeX-mode-hook
     '(lambda()
     (local-set-key (kbd "<F1>") 'TeX-master-command)
     ))

在按下 F1 后,您仍然需要按 RET。将 F1 绑定到 Aaron Haaris 的 TeX-compile-and-view 可以省略此 RET。

如果您已经厌倦了那些 C-c C-c,那么您应该尝试使用 latexmk。您只需启动它一次,然后它就会在每次保存后编译您的 .tex 文件。您可以设置查看器、latexmk 检查 .tex 文件是否更改的频率以及许多其他事项。


你可能想为LaTeX模式分配一个不同于F1的功能键。在emacs中,F1通常用于帮助。如果我没记错的话,F5到F9是可以原生使用的。但是这是emacs,当然可以按照自己的意愿来设置 :) - Lalylulelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接