编辑 Latex 文件时自动重新加载 pdf 查看器

Pec*_*ece 5 pdf latex inotifywait

我在编辑 LaTeX 文件时使用llpp pdf 查看器。为了让它在编译时自动刷新 pdf 文件,我使用包装器来启动它(参见this)。

处理等待和刷新的部分是这个:

inotifywait -m -e close_write $1 | while read; do
    kill -HUP $pid_llpp
done &
Run Code Online (Sandbox Code Playgroud)

我的问题如下:每当编译 tex 文件时发生错误,就不会产生 pdf 输出并且 llpp 正在关闭。我尝试过类似的事情:

inotifywait -m -e close_write $1 | while read; do
    if [ -a $1 ]
    then
        kill -HUP $pid_llpp
    fi
done &
Run Code Online (Sandbox Code Playgroud)

它部分工作:当编译期间发生错误时,llpp 不会关闭但不再刷新...

有人能帮我解决这个问题吗?

Pas*_*ann 2

更新:自发布 v26 以来,llpp 以完善的版本提供了包装器脚本!您可以在 llpp 发行版中找到它,名称为misc/llpp.inotify。


我对您的问题进行了部分修复(此处为完整脚本):

inotifywait -m -e close_write "$PWD" | while read dir ev file; do
if [ "$file" = "$pdf" ] && [ -e "$pdf" ]; then
    kill -HUP $pid_llpp
fi
done &
Run Code Online (Sandbox Code Playgroud)

这会检查当前 pdf 文件是否仍然可用,然后才触发更新事件。这与您所做的类似。但是,我仍然可能会遇到 llpp 将关闭的情况,因为文件可能在检查后立即消失。我不知道如何解决这个问题。

通过查看包含pdf的文件夹并过滤掉pdf的事件,解决了错误修复后不刷新的问题。如果直接在文件上调用 inotify ,它似乎会错过delete.

如果您仍然对此感兴趣,请告诉我它是否适合您。

(附带说明:包装器现在还可以将标志传递给 llpp)