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

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

- 匿 名 の投稿
返信数: 42
ptex2pdf -l -u -ot "-synctex=-1 -jobname=ほげほげ" "ほげほげ.tex" とするとsynctexファイルのファイル名だけ文字化けします。
その他のファイルはほげほげ.pdfのように文字化けしてはいません。
ptex2pdfのバージョンは0.5 および 0.6の両方を試しました。
匿 名 への返信

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

- Akira Kakuto の投稿
これは ptex2pdf のせいではなくて,synctex が ユニコード
対応になっていないからです。uptex と dvipdfmx は ttk さん
により,ユニコード対応にされたので,Windows でもある条件
のもとで漢字ファイル名が使用可能になっています。
ところがこの条件を synctex が知らないので文字が化ける
ことになります。
Akira Kakuto への返信

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

- 匿 名 の投稿
ptex2pdf.luaの中身を見たら単純にuplatexとdvipdfmxを順に実行しているだけと思っていたのですが、違うのですね。

uplatex -synctex=-1 -jobname="ほげほげ" "ほげほげ"
dvipdfmx "ほげほげ.dvi"
なら、synctexファイルのファイル名の文字化けはしませんでした。
Akira Kakuto への返信

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

- 匿 名 の投稿
試しにptex2pdf.luaから以下の部分を削除してみました。

if use_uptex == 1 then
if os.type == 'windows' then
os.setenv('command_line_encoding', 'utf8')
end
end

なぜかうまくいきました。なぜなんでしょうか。
匿 名 への返信

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

- Norbert Preining の投稿
僕がわかる事は、2つの問題があります:
  • uptexの中から作ったファイル(write18など):これのため、この設定が必要だと思います。(uptexのインターナルエンコーディングはutf8)
  • synctexなどの作ったファイル名:ここはWindowsのエンコーディングが必要です。
両方に対応擦ることは難しそうです。

もし一番簡単な方法は、command_line_encodingをptex2pdfのオプジョンにするかもしれません。

他の提案があれば、教えて下さい

ノルベルト
匿 名 への返信

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

- Akira Kakuto の投稿
これは,ほげ.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だけにしたらどうですか。

はい。その方がもっと良いと思います。
Akira Kakuto への返信

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

- 匿 名 の投稿
command_line_encoding=utf8で他のファイルは予定表.texでも問題ないのですが
やっぱり現状ではsynctexの文字化けは無理なんですね。

http://ja.wikipedia.org/wiki/Shift_JIS#.E8.A1.A8
予定表とか構造計算とか暴風対策なんてファイル名を使いたいときがあるんです。

動作に影響はないですが、dvipdfmxの表示も文字化けしていますね。出力されたpdfファイルは予定表.pdfで問題ないです。

dvipdfmx 予定表.tex
莠亥ョ夊。ィ.dvi -> 莠亥ョ夊。ィ.pdf
[1][2]
13908 bytes written

Windowsだけなんでしょうか。macやlinuxなどはこのような問題は起きない?
匿 名 への返信

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

- Akira Kakuto の投稿
> 動作に影響はないですが、dvipdfmxの表示も文字化けして
> いますね。出力されたpdfファイルは予定表.pdfで問題ないです。

> dvipdfmx 予定表.tex
> 莠亥ョ夊。ィ.dvi -> 莠亥ョ夊。ィ.pdf

新しい (x)dvipdfmx (TeX Live 2014 より後)
では
command_line_encoding=utf8
でも文字化けしないようになっています。
(W32TeX を入手すれば,テストできます)。

Mac や Linux は ファイル名が utf-8 なので
問題はおきないはずです。
Akira Kakuto への返信

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

- 匿 名 の投稿
匿 名 への返信

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

- Akira Kakuto の投稿
synctex を command_line_encoding=utf8 に対応させる
のは,比較的容易だったので,やってみましたが,
TeXworks が全く漢字ファイル名の synctex に対応して
いませんでした。従って幸いというか,今のままの状態
でほっておけそうです。
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
synctexはTeXworks専用というわけでもないですし,可能ならば対応してもらえるとありがたいです.SumatraPDFは和文ファイル名でも読めていそうです.(.synctexがShift_JISじゃないと駄目だったり表.texは駄目ぽかったりはしていますが.)
阿部 紀行 への返信

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

- Akira Kakuto の投稿
> synctexはTeXworks専用というわけでもないですし,

そうでした。テストとしてやっておきます。
(upTeX と eupTeX だけにしておきます)。
中に書くファイル名は local code page
(日本なら sjis) にしておきます。

表.tex が駄目っぽいということは,対応しても現状
と変わらないことになりますが...
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
ありがとうございます.よろしくお願いします.

表.tex が駄目っぽいということは,対応しても現状と変わらないことになりますが...
command_line_encoding=utf8としないと\input{あ}がうまく動かなかったりもしますので,意味はあると思います.
Akira Kakuto への返信

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

- Akira Kakuto の投稿
TeXstudio でも あ.tex の場合は, --synctex=1, --synctex=-1
の両方で synctex が使用可でした。
残念ながら,表.tex はだめでした。
したがって対応の有難味はあまりありませんが,一応対応しました。
command_line_encoding=utf8
でも化けないという点では,有難味があります。
Akira Kakuto への返信

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

- Akira Kakuto の投稿
> 一応対応しました

というわけで,結局 ptex2pdf は
version 0.6 を変更しない方がありがたい
ことになりました。
ノルベルト さん,よろしくお願いします。
Akira Kakuto への返信

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

- Norbert Preining の投稿
とういう-ceと-ce-utf8を両方を消して、自動にuptex/windowsの場合はutf8にするということでしょうか?
Norbert Preining への返信

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

- Akira Kakuto の投稿
そうです。 -ce も -ce-utf8 も消して
version 6.0 のままにするということです。

どうもご迷惑をかけて,すみません。
Akira Kakuto への返信

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

- Akira Kakuto の投稿
> 残念ながら,表.tex はだめでした。

面白いことに,TeXstudio で 表.tex はだめでしたが,
表題.tex では SyncTeX が動作しました。

参考までに,
ptex2pdf -l -u -ot "-synctex=1 -sjis" 表題.tex
の画面表示をあげておきます:

(TeX Live 2015/W32TeX) となっていますが,pretest です。


This is ptex2pdf[.lua] version 0.6.
Processing 表題.tex.
This is e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex) (TeX Live 2015/W32TeX) (preloaded format=uplatex)
restricted \write18 enabled.
entering extended mode
(./表題.tex(guessed encoding: UTF-8 = utf8)
pLaTeX2e <2011/05/07u00>+0 (based on LaTeX2e <2014/05/01> patch level 0)
Babel <3.9l> and hyphenation patterns for 79 languages loaded.
(c:/usr/local/share/texmf-dist/tex/uplatex/base/ujarticle.cls(guessed encoding: UTF-8 = utf8)
Document Class: ujarticle 2011/05/07 v1.6_u00 Standard upLaTeX class
(c:/usr/local/share/texmf-dist/tex/uplatex/base/ujsize10.clo))
(./表題.aux(guessed encoding: UTF-8 = utf8))
[1] (./表題.aux(guessed encoding: UTF-8 = utf8)) )
Output written on 表題.dvi (1 page, 4608 bytes).
SyncTeX written on 表題.synctex.gz.
Transcript written on 表題.log.
表題 -> 表題.pdf
[1]
8690 bytes written
表題.pdf generated by dvipdfmx.
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
SumatraPDFでも試してみましたが,こちらでも表題.texは動きました.(まだ新しいuplatexが来ていないので,TeX Live 2014のplatexで試しています.)不思議ですね.

(同じソースが使われているように見えるので,当然の結果かもしれません.)
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
とりあえず表.texでもビューア→エディタが動くようにするパッチを書いてみました.(TeX Live svnにあったsynctex_parser_utils.cに対するものです.)手元でSumatraPDFに対してもちいて見ましたが動いているようです.

拡張子(最後の.)やファイル名(最後の\)を探すのをWin32API任せにしてみたものですが,適切な対処かはあまり自身がありません.
阿部 紀行 への返信

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

- Akira Kakuto の投稿
ありがとうございます。 typo とかを若干手直しして,
少しテストの上,コミットしようと思います。
どうもありがとう御座いました。
Akira Kakuto への返信

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

- Akira Kakuto の投稿
r36584 としてコミットしておきました。
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
ありがとうございます.

この状態でも逆方向(エディタ→ビューア)が動かなかったので,こちらもパッチを添付します.ASCII外の文字があるかというのはあまり関係なく,単なるミスのようですが……
阿部 紀行 への返信

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

- Akira Kakuto の投稿
ありがとうございます。明らかなバグですね。
なおしておきます。applications で
使ってもらえると良いのですが ...
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
ありがとうございます.

TeX Live内のはhttp://itexmac.sourceforge.net/SyncTeX.html で配布されているもののフォークという認識でよいのでしょうか?こちらにフィードバックされることはあるのかしら?
阿部 紀行 への返信

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

- Akira Kakuto の投稿
私は詳細を知りません。状況としては
Peter さんを中心として,TeX Live でバグフィックスなど
がされています。原作者が TeX Live repository で訂正
することもあります。

http://itexmac.sourceforge.net/SyncTeX.html
では
The most recent source is retrieved from the texlive repository with a svn ...
とあります。
... do not concern the synctex parser. ともありますが...
Akira Kakuto への返信

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

- 阿部 紀行 の投稿
ありがとうございます.

http://itexmac.sourceforge.net/SyncTeX.html
> では
> The most recent source is retrieved from the texlive repository with a svn ...
> とあります。
すみません,ろくに読んでいないのがバレバレでした……
Akira Kakuto への返信

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

- Akira Kakuto の投稿
> そうでした。テストとしてやっておきます。
> (upTeX と eupTeX だけにしておきます)。

2015-04-05 の更新で,XeTeX も同じ仲間
に入れました。