5

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

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

inotifywait -m -e close_write $1 | while read; do
    kill -HUP $pid_llpp
done &

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

inotifywait -m -e close_write $1 | while read; do
    if [ -a $1 ]
    then
        kill -HUP $pid_llpp
    fi
done &

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

谁能帮我解决这个问题?

4

1 回答 1

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 &

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

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

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

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

于 2014-03-11T12:55:55.653 回答