ptex2pdfでsynctexファイルの文字化け

Re: ptex2pdfでsynctexファイルの文字化け

- Akira Kakuto の投稿
返信数: 12
これは,ほげ.tex がユニコード対応前の uplatex でも使える
名前だからだと思います。表.tex はだめ。
ptex2pdf では Norbert さんが言われているように
どんな漢字ファイルでも使用できるように
command_line_encoding=utf8
を putenv しています。 これを putenv するのを オプションに
してもらったほうが良いでしょうか?
Akira Kakuto への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Norbert Preining の投稿
新しいオプジョンを作りました:
-ce 'str'
Windowsの場合は(エンジンの関係なし!)
command_line_encoding=str
の設定されている。

試してみたい方はここからダウンロードできます:
https://raw.githubusercontent.com/norbusan/ptex2pdf/master/ptex2pdf.lua

意見と他の提案をよろしくお願いします。

ノルベルト
Norbert Preining への返信

Re: ptex2pdfでsynctexファイルの文字化け

- KUROKI Yusuke の投稿
全然追いつけていないのですが,
https://okumuralab.org/tex/mod/forum/discuss.php?d=788
で導入した,-sjis-terminal みたいなものと統一したオプション名や設定の仕方にはならないでしょうか?
KUROKI Yusuke への返信

Re: ptex2pdfでsynctexファイルの文字化け

- KUROKI Yusuke の投稿
やっぱり追いつけていないので,テストを作ってみました.日本語の文字コードに関していろいろ混ざったテストです.実行環境は 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 の例でうまく両立できない例が作れていない気がしますが,何かよい例はあるでしょうか?

% 表組みでもして示さないと,わかりにくいですね.
KUROKI Yusuke への返信

Re: ptex2pdfでsynctexファイルの文字化け

- 阿部 紀行 の投稿
% い.tex
\documentclass[uplatex]{jsarticle}
\begin{document}
\immediate\write18{echo a > あ}
\end{document}

uplatex -synctex=1 -shell-escape い.tex
でコンパイルすると,
* \write18で生成される「あ」
* synctexで生成される「か.synctex」
のどちらかは化けてしまうということでしょうか?

(どちらかというと表.texというファイルを表.synctexを生成しつつコンパイルする手段がないのが問題なのでしょうが.)
阿部 紀行 への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Akira Kakuto の投稿
%
% い.tex
%
\documentclass[uplatex]{jsarticle}
\begin{document}
\immediate\write18{echo a > あ}
\section{Test}
This is a test.
\end{document}

(1) command_line_encoding=utf8
のとき,

は正しくて
い.synctex
が化ける。

(2) command_line_encoding=
のとき,

は文字化けして
い.synctex
は正しい。

ということです。
Norbert Preining への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Akira Kakuto の投稿
> 意見と他の提案をよろしくお願いします。

これで良いと思いますが,使われる方への注意:

-ce 'utf8'



-ce 'utf-8'

だけが意味を持ち (同じ意味),他の場合は何も設定しない
のと同じです。上のように設定すると,(e)uptex で
0x5c を含む漢字をファイル名として使用できます。
(そのかわり,指摘されたように synctex で文字化け
がおこる)

なお,現在漢字が使える場合にはどんな場合も
-jobname=何々 は必要ありません (匿名様)。
Akira Kakuto への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Norbert Preining の投稿
これはどうでしょうか:
2つのオプジョン:
-sjis-terminal

-utf8-terminal

* どちらも使われていない場合は
- p(la)tex -> command_line_encoding=sjis
- (e)up(la)tex -> command_line_encoding=utf8

* ひとつのオプジョンの場合は -> それを使う

* 2つのオプジョンの場合は -> error

どうでしょうか?
Norbert Preining への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Akira Kakuto の投稿
現在の

-ce 'str'

がわかりやすくて better だと思います。
ce (command_line_encoding の略)。

何度も書くように str は utf8 あるいは utf-8
だけが意味を持ち,あとは無意味です。
Akira Kakuto への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Norbert Preining の投稿
でも、utf8/utf-8だけ意味があれば、'str'の部分をやめて、-ce-utf8だけにしたらどうですか。
Norbert Preining への返信

Re: ptex2pdfでsynctexファイルの文字化け

- Akira Kakuto の投稿
> -ce-utf8だけにしたらどうですか。

はい。その方がもっと良いと思います。