luajbook.cls でエラーが出ました.

luajbook.cls でエラーが出ました.

- 浮亭 夢介 の投稿
返信数: 5
次を luajitlatex foo でコンパイル
---------------------
\documentclass{ltjbook} or {ltjreport}
\begin{document}
\chapter{Sample}
TEST test
\end{document}
---------------------

error: ...ex/share/texmf-dist/tex/luatex/luatex-ja/ltj-jfmglue.lua:400: attempt
to call a nil value.
\par

l.3 \chapter{Sample}

よろしく,お願いします.
浮亭 夢介 への返信

Re: luajbook.cls でエラーが出ました.

- 北川 弘典 の投稿
報告ありがとうございます.
linux 上の
> This is LuaTeX, Version beta-0.78.2 (TeX Live 2014/dev) (rev 4770)
> This is LuajitTeX, Version beta-0.78.2 (TeX Live 2014/dev) (rev 78)
及び,W32TeX 上の
> This is LuaTeX, Version beta-0.78.2 (TeX Live 2013/W32TeX) (rev 4771)
> This is LuajitTeX, Version beta-0.78.2 (TeX Live 2013/W32TeX) (rev 78)
で再現しました.

少なくとも linux 上では,
> This is LuajitTeX, Version beta-0.78.1-2014010410 (rev 54)
> This is LuaTeX, Version beta-0.78.1 (TeX Live 2014/dev) (rev 4732)
では安全でした.

エラー自体は ltj-jfmglue.lua で起こっていますが,
その原因を作っているのは,ノードが
A. glyph 第 ……これが p
B. glue (xkanjiskip)
C. glyph 1
D. glue (xkanjiskip)
E. glyph 章
F. glue
と並んでいるとき,「第」「章」を必要なら \hbox にカプセル化する ltj-setwidth.lua です.

ltj-setwidth.lua l. 77 の
> head, q = node.remove(head, p)
の実行後に
head と q は共に ノード B. glue (xkanjiskip) となるはずですが,
なぜかこのノードが attribute node に変化してしまっています.
(メモリ上では同じノードを指していますが)
北川 弘典 への返信

Re: luajbook.cls でエラーが出ました.

- 北川 弘典 の投稿
調べたところ,r4760
> fix remove fo the case head==current
以降(手元には r4770 まであります)でエラーが発生します.

さっきの返信で
> なぜかこのノードが attribute node に変化してしまっています.
> (メモリ上では同じノードを指していますが)
と書きましたが,
> local box = node_new(id_hlist)
の実行後に id が置き換わっているようです.

r4760 の中身に
+ if (alink(current) && vlink(current) ){
+ vlink( alink(current) ) = vlink(current); // vlink(prev) = next
+ alink( vlink(current) ) = alink(current); // alink(next) = prev
+ }
というのがあります.
pre_linebreak_filter, hpack_filter に渡されるノードリストの始点
head の直前には nested_node なる謎のノードがあるので
(これもまたいつのまにか id が attribute_list に変わっている),
上に載せた部分が怪しそうな気がしますが,よくわかりません.
北川 弘典 への返信

Re: luajbook.cls でエラーが出ました.

- Akira Kakuto の投稿
lnodelib.c の
static int lua_nodelib_remove(lua_State * L)
static int lua_nodelib_direct_remove(lua_State * L)

r4760 より前のものに戻すと,W32TeX でも問題
ありません。
浮亭 夢介 への返信

Re: luajbook.cls でエラーが出ました.

- 北川 弘典 の投稿
遅くなってすみません.
バージョン 20140204.0 では直っていると思います.
(今 CTAN にアップロードしました)