我试图测试派特克斯LuaTeX 上的宏(必需),但base.ptxlua
宏文件抱怨找不到神秘的“nodeinspector”模块,需要设置一些法语间距。在标准 LuaTeX 库中找不到它,所以我不知道我遗漏了什么。
显然,这个模块缺失了。因此,我的问题(通过注释掉下面的代码很容易解决)是,这个模块似乎应用了一些字距调整,以实现更好的法语间距,如下所示。
require("nodeinspector")
new_inspection = nodeinspector.new_inspection
local french_highmarks = {
string.byte("?"),
string.byte("!"),
string.byte(":"),
string.byte(";"),
}
local french_marks = {
string.byte("?"),
string.byte("!"),
string.byte(":"),
string.byte(";"),
string.byte(","),
string.byte("."),
string.byte("("),
string.byte("["),
string.byte("{"),
}
local function french_punctuation (head, ...)
for _, glue in ipairs(arg) do
if glue.id == 10 then
head = node.remove(head, glue)
node.free(glue)
end
end
local kern = node.new(11, 1)
kern.kern = tex.sp(".15em")
node.insert_after(head, arg[1], kern)
end
pitex.callback.french_punctuation = new_inspection(
french_punctuation,
{{id = 37, _char = french_marks}, {true, id = 37, char = french_highmarks}},
{{id = 10, subtype = 0}, {id = 11, subtype = 0}})
pitex.callback.register("kerning", "french_punctuation")
pitex.callback.original_kerning = node.kerning
pitex.callback.register("kerning", "original_kerning")
我猜想这个“模块”有些多余,也许可以new_inspection
基于标准 LuaTeX 代码重新实现该函数。如能提供任何来源参考,我将不胜感激。