O Emacs ficou congelado ao abrir arquivo pdf

10

Quando abro o pdf com o emacs, ele ficou congelado. E eu instalei o pdf-tools, o pdf aberto, ficou congelado novamente.

Qual é o processo sublinhado quando o emacs abre um pdf? Existe muito trabalho de conversão? O que devo fazer para acelerar?

  • Emacs 24.4
  • Ubuntu 14.04 LTS
  • Intel 2.4GHz x 2
  • 4G RAM.

Atualização :

Eu só encontrei essa página:

"aprendi uma lição. Nunca abra um pdf no emacs. Nunca o faça acidentalmente."

https://twitter.com/ergoemacs/status/456088661059457024

É uma notícia triste para mim! Não é uma boa ideia visualizar pdf usando o Emacs?

Atualização 2

Eu pensei que era porque o meu arquivo pdf é muito grande:

5.7M, 1313 pages

Então, eu tentei um pequeno arquivo pdf,

402K, 66 pages

ficou congelado novamente.

Atualização 3

Abro o arquivo pdf usando C-c C-xfrom helme ele abre o arquivo pdf em um visualizador externo: zathura . Como não há processo de conversão, o arquivo abre a iluminação rapidamente. (Tão rápido quanto mupdf. Acho que o Zathura usa o mupdf como back-end.)

Há quatro pontos que tornam o zathura excelente:

  1. Iluminação rápida. (Abrir e pesquisar)
  2. Visor de alta qualidade.
  3. Tab exibe o menu de capítulo / seção como o Adobe Reader.
  4. Bom suporte para atalhos de teclado. (Na verdade, ele usa teclas de atalho no estilo vim, que fazem sentido, pois não há necessidade de alternar o modo no visualizador de pdf.

Atualização 4

Captura de tela para comparação de qualidade:

! Esquerda: Zathura; Direita: PDF no Emacs

Eu realmente fiquei confuso com o que o Emacs usa para abrir PDF. (Eu já removi o pdf-tools)

usuario
fonte
Você não quer nos contar mais sobre a sua configuração do Emacs relacionada a arquivos pdf?
Nsukami _
@Nsukami_ Obrigado por perguntar. Na verdade, não tenho nada relacionado ao arquivo pdf na minha configuração. 1. Abro o pdf com a instalação padrão. 2. Ferramentas pdf instaladas, abra o pdf.
Nick
Você pode usar o Emacs como um leitor de PDF . Agora eu uso o Emacs para ler PDF exclusivamente. Eu também uso o Ubuntu. Mas qual é o tamanho do seu arquivo PDF?
Tu Do
4
Claramente, é hora de emacs -Qnovamente.
wasamasa
2
Para instalar pdf-tools, você deve clonar o repositório, executar ./autogen.she seguir o procedimento padrão: ./configure&& make&& sudo make install. Em seguida, ele produzirá um pdf-tools.tar.gzno diretório pdf-tools que você clonou. Em seguida, coloque (pdf-tools-install)em algum lugar no seu arquivo init. A partir de agora, o Emacs usará o pdf-view-mdoeque oferece melhor qualidade e melhor velocidade de renderização.
Tu Do

Respostas:

12

Você deve desativar linum-modeao abrir um arquivo PDF. Caso contrário, ele travará o seu Emacs. ou seja, adicione-o apenas prog-modepara editar texto:

(add-hook 'prog-mode-hook 'linum-on)

Para instalar pdf-tools:

  • Você precisa clonar o repositório :

    git clone https://github.com/politza/pdf-tools.git

  • cd pdf-tools

  • Corra make.

  • Então, ele produzirá um pdf-tools-${VERSION}.tarno pdf-toolsdiretório que você clonou; no Emacs,M-x package-install-file RET pdf-tools-${VERSION}.tar RET

  • Em seguida, coloque (pdf-tools-install)em algum lugar no seu arquivo init. A partir de agora, o Emacs usará o pdf-view-modeque oferece melhor qualidade e melhor velocidade de renderização.

Aqui está uma demonstração usando ferramentas pdf . O arquivo PDF tem 28 MB e demorou alguns segundos para abrir. Observe que a qualidade das imagens no gif é um pouco menor em comparação com a fonte real, mas como você pode ver, o texto é nítido. Não gravei a tela inteira para reduzir o tamanho do gif, porque ele já tem 13 MB.

Eu uso Isearch simples usando C-scomo em outros buffers para pesquisa. Não pressione muito rápido, deixe um atraso de cerca de 1 segundo entre as pesquisas. Você deve usar o Isearch para pesquisar na página atual ou nas páginas próximas, basicamente algo pequeno. Para pesquisar o documento inteiro, use pdf-occur; o comando é bastante rápido. Convém manter os resultados da pesquisa para uso posterior (na mesma sessão) renomeando o *PDF-Occur*buffer padrão de ocorrência para outro nome para evitar que ele seja substituído por pesquisas futuras.

Se você desejar o índice, no buffer PDF, pressione opara abri-lo outline-mode.

Tu Do
fonte
Dicas de chapéu para este ótimo pacote (e resposta). A diferença é enorme se você a comparar com o visualizador padrão.
KookieMonster
(add-hook 'prog-mode-hook 'linum-on)deve estar (add-hook 'prog-mode-hook 'linum-mode)em 24.5.1.
Yang
4

Estou usando o Emacs para ler documentação, artigos científicos e livros - tudo isso sem problemas .

Meu modo de exibição de documento usa mudraw (do mupdf ) para renderizar PDFs, como você pode ver, verificando a variável doc-view-pdfdraw-program :

O doc-view-pdfdraw-program é uma variável definida em `doc-view.el '. Seu valor é "mudraw" Documentação: Nome do programa MuPDF para converter arquivos PDF em PNG. Essa variável foi introduzida ou seu valor padrão foi alterado na versão 24.4 do Emacs.

Por padrão, o modo doc-view usa gs do ghotscript para renderização, o que pode ser lento em comparação. Você pode ler sobre a mudança do gs do ghostscript para o mudraw do mupdf:

Desde então, testei esse patch e nunca olhei para trás desde que o switch acelerou a conversão de pdf-> png por um fator de dois e trouxe anti-aliasing com ele.

Na sua situação:

  1. instale o mupdf e abra o PDF em uma sessão do emacs sem a sua configuração, por exemplo:

    env HOME=/tmp emacs -Q
    

    e verifique se doc-view-pdfdraw-program está definido corretamente como mudraw .

  2. informe se acima melhorou sua situação.

PS Não tenho experiência com ferramentas de pdf .

kmicu
fonte
Eu tenho o mupdf instalado, e é surpreendentemente rápido. Eu corro env HOME = / tmp emacs -Q, o emacs sais "ainda está convertendo ..." e leva um tempo para converter. A velocidade é boa, mas a qualidade é ruim. Para minha surpresa, não há variável chamada doc-view-pdfdraw-program. Se o Emacs puder usar o mupdf, isso seria realmente fantástico!
Nick
Você tem certeza de que está usando o 24.4? O doc-view-pdfdraw-program deve estar disponível nesse caso. O mudraw está disponível no seu shell?
kmicu
Sim, estou executando o Emacs 24.4. This is GNU Emacs 24.4.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8) mudrawnão está disponível, então eu instalei. (o pacote mupdf-tools), portanto, posso executar o mudraw no shell. A velocidade de conversão é ainda mais lenta e a qualidade de exibição do pdf ainda é baixa.
Nick
"Para minha surpresa, não há variável chamada doc-view-pdfdraw-program." sem saber o que está definido nessa variável, não podemos ter certeza se você realmente está usando o mudraw no modo de exibição de documento, talvez ainda seja gs . "a qualidade da exibição do pdf ainda é ruim" é uma afirmação relativa e subjetiva - você pode atualizar sua pergunta com algumas capturas de tela? Para mim, o Zathura (com backend mupdf) tem exatamente a mesma qualidade e velocidade de renderização de PDF do Emacs.
kmicu
11
Para obter essa variável, você tem que carregá-lo: (require 'doc-view). Eu acho que mudrawé o padrão e o problema é que doc-viewnão pode caber toda a página PDF no buffer inteiro. E não tenho certeza da qualidade.
Tu Do