看着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
语法的问题,而不是一个错误;所以希望有人能帮我澄清一下:)