Как использовать pdf-tools (pdf-view-mode) в emacs?

23

pdf-tools включает в себя pdf-view-mode, который предлагает несколько функций, отсутствующих в doc-view-mode (см. конец вопроса).

Может ли pdf-view-mode использоваться в качестве замены для doc-view-mode в целом, или он должен быть «инструментом» для инструмента?

В любом случае, необходимо ли редактировать исходный код emacs для использования pdf-tools в gnus, eww и orgmode или их общесистемные настройки можно использовать?

--- Особенности pdf-инструментов здесь для удобства; см. сайт GitHub для деталей ---

  1. Кажется быстрее, чем Doc-View
  2. Разрешение обычно лучше, так как не отображается как png
  3. Хороший поиск, и может даже искать все вхождения фразы
  4. Можно добавлять текстовые аннотации, а также выделять, подчеркивать и тому подобное
  5. Можно создать имен для частей PDF
  6. Может рассматривать несколько PDF как один "виртуальный" PDF
  7. Может интегрироваться с латексом, чтобы видеть источник латекса и pdf бок о бок и переходить от одного к другому в эквивалентных местах (например, выбрать \section{A section}в LaTeX и получить этот раздел в pdf.
brittAnderson
источник
Смотрите здесь для связанной дискуссии, которая, вероятно, включает в себя ответ на ваши вопросы.
tmalsburg
Гнус может быть частным случаем? Смотрите: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Брайан З,
Возможно, вам придется перефразировать ваш вопрос в сторону от устрашающей «передовой практики», которая, как полагают некоторые, означает, что ответы будут в основном основаны на мнении. Кажется, я помню, что gnus - это особый случай, и вам нужно будет добавить соответствующий конфиг в .mailcap. Если ваш вопрос не будет закрыт до того, как я вернусь домой, я выкопаю ваш конфиг для вас.
Тайлер
1
Gnus использует mailcap, чтобы выяснить, с какими приложениями открывать вложения. Если у вас есть Emacs настроен на открытые файлы в формате PDF с PDF-Tools, вам нужно добавить строку application/pdf; emacsclient %sк .mailcap, и запустить Emacs редактировать-сервер: Invoke Emacs , как emacs --daemon, или добавить (server-start)в ваш .emacs.
Тайлер
Спасибо. Это работает, и после этого это работает для org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
Бритт Андерсон

Ответы:

31

Переключение с docviewна pdf-toolsпроисходит автоматически при установке pdf-tools. Как только вы это сделаете, каждый раз, когда Emacs пытается открыть PDF-файл в Emacs , он будет использовать pdf-tools. Однако некоторые пакеты будут вызывать операционную систему или использовать другие конфигурации в Emacs, чтобы решить, следует ли им использовать Emacs или другую программу для открытия PDF-файла. Таким образом, существует некоторая конфигурация «инструмент за инструментом», необходимая для того, чтобы заставить все пакеты Emacs использовать pdf-инструменты.

Если вы хотите, чтобы ваши pdf открывались в одном и том же экземпляре Emacs, вам нужно, чтобы он работал в режиме демона (то есть, запускать его с emacs --daemon), или вызовите (server-start)свой init, чтобы emacsclientон работал.

Ссылки в режиме организации

Из коробки org-modeне знает о pdf-инструментах. Однако вы можете добавить поддержку открытия ссылок org на файлы pdf с помощью org-pdfview , который доступен в виде пакета на MELPA. После установки вы можете активировать его с помощью следующего кода .emacs:

(eval-after-load 'org '(require 'org-pdfview))

(add-to-list 'org-file-apps 
             '("\\.pdf\\'" . (lambda (file link)
                                     (org-pdfview-open link))))

Делая это обеспечит новую цель завершения добавления ссылок с помощью C-c C-l, pdfview:с поддержкой для прыжков на конкретные страницы. Полные ссылки используют формат:

[[pdfview:/path/to/myfile.pdf::42][My file Description]]

Режим чередования и PDF аннотации

Режим чередования обеспечивает поддержку для представления «вашего PDF рядом с буфером режима Org с вашими заметками». Это альтернатива использованию аннотаций, встроенных в pdf (что вы можете сделать с помощью pdf-tools). Вместо этого вы получите файл режима org со всеми вашими аннотациями, который ссылается на страницу в pdf, с которой связаны аннотации.

Gnus

Как я уже упоминал в своем комментарии, gnusдля открытия вложений использует mailcap. Чтобы настроить это, вам нужно следующее в вашем .mailcapфайле:

application/pdf; emacsclient %s

EWW

EWW также использует mailcap, поэтому измените ваш .mailcapфайл согласно Gnus выше.

AucTeX

Для AucTeX есть ряд соответствующих опций:

  • средства просмотра задаются с помощью переменной TeX-view-program-selection: найдите запись output-pdfи выберите «Инструменты PDF» в качестве значения.
  • Чтобы использовать SyncTex, вам необходимо:
    • установить TeX-source-correlate-mode, либо интерактивно, вызвав эту функцию через Mx, либо установив переменную постоянно через M-x customize-variable.
    • убедитесь, что TeX-source-correlate-methodвключает в себя(pdf . synctex)

При этом на вашем исходном текстовом файле C-c C-gдолжен отображаться соответствующий раздел pdf.

ESS

Настройте переменную ess-pdf-viewer-prefна emacsclient.

XDG открыть

В Linux некоторые пакеты будут вызывать внешнюю программу xdg-openдля открытия PDF-файлов. Это будет использовать ваши общесистемные настройки, чтобы определить, какую программу использовать. Это общесистемное изменение, поэтому другие программы будут отправлять PDF-документы в Emacs, когда вы это настроите. Поэтому, если вы не хотите, например, Firefox, делать это, вы не захотите вносить эти изменения.

Чтобы настроить emacsclient для открытия PDF-файлов по всей системе, выполните следующие действия xdg-open:

  • создать файл ~/.local/share/applications/emacsclient.desktopс содержанием:

[Desktop Entry]
Имя = Emacs Client
Exec = emacsclient% u
Icon = emacs-icon
Тип =
Терминал приложения = false
MimeType = application / pdf;

  • из командной строки введите:

xdg-mime default emacsclient.desktop application/pdf

Вы можете проверить, с чем это работает xdg-open your-document.pdf- он должен открываться your-document.pdfв Emacs.

w3m

Сначала w3m проверяет переменную w3m-doc-view-content-types, и если он видит там «application / pdf», он открывает pdfs в doc-view. Это настраиваемая переменная, поэтому удалите запись «application / pdf», используя интерфейс настройки.

Без записи в w3m-doc-view-content-types, w3m затем проверяет переменную на w3m-content-type-alistпредмет записей, которые соответствуют «application / pdf». Настройте запись для чтения

[INS] [DEL] Type: application/pdf
  Regexp: ( ) Not specified
          (*) String: \.pdf\'
  Viewer: ( ) Not specified
          (*) External viewer:
                Command: emacsclient
                Arguments:
                  [INS] [DEL] file
                  [INS]

Вы также можете использовать функцию emacs (предположительно find-fileили аналогичную), а не внешний вызов emacsclient, но я не мог понять синтаксис для этого.

Тайлер
источник
Однако w3m в emacs по-прежнему использует docview. Любой совет, как это исправить?
Бритт Андерсон,
см. обновленный ответ
Тайлер
Могу ли я сделать ссылку org-modeна конкретную аннотацию в файле PDF?
AlwaysLearning
1
@ Всегда учась, что я не в курсе. Режим чередования обеспечивает поддержку записи аннотаций в отдельном связанном файле режима орг. Я
Тайлер