我在.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”。
答案 0 :(得分:1)
如果您检查TeX-command-query
的来源,则会发现它会检查tex
(第4-9行)和bbl
(第10-19行)文件的修改日期参与您的文件。除非这些文件比输出文件更新,并且没有已知的下一个命令要执行(第20-22行),否则它将使用"View"
命令作为默认值(第23行)。
这种行为当然是明智的,因为除非有更改(修改后的tex
文件),否则通常不想重新编译。除了“修补”命令[发布在下面,不会真的建议使用,因为它不会收到自动更新;-)]你真的没有什么可以做。
如果你决定使用patched命令,只需在原始命令加载后中的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)))