繁体   English   中英

emacs auctex命令编译和查看

[英]emacs auctex commandto compile and view

我使用EMACS / AucTeX。 为了编译我做Cc Cc,然后它问

“命令:(默认LaTeX)”

我按下RET然后编译。 要查看已编译的文档,我会执行Cc Cv。

我想有一个简单的快捷方式,比如按F1或其他一些组合键来编译然后查看文档。 有没有简单的命令/功能可以插入.emacs来做到这一点?

谢谢Pietro

Cc Ca(TeX-command-run-all)将在AUCTeX 11.89中完成工作。

我认为没有任何东西可以开箱即用,并且只是按顺序调用这两个命令的天真方法将无法工作,因为您需要在查看输出之前完成编译过程。

这是一个可能适合您的快速而肮脏的解决方案:

(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-viewTeX-command行,因为它硬编码很多Cc CcTeX-command-master )没有的东西。 特别是,如果没有主文件集,我不确定它会做什么,即使它不需要也会重新编译。

编辑:经过一些修补,看起来没有主文件的一切运行正常,只要你的.emacs中有这一行:

(setq-default TeX-master nil)

我不确定为什么会出现这种情况,因为这说AUCTeX应该查询一个主文件(如果它尚未设置),即使在这种情况下该命令也不会查询。 如果您不想使用此行,则不应该太难以使上述函数在缓冲区上起作用。

您可以将F1绑定到一个函数TeX-master-command,因为如果您在使用Cc Cc编译后使用它,Cc Cc将设置查看器。 以下是auctex手册的引用

使用Cc Cc,Cc Cs或Cc Cb启动命令选择后,系统将提示您输入命令类型。 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。

既然你厌倦了那些Cc Cc,你应该尝试latexmk。 你只需要启动它一次,然后它会在每次新的保存后编译你的.tex。 您可以设置查看器,latexmk检查您的.tex文件是否已更改的频率以及许多其他内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM