![LuaLaTeX \directlua 代码中的语法错误](https://linux22.com/image/426145/LuaLaTeX%20%5Cdirectlua%20%E4%BB%A3%E7%A0%81%E4%B8%AD%E7%9A%84%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF.png)
我有下面的文档,我尝试用 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\directlua
和luacode
环境中,通常将变量定义为本地变量,您可以在 Henri 对您的其他问题的回答中看到,以避免冲突和意外的重新定义。:)