UTF-8のtexファイルをコンパイルするためのシェルスクリプト

Ubuntuのパッケージで用意されているplatexはEUC-JPじゃないと文字化けします.
ちょっと調べてみたところ,ptetexptexliveに同梱されている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を押すなど,途中で終了すると一時ファイルが削除されずに残ります

広告
特異値分解とLSIの意味 cURLでプロキシを通そうとするとハマった…
※このエントリーははてなダイアリーから移行したものです。過去のコメントなどはそちらを参照してください