Okej, grałem jeszcze trochę i wymyśliłem rozwiązanie, choć dość hackerskie.
Pierwsza próba - pdf_update_command + Okular
Nie działa to w pełni, ponieważ po przeładowaniu zawsze przeskakuje na początek pliku. Dla kompletności i tak go dodam.
W Okular wyłącz automatyczne przeładowanie poprzez „Ustawienia” -> „Konfiguruj Okular” -> Wyłącz „Załaduj ponownie zmianę dokumentu i pliku”.
Zmień plik .latexmkrc na:
$pdf_previewer = 'start okular --uniuqe %S';
$pdf_update_method = 4;
$pdf_update_command = 'okular --unique %S';
To mówi Latexmk, że powinien wykonać polecenie pdf_update_command po zakończeniu aktualizacji pliku pdf. Co działa, dokument w Okular jest widoczny cały czas podczas kompilacji i jest ładowany ponownie po zakończeniu. Niestety po wykonaniu polecenia aktualizacji przejdziesz na początek dokumentu. Nie tego chcę.
Druga próba - pdf_update_command + cp
Ponieważ poprzednia próba się nie udała, teraz idę z trudniejszym rozwiązaniem. W tym celu należy ponownie załadować dokument w Okular.
Plik .latexmkrc powinien wyglądać następująco:
$pdf_previewer = 'start okular';
$pdf_update_method = 4;
$pdf_update_command = 'cp ~/path/to/doc.pdf ~/path/to/doc_preview.pdf';
Spowoduje to skopiowanie rzeczywistego pliku dokumentu do lokalizacji podglądu. Więc Okular musi być otwarty dla tego pliku podglądu (a dla drugiego pliku musisz go zamknąć ręcznie). To z pewnością nie jest idealne, ale robi to, co chcę:
- Aktualizacja pliku pdf w tle
- Aktualizacja tylko wtedy, gdy plik jest gotowy
- Działa w ssh
Aktualizacja (dzięki Samowi De Meyerowi):
Jeśli nie chcesz, aby przeglądarka się uruchamiała, pozostaw $ pdf_previewer pusty:
$pdf_previewer = ''
Jeśli natomiast wolisz zamknąć okno niż je otworzyć, możesz podać „doc_preview.pdf” wraz z oryginalnym plikiem pdf. Nie znalazłem sposobu, aby otworzyć tylko drugi plik pdf:
$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'
PS: Działa z każdym edytorem, który automatycznie ładuje pliki, jak np. Evince.