在AUCTeX 11.89中,C-c C-a (TeX-command-run-all)将执行该任务。
我认为没有什么东西是可以直接使用的,而且仅仅调用这两个命令的天真做法是行不通的,因为你需要等待编译过程结束才能查看输出结果。
这里有一个快速而简单的解决方案,可能适合你:
(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应该在没有设置主文件的情况下询问您,而即使在那种情况下,此命令也不会进行任何查询。如果您不想使用此行,则应该很容易使上述函数在缓冲区上工作。
my/TeX-compile-and-view
函数中删除add-hook
表单(也许还要重命名该函数)。 - Aaron Harris你可以将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 文件是否更改的频率以及许多其他事项。