Est-il possible de faire okular ne pas clignoter lors du rechargement d'un fichier?

11

Lorsque j'écris un document TeX, j'utilise une configuration pour recompiler automatiquement mes fichiers * .tex dans un pdf dès qu'un fichier source change (en utilisant latexmk). J'ai donc mis un terminal avec nvim sur un côté de l'écran et okular avec la sortie pdf de l'autre côté de l'écran.

Ce qui est ennuyeux, c'est que okular clignote / clignote chaque fois que le pdf est mis à jour. Cela est particulièrement visible lorsque j'ai des glossaires + références + index. Okular clignotera ensuite 3 à 5 fois en fonction de ce qui a changé dans la source * .tex, et je trouve cela vraiment gênant. Existe-t-il un moyen de désactiver ce comportement de clignotement?

Sam De Meyer
la source
3
Paramètres -> Configurer Okular -> Général -> Caractéristiques du programme -> décochez "Recharger le document lors du changement de fichier". Appuyez ensuite sur F5 pour recharger le pdf uniquement si vous le souhaitez.
林果 皞
Eh bien, cela résout le problème de clignotement mais introduit un nouveau problème, maintenant je dois appuyer sur F5 chaque fois que je veux voir une mise à jour. J'espérais qu'il y avait un moyen de recharger automatiquement le fichier sans le flash gênant, mais ce n'est peut-être pas possible avec okular. Quoi qu'il en soit, merci pour une solution temporaire.
Sam De Meyer
1
Le fichier est mis à jour plusieurs fois au cours du processus de génération. Chaque fois que le fichier est mis à jour, Okular le rafraîchit. Okular ne semble pas avoir une option "s'il se met à jour, attendez N secondes pour voir s'il se met à jour avant de rafraîchir".
Andy Dalton
Même cela a été demandé il y a un certain temps, je tenais à le souligner, car se comporte peut-être plus comme ce que vous voulez. Si vous avez trouvé une autre bonne solution entre-temps, faites-le nous savoir. J'ai exactement le même problème ... (et je ne peux pas utiliser evince, car il a des problèmes avec x-forwarding)
Exocom

Réponses:

2

D'accord, j'ai joué un peu plus et j'ai trouvé une solution, bien qu'une solution plutôt hacky.

Première tentative - pdf_update_command + Okular

Cela ne fonctionne pas complètement, car il sautera toujours au début du fichier, après le rechargement. Par souci d'exhaustivité, je l'ajoute quand même.

Dans Okular, désactivez le rechargement automatique par "Paramètres" -> "Configurer Okular" -> Désactivez "Recharger le document et le changement de fichier".

Modifiez le fichier .latexmkrc en:

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

Cela indique à latexmk qu'il doit exécuter la commande pdf_update_command après avoir terminé la mise à jour du fichier pdf. Ce qui fonctionne, le document dans Okular est visible tout le temps pendant la compilation et est rechargé à la fin. Malheureusement, lorsque la commande de mise à jour est exécutée, vous passerez au début du document. Ce n'est pas ce que je veux.

Deuxième tentative - pdf_update_command + cp

Comme la tentative précédente n'a pas fonctionné, je vais maintenant avec une solution plus piratée. Pour cela, le rechargement du document doit être activé dans Okular.

Le .latexmkrc devrait ressembler à ceci:

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

Cela copie le fichier de document réel vers un emplacement d'aperçu. Okular doit donc être ouvert pour ce fichier d'aperçu (et pour l'autre fichier, vous devez le fermer manuellement). Ce n'est certainement pas idéal, mais il fait ce que je veux:

  1. Mise à jour du fichier pdf en arrière-plan
  2. Mise à jour uniquement lorsque le fichier est prêt
  3. Fonctionne sur ssh

Mise à jour (merci à Sam De Meyer):

Si vous ne voulez pas que l'aperçu démarre, laissez le $ pdf_previewer vide:

$pdf_previewer = ''

Si vous préférez, par contre, fermer une fenêtre plutôt que l’ouvrir, il est possible de spécifier le «doc_preview.pdf» avec le pdf original. Je n'ai pas trouvé de moyen, d' ouvrir uniquement le deuxième fichier pdf:

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

PS: Cela fonctionne avec n'importe quel éditeur qui recharge automatiquement les fichiers, comme par exemple.

Exocom
la source
1
Salut, l'astuce «cp» pourrait fonctionner. Avez-vous réellement besoin de faire "démarrer okular" dans "l'aperçu PDF". Peut-être pouvez-vous simplement le laisser vide ou spécifier une commande qui ne fait rien? Il vous suffit ensuite d'ouvrir okular sur la copie lors de la première compilation. Cela ne résoudrait-il pas le problème?
Sam De Meyer
Oui, le laisser vide fait l'affaire de ne pas démarrer okular. Merci. Met à jour la réponse (ainsi qu'un ajout qui démarre l'aperçu pour les deux fichiers). Le fait que la mise à jour d'un fichier n'apparaisse qu'après la compilation est très utile. Je suis en train d'écrire une thèse plus importante, où cela est vraiment utile.
Exocom