Aquamacs 編譯快捷方式

Aquamacs 編譯快捷方式

有沒有辦法製作一個只能用來編譯.tex檔案的快速鍵?

對於 LaTeX 編譯,我使用快捷方式^C ^C。它有時顯示“乳膠”作為預設值或“視圖”。如果它設定為“latex”,我只需按 Enter 鍵但設定為“view”,然後我必須輸入“latex”進行編譯。然後我用^C ^V它來查看pdf是否需要。

這是我最常用的操作,但在 後明確鍵入“latex”非常煩人^C ^C。我是 Emacs 和 Aquamacs 的新手(只使用了一周)。

答案1

只需點擊工具列中的 LaTeX 按鈕即可。 :)

在此輸入影像描述

或者,執行 Command-O 開啟檔案並導航到

<HOME>/Library/Preferences/Aquamacs Emacs

並開啟Preferences.el(Aquamacs 中首選該.emacs檔案)。添加在底部

(add-hook
 'LaTeX-mode-hook
 (lambda ()
  (local-set-key
  (kbd "C-c c")
   (lambda nil
    (interactive)
    (progn
     (TeX-save-document
      (TeX-master-file)
     )
    (TeX-command "LaTeX" (quote TeX-master-file) -1))))))

這會將透過點擊圖示執行的相同功能綁定到C-c c。您可能想要新增類似的操作綁定到C-c v以供查看

(add-hook
 'LaTeX-mode-hook
 (lambda ()
  (local-set-key
  (kbd "C-c v")
  (lambda nil (interactive)
   (TeX-command "View" (quote TeX-master-file) -1)))))

答案2

我正在使用 Aquamacs 並有相同的問題。 Sean Allred 的貼文幫助我找到了我正在尋找的答案。我唯一要補充的是,如果您只使用 Aquamacs,最好編輯該文件

偏好.el
位於
〜/庫/首選項/Aquamacs\ Emacs/
在文件中加入以下程式碼後,命令序列
抄送鈣
將運行預設編譯器,然後將輸出傳送到預覽。這段程式碼複製自http://www.emacswiki.org/emacs/TN#toc8在 TEX-texify 部分下。

    (需要'tex-buf)
(defun TeX-命令-預設(名稱)
  “要使用的下一個 TeX 命令。大部分程式碼是從‘TeX-command-query’竊取的。”
  (cond ((if (字串-等於名稱 TeX-region)
                 (TeX-check-files (連線名稱「.」(TeX-output-extension))
                          (列表名稱)
                          TeX 檔案副檔名)
               (TeX-儲存文件(TeX-主文件)))
             TeX-命令-預設)
            ((和 (memq 主模式 '(doctex-mode Latex-mode))
                  (TeX-check-files(連接名稱“.bbl”)
                           (mapcar '車
                               (LaTeX-參考書目-列表))
                           BibTeX-檔案副檔名))
             ;;我們還應該在這裡檢查 bst 檔案。
             TeX-命令-BibTeX)
            ((TeX-process-get-變數名稱
                           'TeX-命令-下一個
                           TeX-命令-顯示))
            (TeX-命令-顯示)))


(defcustom TeX-texify-Show t "在 TeX-texify 結束時啟動視圖指令?" :type 'boolean :group 'TeX-command)
(defcustom TeX-texify-max-runs-same-command 5 "同一指令的最大運行次數" :type 'integer :group 'TeX-command)

(defun TeX-texify-sentinel (&可選的過程哨兵)
  「非互動式!呼叫目前 LaTeX 進程的標準哨兵。
如果還有剩餘,請啟動下一個 Latex 指令。
  (設定緩衝區(進程緩衝區 proc))
  (funcall TeX-texify-sentinel 過程哨兵)
  (讓((案例折疊搜尋零))
    (當(字串符合「\\(完成\\ |退出\\)」哨兵時)
      (設定緩衝區 TeX 指令緩衝區)
      (除非(plist-get TeX-error-report-switches(實習生(TeX-master-file)))
    (TeX-texify)))))

(defun TeX-texify ()
  “把一切都做好。”
  (互動的)
  (let ((nextCmd (TeX-命令-預設 (TeX-主檔案)))))
    過程)
    (如果(和(null TeX-texify-Show)
         (等於 nextCmd TeX-command-Show))
    (當(互動式地呼叫任何)
      (訊息「TeX-texify:無需執行任何操作。」))
      (TeX-指令 nextCmd 'TeX-master-file)
      (當(或(稱為-互動-p'任何)
        (null (boundp 'TeX-texify-count-same-command))
        (null (boundp 'TeX-texify-last-command))
        (null (等於 nextCmd TeX-texify-last-command)))
    (mapc 'make-local-variable '(TeX-texify-sentinel TeX-texify-count-same-command TeX-texify-last-command))
    (setq TeX-texify-count-same-command 1))
      (if (>= TeX-texify-count-same-command TeX-texify-max-runs-same-command)
      (訊息「TeX-texify:%S 已執行 %d 次。不想再這樣做了。」TeX-texify-last-command TeX-texify-count-same-command)
    (setq TeX-texify-count-same-command (1+ TeX-texify-count-same-command))
    (setq TeX-texify-last-command nextCmd)
    (and (null (等於 nextCmd TeX-command-Show))
         (setq proc(取得緩衝區程序(目前緩衝區)))
         (setq TeX-texify-sentinel (process-sentinel proc))
         (set-process-sentinel proc 'TeX-texify-sentinel))))))

(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "Cc Ca") 'TeX-texify)))

答案3

除非有任何特定的按鍵序列(我知道有一個,但我不能尋找它),這會起作用:

(add-hook
 'LaTeX-mode-hook
 (lambda ()
   (local-set-key
    (kbd "C-c c")
    (lambda (&optional arg)
      "Run the current document through LaTeX."
      (interactive "p")
      (kmacro-exec-ring-item
       (quote ([3 3 76 97 84 101 88 return] 0 "%d"))
       arg)))

這會將按鍵序列綁定C-c c到執行的鍵盤巨集C-c C-c LaTeX RET


如果你想知道,不,我自己並沒有做出這個重要的部分。我曾經C-x (啟動鍵盤宏,然後輸入C-c C-c LaTeX RET,然後C-c )完成巨集。然後我用來C-x C-k n命名宏,然後M-x insert-kbd-macro在 my 中運行.emacs(通常可以透過 找到C-x C-f ~/.emacs)。

我使用 將巨集綁定到按鍵序列local-set-key,然後將其新增至LaTeX-mode掛鉤,以便在您每次輸入時執行LaTeX-mode

答案4

或者,您可以將以下內容放入您的檔案中.emacs,並連續自動完成所有操作,就像 TeXMaker 中的快速建置一樣。

(require 'tex-buf)
(defun TeX-command-default (name)
  "Next TeX command to use. Most of the code is stolen from `TeX-command-query'."
  (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))
                  (TeX-check-files (concat name ".bbl")
                           (mapcar 'car
                               (LaTeX-bibliography-list))
                           BibTeX-file-extensions))
             ;; We should check for bst files here as well.
             TeX-command-BibTeX)
            ((TeX-process-get-variable name
                           'TeX-command-next
                           TeX-command-Show))
            (TeX-command-Show)))


(defcustom TeX-texify-Show t "Start view-command at end of TeX-texify?" :type 'boolean :group 'TeX-command)
(defcustom TeX-texify-max-runs-same-command 5 "Maximal run number of the same command" :type 'integer :group 'TeX-command)

(defun TeX-texify-sentinel (&optional proc sentinel)
  "Non-interactive! Call the standard-sentinel of the current LaTeX-process.
If there is still something left do do start the next latex-command."
  (set-buffer (process-buffer proc))
  (funcall TeX-texify-sentinel proc sentinel)
  (let ((case-fold-search nil))
    (when (string-match "\\(finished\\|exited\\)" sentinel)
      (set-buffer TeX-command-buffer)
      (unless (plist-get TeX-error-report-switches (intern (TeX-master-file)))
    (TeX-texify)))))

(defun TeX-texify ()
  "Get everything done."
  (interactive)
  (let ((nextCmd (TeX-command-default (TeX-master-file)))
    proc)
    (if (and (null TeX-texify-Show)
         (equal nextCmd TeX-command-Show))
    (when  (called-interactively-p 'any)
      (message "TeX-texify: Nothing to be done."))
      (TeX-command nextCmd 'TeX-master-file)
      (when (or (called-interactively-p 'any)
        (null (boundp 'TeX-texify-count-same-command))
        (null (boundp 'TeX-texify-last-command))
        (null (equal nextCmd TeX-texify-last-command)))
    (mapc 'make-local-variable '(TeX-texify-sentinel TeX-texify-count-same-command TeX-texify-last-command))
    (setq TeX-texify-count-same-command 1))
      (if (>= TeX-texify-count-same-command TeX-texify-max-runs-same-command)
      (message "TeX-texify: Did %S already %d times. Don't want to do it anymore." TeX-texify-last-command TeX-texify-count-same-command)
    (setq TeX-texify-count-same-command (1+ TeX-texify-count-same-command))
    (setq TeX-texify-last-command nextCmd)
    (and (null (equal nextCmd TeX-command-Show))
         (setq proc (get-buffer-process (current-buffer)))
         (setq TeX-texify-sentinel (process-sentinel proc))
         (set-process-sentinel proc 'TeX-texify-sentinel))))))

(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "C-c C-a") 'TeX-texify)))

這會將鍵序列綁定C-c C-aTeX-texify,它會執行產生目前文件所需的所有編譯步驟。無恥地被盜Emacs 維基

相關內容