¿Cómo usar las herramientas pdf (pdf-view-mode) en emacs?

23

pdf-tools incluye pdf-view-mode que ofrece varias características que no están presentes en doc-view-mode (ver el final de la pregunta).

¿Puede pdf-view-mode ser usado como un reemplazo para doc-view-mode en general, o tiene que ser "herramienta" por herramienta?

En cualquier caso, ¿es necesario editar la fuente de emacs para usar las herramientas pdf en gnus, eww y orgmode o son sus configuraciones de todo el sistema que pueden emplearse?

--- Características de las herramientas pdf aquí para mayor comodidad; ver el sitio de github para más detalles ---

  1. Parece más rápido que doc-view
  2. Resolución generalmente mejor ya que no se representa como png
  3. Buena búsqueda, e incluso puede buscar todas las apariciones de una frase
  4. Puede agregar anotaciones de texto y resaltar, subrayar y similares
  5. Puede crear imenus para piezas pdf
  6. Puede tratar varios archivos PDF como un solo PDF "virtual"
  7. Puede integrarse con latex para ver la fuente de látex y el pdf uno al lado del otro y saltar de uno a otro en las ubicaciones equivalentes (por ejemplo, seleccione \section{A section}en LaTeX y obtenga esa sección en pdf.
brittAnderson
fuente
Vea aquí una discusión relacionada que probablemente incluye la respuesta a sus preguntas.
Tmalsburg
Gnus puede ser un caso especial? Ver: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z
Es posible que deba reformular su pregunta lejos de las temidas 'mejores prácticas', que algunas personas suponen que las respuestas se basarán principalmente en opiniones. Creo recordar que gnus es un caso especial aquí, y necesitará agregar la configuración adecuada a .mailcap. Si su pregunta no está cerrada antes de llegar a casa, buscaré mi configuración para usted.
Tyler
1
Gnus usa mailcap para descubrir con qué aplicaciones abrir archivos adjuntos. Si tiene Emacs configurado para archivos PDF abiertos con pdf-herramientas, se necesita añadir la línea application/pdf; emacsclient %sa .mailcap, e iniciar el Emacs edit-servidor: invocación de Emacs como emacs --daemon, o añadir (server-start)a su .emacs.
Tyler
Gracias. Eso funciona, y después de eso funciona org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
brittAnderson

Respuestas:

31

El cambio de docviewa pdf-toolsocurre 'automáticamente' cuando realiza la instalación pdf-tools. Una vez que haya hecho esto, cada vez que Emacs intente abrir un pdf en Emacs , lo usará pdf-tools. Sin embargo, algunos paquetes llamarán al sistema operativo, o usarán diferentes configuraciones dentro de Emacs, para decidir si deben usar Emacs u otro programa para abrir un pdf. Por lo tanto, se requiere una configuración 'herramienta por herramienta' para que todos los paquetes de Emacs utilicen las herramientas pdf.

Si desea que sus archivos PDF se abran en la misma instancia de Emacs, debe tenerlo ejecutándose en modo demonio (es decir, iniciarlo con emacs --daemon) o llamar (server-start)a su init para que emacsclientfuncione.

Enlaces de modo de organización

Fuera de la caja, org-modeno sabe sobre herramientas pdf. Sin embargo, puede agregar soporte para abrir enlaces de organización a archivos pdf con org-pdfview , que está disponible como un paquete en MELPA. Una vez que está instalado, puede activarlo con el siguiente código en su .emacs:

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

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

Hacer esto le proporcionará un nuevo objetivo para la finalización de la adición de enlaces a través C-c C-l, pdfview:con el apoyo para saltar a las páginas específicas. Los enlaces completos usan el formato:

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

Modo intercalado y anotaciones PDF

El modo Intercalar proporciona soporte para presentar "su PDF lado a lado con un búfer de modo Org con sus notas". Esta es una alternativa al uso de las anotaciones incrustadas en un pdf (que puede hacer con las herramientas de pdf). En cambio, terminas con un archivo de modo org con todas tus anotaciones, que enlaza con la página en el pdf con la que están asociadas las anotaciones.

Gnus

Como mencioné en mi comentario, gnususa mailcap para abrir archivos adjuntos. Para configurar esto, necesita lo siguiente en su .mailcaparchivo:

application/pdf; emacsclient %s

EWW

EWW también usa mailcap, así que modifique su .mailcaparchivo según Gnus arriba.

AucTeX

Para AucTeX, hay varias opciones relevantes:

  • los espectadores se especifican a través de la variable TeX-view-program-selection: busque la entrada output-pdfy seleccione "Herramientas PDF" para el valor.
  • Para usar SyncTex, necesita:
    • establecer TeX-source-correlate-mode, ya sea interactivamente llamando a esa función a través de Mx, o configurando la variable permanentemente a través de M-x customize-variable.
    • asegúrese de que TeX-source-correlate-methodincluye(pdf . synctex)

Con esto en su lugar, desde su archivo fuente tex C-c C-gdebe mostrar la sección correspondiente del pdf.

ESS

Personaliza la variable ess-pdf-viewer-prefa emacsclient.

xdg-open

En Linux, algunos paquetes llamarán al programa externo xdg-openpara abrir archivos pdf. Esto usará la configuración de todo el sistema para determinar qué programa usar. Este es un cambio en todo el sistema, por lo que otros programas enviarán documentos PDF a Emacs cuando haya configurado esto. Entonces, si no desea, por ejemplo, Firefox, hacer esto, no querrá hacer estos cambios.

Para configurar emacsclient para abrir archivos PDF en todo el sistema a través de xdg-open:

  • crear un archivo ~/.local/share/applications/emacsclient.desktopcon el contenido:

[Entrada de escritorio]
Nombre = Emacs Client
Exec = emacsclient% u
Icon = emacs-icon
Type = Application
Terminal = false
MimeType = application / pdf;

  • desde la línea de comando, emita:

xdg-mime default emacsclient.desktop application/pdf

Puede probar que esto funcionó xdg-open your-document.pdf: debería abrirse your-document.pdfen Emacs.

w3m

w3m primero verifica la variable w3m-doc-view-content-types, y si ve "application / pdf" allí, abrirá pdfs en doc-view. Esta es una variable personalizable, por lo tanto, elimine la entrada "application / pdf" utilizando la interfaz de personalización.

Sin una entrada w3m-doc-view-content-types, w3m luego verifica la variable w3m-content-type-alistpara las entradas que coinciden con "application / pdf". Personaliza la entrada para leer

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

También podría usar una función emacs (presumiblemente find-fileo similar), en lugar de una llamada externa a emacsclient, pero no pude averiguar la sintaxis para eso.

Tyler
fuente
Sin embargo, w3m en emacs todavía usa docview. ¿Algún consejo sobre cómo arreglar eso?
brittAnderson
ver la respuesta actualizada
Tyler
¿Puedo vincular org-modea una anotación particular en el archivo PDF?
Siempre aprendiendo el
1
@AlwaysLearning no es que yo sepa. El modo de intercalación proporciona soporte para grabar anotaciones en un archivo separado, vinculado y en modo org. Actualizaré la respuesta
Tyler