Создать привязку ключей для LaTeX Перейти к PDF - synctex

Любые идеи, как преобразовать это в глобальный набор ключей для "Перейти к PDF"?

(defun aquamacs-latex-viewer-support ()
"Support for Skim as LaTeX viewer if present."
 (add-to-list 'TeX-command-list
     '("Jump to PDF" 
       "%V" TeX-run-discard-or-function nil t :help "Run Viewer") 'append)

У контекстного меню, вызываемого правой кнопкой мыши, есть несколько полезных опций, и я думаю, что я отследил его до этого файла: /Applications/Aquamacs.app/Contents/Resources/lisp/aquamacs/auctex-config.el, Однако я могу ошибаться?

Я думаю, что это будет сложнее, чем просто создание PDF - то есть:

(global-set-key (kbd "<f7>") 'TeX-command-master)

Теперь я на шаг ближе - эта конфигурация init.el работает с последней версией Emacs (универсальный бинарный файл), работающей на OSX Mountain Lion, поэтому теперь будет намного проще преобразовать ее в сочетание клавиш. Это перенастраивает опцию просмотра для перехода в PDF. Вот ссылка на ветку, где я его получил (написанный Рикардо): https://tex.stackexchange.com/questions/11613/launching-an-external-pdf-viewer-from-emacs-auctex-on-a-mac-osx-fails

(setq TeX-view-program-selection '((output-pdf "Skim")))

(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)

(setq TeX-source-correlate-method 'synctex)

(add-hook 'LaTeX-mode-hook
      (lambda()
        (add-to-list 'TeX-expand-list
             '("%q" skim-make-url))))

(defun skim-make-url () (concat
        (TeX-current-line)
        " "
        (expand-file-name (funcall file (TeX-output-extension) t)
            (file-name-directory (TeX-master-file)))
        " "
        (buffer-file-name)
))

(setq TeX-view-program-list
  '(("Skim" "/Applications/Skim.app/Contents/SharedSupport/displayline %q")))

1 ответ

Решение

Это решение делает not зависит от использования Aquamacs - то есть, общий вкус Emacs будет достаточно. Что касается OSX-версии Emacs (Snow Leopard и Mountain Lion) с пакетом auctex-11.86, следующие строки кода в tex.el влияет на просмотр *.pdf файлов:

строка 1028: ("Evince" ("evince" (mode-io-correlate " -p %(outpage)") " %o"))

строка 1119: (выходной-pdf "Evince")

Skim.app считается наиболее подходящим средством просмотра *.pdf для документов OSX *.tex из-за его способности автоматически обновлять отображение при обнаружении изменения файла *.pdf, а также из-за его возможности использовать Обратный поиск (т. е. команда + Shift + щелчок левой кнопкой мыши), чтобы вернуться к текстовому редактору в точную точку, где была нажата мышь.

Поскольку сообщество OSX не использует Evince широко, обходной путь - либо модифицировать tex.el, либо модифицировать init.el. В tex.el есть даже примечание о том, что разработчики должны координировать свои усилия для реализации просмотра *.pdf в системе OSX.

Ниже приведена модификация init.el, которая включает в себя комбинацию клавиш по моему выбору. Текущая версия auctex-11.86 уже на месте сочетания клавиш для 'TeX-view (Cc Cv). ПРИМЕЧАНИЕ. Следующий код настраивает View как "Jump-To-PDF" с включенным synctex, поэтому любому, кто хочет иметь быстрый просмотр без synctex, потребуется немного другая конфигурация. Сочетания клавиш, которые я создал, являются F7 для сборки; F8 для перехода в PDF; и F9 для очистки, но оставьте *.pdf и *.tex.

[В будущем я планирую написать некоторый код для использования параметра -output-directory в /tmp и автоматически скопировать *.pdf обратно в рабочий каталог, чтобы очистка не требовалась. В настоящее время TexLive не поддерживает параметр -aux-directory, поэтому предыдущее решение - лучший вариант для устранения процесса очистки.]

(global-set-key (kbd "<f7>") 'TeX-command-master) ;; need to set a default for this to work.
(global-set-key (kbd "<f8>") 'TeX-view) ;; jump to *.pdf with synctex (or C-c C-v)
(global-set-key (kbd "<f9>") 'TeX-clean) ;; clean, but leave the *.pdf

(setq TeX-PDF-mode t)

(setq TeX-view-program-selection '((output-pdf "Skim")))

(add-hook 'LaTeX-mode-hook 'TeX-source-correlate-mode)

(setq TeX-source-correlate-method 'synctex)

(add-hook 'LaTeX-mode-hook
    (lambda()
        (add-to-list 'TeX-expand-list
            '("%q" skim-make-url))))

(defun skim-make-url () (concat
    (TeX-current-line)
    " "
    (expand-file-name (funcall file (TeX-output-extension) t)
        (file-name-directory (TeX-master-file)))
    " "
    (buffer-file-name)
))

(setq TeX-view-program-list
    '(("Skim" "/Applications/Skim.app/Contents/SharedSupport/displayline %q")))

Смотрите также:

https://tex.stackexchange.com/questions/111834/auctex-output-directory-copy-pdf-to-working-directory

Другие вопросы по тегам