É possível fazer o okular não piscar ao recarregar um arquivo?

11

Ao escrever um documento TeX, uso uma configuração para recompilar automaticamente meus arquivos * .tex em um pdf assim que um arquivo de origem é alterado (usando o latexmk). Então eu coloquei um terminal com o nvim em um lado da tela e okular com a saída em pdf do outro lado da tela.

O irritante é que o okular pisca / pisca toda vez que o pdf é atualizado. Isso é especialmente perceptível quando tenho glossários + referências + índice. O Okular piscará de 3 a 5 vezes, dependendo do que mudou na fonte * .tex, e acho isso realmente perturbador. Existe alguma maneira de desativar esse comportamento intermitente?

Sam De Meyer
fonte
3
Configurações -> Configurar Okular -> Geral -> Recursos do programa -> desmarque "Recarregar documento na alteração de arquivo". Em seguida, pressione F5 para recarregar o pdf apenas se desejado.
林果皞
Bem, isso resolve o problema de piscar, mas apresenta um novo problema, agora tenho que pressionar F5 toda vez que quero ver uma atualização. Eu esperava que houvesse alguma maneira de recarregar automaticamente o arquivo sem o flash perturbador, mas talvez isso não seja possível com o okular. Enfim, thx para solução temporária.
Sam De Meyer
1
O arquivo é atualizado várias vezes durante o processo de compilação. Sempre que o arquivo é atualizado, o Okular o atualiza. O Okular parece não ter uma opção "se for atualizada, aguarde N segundos para ver se é atualizada novamente antes de atualizar".
Andy Dalton
Mesmo isso foi perguntado há um tempo atrás, eu gostaria de salientar, evince se comporta talvez mais como o que você deseja. Se você encontrou outra boa solução, informe-nos. Eu tenho exatamente o mesmo problema ... (e não pode usar o Evince, já que tem problemas com x-forwarding)
Exocom

Respostas:

2

Ok, eu brinquei um pouco mais e criei uma solução, embora uma solução bastante hacky.

Primeira tentativa - pdf_update_command + Okular

Isso não funciona completamente, pois sempre salta para o início do arquivo, após o recarregamento. Por uma questão de integridade, eu adiciono de qualquer maneira.

No Okular, desative o recarregamento automático em "Configurações" -> "Configurar o Okular" -> Desative "Recarregar documento e alteração de arquivo".

Altere o arquivo .latexmkrc para:

$pdf_previewer = 'start okular --uniuqe %S';
$pdf_update_method = 4;
$pdf_update_command = 'okular --unique %S';

Isso indica ao latexmk que ele deve executar o comando pdf_update_comm após concluir a atualização do arquivo pdf. O que funciona, o documento no Okular fica visível o tempo todo durante a compilação e é recarregado após a conclusão. Infelizmente, quando o comando update for executado, você pulará para o início do documento. Não é isso que eu quero.

Segunda tentativa - pdf_update_command + cp

Como a tentativa anterior não deu certo, agora vou com uma solução mais hackeada. Para isso, o recarregamento de documentos deve estar ativado no Okular.

O .latexmkrc deve ficar assim:

$pdf_previewer = 'start okular';
$pdf_update_method = 4;
$pdf_update_command = 'cp ~/path/to/doc.pdf ~/path/to/doc_preview.pdf';

Isso copia o arquivo de documento real para um local de visualização. Portanto, o Okular precisa ser aberto para este arquivo de visualização (e para o outro arquivo, você deve fechá-lo manualmente). Certamente isso não é o ideal, mas faz o que eu quero:

  1. Atualizando o arquivo pdf em segundo plano
  2. Atualizando apenas quando o arquivo estiver pronto
  3. Funciona no ssh

Atualização (graças a Sam De Meyer):

Se você não deseja que o visualizador inicie, deixe o $ pdf_previewer vazio:

$pdf_previewer = ''

Por outro lado, se você preferir fechar uma janela do que abrir uma, é possível especificar o 'doc_preview.pdf' junto com o pdf original. Não encontrei uma maneira de abrir apenas o segundo arquivo pdf:

$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'

PS: Funciona com qualquer editor que recarrega automaticamente os arquivos, como por exemplo.

Exocom
fonte
1
Olá, o truque 'cp' pode funcionar. Você realmente precisa 'start okular' no 'visualizador de pdf'. Talvez você possa simplesmente deixá-lo vazio ou especificar um comando que não faz nada? Então tudo que você precisa fazer é abrir o okular na cópia na primeira vez que você compilar. Isso não resolveria o problema?
Sam De Meyer
Sim, deixá-lo vazio faz o truque de não iniciar o okular. Obrigado. Atualiza a resposta (bem como uma adição que inicia o visualizador para os dois arquivos). O fato é que a atualização de um arquivo só aparece após a conclusão da compilação ajuda bastante. Estou apenas escrevendo uma tese maior, na qual isso é realmente útil.
Exocom