Гаразд, я пограв трохи більше і придумав рішення, хоча і досить хакітне рішення.
Перша спроба - 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 потрібно відкрити для цього файлу попереднього перегляду (а для іншого файлу його потрібно закрити вручну). Це, звичайно, не ідеально, але це робить те, що я хочу:
- Оновлення файлу pdf у фоновому режимі
- Оновлення лише тоді, коли файл готовий
- Працює через ssh
Оновлення (завдяки Сем Де Меєр):
Якщо ви не хочете, щоб програма для перегляду запуску, залиште $ pdf_previewer порожнім:
$pdf_previewer = ''
Якщо ви, з іншого боку, більше любите закривати вікно, ніж відкривати, можна вказати "doc_preview.pdf" разом із оригінальним PDF-файлом. Я не знайшов спосіб, щоб тільки відкрити другий файл PDF:
$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'
PS: Це працює з будь-яким редактором, який автоматично завантажує файли, як, наприклад, evince.