-
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
禁則テーブル,\inhibitxspcode 情報テーブルからのエントリ削除 #26
Conversation
なんか「私が読んだことのある pTeX の仕様」と違うな,と思ったので探すと,jtex.pdf 2.4.2 節に
とあるので,禁則ペナルティについては少なくとも,グローバルに 0 を設定すれば解放されるのが意図した挙動であり,そうでないとすると一種のバグになるのだと思います。 |
(ローカルに削除されることについては私もまだ不安ですが)少なくとも現状ではグローバルな代入でも削除されないようです.
もし「グローバルに 0 を設定すれば解放される」のであれば, |
読み直して納得.ローカルに文字 A の情報を削除→その場所にグローバルに文字 B の設定,のとき,外側のグループに抜けたときに文字 A の情報が B の情報に置き換わってしまうのですね. エントリ削除 (禁則だと |
0640453 で,エントリを削除するのはグローバルな代入 or 現在のグループレベル ( |
私もこれと同じ意見でした。 0640453 を確認してみましたが,大丈夫そうです。 |
#11 や luatexja#37465 に関連して,前禁則ペナルティの合算処理の部分を
ようにしてみました ( |
ありがとうございます.ただ,
を入力すると,pTeX では
となり,結局「あい」間のペナルティは -10000 であるのと変わらない状況になります.これは意図した挙動でしょうか? なお,LuaTeX-ja で同等の入力を走らせると,「5000 に (-10000+10000) = 0 を足す」計算になり,
となります( |
コードを綺麗にしていただいてありがとうございます。 \prebreakpenalty や \postbreakpenalty を負に設定する例を実用で見たことがないので,考慮していませんでした。LuaTeX-ja のような「負の無限大と正の無限大を足す」という計算は妥当かどうかを含め,どうあるのが自然なのかすぐには思いつきません。 |
とりあえず
を merge して TeX Live svn に commit しました (r45331) 。合算の話は別ブランチにしてありますので,別のプルリクエストに分けます。 (あと #25 の |
pTeX では \prebreakpenalty, \postbreakpenalty の情報を禁則テーブルに,また \inhibitxspcode の情報を専用テーブルに格納していますが,これらはどちらも 256 文字の領域しかありません.
実用上は困らないと思いますが,「一旦テーブルに追加されるとそこから削除されることはない」という仕様が気になったので,デフォルト値(禁則ペナルティの場合は 0,\inhibitxspcode の場合は 3)を設定した場合には該当するテーブルからエントリを削除するようにしてみました.
なお,ptex-manual のコミット texjporg/ptex-manual@8f8c0ab では,本プルリクの内容も含めた記述になっています.