我已经在我的.emacs文件中设置了以下内容:
(add-hook 'TeX-mode-hook
(lambda ()
(setq TeX-command-default "LaTeX"))
(add-hook 'LaTeX-mode-hook
(lambda ()
(setq TeX-command-default "LaTeX"))我看到C-c C-c绑定到TeX-command-master,它调用TeX-command-query。但是由于我的(TeX-master-file)是"<none>",所以我希望调用默认命令,但仍然希望调用"View“而不是"LaTeX”。
发布于 2014-10-05 18:53:46
如果检查TeX-command-query的源代码,就会发现它检查文档中涉及的tex (第4-9行)和bbl (第10-19行)文件的修改日期。除非这些文件比输出文件更近期,而且没有已知的下一个命令要执行(第20-22行),否则它将使用"View"命令作为默认值(第23行)。
当然,这种行为是明智的,因为通常您不希望重新编译,除非有更改(修改后的tex文件)。除了下面发布的命令“修补”之外,不推荐使用它,因为它不会接收自动更新;-)您没有什么可以做的。
如果您决定使用修补命令,那么在初始命令加载后,put就在init文件中的某个位置。例如,您可以将它包装到(用代码替换;; BODY )中。
(eval-after-load "tex-buf"
'(progn
;; BODY
))下面是修补命令:
(defun TeX-command-query (name)
"Query the user for what TeX command to use."
(let* ((default
(cond ((if (string-equal name TeX-region)
(TeX-check-files (concat name "." (TeX-output-extension))
(list name)
TeX-file-extensions)
(TeX-save-document (TeX-master-file)))
TeX-command-default)
((and (memq major-mode '(doctex-mode latex-mode))
;; Want to know if bib file is newer than .bbl
;; We don't care whether the bib files are open in emacs
(TeX-check-files (concat name ".bbl")
(mapcar 'car
(LaTeX-bibliography-list))
(append BibTeX-file-extensions
TeX-Biber-file-extensions)))
;; We should check for bst files here as well.
(if LaTeX-using-Biber TeX-command-Biber TeX-command-BibTeX))
((TeX-process-get-variable name
'TeX-command-next
;; HERE COMES THE PATCH
;; was TeX-command-View
TeX-command-default))
;; END OF PATCH
(TeX-command-Show)))
(completion-ignore-case t)
(answer (or TeX-command-force
(completing-read
(concat "Command: (default " default ") ")
(TeX-mode-specific-command-list major-mode) nil t
nil 'TeX-command-history))))
;; If the answer is "latex" it will not be expanded to "LaTeX"
(setq answer (car-safe (TeX-assoc answer TeX-command-list)))
(if (and answer
(not (string-equal answer "")))
answer
default)))https://stackoverflow.com/questions/26205707
复制相似问题