Создать привязку ключей для 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