Aquamacs 编译快捷方式

Aquamacs 编译快捷方式

有没有办法创建一个快捷键,仅用于编译文件.tex

对于 LaTeX 编译,我使用快捷方式^C ^C。它有时会显示“latex”作为默认值或“view”。如果设置为“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 区域)
                 (TeX-check-files(连接名称“。(TeX-output-extension))
                          (列表名称)
                          TeX 文件扩展名)
               (TeX 保存文档(TeX 主文件)))
             TeX 命令默认)
            ((和 (memq major-mode '(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(&可选 proc sentinel)
  “非交互式!调用当前 LaTeX 进程的标准哨兵。
如果还有剩余的话,请启动下一个 latex 命令。”
  (设置缓冲区(进程缓冲区 proc))
  (函数调用 TeX-texify-sentinel proc sentinel)
  (让((大小写折叠搜索 nil))
    (当(字符串匹配“\\(finished\\|exited\\)”标记时)
      (设置缓冲区 TeX 命令缓冲区)
      (除非(plist-get TeX-error-report-switches(实习生(TeX-master-file)))
    (TeX-texify)))))

(defun TeX-texify()
  “把所有事情都做完。”
  (交互的)
  (让((nextCmd(TeX-command-default(TeX-master-file)))
    过程)
    (如果(和(null TeX-texify-Show)
         (等于 nextCmd TeX-command-Show))
    (当(交互调用'任何)
      (消息“TeX-texify:无需执行任何操作。”)
      (TeX 命令 nextCmd'TeX 主文件)
      (当(或(交互调用'任何)
        (null(boundp'TeX-texify-count-same-command))
        (null(boundp'TeX-texify-last 命令))
        (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))
      (如果(> = TeX-texify-count-same-command TeX-texify-max-runs-same-command)
      (消息“TeX-texify:已执行了 %d 次 %S。不想再执行了。” 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-命令 nextCmd)
    (和(null(等于 nextCmd TeX-command-Show))
         (setq proc(获取缓冲区进程(当前缓冲区)))
         (setq TeX-texify-sentinel(进程哨兵 proc))
         (设置进程哨兵 proc'TeX-texify-sentinel))))))

(添加钩子'LaTeX-mode-hook'(lambda()(本地设置键(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在我的宏中运行.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 维基

相关内容