「\everyhbox, \everyvbox を利用して, 各ボックスの最初には組方向格納用 whatsit をつける」 という方法を試していますが,これでは
\hbox to 30pt{}のように大きさが指定された空ボックスで必ず Underfull 警告が出てしまいます.
h7k への返信
「\everyhbox, \everyvbox を利用して, 各ボックスの最初には組方向格納用 whatsit をつける」 という方法を試していますが,これでは {{{ \hbox to 30pt{} }}} のように大きさが指定された空ボックスで必ず Underfull 警告が出てしまいます.
該当の LuaTeX のソース (tex/packaging.w) は
if (list_ptr(r) != null) { /* Report an underfull hbox and |goto common_ending|, if this box is sufficiently bad */ last_badness = badness(x, total_stretch[normal]); if (last_badness > int_par(hbadness_code)) { print_ln(); if (last_badness > 100) tprint_nl("Underfull \\hbox (badness "); else tprint_nl("Loose \\hbox (badness "); print_int(last_badness); goto COMMON_ENDING; } }となっているので, 「callback 内で \hbadness, \vbadness を 10000 に設定し,\aftergroup でそれを元に戻す」という方法を試みています. しかし,これでは segmentation fault や
luajittex: ../../../source/texk/web2c/luatexdir/tex/texnodes.w:1023: free_error: Assertion `p<var_mem_max' failed.のようなエラーが出てしまいます. (戻す処理を加えないとエラーは出ませんが,\hbadness, \vbadness がずっと 10000 になってしまうので)
callback 内で,どういう tex.setcount, tex.setattribute 等のレジスタ代入・内部パラメタへの代入が安全なのかがいまいちわかっていないので,困っています.
「callback 内で \hbadness, \vbadness を 10000 に設定し,\aftergroup でそれを元に戻す」という方法を試みています. しかし,これでは segmentation fault や
luajittex: ../../../source/texk/web2c/luatexdir/tex/texnodes.w:1023: free_error: Assertion p<var_mem_max' failed.
のようなエラーが出てしまいます.
rev 5023 で直ったようです.もっと早く気づく & 報告していれば,TL 2014 に間に合ったかもしれない.
チケット #33761 のコメント中に
と書きましたが, 現在の kitagawa_tfont ブランチの
では \box0 は(周囲がどんな組方向でも)横組み扱いになってしまいます.