Czy możliwe jest, aby okular nie flashował podczas przeładowywania pliku?

11

Kiedy piszę dokument TeX, korzystam z programu instalacyjnego, aby automatycznie rekompilować moje pliki * .tex do pliku pdf, gdy tylko zmieni się plik źródłowy (używając Latexmk). Więc umieściłem terminal z nvim po jednej stronie ekranu i okular z wyjściem pdf po drugiej stronie ekranu.

Irytujące jest to, że okular miga / miga przy każdej aktualizacji pdf. Jest to szczególnie widoczne, gdy mam glosariusze + referencje + indeks. Okular będzie wtedy flashował 3 do 5 razy w zależności od tego, co zmieniło się w źródle * .tex, i uważam, że to naprawdę rozprasza. Czy jest jakiś sposób, aby wyłączyć to zachowanie flashowania?

Sam De Meyer
źródło
3
Ustawienia -> Konfiguruj Okular -> Ogólne -> Funkcje programu -> odznacz „Załaduj ponownie dokument przy zmianie pliku”. Następnie naciśnij F5, aby ponownie załadować pdf tylko w razie potrzeby.
林果 皞
Cóż, to rozwiązuje problem flashowania, ale wprowadza nowy problem, teraz muszę naciskać F5 za każdym razem, gdy chcę zobaczyć aktualizację. Miałem nadzieję, że istnieje sposób na ponowne załadowanie pliku bez rozpraszającej pamięci flash, ale może nie jest to możliwe w przypadku okularu. W każdym razie, dziękuję za tymczasowe obejście.
Sam De Meyer,
1
Plik jest aktualizowany wiele razy podczas procesu kompilacji. Za każdym razem, gdy plik jest aktualizowany, Okular go odświeża. Okular nie wydaje się mieć opcji „jeśli się aktualizuje, poczekaj N sekund, aby zobaczyć, czy aktualizuje się ponownie przed odświeżeniem”.
Andy Dalton,
Nawet to zapytano jakiś czas temu, chciałem zwrócić uwagę, ewince może zachowuje się bardziej jak chcesz. Jeśli w międzyczasie znalazłeś inne dobre rozwiązanie, daj nam znać. Mam dokładnie ten sam problem ... (i nie mogę użyć evince, ponieważ ma problemy z przekazywaniem x)
Exocom

Odpowiedzi:

2

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ę:

  1. Aktualizacja pliku pdf w tle
  2. Aktualizacja tylko wtedy, gdy plik jest gotowy
  3. 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.

Exocom
źródło
1
Cześć, sztuczka „cp” może działać. Czy faktycznie potrzebujesz „uruchomić okular” w „przeglądarce PDF”. Może możesz zostawić to puste lub podać polecenie, które nic nie robi? Następnie przy pierwszym kompilacji wystarczy otworzyć okular na kopii. Czy to nie rozwiązałoby problemu?
Sam De Meyer,
Tak, pozostawienie pustego powoduje, że nie uruchamia się okular. Dzięki. Zaktualizuje odpowiedź (również z dodatkiem, który uruchamia podgląd dla obu plików). Pomaga bardzo to, że aktualizacja pliku pojawia się dopiero po zakończeniu kompilacji. Właśnie piszę większą tezę, w której to się naprawdę przydaje.
Exocom,