Lua 错误的起源

Lua 错误的起源

如果lualatex编译中断并出现以下终端输出:

(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
ode.tex))[\directlua]:1: attempt to call a nil value (field 'get_functions_tabl
e').
l.1738   }

这是否意味着失败\directlua/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex

问题是,该文件确实不是包含一个directlua。OTOH只有在我让 lualatex 读取并解析我个人文档基础架构中的附加 Lua 文件后,错误才开始出现 - 但我也没有看到该附加文件中有任何可疑的相关内容。

答案1

你没有提供例子,但给出了一个猜测的例子

\documentclass{article}

\usepackage{tikz}

\begin{document}

\end{document}

终端输出的相关部分是

(/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
(/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
ode.tex))

倒数第二行)显示pgfkeysfiltered.code.tex已读至末尾,因此最后)显示的显示pgfkeys.code.tex已读至末尾,因此此时错误消息中的任何行号均指打开文件堆栈顶部的文件,即pgfsys.code.tex,其中第 1738 行是此调用}的结束行\directlua

  \directlua{
  local lft = lua.get_functions_table()
  lft[\string#lft+1] = function()
      local lhs = token.scan_string()
      local rhs = token.scan_string()
      if lhs < rhs then
          tex.sprint(-2, "-1")
      elseif lhs == rhs then
          tex.sprint(-2, "0")
      else
          tex.sprint(-2, "1")
      end
  end
  token.set_lua("pgfsys@strcmp", \string#lft, "global")
  }

相关内容