Skip to content
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

全角英数・半角カナの \kcatcode のデフォルト値 #3

Closed
t-tk opened this issue May 6, 2019 · 26 comments
Closed

全角英数・半角カナの \kcatcode のデフォルト値 #3

t-tk opened this issue May 6, 2019 · 26 comments

Comments

@t-tk
Copy link
Collaborator

t-tk commented May 6, 2019

「upTeX 1.24 での全角英数・半角カナの \kcatcode のデフォルト値」 texjporg/tex-jp-build#79 に関連し、「\kcatcode をフォーマット作成時に補正する」案についてここで議論したいと思います。

@t-tk
Copy link
Collaborator Author

t-tk commented May 6, 2019

こちらでも再掲しておきます。
「upTeX 1.24 での全角英数・半角カナの \kcatcode のデフォルト値」は明確なバグ(意図していない動作)です。

  1. 全角英数・半角仮名の \kcatcode のデフォルト値が 17 になるはずが 18 になってしまった
  2. 全角英数, 半角仮名, その他の"Halfwidth and Fullwidth Forms"ブロックの文字の \kcatcode をバラバラに設定できるはずが出来なくなってしまった

の2つの影響があると思います。
1が「\kcatcode をフォーマット作成時に補正する」で改善するならありがたいです。(workaround的ですが。) それでも2は改善しないでしょう。科研費マクロが1で改善するならありがたいです。

68f4312 とupTeX 1.24 で軽くテストしたところ、予想通り 1 は改善しましたが 2 は、やはり駄目でした。

@aminophen
Copy link
Member

テストありがとうございます。

予想通り 1 は改善しましたが 2 は、やはり駄目でした。

とのことなので,2がどのくらい致命的かによって,「バイナリのリビルドを依頼する」か,「workaround 的にフォーマットで1だけ解消する」かを選べるでしょうか。 @doraTeX さん,2の

全角英数, 半角仮名, その他の"Halfwidth and Fullwidth Forms"ブロックの文字の \kcatcode をバラバラに設定できるはずが出来なくなってしまった

はどのくらい致命的でしょうか?

t-tk added a commit that referenced this issue May 10, 2019
@t-tk
Copy link
Collaborator Author

t-tk commented May 10, 2019

kcatcode のデフォルト値を出すテスト入力 show_kcat.tex を追加しました。これを最初からやっていればと後悔。
何もなければ明日 uptex-base を CTAN に投稿します。

t-tk added a commit that referenced this issue May 10, 2019
@doraTeX
Copy link
Member

doraTeX commented May 11, 2019

@doraTeX さん,2の

全角英数, 半角仮名, その他の"Halfwidth and Fullwidth Forms"ブロックの文字の \kcatcode をバラバラに設定できるはずが出来なくなってしまった

はどのくらい致命的でしょうか?

元々全角英数字をこのブロックからカテゴリーコード分離した理由が,

  • pTeXとの互換性: upTeXでもpTeXと同様に全角英数字を制御綴の一部として使えるようにしたい。
  • でも句読点や全角カンマ・ピリオドまでカテゴリーコードを17にすると禁則処理が緩くなってしまう。

ということだったと思います。ですからフォーマット側でこのブロックのカテゴリーコードをまるごと17に変更してしまうと,禁則処理がまずいことになりそうです。

@t-tk
Copy link
Collaborator Author

t-tk commented May 11, 2019

ごもっともです。困りました。ただし、句読点「、」U+3001, 「。」U+3002 は今回の話と無関係ですね(確認)。言い直すと

  • pTeXとの互換性: upTeXでもpTeXと同様に全角英数字を制御綴の一部として使えるようにしたい。
  • 全角疑問符、全角感嘆符、全角カンマ・ピリオドまでカテゴリーコードを17にすると禁則処理が緩くなってしまう。

Wikipedia 句読点 を見ると横書きでは「,。」「,.」が一般的だそうで。

ちゃんとするには「バイナリのリビルドを依頼する」しか残された道は無いような気がします。

@t-tk
Copy link
Collaborator Author

t-tk commented May 11, 2019

ところでkcatcode 17 と 18 の禁則処理の差って何でしたっけ?
widow penalty は仮名だけだったような、また pre/post break penalty は kcatcode と無関係だったような?

(訂正)
17 は仮名ですからwidow penalty の影響ありますね。
「した.」のような場合「し」と「た」の間でwidow penalty が効かなくなってしまう。

@t-tk
Copy link
Collaborator Author

t-tk commented May 11, 2019

思いつきですが
Update したバイナリーを Tex Liveのリビルドではなく TLContrib で提供してもらえるように出来ないでしょうか。下記に該当するような気がします。

The packages on this site are not distributed inside TeX Live proper for one or another of the following reasons:

  • because it is an executable update;

@norbusan
Copy link
Member

はい、基本的にこれは可能ですが、ちゅうぶんのアーキテクチャのバイナリが必要です。必ず*_linux, *_macos, そしてできればwin32.

@t-tk
Copy link
Collaborator Author

t-tk commented May 12, 2019

@norbusan、有難うございます。
少し考え直して、以下の方針にしようかと思っています。

  1. ukinsoku.tex には workaroundとして「upTeX-1.24 の場合、該当ブロックのkcatcode を 16(kanji) に指定」を入れる
  • 全角英数字を制御綴の一部として使える
  • 全角疑問符・感嘆符・カンマ・ピリオド等のwidow penalty関連動作は 18(other_kchar)同等 誤りでした
  1. 並行して upTeX-1.25 を TLContrib に置いてもらえるように活動する

@t-tk
Copy link
Collaborator Author

t-tk commented May 12, 2019

その方針で 2019-05-12 を CTAN へ投稿しました。

@norbusan
Copy link
Member

了解です。ありがとうございます。
バイナリーがあれば、僕へメールをお願いしまし。
よろしくお願いします。

@aminophen
Copy link
Member

https://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=2638#p15432 参照。

やはり「uptex-base と uplatex の ukinsoku.tex でバグ回避する」というのは悪手だったようです。やはり素直にごめんなさいして,リビルドを申請する方向でお願いしたいですが,いかがでしょうか。

@tattsan
Copy link

tattsan commented May 24, 2019

uptex-devel の 1.25 を頂いてビルドしてみましたが、\uptexrevision がまだ24を返すので、
ukinsoku.tex の 1.24用 work around に引掛ってしまいました。

@aminophen
Copy link
Member

uptex-devel の 1.25 を頂いてビルドしてみましたが、\uptexrevision がまだ24を返す

ほんとですね,ソースを見て変更忘れだと気づきました。報告ありがとうございます。

@t-tk さん,修正お願いいたします。

@t-tk
Copy link
Collaborator Author

t-tk commented May 25, 2019

@tattsan, ご指摘有難うございます。

upTeX_revision, upTeX_version_string を修正し TeX Live svnにコミットしました (r51221) 。
リビルドを申請する方向というのは了承します。
リビルドという手続きがどういう風になっているのか分かりません。
TeX Live 2019 が出てから既に dvips, dvipdfmx 関連でtagが打たれているようなのですが、
https://www.tug.org/svn/texlive/tags/texlive-2019.1/ (r51059)
https://www.tug.org/svn/texlive/tags/texlive-2019.2/ (r51075)
これと同時に他も新しくなっているのならば、(e)uptex は \uptexrevision がまだ24を返すけれども中身は uptex 1.25 (r51069)に既になっているのかそうでないのか?
Karlさんに個別にお願いすることになるのか?

@t-tk
Copy link
Collaborator Author

t-tk commented May 26, 2019

Karl さんに rebuild 出来ないか? と問い合わせメールを送りました。

@aminophen
Copy link
Member

バージョンの修正,リビルドへの同意,Karl さんへの連絡等,色々ありがとうございます。

@t-tk
Copy link
Collaborator Author

t-tk commented May 26, 2019

@aminophen さん、こちらこそいろいろ有難うございます。

https://www.tug.org/svn/texlive/tags/texlive-2019.2/ みたいな話があるんだったらもう少し前に決断すべきでした。さらに r51221 のようなミスが残っているようでは、まだまだチェックが甘かった、といろいろ反省しています。

今回(upTeX 1.24)のバグの影響を整理しなおします。

  • kcatcodeの初期値の観点
    • 全角英数字・半角仮名の kcatcode のデフォルト値が 17(kana) になるはずが 18(other_kchar) になってしまった
  • kcatcodeのグループ分けの観点
    • 制御綴の一部として「全角英数字・半角仮名を含む」と同時に「全角疑問符、全角感嘆符、全角カンマ・ピリオド・括弧類を含まない」動作の両立ができない
    • widow処理:「全角疑問符、全角感嘆符、全角カンマ・ピリオド・括弧類を記号(other_kchar)として扱う」と同時に「全角英数字・半角仮名を仮名(kana)として扱う」動作の両立ができない
  • pTeXとの互換性
    • 上記項目は、いずれもpTeXとの互換性を損なう項目に該当する。

@aminophen
Copy link
Member

リビルドが承認されたようで,ひとまずホッとしました。

upTeX_revision, upTeX_version_string を修正し TeX Live svnにコミットしました (r51221) 。
まだまだチェックが甘かった

バージョン番号の変更忘れが起きた場合に気づくきっかけになればと思い,r51243 でテストケースを作ってみました。(メモ:余分なテストも入れていますが,r51221 の修正前のミスがある状態で

# check consistency between runtime and version output

の所で exit 4 で落ちる設計にしたつもり。)

@t-tk
Copy link
Collaborator Author

t-tk commented Jun 1, 2019

TeX Live 2019.3 で (e)upTeX 2.15 のリビルドを進めていただいています。
https://www.tug.org/svn/texlive/tags/texlive-2019.3/ (r51265)
各方面のご尽力に感謝します。

ご相談。ukinsoku.tex の 1.24用 "work around" は 1.24向けとしてもあまり意味が無かったことが分かっていますが、revertしましょうか? そのままにしましょうか?

@aminophen
Copy link
Member

大変遅くなりました。1.24向けとしても意味がないのと,\uptexversion が未定義だった古い upTeX も考慮できていなかった(現状 tltexjp にある ptex-ng バイナリでも未定義なのでフォーマット作成できない)ので,外しましょう。

@aminophen
Copy link
Member

ところで,x86_64-darwinlegacy や幾つかのバイナリはまだ 1.24 のままでしょうか?

@t-tk
Copy link
Collaborator Author

t-tk commented Sep 17, 2019

"work around"もどきは外すことに賛成です。
他に近日更新の予定がなければこれだけの更新(revert)をCTAN登録しましょうか。
作業は週末にしようと思います。

今 TeX Live の binaryの場所 を見たらeuptex のrevisionは以下の通りでした。
多数(11/16)はリビルドをご対応いただいています(ご協力に感謝します)が、armhf-linux, i386-freebsd, i386-solaris, x86_64-darwinlegacy, x86_64-solaris の5個が未対応の状況です。

  • aarch64-linux r51289
  • amd64-freebsd r51253
  • amd64-netbsd r51242
  • armhf-linux r50874
  • i386-cygwin r51257
  • i386-freebsd r50790
  • i386-linux r51274
  • i386-netbsd r51242
  • i386-solaris r50790
  • win32 r51237
  • x86_64-cygwin r51257
  • x86_64-darwin r51254
  • x86_64-darwinlegacy r50790
  • x86_64-linux r51274
  • x86_64-linuxmusl r51274
  • x86_64-solaris r50790

@aminophen
Copy link
Member

uptex-base は私の方でほかに更新予定ありません。uplatex にも ukinsoku.tex が付いているのですが,そちらは LaTeX2e 2019-10-01 対応のために更新予定(特に texjporg/platex#85 の \DeclareErrorFont の件)なので,そのついでで良いと思っています。

@t-tk
Copy link
Collaborator Author

t-tk commented Sep 22, 2019

ukinsoku.tex をrevert したものを 2019-09-22 としてリリースし、CTAN投稿しました。
お手数ですが uplatex の方はお願いします。

@aminophen
Copy link
Member

uptex-base のリリースありがとうございます。uplatex の方は texjporg/uplatex@26f1904 で作業しておきましたので,platex を出すときに当方で一緒に CTAN に出します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants