Tíquete #33940

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

: 2014-06-12 22:04 Última Atualização: 2014-06-19 09:22

Relator:
Dono:
(Nenhum)
Tipo:
Estado:
Fechado
Componente:
Marcos:
(Nenhum)
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Nenhum
Arquivo:
Nenhum

Details

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

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

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

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

Ticket History (3/4 Histories)

2014-06-12 22:04 Updated by: h7k
  • New Ticket "縦組み状態で生成された空ボックスの組方向がおかしい" created
2014-06-12 22:15 Updated by: h7k
Comentário

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

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

2014-06-16 18:10 Updated by: h7k
Comentário

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 Updated by: h7k
  • Estado Update from Aberto to Fechado
  • Ticket Close date is changed to 2014-06-19 09:22
Comentário

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

Attachment File List

No attachments

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login