![是否可以使 okular 在重新加载文件时不闪烁?](https://linux22.com/image/87854/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%20okular%20%E5%9C%A8%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD%E6%96%87%E4%BB%B6%E6%97%B6%E4%B8%8D%E9%97%AA%E7%83%81%EF%BC%9F.png)
当我编写 TeX 文档时,我使用一个设置,一旦源文件发生更改(使用 Latexmk),就会自动将我的 *.tex 文件重新编译为 pdf。因此,我将带有 nvim 的终端放在屏幕的一侧,并将 okular 与 pdf 输出放在屏幕的另一侧。
烦人的是,每次 pdf 更新时 okular 都会闪烁/闪烁。当我有术语表+参考文献+索引时,这一点尤其明显。然后,Okular 将根据 *.tex 源中的更改闪烁 3 到 5 次,我发现这确实让人分心。有什么办法可以禁用这种闪烁行为吗?
答案1
好吧,我又玩了一下,想出了一个解决方案,尽管是一个相当老套的解决方案。
第一次尝试 - 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(对于其他文件,您必须手动关闭它)。这肯定不理想,但它达到了我想要的效果:
- 在后台更新pdf文件
- 仅当文件准备好时更新
- 跨 ssh 工作
更新(感谢 Sam De Meyer):
如果您不想启动预览器,请将 $pdf_previewer 留空:
$pdf_previewer = ''
另一方面,如果您更喜欢关闭窗口而不是打开窗口,则可以将“doc_preview.pdf”与原始 pdf 一起指定。我还没有找到办法仅有的打开第二个pdf文件:
$pdf_previewer = 'start okular ~/path/to/doc_preview.pdf'
PS:这适用于任何自动重新加载文件的编辑器,例如 evince。