Что: 3e191a9e6d0eb90216c7bc640b698d7274c46f48
Когда: 2022-01-27 20:58:15+03:00
Темы: redo tip
Redo и LaTeX В d0ffbdd295c1583abde17388553038f39747b0cc упоминал о redo цели которая смотрит на .log файл результата работы TeX и повторяет сборку пока там не исчезнет сообщение о том что хватит. Доработал эту default.pdf.do цель, которая ещё и BibTeX запускает: redo-ifchange $2.tex db.bib exec >&2 jobname=${3#.} trap "rm -f ${jobname}*" HUP PIPE INT QUIT TERM EXIT pdflatex --draftmode --jobname=$jobname $2.tex bibtex $jobname while grep -q "Rerun to get" $jobname.log ; do pdflatex --jobname=$jobname $2.tex done mv $jobname.pdf $3 В отличии от первой версии скрипта, эта использует честный jobname для создания всего вывода полностью во временных файлах, подчищая за собой при ошибке или выходе. Прежде, если я запустил redo, то первое исполнение pdflatex команды уже перезатрёт report.pdf, но может выйти с ошибкой при этом (или на bibtex упадёт) -- с точки зрения redo файл $1 был затронут, но в его базу данных знаний о нём не занесено. Поэтому при следующем запуске после упавшего, redo сообщит о том что .pdf уже был externally modified. Плюс оставался всякий мусор после сборки. С этой новой версией default.pdf.do все эти проблемы решены. Эмпирически обнаружил что jobname не может начинаться с точки, поэтому отрезаю её, используя в качестве имени уже имеющееся временное название $3.
Сгенерирован: SGBlog 0.34.0