Como usar as ferramentas pdf (modo de visualização pdf) no emacs?

23

O pdf-tools inclui o modo de visualização em pdf, que oferece vários recursos não presentes no modo de visualização em documento (consulte o final da pergunta).

O modo de visualização em pdf pode ser usado como um substituto para o modo de visualização em geral, ou precisa ser "ferramenta" por ferramenta?

Em qualquer um dos casos, é necessário editar o emacs source para usar as ferramentas de pdf nos gnus, eww e orgmode ou suas configurações em todo o sistema podem ser empregadas?

--- Recursos de ferramentas pdf aqui por conveniência; consulte o site do github para obter detalhes ---

  1. Parece mais rápido que o doc-view
  2. Resolução geralmente melhor, pois não é renderizada como png
  3. Boa pesquisa e pode até procurar todas as ocorrências de uma frase
  4. Pode adicionar anotações de texto e realçar, sublinhar e similares
  5. Pode criar imenus para peças em pdf
  6. Pode tratar vários pdfs como um único pdf "virtual"
  7. Pode integrar-se ao látex para ver a fonte do látex e o pdf lado a lado e pular de um para o outro nos locais equivalentes (por exemplo, selecione \section{A section}no LaTeX e obtenha essa seção em pdf.
brittAnderson
fonte
Veja aqui uma discussão relacionada que provavelmente inclui a resposta para suas perguntas.
tmalsburg
Gnus pode ser um caso especial? Veja: lists.gnu.org/archive/html/help-gnu-emacs/2015-02/msg00438.html
Brian Z
Você pode precisar reformular sua pergunta para longe das temidas 'melhores práticas', que algumas pessoas supõem que as respostas serão principalmente baseadas em opiniões. Parece-me que lembro que o gnus é um caso especial aqui, e você precisará adicionar a configuração apropriada ao .mailcap. Se sua pergunta não for encerrada antes de eu chegar em casa, desenterrarei minha configuração para você.
Tyler
1
O Gnus usa o mailcap para descobrir com quais aplicativos abrir anexos. Se você tem Emacs configurado para abrir arquivos PDF com pdf-ferramentas, você precisa adicionar a linha application/pdf; emacsclient %spara .mailcap, e começar a editar-servidor Emacs: invoke Emacs como emacs --daemon, ou adicionar (server-start)aos seus .emacs.
Tyler
Obrigado. Isso funciona, e depois disso funciona org. (set 'org-file-apps '((auto-mode . emacs) ... ("\\.pdf\\'" . default)))
precisa saber é o seguinte

Respostas:

31

Mudar de docviewpara pdf-toolsacontece 'automaticamente' quando você instala pdf-tools. Depois de fazer isso, sempre que o Emacs tentar abrir um pdf no Emacs , ele será usado pdf-tools. No entanto, alguns pacotes chamarão o sistema operacional ou usarão configurações diferentes no Emacs para decidir se devem usar o Emacs ou outro programa para abrir um pdf. Portanto, é necessária alguma configuração 'ferramenta por ferramenta' para que todos os pacotes do Emacs usem ferramentas em pdf.

Se você deseja que seus PDFs sejam abertos na mesma instância do Emacs, é necessário executá-lo no modo daemon (por exemplo, inicie-o emacs --daemon) ou chame (server-start)seu init para que emacsclientfuncione.

Links de modo organizacional

Fora da caixa, org-modenão sabe sobre ferramentas de pdf. No entanto, você pode adicionar suporte para abrir links da organização em arquivos pdf com o org-pdfview , que está disponível como um pacote no MELPA. Depois de instalado, você pode ativá-lo com o seguinte código no seu .emacs:

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

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

Fazendo isso irá fornecer um novo alvo de conclusão para adicionar links via C-c C-l, pdfview:com suporte para saltar para páginas específicas. Os links completos usam o formato:

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

Modo de intercalação e anotações em PDF

O modo Intercalar fornece suporte para apresentar "seu PDF lado a lado com um buffer do modo organizacional com suas anotações". Essa é uma alternativa ao uso das anotações incorporadas em um pdf (o que você pode fazer com as ferramentas em pdf). Em vez disso, você acaba com um arquivo de modo organizacional com todas as suas anotações, que vincula à página no pdf à qual as anotações estão associadas.

Gnus

Como mencionei no meu comentário, gnususa o mailcap para abrir anexos. Para configurar isso, você precisa do seguinte em seu .mailcaparquivo:

application/pdf; emacsclient %s

EWW

O EWW também usa o mailcap, portanto modifique seu .mailcaparquivo conforme o Gnus acima.

AucTeX

Para o AucTeX, existem várias opções relevantes:

  • os espectadores são especificados por meio da variável TeX-view-program-selection: encontre a entrada output-pdfe selecione "Ferramentas PDF" para o valor.
  • Para usar o SyncTex, você precisa:
    • de TeX-source-correlate-modeforma interativa, chamando essa função via Mx ou configurando a variável permanentemente via M-x customize-variable.
    • certifique-se de TeX-source-correlate-methodincluir(pdf . synctex)

Com isso, o arquivo de origem tex C-c C-gdeve exibir a seção correspondente do pdf.

ESS

Customize a variável ess-pdf-viewer-prefpara emacsclient.

xdg-open

No Linux, alguns pacotes chamam o programa externo xdg-openpara abrir arquivos pdf. Isso usará as configurações de todo o sistema para determinar qual programa usar. Essa é uma alteração em todo o sistema; portanto, outros programas enviarão documentos em PDF para o Emacs quando você configurá-lo. Portanto, se você não quiser, por exemplo, o Firefox, fazer isso, não precisará fazer essas alterações.

Para configurar o emacsclient para abrir pdfs em todo o sistema via xdg-open:

  • crie um arquivo ~/.local/share/applications/emacsclient.desktopcom o conteúdo:

[Entrada da área de trabalho]
Nome = Emacs Client
Exec = emacsclient% u
Ícone = emacs-icon
Tipo =
Terminal de aplicativos = false
MimeType = application / pdf;

  • na linha de comando, emita:

xdg-mime default emacsclient.desktop application/pdf

Você pode testar se isso funcionou xdg-open your-document.pdf- ele deve abrir your-document.pdfno Emacs.

w3m

O w3m primeiro verifica a variável w3m-doc-view-content-typese, se vir "application / pdf", abrirá os pdfs na visualização de documentos. Essa é uma variável personalizável; portanto, remova a entrada "application / pdf" usando a interface de personalização.

Sem uma entrada w3m-doc-view-content-types, o w3m verifica a variável em w3m-content-type-alistbusca de entradas que correspondam a "application / pdf". Personalize a entrada para ler

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

Você também pode usar uma função emacs (presumivelmente find-fileou semelhante), em vez de uma chamada externa emacsclient, mas eu não consegui descobrir a sintaxe para isso.

Tyler
fonte
No entanto, o w3m no emacs ainda usa o docview. Algum conselho sobre como consertar esse?
brittAnderson
veja a resposta atualizada
Tyler
Posso vincular org-modea uma anotação específica no arquivo PDF?
AlwaysLearning 14/08
1
@AlwaysLearning, não que eu saiba. O modo Intercalar fornece suporte para gravar anotações em um arquivo separado, vinculado, no modo organizacional. Eu vou atualizar a resposta
Tyler