pgfplotsソースをluajitlatexで処理するとエラー出る

pgfplotsソースをluajitlatexで処理するとエラー出る

- 浮亭 夢介 の投稿
返信数: 3
\documentclass{ltjsarticle}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[domain=0:360,samples=101] ({sin(x)},{cos(3*x)});
\end{axis}
\end{tikzpicture}
\end{document}

上のソースにおいて,
lualatex foo では正しく処理されますが,
JITコンパイラで luajitlatex foo とすると,次のエラーが出ます.宜しくお願いします.

------------------------
! Package pgfkeys Error: I do not know the key '/pgfplots/lua support', to which
you passed 'false', and I am going to ignore it. Perhaps you misspelled it.

See the pgfkeys package documentation for explanation.
Type H for immediate help.
...

l.116 ...lots.pgfplotsversion = "\pgfplotsversion";}
------------------------
浮亭 夢介 への返信

Re: pgfplotsソースをluajitlatexで処理するとエラー出る

- 北川 弘典 の投稿
LuaJITTeX で処理させると,該当エラーの前に,

pgfplots: setting 'lua support=false': the lua version on this system
is Lua 5.1; expected at least 'Lua 5.2'. Use a more recent TeX
distribution to benefit from LUA in pgfplots.

というメッセージが出ており,これがエラーの原因です.
LuaTeX の内蔵の Lua は Lua 5.2 ですが,
LuaJITTeX 側では LuaJIT 2.0.4 で,これは Lua 5.1 相当
(実際には Lua 5.2 のいくつかの機能もバックポートされている模様)
なのでこのようなメッセージが出ているわけです.

なお,tex/generic/pgfplots/lua/pgfplots.lua を見てみると

        -- well, 5.2 is what this stuff has been written for.
        -- Is there a good reason why it shouldn't work on 5.1 !? No, I guess not. Except that it took me a lon
g time
        -- to figure out that 5.2 broke compatibility in lots of ways - and it was difficult enough to get it u
p and running.
        -- If someone wants (and needs) to run it in 5.1 - I would accept patches.

というコメントがあります.


北川 弘典 への返信

Re: pgfplotsソースをluajitlatexで処理するとエラー出る

- 北川 弘典 の投稿
追記です.

\def\pgfplotsenablelua{0}
\usepackage{pgfplots}

とすると,Lua の使用を強制的にオフにした状態で,
LuaJITTeX でも pgfplots を使うことができています.

----
pgfplotscore.code.tex には,次のように書かれています.

% this is an emergency key which allows to switch off LUA support in
% pgfplots early at boot time.
%
% use \def\pgfplotsenablelua{0} to switch it off. '1' switches it on
% (or uncommenting the line).
\pgfutil@IfUndefined{pgfplotsenablelua}{}{%
        \ifpgfplots@LUA@supported
                \def\pgfplots@glob@TMPc{1}%
                \ifx\pgfplots@glob@TMPc\pgfplotsenablelua
                        \message{Pgfplots: found emergency control flag \string\pgfplotsenablelua=1. Keeping LU
A active.^^J}%
                \else
                        \message{Pgfplots: found emergency control flag \string\pgfplotsenablelua!=1. Disabling
LUA support.^^J}%
                        \pgfplots@LUA@supportedfalse
                \fi
        \fi
}%

とあるので,