北川です.たびたびすみません.
以下の4行のソースを
> ptex -ini b3.tex
で実行させると,
>! This can't happen (disc4).
と,出てはいけないメッセージが出てしまいました.
-- b3.tex ここから ---
\input ptex.tex
か\inhibitglue\char\sjis"8A79か\inhibitglue\char15
\discretionary{S}{T}{\kern1pt}\unkern f\kern5pt
\discretionary{あ}{お}{う}\unkern
\end
--- ここまで ---
オリジナルの pTeX-3.1.11(euc) で確認した他,
前トピックで角藤さんが作ってくださった ptex-base.ch.0308.diff を当てたバイナリ,
そして ptex-base.ch.0308.diff の後に添付した ptex-base.ch.0314.diff(新 a.tex, b2.tex へのパッチのつもり)を当てたバイナリでも確認しました.
どうやら(上メッセージを出力するセクションで)s が \kanjiskip 由来のグルーになってしまっているようです.
ptex-base.ch を眺めたところ,\discretionary の第3引数(以下 NOBREAK とします)
内に和文文字がある場合の考慮がされてなかったようなので,
たたき台としてパッチを作ってみました.
しかし,簡単にするため,NOBREAK 内で \xkanjiskip の挿入処理はサボっていて,\discretionary の後に
\xkanjiskip を挿入するか否かの判定もかなり適当にしています.
さらに,NOBREAK 内に jfm 由来のグルー等がきたときの処理も,まだ考えていません.
内に和文文字がある場合の考慮がされてなかったようなので,
たたき台としてパッチを作ってみました.
しかし,簡単にするため,NOBREAK 内で \xkanjiskip の挿入処理はサボっていて,\discretionary の後に
\xkanjiskip を挿入するか否かの判定もかなり適当にしています.
さらに,NOBREAK 内に jfm 由来のグルー等がきたときの処理も,まだ考えていません.