Ticket #33986

\leaders でエラー

Open Date: 2014-07-01 11:42 Last Update: 2014-07-26 21:46

Reporter:
Owner:
(None)
Type:
Status:
Closed
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

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 を復元」 させていることによるものだと思われます.

Ticket History (3/4 Histories)

2014-07-01 11:42 Updated by: h7k
  • New Ticket "\leaders でエラー" created
2014-07-02 11:01 Updated by: h7k
Comment

e4e10334 での実装は,#33971 中に書いた

* 但し,\aftergroup を使ってボックス,\vadjust, \insert を抜けたら「外側のリスト」での状況を \global\let して戻す

という方針を採用しました.同チケットでも議論しているように, \ifydir 等は if-token でないと問題が起きるのでこのようにしていたのですが……. Lua 側のみから(tex.print を使わずに)let することができればいいなあ.

TeX 側から組方向を見えないというのはまずいので,\ltjgetparameter から「現在の組方向」 「一番内側の垂直リストの組方向(\vadjust 用)」を数値として取得できるようにしておきます. こんな感覚です:

(\ifnum\ltjgetparameter{direction}=3)  == (\iftdir)

2014-07-04 16:34 Updated by: h7k
Comment

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 を返すようにしています.

2014-07-26 21:46 Updated by: h7k
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2014-07-26 21:46
Comment

完了としておきます.

Attachment File List

No attachments

Edit

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