Чи можна змусити окуляр не спалахнути при перезавантаженні файлу?


11

Коли я пишу документ TeX, я використовую налаштування, щоб автоматично перекомпілювати свої * .tex-файли в pdf, як тільки змінюється вихідний файл (використовуючи latexmk). Тому я поклав термінал з nvim з одного боку екрана і okular з виведенням pdf з іншого боку екрана.

Прикро, що окуляр блимає / блимає щоразу, коли оновлений файл PDF. Це особливо помітно, коли у мене є словники + посилання + покажчик. Тоді Okular спалахне від 3 до 5 разів залежно від того, що змінилося у джерелі * .tex, і я вважаю це справді відволікаючим. Чи є якийсь спосіб відключити цю миготливу поведінку?


3
Налаштування -> Налаштувати Okular -> Загальне -> Особливості програми -> зніміть позначку "Перезавантажити документ при зміні файлу". Потім натисніть F5, щоб перезавантажити pdf лише за бажанням.
林果 皞

Ну, це вирішує миготливу проблему, але вводить нову проблему, тепер мені доводиться натискати F5 кожен раз, коли я хочу бачити оновлення. Я сподівався, що існує якийсь спосіб автоматичного перезавантаження файлу без відволікаючої спалаху, але, можливо, це не можливо з окуляром. У будь-якому випадку, thx для тимчасового вирішення.
Сем Де Мейер

1
Файл неодноразово оновлюється в процесі збирання. Щоразу, коли файл оновлюється, Okular його оновлює. Окуляр, схоже, не має опції "якщо оновиться, зачекайте N секунд, щоб побачити, чи оновиться оновлення знову, перш ніж оновити".
Енді Далтон

Навіть це запитували деякий час тому, я хотів зазначити, висловлювати себе, поводиться, можливо, більше, як те, що ти хочеш. Якщо ви тим часом знайшли інше хороше рішення, повідомте нам про це. У мене точно така ж проблема ... (і не можу використовувати evince, оскільки у нього проблеми з x-forwarding)
Exocom

Відповіді:


2

Гаразд, я пограв трохи більше і придумав рішення, хоча і досить хакітне рішення.

Перша спроба - pdf_update_command + Okular

Це не працює повноцінно, оскільки після перезавантаження завжди буде перехід на початок файлу. Для повноти я все одно додаю.

У Okular вимкніть автоматичне перезавантаження за допомогою "Налаштування" -> "Налаштувати Okular" -> Вимкнути "Перезавантажити документ і змінити файл".

Змініть файл .latexmkrc на:

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

Це повідомляє latexmk, що він повинен виконати pdf_update_command після завершення оновлення файлу pdf. Що працює, документ у Okular видно весь час під час компіляції та перезавантажується після завершення. На жаль, коли виконується команда оновлення, ви перейдете до початку документа. Це не те, що я хочу.

Друга спроба - pdf_update_command + cp

Оскільки попередня спроба не вийшла, я зараз переходжу до більш раціонального рішення. Для цього потрібно перезавантажити документ у Okular.

.Latexmkrc повинен виглядати так:

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

Це копіює фактичний файл документа в місце попереднього перегляду. Тому Okular потрібно відкрити для цього файлу попереднього перегляду (а для іншого файлу його потрібно закрити вручну). Це, звичайно, не ідеально, але це робить те, що я хочу:

  1. Оновлення файлу pdf у фоновому режимі
  2. Оновлення лише тоді, коли файл готовий
  3. Працює через ssh

Оновлення (завдяки Сем Де Меєр):

Якщо ви не хочете, щоб програма для перегляду запуску, залиште $ pdf_previewer порожнім:

$pdf_previewer = ''

Якщо ви, з іншого боку, більше любите закривати вікно, ніж відкривати, можна вказати "doc_preview.pdf" разом із оригінальним PDF-файлом. Я не знайшов спосіб, щоб тільки відкрити другий файл PDF:

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

PS: Це працює з будь-яким редактором, який автоматично завантажує файли, як, наприклад, evince.


1
Привіт, фокус 'cp' може спрацювати. Чи потрібно насправді робити "start okular" у "Preview PDF". Можливо, ви можете просто залишити його порожнім або вказати команду, яка нічого не робить? Тоді все, що вам потрібно зробити, це відкрити окуляр на копії при першому компілюванні. Хіба це не вирішило б проблему?
Сем Де Мейер

Так, залишити його порожнім робить трюк не запускати окуляр. Спасибі. Відповідь буде оновлено (як і додаток, яке запускає попередній перегляд обох файлів). Вся справа в тому, що оновлення файлу з'являється лише після завершення компіляції, дуже допомагає. Я просто пишу більшу дисертацію, де це дуже корисно.
Exocom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.