ptexencの文字コード自動判定とpdfplatex.batの設定

ptexencの文字コード自動判定とpdfplatex.batの設定

- KUROKI Yusuke の投稿
返信数: 4

ptexencの文字コード自動判定と,Windows(W32TeX)でTeXworksから呼ばれるpdfplatex.batの設定について,ご相談というかご報告というかをします.
# あべのりさんが作成している,abtexinst のプラグイン開発にここ最近関わっていて,バランスをどう取るのがよいか悩んでいます.

ptexencの文字コード自動判定は,スタイルファイルに異なる文字コード(日本語の漢字コード)が混じっていても,意識せずにタイプセットできるようにというのを大きな目的として開発されていたと思います.この記事に添付したようなソース群が,何のトラブルもなくタイプセットできれば幸せです.

ところで,Windows(W32TeX)でTeXworksから呼ばれるpdfplatex.batの設定は,

@echo off
platex -synctex=1 -no-guess-input-enc -kanji=utf8 %1
dvipdfmx "%~n1"

となっており,自動判定をさせないオプション -no-guess-input-enc が付いていることから,

(./local-jis.sty) (./local-euc.sty) (./local-sjis.sty)
Runaway definition?
->Shift\_JISコード

といったエラーを出力して,異常終了してしまいます(想定の範囲内ですが).

これに対して,最近あべのりさんが開発しているpdfplatex_ipaembed.batなどでは,

@echo off
platex -synctex=1 -jobname="%~n1" %1 && ^
dvipdfmx -f ipaembed.map "%~n1"

となっていて,自動判定されて,正常終了し,期待通りの結果が得られます.

自動判定は失敗することもあって,失敗したときに,TeXworksなどの統合環境しか使わない人にとって解決策が取りにくいという問題があるので,文字コードは統一されていてしかるべき,という立場があるのも理解しています.

あべのりさんのインストーラのシェアは大きいと思いますので,できるだけ多くの方のご意見を参考に設定を決めたほうがよいと思うのですが,みなさまいかがお考えになりますでしょうか?

KUROKI Yusuke への返信

Re: ptexencの文字コード自動判定とpdfplatex.batの設定

- Akira Kakuto の投稿
あべのりさんのものにあわせておきます。
フォントについては,最近デフォルトで
ms... を埋め込むようにしたので,その
デフォルトにしておきます。もちろん
-f ipaembed.map
で override できます。

Akira Kakuto への返信

Re: ptexencの文字コード自動判定とpdfplatex.batの設定

- KUROKI Yusuke の投稿
下の山本さんのご意見も踏まえると,

@echo off
platex -synctex=1 -kanji=utf8 -jobname="%~n1" %1 && ^
dvipdfmx -f msembed.map "%~n1"

がごくごく標準の設定としてふさわしいということになりますでしょうか.


「最近デフォルトで ms... を埋め込むようにしたので」というのは,
-f msembed.map
を付けているということでよろしいでしょうか?
KUROKI Yusuke への返信

Re: ptexencの文字コード自動判定とpdfplatex.batの設定

- 山本 和義 の投稿
-no-guess-input-enc をやめて自動判断に任せるのは賛成ですが,

>@echo off
>platex -synctex=1 -jobname="%~n1" %1 && ^
>dvipdfmx -f ipaembed.map "%~n1"

このままだと,標準入出力等がデフォルトの sjis になってしまうので,エラーメッセージに日本語が入っていた場合に化けてしまいます.ですので -kanji=utf8 はあった方がよいと思います.
山本 和義 への返信

Re: ptexencの文字コード自動判定とpdfplatex.batの設定

- Akira Kakuto の投稿
@echo off
platex -synctex=1 -jobname="%~n1" -kanji=utf8 -guess-input-enc %1 && ^
dvipdfmx "%~n1"
とする予定です。デフォルトで ms... を埋め込むようにしたとい
うのは,デフォルトで読み込まれるマップファイルに記述したと
いうことです。
それからコンソール出力を CP932 とするのは
-sjis-terminal オプションが指定されたときのみにします。
振る舞いは次のようになります。
(1) platex foo コンソールは sjis
platex foo >file file は sjis
出力テキストファイルは sjis
(2) platex -kanji=utf8 foo コンソールは utf8
platex -kanji=utf8 foo >file file は utf8
出力テキストファイルは utf8
(3) platex -sjis-terminal -kanji=utf8 foo コンソールは sjis
platex -sjis-terminal -kanji=utf8 >file file は utf8
出力テキストファイルは utf8
これにより,TeXworks のエラーメッセージの日本語も
上のバッチファイルにより読めると思います。