チケット #33940

縦組み状態で生成された空ボックスの組方向がおかしい

登録: 2014-06-12 22:04 最終更新: 2014-06-19 09:22

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし
ファイル:
なし

詳細

チケット #33761 のコメント中に

また,
(tate direction) \global\setbox0=\hbox{}\leavevmode\unhbox0
でも "Incompatible direction list can't be unboxed." というエラーが出ます.

と書きましたが, 現在の kitagawa_tfont ブランチの

\setbox0=\hbox{}
では \box0 は(周囲がどんな組方向でも)横組み扱いになってしまいます.

チケットの履歴 (4 件中 3 件表示)

2014-06-12 22:04 更新者: h7k
  • 新しいチケット "縦組み状態で生成された空ボックスの組方向がおかしい" が作成されました
2014-06-12 22:15 更新者: h7k
コメント

\everyhbox, \everyvbox を利用して, 各ボックスの最初には組方向格納用 whatsit をつける」 という方法を試していますが,これでは

\hbox to 30pt{}
のように大きさが指定された空ボックスで必ず Underfull 警告が出てしまいます.

2014-06-16 18:10 更新者: h7k
コメント

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 等のレジスタ代入・内部パラメタへの代入が安全なのかがいまいちわかっていないので,困っています.

2014-06-19 09:22 更新者: h7k
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2014-06-19 09:22 に更新されました
コメント

「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 に間に合ったかもしれない.

添付ファイルリスト

添付ファイルはありません

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする