ptex2pdf -l -u -ot "-synctex=-1 -jobname=ほげほげ" "ほげほげ.tex" とするとsynctexファイルのファイル名だけ文字化けします。
その他のファイルはほげほげ.pdfのように文字化けしてはいません。
ptex2pdfのバージョンは0.5 および 0.6の両方を試しました。
新しいオプジョンを作りました:
-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 の例でうまく両立できない例が作れていない気がしますが,何かよい例はあるでしょうか?
% 表組みでもして示さないと,わかりにくいですね.
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などはこのような問題は起きない?
やっぱり現状では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などはこのような問題は起きない?
> 残念ながら,表.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.
面白いことに,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.
とりあえず表.texでもビューア→エディタが動くようにするパッチを書いてみました.(TeX Live svnにあったsynctex_parser_utils.cに対するものです.)手元でSumatraPDFに対してもちいて見ましたが動いているようです.
拡張子(最後の.)やファイル名(最後の\)を探すのをWin32API任せにしてみたものですが,適切な対処かはあまり自身がありません.
ありがとうございます.
この状態でも逆方向(エディタ→ビューア)が動かなかったので,こちらもパッチを添付します.ASCII外の文字があるかというのはあまり関係なく,単なるミスのようですが……
私は詳細を知りません。状況としては
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. ともありますが...
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. ともありますが...