Emacs里面的AUCTeX相当好使,唯一让我觉得烦的是它的编译,很是怀念WinEdt时的一键编译。其实它还是非常智能的,用C-c C-c编译,会根据现有的文件猜出现在需要执行什么命令,是要latex还是view,基本能猜对。可是平时改一下文件,要看效果,就要按好多六下才行,还不算要Bibtex的情况:C-c C-c,回车,C-c C-c,回车。
经大牛教育,说用Make来管理比较好。今天折腾了一下,基本算是满足我要求了。
首先是要在Emacs里把当前的文件名取出来。在.emacs里添了几行:
(defun my-LaTeX-mode-common-hook()
(define-key LaTeX-mode-map [(f9)] 'compile)
(defun my-make-command()
(concat "make TEX_FILE=" (file-name-sans-extension (file-relative-name buffer-file-name)) " "))
(setq compile-command (my-make-command))
(setq compilation-finish-functions
(lambda (buf str)
(when (and (string= (buffer-name buf) "*compilation*")
(not (string-match "exited abnormally" str)))
(run-at-time 0.5 nil 'delete-windows-on buf)
)))
;; (setq compilation-read-command nil)
)
(add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-common-hook)
其实关键的是(file-name-sans-extension (file-relative-name buffer-file-name)) 这一长串,可以把当前文件去后缀名取出来,然后传到Makefile的参数TEX_FILE里。
后面还跟了两句,一个可以把compile完的提示窗口关掉,另一个可以让make TEX_FILE= 那句话的提示都省掉,直接给回车了,一键完事。
然后Makefile里就该咋写咋写了,最基本的:
all:
pdflatex $(TEX_FILE)
"C:/Program Files/Adobe/Reader 9.0/Reader/AcroRD32" $(TEX_FILE).pdf
把Makefile放在平时写tex的目录里,基本就满足要求了。
没有评论:
发表评论