-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pTeX/upTeX の日本語ファイル名 #45
Comments
私の経験上、 |
e-pTeX 側で,関係しそうなチケットが作られたので貼っておきます:https://ja.osdn.net/projects/eptex/ticket/38246 (eptex #38246: 日本語ファイル名でエラー) |
本質的な解決にはなりませんが,「名称未設定-1.tex」なる名前を付けているのは“統合環境”である可能性が高いです。多分新しいファイルを作るとデフォルトでそうなるんだと思いますが,そこは日本語化しなくていいと思います。改修してもらうことはできないでしょうか? TeXworks は untitled-1.tex ですが,TeXShop とか,TeXstudio とかはよく知りません。 |
標準的なmacOSのマルチドキュメントアプリは,英語環境で起動すれば |
コマンドライン引数のエンコーディングと処理されるファイルのエンコーディングが違う場合に困ったことになるということでしょうか? |
手元にmacOSは無いので、現象から想像してコメントします。
おそらくこの理解で合っていると思います。 WindowsかつpTeXの場合、コマンドライン引数は Shift_JIS 決め打ち、内部コードも Shift_JIS 決め打ち、テキスト入力は Unix/Linux系でも同様の機構を入れれば、本質的な解決になると思います。 |
これは、Unix系では、kpsewitch のファイル検索とオープンはただのバイト列と見做して行うので |
私なぞがここに書き込んでいいのか悩みましたが解決の糸口になればと… 区 点 jis sjis euc utf-8 utf-16 30 40 3E48 8FC6 BEC8 E785A7 7167 照 という結果になりました |
@t-tk 「texmf.cnf の command_line_encoding」は,この記事のことでしょうか? |
そうです。 |
ロケールを見て文字コードを判別するやり方について、↓のような記事を見つけました。
そうすると、ファイルシステム上のファイル名がどの文字コードであるか、自動的に判定する方法は無いという事になります。うーむ。 以前私の書いた
も問題で、「入出力ファイルの中身がUTF-8であること」と「ファイルシステム上のファイル名の文字コード」とは必ずしも同じではないので、良い方法ではなかったです。 「正しい仕様」についてご意見ありましたらお願いします。 |
最近 TeX Live ML で pdfTeX, Windows でnon-asciiのファイル名の話題が出ています。 p(La)TeX + ptexencの場合、ソース上はUTF-8でもpTeXエンジンに渡るときにはSJIS/EUCに変換済みなので、そっくり同じには出来ないと思います。 |
pTeX + ロケールが utf8 で日本語ファイル名の対応について、手元でソースをいじりつつ実験しています。
結局、Unicode→JIS→Unicodeの変換をすることになるので、変換表のゆらぎ問題の影響がもろに出ます。 |
何となくですが、
がゴッチャになっている気がします。
ここで挙げられているのは純粋に 2 の問題であるような気がしますが、それで合ってるでしょうか? つまり、macOS/Linuxにおいて、以下の言明は成り立つでしょうか?
|
https://ja.osdn.net/projects/eptex/ticket/38246 (eptex #38246: 日本語ファイル名でエラー)でもコメントしていますが,そこでの元々の話は
によるものだと思います.手元の Linux で調べてみました:
(pTeX の内部コードが EUC なので「名称未設定-1」が「�^^90^^8d腱井^^9c┃絎^^9a-1」に化けるのは仕方がないことだとは分かっていますが,この文字列はバイト列としてそのまま端末に出力する」みたいなフラグを導入すれば良い??) |
なるほど。今まで 1 がさほど問題にならなかったのは 2 がなければ顕在化しないケースが多かったからでしょうね。
は、出来れば
の方が分かりやすいでしょうし、platexのソースコード内で
メッセージやログなどに文字化けが残っていますが、見掛けだけの話で動作に支障は無いと思います。 |
>h-kitagawa さん
ありがとうございます。 >t-tk さん
これはその通りだと思います。 あと、2 の方の問題はpTeX系に限った話ではなくて、世界中のWindows(コマンドラインがUTF-8でない)で同様の問題が起こる(参考)ので、そちらはLaTeXチームにより対処が行われることが期待されます。
|
2の問題に関して、気になっているのは次のようなケースです。 % pdflatex; Linux; UTF-8
%\UseRawInputEncoding %←これがないとエラー
\documentclass{article}
\begin{document}
\input{Begrüßung}
\end{document} % uplatex; Linux; UTF-8
%\UseRawInputEncoding %←これがないとエラー
\documentclass{article}
\begin{document}
% <ü><ß>は欧文扱い
\input{ドイツ語-Begrüßung}
\end{document} これも、pTeX系に限らない話であるため、近いうちにLaTeXチームによって対処される可能性が高そうです。 |
欧文LaTeX と UTF-8規定化問題でも、問題点がごっちゃに語られているように思います。
これは、1の方の問題で、pdfTeX に角藤さんが 2 の問題は、upLaTeX + ロケールUTF-8のLinux/MacOS でも発生するのですね。「近いうちにLaTeXチームによって対処される」のに期待したいと思います。 |
「pLaTeXで画像ファイル名」の方はどうしましょう。 |
specialの中のファイル名がUTF-8だったら、「 だとすれば、「ソースをUTF-8で書く場合の欧文(pdf)LaTeX」と解決を共有できそうなんで好ましそうです。 |
(今更ですが) このIssueの発端となっている
という現象の原因は、単に
ということでした。 自分が調べた限りだと、「 |
「Windows, ShitJISでp(La)TeXを使う人がdvips, dvipdfmxに
角藤さんが最近 pdvipdfmx, pdvips などを追加したり、dviwareの改造を試みたりされているのは、
私の予想ですが、そういう意図です。 欧文TeX の場合、レガシーエンコーディングの時代の多数派は「エンジンの内部コードはT1などのTeX独自8bitエンコーディング、入出力ファイルはLatin-1、コマンド行など外部はLatin-1、specialの文字列はTeX 8bitエンコーディング」だったと思います。
似ている点とpTeX独自な点がありそうで、調べた方が良さそうです。(ややこしそう…) |
LANG=ja_JP.utf8のLinuxで簡単なテストをしました。 % platex (utf8.euc), Linux, LANG=ja_JP.utf8 でテスト
\documentclass{article}
\usepackage{graphics}
\begin{document}
\includegraphics{弌丐丕.eps}
\end{document} 結果はこうなりました。
1は先日の改造の効果が現れています。 「 |
WindowsのpdfTeX への 以前の議論の続き。
1は、LaTeXチームの対策待ちです。 2は、pdfTeXとpTeXで仕様上似ている点とそうでない点があり、 |
今回の場合とは逆方向の ptenc_from_utf8_string_to_internal_enc や input_line2 ですね.
例えば,
となり,もうぐちゃぐちゃです. あきらめて「明示的にエラーを起こした方が」良いのかもしれません. |
確認ですけど、内部漢字コード=eucのpTeXで |
まさしくそのようになっています. |
UTF-8→EUCに変換できない場合にどうするのか、ブレインストーミングを兼ねて仕様案です。
1 は気乗りしません。ptexenc がライブラリーという立場なので、fallbackして進める方針の方がよいと思います。 2 は慣習としてやっていいような気もします。本当に下駄記号を意図して使おうとしている場合と区別が困難なのをどう考えるか。 3 は本当にその文字列を意図して使おうとしている場合は稀で、一番安全かもしれません。それに、変換できなかったバイト列の情報が保存されるのでデバッグしやすい利点、ptexencの内部動作を知らないユーザーもエラーに気づきやすい利点もあると思います。文字列が長くなるのが実装上面倒かも知れません。 私としては、2 か 3 を支持します。 |
個人的には TL2018 以前では文字コード変換していなかったのを TL2019 で変換するようになったのは,「ソース中に書かれた |
と思います。私としては充分だと思います。 |
non-windows での仕様を理解したいので,お手数ですが確認させてください。
を実現するために ptexenc が行なっているのは,
各「変換」がどの関数に対応しているか,また … の部分が TL2019/2020 でどう扱われているのか埋めて頂けると有り難いです。 |
記憶を元に書くと non-windows かつロケール UTF-8かつ pTeX かつソースコードが UTF-8 では
そして
3 は TeX Live svn r47967, r47972 あたりで触った場所です。 |
ちなみに、日本語WindowsかつpTeXでは、たしか、 |
ありがとうございます。しかし,
のところは, → edit: 少しわかりました。入力バッファの時点で ^^ab に変換が済んでいて,それが欧文の 8bit 処理に回った結果としてそれがバイト列と同一視されるということを仰っているのですね。 |
#45 (comment) を私が正しく理解できていればですが
の『仕様案3「^^ab 形式に変換する」を実現すること』と,
を『non-windows の pTeX で Unicode の範囲で実現すること』は同値ではないでしょうか。 実現に労力がかかるのであれば推進する意図はありませんが,\input でファイルオープンに使われている関数を流用するだけで実現できるのであれば進めたいとも思います。 |
printkanji_16bit ブランチ上で行った変更ですが, h-kitagawa@02484d8 みたいな感じでしょうか.
|
分かりにくい表現だったかも知れません。
何がどう化けたのか理解できません。UTF-8で [e2][91][a0]は「① U+2460」, [e9][a1][9b] は「U+985B 顛」だとして, "ſ" はどこに行ったのでしょう? |
結論から言うと,[e9][a1][9b]「顛」に化けています(texjporg/platex#84 などと同様).例が悪かったですね.
|
e2 91 だけが ASCII の ^^ 記法になり,a0 が単一バイトなのはどうしてでしょうか。 |
[a0] は EUC の第一バイトでない (multibytelen(0xa0)=1) ので,ASCII の場合の処理に割り振られるからですが,あまりにも処理が大雑把でしたね.また考えます. |
現状の |
私の理解もその通りです。
そこは #81 が絡んでくる話だと思います。 |
printkanji_16bit とは関係なさそうなのでこちらに書きます。 UTF-8 な Linux 上の pTeX で pdfTeX 由来のファイル名をとるプリミティブ texmfmp.c の |
79641be を r62514 でコミットしました。 |
upTeX で内部コードが euc/sjis の場合の日本語ファイル名 #136 、 『non-windows の pTeX で Unicode の範囲でファイル名を扱えるようにする』『windows の pTeX で Unicode の範囲でファイル名を扱えるようにする』について |
少し違う話かもしれないので恐縮ですが、 $ ls
''$'\245\242\245\354''.fls' アレ.dvi アレ.log アレ.tex |
【メモ】recorder file は lib/openclose.c の recorder_start で プログラム名+PID で作成された後、recorder_change_filename で実際のファイル名にリネームされる。 以下の new_name の文字コードを変換すればよさそう? tex-jp-build/source/texk/web2c/lib/openclose.c Lines 142 to 158 in 0d227bf
これを調べていてたら -output-directory で日本語ディレクトリを指定すると .log ファイルが書き込めなくなることに気付きました。
output_directory を連結する 前 に文字コード変換をする必要がありそう?(open_input のほうはそうなっている) tex-jp-build/source/texk/web2c/lib/openclose.c Lines 415 to 427 in 0d227bf
|
私個人としては ご参考、pTeX を obsolete にするかどうかの TeX Forum での話題 :: |
Windows ではこのようなヤヤコシイことが起きないように対処されているはずなのですが,この“対処”が W32TeX では成功しているのに,TeX Live では upTeX で失敗するケースがあるという報告があります。私もまだ試せていないのですが,Windows で再現する方はいらっしゃいますか?
The text was updated successfully, but these errors were encountered: