-
Notifications
You must be signed in to change notification settings - Fork 2
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 の和文文字トークンのカテゴリーコード #4
Comments
tex.web の
あくまでも (★) を貫くとしたら, |
ご説明ありがとうございます。なるほど,理由は理解できました。どうするのがいいかは悩み中。 (ドキュメント化しようとすると,疑問発生は尽きないですね…。) |
texjporg/tex-jp-build@bdfba95 のコメント欄の続きです。
「pTeX 単独の挙動の一貫性」という観点からは,この方針に賛成です。ところが,
という2点が引っかかっています。 [2] は先のコメントに書いた通りです。 [1] は,アスキーの公式文書には「随時算出」の記載が見つからないという理由です。一方で,pTeX に詳しい方からすれば,よく知られている挙動なのでしょうか? ptex-manual.tex:
uptex-base/01uptex_doc_utf8.txt:
|
「随時算出」という仕様として書かれているわけではありませんが関連する記述としては ASCII社のweb archiveの kcatcode関連のところ (ドワンゴgithubの同ページ)に
とあります。 |
それから、現行のpTeXは内部コードがSJISの場合でも「シフトJISコードの1バイト目」ではなく「区点コードの`区'相当」で判定するようになっているはずです。ptexencかその前身のlibkanjiのどこかで実装されました。つまり「内部コードを統一すれば」は既に実現しています。 |
想定されていない使い方でしょうけれども,例えば
を走らせると,次のように現行でも pTeX と upTeX で挙動の違いが見られます:
「pTeX と upTeX の差分を減らす」のならば,pTeX でも \kcatcode を和文文字トークンに含めるように改修するのがもっとも自然でしょう.ただ,個人的には「そこまでして upTeX じゃなくて pTeX にこだわる必要はあるの?」と思っていますが……. |
「素の pTeX/upTeX バイナリ」texjporg/tex-jp-build#32 で途中になっている議論にも関連し、「pTeX と upTeXのメンテを今後どうやっていく?」ということにも深く関わっていると思います。
ということと
ということを天秤に掛けつつ、思い切ってやることにしました。
「こだわり」というより、今後のメンテナンス性という面で「pTeXとupTeXの差分を減らしたい」という希望はあります。しかし、もしやるとなると目前の実装や検証の手間もエンバグの恐怖も発生する訳で、「どこまで頑張るか?」あるいは「どこで頑張るか?」ですね。 |
皆様ありがとうございます。悩みましたが,以下のように考えるのはどうでしょうか。
では,この差異を無視する。 pTeX に upTeX の実装を持ち込む作業の手間とエンバグの恐怖を避けつつ,今後のメンテナンス性をなるべく損わない落とし所はこんなところかな,という一案です。 |
本件に関して気になった点。 ptex-manual.tex:
欧文TeXの catcode, upTeXの kcatcode では文字ごとに {,k}catcodeが保存されていたり、グループごとに初期値を別々に設定できたり細かい制御が出来る訳ですが、それと同じノリで捉えた場合に上記の表現が誤解を生むと思いました。 |
細かいことですが、オリジナルのASCII pTeXでは内部コードがSJISのときkcatcodeはSJISの上位バイト(2区ごと)に設定可能でした。 |
upTeX のリビルドに付随して,pTeX のソースにも texjporg/tex-jp-build@ea452bc の
が反映されたことになります。上のコメントに書いたマニュアルのアップデートも後ほどやっておきます。(そのためここはまだ open にしておきます) |
本件ですが,改めて動かしてみると %#!ptex
\kcatcode`あ=16\relax
\let\X=あ
\let\Z=あ
\kcatcode`あ=17\relax
\let\Y=あ
\if\X\Y T\else F\fi
\if\X\Z T\else F\fi
\ifcat\X\Y T\else F\fi
\ifcat\X\Z T\else F\fi
\ifx\X\Y T\else F\fi % => why FALSE?
\ifx\X\Z T\else F\fi
\end つまり,\ifcat と \ifx で挙動が違う状態になっています。 一応,このパッチのようにすれば \ifx でも「\kcatcode 再評価」ができますが,pTeX と upTeX の差分を増やす方向になってしまいます。むしろ前回の変更 (texjporg/tex-jp-build@ea452bc) を元に戻して「 |
to preserve consistency between \ifcat and \ifx. see texjporg/ptex-manual#4
texjporg/tex-jp-build#120 をマージしたので
に合わせてドキュメント更新しようと思います(r59701 で p3.9.1 にしています)。 → 5404284 |
texjporg/tex-jp-build#120 のコメントのうち関連する物: By aminophen:
By t-tk:
By aminophen:
|
texjporg/tex-jp-build#68 とはまた別件で…
https://twitter.com/zr_tex8r/status/1119952801952485377
(1) と (2) は
pTeX では和文文字トークンには kcatcode が含まれず,その都度算出されるが,upTeX では元々和文文字トークンに kcatcode も含まれる … (★)
という現象を試すためのものです。確かに upTeX では両方 X となるのですが,pTeX では (1) が O で (2) が X になります。(★)に基づくと (2) が X になるのが不思議ですが,なにか理由があるのでしょうか?
The text was updated successfully, but these errors were encountered: