Comment utiliser les outils pdf (pdf-view-mode) dans emacs?

23

pdf-tools inclut pdf-view-mode qui offre plusieurs fonctionnalités non présentes en doc-view-mode (voir fin de la question).

Le mode pdf-view peut-il être utilisé en remplacement du mode doc-view en général, ou doit-il être "outil" par outil?

Dans les deux cas, est-il nécessaire de modifier la source emacs pour utiliser les outils pdf dans gnus, eww et orgmode ou leurs paramètres à l'échelle du système peuvent-ils être utilisés?

--- Caractéristiques des outils pdf ici pour plus de commodité; voir le site github pour plus de détails ---

  1. Semble plus rapide que doc-view
  2. Résolution généralement meilleure car n'étant pas rendue au format png
  3. Belle recherche, et peut même rechercher toutes les occurrences d'une phrase
  4. Peut ajouter des annotations de texte et mettre en surbrillance, souligner et similaires
  5. Peut créer des imenus pour les pièces pdf
  6. Peut traiter plusieurs fichiers PDF comme un seul pdf "virtuel"
  7. Peut s'intégrer au latex pour voir la source de latex et le pdf côte à côte et passer de l'un à l'autre aux emplacements équivalents (par exemple, sélectionnez \section{A section}dans LaTeX et obtenez cette section en pdf.
brittAnderson
la source
Voir ici pour une discussion connexe qui comprend probablement la réponse à vos questions.
tmalsburg
Gnus peut être un cas spécial? Voir: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z
Vous devrez peut-être reformuler votre question loin des «meilleures pratiques» redoutées, dont certains supposent que les réponses seront principalement basées sur l'opinion. Il me semble que gnus est un cas particulier ici, et vous devrez ajouter la configuration appropriée à .mailcap. Si votre question n'est pas close avant mon retour, je déterrerai ma configuration pour vous.
Tyler
1
Gnus utilise mailcap pour déterminer avec quelles applications ouvrir les pièces jointes. Si Emacs est configuré pour ouvrir des fichiers pdf avec des outils pdf, vous devez ajouter la ligne application/pdf; emacsclient %sà .mailcapet démarrer le serveur d'édition Emacs: invoquer Emacs en tant que emacs --daemon, ou ajouter (server-start)à votre .emacs.
Tyler
Merci. Cela fonctionne, et après cela, cela fonctionne org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson

Réponses:

31

Le passage de docviewà pdf-toolsse produit «automatiquement» lors de l'installation pdf-tools. Une fois que vous avez fait cela, chaque fois qu'Emacs essaie d'ouvrir un PDF dans Emacs , il l'utilisera pdf-tools. Cependant, certains packages appellent le système d'exploitation ou utilisent une configuration différente dans Emacs pour décider s'ils doivent utiliser Emacs ou un autre programme pour ouvrir un fichier PDF. Il y a donc une configuration «outil par outil» requise pour que tous les packages Emacs utilisent les outils PDF.

Si vous voulez que vos fichiers PDF soient ouverts dans la même instance d'Emacs, vous devez le faire fonctionner en mode démon (c'est-à-dire le démarrer avec emacs --daemon), ou appeler (server-start)votre init pour que emacsclientcela fonctionne.

Liens en mode organisationnel

Hors de la boîte, org-modene connaît pas les outils pdf. Cependant, vous pouvez ajouter la prise en charge de l'ouverture de liens organisationnels vers des fichiers pdf avec org-pdfview , qui est disponible sous forme de package sur MELPA. Une fois installé, vous pouvez l'activer avec le code suivant dans votre .emacs:

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

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

Faire cela fournira un nouvel objectif d'achèvement pour ajouter des liens via C-c C-l, pdfview:avec le soutien pour le saut à des pages spécifiques. Les liens complets utilisent le format:

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

Mode entrelacement et annotations PDF

Le mode entrelacement permet de présenter "votre PDF côte à côte avec un tampon en mode organisation avec vos notes". C'est une alternative à l'utilisation des annotations intégrées dans un pdf (ce que vous pouvez faire avec des outils pdf). Au lieu de cela, vous vous retrouvez avec un fichier en mode organisation avec toutes vos annotations, qui renvoie à la page du pdf à laquelle les annotations sont associées.

Gnus

Comme je l'ai mentionné dans mon commentaire, gnusutilise mailcap pour ouvrir les pièces jointes. Pour configurer cela, vous avez besoin des éléments suivants dans votre .mailcapfichier:

application/pdf; emacsclient %s

EWW

EWW utilise également mailcap, alors modifiez votre .mailcapfichier selon Gnus ci-dessus.

AucTeX

Pour AucTeX, il existe un certain nombre d'options pertinentes:

  • les téléspectateurs sont spécifiés via la variable TeX-view-program-selection: recherchez l'entrée output-pdfet sélectionnez "Outils PDF" pour la valeur.
  • pour utiliser SyncTex, vous devez:
    • définir TeX-source-correlate-mode, soit de manière interactive en appelant cette fonction via Mx, soit en définissant la variable de façon permanente via M-x customize-variable.
    • assurez-vous que TeX-source-correlate-methodcomprend(pdf . synctex)

Avec cela en place, à partir de votre fichier source tex C-c C-gdevrait afficher la section correspondante du pdf.

ESS

Personnalisez la variable ess-pdf-viewer-prefen emacsclient.

xdg-open

Sous Linux, certains packages appellent le programme externe xdg-openpour ouvrir des fichiers pdf. Cela utilisera vos paramètres à l'échelle du système pour déterminer le programme à utiliser. Il s'agit d'un changement à l'échelle du système, donc d'autres programmes enverront des documents PDF à Emacs lorsque vous aurez configuré cela. Donc, si vous ne voulez pas, par exemple, Firefox, faire cela, vous ne voudrez pas faire ces changements.

Pour définir emacsclient pour ouvrir les fichiers PDF à l'échelle du système via xdg-open:

  • créer un fichier ~/.local/share/applications/emacsclient.desktopavec le contenu:

[Entrée de bureau]
Nom = Emacs Client
Exec = emacsclient% u
Icône = emacs-icon
Type =
Terminal d' application = faux
MimeType = application / pdf;

  • depuis la ligne de commande, lancez:

xdg-mime default emacsclient.desktop application/pdf

Vous pouvez tester que cela a fonctionné xdg-open your-document.pdf- il devrait s'ouvrir your-document.pdfdans Emacs.

w3m

w3m vérifie d'abord la variable w3m-doc-view-content-types, et s'il y voit "application / pdf", il ouvrira les fichiers PDF dans doc-view. Il s'agit d'une variable personnalisable, supprimez donc l'entrée "application / pdf" à l'aide de l'interface de personnalisation.

Sans entrée w3m-doc-view-content-types, w3m vérifie ensuite dans la variable les w3m-content-type-alistentrées qui correspondent à "application / pdf". Personnalisez l'entrée à lire

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

Vous pouvez également utiliser une fonction emacs (vraisemblablement find-fileou similaire), plutôt qu'un appel externe à emacsclient, mais je n'ai pas pu comprendre la syntaxe pour cela.

Tyler
la source
Cependant, w3m dans emacs utilise toujours docview. Un conseil pour résoudre ce problème?
brittAnderson
voir la réponse mise à jour
Tyler
Puis-je lier de org-modeà une annotation particulière dans le fichier PDF?
AlwaysLearning
1
@AlwaysLearning pas que je sache. Le mode Interleave prend en charge l'enregistrement d'annotations dans un fichier org-mode séparé et lié. Je mettrai à jour la réponse
Tyler