pTeX の不審な挙動(その3)

pTeX の不審な挙動(その3)

- 北川 弘典 の投稿
返信数: 6
北川です.たびたびすみません.
以下の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 由来のグルーになってしまっているようです.
北川 弘典 への返信

Re: pTeX の不審な挙動(その3)

- 北川 弘典 の投稿
単に

\input ptex.tex
\discretionary{あ}{お}{う}
\end

だけでも発生するみたいです.
北川 弘典 への返信

Re: pTeX の不審な挙動(その3)

- Akira Kakuto の投稿
よくわかりませんが、メッセージは消えると思います。

Akira Kakuto への返信

Re: pTeX の不審な挙動(その3)

- Akira Kakuto の投稿
Akira Kakuto への返信

Re: pTeX の不審な挙動(その3)

- Akira Kakuto の投稿
glue_node もはじくと、出なくなるので、やはり
s がグルーになっているのでしょうか。

Akira Kakuto への返信

Re: pTeX の不審な挙動(その3)

- 北川 弘典 の投稿
やっと時間が取れたので,確認してみました.
b3.tex では,s が penalty_node になるときと glue_node になるときが1回ずつあるようです.

glue_node の場合をはじく時に,

> breadth_max:=100000; depth_threshold:=10000;
> show_node_list(s);

を付け加えて動かしたら,

> \glue(\kanjiskip) 0.0 plus 0.4 minus 0.4
> \tenmin う
> \penalty 10000

が出たので,s は glue のようです.
北川 弘典 への返信

Re: pTeX の不審な挙動(その3)

- 北川 弘典 の投稿
ptex-base.ch を眺めたところ,\discretionary の第3引数(以下 NOBREAK とします)
内に和文文字がある場合の考慮がされてなかったようなので,
たたき台としてパッチを作ってみました.

しかし,簡単にするため,NOBREAK 内で \xkanjiskip の挿入処理はサボっていて,\discretionary の後に
\xkanjiskip を挿入するか否かの判定もかなり適当にしています.
さらに,NOBREAK 内に jfm 由来のグルー等がきたときの処理も,まだ考えていません.