Сочетание клавиш для компиляции 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 и у меня был тот же вопрос. Пост от Шона Оллреда помог мне найти ответ, который я искал. Единственное, что я хотел бы добавить, это то, что если вы используете только Aquamacs, лучше отредактировать файл

Предпочтение.el
находится в
~/Библиотека/Настройки/Aquamacs\Emacs/
После добавления приведенного ниже кода в файл последовательность команд
Кк Ка
запустит компилятор по умолчанию, а затем отправит вывод на предварительный просмотр. Этот фрагмент кода был скопирован изhttp://www.emacswiki.org/emacs/TN#toc8в разделе TEX-texify.

    (требуется 'tex-buf)
(defun TeX-команда-по умолчанию (имя)
  «Следующая команда TeX для использования. Большая часть кода украдена из `TeX-command-query'».
  (cond ((if (string-equal name TeX-region)
                 (TeX-check-files (имя конкатенации "." (TeX-output-extension))
                          (название списка)
                          Расширения файлов TeX)
               (TeX-сохранить-документ (TeX-мастер-файл)))
             TeX-команда-по умолчанию)
            ((и (memq основной-режим '(doctex-режим latex-режим))
                  (TeX-check-files (объединенное имя ".bbl")
                           (картакар 'машина
                               (LaTeX-библиография-список))
                           Расширения-файлов-BibTeX))
             ;; Здесь нам также следует проверить наличие bst-файлов.
             TeX-команда-BibTeX)
            ((TeX-процесс-получить-имя переменной
                           '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.
Если что-то еще осталось, начинайте следующую латексную команду».
  (set-buffer (process-buffer proc))
  (funcall TeX-texify-sentinel proc sentinel)
  (пусть ((регистр-свертка-поиск ноль))
    (когда (строка-соответствие "\\(завершено\\|вышло\\)" сигнальный)
      (set-buffer TeX-команда-буфер)
      (если только (plist-get TeX-error-report-switches (intern (TeX-master-file)))
    (TeX-texify)))))

(defun TeX-texify())
  «Сделай все».
  (интерактивный)
  (let ((nextCmd (TeX-команда-по-умолчанию (TeX-главный-файл)))
    процесс)
    (если (и (null TeX-texify-Show)
         (эквивалентно nextCmd TeX-команда-Показать))
    (когда (вызванный-интерактивно-p 'любой)
      (сообщение "TeX-texify: Ничего не поделаешь."))
      (TeX-команда nextCmd 'TeX-главный-файл)
      (когда (или (вызванный-интерактивно-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-команда 1))
      (если (>= TeX-texify-count-та же-команда TeX-texify-max-runs-та же-команда)
      (сообщение "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)
    (и (null (равно nextCmd TeX-команда-Показать))
         (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 "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и все будет выполнено автоматически по порядку, как в функции Quick Build в 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-aс TeX-texify, которая проходит все этапы компиляции, необходимые для создания текущего документа. Бесстыдно украдено изEmacs Wiki.

Связанный контент