Автоматическая перезагрузка просмотра PDF при редактировании латексных файлов

Я использую программу просмотра ppp llpp при редактировании моих файлов LaTeX. Чтобы он автоматически обновлял файл pdf при компиляции, я использую обертку для его запуска (см. Это).

Часть, обрабатывающая ожидание и обновление, выглядит так:

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 не закрывается, но больше не обновляется...

Может ли кто-нибудь помочь мне решить эту проблему?

1 ответ

Я выдвинул частичное решение вашей проблемы (полный сценарий здесь):

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)

Другие вопросы по тегам