我使用EMACS / AucTeX。为了编译我做C-c C-c,然后它要求
"命令:(默认LaTeX)"
我按RET并编译。要查看已编译的文档,我执行C-c C-v。
我想有一个简单的快捷方式,比如按F1或其他一些组合键来编译然后查看文档。有没有简单的命令/功能可以插入.emacs来做到这一点?
由于 彼得
答案 0 :(得分:9)
C-c C-a(TeX-command-run-all)将在AUCTeX 11.89中完成工作。
答案 1 :(得分: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))
您可能想修改TeX-command
中的my/TeX-compile-and-view
行,因为它会对C-c C-c
(TeX-command-master
)没有的很多内容进行硬编码。特别是,如果没有主文件集,我不确定它会做什么,即使它不需要也会重新编译。
编辑:经过一些修补,看起来没有主文件的所有内容都运行正常,只要你的.emacs中有这一行:
(setq-default TeX-master nil)
我不确定为什么会出现这种情况,因为这表示如果主文件尚未设置,AUCTeX应该向您查询主文件,即使在这种情况下该命令也不会查询。如果您不想使用此行,则不应该太难以使上述函数在缓冲区上起作用。
答案 2 :(得分:0)
您可以将F1绑定到一个函数TeX-master-command,因为如果您在使用C-c C-c编译后使用它,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文件是否已更改的频率以及许多其他内容。