۰۱ ارديبهشت ۹۴ ، ۱۱:۱۴
اجرای یک دستور مشخص به محض تغییر در محتویات یک فایل
برای تایپ از TeX Studio استفاده میکنم، اما تایپ متن فارسی با آن زجرآور است! به همین دلیل، ترجیح میدهم تا متن فارسی را در gedit تایپ کنم و خروجی آن را هم در evince ببینم. اما اجرای دستی xelatex زجرآور است، گرچه خیلی کمتر از زجر تایپ فارسی در TeX Studio است! اولین تلاش برای خودکار کردن به صورت زیر بود که هر دقیقه یکبار xelatex را اجرا میکرد!
while $( sleep 60s )
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
bibtex report
xelatex -synctex=-1 -interaction=nonstopmode report.tex
xelatex -synctex=-1 -interaction=nonstopmode report.tex
done
این موضوع خوب بود تا اینکه زمان پایان اجرای xelatex کمی بیش از یک دقیقه شد! این بار دست به دامن اینترنت شدم! بسته inotify-tools دقیقا این کار را انجام میدهد!
while inotifywait -e close_write report.tex
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
bibtex report
xelatex -synctex=-1 -interaction=nonstopmode report.tex
xelatex -synctex=-1 -interaction=nonstopmode report.tex
done
البته طبق آنچه که در اینجا آمده است، در صورتی که ویرایشگر شما به جای تغییر فایل، کل فایل را بازنویسی کند، gedit این گونه نیست!، باید از راهکار زیر استفاده کنید و پوشه را تحت مانیتور قرار دهید.
while true
do
change = $( inotifywait -e close_write,moved_to,create . )
change = ${change#./ *}
if [ "$change" = "report.tex" ]
then
xelatex -synctex=-1 -interaction=nonstopmode report.tex
bibtex report
xelatex -synctex=-1 -interaction=nonstopmode report.tex
xelatex -synctex=-1 -interaction=nonstopmode report.tex
fi
done
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.