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


11

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

令人讨厌的是,每次pdf更新时,小牛都会闪烁/闪烁。当我有词汇表+引用+索引时,这一点尤其明显。然后,Okular将闪烁3到5次,具体取决于* .tex源中发生的变化,我发现这确实令人分心。有什么方法可以禁用这种闪烁行为吗?


3
设置->配置Okular->常规->程序功能->取消选中“在文件更改时重新加载文档”。然后仅在需要时按F5重新加载pdf。
林果皞

好了,这解决了闪烁的问题,但引入了一个新问题,现在我每次想查看更新时都必须按F5键。我希望有某种方法可以自动重新加载文件而不会分散注意力,但是使用okular可能无法实现。无论如何,请寻求临时解决方法。
Sam De Meyer

1
在构建过程中,文件被多次更新。每次更新文件时,Okular都会刷新它。Okular似乎没有“如果更新,请等待N秒钟以查看刷新是否再次更新,然后刷新”选项。
安迪·道尔顿

我想指出的是,即使这是前一段时间提出的,它的行为可能更像您想要的。如果您在此期间找到其他好的解决方案,请告诉我们。我有完全一样的问题...(并且不能使用evince,因为它在x转发方面存在问题)
Exocom,

Answers:


2

好的,我玩了更多,并提出了一个解决方案,尽管这个解决方案很笨拙。

第一次尝试-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中的文档在编译期间始终可见,并在完成后重新加载。不幸的是,当执行update命令时,您将跳至文档的开头。那不是我想要的。

第二次尝试-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。


1
嗨,“ cp”把戏可能有用。您实际上是否需要在“ pdf预览器”中执行“开始okular”。也许您可以将其保留为空或指定不执行任何操作的命令?然后,您要做的就是在第一次编译时在副本上打开okular。那不能解决问题吗?
Sam De Meyer

是的,将其保留为空可以解决不启动okular的问题。谢谢。将更新答案(以及为两个文件启动预览器的附加功能)。整个问题,仅在编译完成后才显示文件更新,对您大有帮助。我只是在写一个更大的论文,这确实很方便。
Exocom '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.