Як використовувати pdf-інструменти (pdf-view-mode) в emacs?


23

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

Чи може режим pdf-view використовуватись замість режиму doc-view взагалі, чи він повинен бути "інструментом" інструментом?

В будь-якому випадку, чи потрібно редагувати джерело emacs, щоб використовувати pdf-інструменти в gnus, eww та orgmode, або це їхні загальносистемні налаштування, які можна використовувати?

--- особливості pdf-інструментів тут для зручності; детальніше див. сайт github ---

  1. Здається, швидше, ніж перегляд документа
  2. Роздільна здатність, як правило, краще, оскільки не виводиться як png
  3. Хороший пошук, і навіть можна шукати всі випадки фрази
  4. Можна додавати текстові примітки, виділення, підкреслення тощо
  5. Можна створити імен для частин PDF
  6. Може трактувати декілька pdfs як єдиний "віртуальний" PDF
  7. Можна інтегруватись з латексом, щоб побачити джерело латексу та pdf поруч та перейти з одного в інший в еквівалентних місцях (наприклад, виберіть \section{A section}LaTeX і отримайте цей розділ у pdf.

Дивіться тут відповідне обговорення, яке, ймовірно, включає відповідь на ваші запитання.
tmalsburg

Гнус може бути особливим випадком? Дивіться: liste.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z

Можливо, вам доведеться переформулювати своє запитання подалі від жахливих "найкращих практик", які, як вважають деякі, означають, що відповіді будуть ґрунтуватися насамперед на думці. Здається, я пам'ятаю, що gnus - це особливий випадок, і вам потрібно буде додати відповідний конфігурацію до .mailcap. Якщо ваше запитання не буде закрито, перш ніж я повернуся додому, я викопаю для вас конфігурацію.
Тайлер

1
Gnus використовує mailcap, щоб визначити, з якими програмами відкривати вкладення. Якщо у вас Emacs налаштований на відкриття файлів PDF за допомогою інструментів pdf, вам потрібно додати рядок application/pdf; emacsclient %sдо цього .mailcapта запустити сервер редагування Emacs: викликати Emacs як emacs --daemonабо додати його (server-start)до ваших .emacs.
Тайлер

Спасибі. Це працює, і після цього це працює для org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson

Відповіді:


31

Перехід від " docviewдо" pdf-toolsвідбувається "автоматично" при встановленні pdf-tools. Щойно ви зробите це, коли-небудь Emacs намагатиметься відкрити PDF у Emacs , він використовуватиме pdf-tools. Однак деякі пакети будуть викликати операційну систему або використовувати різні конфігурації в Emacs, щоб вирішити, чи слід використовувати Emacs або іншу програму для відкриття PDF-файлу. Таким чином, існує певна конфігурація "інструмент за інструментом", необхідна для отримання всіх пакетів Emacs для використання PDF-інструментів.

Якщо ви хочете, щоб ваші файли pdfs відкривалися в тому ж екземплярі Emacs, вам потрібно запустити його в демонстраційному режимі (тобто, запустити його emacs --daemon) або зателефонувати (server-start)в ваш init, щоб emacsclientвін працював.

Посилання в Org-режимі

З коробки 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 Mode з вашими нотатками". Це альтернатива використанню анотацій, вбудованих у pdf (що можна зробити з pdf-інструментами). Натомість ви отримуєте файл org-режиму з усіма своїми примітками, який посилається на сторінку в PDF, з якою пов’язані анотації.

Гнус

Як я вже згадував у своєму коментарі, 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 для відкриття pdfs у всій системі за допомогою xdg-open:

  • створити файл ~/.local/share/applications/emacsclient.desktopіз вмістом:

[Desktop Entry]
Name = Emacs Client
Exec = emacsclient% u
Icon = emacs-icon
Type = Прикладний
термінал = 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. Будь-яка порада, як це виправити?
brittAnderson

дивіться оновлену відповідь
Тайлер

Чи можу я зв’язатись із org-modeпевною приміткою у файлі PDF?
Завжди навчання

1
@AlwaysНавчання не те, про що я знаю. Режим перемежування забезпечує підтримку для запису анотацій в окремий, пов'язаний файл у форматі org. Я оновлю відповідь
Тайлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.