これは,ほげ.tex がユニコード対応前の uplatex でも使える
名前だからだと思います。表.tex はだめ。
ptex2pdf では Norbert さんが言われているように
どんな漢字ファイルでも使用できるように
command_line_encoding=utf8
を putenv しています。 これを putenv するのを オプションに
してもらったほうが良いでしょうか?
新しいオプジョンを作りました:
-ce 'str'
Windowsの場合は(エンジンの関係なし!)
command_line_encoding=str
の設定されている。
試してみたい方はここからダウンロードできます:
https://raw.githubusercontent.com/norbusan/ptex2pdf/master/ptex2pdf.lua
意見と他の提案をよろしくお願いします。
ノルベルト
-ce 'str'
Windowsの場合は(エンジンの関係なし!)
command_line_encoding=str
の設定されている。
試してみたい方はここからダウンロードできます:
https://raw.githubusercontent.com/norbusan/ptex2pdf/master/ptex2pdf.lua
意見と他の提案をよろしくお願いします。
ノルベルト
全然追いつけていないのですが,
https://okumuralab.org/tex/mod/forum/discuss.php?d=788
で導入した,-sjis-terminal みたいなものと統一したオプション名や設定の仕方にはならないでしょうか?
https://okumuralab.org/tex/mod/forum/discuss.php?d=788
で導入した,-sjis-terminal みたいなものと統一したオプション名や設定の仕方にはならないでしょうか?
やっぱり追いつけていないので,テストを作ってみました.日本語の文字コードに関していろいろ混ざったテストです.実行環境は Windows 上の TeX Live 2014 + ptex2pdf.lua だけ 0.7dev (github 上) に更新したものです.
----
% tooshort.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
あ①
\end{document}
% \endinput
まず,
ptex2pdf -l -u tooshort
とすると,日本語の文字列が少なすぎて,sjis と判定されてしまい,結果の PDF が「縺や蔵」といった感じに化けます.
----
% dangerous.tex, ほげ.tex, 表.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
文字化けしない表①
\message{文字化けしない表①}
\immediate\write18{dir}
\end{document}
% \endinput
次に,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" dangerous
とすると,出来上がったPDFにはきちんと「文字化けしない表①」と出てくれます.コマンドラインの結果としては,
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは <snip> のディレクトリ
2015/03/17 00:29 <DIR> .
2015/03/17 00:29 <DIR> ..
2015/03/17 00:29 0 dangerous.aux
2015/03/17 00:29 0 dangerous.log
2015/03/17 00:29 0 dangerous.synctex.gz(busy)
2015/03/17 00:22 163 dangerous.tex
2015/03/17 00:20 78 tooshort.tex
2015/03/17 00:22 163 ほげ.tex
2015/03/17 00:22 163 表.tex
7 個のファイル 567 バイト
2 個のディレクトリ 1,389,719,552 バイトの空き領域
という感じで出ます.ドライブ C の直前が文字化けしているのは,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" dangerous
とすれば直ります.
----
さらに,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" ほげ
とすると,
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは <snip> のディレクトリ
2015/03/17 00:30 <DIR> .
2015/03/17 00:30 <DIR> ..
2015/03/17 00:29 8 dangerous.aux
2015/03/17 00:29 3,283 dangerous.log
2015/03/17 00:29 1,627 dangerous.pdf
2015/03/17 00:29 438 dangerous.synctex.gz
2015/03/17 00:22 163 dangerous.tex
2015/03/17 00:20 78 tooshort.tex
2015/03/17 00:30 0 ほげ.aux
2015/03/17 00:30 0 ほげ.log
2015/03/17 00:30 0 ほげ.synctex.gz(busy)
2015/03/17 00:22 163 ほげ.tex
2015/03/17 00:22 163 表.tex
11 個のファイル 5,923 バイト
2 個のディレクトリ 1,389,711,360 バイトの空き領域
[1] (./ほげ.aux) )
Output written on ほげ.dvi (1 page, 288 bytes).
SyncTeX written on ほげ.synctex.gz.
Transcript written on ほげ.log.
のような感じになりますが,
----
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" ほげ
とすると,
Document Class: jsarticle 2014/02/07 okumura
) (./قげ.aux) 文字化けしない表① ドライブ C のボリューム ラベルは
のような感じとなり,uplatex 部分で表示されるファイル名の「ほ」が(コマンドプロンプト上では)半角の■に化けます.\message の中身やdvipdfmxのメッセージは文字化けしません.
----
ここで満を持して
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" 表
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" 表
を試すと,どちらともエラーになります.
! I can't find file `・.
<to be read again>
\
<*> 表
(Press Enter to retry, or Control-Z to exit)
のようなメッセージが得られるわけです.
----
ようやく
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape" 表
とすると,
No file 陦ィ.aux.
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは
<snip>
2015/03/17 00:22 163 表.tex
2015/03/17 00:38 0 陦ィ.synctex.gz(busy)
16 個のファイル 11,980 バイト
といった感じになります.
----
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape -sjis-terminal" 表
では
(./表.aux) 文字化けしない表① ドライブ C のボリューム ラベルは
<snip>
2015/03/17 00:22 163 表.tex
2015/03/17 00:38 441 陦ィ.synctex.gz
2015/03/17 00:41 0 陦ィ.synctex.gz(busy)
18 個のファイル 14,048 バイト
2 個のディレクトリ 1,389,690,880 バイトの空き領域
[1] (./表.aux) )
Output written on 表.dvi (1 page, 288 bytes).
SyncTeX written on 陦ィ.synctex.gz.
Transcript written on 表.log.
陦ィ -> 陦ィ.pdf
という感じになり,synctex.gz のファイル名と dvipdfmx のメッセージが文字化けして,他は文字化けしません.
----
ちなみに,
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape -sjis-terminal" ほげ
とすると,
synctex.gz のファイル名と dvipdfmx のメッセージが「縺サ縺」のように化けます.
----
Norbert さんが最初に心配した,\write18 の例でうまく両立できない例が作れていない気がしますが,何かよい例はあるでしょうか?
% 表組みでもして示さないと,わかりにくいですね.
----
% tooshort.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
あ①
\end{document}
% \endinput
まず,
ptex2pdf -l -u tooshort
とすると,日本語の文字列が少なすぎて,sjis と判定されてしまい,結果の PDF が「縺や蔵」といった感じに化けます.
----
% dangerous.tex, ほげ.tex, 表.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
文字化けしない表①
\message{文字化けしない表①}
\immediate\write18{dir}
\end{document}
% \endinput
次に,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" dangerous
とすると,出来上がったPDFにはきちんと「文字化けしない表①」と出てくれます.コマンドラインの結果としては,
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは <snip> のディレクトリ
2015/03/17 00:29 <DIR> .
2015/03/17 00:29 <DIR> ..
2015/03/17 00:29 0 dangerous.aux
2015/03/17 00:29 0 dangerous.log
2015/03/17 00:29 0 dangerous.synctex.gz(busy)
2015/03/17 00:22 163 dangerous.tex
2015/03/17 00:20 78 tooshort.tex
2015/03/17 00:22 163 ほげ.tex
2015/03/17 00:22 163 表.tex
7 個のファイル 567 バイト
2 個のディレクトリ 1,389,719,552 バイトの空き領域
という感じで出ます.ドライブ C の直前が文字化けしているのは,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" dangerous
とすれば直ります.
----
さらに,
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" ほげ
とすると,
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは <snip> のディレクトリ
2015/03/17 00:30 <DIR> .
2015/03/17 00:30 <DIR> ..
2015/03/17 00:29 8 dangerous.aux
2015/03/17 00:29 3,283 dangerous.log
2015/03/17 00:29 1,627 dangerous.pdf
2015/03/17 00:29 438 dangerous.synctex.gz
2015/03/17 00:22 163 dangerous.tex
2015/03/17 00:20 78 tooshort.tex
2015/03/17 00:30 0 ほげ.aux
2015/03/17 00:30 0 ほげ.log
2015/03/17 00:30 0 ほげ.synctex.gz(busy)
2015/03/17 00:22 163 ほげ.tex
2015/03/17 00:22 163 表.tex
11 個のファイル 5,923 バイト
2 個のディレクトリ 1,389,711,360 バイトの空き領域
[1] (./ほげ.aux) )
Output written on ほげ.dvi (1 page, 288 bytes).
SyncTeX written on ほげ.synctex.gz.
Transcript written on ほげ.log.
のような感じになりますが,
----
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" ほげ
とすると,
Document Class: jsarticle 2014/02/07 okumura
) (./قげ.aux) 文字化けしない表① ドライブ C のボリューム ラベルは
のような感じとなり,uplatex 部分で表示されるファイル名の「ほ」が(コマンドプロンプト上では)半角の■に化けます.\message の中身やdvipdfmxのメッセージは文字化けしません.
----
ここで満を持して
ptex2pdf -l -u -ot "-synctex=1 -shell-escape" 表
ptex2pdf -l -u -ot "-synctex=1 -shell-escape -sjis-terminal" 表
を試すと,どちらともエラーになります.
! I can't find file `・.
<to be read again>
\
<*> 表
(Press Enter to retry, or Control-Z to exit)
のようなメッセージが得られるわけです.
----
ようやく
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape" 表
とすると,
No file 陦ィ.aux.
譁・ュ怜喧縺代@縺ェ縺・。ィ竭 ドライブ C のボリューム ラベルは
<snip>
2015/03/17 00:22 163 表.tex
2015/03/17 00:38 0 陦ィ.synctex.gz(busy)
16 個のファイル 11,980 バイト
といった感じになります.
----
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape -sjis-terminal" 表
では
(./表.aux) 文字化けしない表① ドライブ C のボリューム ラベルは
<snip>
2015/03/17 00:22 163 表.tex
2015/03/17 00:38 441 陦ィ.synctex.gz
2015/03/17 00:41 0 陦ィ.synctex.gz(busy)
18 個のファイル 14,048 バイト
2 個のディレクトリ 1,389,690,880 バイトの空き領域
[1] (./表.aux) )
Output written on 表.dvi (1 page, 288 bytes).
SyncTeX written on 陦ィ.synctex.gz.
Transcript written on 表.log.
陦ィ -> 陦ィ.pdf
という感じになり,synctex.gz のファイル名と dvipdfmx のメッセージが文字化けして,他は文字化けしません.
----
ちなみに,
ptex2pdf -l -u -ce-utf8 -ot "-synctex=1 -shell-escape -sjis-terminal" ほげ
とすると,
synctex.gz のファイル名と dvipdfmx のメッセージが「縺サ縺」のように化けます.
----
Norbert さんが最初に心配した,\write18 の例でうまく両立できない例が作れていない気がしますが,何かよい例はあるでしょうか?
% 表組みでもして示さないと,わかりにくいですね.