まず、texファイルの先頭に xelatex,dvips,dvipdfmxが記入されていれば、以下の様に動くようにする。
xelatex : xelatex
dvips: platex+dvips+ps2pdf
dvipdfmx: platex+dvipdfmx
さらにplatex,xelatexは batchmode で動かしていたけど、エラーがどこか分からないので、元に戻すように変更。
ただしエラーが出て止まった時に、自動で終了するよう、xを予め打っておく。
platexの終了ステータスが0の時だけ次の処理(dvips ,dvipdfmx)へ進むように変更。
というわけで以下の様に変えた。適当に名前をつけて保存し、chmod +x で実行権限を与えると動いて動いてくれるはず。
---------------------ここから--------------------
#!/bin/bash
export TEXFILE=$1
## tex ファイルの指定
export LATEXTYPE=$(head -1 $1 |grep tex )
## xelatexかplatexの指定が含まれているかどうか
export DVITYPE=$(head -1 $1 |grep dvi )
## dvipsかdvipdfmxかを指定。この時はplatexを使う。
if test "$(echo $LATEXTYPE|sed s/.*xelatex.*/xelatex/)" = "xelatex" ; then
echo "use xelatex"
#xelatex -interaction=batchmode --shell-escape $TEXFILE
echo x |xelatex --shell-escape $TEXFILE
elif test "$(echo $DVITYPE|sed s/.*dvips.*/dvips/)" = "dvips" ; then
echo "use platex + dvips"
echo x |platex --shell-escape $TEXFILE
## platex にかける
if test "$?" = "0" ;then
dvips $(echo $TEXFILE|sed s/\.tex$/\.dvi/)
ps2pdf $(echo $TEXFILE|sed s/\.tex$/\.ps/)
##dvipsが含まれている時、dvips, ps2pdf経由でpdfを生成
else echo "DVIPS EXIT!!"
fi
else echo "use platex + dvipdfmx"
echo x |platex --shell-escape $TEXFILE
## platex にかける
if test "$?" = "0" ;then
dvipdfmx $(echo $TEXFILE|sed s/\.tex$/\.dvi/)
##dvipsが含まれていない時、dvipdfmx でpdfを生成
else echo "DVIPDFMX EXIT!!"
fi
fi
今のところうまく動いている様子。
さて風邪を引いてしまい少ししんどい。今週から休みだし、明日は打ち合わせなので早めに寝よう。
0 件のコメント:
コメントを投稿