是否可以在重新加载文件时使 okular 不闪烁?

Sam*_*yer 12 okular

当我编写 TeX 文档时,我使用设置自动将我的 *.tex 文件重新编译为 pdf,只要源文件发生更改(使用 latexmk)。所以我在屏幕的一侧放了一个带有 nvim 的终端,在屏幕的另一侧放了一个带有 pdf 输出的 okular。

令人讨厌的是,每次 pdf 更新时,okular 都会闪烁/闪烁。当我有词汇表 + 参考文献 + 索引时,这一点尤其明显。Okular 然后会根据 *.tex 源中的变化闪烁 3 到 5 次,我发现这真的很分散注意力。有什么办法可以禁用这种闪烁行为吗?

Exo*_*com 3

好吧,我又玩了一下,想出了一个解决方案,尽管是一个相当老套的解决方案。

第一次尝试 - pdf_update_command + Okular

这并不完全有效,因为重新加载后它总是会跳转到文件的开头。为了完整起见,我还是添加了它。

在 Okular 中,通过“设置”->“配置 Okular”-> 关闭“重新加载文档和文件更改”来关闭自动重新加载。

将 .latexmkrc 文件更改为:

$pdf_previewer = 'start okular --uniuqe %S';
$pdf_update_method = 4;
$pdf_update_command = 'okular --unique %S';
Run Code Online (Sandbox Code Playgroud)

这告诉 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';
Run Code Online (Sandbox Code Playgroud)

这会将实际文档文件复制到预览位置。因此,需要为此预览文件打开 Okular(对于其他文件,您必须手动关闭它)。这肯定不理想,但它达到了我想要的效果:

  1. 在后台更新pdf文件
  2. 仅当文件准备好时更新
  3. 跨 ssh 工作

更新(感谢 Sam De Meyer):

如果您不想启动预览器,请将 $pdf_previewer 留空:

$pdf_previewer = ''
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您更喜欢关闭窗口而不是打开窗口,则可以将“doc_preview.pdf”与原始 pdf 一起指定。我还没有找到一种方法,打开第二个pdf文件:

$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'
Run Code Online (Sandbox Code Playgroud)

PS:这适用于任何自动重新加载文件的编辑器,例如 evince。