Ist es möglich, dass okular beim erneuten Laden einer Datei nicht blinkt?

11

Wenn ich ein TeX-Dokument schreibe, verwende ich ein Setup, um meine * .tex-Dateien automatisch in ein PDF zu kompilieren, sobald sich eine Quelldatei ändert (mit latexmk). Also habe ich ein Terminal mit nvim auf einer Seite des Bildschirms und okular mit der PDF-Ausgabe auf der anderen Seite des Bildschirms platziert.

Das nervige ist, dass okular jedes Mal blinkt / blinkt, wenn das PDF aktualisiert wird. Dies macht sich besonders bemerkbar, wenn ich Glossare + Referenzen + Index habe. Okular blinkt dann 3 bis 5 Mal, je nachdem, was sich in der * .tex-Quelle geändert hat, und ich finde das wirklich ablenkend. Gibt es eine Möglichkeit, dieses Blinkverhalten zu deaktivieren?

Sam De Meyer
quelle
3
Einstellungen -> Okular konfigurieren -> Allgemein -> Programmfunktionen -> Deaktivieren Sie "Dokument bei Dateiänderung neu laden". Drücken Sie dann F5, um das PDF nur bei Bedarf neu zu laden.
林果 皞
Nun, dies löst das blinkende Problem, führt jedoch zu einem neuen Problem. Jetzt muss ich jedes Mal F5 drücken, wenn ich ein Update sehen möchte. Ich hatte gehofft, dass es eine Möglichkeit gibt, die Datei ohne den störenden Flash automatisch neu zu laden, aber vielleicht ist dies mit okular nicht möglich. Wie auch immer, danke für die vorübergehende Problemumgehung.
Sam De Meyer
1
Die Datei wird während des Erstellungsprozesses mehrmals aktualisiert. Jedes Mal, wenn die Datei aktualisiert wird, aktualisiert Okular sie. Okular scheint keine Option "Wenn es aktualisiert wird, warten Sie N Sekunden, um zu sehen, ob es vor dem Aktualisieren erneut aktualisiert wird" zu haben.
Andy Dalton
Auch dies wurde vor einiger Zeit gefragt, ich wollte darauf hinweisen, evince verhält sich vielleicht eher so, wie Sie es wollen. Wenn Sie in der Zwischenzeit eine andere gute Lösung gefunden haben, lassen Sie es uns wissen. Ich habe genau das gleiche Problem ... (und kann evince nicht verwenden, da es Probleme mit der X-Weiterleitung hat)
Exocom

Antworten:

2

Okay, ich habe ein bisschen mehr rumgespielt und eine Lösung gefunden, obwohl eine ziemlich hackige Lösung.

Erster Versuch - pdf_update_command + Okular

Dies funktioniert nicht vollständig, da nach dem erneuten Laden immer zum Anfang der Datei gesprungen wird. Der Vollständigkeit halber füge ich es trotzdem hinzu.

Deaktivieren Sie in Okular das automatische Neuladen über "Einstellungen" -> "Okular konfigurieren" -> Deaktivieren Sie "Dokument- und Dateiänderung neu laden".

Ändern Sie die .latexmkrc-Datei in:

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

Dies teilt latexmk mit, dass es den Befehl pdf_update_command ausführen soll, nachdem die Aktualisierung der PDF-Datei abgeschlossen ist. Was funktioniert, das Dokument in Okular ist während der Kompilierung jederzeit sichtbar und wird nach Abschluss neu geladen. Wenn der Aktualisierungsbefehl ausgeführt wird, springen Sie leider zum Anfang des Dokuments. Das will ich nicht.

Zweiter Versuch - pdf_update_command + cp

Da der vorherige Versuch nicht geklappt hat, gehe ich jetzt mit einer hackigeren Lösung. Dazu muss das erneute Laden von Dokumenten in Okular aktiviert sein.

Die .latexmkrc sollte folgendermaßen aussehen:

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

Dadurch wird die eigentliche Dokumentdatei an einen Vorschauplatz kopiert. Daher muss Okular für diese Vorschaudatei geöffnet werden (und für die andere Datei müssen Sie sie manuell schließen). Das ist sicherlich nicht ideal, aber es macht was ich will:

  1. Aktualisieren der PDF-Datei im Hintergrund
  2. Aktualisierung nur, wenn die Datei fertig ist
  3. Funktioniert über ssh

Update (danke an Sam De Meyer):

Wenn Sie nicht möchten, dass der Previewer gestartet wird, lassen Sie den $ pdf_previewer leer:

$pdf_previewer = ''

Wenn Sie dagegen lieber ein Fenster schließen als ein Fenster öffnen möchten, können Sie die Datei 'doc_preview.pdf' zusammen mit dem Original-PDF angeben. Ich habe keinen Weg gefunden, nur die zweite PDF-Datei zu öffnen:

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

PS: Dies funktioniert mit jedem Editor, der Dateien automatisch neu lädt, z. B. evince.

Exocom
quelle
1
Hallo, der 'cp'-Trick könnte funktionieren. Müssen Sie im "PDF-Previewer" tatsächlich "okular starten". Vielleicht können Sie es einfach leer lassen oder einen Befehl angeben, der nichts bewirkt? Dann müssen Sie beim ersten Kompilieren nur noch okular auf der Kopie öffnen. Würde das das Problem nicht lösen?
Sam De Meyer
Ja, wenn Sie es leer lassen, können Sie okular nicht starten. Vielen Dank. Aktualisiert die Antwort (auch mit einem Zusatz, der den Previewer für beide Dateien startet). Das Ganze, dass das Update einer Datei erst nach Abschluss des Kompilierens erscheint, hilft sehr. Ich schreibe gerade eine größere These, in der dies sehr praktisch ist.
Exocom