plain LuaTeX r4744 + lualibs 2014/1/1 でエラー

plain LuaTeX r4744 + lualibs 2014/1/1 でエラー

- 北川 弘典 の投稿
返信数: 3
LuaTeX r4744 と 最新の lualibs (2014/1/1) を使い,
====
%#!luatex
\directlua {require 'lualibs'}
\end
====
というソースを plain LuaTeX で処理させると
====
! LuaTeX error ...exmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua:2891:
bad argument #2 to 'insert' (position out of bounds)
stack traceback:
[C]: in function 'insert'
...exmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua:2891: in main chunk

[C]: in function 'dofile'
/opt/texlive/2013/texmf-dist/tex/luatex/lualibs/lualibs.lua:94: in function 'lo
admodule'
.../2013/texmf-dist/tex/luatex/lualibs/lualibs-extended.lua:117: in main chunk
[C]: in function 'dofile'
/opt/texlive/2013/texmf-dist/tex/luatex/lualibs/lualibs.lua:94: in function 'lo
admodule'
/opt/texlive/2013/texmf-dist/tex/luatex/lualibs/lualibs.lua:112: in main chunk
[C]: in function 'require'
[string "\directlua "]:1: in main chunk.
l.2 \directlua {require 'lualibs'}
                               
?
====
というエラーが発生します.

====
\documentclass{article}
\directlua{require 'lualibs'}
\begin{document}
\end{document}
====
のように LaTeX にするとエラーなく処理されるのが不思議です.
北川 弘典 への返信

Re: plain LuaTeX r4744 + lualibs 2014/1/1 でエラー

- Akira Kakuto の投稿
> ! LuaTeX error ...exmf-dist/tex/luatex/lualibs/lualibs-extended-merged.lua:2891:
> bad argument #2 to 'insert' (position out of bounds)

ずっと以前,北川さんにメールしたことがありますが,
ここでエラーが出るので,私はよくわからないけれども

--ak
-- insert(arg,0,"--script")
-- insert(arg,0,"mtxrun")
--
insert(arg,1,"--script")
insert(arg,1,"mtxrun")

と変更して使用しています。
Akira Kakuto への返信

Re: plain LuaTeX r4744 + lualibs 2014/1/1 でエラー

- 北川 弘典 の投稿
> ずっと以前,北川さんにメールしたことがありますが,
> insert(arg,1,"--script")
> insert(arg,1,"mtxrun")
そうでした.忘れてしまい申し訳ありません.

plain で問題の
====
  if originalzero~="mtxrun" and originalzero~="mtxrun.lua" then
    (問題の insert を含むブロック)
  end
====
が実行されるのは不自然な気がしています.
なぜなら,insert(arg, 0, ...) がうまく動いたとしても
  arg = { [0]='luatex', [1]='a'  }
が,
  arg = { [0]='mtxrun', [1]='--script', [2]='luatex', [3]='a'  }
と変換されてしまいますが,mtxrun は ConTeXt のツールだからです.

また,LaTeX だと,そもそもこの if ブロックには到達しないようです.

なので,この if ブロックごとコメントアウトするのが
良いと思いますが,どうでしょうか?
北川 弘典 への返信

Re: plain LuaTeX r4744 + lualibs 2014/1/1 でエラー

- Akira Kakuto の投稿
> この if ブロックごとコメントアウトするのが
> 良いと思いますが,どうでしょうか?

賛成です。
これはおそらく arg[0] が "context" の場合,
arg[0] = "mtxrun"
arg[1] = "--script"
arg[2] = "context"
と変更するためのもので,通常の luatex や lualatex
の場合は無間系で,コメントアウトするべきもののように思います。