e4e10334 での実装は,#33971 中に書いた
* 但し,\aftergroup を使ってボックス,\vadjust, \insert を抜けたら「外側のリスト」での状況を \global\let して戻す
という方針を採用しました.同チケットでも議論しているように, \ifydir 等は if-token でないと問題が起きるのでこのようにしていたのですが……. Lua 側のみから(tex.print を使わずに)let することができればいいなあ.
TeX 側から組方向を見えないというのはまずいので,\ltjgetparameter から「現在の組方向」 「一番内側の垂直リストの組方向(\vadjust 用)」を数値として取得できるようにしておきます. こんな感覚です:
(\ifnum\ltjgetparameter{direction}=3) == (\iftdir)
commit 648ac285 で \ifydir, \ifybox 等を削除しました.上コメントにも書いたとおり
\ifydir ↔ \ifnum\ltjgetparameter{direction}=4
\iftdir ↔ \ifnum\ltjgetparameter{direction}=3
\ifddir ↔ \ifnum\ltjgetparameter{direction}=1
\ifybox{<num>} ↔ \ifnum\ltjgetparameter{boxdir}{<num>}=4
\iftbox{<num>} ↔ \ifnum\ltjgetparameter{boxdir}{<num>}=3
\ifdbox{<num>} ↔ \ifnum\ltjgetparameter{boxdir}{<num>}=1
という対応関係になります.
なお, \ltjgetparameter{boxdir}{<num>} は \box<num> が空のときは 0 を返すようにしています.
完了としておきます.
commit e4e10334 で次のソースをタイプセットすると
%#!luatex \input luatexja.sty \leavevmode \leaders\hbox{a}\hskip200pt \end次のようなエラーが出ます.! Leaders not followed by proper glue. <to be read again> \global l.1 \global \ddirfalse \ltj@@reset@badness ...emp or tex.globaldefs end } l.3 \leavevmode \leaders\hbox{a} \hskip200pt ?これは,\hbox の直後で「外側のリストにおける \ifydir, \iftdir, \ifddir を復元」 させていることによるものだと思われます.