LuaLaTeX \directlua 代码中的语法错误

LuaLaTeX \directlua 代码中的语法错误

我有下面的文档,我尝试用 LuaLaTex(使用 MiKTeX 包)进行编译。

\documentclass{article}

\usepackage{pgfplots}

\pgfplotsset{compat=newest}

\begin{document}
\expandafter\pgfplotstableread\directlua {
    global json = utilities.json.load("test.json")
    tex.sprint("{\string\r")
    tex.sprint("x y\string\r")
    for n, row in ipairs(json.data) do
        tex.sprint(row[1] .. " " .. row[2] .. "\string\r")
    end
    tex.sprint("}")
}\loadedtable

\begin{tikzpicture}
  \begin{axis}
    \addplot table {\loadedtable};
  \end{axis}
\end{tikzpicture}
\end{document}

但是由于 Lua 部分的语法错误,出现了编译错误:

[\directlua]:1: syntax error near 'json'.
l.17 }
  \loadedtable

我是 LaTeX 的新手,不幸的是我对 Lua 也一无所知,但从我所研究的内容来看,我无法找出哪里存在语法错误。

相应文件test.json位于与 .tex 脚本相同的文件夹中,格式如下:

{
    "name":"list_of_xy_values",
    "data":[[1,2],[2,4],[3,6],[4,3],[5,0]]
}

这个问题指的是另一个问题

答案1

Lua 中的变量默认是全局的,因此只需local明确说明即可。请参阅Lua 非官方常见问题解答的简要说明Lua 5.3 参考手册了解更多信息。在 LuaTeX\directlualuacode环境中,通常将变量定义为本地变量,您可以在 Henri 对您的其他问题的回答中看到,以避免冲突和意外的重新定义。:)

相关内容