Wie verwende ich PDF-Tools (PDF-Ansichtsmodus) in Emacs?

23

pdf-tools enthält den pdf-view-Modus, der einige Funktionen bietet, die im doc-view-Modus nicht vorhanden sind (siehe Ende der Frage).

Kann der PDF-Ansichtsmodus generell als Ersatz für den Doc-Ansichtsmodus verwendet werden oder muss er "toolweise" sein?

Ist es in beiden Fällen erforderlich, die Emacs-Quelle zu bearbeiten, um PDF-Tools in Gnus, Eww und Orgmode zu verwenden, oder können deren systemweite Einstellungen verwendet werden?

--- Funktionen der PDF-Tools hier für die Bequemlichkeit; Details finden Sie auf der Github-Website ---

  1. Scheint schneller als Doc-View
  2. Die Auflösung ist normalerweise besser, da nicht als PNG gerendert wird
  3. Nette Suche, und kann sogar nach allen Vorkommen einer Phrase suchen
  4. Kann Textanmerkungen und Hervorhebungen, Unterstreichungen und Ähnliches hinzufügen
  5. Kann imenus für pdf Teile verursachen
  6. Kann mehrere PDFs als ein "virtuelles" PDF behandeln
  7. Kann in Latex integriert werden, um die Latexquelle und das PDF nebeneinander anzuzeigen und an den entsprechenden Stellen von einem zum anderen zu springen (z. B. \section{A section}in LaTeX auswählen und diesen Abschnitt als PDF erhalten).
BrittAnderson
quelle
Sehen Sie hier für eine ähnliche Diskussion , die wahrscheinlich die Antwort auf Ihre Fragen enthält.
Tmalsburg
Gnus kann ein Sonderfall sein? Siehe: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z
Möglicherweise müssen Sie Ihre Frage weg von den gefürchteten „Best Practices“ umformulieren, von denen einige Leute annehmen, dass die Antworten in erster Linie auf Meinungen basieren. Ich scheine mich zu erinnern, dass Gnus hier ein Sonderfall ist, und Sie müssen .mailcap die entsprechende Konfiguration hinzufügen. Wenn deine Frage nicht geschlossen ist, bevor ich nach Hause komme, grabe ich meine Konfiguration für dich aus.
Tyler
1
Gnus verwendet mailcap, um herauszufinden, mit welchen Anwendungen Anhänge geöffnet werden sollen. Wenn Sie Emacs zu öffnen PDF - Dateien mit PDF-Tool konfiguriert haben, müssen Sie die Zeile hinzufügen application/pdf; emacsclient %szu .mailcap, und die Emacs edit-Server starten: invoke Emacs als emacs --daemon, oder fügen Sie (server-start)zu Ihrem .emacs.
Tyler
Vielen Dank. Das funktioniert, und danach funktioniert das für org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
BrittAnderson

Antworten:

31

Das Umschalten von docviewauf pdf-toolserfolgt "automatisch" bei der Installation pdf-tools. Sobald Sie dies getan haben, wird jedes Mal, wenn Emacs versucht, ein PDF in Emacs zu öffnen , dieses verwendet pdf-tools. Einige Pakete rufen jedoch das Betriebssystem auf oder verwenden eine andere Konfiguration in Emacs, um zu entscheiden, ob sie Emacs oder ein anderes Programm zum Öffnen eines PDFs verwenden sollen. Daher ist eine Tool-für-Tool-Konfiguration erforderlich, damit alle Emacs-Pakete PDF-Tools verwenden können.

Wenn Sie möchten, dass Ihre PDF-Dateien in der gleichen Emacs-Instanz geöffnet werden, müssen Sie sie im Dämonmodus ausführen (dh mit starten emacs --daemon) oder (server-start)Ihr init aufrufen , emacsclientdamit dies funktioniert.

Org-Mode-Links

Out of the box, org-modekennt sich nicht mit PDF-Tools aus. Sie können jedoch die Unterstützung für das Öffnen von Org-Links zu PDF-Dateien mit org-pdfview hinzufügen , das als Paket auf MELPA verfügbar ist. Sobald es installiert ist, können Sie es mit dem folgenden Code in Ihrem aktivieren .emacs:

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

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

Dadurch wird für das Hinzufügen von Links über ein neuen Abschluss Ziel bieten C-c C-l, pdfview:für das Springen zu bestimmten Seiten mit Unterstützung. Vollständige Links verwenden das Format:

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

Interleave-Modus & PDF-Anmerkungen

Der Interleave-Modus bietet Unterstützung für die Darstellung "Ihrer PDF-Datei neben einem Org-Modus-Puffer mit Ihren Notizen". Dies ist eine Alternative zur Verwendung der in ein PDF eingebetteten Anmerkungen (die Sie mit PDF-Tools ausführen können). Stattdessen erhalten Sie eine Organisationsdatei mit all Ihren Anmerkungen, die auf die Seite im PDF verweist, mit der die Anmerkungen verknüpft sind.

Gnus

Wie ich in meinem Kommentar erwähnt habe, gnusverwendet mailcap, um Anhänge zu öffnen. Um dies zu konfigurieren, benötigen Sie Folgendes in Ihrer .mailcapDatei:

application/pdf; emacsclient %s

EWW

EWW verwendet auch mailcap. Ändern Sie daher Ihre .mailcapDatei wie oben unter Gnus beschrieben.

AucTeX

Für AucTeX gibt es eine Reihe relevanter Optionen:

  • Viewer werden über die Variable angegeben TeX-view-program-selection: Suchen Sie den Eintrag für output-pdfund wählen Sie "PDF Tools" als Wert aus.
  • Um SyncTex nutzen zu können, müssen Sie:
    • set TeX-source-correlate-mode, entweder interaktiv durch Aufrufen dieser Funktion über Mx oder durch permanentes Setzen der Variablen über M-x customize-variable.
    • Stellen Sie sicher, TeX-source-correlate-methodenthält(pdf . synctex)

Wenn dies aktiviert ist, C-c C-gsollte in Ihrer Tex-Quelldatei der entsprechende Abschnitt des PDF- Dokuments angezeigt werden.

ESS

Passen Sie die Variable ess-pdf-viewer-prefan emacsclient.

xdg-open

Unter Linux rufen einige Pakete das externe Programm xdg-openauf, um PDF-Dateien zu öffnen. Dies bestimmt anhand Ihrer systemweiten Einstellungen, welches Programm verwendet werden soll. Dies ist eine systemweite Änderung, daher senden andere Programme PDF-Dokumente an Emacs, wenn Sie dies eingerichtet haben. Wenn Sie dies nicht möchten, z. B. Firefox, möchten Sie diese Änderungen nicht vornehmen.

So legen Sie fest, dass emacsclient pdfs systemweit öffnet xdg-open:

  • erstelle eine Datei ~/.local/share/applications/emacsclient.desktopmit dem Inhalt:

[Desktop Entry]
Name = Emacs-Client
Exec = emacsclient% u
Icon = emacs-icon
Typ = Anwendungsterminal
= false
MimeType = application / pdf;

  • Geben Sie in der Befehlszeile Folgendes ein:

xdg-mime default emacsclient.desktop application/pdf

Sie können testen, ob dies funktioniert hat xdg-open your-document.pdf- es sollte your-document.pdfin Emacs geöffnet werden .

w3m

w3m überprüft zuerst die Variable w3m-doc-view-content-typesund wenn dort "application / pdf" angezeigt wird, wird pdfs in der doc-view geöffnet. Dies ist eine anpassbare Variable. Entfernen Sie daher den Eintrag "application / pdf" über die Anpassungsschnittstelle.

Ohne einen Eintrag in w3m-doc-view-content-typesprüft w3m als nächstes die Variable w3m-content-type-alistauf Einträge, die mit "application / pdf" übereinstimmen. Passen Sie den zu lesenden Eintrag an

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

Sie könnten auch eine Emacs-Funktion (vermutlich find-fileoder ähnlich) anstelle eines externen Aufrufs verwenden emacsclient, aber ich konnte die Syntax dafür nicht herausfinden.

Tyler
quelle
W3M in Emacs verwendet jedoch weiterhin DocView. Irgendwelche Ratschläge, wie man das behebt?
BrittAnderson
Siehe die aktualisierte Antwort
Tyler
Kann ich eine Verknüpfung org-modezu einer bestimmten Anmerkung in der PDF-Datei herstellen?
AlwaysLearning
1
@AlwaysLearning nicht, dass ich mir bewusst bin. Der Interleave-Modus unterstützt das Aufzeichnen von Anmerkungen in einer separaten, verknüpften Datei im Organisationsmodus. Ich werde die Antwort aktualisieren
Tyler