当我编写 TeX 文档时,我使用设置自动将我的 *.tex 文件重新编译为 pdf,只要源文件发生更改(使用 latexmk)。所以我在屏幕的一侧放了一个带有 nvim 的终端,在屏幕的另一侧放了一个带有 pdf 输出的 okular。
令人讨厌的是,每次 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';
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(对于其他文件,您必须手动关闭它)。这肯定不理想,但它达到了我想要的效果:
更新(感谢 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。
归档时间: |
|
查看次数: |
994 次 |
最近记录: |