首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs AucTeX;如何设置AucTeX默认命令?

Emacs AucTeX;如何设置AucTeX默认命令?
EN

Stack Overflow用户
提问于 2014-10-05 18:12:13
回答 1查看 2.5K关注 0票数 4

我已经在我的.emacs文件中设置了以下内容:

代码语言:javascript
复制
(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”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-05 18:53:46

如果检查TeX-command-query的源代码,就会发现它检查文档中涉及的tex (第4-9行)和bbl (第10-19行)文件的修改日期。除非这些文件比输出文件更近期,而且没有已知的下一个命令要执行(第20-22行),否则它将使用"View"命令作为默认值(第23行)。

当然,这种行为是明智的,因为通常您不希望重新编译,除非有更改(修改后的tex文件)。除了下面发布的命令“修补”之外,不推荐使用它,因为它不会接收自动更新;-)您没有什么可以做的。

如果您决定使用修补命令,那么在初始命令加载后,put就在init文件中的某个位置。例如,您可以将它包装到(用代码替换;; BODY )中。

代码语言:javascript
复制
(eval-after-load "tex-buf" 
  '(progn
    ;; BODY
    ))

下面是修补命令:

代码语言:javascript
复制
(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)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26205707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档