UTF-8のtexファイルをコンパイルするためのシェルスクリプト
Ubuntuのパッケージで用意されているplatexはEUC-JPじゃないと文字化けします.
ちょっと調べてみたところ,ptetexやptexliveに同梱されているplatexであればインストールオプションでUTF-8対応にできるみたいです.
ただ,前者はteTeXが2006年に開発中止となり,後者はTeX Liveが数GBという容量なので考えもの.
※ちなみに後者はここを参考にすればインストールできそうですが,自分の環境ではビルドに失敗しました…
というわけで,UTF-8のファイルでもコンパイルできるようにスクリプトを作成しました.
よかったらお使い下さい.UTF-8と謳ってますが,nkfで変換可能な文字コードであればどの文字コードでも大丈夫なはずです.
※スタイルファイルなどの文字コードまでは考慮していませんカレントディレクトリのスタイルファイルに対応させました (2011/01/13)
インストール
0. nkfのインストール
$ sudo aptitude install nkf
1. 以下のスクリプトをplatex-utf8という名前で保存する
#!/bin/sh
script_name=platex-utf8
# check arguments
{
if [ $# -eq 0 ]
then
echo Usage: $script_nam [option] texfile
exit
elif [ $# -eq 1 ]
then
texfile=$1
args=""
else
texfile=${@##* }
args=${@% *}
fi
}
if [ ! -e $texfile ]
then
echo "$script_name: cannot find file '$texfile'"
exit
fi
dirname=`dirname $texfile`
basename=`basename $texfile`
jobname=`echo $basename | sed s/\\.[^.]*$//`
tmpfile=`mktemp --tmpdir=. $jobname.XXXXXXXXXX`
# export EUC-JP tex file
nkf -eO $texfile $tmpfile
# move original stylefiles temporally
{
tmpdir=`mktemp -d`
for sty in $dirname/*.sty
do
tmpsty=$tmpdir/`basename $sty`
mv $sty $tmpsty
nkf -eO $tmpsty $sty
done
}
platex $args $tmpfile
# restore the state
{
for sty in $tmpdir/*.sty
do
mv $sty $dirname/
done
rm -r $tmpfile $tmpdir
}
※nkf -e を nkf -s に変更すればShift_JISのplatexにも対応可なはずです
2. スクリプトに実行権限を追加
$ chmod +x platex-utf8
3. スクリプトを/usr/local/bin(パスの通ったディレクトリ)に移動
$ sudo mv platex-utf8 /usr/local/bin/
4. .emacsの編集(YaTeXを使う人)
次の内容を追加
(setq tex-command "platex-utf8"
YaTeX-kanji-code 4)
使い方
platex-utf8 [option] texfile
仕組み
texファイルをEUC-JPで一時ファイルとしてカレントディレクトリに書き出して,それをコンパイルした後に削除しているだけです.
※texファイルのコンパイル途中にC-cを押すなど,途中で終了すると一時ファイルが削除されずに残ります