使用 tex.get luatex 函数(Linux 上出现段错误)?

使用 tex.get luatex 函数(Linux 上出现段错误)?

看着LuaTEX 参考手册 (luatexref-t.pdf), 它说:

4.13.1 内部参数值
对于本节中的所有参数,都可以使用它们的名称作为 tex 表中的索引直接访问它们,或者使用函数 tex.get() 和 tex.set() 之一。
...
4.13.1.1 整数参数
整数参数接受并返回 Lua 数字。
读写:
tex.adjdemerits tex.interlinepenalty
...

好的,我想尝试一下tex.get- 我正在搜索我的 texlive 安装以寻找其使用示例,但没有找到。因此,我尝试使用我自己能想到的任何方法进行小测试,但它在我的计算机上出现段错误(使用更新到冻结版本的 Texlive 2011,Ubuntu 10.04);这是使用以下方法编译的 MWE lualatex test.tex

\documentclass[12pt]{article}

\begin{document}

% this prints tex.get: nil / 1073741823
\directlua{print(""); print("tex.get: " .. tostring(tex.get(boxmaxdepth)) .. " / " .. tex.boxmaxdepth)}

% this segfaults:
% \directlua{print(""); print("tex.get: " .. tostring(tex.get("boxmaxdepth")) ) }

% this segfaults:
% \directlua{print(""); local tgp="boxmaxdepth"; print("tex.get: " .. tostring(tex.get(tgp)) )} % segfault

\end{document}

奇怪的是 -tex.boxmaxdepth确实返回了一些东西,并且按照手册,也应该如此tex.get("boxmaxdepth");但是任何时候我尝试将其分配"boxmaxdepth"为字符串(直接分配或通过变量分配),我都会收到段错误 - 唯一不会收到段错误的方式是如果我传递时boxmaxdepth不带引号;这意味着它被解释为lua一个变量,而此时变量尚未设置,因此nil(_NB:我第一次看到只有空变量才会收到段错误的情况?!:)_)

无论如何 - 我希望这是我不理解tex.get语法的问题,而不是一个错误;所以希望有人能帮我澄清一下:)

答案1

相关内容