Emacs AucTeX;如何设置C-c C-c默认命令?

时间:2014-10-05 18:12:14

标签: emacs auctex

我在.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”。

1 个答案:

答案 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)))