Come usare gli strumenti pdf (pdf-view-mode) in emacs?


23

pdf-tools include pdf-view-mode che offre diverse funzionalità non presenti in doc-view-mode (vedi fine della domanda).

PDF-view-mode può essere utilizzato in sostituzione di doc-view-mode in generale, o deve essere "strumento" per strumento?

In entrambi i casi, è necessario modificare emacs source per usare pdf-tools in gnus, eww e orgmode o sono le loro impostazioni a livello di sistema che possono essere impiegate?

--- Funzionalità degli strumenti pdf qui per comodità; vedi il sito github per i dettagli ---

  1. Sembra più veloce di doc-view
  2. Di solito la risoluzione è migliore poiché non viene visualizzata come png
  3. Bella ricerca, e può anche cercare tutte le occorrenze di una frase
  4. Può aggiungere annotazioni di testo ed evidenziazione, sottolineatura e simili
  5. Può creare imenus per parti pdf
  6. Può trattare diversi pdf come un unico pdf "virtuale"
  7. Può integrarsi con il lattice per vedere la sorgente del lattice e il pdf fianco a fianco e saltare l'uno dall'altro in posizioni equivalenti (ad esempio, selezionare \section{A section}in LaTeX e ottenere quella sezione in pdf.

Vedi qui per una discussione correlata che probabilmente include la risposta alle tue domande.
tmalsburg,


Potrebbe essere necessario riformulare la tua domanda lontano dalle temute "migliori pratiche", che alcuni ritengono che le risposte saranno principalmente basate sull'opinione pubblica. Mi sembra di ricordare che gnus è un caso speciale qui e dovrai aggiungere una configurazione appropriata a .mailcap. Se la tua domanda non viene chiusa prima che torni a casa, prenderò la mia configurazione per te.
Tyler,

1
Gnus usa mailcap per capire con quali applicazioni aprire gli allegati. Se si dispone di Emacs configurato per aprire i file PDF con PDF-Tools, è necessario aggiungere la riga application/pdf; emacsclient %sa .mailcap, e avviare l'edit-server di Emacs: Emacs invoke come emacs --daemon, o aggiungere (server-start)al tuo .emacs.
Tyler,

Grazie. Funziona e dopo funziona per org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson il

Risposte:


31

Il passaggio da docviewa pdf-toolsavviene 'automaticamente' durante l'installazione pdf-tools. Una volta fatto questo, ogni volta che Emacs tenta di aprire un pdf in Emacs , lo utilizzerà pdf-tools. Tuttavia, alcuni pacchetti chiameranno il sistema operativo, o useranno diverse configurazioni all'interno di Emacs, per decidere se usare Emacs o un altro programma per aprire un pdf. Quindi è necessaria una configurazione "strumento per strumento" per far sì che tutti i pacchetti Emacs utilizzino gli strumenti pdf.

Se vuoi che i tuoi pdf siano aperti nella stessa istanza di Emacs, devi averlo in esecuzione in modalità demone (cioè, avviarlo con emacs --daemon), o chiamare il (server-start)tuo init in modo che emacsclientfunzioni.

Collegamenti in modalità Org

All'improvviso, org-modenon conosce gli strumenti pdf. Tuttavia, è possibile aggiungere supporto per l'apertura di collegamenti organizzativi ai file pdf con org-pdfview , disponibile come pacchetto su MELPA. Una volta installato, puoi attivarlo con il seguente codice nel tuo .emacs:

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

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

In questo modo si fornirà un nuovo obiettivo di completamento per l'aggiunta di collegamenti via C-c C-l, pdfview:con il supporto per il salto a pagine specifiche. I collegamenti completi utilizzano il formato:

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

Modalità Interleave e annotazioni PDF

La modalità Interleave fornisce supporto per presentare "i tuoi PDF fianco a fianco con un buffer in modalità Org con le tue note". Questa è un'alternativa all'utilizzo delle annotazioni incorporate in un pdf (cosa che puoi fare con gli strumenti pdf). Invece, si finisce con un file in modalità org con tutte le annotazioni, che si collega alla pagina nel pdf a cui sono associate le annotazioni.

gnu

Come ho già detto nel mio commento, gnusutilizza mailcap per aprire gli allegati. Per configurarlo, è necessario quanto segue nel .mailcapfile:

application/pdf; emacsclient %s

EWW

EWW usa anche mailcap, quindi modifica il tuo .mailcapfile secondo Gnus sopra.

AucTeX

Per AucTeX, ci sono una serie di opzioni pertinenti:

  • i visualizzatori vengono specificati tramite la variabile TeX-view-program-selection: trova la voce per output-pdfe seleziona "Strumenti PDF" per il valore.
  • per usare SyncTex, devi:
    • impostare TeX-source-correlate-mode, in modo interattivo chiamando tale funzione tramite Mx o impostando la variabile in modo permanente tramite M-x customize-variable.
    • assicurati di TeX-source-correlate-methodincludere(pdf . synctex)

Con questo in atto, dal tuo file sorgente tex C-c C-gdovrebbe visualizzare la sezione corrispondente del pdf.

ESS

Personalizza la variabile ess-pdf-viewer-prefin emacsclient.

xdg-open

Su Linux, alcuni pacchetti chiameranno il programma esterno xdg-openper aprire i file pdf. Questo utilizzerà le impostazioni a livello di sistema per determinare quale programma utilizzare. Questa è una modifica a livello di sistema, quindi altri programmi invieranno documenti pdf a Emacs quando lo avrai impostato. Quindi, se non vuoi, ad esempio Firefox, fare questo, non vorrai apportare queste modifiche.

Per impostare emacsclient per aprire i pdf a livello di sistema tramite xdg-open:

  • crea un file ~/.local/share/applications/emacsclient.desktopcon il contenuto:

[Voce desktop]
Nome = Emacs Client
Exec = emacsclient% u
Icona = emacs-icon
Tipo =
Terminale applicazione = falso
MimeType = applicazione / pdf;

  • dalla riga di comando, emettere:

xdg-mime default emacsclient.desktop application/pdf

Puoi provare che ha funzionato xdg-open your-document.pdf: dovrebbe aprirsi your-document.pdfin Emacs.

w3m

w3m controlla prima la variabile w3m-doc-view-content-typese se vede "application / pdf" lì, aprirà i pdf in doc-view. Questa è una variabile personalizzabile, quindi rimuovere la voce "application / pdf" utilizzando l'interfaccia di personalizzazione.

Senza una voce in w3m-doc-view-content-types, w3m controlla successivamente la variabile w3m-content-type-alistper le voci che corrispondono a "application / pdf". Personalizza la voce da leggere

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

Potresti anche usare una funzione emacs (presumibilmente find-fileo simile), piuttosto che una chiamata esterna emacsclient, ma non sono riuscito a capire la sintassi per quello.


Comunque w3m in emacs usa ancora docview. Qualche consiglio su come risolvere quello?
brittAnderson l'

vedere la risposta aggiornata
Tyler

Posso collegarmi org-modea una particolare annotazione nel file PDF?
Impara sempre il

1
@AlwaysLearning non di cui sono a conoscenza. La modalità Interleave fornisce supporto per la registrazione di annotazioni in un file separato, collegato, in modalità org. Aggiornerò la risposta
Tyler
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.