Okular

重新載入文件時是否可以使okular不閃爍?

  • August 11, 2018

當我編寫 TeX 文件時,我使用設置在源文件更改時自動將我的 *.tex 文件重新編譯為 pdf(使用 latexmk)。所以我在螢幕的一側放了一個帶有 nvim 的終端,在螢幕的另一側放了一個帶有 pdf 輸出的終端。

令人討厭的是,每次 pdf 更新時,okular 都會閃爍/閃爍。當我有詞彙表 + 參考文獻 + 索引時,這一點尤其明顯。Okular 然後會根據 *.tex 源中的變化閃爍 3 到 5 次,我發現這真的很讓人分心。有什麼辦法可以禁用這種閃爍行為?

好吧,我玩了更多,想出了一個解決方案,雖然是一個相當老套的解決方案。

第一次嘗試 - 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 文件後執行 pdf_update_command。什麼起作用,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 工作

更新(感謝 Sam De Meyer):

如果您不想啟動預覽器,請將 $pdf_previewer 留空:

$pdf_previewer = ''

另一方面,如果您更喜歡關閉一個視窗而不是打開一個視窗,則可以將“doc_preview.pdf”與原始 pdf 一起指定。我還沒有找到方法,打開第二個 pdf 文件:

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

PS:這適用於任何自動重新載入文件的編輯器,例如evince。

引用自:https://unix.stackexchange.com/questions/281603