platexでダメ文字を含むファイルを処理する

Windowsで「予定表.tex」というファイルに対してplatexを実行すると、思わぬ結果になる。

platex 予定表.tex

出力ファイルが、「.dvi」、「.aux」などになってしまい、ファイル名が失われてしまう。これは、「表」という文字がいわゆるShift JISのダメ文字だからだ。ダメ文字の詳細は省くが、「表」のほかに「能」、「十」などもこれに該当する。たとえば「十人十色.tex」だと、「色.dvi」などが出力される。

これでは一貫性がない。調べると、jobname引数を渡せばよいことがわかる。

platex -jobname=予定表 予定表.tex

こうすると無事に「予定表.dvi」が出力される。めでたしめでたし。

おまけ

以上をバッチ化する。引数としてtexファイルを指定すると、うまく処理してくれる。

@echo off
platex -jobname="%~n1" "%~nx1"

違うディレクトリから呼び出しても、D&Dで呼び出しても、*.texと同じディレクトリに*.dviを作るときは次のようにする。

@echo off
cd /d "%~dp1"
platex -jobname="%~n1" "%~nx1"