¿Es posible hacer que okular no parpadee al volver a cargar un archivo?

11

Cuando escribo un documento TeX, utilizo una configuración para recompilar automáticamente mis archivos * .tex en un pdf tan pronto como cambie un archivo fuente (usando latexmk). Así que puse un terminal con nvim en un lado de la pantalla y okular con la salida de pdf en el otro lado de la pantalla.

Lo molesto es que Okular parpadea / parpadea cada vez que se actualiza el pdf. Esto es especialmente notable cuando tengo glosarios + referencias + índice. Okular parpadeará de 3 a 5 veces dependiendo de lo que haya cambiado en la fuente * .tex, y esto realmente me distrae. ¿Hay alguna forma de deshabilitar este comportamiento intermitente?

Sam De Meyer
fuente
3
Configuración -> Configurar Okular -> General -> Características del programa -> desmarque "Volver a cargar el documento al cambiar el archivo". Luego presione F5 para volver a cargar pdf solo si lo desea.
林果 皞
Bueno, esto resuelve el problema de flasheo pero introduce un nuevo problema, ahora tengo que presionar F5 cada vez que quiero ver una actualización. Esperaba que hubiera alguna forma de volver a cargar automáticamente el archivo sin el flash de distracción, pero tal vez esto no sea posible con okular. De todos modos, gracias por una solución temporal.
Sam De Meyer
1
El archivo se actualiza varias veces durante el proceso de compilación. Cada vez que el archivo se actualiza, Okular lo actualiza. Okular no parece tener la opción "si se actualiza, espere N segundos para ver si se actualiza nuevamente antes de actualizar".
Andy Dalton el
Incluso esto se preguntó hace un tiempo, quería señalar, evince se comporta tal vez más como lo que quieres. Si mientras tanto encuentras otra buena solución, avísanos. Tengo exactamente el mismo problema ... (y no puedo usar evince, ya que tiene problemas con el reenvío x)
Exocom

Respuestas:

2

De acuerdo, jugué un poco más y se me ocurrió una solución, aunque una solución bastante hacky.

Primer intento - pdf_update_command + Okular

Esto no funciona por completo, ya que siempre saltará al comienzo del archivo, después de volver a cargarlo. En aras de la exhaustividad, lo agrego de todos modos.

En Okular, apague la recarga automática mediante "Configuración" -> "Configurar Okular" -> Apague "Recargar documento y cambio de archivo".

Cambie el archivo .latexmkrc a:

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

Esto le dice a latexmk que debe ejecutar el comando pdf_update_command una vez que haya terminado de actualizar el archivo pdf. Lo que funciona, el documento en Okular está visible todo el tiempo durante la compilación y se vuelve a cargar al finalizar. Desafortunadamente, cuando se ejecuta el comando de actualización, saltará al comienzo del documento. Eso no es lo que quiero.

Segundo intento: pdf_update_command + cp

Como el intento anterior no funcionó, ahora voy con una solución más pirateada. Para esto, la recarga de documentos debe activarse en Okular.

El .latexmkrc debería verse así:

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

Esto copia el archivo de documento real en una ubicación de vista previa. Por lo tanto, Okular debe abrirse para este archivo de vista previa (y para el otro archivo debe cerrarlo manualmente). Esto seguramente no es ideal, pero hace lo que quiero:

  1. Actualización del archivo pdf en segundo plano
  2. Actualización solo cuando el archivo está listo
  3. Funciona a través de ssh

Actualización (gracias a Sam De Meyer):

Si no desea que se inicie la vista previa, deje vacío el $ pdf_previewer:

$pdf_previewer = ''

Si, por otro lado, prefiere cerrar una ventana que abrir una, es posible especificar 'doc_preview.pdf' junto con el pdf original. No he encontrado una manera de abrir solo el segundo archivo pdf:

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

PD: esto funciona con cualquier editor que vuelva a cargar archivos automáticamente, como por ejemplo evince.

Exocom
fuente
1
Hola, el truco 'cp' podría funcionar. ¿Realmente necesita hacer 'iniciar okular' en el 'previsualizador de pdf'? ¿Tal vez puede dejarlo vacío o especificar un comando que no hace nada? Entonces todo lo que tiene que hacer es abrir okular en la copia la primera vez que compila. ¿No resolvería eso el problema?
Sam De Meyer
Sí, dejarlo vacío hace el truco de no iniciar el okular. Gracias. Actualizará la respuesta (también con una adición que inicia la vista previa de ambos archivos). Todo el asunto, que la actualización de un archivo solo aparece después de que finaliza la compilación ayuda mucho. Solo estoy escribiendo una tesis más grande, donde esto es realmente útil.
Exocom el